6 ms·
Here is a video where Martin Piper uses a C64 debug tools to figure out how Nine was created: https://m.youtube.com/watch?v=Ik1vsMM2EuY https://m.youtube.com/wa
by nonane 2y ago
Here is a video where Martin Piper uses a C64 debug tools to figure out how Nine was created: https://m.youtube.com/watch?v=Ik1vsMM2EuY https://m.youtube.com/watch?v=Ik1vsMM2EuY .
- iamevn 2y agoThis is probably a really basic question but why does the wizard need to stop being drawn with characters when the sprites move out past the left/right borders? Is this a hardware restriction where those lines aren't able to have text on them when there are sprites on the edges?
- FLT8 2y agoI think it's probably about the timing. I'm not an expert, but I believe that opening the side borders requires cycle exact timing at both edges of the screen, and when you have characters enabled on the screen, the VIC-II graphics chip ends up 'stealing' memory cycles from the CPU every 8 scanlines to fetch character and font data from RAM. These lines are known as 'badlines'. Across an entire scanline I think you normally get something like 63 6510 cpu cycles to do 'work' in, but only 23 if you hit a badline - keeping in mind that some instructions take multiple cycles to execute. This probably makes the timing difficult or impossible to manage with the characters turned on.
- phire 2y agoIt's not just that the 'badlines' steal 40 cycles. They steal a solid block of 40 cycles that cover most of the screen, from end of hblank until just before the right border starts. This blog post [1] has a nice interactive demo showing badline timings. During a badline it's simply impossible write to the VIC-II's registers during the left border. Though, this seems to indicate it's still possible to open the right border during a bad line, but it's a 1 cycle window (maybe 2). [1] https://nurpax.github.io/posts/2018-06-19-bintris-on-c64-part-5.html https://nurpax.github.io/posts/2018-06-19-bintris-on-c64-par...