Trying to crack this in my SMB3 hack

GoogieToons

Adventurer
Verified Member
ShAtbjE.png


I'm trying to get nuke the 2 player option so when you pick Waluigi you play as him, like in Bio's SMB3 hack Bio World between Mario and Luigi.

Around 0x30CCD I change the bytes from A9 00 8D 46 07 8D 47 07 to A9 01 8D 26 07 EA EA EA, but when I do the changes I get this crazy bug. Here's a Youtube Video I posted last night, this hack has been haunting me for almost 20 years. If any of you fellas can please gimme a hand I'd really appreciate it, as soon as this can get fixed I can release it. I have the last working build with Wario and Waluigi text changes 1 player and 2 player act like the OG. I have a patch to see the bug, thanks fellas.
 
There are multiple versions of Super Mario Bros. 3. To make sure we're talking about the same version, please use this process to provide the hash info: Go to romhacking.net/hash and drag the original starting version of the Super Mario Bros. 3 NES file you are using into the "Load a ROM" spot. Once the results appear, click the copy button (the icon of two sheets of paper that is just to the right of the "Load a ROM" button) and paste the results in a message here.

Around 0x30CCD I change the bytes from A9 00 8D 46 07 8D 47 07 to A9 01 8D 26 07 EA EA EA
Can you give any more info about how you came up with this change?

...

I looked at the captainsouthbird Disassembly of Super Mario Bros. 3 that is on GitHub. It is for the version "Super Mario Bros. 3 (USA) (Rev 1)". The download includes the nesasm assembler.

A "listing file" shows every line of the assembly code in one file, and each line starts with a bank number and CPU address and the hex bytes of the assembled code. I figured out the following process to make a listing file from this disassembly:

1. At the top of the smb3.asm file, add the following line:
.list
(That's space dot list )​

2. In a Command Prompt window, change to the folder where the files are located and enter the following command:
nesasm -m -l 2 smb3.asm
This will generate a listing file called smb3.lst
(The -m option expands the macros. The code uses macros to create some shortcut fake instructions, BLT BGE BLS BGS ADD SUB NEG.
The -l 2 option generates the listing with every byte shown for .byte statements.)​

...

If you look in the smb3.asm file and search for .bank you'll find the start of the statements that map each of the 32 PRG ROM banks to a CPU address window. You can use this information to convert between NES file offsets (or PRG ROM addresses) and the bank and CPU address format. I can explain more about how to do this kind of conversion if you want.

...

Status: So far, I've figured out some changes that causes the "2 PLAYER GAME" main menu item to start a one-player Luigi game and will get Luigi to start on the right square, but you still have to use Controller 2 to control Luigi. And I can see various other code that updates things for both players in a 2-player game that probably needs to be changed so it always updates things for Luigi in a 1-player Luigi game, but I haven't done a complete search and tested changing everything like that yet.

I want to write up my findings so far, but first I want to make sure we're talking about the same version, and discuss how you came up with your change.

Also, you mentioned the Super Mario Bros. 3 hack Bio World. Have you looked at it to try to see how it does it? Maybe we can see if it might be doing something simpler.
 
What's up Bavi, you're good? My bad for the late reply.
I used the PRG0 version of the ROM for this hack, I was debugging and when I saw in the FCEUX hex editor and changed some bytes up and that's how that resulted. I also looked into Bio World late last night and the bytes are exactly the same, it's been years I played that hack.

If you're on Discord we can talk more about it if anything. Good looking out. (y)
 
Back
Top