There's nothing like programming for older hardware that makes you appreciate the people that developed for them originally. I have run into a snag in my game as it seems that the C64 doesn't like you to split the screen between a vertical scrolling section and a static one.
The way the video controller works is that every 8th line, it will grab character and color information for rendering the next row of characters. These lines are called "bad lines" as it needs to lock the bus during this period and stops the cpu for a few cycles. When you use the smooth vertical scroll feature, you move these bad lines down the screen 1 to 8 pixels. This is not a problem when you are scrolling the entire screen, but when you split the screen with a static portion (needed for score, lives, etc...) then it creates problems.
There is a known bug in the VIC-II chip in which if the screen is scrolled after a bad line in such a way that the next one is delayed past 8 lines, then the VIC-II chip runs out of things to draw and the internal counters never update. When it finally reaches the next bad line, the VIC-II starts drawing again from where it thinks it left off. This effectively pushes the screen down a few pixels from where it should be.
To fix, you need to control the timing perfectly, making sure there is never more than 8 lines from one bad line to the next. You also need to make sure that the distance isn't too close as that could leave you with too little time for the processor to actually make the changes on the screen that are necessary. This is rather difficult as you scroll the screen down, the gap gets wider from the text above. and narrower to the text below.
The fun thing about this, as was always quite common for those early developers, is that someone has figured out a way to turn this bug into a feature. By carefully controlling when the next "bad line" is reached, you can push the entire screen down by any arbitrary number of lines, whether it be text or hi-res graphics. The only caveat is that you can't draw anything above the scrolled portion, but you can get nice effects such as a "bouncing" logo and such. This has been called "Flexible Line Distance" or FLD.
Here is a nice description of what it is and how it works.
As for my game, I have thought about just ditching the hardware route all together and program my game in BlitzMax or AGK. But now I have been challenged and fixing it has become a game in itself to me. So I might not get my entry in on time. There are still other challenges I have not yet faced.