Skip to content

Tutorial: Translating "THE END... ?" text (3.X)

Shadow edited this page Sep 20, 2019 · 1 revision

Translating "THE END... ?" compressed text

The overall method for changing this compressed text is similar to the Export and Modify Compressed Graphics tutorial previous to this page.

However, the tileset is arranged in a particular fashion which will require you to flip and mirror certain tiles from the graphics.

Head over the Export and Modify Compressed Graphics page and download the required tools if you haven't already.

Let's start:



1. Decompressing the graphics.

First off, you need to get EXHAL/INHAL and follow the instructions of the programs to decompress the data bank in 0x0C2EE1. If you have an unheadered ROM, it should be 0x0C2CE1 instead. The file should be around 4 kB in size.


2. Viewing the graphics

Now that you have your EndGraphics.smc file, download Tile Molester and open such file in it. Go to View -> Codec -> 2bpp planar. You should end up with something like this:

Open graphics

Can you see the form of the letters? If not, don't worry, we are going to work our way to do so. :)


3. Decreasing the graphic's width

Use the "Decrease Width" option that the top of the image, it's the one with the arrow pointing to the left, until you get something similar to this in Tile Molester:

Aligning graphics

As you can see, we are slowly getting the letters aligned to each other. We are getting there...


4. Now here's the tricky part.

For some odd reason, the graphics for this compressed data have flipped and mirrored tiles between each other. We are going to have play a little bit with each tile... But not you, I already did that part for you. :P

If you use the Rectangle selection provided by TM, you will notice that such tool grabs a huge chunk of pixels, this a tile.

Chunk of pixels

We are only going to focus on the first 3x7 tiles of the graphics, the rest is better left untouched.


5. Tile Map for Flipping/Mirroring

I made a little Tile Map of the graphics so that you can see exactly how Tile Molester handles the tiles. We are going to use the "Flip" and the "Mirror" tools for this task, so I added the Flip and Mirror icons to the tiles that SHOULD be flipped or mirrored. The Flip icon is represented by the Vertical Arrows in the tile map, and the Mirror icon is represented by the Horizontal Arrows in the tile map.

Tile Flip/Mirror Map

NOTE: Please note that both the tile 2x4 and the tile 3x4 (the ones at the exact middle of the columns, and the 2nd and 3rd row tiles to avoid confusion) must be both flipped AND mirrored. Those are the only two tiles so far that must have both applied to them.


6. Presto!

You should now have a nice looking graphic file that you can edit at your extent! :D

This is the final result:

Human form

Be aware that the horizontal pixels at the beginning are the last part of the letter "D" from "END", followed by the little dots that end up in the question mark. So take that into consideration when you try to edit the graphics.


7. Wait, wasn't step 6 the last one?

Heck no, there is still a little trick remaining. Thanks to Starmen.net user josete2k, we can now work with the tiles in the way we left them!

We need to modify certain Hex values so that the ROM works with the tiles in the new ungarbled way we have edited them. For that, we need to find addresses 0x000480 and 0x000B80 by opening up the decompressed graphics SMC file in a HEX editor. This means that we should open up our EndGraphics.smc in HxD to find this:

Tiles IDs Flip byte

Here we have two things to note:

  • Green-square byte: Here you will find the Tile ID for each tile of the graphics we just modified. This is more or less how the Tile IDs are matched with the actual tile:

Flip byte

Pretty self explanatory. So take that into consideration if you want to change the order of the tiles down the road.

  • Red-square byte: This byte is the one that specifies exactly how the tile will be flipped. We have four possible bytes:

20 = Normal orientation (as we left them in the compressed graphics) 60 = Tile is flipped horizontally A0 = Tile is flipped vertically E0 = Tile is flipped 180º

Let's take the first row of bytes at 0x000480 as an example.

First we have [01 20]. The first byte 01 tells us exactly which tile is being used first, in this case it is the upper-left part of the T from "THE". The second byte 20 tells us the orientation that the tile will have. Since we have a 20, it means that the tile will be read as it is in the compressed graphics, without any mirroring.

The second pair of bytes is [02 60]. This means the second tile printed will be the upper part of the letter "H" from "THE" and will be flipped horizontally, which is told by the byte 60.

To avoid any possible issues, we are going to change all of the bytes within 0x000480 and 0x0004D0 which contain 60, A0 and E0 to 20. That way we are making sure that ALL the tils will be read as we left them accommodated in the compressed graphics.

The same will be done for the 60, A0 and E0 bytes found within the range of 0x000B80 and 0x000BD0.

You might have noticed that the bytes in 0x000B80 include tiles 10 and 11 (question mark tiles). What does this mean?

Well, basically, the game reads the data found at 0x000480 first, and after some seconds, the game will load up the data at 0x000B80, which is what makes the question mark appear. Consider this if you want to play around with making certain symbols or an inverted question mark appear. You can make an inverted question mark appear by adding tile ID 10 with a byte orientation of E0 so that's it's flipped by 180º (useful for Spanish translations).

That byte should be added right before the [01 20] pair of bytes at 0x000B80 (replacing the [00 20] before [01 20]) ending up like [10 E0 01 20]. And the same should be done with the bytes at 0x000BC0, except this should be with tile ID 11 instead of 10, ending up with [11 E0 08 20].

If you have issues with size limitation when compressing the file back into the game, don't worry. Simply create a new .SMC file with ONLY the compressed data into it, and apply the method of adding the whole SMC file of the compressed graphics into a CCS file inside brackets [] and adding the pointer with CCS commands to use the data that we just added.



That's it!

That pretty much covers the whole editing of the END graphics. It was pretty rough, indeed, but once you get the letters and tiles lined up and correctly switched, it's quite easy.

Clone this wiki locally