Side Border Bitmap Scroller on the C64
c64demo.com
c64demo.com
I guess there are not that many that truly understands the effort and commitment needed to get a seemingly trivial thing by today’s standards such as this. Well, I do at least :)
A truly awesome achievement. Very well done, Raistlin and Sparta!
I know that systems like the C64 had limited memory and graphics capabilities, but still I'd like to ask the question about this:
What's the reason for having a large screen border? If it doesn't have enough memory to display text/graphics on the entire screen, why not instead make the text/center part bigger with larger pixels so more of the glass tube surface area of the monitor is used for something useful?
Basically, you couldn’t trust two televisions to show a picture at the same size, or even a single television to show an image at constant size if it heated up.
Computer users would object if their screen chopped of some letters at the edge of their screens, so they had to accept the reverse: wasted space around the screen’s contents.
The 6510 processor can accesses memory only on every other clock cycle. So half of all clock cycles can be used by the VIC to get display data out of memory, without fearing contention with the CPU. But this means that pixels must be output at the rhythm of the processor's clock. If you wanted to make the pixels 10% wider, you'd have to slow down the clock driving the VIC, but then it wouldn't be able to interleave memory access with the processor anymore.
Not entirely sure this is the true reason since my knowledge is patchy, but it's my guess.
And of course you can’t just zoom in a little because a character is 8x8 pixels and the video signal has a fixed number of lines on the screen so 25 characters of 8 lines tall is just a fixed part of the screen (which is 312 lines tall on PAL).
In hindsight it is a bit silly that there is no easy way to display sprites over the borders though, to do that you have to wait until the video chip is displaying the last character and then configure the screen a bit less wide/tall so it oversteps the end and never stops outputting.
Do not forget that the physical pixels sit on real rasterbars on a cathodic ray tube machine.
If you made the centered content bigger, first of all the effect would simply be ugly - stretched;
if you expanded the content per bar (over the 40ch, 320px) but keep the same ratio, you'd have less warranties that the set would make it visible;
similarly for using more rasterbars than 200 (taking into account that compatibility with NTSC basically imposes a limit at 240): will every set display all the lines or will you cause frustrated users?
(And of course, given the shape of the screen, if you filled it up with a rectangular matrix you would surely lose displaying the content at the corners.)
As others said in a different way: there was a safe area.
I recently got a cheap as chips 1541, now I just need to get ahold of my C64-C that stuck in my mother's garage about 1500 miles away!
I know my way around Amiga demo programming, but would love to have a go at C64 too.
CBMPrgStudio is a solid free windows app. I like cross-platform WinVICE for it's great monitor.
Once you get to be an expert, people seem to use C++ to synthesize their own 6502 routines.
Nowadays I just operate https://c64g.com/
I don't think I could even remotely write one of the cracktros I used to. I seem to remember it all had something to do with interrupt timing. You had to fill with NOPs in order to get the timing right.