Edit: link from last post is dead, reuploaded to Mediafire here
. This program takes paths to PROGRAM.BIN chunks and decodes them. The InputFile class also includes an unfinished
encode() method for encoding them back (don't think it should be that hard to reverse the algorithm in order to encode them, though I doubt it would be very useful since it would probably just make the game crash). Here
is the QuickBMS script for splitting PROGRAM.BIN into said chunks.
I wanted to translate this game but to be honest I think I should come back to this in a few months or years when I've learned more about programming/ASM/computers but I figured I might as well make a post before completely giving up.
So the image of this game has a file in it called PROGRAM.BIN where most of the game besides cutscenes and maybe music/voices (some XA files I haven't looked into) seems to be in.
This PROGRAM.BIN file seems to have several headers labelled PS-X EXE (and some other stuff like Sony Computer Entertainment etc.) in it separating different chunks (should be 141 of them, I split them with QuickBMS).
I managed to find in-game lines in PROGRAM.BIN but they're all jumbled up, missing characters and being shortened. I looked up the lines in RAM for comparison. Here's two examples:
RAM: 95 74 8B DF 82 C9 8B 71 8E BA 82 AA 97 8E 82 BF 82 BD 82 E7 82 B5 82 A2
BIN: 95 74 8B DF 82 C9 8B A8 71 8E BA D4 01 8E 1E 05 BD 67 00 D8 B5 82 A2
<stuff>Tenemos que subir
RAM: 11 35 12 31 13 3D 34 30 39 35 3B 03 54 65 6E 65 6D 6F 73 20 71 75 65 20 73 75 62 69 72
BIN: 11 26 35 EC 7E 54 65 6E 00 65 6D 6F 73 20 71 75 65 80 20 73 75 62 69 72
I read some posts about LZ compression, but those algorithms seem to be different on every game they're used on, and I also can't find anything like an LZ header in the file, so I don't know what to make of that.
I tried figuring out how the text got decompressed by debugging with this
and tracing with this
but I... wasn't very successful. I realized there was an option for CD-ROM reading breakpoint, but I can't figure out how data is being read and where it's being written.
Some extra info: as you can see above, the game uses both Shift-JIS and ASCII, since it has both Japanese and Spanish/English, though it doesn't seem to support special characters like á or ñ (I edited a savestate to see if I could edit text through those and when I put characters like those in, it crashed when the dialogue box came up). I haven't played the game much to see if it had symbols like those in-game, but I doubt it does.