Making the game actually work on a MAX Machine


Back in September 2022, I converted Wave Hero to an 8KB cartridge image in the so-called Ultimax format, and wrote a devlog about it. The game worked as expected in the VICE emulator, using various model settings (MAX Machine, C64 NTSC and C64 PAL.)

Then, about a month ago, I read a comment to my devlog from kopsec. The game would not work on an actual MAX Machine, while a game I converted to the MAX one month later (Old Mine Hoist) worked just fine.

I made some adjusted versions of Wave Hero, which kopsec then tested on the MAX. Some of the adjustments were:

  • Adding code to set different border colors during the start-up sequence, to try to determine whether the game just «froze» at a certain point
  • Changing the order of some of the initialization code
  • Removing a PAL/NTSC check

Unfortunately, none of the above made the game work, nor help in understanding what the problem might be.

I already knew that bit 5 in VIC register $D016, if set, will supposedly stop the VIC chip on a MAX Machine, while it will have no effect on any of the C64 models. But I had already verified that the game's code did not touch this bit.

Or so I thought. It turns out that due to some raster interrupts firing while the game's title screen is being set up, a variable which had not been initialized yet could actually cause bit 5 in register $D016 to be set, resulting in no video output from the VIC chip on a MAX.

The fix was therefore to ensure that the variable in question is initialized very early in the start-up sequence. The file WaveHero_Ultimax_v1.4.crt is the fixed version of the game.

A huge thanks to kopsec for all help with testing the various adjusted versions on an actual MAX Machine!

Some more information about the «mysterious» bit 5 is available here:

Files

WaveHero_Ultimax_v1.4.crt 8 kB
15 days ago

Get Wave Hero

Leave a comment

Log in with itch.io to leave a comment.