Having a weird issue here and wondering if anyone can help. I'm not an experienced hacker but I've done translation hacks for a couple of SG-1000 games, one of which is posted on RHDN. This is my first Famicom/NES hack. Anyway, here goes:Family Tennis
(Namco) may be the best 8-bit tennis game I've played, and certainly is the best one I've seen on the NES/Famicom. It uses a bunch of real players from the 1980s, though I'm not sure it's officially licensed -- some of the players' names are given in phonetic transcription in hiragana, while others use nicknames.
Anyway, I thought it would be a fun project to replace the hiragana names with their given names in Latin characters. Using a relative search engine and a tile editor, it wasn't difficult to find the ROM locations for the names on the character selection screen -- for instance, Edberg (えどまえ) is at 0x8644, hex code C3 D3 F4 DE C3 28 where the last character is a blank space. I also had no problem swapping in the Latin characters (0E 0D 0B 0E 1B 10). So far, so good.
But I got about halfway through fixing up the character selection screen when I discovered that the main gameplay screen had become corrupt, so that the left half of the screen had been replaced by audience graphics that would normally be offscreen until the ball went into that area. Here's a screenshot:
When the character names are displayed, the audience members become garbage characters; once they disappear, they turn into people.
"OK," I figured, "there must be a problem with using the Latin characters during that screen. Since I don't really understand the NES hardware, maybe I'm exceeding some sort of tile memory allocation. I'll just replace some of the hiragana character set with the Latin characters, and that way I won't be asking it to access any ROM locations beyond the expected range." Nope, same problem. And then I discovered something stranger: it seemed like any
change I made to the ROM, at least in the vicinity of the entries for the character name tables, would cause the primary gameplay screen to become corrupt.
Here's what's even stranger: I'm using Nestopia, which emulates the original Family Tennis ROM fine. But this graphic corruption seems to be the default behavior in every other emulator I've tried, even with an untouched ROM.
I'm on a PPC Mac, so I don't have a lot of emulation options, but I've tried FCE Ultra, iNES, RockNES, and NesterDC for Dreamcast. All of them have this problem with Family Tennis, whereas Nestopia only throws an issue if I change the ROM. (I'm using the No-Intro dump, BTW, so it should be clean.)
So here are my theories:
1) Nestopia is using some kind of weird workaround for this particular ROM, and it uses a checksum to identify the ROM. When I make changes, it defeats that process, and so the workaround isn't triggered.
2) The ROM has some kind of copy protection/anti-piracy code that causes the graphics to become corrupted if it's been changed. (This could relate to #1 -- maybe Nestopia has to do something special to handle this.)
3) I'm clueless and don't know what I'm doing. (This one's almost certainly accurate.)
Any ideas? Thanks!