Translating Shin Megami Tensei: Devil Summoner: Soul Hackers

Hi! So I'm brand-new to this scene, but last summer I spent a couple months as a first attempt at reverse engineering the PSX version (more nostalgia for me, and I have a lot more MIPS experience). Nice work on the variable-width font - I'm stumped at how you did that, outside of rewriting the print functions entirely. I attacked it differently - I reworked Megaflan's code for the PSX files, then wrote Python scripts that realigned the text to the smaller column count - though this makes new dialogue pages half the time, and I still have text run-over when a choice is asked.

I think I stopped at the same spot you did - did you ever find where the game addresses into the mini-font and draws the battle HUD? In fact, could we compare notes on this?
We didnt rewrite the entire print function, just part of it. When it goes to print a character, we copy it to a specific tile, keeping track of the starting column to begin the draw at, then we send the tile to the draw function. If a tile boundary is crossed, then 2 tile draws occur.
 
Hi! So I'm brand-new to this scene, but last summer I spent a couple months as a first attempt at reverse engineering the PSX version (more nostalgia for me, and I have a lot more MIPS experience). Nice work on the variable-width font - I'm stumped at how you did that, outside of rewriting the print functions entirely. I attacked it differently - I reworked Megaflan's code for the PSX files, then wrote Python scripts that realigned the text to the smaller column count - though this makes new dialogue pages half the time, and I still have text run-over when a choice is asked.

I think I stopped at the same spot you did - did you ever find where the game addresses into the mini-font and draws the battle HUD? In fact, could we compare notes on this?
Mr.Conan is the one that came up with the VWF system. Currently I'm not using it as it requires deleting the Japanese font which makes it harder to pinpoint where there's still untranslated text. My main focus lately has just been reworking the name entry screen, making sure I have all the text in the right spots, as well as dealing with sorting out what text is new in the 3DS and PSX ports vs the Original Saturn version. Once I have confidence I've gotten all the text in the right spots I'll turn my attention back to the VWF system.

So far I think there's at least 3-4 different text routines that will need to be adjusted. There's the main event one, the one for Paradigm X, the one for battles, and the one for menus.

For the fonts for the battle HUD, as far as I can tell on Saturn that's all stored in the A_FONT16.BIN file as 1bpp 16x16 characters. The 8x16 fonts are stored in 16x16 tiles with 2 styles per character. The smaller 8x8 stuff appears to be stored in a similar fashion:

SoulHackersFont.PNG


Keep in mind this may not be how the PS1 font is done.
 
Mr.Conan is the one that came up with the VWF system. Currently I'm not using it as it requires deleting the Japanese font which makes it harder to pinpoint where there's still untranslated text. My main focus lately has just been reworking the name entry screen, making sure I have all the text in the right spots, as well as dealing with sorting out what text is new in the 3DS and PSX ports vs the Original Saturn version. Once I have confidence I've gotten all the text in the right spots I'll turn my attention back to the VWF system.

So far I think there's at least 3-4 different text routines that will need to be adjusted. There's the main event one, the one for Paradigm X, the one for battles, and the one for menus.

For the fonts for the battle HUD, as far as I can tell on Saturn that's all stored in the A_FONT16.BIN file as 1bpp 16x16 characters. The 8x16 fonts are stored in 16x16 tiles with 2 styles per character. The smaller 8x8 stuff appears to be stored in a similar fashion:



Keep in mind this may not be how the PS1 font is done.
Looks similar to the PS1 (this rip is missing the first row and all the kanji beneath:
a_font16_psx_cut.png

I can confirm the menus are cool with ASCII, though there's text everywhere. Each executable file's .data section has yet more text.

As an update, I finally picked this back up. After a lot of reverse engineering, I fixed the rendering of ASCII text in the party names in the battle HUD. Of course Japanese text is now broken, but hey. Still limited to 8 characters, but I'm not sure how hard I want to try to fix that yet. I'll have to see how much space gets allocated for the "to draw" buffer for each name, and compress the letters by a couple pixels or more. Tbh, "Leanan S" isn't the worst abbreviation. Urabe's name is still in kana in the .data section of DVL_BAT1.BIN, hence the brokenness.
Screenshot from 2024-03-27 01-28-43.png



Here's a dump of what I have done on the PSX (attached):

In-dungeon NPC dialogue (none of the in-dungeon game text like "item found!" yet)
Item names, demon names, descriptions
Location names (including the overhead reminders in-dungeon)
Overworld map text and dialogue.
SOME demon negotiation dialogue. I thought it was all contained in one file, but I think more (hopefully the rest) is in DVL_BAT1.BIN.

I think I have just about all of the dedicated text files translated now, fitted using my janky Python script for now.
Not looking forward to hacking every string in the executables, even with Ghidra's help.
But I think aside from name input, the actual code hacking is done!
 

Attachments

  • Screenshot from 2024-03-27 01-09-43.png
    Screenshot from 2024-03-27 01-09-43.png
    358.5 KB · Views: 0
  • Screenshot from 2024-03-27 01-08-23.png
    Screenshot from 2024-03-27 01-08-23.png
    398.7 KB · Views: 0
  • Screenshot from 2024-03-26 22-41-32.png
    Screenshot from 2024-03-26 22-41-32.png
    356.4 KB · Views: 0
  • Screenshot from 2024-03-26 22-40-30.png
    Screenshot from 2024-03-26 22-40-30.png
    149.8 KB · Views: 0
  • Screenshot from 2024-03-26 22-39-27.png
    Screenshot from 2024-03-26 22-39-27.png
    292.4 KB · Views: 0
  • Screenshot from 2024-03-26 22-22-38.png
    Screenshot from 2024-03-26 22-22-38.png
    434.6 KB · Views: 0
  • Screenshot from 2024-03-26 22-22-35.png
    Screenshot from 2024-03-26 22-22-35.png
    466.3 KB · Views: 0
  • Screenshot from 2024-03-26 22-22-23.png
    Screenshot from 2024-03-26 22-22-23.png
    424.5 KB · Views: 0
  • Screenshot from 2024-03-26 22-22-17.png
    Screenshot from 2024-03-26 22-22-17.png
    424.5 KB · Views: 0
  • Screenshot from 2024-03-27 01-09-47.png
    Screenshot from 2024-03-27 01-09-47.png
    321.9 KB · Views: 0
Back
Top