Translating Dungeons & Dragons Shadow over Mystara

Lirinica

Established Member
Hi. I'm making a translation hack of Shadow over Mystara.

I have finished the game and mapped every route and stage that I could find. Some stage files didn't load during the gameplay (I guess one or two files) and I didn't see anything different on youtube videos, so I'm assuming that these files are unused stuff (or I just did not find them).

The goal is to insert the arcade english script in this Japanese port, and mess with the custom tile characters like those on UI and stuff like vdp1 characters-as-sprites (the worst part).

A good thing about this game was the memory management.
From what I saw, they:

- Stuffed all of the static data on the RAM cartridge from the start;

- Reserved a good space in the HWRAM just to allocate dynamic data;

- Used a two byte system to pointers.

So I will rework the system to use one byte and also do some mods here and there.
Hopefully, all of the original offsets will have enough space to just insert the script.

Differences from Tower of Doom:​

- This game's huge but less complicated;

- It's way less compilated than Tower of Doom, the source files are similar to the PS1 ToD prototype;

- In the ToD they just compilated all sprites, background and text font inside a "stage.DAT" file, SoM left everything as it is, so it has a file just for background, for text, for sprites etc.

- They centralized the generic japanese characters (I guess hiragana or something like that, I just don't know) into a single file (MSG.FNT), and the kanjis (again, I don't know what's what) they stored into the text data files (MXXM.FNT), so the game mixes font files in the same sentence;

- It has a single font file for UI characters and even 8x16 characters in the same file (SCN1FNT.FNT). In ToD there was various font files for different situations (ALWS.FNT, FACE.FNT, MGMES.FNT). I will look if it has a VWF routine, otherwise I will write one based on the 16x16 routine.

- The textbox is no longer a sprite, now it's just vdp2 drawings, and the devs used NBG2 to display textbox and NBG3 to display text, way more organized.
 
Hi. I'm making a translation hack of Shadow over Mystara.

I have finished the game and mapped every route and stage that I could find. Some stage files didn't load during the gameplay (I guess one or two files) and I didn't see anything different on youtube videos, so I'm assuming that these files are unused stuff (or I just did not find them).

The goal is to insert the arcade english script in this Japanese port, and mess with the custom tile characters like those on UI and stuff like vdp1 characters-as-sprites (the worst part).

A good thing about this game was the memory management.
From what I saw, they:

- Stuffed all of the static data on the RAM cartridge from the start;

- Reserved a good space in the HWRAM just to allocate dynamic data;

- Used a two byte system to pointers.

So I will rework the system to use one byte and also do some mods here and there.
Hopefully, all of the original offsets will have enough space to just insert the script.

Differences from Tower of Doom:​

- This game's huge but less complicated;

- It's way less compilated than Tower of Doom, the source files are similar to the PS1 ToD prototype;

- In the ToD they just compilated all sprites, background and text font inside a "stage.DAT" file, SoM left everything as it is, so it has a file just for background, for text, for sprites etc.

- They centralized the generic japanese characters (I guess hiragana or something like that, I just don't know) into a single file (MSG.FNT), and the kanjis (again, I don't know what's what) they stored into the text data files (MXXM.FNT), so the game mixes font files in the same sentence;

- It has a single font file for UI characters and even 8x16 characters in the same file (SCN1FNT.FNT). In ToD there was various font files for different situations (ALWS.FNT, FACE.FNT, MGMES.FNT). I will look if it has a VWF routine, otherwise I will write one based on the 16x16 routine.

- The textbox is no longer a sprite, now it's just vdp2 drawings, and the devs used NBG2 to display textbox and NBG3 to display text, way more organized.
I’m so excited for this brother! Keep up the amazing work you are doing.
 
Great. Expecting the same amazing work you did with ToD. Any chances you do a version for the Saroo enhanced hack?
 
Hi.
Just passing by to leave a quick update. There hasn't been any real progress because I was on vacation.
Anyway, here are the things I found last week:

- Two routines that draw text, one for this introduction before the first stage, and the other is used for the text box in the first stage. I have also converted these routines to draw 8x16 text and to use one byte per character.
- Table to increase the text box size.
D&DSoM.png
D&DSoM2.png


Unfortunately, this 'insert your name' screen below is messed up. The draw routine writes the screen vertically, and all of the the characters are like one big image on VDP2. So, there aren't even 16x16 tiles to work with. I can't even see any of this shit on Crystal Tile.
D&DSoM3.png

But the real issue here is these custom, runic-like characters. If I end up creating new tiles, I’ll probably also have to write a new routine to draw the tiles separately. But that’s a problem for another day.

Until the next update.
Great. Expecting the same amazing work you did with ToD. Any chances you do a version for the Saroo enhanced hack?

What is this hack for and how does it work?
 
Hi.
This will probably be the last update of the year.
This screen is a draft; the final version will have the runic alphabet and a rework of everything.
D&DSoM4.png



I had some setbacks while I was working on this screen. Firstly, I did a memory transfer in the emulator to check the tiles, but they remained the same.
It wasn't difficult to notice that the game was rewriting the memory located in CS0, where the data file is located.
So I discovered that the game has some kind of checksum that prevents changes to the data during gameplay. I don't know if it rewrites all the extra RAM or parts of it, and I also don't know if it's in every transition because I haven't checked, but several data files go through this checksum. From what I've observed, the checksum sums all the bits of the files from beginning to end and saves the result, and during loading the routine sums the bits again and compares it with the saved result. If the result is different, you already know what happens.

Since memory transfer is very important so I don't have to restart the game every time, I bypassed the checksum and for now everything is working, at least I can perform the tests now. Btw, disabling the checksum "optimized" this loading by about 0.18s.

This "insert your name" screen gave me more trouble than the previous game, since these columns (and the "Please enter your name" and those buttons "space", "name", etc. ) are a single picture as far as I could see.
So, I took the Western characters that the game already had and remade the structure of this picture, basically now the characters are 16x16 tiles (well, basically, because the routine still writes almost all of NBG2, the difference is that now the tiles are separated and you can see and edit them easily in any tile editor).
I also made a table with the new "pointers", actually the table represents the position in words of each 8x8 tile of the whole picture, for example: the character A = 0010 0012 left half and 0011 0013 is the right half, and each half of a 16x16 character has a spacing of 21 words in the table.
With the spacing that the image has, it is possible to draw tiles up to 24x24.

It optimizes the game to use the extended ram feature so the loadings are like 2 secs long making the game actually playable on Saturn.
My patch will probably work with any hack, including Saroo, but I'm not going to guarantee it. SoM was really impressive with this hack, actually this Saturn port is shit like most other Saturn ports, but that doesn't make this hack any less impressive.
Btw, SoM has the potential to have its loading times optimized even without adding more RAM, but this needs further investigation.
Anyway, this translation is still going to take a long time.

Until the next update.
 
Back
Top