Convert IPS patch for (J) release to (E) possible?

Are you new to 6502, NES, or even programming in general? Post any of your questions here. Remember - the only dumb question is the question that remains unasked.

Moderator: Moderators

User avatar
jpx72
Posts: 178
Joined: Tue Sep 28, 2010 3:27 am
Location: Slovakia
Contact:

Post by jpx72 » Thu Dec 22, 2011 6:08 am

tokumaru wrote:Isn't Megaman 3 (E) the one with lots of bad screen splitting? Like, with parts that jump like crazy?
I don't remember anything like that when I played it.

User avatar
Kasumi
Posts: 1292
Joined: Wed Apr 02, 2008 2:09 pm

Post by Kasumi » Thu Dec 22, 2011 7:25 am

He's talking about what can be seen at 44:02-44:16 of this video:
http://www.archive.org/details/MegaMan3_eu_SS_4508

User avatar
Bregalad
Posts: 7993
Joined: Fri Nov 12, 2004 2:49 pm
Location: Chexbres, VD, Switzerland

Post by Bregalad » Thu Dec 22, 2011 10:24 am

Yes there is crazy buggy screen split during the last boss, but I'm pretty sure those were fixed in the REV-A version of the game.
I think the common Mega Man 3 (E) rom floating arround comes from the (PRG1) / REV-A version of the game, but the cart I have is a (PRG0) game with the bug.

Also, if you play Mega Man 6 (U) on a PAL NES, there will be several bugs, such as the sun in Tomahawk Man's stage not staying in place as it's supposed to.
Useless, lumbering half-wits don't scare us.

User avatar
jpx72
Posts: 178
Joined: Tue Sep 28, 2010 3:27 am
Location: Slovakia
Contact:

Post by jpx72 » Tue Jan 03, 2012 3:32 am

The Megaman 2 MMC3 hack Kasumi did works perfectly. Any chance of making the Megaman 1 in the near future too?
...bump

User avatar
Kasumi
Posts: 1292
Joined: Wed Apr 02, 2008 2:09 pm

Post by Kasumi » Tue Jan 03, 2012 4:18 pm

If that's to me, probably not anytime soon like I said earlier. The stars were aligned perfectly for you when I ported the patch. I had nothing to do, was frustrated with my game but still wanted to code, and couldn't sleep.

It's not hard, just time consuming. Detailed instructions in case anyone else feels like trying:

Compare patched jp rom to unpatched jp rom. Find what was changed. I used a program for this. Alternatively, just learn the IPS file format which will tell you exactly what was changed and where.

Say this string of bytes at $0100

Code: Select all

$40 $50 $30 $51 $80 $87;(not real code obviously)
was changed to this

Code: Select all

$30 $80 $80 $51 $80 $87;(Not real code)
You search for that EXACT unchanged string in the Megaman Pal rom. (Make sure to put enough of the byte stream that there is exactly one result. Also, don't worry if it's in a slightly different location.) If it is identical for all the bytes that were changed in the jp rom, change those bytes to the ones in the patched jp rom. If you cannot find an identical string in the PAL rom, you'll need to do the reset vector update and compare debug logging as described below.

Do this for all changes made by the patch.

Then run the patched jp rom in Nintendulator's debugger. Step, and reset. The first address is the reset vector. Search for the byte stream starting there.

Then try to find that byte stream it in the PAL rom. Replace the reset vector's address to the address of that byte stream.

If all goes well, it'll just work. If not, run the patched JP rom in PAL mode. Run the PAL rom in PAL mode. Log both from reset for around two frames.

Compare the debug output. The code run should be more or less identical. If the patched PAL rom, ends up someplace with a lot of breaks, look at the patched jp rom's output. Look for what should have happened. Search for the byte stream where it should have ended up. Fix the address in the PAL rom, or fix what it was supposed to do right before.

I don't remember ever having to do that for the MM2 rom, but in case you need it, it's there.

User avatar
Kasumi
Posts: 1292
Joined: Wed Apr 02, 2008 2:09 pm

Post by Kasumi » Sun Jan 22, 2012 8:06 pm

Happy New Year!

Here's Megaman (E) to MMC3: http://www.mediafire.com/?3jr4g1rxrbvecav

Test this one VERY thoroughly. There were some bytes changed from the original Rockman rom in the patch where I could not find the corresponding bytes in the (E) rom. So I didn't make those changes at all. It seems to work fine, but I have done very little testing.

Should you encounter a bug/crash, what would be really helpful is a Nintendulator movie file that does all the necessary actions to cause the crash. Then I can probably find those bytes in the (E) rom, and hopefully it will work then or I'll be stumped.

User avatar
jpx72
Posts: 178
Joined: Tue Sep 28, 2010 3:27 am
Location: Slovakia
Contact:

Post by jpx72 » Mon Jan 23, 2012 10:03 am

That's a wonderfull New Year's gift! THANK YOU! I already started testing the Rom and I'll report back immediately after I encounter any weird behavior!
Thank you so much for your work!

Post Reply