It feels like a long time since my last code post (and I’d say it has been). After being incredibly motivated last year after attending my first Syntax demo party, I got stuck into creating a few simple effects. Other interesting projects came up and my C64 demo coding took a back seat. Five weeks ago I got the email reminder about Syntax and decided there would be enough time to get something together. That did happen and I achieved my goal of entering a production into the Syntax#14 old skool demo category.
The last 5 weeks have been incredibly motivating, so while the energy is strong, I’m going to get back into posting up some details on things I learn once again. I’ve put a few things into the Syntro demo I’d like to cover in separate posts over the coming week or so.
To start with though, an effect (if you could call it that) which I’ve been interested in learning about for awhile is removing the top and bottom borders on the C64 display.
After much scrambling over the last few weeks, I managed to get an entry submitted into the Syntax old skool category. A nice little intro for the C64 – Syntro (Syntax-Intro – my creativity was overflowing 😉 ).
The source code can be downloaded via this link: Download
A .d64 image of the demo can be downloaded here: Download
The source code could be cleaned up. If I get motivated, i’ll get around to that. For now though, it’s time to start looking at the number of effects I’d love to learn and begin working towards a new intro for SYNTAX#15
Having done some work with interrupts now, I’ve realised just how powerful they can be for demo coding and how time sensitive some effects / routines are. I’ve looked at a few different ways to set them up and thought I’d recap.
Interrupts occur every 60th of a second. On the C64, memory locations $0314 and $0315 (788 & 789 in decimal) contain a vector to the execution address of the normal interrupt service routine. The default values here are $31 (49) and $ea (234), which form $ea31.
The text scroller. The single most used demo effect of all time. An effect that always fascinated me on the C64 back in the day, but (like with the colour cycle effect) something I could never get my head around all those years ago. I have often thought to revisit coding on the C64 JUST to successfully produce this, but never got around to it. Now is the time.
The time spent diving back into assembly language over the last two weeks has been quite fruitful. The lessons learned and knowledge gained will come in handy here. The goal is to create a simple, 1×1 character scroller. Once I can do that, it shouldn’t be too difficult to expand it further in the future to jazz it up.
Time to start getting familiar with using the zero page and use an interrupt for some simple effects. I decided to create a basic colour cycle effect that updates the colour map, shifting the character colours in a direction. Back in the day, I couldn’t get my head around how to actually achieve this via assembly language, but I’ve had a lot of experience in programming since then, so have a much better idea of how to achieve the effect.