I made a thread where I posted a bunch of Game Genie codes to activate free play on Nintendo Vs games so that you can play them on a real NES without worrying about inserting coins. Just one problem: each game used a PPU that had the colours intentionally mixed up for copy protection purposes, so the game looks all messed up. Sure, you can still play the games, but it's not much fun...
So I decided I needed to do some proper hacking: nobody's actually gonna plug an arcade board into their NES, so why not make a proper patch instead of changing one byte? I've started with Dr Mario - no reason - and got some interesting results.
Let me explain how I did it, first of all.
First, I used the information on the nesdev wiki that details the palette that Dr Mario uses (on the RP2C04-0003 chip). I put that information in a table file, and made another table file which corresponded to the correct order of colours. The palettes are stored in the game in a block (or in the case of Dr Mario, two blocks which are subtly different from one another). Once I found the block, I dumped each part with Thingy32 - yes, that ancient thing, but it was the best thing for the job in this case. I then looked at the dump, and manually typed in each colour, but with the correct table file. The result? All the colours now have their correct values. I'd love to automate the process, but Thingy32 just inserted a bunch of nothing when I tried, and I don't know of another program that would do it.
When I did this, however, two really weird things happened. Normally, you have to flip the dipswitches to activate free play mode, but after modifying the palettes, free play was automatically activated. I have no idea why... but it needs testing on a real NES, to see if it's not just FCEUX acting weird.
Second thing is one of the colours in the game. It appears that the game has a routine that changes the background colour depending on the level you're on, separate from the palette blocks. When I corrected the rest of the palette, it looked identical to the original game, but if you play the unmodified Vs ROM in FCEUX, the background is grey. Why? Because the colour used ($03) is grey on the RP2C04-0003 chip, but purple on a real NES. But the value is the same in both the original game and the Vs version. Is this a bug? I don't know. Another reason to test it on a real NES - and see a real arcade cabinet, too. I found one video on YouTube of it, but the quality meant it was inconclusive (it's like that dress all over again... ).
I finished off the hack by making the input just like the original: now you start the game by pressing Start, whereas on the Vs version you press Select on the title screen and A or B on the menu.
Admittedly, this isn't the best example of a Vs game worth playing on your real NES, as I imagine it's practically identical. Nevertheless, it's a first step, and if anyone has a flash cart and could try it on the real thing I would be VERY keen to hear feedback (I don't have a flash cart).
I created a new thread because if all goes well, you'll be seeing a lot more games in future.
EDIT: just noticed something after a quick test: the controllers are swapped! Never realised that that was a feature of the Vs system. Quite why they swapped the registers I don't know, but I think it's a simple fix. I also seemed to have a problem inputting my name in the high score table. Oh, and there's no pause function, obviously.