ladyabaxa: (Delacroix)
As I discovered while testing out BNC's party select hack the "you have all died" message for the overworld is glitchy in the english version. It looks like this:
Game Over Man! (default version)

This is caused by a simple error/oversight in the way the text was programmed. In hex it is written as follows (starting at offset 0x2aa38e).

03 40
39 52 00 39 46 3c 00 40 41 4b 00 03 47 45 48 39
46 41 47 46 4b fc 40 39 4e 3d 00 48 3d 4a 41 4b
40 3d 3c 53 67 00 13 14 01 14 15 13 fb fb 67 00
0f 12 04 05 12 ff

There are several special characters in what is supposed to be two text blocks. FC is the byte for a line break and sits between the words 'companions' and 'have.' 67 tells the game to draw an empty cursor box and although it isn't needed to make menus work it does make them look nice. FF is the null/terminator tag that tells the engine the text string ends there. (There's also FB which adds space between lines and is used in menus to keep things looking orderly and FD which clears any previous content but those aren't important for this fix.) Looking at the strings in hex it is obvious what the problem is - there is no terminator telling the game to stop printing text after 'perished' so it keeps going until it finds one and ends up spitting out things intended for a menu. The following menu in fact!

standard status/order select box

I know absolutely nothing about finding or editing pointers so, seeing as there was no space between the two strings, I instead shortened the message to what is shown in the screenshot below.

Total Party Kill (fixed)

In hex this is, again at offset 0x2aa38e:

14 40
3d 00 48 39 4a 4c 51 00 40 39 4b 00 48 3d 4a 41
4b 40 3d 3c 53 ff -- followed by 14 bytes that are just 00 to fill in space

Just as an extra carrot bonus for this post there's a string rarely seen by players because it only pops up when a character is about to die from poison damage.  Here ya go.

Poison damage message

I also created a second fix for some bad grammar. This is another instance where I opted to shorten a string because otherwise I'd not only have to figure out pointers but I'd have to redraw an entire table to make space. (The table thing isn't terribly hard but path of least resistance and all that.)

The original string at 0x2aa639 reads "Button settings has been changed."
fd 02 4d 4c 4c 47 46 00
4b 3d 4c 4c 41 46 4b fc 40 39 4b 00 3a 3d 3d
46 00 3b 40 39 46 3f 3d 3c 53 ff

The new string reads "New configuration set."
fd 0e 3d 4f 00 3b 47 46
3e 41 3f 4d 4a 39 4c 41 47 46 00 4b 3d 4c 53 ff
-- followed by 10 bytes of 00 to fill in space
◾ Tags: