

#GOATTRACKER DUAL SID CODE#
The sky blue area that most of them slice through represents the character and colour RAM scroll code for the foreground foliage

Raster lines apart, since 21 pixels is the height of an unexpanded (in y-direction) sprite. The thin raster bars represent NMI instances firing at fixed screen positions to plex the large tree sprites, regardless of what's going on with the IRST and are, as you might expect, 21 Specifically the time-consuming char and colour RAM scrolling, by nipping in to plex sprites and out again ultra rapidly, without any risk of stalling the IRST or crashing the system.Ĭonsider, then, the interrupt schema below. The practical, real world application of this as used in my games - and now also, as used in The Wild Wood chase levels - is to deploy the NMI to interrupt lengthy IRST tasks, In plainer terms, the NMI is an interrupt that interrupts other interrupts. This is because the NMI takes precedence over any IRST code being executed, meaning that when an NMI is triggered, the CPU suspends running the IRST handler code and insteadĮxecutes the NMI handler code, not resuming the IRST handler code until the NMI handler code finishes executing. That overlaps parallax scrolling landscapes in a very CPU-cycle-efficient fashion that would be very awkward or impossible if we were to rely on the IRST alone to perform all raster-precise on-screen tasks. This "dual threaded" interrupt approach facilitates sprite multiplexing Use a hybrid NMI-IRST interrupt configuration Unrolled loop (or "speedcode" as some like to describe it).Īs stated in previous blog posts, both of my next generation Commodore 64 games in development Non-standard opcodes for additional speed gains where possible and that longstanding staple of fast coding on the C64 we call the Of course, these tricks or hacks or whatever one wishes to call them are built on the foundations of self-modifying code and the use of Sprite feeder + scroller routines, game logic and music.
#GOATTRACKER DUAL SID FULL#
Used to squeeze 8 layers of parallax scrolling (most of which are full colour scrollers) into each screen refresh along with extensive sprite multiplexing, collision detection routines, So, to coincide with the preview video release, this article delves into the technical side of the game to reveal some of the secrets

I felt that, since the core tech for this kind of parallax scrolling game world already existed for my own projects, it would be a relatively straightforward matter to port itĪs things transpired, it was a little more complicated than that it always is with C64 programming!
