In late 2018 or probably early 2019 I decided to start only posting oddball things that interest me on this site. I vowed to make no attempt to write content that appealed to anybody else. If I accidentally do that it's cool but I'm sure not trying.
This article is 100% aligned with that goal. 100%.
After finishing Retail Clerk '89 I needed a break from Genesis programming. I predict this will last until early 2020. So I started thinking about other projects that no one will ever download. The first thing that came to mind was doing a translation of Dragon Slayer: The Legend of Heroes II.
Don't let the title screen fool you, this is completely in Japanese and doesn't have a translation. I hear there's an incomplete translation of the Super Nintendo version somewhere but no way does that have CD music and cheesy cut-scenes. Those are the two best things about the 16-bit RPG experience.
This idea first came to me after finishing Trails of Cold Steel II which is also part of the confusing universe that is Falcom's Legend of Heroes series. Most of the games have been localized (sometimes badly) for the US market. Not this one though. Released in 1992 it missed the very short window of time when the TurboGrafx-16 was a viable system outside of Japan. As I understand it's a direct sequel to the first game and with that being obscure in the US there was no interest in bringing the Super Nintendo or Genesis versions over either. Like Ys V this is a non-existent game in the west.
Now, I don't know the first thing about hacking TurboGrafx-16 CD games or translating Japanese. I didn't know anything about writing a Sega Genesis game in 68000 assembly either. I'm confident given enough time and cheap wine I can figure it out. That doesn't guarantee I'll follow-through on this idea. Right now I just kinda want to feel out how big a project this might be.
Let's start by cracking open the ISO for Dragon Slayer: The Legend of Heroes II and.. hey, what's all this English text from Ys II doing here?
Before continuing I'll acknowledge it would make a lot more sense to post this on tcrf.net instead of here. As of this writing there isn't a page for Dragon Slayer: The Legend of Heroes II there at all. Eventually someone will re-post this all there and not credit this page. I've already accepted that's how it will turn out. I could beat them to it but I don't care.
OK, so let's compare this to the US release of Ys Book & II:
Yeah, that looks pretty the same. This is dialog from early in Ys II when Adol is returning the six books found in Ys I. Note: I'm using original copies of these games. These aren't some questionable version from a site Nintendo took down. I imported more or less all the Falcom games released in Japan because that's a perfectly normal thing for someone who can't read Japanese to do. I also bought just about every US TurboGrafx-16 CD release when they were on clearance for $5 in 1993. Anyway, I'm saying this to rule out a bad rip. To also rule out that I did something really bizarre I ripped the CD again into a different format (.bin) using a different program. The text is there, no question.
In case you're wondering, the tools I used were TurboRip and Brasero.
The part really stumping me is why would data from the English version of Ys Book I&II be found and not Japanese text? Let's compare to the Japanese version of Ys Book I&II:
The middle window there is the Japanese release of Ys Book I&II. This block of data is definitely from the US release. It's not some weird case where Ys Book I&II contained both English and Japanese text.
Let's write a quick app to strip out all the text-like data and see what else is there. I know there are apps that do this but this is only 5 minutes of coding. That's roughly how long it would take to find a program that ran on Linux and weave together the tapestry of command-line arguments needed to run it.
import java.io.File;
import java.nio.file.Files;
import java.util.Arrays;
public class ConsecutiveLetterFinder{
//these should really be a command-line arguments
private final static String filePath="PATH-TO.iso";
private final static char delimiter='|';
private final static int minLength=4;
//write a delimited list of strings that can be loaded into a spreadsheet
public static void main(String[] args){
System.out.println("Address"+delimiter+"String");
try{
byte[] f=Files.readAllBytes((new File(filePath)).toPath());
int i=0;
while(i<f.length){
if(f[i]==-96){f[1]=32;} /* A0 is used as space in this game */
if((f[i]==32)||((f[i]>=65)&&(f[i]<=90))||((f[i]&5t;=97)&&(f[i]<=122))){
int end=+i;
while((end<f.length)&&((f[end]==32)||((f[end]>=65)&&(f[end]<=90))||((f[end]>=97)&&(f[end]<=122)))){
end++;
if(f[end]==-96){f[end]=32;} /* A0 is used as space in this game */
}
if((end-i)>=minLength){
byte[] sub=(byte[])Arrays.copyOfRange(f,i,end);
System.out.println("0x"+Integer.toHexString(i)+delimiter+((new String(sub)).toString()));
i=end;
}
}
i++;
}
}catch(Exception x){
x.printStackTrace();
}
}
}
Using the output of this we can find some text from later on in Ys II:
This block is from Ys I, it's the only Ys I text I found:
Then there's a large block that's a mix of text and what I assume is other game data. It could be executable code, I didn't decompile it yet. I figure learning a minimum amount of 6502 would be a good idea before trying that. Here's where it starts:
Scrolling past that text and we can see the bytes stay the same for a while:
Eventually we hit some text from late in Ys II:
And even more text from Ys II, this is all still in the same block:
The block of data ends here:
I didn't find much else interesting but I didn't look too hard.
Now the important question - what is this text doing here?
There's not enough text to imply they hid a copy of Ys Book I&II in Dragon Slayer: The Legend of Heroes II. I don't see anything from the very beginning of the game nor the ending text. There are huge parts missing like most of Ys I. And of course the redbook audio isn't on the CD. It's crazy to think about what that would do to the price of Dragon Slayer: The Legend of Heroes II if it contained an English version of Ys Book I&II. There's about a 10:1 difference in the prices right now.
The text is also disconnected enough to rule out a hidden demo or some flashbacks to Ys Book I&II. I don't think it was until the PSP era that Falcom starting having the Ys and Legend of Heroes worlds leak into each other. They did a crossover game in Japan on PSP (no US release of course). Trails of Cold Steel has some light Ys references. Ys VIII has a less-light reference to Trails in the Sky and a couple characters copied from Trails of Cold Steel. I don't recall seeing anything like that in the 1990s though. I think the fan-service references in today's games are all from Toshihiro Kondo's influence.
The likeliest explanation, according to a total rando like me, is that when you remove space constraints developers get lazy. I've seen many developers import 100s of megabytes of libraries to do something they could have written in under 20 lines. I strongly suspect there was some bit of code in Ys Book I&II they wanted to use and they kept importing stuff until it worked. Something like "oh hey, Ys has that handy subroutine that does X, lemme grab it, huh compile error, maybe I need this other file too..."
I've done this nonsense myself. It's 1000x more likely to happen if you're under a time crunch which I hear game developers always are.
Why it's from the English version I have no idea. One simple explanation is it's just what the developer had handy, maybe they worked on the translation. According to contributors to Mobygames there are 14 people that worked on both games. It's not far-fetched to imagine the code for all the Falcom/Hudson console games was in a big disorganized repository.
A less-simple but plausible explanation is there's some code only in the US version. In the process of importing that code they picked-up some baggage. Without analyzing the non-text code it's hard to make a more intelligent guess. If someone wanted to test that theory out I'd recommend starting with an analysis of differences between the US and Japan Ys Book I&II releases.
I don't know if I'll actually work on this translation project. Seeing this text makes me less likely to try. Dragon Slayer: The Legend of Heroes II has a large ISO, just over 100mb. That's already a little intimidating. Now that I see there's garbage to sift through it seems like a bad idea to start unless I'm really willing to put like 200 hours into it.
Oh, and just for fun - I looked at the ISO for the Dragon Slayer: The Legend of Heroes II demo in the first Hyper Catalog and none of this text is there. That ISO is under 2mb and only runs cut-scenes. So this doesn't help any theory very much. It would help if I was planning to do a wider hack and wanted to know where the cut-scene images are stored.
As usual, if you've made it this far then thanks for sticking it through. I don't know what I'll be posting next but it's sure to be unusual.
Related