Another long-standing problem with the Mega System 1 driver is the lack of character movement in the attract modes of 64th Street and Chimera Beast. A similar problem was fixed in Cybattler a long time ago by handling a mirror address for main RAM, easily noticed due to unmapped reads/writes, but the other two games weren’t making any unmapped reads or writes.
Today I decided to try a little experiment. I knew from the ‘nmk16.cpp’ hardware that sometimes the 68k is hooked up to RAM in a way that means the byte write behavior is a little unusual. The standard way of handling byte writes is to make sure only the byte of the word that is being written to changes, leaving the other half of the word alone. Due to the way the 68k works it’s also possible for that hookup to be slightly different, so that a byte write alters the content of both bytes in the destination word, mirroring the written byte in the other half.
Most games break if you implement things the latter way, they assume they can write bytes without them corrupting the adjacent byte. I quickly changed Megasystem 1 to use that method to see what happened, the result, a working attract mode. I do wonder if this is part of a bigger picture, NMK and Jaleco often worked together, there are Jaleco games in ‘nmk16.cpp’ and NMK developed several of the titles for Jaleco’s Megasystem hardware too, it’s possible some hardware ideas / designs were also being shared.
While only Chimera Beast and 64th Street show obvious improvements from this, and both of those are ‘Megasystem 1 Type C’ hardware, I’ve hooked it up to all hardware types (except D, but that’s very different and did cause the game to crash) I’ve not noticed any real differences this way, most games don’t make many byte writes, some avoid them entirely. St. Dragon makes an unusually high number so it might be worth checking / verifying that nothing has broken there with these changes, it is afterall possible that only one of the board types has this design.
Here are some revised attract mode videos from the games. The 64th Street one also shows the environment damage that was previously missing (Kale fixed it last week) and the Chimera Beast one, to my surprise, shows the Mosaic effect, it’s used ingame when you get grow.