What About All Those Projects?

Hey everyone, been a little while since our last progress report. If you haven’t been following any of us on Twitter (kuoushi, hollowaytape, SkyeWelse), this news post will catch you up with everything we’ve managed to accomplish so far on all of our projects. No release dates in here, but it will be a pretty long post so get comfortable.

Rusty has seen some of the most progress of all three of our games. We have managed to figure out where and how all of the text is stored in the game (in LZSS-compressed executable files), dump that text, and also figure out what the control codes in the text do and how they work. Pointers are few and far between, and pretty easy to edit. These are all very big steps into getting the game translated and out to you guys to play. The main problems to deal with in Rusty, as in any other romhacking project, come with the reinsertion process.

The game is meant to read double-byte characters only, which is how Japanese text is usually stored. So when you give it a single-byte ASCII character (English letters and numbers and things), the game’s code does one of three things:

  1. Ignores it entirely (cut scenes)
  2. Prints random kanji instead (title screen)
  3. Skips every second character (post-boss dialogue)

After some debugging and stepping through the game’s low-level assembly code, we’ve managed to solve Case 3 by changing some instructions. This allows us to reinsert about 2/3 of the game’s text in a readable font.

Original: Skips letters
Halfway there: All letters, but far apart
Final: Letters spaced properly!

(We’re also onto something to solve Case 1, so stay tuned!)

Another thing we’ve accomplished with Rusty is with editing its image formats. There are two that matter for our translation purposes, MAG and MGX. MAG is a pretty standard PC98 format that has a lot of support around the web. (See: in-browser viewer, format specification) That ended up being no big deal, we found a converter that uses Susie Plugins and others to convert from MAG to BMP, and then BMP back to MAG with no issues and pretty decent quality. We’ll be trying to get these to look as pixel perfect as the original MAG files that were in the game, but we’re pretty pleased with how well this has gone so far. We needed to edit a few of these as they had Japanese text in them, telling you to switch disks between certain levels.

End of Disk B.

The latter format, MGX, is similar to MAG in format, but different enough that we’ve had to make our own encoder for it. These appear to be used in the opening animation, and then nowhere else in the game. Luckily, they’re just white text on a black background, nothing too hard to actually edit and get to look good.

Oh, and we’ve completed a draft of the translation, too!

Overall, Rusty is coming along really well. We still have more to go, obviously. Otherwise it’d be out and in your hands right now. We need to finish getting text to display properly, get the MGX images created and reinserted, then it’s going to be down to playtesting and reviewing the actual English.

This project has also seen some significant work next to Rusty. We’ve located all of the text in the game, mapped it out, dumped it, and gotten it all translated to the rough draft stages. It’s a little bit simpler than Rusty in that regard, text is stored in a plaintext format. The pointers are pretty similar to the ones we encountered in E.V.O. and not that difficult to edit either.

One of the main problems we had with CRW was some assembly hacking for getting the text to display properly, as well as a couple of weird issues with the opening crawl. The problem with text in CRW is that it expected everything to be a two-byte character. Similar to Rusty, except that instead of not displaying single-byte characters, it would show them except when the first byte of each two-byte segment was a null character, it would chop off and stop displaying the following character. Another issue was that the end-of-file character was also the space character. You can see how that’d be an issue. This took some assembly hacks to make sure everything displayed properly.

Painful to read
Painful to read.
Much better.
Much better.

The issues with the opening crawl were similar. The opening wouldn’t autoplay unless you clicked your mouse once, but it would autoplay just fine in the original Japanese version. Not very promising to boot to a black screen. Turns out this only happened when the file’s length was odd! Tough to figure out, but not to fix.

The other issue was that the game would fade out to the main menu too soon, not letting the full crawl finish scrolling. In the debugger, we found a register that was just counting up to 0x100 before fading out, and that 0x100 ended up being easy to find and edit. So we’re adjusting that to fit with the length of the opening crawl once it’s fully revised.

One setback was discovering that some interface text is actually stored as images. The .UGD image format is undocumented, so we’ll need to reverse engineer that. Not a simple task. But it might be for the best – if we can edit some interface images, we can give ourselves more room in the menus, and won’t need to abbreviate things so much. It’d be nice to have the menu option “Snipe” instead of “Snip”, right?

Still work to be done, but this is where we’re at with CRW for the time being.

(Appareden, that is)

While this project hasn’t received as much of our attention as the other two, we’re still pretty far along with the actual hacking portion of it. We’ve managed to map out and dump all of the text in the game, as well as figure out any control codes used in the scenario/dialog text itself. Relatively little translation has been done so far, but that’s because Appareden has more text than CRW, Rusty, and E.V.O.: The Theory of Evolution (including each of their manuals) combined.

That’s not to say we haven’t knocked out issues with the game itself. Appareden has some pretty straightforward and easy to edit dialog/scenario text files. They’re basically plain text files with some simple control codes. It also displays most English characters without any issue whatsoever. Most. Those control codes I mentioned before? Apparently they decided that the letter ‘n’ would be a great control code to designate a newline. They also used the letters ‘c’ and ‘w’ for a few other things. Hard to write much of a script without using those letters.

This took some assembly hacking to figure out how to change those control codes to some other characters that we weren’t going to use when translating the game. This was actually the very first assembly hack we’ve done, so it went a long ways towards helping us learn how to do it better in the future.

All letters display; control codes reassigned to unused characters.
All letters display; control codes reassigned to unused characters.

Trickily, Appareden does not currently run in Neko Project 2 Debug Edition, the emulator that makes stepping through the code possible, so this hack was accomplished through a really terrible and roundabout way that we hope never to have to do again:

Replacing ns until the game works correctly.

Another cool thing we’ve figured out with Appareden that’s not necessarily related to the actual hacking process, CD audio. SkyeWelse purchased a CD copy of Appareden from Japan and we’ve been messing with it using various emulators. Apparently, this CD version comes with CD audio that the game uses instead of the other soundcard arrangements. The CD tracks sound phenomenal in comparison. The only problem is finding an emulator that could also support this feature. Luckily, the new kid on the block called SL9821 can do just that. It takes a bunch of extra steps to get it working like installing Daemon Tools (other virtual drives don’t seem to work) to mount the specific image, and then mounting that image in SL9821, but it works. SL9821 isn’t perfect, and there are a few visual glitches in the game itself, but it is otherwise fully playable with CD audio.

The last cool thing we’ve managed to find is actually something that we’re really happy about. Appareden released in 1995 with some major bugs. One of which would basically freeze the game and make it difficult to continue if you ran into it. It involved a specific character equipping a specific kind of weapon and then using their normal attack in battle. You can see how that’d be pretty annoying. Luckily for us, TGL released a patch way back then. Unluckily for us, the update disk that came with SkyeWelse’s copy didn’t work. Another PC98 enthusiast from the Tokugawa Corp forums known as kobushi came to our rescue. He’d downloaded the patch file from TGL’s website a long ways back, before the site went down. It works perfectly, so you guys will be able to play the game without running into the annoying bugs that plagued the game at release.

That’s the main bit of progress we’ve got with Appareden so far. We still have to figure out the GEM image format that TGL uses since the title screen itself is in Japanese, as well as a few other images in the game (like some of the animated text in battles). And you know, we need to finish translating the whole script. That’s going to take quite a bit of time.

We haven’t forgotten our flagship translation hack in all of the cool work we’ve been doing on our other projects. E.V.O.: The Theory of Evolution has also seen some work as well. We’ve mostly just focused on clean-up of any text and script-related issues people have brought up, as well as a few possible bug fixes but nothing really major.

We’ve mostly been working on a patching system that will clear up a lot of the issues you guys have been reporting. Namely, your files don’t seem to work with the patches we provided. It took a bit of work, but we managed to find a couple of tools that’ll help us release an all-in-one tool to patch practically any version of the files you may have. One of the things we’ve found is a tool called NDC created by euee which allows us to import/export files to/from disk images via commandline. This means that all you have to have are disk images with the right files inside of them, and not a full disk image matching the specific hash of whatever versions we were working on. Feel like backing up your own E.V.O. disks and patching those specifically? You’ll be able to do that now. And we’re not just releasing a random batch file that you run, we’re making a patcher GUI that will handle all of that for you. All you’ll have to do is show the patcher where your images are and it’ll take care of the rest.

Custom patcher in-progress.
Our beautiful custom patcher.

There’s a lot of testing to be done on this method of patching, but we believe it will be the easiest, most compatible with any image way of patching games we translate going forward. We’ll be looking forward to feedback when we release it, but that’s still a little ways out.

That’s All

Hope this post has been informative and helpful. We’re pretty excited with all of the good progress we’ve been making on all of our projects. They’re not as big as E.V.O.: The Theory of Evolution, but they’re still very fun games that we hope you guys will enjoy. One thing I didn’t mention above is that we do have manuals for all of our new projects now, so we will be releasing each patch with a fully translated manual like we did with E.V.O. We don’t have any release dates for you, and we probably won’t for a bit, but we’ll be trying to talk about what we’ve been up to on a monthly basis at the very least. There could also be some editorial/game history posts here and there that some of you guys might find interesting, mostly related to our work or the games that we’re working on themselves.

Thanks for sticking through this long post to the end! Be seeing you guys real soon with more news hopefully.