The known differences between the v0 and v1 ROMs are:

  1. Sometimes when pausing v0, the PSG is not correctly silenced: a constant tone continues playing. While v0 does immediately mute the PSG on pausing the game (by writing 0x9f, 0xbf, 0xdf, 0xff to port 0x7f), for some reason this does not always work. v1 has a workaround for this bug: it moves the muting code into the IRQ handler, writing the bytes on every interrupt (once per frame?) while the game is paused.
  2. v0 allows the game to be played with either controller, whereas v1 only allows controller 1 to be used. However, v1 still contains pieces of the controller 2 code, including at least one completely redundant sequence of instructions: rl c; rl c; rr c; rr c, starting at address 0x27ee.
  3. v1 places many variables 68 bytes later in RAM than v0, in order to increase the space available for the stack (0xc000-0xc084 in v0, 0xc000-0xc0c8 in v1).

It is unknown whether there are any other differences between the ROMs.

Researched by Paul Baker

Return to top