| |
Website :
https://youtu.be/1hXQzE-78OA
Released At :
Intro Creation Competition 2019
Achievements :
C64 4K Intro Competition at Intro Creation Competition 2019 : #5
Credits :
SIDs used in this release :
Download :
Look for downloads on external sites:
Pokefinder.org
User Comment Submitted by Didi on 12 January 2020 User Comment Submitted by Joe on 6 January 2020 User Comment Submitted by Digger on 17 December 2019 User Comment Submitted by psych on 14 December 2019
Damn! Triad delivers!
Sound is strong in this one. | User Comment Submitted by Raz on 27 November 2019
I have had I nice discussion with Powerslave in PM about the code, and Per said he would be fine with me to post a few details about how the raster scroller in Gumbo works in this thread. It is NOT an attempt to hi-jack the discussion to be about my demo, I just hope it will be of interest:
Per wrote:
> Hi, how did you solve the problem to keep track if you should write or clear on the leftmost column? This was the main reason for me to use two different op codes for clear and write. You write that you only used noop so there must have been also a rolled table, or did you find another solution?
Raz, Reply #1:
I actually even do it in loop, with the following code 8xunrolled - and I then have a different part of the code to update the opcodes (STA = set the colour of the line, STY = clear, NOOP = do nothing). My original code for the proof-of-concept was way less than 1 kb =)
I do the NOOP trick to preserve the flags, since I need the results of the early DEX preserved. This is from the bugfixed version - in the original one I used BIT, but I needed to move the first store 2 cycle to the left.
The LDX is the height of the current line.
d020scroll_proto:
//store_start:
ldx #$20 // 2c, 2b - cyc 2 (earliest: 62)
d020loop:
lda coltab2,x // 4c, 3b - cyc 4
sta $d020 // 4c, 3b - cyc 8 (earliest: 5)
dex
sty $d020 // 4c, 3b - cyc 12
sta $d020 // 4c, 3b - cyc 16
sty $d020 // 4c, 3b - cyc 20
sta $d020 // 4c, 3b - cyc 24
sty $d020 // 4c, 3b - cyc 28
sta $d020 // 4c, 3b - cyc 32
sty $d020 // 4c, 3b - cyc 36
sta $d020 // 4c, 3b - cyc 40
sty $d020 // 4c, 3b - cyc 44
sta $d020 // 4c, 3b - cyc 48
sty $d020 // 4c, 3b - cyc 52
sta $d020 // 4c, 3b - cyc 56 (earliest: 53) - 13 STA/STY "pixels" to modify
beq !skip+ // 2c (3c)- cyc 62
lbjmp: jmp d020loop // 3c - cyc 1 -> BYTES: 2 + (14*3) + 1 + 2 + 3 = 50 bytes
Raz, Reply #2: - I forgot to mention how I handle the left-most column:
This is handled by the code that updates the opcodes. It always forces a STA/STY at the first position, and then from there it keeps track of changes.
As I decode the chars (including variable lenghts) I translate the bit-pattern into opcodes: STA (bit=1) and STY (bit=0). In the update-opcode-matix code I always keep track of the previous opcode per line, and if the same opcode is seen again I store $0c instead. Hmm - guess it will be easier if I just clean-up and post the source together with the revised version of Gumbo =)
Cheers
-Raz
@Editors: If you think this should be posted under the Gumbo demo instead, you're very welcome to move it. | User Comment Submitted by Powerslave on 27 November 2019
I did it in a similar way but used two opcodes to be able to easy keep track if the previous "dot" was set or clear. I use STA ($8d) / NOP ($0c) for a "write" and STX ($8e) / BIT ($2c) for a "clear". This was the way I found to make the code as compact as possible. | User Comment Submitted by Raz on 27 November 2019
@JackAsser: I went with the "grey edges" in Gumbo as well - guess this is the optimal solution. (I did it with opcode $0c = noop $d020 instead of store in case the colour in one cell the the same as the previous one - and STA/STY in case I need to change the colour). I look forward to peek into this one and see how it's implemented. | User Comment Submitted by Raz on 27 November 2019
Sweet - good to see, that I'm not the only one liking big raster scrollers =)
That reminds me, that I never got around to post the updated version of the scroller in "Gumbo" - looks like I have a TODO for the weekend.
Cheers
-Raz | User Comment Submitted by Yogibear on 26 November 2019 User Comment Submitted by Dr.Science on 25 November 2019
Nice and smooth scroller! | User Comment Submitted by Golara on 25 November 2019
@JackAsser Just dont use inc/dec :P | User Comment Submitted by JackAsser on 25 November 2019
@Jammer: Indeed they are. Introducing: Grey edges! Is trickier that one might think because you must not set $d020 to the same color twice. | User Comment Submitted by Jammer on 25 November 2019
BTW, aren't fringes of letters grey dots alltogether? ;) | User Comment Submitted by Powerslave on 25 November 2019
Ok, let Didi decide as you write. Code is clearly only one part. The sprite logo is always there even if covered by the $d020 scroll. Just blanking out the screen with the DEN bit when the scroll should be visible and using illegal bitmap mode when the logo should be visible. There is nothing written that the scroll and logo must be visible at the same time... :) But it’s not up to me to decide. | User Comment Submitted by Smasher on 25 November 2019
after watching the intro again I think it's absolutely fantastic but... IMHO not compliant to ICC2019 rules: it's clearly 2 parts, one with only a logo and no scrolltxt and one with scrolltxt and no logo. well, let Didi decide... sorry TRIAD and authors, don't hate me :) | User Comment Submitted by Raistlin on 24 November 2019
Wow! This is very, very cool. Love it! | User Comment Submitted by Ksubi on 24 November 2019
Nice work! Love the tune also. | User Comment Submitted by TheRyk on 24 November 2019
no way this is 4k!
way cool stuff guys | User Comment Submitted by Mibri on 24 November 2019 User Comment Submitted by Golara on 24 November 2019
perhaps the best d021 scroller i saw :) | User Comment Submitted by Smasher on 24 November 2019
lovely one, especially if you watch it in vice with debug borders :) | User Comment Submitted by Jammer on 24 November 2019
I found one! JK, it's amazing! <3 |
|
|
|
| Search CSDb |
| Navigate | |
|
| Detailed Info | |
|
| Fun Stuff | |
· Goofs (1)
· Hidden Parts · Trivia
|
|
| Forum | |
|
| Info on other sites | |
|
| Support CSDb | |
|
| |
|