11 March 2016 - Forum Rules

Main Menu

Family BASIC 2.1a - My First Translation Project

Started by Arjak, August 01, 2016, 11:47:29 PM

Previous topic - Next topic

Arjak we go...

I am starting this thread in order to keep a record of whatever might happen as I begin my first ever ROM hacking project.

The story so far:

August 1, 2016

I've always been fascinated by the rom hacking scene, but I have never made a serious attempt at any kind of project before now. I have always loved the idea, but have always gotten cold feet shortly after starting to read any documents on the matter. Having recently gotten interested in trying out Family BASIC, I decided to take a look at the rom in a hex editor and see what I could find, with the intent of possibly doing a translation patch.

To begin, I studied several guides and found some first steps to take. I also looked at the games graphic tiles and was relieved to see that there was already an English font in the game. I might change the font at some point, but at least I don't have to worry about it too much. Also, as far as Japanese is concerned, the only characters in the font seem to be kana, so whoever I can find to help me translate this shouldn't have much trouble at all. Frankly, I'm far more concerned about myself.

After a few hours of staring at the text characters and their associated hex codes in FCE Ultra's PPU viewer, and lots of comparing the in-game font to JWPce's character table, I finally was able to put together a character table that seemed right. I opened the ROM in a hex editor and loaded the table...only to be met with gibberish! For a second I was quite concerned. Then I remembered that the text was in Japanese and that the the editor was probably displaying an English font that couldn't display the characters. I quickly found a font change option and switched to Japanese script.

It still looked kind of strange at first, but I scrolled through the rom and quickly found what I was looking for: A large section of ROM with lots of sentences in Japanese. I quickly opened up the ROM in FCE Ultra again, and sure enough, the beginning of the text block I had found corresponded to the opening text of the game! So, not only does my table seem to work, but I have found the game's text as well. There doesn't seem to be much text in the game, and with the kana-only font, translation should be quick and easy. I quickly made a script dump with Cartographer of the block of text I found, and, referencing the game and hex code, noted the text control codes for line break and page end.

I haven't figured out how the pointers in the game work, but I have a good document that has given me a lot of help in understanding what is going on. From what I can tell, it doesn't seem to have a fixed width system, as I can make lines longer and shorter by changing the control codes, and it isn't sequential text, as the pages of text always start at the same places despite putting in page breaks. I'm sure with a little further research, I'll figure out the system being used.

All things considered, I think I'm actually off to a good start! Once I figure out the pointers and get help translating the (seemingly small amount of) text in the game, I should be able to reinsert an English script, assuming I don't run out of ROM space. There seems to be a large empty space at the end of the ROM, so I am hoping that it won't be a problem.

Maybe this won't be too bad...


Free space is nice, but it has to be space in a ROM bank that is swapped into RAM when you need it. I only have a basic understanding of bank-swapping, maybe you can get a proper explanation of this procedure and its correlation with the different mappers available to the NES - from someone more experienced with it.

Anyway - good luck on your project.



Family BASIC, like many NES games, has separate PRG (program) and CHR (character, the graphics) ROM.
Following the first 16 bytes, the next 32KB is the PRG and the last 8KB is the CHR (opening the game in FCEX and clicking Message Log will show you the mapper and size information).
The game code can only use the 32KB PRG-ROM (address $10 to $800F in the ROM file). To use more than that would require ROM expansion as well as a mapper hack (as the game uses no mapper, and as such the 32K limit).
"My watch says 30 chickens" Google, 2018


January 15, 2017

After a long hiatus due to school, I took another look at the program in both emulator and hex editor and I believe I have found two new text codes. The first one causes the game to print "GAME BASIC" (to save ROM space, no doubt), the other prints a string that is input by the player shortly after booting the game. In the game, the string is used in the very next page of text. My hypothesis is that this is meant to be the player's name, but I can't be sure until I get the script translated.

Also, it turns out that the script is not quite as organized as I though it was. While it is, for the most part, in order, there are places where it jumps to a string in a different location than expected. At this point, there's not too much I can do until I get the script translated. It's a fairly small script, so it shouldn't be too hard a job for someone experienced in such things...