Magic Knight Rayearth for the Sega Game Gear English Language Translation Patch Readme
Released July 31st, 2018
Version 1.0

Programming/Art/Tools: Supper
Initial Work/Translation: Filler
Playtesting: Cccmar
Special Thanks: Ded302, 730

The patch included in this archive is to be applied to a ROM dump of the Sega Game Gear game "魔法騎士レイアース" a.k.a. "Magic Knight Rayearth" using an appropriate patching program. The patch translates the game's text to English, and adds a splash screen. Details follow in this document.

This patch has been play tested by Cccmar, Filler, and Supper. If you find any bugs or have any suggestions we urge you to report them to us via RHDN's forum.

--------------------------------------------------------------------------------

Contents

Magic Knight Rayearth EN 1.0.bps
Magic Knight Rayearth EN 1.0.ips
readme.txt

--------------------------------------------------------------------------------

Licensing

This patch contains NO portion of the original game. It is to be distributed as a patch, in an archive with this readme and any other materials originally provided in the archive.

This patch is NOT to be distributed with the original ROM image, either pre-patched, or separately. The contents of this patch are NOT TO BE SOLD in any way, including as a ROM image applied to the original ROM, or as a physical cartridge using the patch applied to the original ROM image.

As the work contained in this patch is derivative, our rights regarding it are limited. However, we're releasing materials related to the translation project ONLY, including the English language script, under CC BY-NC (Creative Commons Attribution-NonCommercial, https://creativecommons.org/licenses/).

For additional materials and information please see the authors project pages: http://projects.mattsmessyroom.com/magicknightsrayearth/
http://stargood.org/

--------------------------------------------------------------------------------

Game Description

Published by SEGA and released on Dec 16, 1994, Magic Knight Rayearth is a cute RPG based on the manga/anime series of the same name. It follows an alternate storyline where Mokona runs off and the three girls have to find them.

--------------------------------------------------------------------------------

Cheats

"In order to play a special mini-game, you must enter these command on the title screen (Do not push start): Press button 2 five times, push button 1 twice, push button 2 five times, push button 1 ONCE. Then, push and hold button 1 and while still holding button 1, push and hold button 2. If done correctly, you will leave the title screen and play a little game with Mokona.

Contributed By: Vyse the determined."

Reference: https://gamefaqs.gamespot.com/gamegear/581769-mahou-kishi-rayearth/cheats

--------------------------------------------------------------------------------

ROM checksum information

Name: Magic Knight Rayearth (J).gg
Size: 524288 bytes (0 MB)

CRC32: 8F82A6B9

CRC64: 71C15232AC510DF4

SHA256: 9A69751F607A7A855895C724AC6902C1B7BC11F51CEF2CA433E9E9D1ADCFA8CA

SHA1: 6C13E3B9BB24EAFC1186C5FFA322B1F40C676B3D

BLAKE2sp: B3D3115F56A3EECD2C3668B4A2116B7DF3331B9E1DA59F65572DBC694F17F0C3

--------------------------------------------------------------------------------

Supper's Notes

So a few months back, I was browsing Filler's site and noticed one of the projects in the "inactive" section was the Game Gear Magic Knight Rayearth game. I'd played the game a little, the script was already translated, and I was looking for a project, so I figured "why not?" It's a short game -- probably under 5 hours for most people -- so you might think, as I did, that it would make for a quick and easy project.

11,777 script lines, 200+ kb of C++ code, 2,156 lines of assembly hacks, and many many hours later, lesson learned: short games are the worst.

Let's see if I can recall the sequence of events:

Filler's existing translation was based on a raw text dump, so step one was to cleanly re-rip the scripts in order to prepare them for re-insertion. Standard stuff. I spent some hours figuring out the dialogue scripting system and wrote the extractor.

Then I started looking for the dialogue pointers so I could actually rip the text. At this point, I discovered that basically all the strings in the game use hardcoded pointers rather than a nice neat table. After all, the game is short, so why would the programmer bother coming up with some complex organizational scheme that would take more time to program than it would ultimately save? So I grumbled and spent a considerable amount of time chasing down scattered pointers across the entire ROM for shops, cutscenes, NPC dialogue, etc., etc., etc.

Around this point, I found out that Filler's existing translation had only covered the "dialogue" text. The "system" text used for menus, battle messages, and so on was stored in a completely different format, so now I found myself repeating the above steps for a considerable amount of additional text. Filler obligingly translated it, nearly doubling the size of the script.

Then I needed to get the text back in the game. Fortuitously, the ROM has tons of free space in almost every bank, so that wasn't an issue for once, but nonetheless I had to write a custom inserter to handle the banking and some of the game's other idiosyncrasies. Also, the system text required a different inserter due to the different format.

Meanwhile, the game had a few graphics that needed to be changed, including the title screen and the labels on the world map. That meant writing programs to extract the graphics to an editable format and insert them back in the game (which had to be done in tandem with the script insertion so they didn't overwrite each other). Plus those graphics had to actually be redrawn, which ended up falling to me. Hope the results are passable.

Then it turned out there was a hidden minigame accessible by a button code on the title screen (press Button 2 five times, Button 1 two times, Button 2 five times, Button 1 once, then Buttons 1 and 2 simultaneously). That game had several text strings (in yet another new format) which again had to be translated and set up for insertion.

When I went to format the system text, I found that most of it used hardcoded positions and dimensions that were too small or incorrectly placed for the corresponding English text, so I fired up WLA-DX and individually patched every necessary location. The assembly file swelled prodigiously over the course several days, eventually reaching over 2,000 lines.

Also, the game was very restrictive with space for spell and item names. Originally I was just going to abbreviate them and call it a day, but for some reason I wound up gritting my teeth and reformatting most of the menus from a two-column layout to one column to allow for longer names. That meant a bunch more assembly hacks.

I also decided to allow the left/right buttons to be used to page through the newly-formatted menus. This resulted in a particularly irritating incident where it turned out that the shop menus had a race condition on the input polling, which manifests in the original game as button presses occasionally being dropped, but in the translation it was causing the item cursor to sporadically take on invalid values. This took several frustrating hours to find and circumvent.

The battle text turned out to need additional dialogue boxes for the longer English text. This required me to track down the relevant tables and write yet another script generator specifically targeting that format.

Oh, and then I discovered that the fortune teller in the village used the same code for her options as the shop menus that I had spent so long reprogramming, so that had to be fixed too. There wasn't enough room in the dialogue box to use the new vertical layout from the shop, so I had to create a copy of the original code and redirect everything to that. Fun.

Then there was testing and correcting and more testing and more correcting, and somehow, here we are. I don't know how many hours I ultimately pumped into this, but it was easily 50 or 60, probably more.

So, short game? That means the programmers were probably lazy. That's bad, bad news if you're a hacker. Or at least if you're a hacker who can't stand to shorten text.

Anyway, enough of my whining. Major thanks to Filler for starting the project, doing the translation, and sticking with it even when I produced another 60k of text to translate for a project that was supposed to be already done. Thanks to cccmar for testing and finding several (more) of my dumb mistakes. Also, thanks to aziwoqpd, who reproduced the English series logo for the fan translation of the SNES game years ago -- I based the logo for this game directly on that version. And thanks to my predecessor David Duerr, whose initial hacking work on this game ultimately wasn't used but nonetheless helped roll the ball along.

And big, big thanks to everyone at SMS Power! for the best gaming site that ever was. I originally got into hacking through the Game Gear and got most of my early experience in assembly language through the site, and I wouldn't be here writing this without it.

So, 14 years in the making, here's Magic Knight Rayearth for the Game Gear in English. Don't know if was worth the wait, but I put my best into this and I hope it shows.

Supper

(P.S.: This game is Xenogears writ small, seriously. "Oops we're out of time, guess we'll just replace the ocean and volcano dungeons with cutscenes and cut out the floating island city entirely. It's only half the game missing, maybe no one will notice." Guess they dumped all the money into the Saturn game.)

--------------------------------------------------------------------------------

Filler's Notes

This is a project that dates all the way back to 2004. That was about 10-11 years into the video game fan translation scene, but it was still somewhat early, predating the current romhacking.net site by at least a year. I had only been experimenting with the hobby for a couple years, so this was one of the earlier games I worked on. I made a table file, dumped a(n incomplete) script, and translated it.

A few years later in 2008, I was approached by Ded302 (http://www.romhacking.net/community/871/) who had made some preliminary progress on hacking the game. We worked together on the project on and off until mid 2010 when Ded302's hard drive died and he lost a bunch of work. He redid a lot of the lost work, and we released a partial patch in 2011, but due to continuing production issues I began to lose interest in the project.

Fast forward 7 years and Supper offered to take a look at it. We'd worked together on Battle Golfer Yui and City Adventure Touch: Mystery of Triangle, and I was happy to have his help.

It turns out all the in-battle text is stored using a different text encoding, so after Supper dumped this text I got to work translating it. I initially underestimated the amount of text, so what I thought might take a week or two ended up spread out over a couple months.

There were a couple of tricky spots including a blanked-out word indicated by a series of dots that I mistook for ellipsis. (かいしんの・・・・には、かなわん。) Special thanks to 730, and Supper himself for helping out with that. I was also convinced that the line "もりやしろ" was "森社" or a forest shrine, rather than "森や城", forests and castles. Such are the pitfalls of kana-only scripts. Thanks to Supper for catching that one as well.

I made sure to play-test this game from start to finish myself as I wanted to check the script in-game since some of the work on it was done so long ago. I ended up cleaning up a couple spots including a fortune-telling, and a bit of the ending. I didn't fully check the old work, but everything seemed good in-game, and I was fairly pleased with how the newly translated text turned out.

After seeing the results of Supper's hard work, and especially reading through his notes, I have a new-found appreciation for what was done here. While the old work ded302 and I did was certainly commendable, the assembly work Supper put in really lifted this project up to be something much more special than it would have been otherwise and he deserves our thanks for it. Huge thanks also to Cccmar for performing a timely beta-test, and submitting a handful of issues which were resolved. 

While nothing is perfect, I'm really proud of the work we've done on this English language translation patch. In about 4-5 months, we've brought a project 14 years in the making to a point where it's ready for all to enjoy. While the game is fairly short at around 4-5 hours, and as Supper mentioned probably a bit rushed in development, MANY folks, myself included, have a soft spot for the original manga/anime series. The game was even supported with a custom Magic Knight Rayearth themed Game Gear system in Japan. It's super cool to be able to play this game in English after all this time.

Thank you to those who download this patch and try it out for themselves. I hope you'll consider leaving a review of the translation patch on Romhacking.net if you enjoy it.