Super Mario Bros. autostart!

This is an archive of a topic from NESdev BBS, taken in mid-October 2019 before a server upgrade.
View original topic
Super Mario Bros. autostart!
by on (#79934)
I'd like to modify two Super Mario Bros. cart so they autostart...

When pressing reset, the game start in 1 player mode automaticly.

Why? Because every year we hold a competition in Super Mario Bros. where people speedrun against each other. Modifying two carts with this, would make it easier to start the two NES systems at the same time.

Would it be possible? The version I'd like to hack is the European (PAL-B) version.

Eproms and stuff is no problem, but the hacking of the rom would be really nice if someone could help me with!

by on (#79935)
Well, trap the program that reads the controller, and then find the program that puts the main menu up on the screen. Then on the menu, trap the variable from the controller read, and slow it down and press START and then see where it goes and read through the code.

I believe there's also a detailed disassembly of SMB out there, maybe look there and you can do it better and neater. Good luck. I'm not much into hacking.
Re: Super Mario Bros. autostart!
by on (#79936)
Kreese wrote:
I'd like to modify two Super Mario Bros. cart so they autostart...

When pressing reset, the game start in 1 player mode automaticly.

Why? Because every year we hold a competition in Super Mario Bros. where people speedrun against each other. Modifying two carts with this, would make it easier to start the two NES systems at the same time.

Would it be possible? The version I'd like to hack is the European (PAL-B) version.

Eproms and stuff is no problem, but the hacking of the rom would be really nice if someone could help me with!


Fully possible.

by on (#79938)
I just did this by changing the bytes at $824D (CPU addressing, the ROM offset would be $025D I think) to $A9, $00 (LDA #$00). Obviously I can't post a ROM, but you can surely do this modification in a few seconds in FCEUX or even an hex editor.

by on (#79946)
I used a Hexeditor and changed:
$025D from C9 to A9
$025E from 10 to 00

in the rom file (Super Mario Bros. (E) (REVA) [!].nes)

Worked fine i think! Have to try it on real carts. Thanks alot!

by on (#79950)
PAL Super Mario Bros is an abomination to mankind and everything good about Nintendo.

Seriously, it's a terrible conversion of SMB1 for the Europe region. The music plays like you're always out of time, and the game physics are off. At least Nintendo bothered to correct the music pitch, but couldn't bother to do the same for the sound effects.

That said, I think the file "Super Mario Bros. (E) (REVA) [!].nes" is probably a fake, it's likely a graphical hack of SMB1 which has nothing to do with the actual European version.

by on (#80011)
Great that it was possible and thanks for the help!

Is it also possible to change the sprite or color so that one of the carts plays as Luigi?

by on (#80148)
Great idea Pinge! Using Luigi's sprite colors on Mario would do the trick. It should be possible. Hacking the name of Mario and change to "Luigi" should I manage to do on my own...

The colors would be really nice if someone helped me/us with.

http://www.pimpmynintendo.com/images/su ... -sheet.png

Would look really cool with two NES, side by side, Mario vs. Lugi! Feels like the ultimate speed run competition.

by on (#80164)
Hacking palettes in SMB is super easy. You can do it with just an hex editor. Just open the game in an emulator that allows you to view the palette, then take note of the 3 non-transparent colors (i.e. skip the first color, which is transparent for sprites) of the palette you want to change.

Search for those 3 bytes using an hex editor and change them to whatever you want. Just be sure to back up the ROM before changing bytes, just in case the 3-byte string you are replacing happens to appear more than once in the ROM. If you make the change but the colors stay the same, restore your back up and try modifying the next match. Whenever the changes don't have the desired effect, restore the backup!