Translating Shin Megami Tensei: Devil Summoner: Soul Hackers

TrekkiesUnite118

Established Member
So Megaflan sent me the files he extracted from the 3DS version of the game and I've been playing around with them for the past few days. Overall this looks like it could be a fairly straight forward script conversion. The key things that work in this game's favor are the following:
  • The 3DS file formats are very similar to the Saturn file formats save for some endian differences.
  • The game already supports ASCII encoding and will automatically switch to an 8x16 font when it detects ASCII text.
So with those things in mind, I've had some success with converting the 3DS files over to work on the Saturn as you can see here:

DEVIL SUMMONER SOUL HACKERS-0006.png
DEVIL SUMMONER SOUL HACKERS-0011.png
DEVIL SUMMONER SOUL HACKERS-0015.png

DEVIL SUMMONER SOUL HACKERS-0032.png
DEVIL SUMMONER SOUL HACKERS-0033.png
DEVIL SUMMONER SOUL HACKERS-0034.png

DEVIL SUMMONER SOUL HACKERS-0036.png
DEVIL SUMMONER SOUL HACKERS-0038.png
DEVIL SUMMONER SOUL HACKERS-0039.png

DEVIL SUMMONER SOUL HACKERS-0042.png
DEVIL SUMMONER SOUL HACKERS-0043.png
DEVIL SUMMONER SOUL HACKERS-0044.png


As you can see the game seems fairly stable with this converted text, but there are some issues. The biggest one is that the 3DS version allows for more characters per line, and implements a Variable Width Font. The Saturn on the other hand has a fixed width font and about 3-4 less characters per line. So either we can try to rework the font system to use a VWF system, have more characters per line, or edit the script to fit with in the Saturn's technical limits.

There's still a lot to do here but overall it's looking very promising. If any other programmers want to help out on this let me know. It could probably be something to work on in between other projects to eventually get it done. This thread can effectively be the official project discussion area.
 
Last edited:
So excited for this project! I've been playing the game in Japanese as of lately and seeing that this version will be soon in English makes me happy!
 
oh this is cool, i am really looking forward to this btw im ripping the ps1 version for assets and stuff so i found this very cute disc boot image of nemissa saying "bim bam"
 

Attachments

  • ZZ DS2.mp4
    85.1 KB
Just a small update. I finally had some time to start looking at this again and I was able to finally get the Paradigm X text sorted out. So far it seems to be working ok:
DEVIL SUMMONER SOUL HACKERS_test-0050.png
DEVIL SUMMONER SOUL HACKERS_test-0052.png

DEVIL SUMMONER SOUL HACKERS_test-0056.png
DEVIL SUMMONER SOUL HACKERS_test-0057.png


I still need to work more on the font system however. It seems the game has multiple font routines so while we go it working for one, all the others are still the old font system. So the different font routines will need to be isolated and fixed.

Another issue I've found that pops up from time to time is the 3DS script having more text sequences than the original. This can cause the game to get confused in certain spots. One specific one is in the home area. On 3DS it seems more options are available to interact with and some of those options are being mistaken for dialogue causing some comical bits. So that will need to be sorted out as well.
 

Attachments

  • DEVIL SUMMONER SOUL HACKERS_test-0051.png
    DEVIL SUMMONER SOUL HACKERS_test-0051.png
    50 KB · Views: 135
Wow, great work! I found this thread via this reddit post's spreadsheet and would very much like to help.

I know a thing or two about bits and bytes and have a decade of professional software development experience, but I'm pretty new to romhacking and fantranslations. That being said, I've looked through some of the guides on romhacking.net

Seriously, let me know how I can help.
 
So I think I've solved the issue of the 3DS version adding new lines that weren't there in the original Saturn version. These lines were actually originally added in the PS1 port, and like 3DS it's file formats are also similar. So after extracting the PS1 files I effectively used it's files to compare each line against the Saturn version to find which files were newly added. Using that I could then skip the new lines coming in from the 3DS script and only bring in the lines that align to the Saturn script. This seems to have worked and I'm no longer getting messed lines or menus being seen as dialogue, etc.
 
I've been playing what's done so far. Really excellent work. I've stopped playing as I'm going to wait until the full release. But it looks very promising!
 
So I think I've solved the issue of the 3DS version adding new lines that weren't there in the original Saturn version. These lines were actually originally added in the PS1 port, and like 3DS it's file formats are also similar. So after extracting the PS1 files I effectively used it's files to compare each line against the Saturn version to find which files were newly added. Using that I could then skip the new lines coming in from the 3DS script and only bring in the lines that align to the Saturn script. This seems to have worked and I'm no longer getting messed lines or menus being seen as dialogue, etc.
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?
 
Back
Top