Odd issue with Family Tennis (Famicom) translation attempt

Started by goldenband, January 08, 2011, 11:46:49 PM

Previous topic - Next topic


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!


You have the wrong mapper and mirroring setting in your rom file.
According to Bootgod's site:
It should be mapper #206 (NAMCOT-3414), with Vertical mirroring.  Not mapper #4 (MMC3) with Horizontal mirroring, which is what your copy is probably set to.
So if your NES header looks like this: "NES 1A 04 08 40 00", it's wrong.  It should be: "NES 1A 04 08 E1 C0".

Yes, Nestopia does fix rom headers automatically as it loads them, it's annoying because it hides the true problems from you.
"We are merely sprites that dance at the beck and call of our button-pressing overlord."


Aha, that worked like a charm, thank you!  Also I just realized the ROM I was using isn't No-Intro, but GoodNES, which explains the header problem.