Hello,
I have an original NES cassette with Super Mario Bros on. I would like to modify the text at the end of 1-4. The text that says:
"Thank you Mario!
But out princess in in another castle!"
Is it possible to modify the text and still be able to play the game on the NES? And what is the best way to do that?
Thanks for helping a rookie out..
The cart has a ROM chip inside with the game code. ROM means "Read Only Memory". Its contents was burned in the factory and can't be rewritten, so you can't modify it.
The only way to change the contents is replacing the ROM chip by a compatible EPROM chip, which you can write (with some cheap equipment) from your PC. In such case, it would be a matter of patching a .NES file with the game and then burning the binaries to the EPROM, then solder the chip in the cartridge and you are set.
Thank you! That explains why I couldn't find a solution. I will have to re-think and change my search words. Thanks for pointing me in the right direction. Much appreciated.
One other consideration is that you specifically mentioned world 1-4 - if you really want to change that one only (and not 2-4/3-4/4-4/5-4/6-4/7-4 along with it), you're going to have a bit of trouble because the PRG ROM for Super Mario Bros doesn't have a whole lot of free space in which to fit new code or data (in fact, they had to resort to putting the titlescreen layout data in CHR ROM because there was no room left in the PRG space where they would've normally kept it).
If you only need 3 letters changed, you could do it with 3 game genie codes. 6 letters could be done by stacking a game genie on top of a game genie on top of the cartridge.
Thanks for your input!
I basically want to change the first sentences that are available in the game into a short message to surprise my friend who I am playing the game with. If I change everything after that that is fine as long as the first lines are changed correctly.
Is this yet another NES marriage proposal?
Haha, might be. Is it a common thing?
IIRC, the text in SMB is uncompressed, so you can open the game in a tile editor or emulator with a pattern table viewer and find out the indices of the letters that form the original text and look for that in the ROM using an hex editor. Once you find it, you can overwrite it with your custom text.
Most
hex editors default to the ASCII
character encoding, which puts in 0-9 in $30 through $39 and A-Z in $41 through $5A. They'll show garbage when you open
SMB because
SMB uses a different character encoding based on
base 36. This means 0-9 are at $00 through $09, and A-Z are at $0A through $23. Space is at $24 (decimal 36); the "Minus World" pipes take you to world 36-1, displayed as (space)-1.
Code:
0x: 0123456789ABCDEF
1x: GHIJKLMNOPQRSTUV
2x: WXYZ_
The hex editor Thingy introduced
TBL files to represent a custom character encoding, and other hex editors designed for ROM hacking support TBL files as well. Data Crystal has a
TBL file for the variant of base 36 in SMB. It also has a
partial list of where text is stored in the ROM (which unfortunately excludes the
BUT OUR message), as well as a
description of how it decides where on the screen to load each string.
To find the message you'll be hacking, load the ROM, load the TBL, and search for this hex string:
Code:
0B 1E 1D 24 18 1E 1B
B U T sp O U R