Romhacking.net

Romhacking => Newcomer's Board => Topic started by: bluecrush on December 11, 2015, 01:37:39 am

Title: SMB3 Text Editor
Post by: bluecrush on December 11, 2015, 01:37:39 am
Hey guys, I've recently been trying to use Dcahrakos' SMB3 Text Editor (http://www.romhacking.net/utilities/281/) for a Mario hack I'm working on, however, only a handful of the text fields will save upon editing them. Searching around on google, on a couple of archived romhacking sites from years ago, it seems there was a version 1.6 released which resolved this bug. The links there are since dead, and the Utilities section here only has the original buggy 1.0 version.

I'm sure there are simple enough ways to get around this problem, but I thought I'd ask if anyone knew where to find this newer version before I try and learn something new.

Thanks!!
Title: Re: SMB3 Text Editor
Post by: Quick Curly on December 11, 2015, 10:15:05 am
Googie recently uploaded it (http://acmlm.kafuka.org/board/thread.php?pid=161609#161609) to the Board 2 uploader after someone else asked about it.

Download: smb3_te_v1.6.zip (http://acmlm.kafuka.org/uploader/get.php?id=4943)

He mentioned that it could be uploaded to Romhacking.net as well.

I remember back when I only just started working on SMB3 hacks and found that the SMB3 Text Editor didn't always save my attempted changes. I ended up editing the text in the FCEUXD (http://www.romhacking.net/utilities/255/) hex editor by referring to the text locations on Data Crystal (http://datacrystal.romhacking.net/wiki/Super_Mario_Bros._3:TBL), even though way back then, I didn't try to edit anything else directly.
Depending on your planned changes, you can modify the actual text pointers through the hex editor to make use of more room to expand some text (by either shortening other text to free up the space, or by changing the pointer to direct to some larger, unused area of free space). For example, here are the pointers and offsets for the Princess' individual letters by world:

Princess' individual letters:
0x36792-0x3680E (0x7D) - World 1
0x3680F-0x36875 (0x67) - World 2
0x36876-0x368F8 (0x83) - World 3
0x368F9-0x36978 (0x80) - World 4
0x36979-0x36A03 (0x8B) - World 5
0x36A04-0x36A96 (0x93) - World 6
0x36A97-0x36B0D (0x77) - World 7

Letter Pointers:
World 1 Letter --- 0x36784 - 0x36785 - 82 A7 ($A782) (0x36792)
World 2 Letter --- 0x36786 - 0x36787 - FF A7 ($A7FF) (0x3680F)
World 3 Letter --- 0x36788 - 0x36789 - 66 A8 ($A866) (0x36876)
World 4 Letter --- 0x3678A - 0x3678B - E9 A8 ($A8E9) (0x368F9)
World 5 Letter --- 0x3678C - 0x3678D - 69 A9 ($A969) (0x36979)
World 6 Letter --- 0x3678E - 0x3678F - F4 A9 ($A9F4) (0x36A04)
World 7 Letter --- 0x36790 - 0x36791 - 87 AA ($AA87) (0x36A97)

So, for instance, if I shortened the World 1 letter, I could make use of the unused space by putting it towards the other letters. Similarly, for other text strings, I could find the pointers for them, see if there's free space near the end of the same ROM bank (which there usually is, as most of the ROM banks in the game have multiple lines of "FF" bytes), and modify the pointers accordingly to look for text in a larger space to allow for longer text strings than what would normally be possible. However, in such a case, you also have to account for the sizes of the text boxes in the original game, as that would limit the number of characters that you can use as well.

If you have any additional questions, please feel free to ask. Best of luck. :)
Title: Re: SMB3 Text Editor
Post by: bluecrush on December 12, 2015, 02:23:47 am
Yep, that works perfectly. Thanks QC!