Savage Empire SNES – Approaching the Urali – the translation tools are now open source

The tools are now open source, you can find them here, they contain an automation of all the findings so far, taking mostly Vehek’s and DDS input along with a lot of experimentation and fiddling.

Unlike most SNES RPGs (?), dialog in the game is a bit complex because the options the player can choose depends on things he has done in the game or things he has already talked about with someone. This is all represented with a set of flags. I have been trying to complete the list as well as adding comments to the disassembled code in order to have a complete understanding of all of the conversations’ flow.

There seems to be a total of 36 “dialogs” into the game (either that or there’s a different set of rules for other dialogs).

  • Dialogs 11 and 35 seems to have a lot of blank space in the end
  • Dialogs 20, 23, 27 and 36 generate errors when loading the dialog options
  • Dialogs 22, 23, 24, 25 and 26 seems to be loading dialog options from other place since I’m unable to read them

These dialogs have been analyzed for flags completely:

  • 15, Inara Chief of the Pindiro
  • 16, Inatnya from the Kurak
  • 21, Mosagan from the Yolaru


  • Still not sure if the text extraction is 100% accurate; specially on the final lines on each conversation things starts going a bit crazy. Can only confirm this by inspecting the dialogs inside the ROM. DDS already pointed out a possible inaccuracy, I may have to check if our assumptions about the ShiftJIS encoding and the charset loading are correct all the times.
  • Need to find an way to hack the ROM to test the dialogs quickly, somehow pointing Intanya to any dialog I need.
  • Still not sure about the termination sequence I’m using for each dialog;  basically I’m assuming a 0xB8 (LOAD_DIALOG_OPTIONS) means the current dialog has ended and the next one has begun. The thing is not all dialogs ends the same but that might be ok.
  • Gotta solve the issue of dialog options loading for dialogs 20+

There’s still a long way ahead, but at least we are doing some progress 🙂

2 thoughts on “Savage Empire SNES – Approaching the Urali – the translation tools are now open source

  1. You’ve made a lot of progress in a short time! 🙂

    About the charset being off, here is a picture of VRAM of what’s loaded in during Intanya’s first dialogue.

    Between the “束” and “誰” chars, there’s 0x800 bytes worth of graphic data that looks like the portraits used. Those bytes would explain why the charset values are offset by 0x20 between the two characters.

    Also, not sure if you already noticed this or fixed this, but in the command to load options where the game stops reading at a value that has the 7th bit set (4x), it will also load that option before stopping. So in the example list where you loaded options 02BC to 02C3, it should also load 02C4 (Urali) before stopping. Even though it was of the form “42C4”.

    That was interesting about the “if_selected_dialog_not” command, I didn’t even notice that. But it makes sense. The game does a sort of skipping-ahead thing when looking through the dialogue options as well, instead of just using pointers to the exact address. Though it didn’t work right when I tried moving the counter for “Jimmy”, so I wonder if the game also has a way to shortcut to a smaller subset of dialogue options instead of iterating over the entire list.

    You seem to be doing well now and also learning as you go, though if you want me to investigate anything else, don’t hesitate to ask.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s