News: 11 March 2016 - Forum Rules, Mobile Version
Current Moderators - DarkSol, KingMike, MathOnNapkins, Azkadellia

Author Topic: Steam Hearts (PC-98) English Translation  (Read 1291 times)

Psyklax

  • Hero Member
  • *****
  • Posts: 512
    • View Profile
    • Psyklax Translations
Steam Hearts (PC-98) English Translation
« on: January 28, 2018, 12:43:20 pm »

Anyone on the forum who knows me knows that I like to take on little projects that I find interesting, rather than trying to translate a massive RPG. When it comes to Japanese systems, the one with arguably the largest amount of untranslated games, and relative obscurity, has to be the NEC PC-98. I'm used to translating 8-bit console games, and a bit of 16-bit ones, but the PC-98 is a different kettle of fish because in terms of text, it uses a fixed Shift JIS font, rather than programmers including whatever font they like.

For a hacker, this is absolute bliss, because a large amount of time on a console translation (for me) is figuring out the masses of kanji, whereas having a game in Shift JIS means the entire dictionary of kanji is already done for you, so assuming you have the text easily available, you can just copy-paste it into your translation program of choice and get to work.

It is with this in mind that I'm embarking on potentially my first PC-98 translation: Steam Hearts.

It's a vertical shooter, and a reasonably fun one. Being a PC-98 game, of course, between levels you convince the boss to talk by using, er, not so work safe means. ;) That's the reality of PC-98 gaming, whether you like it or not (personally I find it a refreshing change from console games, but whatever).

Being a computer, hacking the PC-98 is also different in that games don't come in solid ROM form, but in various files on disks. The typical way to find games is in either floppy disk format (with several disks) or as a hard disk file (with the game installed on the HDD, along with whatever other files are necessary). The latter seems to be the best option, since a 10MB HDD is hardly that big of a deal in 2018. :) It also means that everything is in one place.

How the text is stored can vary. In the case of Steam Hearts, it appears that all of the text is inside numerous .EXE files, and if PC-98s are like regular DOS PCs, those are programs. The game doesn't have so much text, though, so I guess it made sense for them to keep the text inside the executable. The good news is that the text is sitting uncompressed and easy to find in the .EXE files. The bad news is that, because it's surrounded by code, I feel like a first-day hacker all over again, because I can only write inside the space available. :)



Each line is done separately, and in the first screenshot, I only have one line to play with, whereas I have two in the second. You'll notice the text is a bit large (limiting screen space), and I'm forced to fit the text in the space used by the original text (limiting storage space), but it's better than nothing, right? If I WERE a first-day hacker, I'd be pretty pleased with this, but the fact is that I'm not, so I want to do better. :D

My problems are two-fold: I don't know how to find the pointers saying where each line is stored, and I don't know how to switch the font to one that will allow 8-bit ANSI characters instead of 16-bit Shift JIS characters, thereby saving both screen space and storage space.

Look at the first screenshot for this translation of Marble Cooking: it uses a smaller font, but what's most interesting for me is that, internally, the hacker replaced the 16-bit Japanese text with 8-bit ANSI text and it works fine.

http://www.romhacking.net/translations/824/

The problem for me is that if I try 8-bit characters in Steam Hearts, I just get a load of random kanji, so if I could tell the game to use the other font, I will be able to get a better translation in there. Of course, I'll also need to find out how the game figures out where the lines are, of course, but all searches I've made to find any pointers have come up blank.

I'd like to go the debugging route, although the x86 is the only major CPU from the 70s/80s that I have no experience with. The Neko Tracer in the RHDN database is a good start, but I couldn't see anything in the trace that looked like a reference to the text. A RAM dump shows that the whole .EXE is stored in RAM, and the first line is at $36A82, so that gives me something to go on at least.

The between-level cutscenes seem to use the same font mentioned in that other hack, but when I replaced text with 8-bit characters, it just messed everything up. This makes me wonder why the other hack was able to use 8-bit characters without issue, since as far as I can tell, no other modifications were made to that game.

So, in summary, the translation side of this game is easy-peasy, but fitting into the game the kind of translation I'd like will require some hacking, and the main reason I made this thread was because I was hoping someone might be able to help. :) Normally I'd just use a debugger to break on a read to $36A82, but Neko Tracer only traces, rather than breaking, and all those damn registers make it hard for me to read a trace to figure out what's going on.

Anyone got any advice on this? If I can crack this game, maybe I'll have a go on some other ones... :)
« Last Edit: February 10, 2018, 05:35:07 am by Psyklax »

meunierd

  • RHDN Patreon Supporter!
  • Jr. Member
  • *****
  • Posts: 60
    • View Profile
Re: Steam Hearts (PC-98) English Translation
« Reply #1 on: January 28, 2018, 01:33:57 pm »
You might have better luck in the PC-98 Discord: https://discord.gg/FZVyrtk

Psyklax

  • Hero Member
  • *****
  • Posts: 512
    • View Profile
    • Psyklax Translations
Re: Steam Hearts (PC-98) English Translation
« Reply #2 on: January 28, 2018, 03:22:47 pm »
You might have better luck in the PC-98 Discord: https://discord.gg/FZVyrtk

Didn't even know that Discord existed until now, but I see you're on there too. :D Okay, I'll leave a message in the translation discussion bit (don't really know how Discord works yet, obviously). I posted here because, you know, I always post here. :)

filler

  • RHDN Patreon Supporter!
  • Hero Member
  • *****
  • Posts: 663
  • "WINNERS DON'T SELL REPROS"
    • View Profile
    • Filler's Translation Projects
Re: Steam Hearts (PC-98) English Translation
« Reply #3 on: January 28, 2018, 08:35:30 pm »
FYI: This sounds like the kind of thing I'd really dig translating. :) I'm busy right now though so I wouldn't count on my help with it anytime before maybe the last 1/3rd of the year.

Psyklax

  • Hero Member
  • *****
  • Posts: 512
    • View Profile
    • Psyklax Translations
Re: Steam Hearts (PC-98) English Translation
« Reply #4 on: January 29, 2018, 01:17:42 am »
FYI: This sounds like the kind of thing I'd really dig translating. :) I'm busy right now though so I wouldn't count on my help with it anytime before maybe the last 1/3rd of the year.

Don't worry dude, I got this. 8) The guys over at the Discord channel gave me a lot of help already so I'll have some good results soon. If there's any weird text I don't understand, I'll let you know, though.

cccmar

  • RHDN Patreon Supporter!
  • Full Member
  • *****
  • Posts: 171
    • View Profile
    • Nebulous Translations site
Re: Steam Hearts (PC-98) English Translation
« Reply #5 on: January 29, 2018, 02:06:24 am »
Cool! Discord is pretty much all you need as far as PC-98 goes. All the major translation groups are there. Nice choice for a project - believe me, it ain't that easy to find games without H-content for that system (which is why I assume most aren't interested in it). Plus, there aren't many action games, most of it boils down to RPGs/adventure games, even more so than in the case of some other contemporary systems. Still, this one's a good game, I remember playing through it a couple of years back. Good luck. :thumbsup:

Psyklax

  • Hero Member
  • *****
  • Posts: 512
    • View Profile
    • Psyklax Translations
Re: Steam Hearts (PC-98) English Translation
« Reply #6 on: January 29, 2018, 06:03:26 pm »
Well, many thanks to meunierd for pointing me in the direction of Discord, because thanks to one or two great guys over there, I've already made excellent progress, as indicated by this screenshot:


You can see the difference with my previous screenshot. I found the (hardcoded :( ) pointers, switched the font to a half-width one the PC-98 has, and inserted a new text routine that lets me use ASCII characters as my text, thereby saving 50% internal space. Awesome! :D

Given that the whole game script is just sitting there waiting for me to translate, all I need to get to work on now is the between-levels cutscenes, which use a different text routine, but I'm just glad to have the mid-level text working great. More updates soon! :)

Jorpho

  • Hero Member
  • *****
  • Posts: 3737
  • The cat screams with the voice of a man.
    • View Profile
Re: Steam Hearts (PC-98) English Translation
« Reply #7 on: January 29, 2018, 06:47:58 pm »
I remember reading about this game over at HG101.
http://hg101.kontek.net/steamhearts/steamhearts.html

Shouldn't "Fara" be "Falla"?  It seemed to me to be another play on words.
This depresses me. I feel like a goldfish right now...

mz

  • Sr. Member
  • ****
  • Posts: 318
    • View Profile
Re: Steam Hearts (PC-98) English Translation
« Reply #8 on: January 29, 2018, 07:55:31 pm »
That new screenshot looks great! I wish I could make such a quick progress with my own projects. :P
There has to be a better life.

Psyklax

  • Hero Member
  • *****
  • Posts: 512
    • View Profile
    • Psyklax Translations
Re: Steam Hearts (PC-98) English Translation
« Reply #9 on: January 30, 2018, 01:14:48 am »
Ah, the old Japanese names debate... :)

So HG101 got the names from a fan site, and I have trouble reading the fan site on the wayback machine. So I don't know where it got the names from. Unless I can see them Romanised in the manual, we're therefore just guessing as far as I can tell.

But if people like those renditions, I'll use them. Seems like people are taking HG101 as canon at this point... :laugh:

EDIT:
That new screenshot looks great! I wish I could make such a quick progress with my own projects. :P

It may sound corny, but it's true: if I can do it, so can you! ;)
(Hey, that's a cool rhyme, I should use that more :laugh: )
« Last Edit: January 30, 2018, 06:22:48 am by Psyklax »

Magma Dragoon

  • Jr. Member
  • **
  • Posts: 52
  • Every day is night
    • View Profile
    • My Hideout
Re: Steam Hearts (PC-98) English Translation
« Reply #10 on: January 30, 2018, 12:23:00 pm »
The Saturn manual has different names: https://segaretro.org/File:SteamHeartsSaturnJPManual.pdf

Trickless

  • Jr. Member
  • **
  • Posts: 8
    • View Profile
Re: Steam Hearts (PC-98) English Translation
« Reply #11 on: January 30, 2018, 04:08:57 pm »
Ah, the old Japanese names debate... :)

So HG101 got the names from a fan site, and I have trouble reading the fan site on the wayback machine. So I don't know where it got the names from. Unless I can see them Romanised in the manual, we're therefore just guessing as far as I can tell.

If you want, I can send you the rest ;)

« Last Edit: January 30, 2018, 04:50:12 pm by Trickless »

Psyklax

  • Hero Member
  • *****
  • Posts: 512
    • View Profile
    • Psyklax Translations
Re: Steam Hearts (PC-98) English Translation
« Reply #12 on: January 31, 2018, 04:15:57 pm »
The Saturn manual has different names: https://segaretro.org/File:SteamHeartsSaturnJPManual.pdf

Nice find there! Never realised the Japanese manual would have Romanisations.

If you want, I can send you the rest ;)

No, that's okay: the Saturn manual gives me everything I need. :)

Incidentally, mini-update. As you've seen, I've got the mid-level text working fine, and I'm in the process of sorting out the kinks of the between-level text, which is the vast majority of text in the game (though a lot of it is "ooh" and "aah" :D ). It's interesting because it includes control codes to make pauses in the middle of the text, and to go to the next line. With a little ASM modification, I'm sure it'll work with the routine I borrowed. :) I'll post a screenshot once I'm certain it's working fine, and from there it's just a matter of translating the whole game!

February 04, 2018, 10:18:35 am - (Auto Merged - Double Posts are not allowed before 7 days.)
I know I'll get a doublepost but I couldn't wait: Version 0.1 is released! :)

http://s346165667.websitehome.co.uk/psyktrans/steamhearts-v0.1.zip

Put simply, Level 1 is complete. I'll probably have a look at the options menu next, since I've got the technical details sorted on all the other text, and the options are pretty useful to know. Nevertheless, now you can find out the crazy plot behind this game. :D
« Last Edit: February 04, 2018, 10:18:35 am by Psyklax »

Psyklax

  • Hero Member
  • *****
  • Posts: 512
    • View Profile
    • Psyklax Translations
Re: Steam Hearts (PC-98) English Translation
« Reply #13 on: February 08, 2018, 02:28:40 am »
Well, it's been a week since my last post, so now I can announce: version 0.3 is released!

http://s346165667.websitehome.co.uk/psyktrans/steamhearts-v0.3.zip

Levels 1 and 2 are now complete, and there are two disk messages that I've changed too. However, I can't think of a way of triggering the disk error message to see what it looks like in practice. I saw it accidentally during my hacking process, but have no idea of how to get it there intentionally. The "insert disk" message looks fine since that's easy to do (just don't include all the files you need). Any help on triggering the disk error message would be good.

Incidentally, I'm numbering the versions to be around the percentage amount of game text that is complete, since I've now finished 25%. The only thing not included in that is the options menu, which uses a different system which may be harder to crack. I may well release v0.99 where everything except the options menu is translated, and just include a translation of that in the readme - though obviously I'd like to do it properly. :)

Any comments are always appreciated! It's only a matter of time before I go through all the levels - though I'm having more trouble than expected beating level 3... :D (anyone know of a way to find the player's energy in RAM? Np2debug doesn't have a RAM search option)

EDIT: version 0.4 is out. ;) Look at the first post!
« Last Edit: February 10, 2018, 05:35:55 am by Psyklax »