Language…
12 users online: Batata Douce, DanMario24YT, DasFueller, Everest, Gamet2004, Gorry, Green, JezJitzu, LunarianNEET, Raychu2021, Rykon-V73, sinseiga - Guests: 266 - Bots: 311
Users: 64,795 (2,376 active)
Latest user: mathew

Patch Incompatibility: OW Speed + OW Music Help

I am attempting to use both the OW Speed and the OW Music patches but they seem to be incompatible with one another. First I patched the OW Speed, then the OW Music and my game works, but the speed of Mario is reverted to normal. If I patch them the other way around, the game crashes when the overworld loads. Looking at the code, it seems they both change data around the $048242 / $048246 addresses. So they are definitely incompatible with one another.

Does anyone know how I can utilize both patches simultaneously?
Since both patches hijack areas in the ROM that are super close to eachother ($048241, and $048242), you'll need to move one of them around. I'll go through with changing the OW Music one:

Look for this, and change
Code
org $048241
	autoclean JML MusicAll

to
Code
org $048246
	autoclean JML MusicAll
	NOP



Then in the MusicAll label change
Code
.return
	PHB		;restored code
	LDA #$04
	PHA : PLB
	LDX #$01
	JML $048246

to
Code
.return
	LDA.W $0DA6|!addr,x	;restore code
	AND.B #$20		;
	JML $04824B


All this should do is move the code to an address a little further down so that it doesn't overwrite the OW Speed's.
Thanks for the reply! I tried what you said above, patching to an entirely fresh ROM (with only the newest AMK patched for song reasons) but the edits throw me an error about !addr not being found.

Looking at other patches, it seems this is an SA-1 check? I'm not using SA-1 so I tried a few different things:
Removing the !addr [with and without ,x], changing it to !base1 or !base2 [with and without ,x] will all patch successfully, but the overworld freezes when it loads. I used !base1 / !base2 because it seems that is what this patch uses for SA-1 check. It doesn't crash, as the graphics remain fine and the music plays, but Mario and the animations are frozen in place (which is progress from before when it would crash entirely).

To be clear, I patched AMK first. Tested ROM. It worked.
Then patched OW Music with the edits you suggested, and the overworld froze.

I also noticed that the OW Speed patch uses address $048246. It uses that address near the bottom of the code, as it JML's to it:
Code
.return
	LDX #$01			; \ Restore the hijacked code and return
	JML $048246			; /


I couldn't find any documentation in the ROM/RAM map for that address so I don't know what it's used for (assuming empty). Do you have any other ideas that could make these patches compatible?

I appreciate your assistance Meirdent.
Change the org $048242 in the speed patch to org $048241, else an invalid opcode will execute causing either a freeze or a crash.

Also change:
Code
ApplySpeed:
	LDA #$04
	PHA
	PLB

to:
Code
ApplySpeed:
	PEA $0004
	PLB
Not any code help, just answering the implicit question:

Originally posted by hash
I also noticed that the OW Speed patch uses address $048246. It uses that address near the bottom of the code, as it JML's to it:

The ROM Map only lists addresses that are somewhat notable, either because they're the start of a routine or they contain some value people might want to change. Most addresses (including $008246) aren't in the ROM Map because there's nothing important there. In this case, it's an inconspicuous line of code from the routine starting at $008241. The patch JMLs to it as if to say "okay, I'm done hijacking that routine, continue the normal routine from that point on."


 
Originally posted by Erik
*snip*

Thanks Erik, this modification works fine and doesn't seem to cause any issues.

I appreciate everyone's help, but the modifications suggested for the OW Music patch don't seem to work (game freezes on main overworld). Asar throws an error about !addr not being found, so I changed it to !base2 as that's what the patch seems to use instead. I have tried different combinations of the default patches, and the suggested edits as well as different patching order. Either I get a game crash, game freeze, or the game loads but the speed is reduced to normal. Anyone have any other ideas?
Perhaps there is an easier way than the speed patch to double Mario's speed? I have a rather large overworld, and increased speed really helps with wait times.