Language…
14 users online:  Anorakun,  Erik, Golden Yoshi, h.carrell, Hot Sauce, IsaacBros94, Isikoro, LightAligns, luukzmithv 2, NewPointless,  Ringo, TheRealCatsup, Vash the fairytail, Wry Bones - Guests: 130 - Bots: 108
Users: 68,815 (2,341 active)
Latest user: aijaramei

Multiple patches?

Link Thread Closed
There are several patches I might like to use. The problem is, I've heard that in most cases, using more than one patch will mess up the ROM, and most patches can only be used on a clean ROM. These are the patches I might use:

Fade Fix (for the background palette)
Overworld Event Crap Fix 1.1
Dynamic sprite patch (dsx.asm, or the "smw patched with dsx" IPS patch)
Health bar patch
Status bar exits patch
Ty's Screen-Scrolling Pipes
FastROM patch
"No sprite tile limits" patch
All-second timer lift patch
All switch blocks have powerups patch
Item box graphics fix patch

I'm not going to bother with the Classic Piranha Plant fix patches. The custom sprite piranha plants are easier to use anyway.

So out of this list:

1) Which of these patches can safely be used together, and
2) Which of them can safely be used on a modified ROM?

So far, I've tried out three of them--sprite tile limits, timer lifts, and switch blocks--on two copies of my ROM, which already has ExGFX and custom sprites inserted but no custom music. (I tried the last two on the same ROM.) They all glitched up the game in some way, possibly because my ROM wasn't clean. Most importantly, though, I need to know which of them I can use together. I don't want to choose between, for example, bad background palettes and a normal overworld vs. normal background palettes and a glitchy overworld, or sprite memory errors but less slowdown and no memory errors but more slowdown.



----------------

I'm working on a hack! Check it out here. Progress: 64/95 levels.
It was probably the No More Sprite Tile Limits patch. That one always glitches up for me.
Somebody mentioned something about finding free space, but I don't know how to do that. I also don't know how IPS vs. xkas affects things.

----------------

I'm working on a hack! Check it out here. Progress: 64/95 levels.
Any and all xkas patches can be used together, as long as they don't modify the same area of coding (conflicting patches) and you give them each the necessary space.

Out of experience, the FastROM patch is incompatible with plenty of other IPS patches. Also, I wouldn't suggest using the OW crap fix unless the problem actually appears, and even then I've heard that it doesn't actually do anything.
Well, in my case, the overworld junk could just be a product of a corrupted ROM. I guess on my current hack, before I port all the stuff over, the only patches I'd be applying are fade fix, dynamic sprite (I'll have to find the xkas version of that one), tile limits, item box, switch blocks, and timer lifts patches. I hope those can all be used together. The screen-scrolling pipes one sounds like a huge pain in the butt, so I probably won't use that one right now. Well, thanks for helping me out.

----------------

I'm working on a hack! Check it out here. Progress: 64/95 levels.
HyperHacker
Applying multiple patches is safe if done correctly.

ALWAYS MAKE BACKUP COPIES BEFORE CHANGING OR INSTALLING ANYTHING.

I use the term "LM-ified" ROM here to mean a ROM obtained by the following process: Start with a clean ROM. Open the ROM in LM, and save the level it starts at (105) without changing anything. (IIRC, the save button on the toolbar will be disabled, but you can still use the menu option.)
When this is done you'll have a 1MB ROM that contains most of LM's ASM hacks, but is identical to the original in gameplay.

With IPS patches:
1) Start with an LM-ified ROM.
2) Apply each patch, one at a time. Test after each one to ensure that the game still works and the patch is functioning properly. If so, make a copy of the ROM. If not, revert to the previous copy.
3) Once all patches are installed, proceed editing as normal.

If at any time a patch makes the game stop working, make another copy of the clean ROM, repeat step 1, and apply only that patch, to ensure it works. If so, it's conflicting with another patch; in this case, continue applying the remaining patches, and then follow the steps for patching a hack in progress.

IPS patching a hack in progress:
1) Start with an LM-ified ROM.
2) Apply the patch.
3) Use a tool such as IPSelect or a hex editor to examine the changes made by the patch.
(Alternately, you can examine the IPS file directly. In this case you can skip the first 2 steps.)
4) If you're lucky, the patch will simply install a hook that jumps using a 3-byte pointer to the rest of its code. In this case the best solution is to convert it to an xkas patch, apply that as normal, and submit it to SMWC. If you aren't able to do this, you should at least be able to change the address the hook jumps to and move the code, but beware of other absolute jumps within the code that need to be changed. (These are rare, as there's no need for them in most hacks.)
If you find that two patches attempt to hook in the same place, the steps are the same as for conflicting hooks in xkas patches (see below); you will probably want to convert the patch to xkas.
5) If you're not, you'll find the patch only modifies existing code, or uses a 2-byte pointer. In this case you'll need some ASM knowledge to figure out how to fix it.



Applying multiple xkas patches is easier. For the most part the process is as follows:
1) Find free space in your ROM.
2) I recommend putting a 64K RATS tag at this location (assuming the space is at least 64K), and inserting all the patches here. This prevents other data from getting corrupted if you later add more code to a patch, helps keep patches organized if you install more patches after editing, and protects some patches that don't install their own RATS tags.
3) Point the patch to this free space and install it.
4) Look at the area the patch was installed to in a hex editor to determine the next free address. If it inserts a RATS tag, you can use its size to determine this. Otherwise, look for the last non-zero byte, and then look at the patch's code to ensure it doesn't end with a zero byte.
5) Repeat steps 3-5 for remaining patches.

It's a good idea to keep a list of which patches were installed to which addresses. This is very helpful if you ever add code to a patch later on; you'll know which ones come after it and need to be relocated.


If you have two xkas patches using the same hook (such as the knockback patch and health bar patch), you can usually simply chain them together.
1) Find the instruction in the first patch that returns to the hooked location.
2) Replace this with JML $AAAAAA and install the patch.
3) Find the return instruction in the second patch, and ensure it's compatible with the first patch's hook. (e.g. if the first patch uses JSL to hook, ensure the second uses RTL to return.)
4) Find the hook in the second patch and comment it out. Install the patch.
5) Look at the hex to determine the SNES address that the second patch's routine ended up at (i.e. the address its hook would have jumped to.)
6) Find the JML you added in step 2 (look for AA AA AA in the hex) and change it to jump to this address.

ALWAYS MAKE BACKUP COPIES BEFORE CHANGING OR INSTALLING ANYTHING. And of course when you're done installing patches, test to make sure everything is working as expected. Don't forget to repeat the appropriate steps if you ever need to relocate or reinstall a patch.
My projects - ROM hacks, Gameshark codes, homebrew, useful apps, online 65816 disassembler
SCAM: HomebreWare and Wiiunlocker
Generation over 9000: The first time you see this, put a meme in your signature.
HyperHacker: Um, not to sound noobish, but I don't know what most of your terminology even means. I don't know about hooking, RATS tags, or how to find free space.

Well, I applied five xkas patches (switch blocks, timer lifts, sprite tile limits, dsx, fade fix) to the ROM, and they seemed to work okay. The only problem I had was, when I opened the ROM in Lunar Magic for the first time, it said something about a bad checksum. Then when I extracted ExGFX, once I bypassed SP3, all my graphics glitched up. (Probably because I forgot to extract regular GFX first.) The weird thing is, when I tested the ROM in ZSNES, everything worked fine. All the patches did what they were supposed to, or at least the ones I could see the effects of. In fact, once I went back to Lunar Magic, the glitched graphics were fixed as well. I'm certainly not complaining, since things seemed to work out pretty well, but that bad checksum warning still scares me a bit...Any suggestions?


----------------

I'm working on a hack! Check it out here. Progress: 64/95 levels.
HyperHacker
You can ignore the warning, it just tells you the ROM was modified by something other than LM.
My projects - ROM hacks, Gameshark codes, homebrew, useful apps, online 65816 disassembler
SCAM: HomebreWare and Wiiunlocker
Generation over 9000: The first time you see this, put a meme in your signature.
I HATE ANIME!!!!!!!! IT IS G** P***!!!!!!!!!!!!!!!!!!!!!!!!! 😡😡😡😡😡😡😡😡😡😡😡😡😡😡😡😡😡😡
Originally posted by Buddyman_Gaming5619
I HATE ANIME!!!!!!!! IT IS G** P***!!!!!!!!!!!!!!!!!!!!!!!!! 😡😡😡😡😡😡😡😡😡😡😡😡😡😡😡😡😡😡

Do not bump old threads with completely unrelated content, that is spam and goes against our Site Rules.

Link Thread Closed