After completing and releasing Santron, (a Christmas version of Neutron, my 16K C64 SHMUP), I’m back to coding Soul Force. If you haven’t seen Santron yet, the link is here.
As for Soul Force, I feel I’m nearing the end, but there’s still a few bosses to create/code, plus I still have to make the game work on both PAL and NTSC. I’ve been coding the game for NTSC due to frame rate issues. NTSC runs faster than PAL, 60fps vs 50fps. But running faster also means there’s less time per frame to do CPU work, especially in the precious V-blank period (the time between when the video beam finishes drawing one frame and starts drawing the next). So I decided since I wanted the game to support both, it was better to code for the one with the least amount of available CPU time (NTSC), thus ensuring the PAL version would run fine.
Differences in frame rate does cause a lot of issues, one being scroll speed. The NTSC version scrolls faster, meaning the stages would normally be shorter. To compensate for this, my backgrounds are made of map sections that are 12 blocks high, but for NTSC the sections are 12 blocks wide, and for PAL they are 10 blocks wide. This means that although NTSC scrolls faster, it has more background to scroll over, thus meaning that both versions take the same amount of time (e.g. 20*12/60 vs 20*10/50).
So this means that I now have 2 sets of map data, one for NTSC and one for PAL… Since each stage is loaded as a separate file and there was insufficient space to load both sets and switch them, it was time for a data rearrange.
The method I’ve opted for is to split each stage into 3 files: one is a shared data file containing most of the stage’s data, including music, sprites, character sets, attack wave data… The other two are the NTSC and PAL version files containing the map section data plus all the bespoke code needed per stage. This way each version file can have tailored code, thus removing the need to add checks for PAL/NTSC, saving both space and CPU time. It will consume a bit more disk space, but I have the space to spare, so no worries there.
I also have a load of music to compose as each stage has bespoke music for the stage and end boss, but that’s a fun task, made much easier with SJTracker, my music/sfx editor.
So with no more coding distractions, I can get Soul Force finished early 2020 if all goes to plan. Well, wish me luck!