News: 11 March 2016 - Forum Rules
Current Moderators - DarkSol, KingMike, MathOnNapkins, Azkadellia, Danke

Author Topic: SMB3 Text Editor  (Read 1719 times)

bluecrush

  • Jr. Member
  • **
  • Posts: 32
    • View Profile
SMB3 Text Editor
« on: December 11, 2015, 01:37:39 am »
Hey guys, I've recently been trying to use Dcahrakos' SMB3 Text Editor 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!!

Quick Curly

  • Full Member
  • ***
  • Posts: 118
    • View Profile
Re: SMB3 Text Editor
« Reply #1 on: December 11, 2015, 10:15:05 am »
Googie recently uploaded it to the Board 2 uploader after someone else asked about it.

Download: smb3_te_v1.6.zip

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 hex editor by referring to the text locations on Data Crystal, 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. :)

bluecrush

  • Jr. Member
  • **
  • Posts: 32
    • View Profile
Re: SMB3 Text Editor
« Reply #2 on: December 12, 2015, 02:23:47 am »
Yep, that works perfectly. Thanks QC!