Romhacking.net

Romhacking => ROM Hacking Discussion => Topic started by: digital disaster on May 07, 2020, 05:09:31 am

Title: multiple NES and SNES hacks applied to a single Rom image.
Post by: digital disaster on May 07, 2020, 05:09:31 am
Hi guys,

new guy here and doing some poking around. I had a question about applying multiple hacks to a single rom in the NES and SNES formats. 

I see a lot of quality of life improvements for some games like faster text speed and some item swapping stuff hacks so that you don't have to constantly go into a menu to change items and even some ideas implemented from other games like having an item box in super mario world but that feature is hacked into super mario brothers 3.

so heres my question?

can i apply multiple hacks to a single rom and will it still work? and if so do i just apply 1 patch after the other untill im done or is there a more involved process involved. 

i'm intrested in applying mostly all of the metal gear patches to the NES version but wasn't sure about the process as there was nothing mentioned in the FAQ.

thanks a lot for any responses.
Title: Re: multiple NES and SNES hacks applied to a single Rom image.
Post by: Cyneprepou4uk on May 07, 2020, 10:32:12 am
That depends on what exactly these patches change. The bigger changes the higher chance of conflicts between them. So try and see if it works in your case.

It is possible to get all wanted changes in a single rom without bugs if you know how to hack this platform.
Title: Re: multiple NES and SNES hacks applied to a single Rom image.
Post by: Nosuch on May 07, 2020, 04:39:16 pm
Generally speaking, you'll probably have better luck with multiple patches on an NES game. I know I've done that a time or two myself but, again, it depends on what's been changed in each patch.

SNES seems to be more finicky in general. Sometimes I have trouble getting even one patch working.
Title: Re: multiple NES and SNES hacks applied to a single Rom image.
Post by: Jorpho on May 07, 2020, 05:47:40 pm
SNES seems to be more finicky in general. Sometimes I have trouble getting even one patch working.
Some SNES patches are for ROMS with headers, and some are not. That pretty much covers most problems.
Title: Re: multiple NES and SNES hacks applied to a single Rom image.
Post by: Nosuch on May 08, 2020, 11:30:28 am
That was what I meant with them being finicky but thanks for clarifying.
Title: Re: multiple NES and SNES hacks applied to a single Rom image.
Post by: iridium_ionizer on May 15, 2020, 02:59:47 am
I applied about TEN patches to the Final Fantasy II v1.1 (USA) rom for snes. All but the last patches were for very small game mechanics fixes. Before I started patching them I separated them into patches for the headered and unheadered roms. Then I used tush.exe to add or remove the header as necessary before applying the series of .ips and .bps patches.

There were a few that I knew would not work on my desired version of the rom (v1.1 USA) as specified in the patch notes. For those I was able to hack a few bytes in hexcode only because the patch author, Phoenix Hacks, specified where to do so in the readme.txt file. I saved the most drastic hacks, for the GUI, controls, etc. for last. When I ran the rom everything seemed to work. As of now, I have only played through the first leg of the game, but so far the game has not crashed.

For nes roms its a little easier, but its best to make multiple copies of the rom file, and then experiment with different combinations to see what works.
Title: Re: multiple NES and SNES hacks applied to a single Rom image.
Post by: FAST6191 on May 16, 2020, 10:07:33 am
It looks mostly resolved but I will do the usual things to think about for this sort of thing.

There are two classes of problem you are likely to run into here

1) Overwriting the same thing.
This can be either in the original game (two things alter the same sprite and you either get the last applied patch or a mishmash of both edits), or both sets of hackers thought "ooh that nice blank space would be perfect for my additional data".
There are tools that will detect things here (though they might not be header aware), however there are valid reasons to overwrite (if a translation changes say a font then another hacker might decide that font is ugly and changes for another, or they fix a translation if some terms or phrasing is not to their liking).

2) Pointers changing where something is.
Pointers well point towards parts of the ROM and change where things are found. For an analogy say you have two rooms (right and left). Your stuff is in the right room and you can arrange it all most magnificently, however if someone changes the guide post so everybody goes to the left then you can arrange stuff in the right hand room until the end of time and nobody will see it. The collision checking tools mentioned above might not even detect a potential problem as there might well be no collision.

This is quite common on later systems, not sure how common it will be on older stuff where there is less change of a few hundred kilo (or even mega) bytes of blank space available for use but I quite expect to see it somewhere in it all.
This gets a bit more fun still on later systems where files commonly get shuffled around within themselves and might have the same sub file patched more than once but should not apply to the NES and SNES.


---

Resolving this sort of thing will typically require some measure of hacking skill, however not necessarily the same level of skill that might have been needed to make the hack if you can find other blank areas and pointers and rearrange data accordingly (and compare different hacks to see if you can pick and choose aspects you want if a hack does multiple things at once).
The both picking the same "blank" spot for additional data might be laziness (or ease of hacking) as well -- if on the GBA (every ROM can be expanded to 32 megabytes trivially, most commercial ROMS are 16, 8 or less megabytes) I might well not be bothered to repoint all the text in a Japanese translation (English translations tending to be larger than the Japanese original, or maybe I still want the original text there while I am translating it to still allow it to be played during translation) only to ultimately end up using the extra space if I can just stick it all at the end of the original data. You now wanting to apply multiple hacks might then have to do what I could not be bothered to do and overwrite the Japanese text and sort all the pointers there instead.
It might also be a matter of applying them in a proper order which can be done by someone with no hacking skill and just a bit of time on their hands to see what works, or maybe reading the readmes if they are designed to stack.

If you have variability in patches that want headers and those that don't it might be easier to just apply all the patches to their relevant versions, chop off all the headers and make a new set of patches you know don't need headers. Theoretically for something simple like IPS you could probably also alter the patches; IPS is little other than a list of destination and payload, the destination then being plus or minus a fixed value depending upon whether you are going to or from the patch expecting a headered ROM.