Log inRegister an accountBrowse CSDbHelp & documentationFacts & StatisticsThe forumsAvailable RSS-feeds on CSDbSupport CSDb Commodore 64 Scene Database
  You are not logged in 
No More Grey Dots   [2019]

No More Grey Dots Released by :
Triad [web]

Release Date :
24 November 2019

Type :
C64 4K Intro

Website :
https://youtu.be/1hXQzE-78OA

Released At :
Intro Creation Competition 2019

User rating:*********_  9.3/10 (19 votes)   See votestatistics
**********  9.5/10 (6 votes) - Public votes only.

Credits :
Code .... Powerslave of Triad
Music .... TDM of Triad

Download :
http://csdb.dk/getinternalfile.php/191299/3AD_No_more_grey_dots_4k.prg (downloads: 325)

Look for downloads on external sites:
 Pokefinder.org


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
Fresh!
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 ZeSmasher 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
Dealer quality intro!!
User Comment
Submitted by Golara on 24 November 2019
perhaps the best d021 scroller i saw :)
User Comment
Submitted by ZeSmasher 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
Advanced
Navigate
Prev - Random - Next
Detailed Info
· Summaries
· User Comments (18)
· Production Notes
Fun Stuff
· Goofs
· Hidden Parts
· Trivia
Forum
· Discuss this release
Info on other sites
· demozoo.org
· Pouët
· YouTube
· YouTube
Sponsored links
Support CSDb
Help keep CSDb running:



Funding status:




About this site:
CSDb (Commodore 64 Scene Database) is a website which goal is to gather as much information and material about the scene around the commodore 64 computer - the worlds most popular home computer throughout time. Here you can find almost anything which was ever made for the commodore 64, and more is being added every day. As this website is scene related, you can mostly find demos, music and graphics made by the people who made the scene (the sceners), but you can also find a lot of the old classic games here. Try out the search box in the top right corner, or check out the CSDb main page for the latest additions.
Home - Disclaimer
Copyright © No Name 2001-2019
Page generated in: 0.081 sec.