Banner
Views: 931,455,007
Time:
16 users online: BUGFlower99, ChompBro,  Deeke, gorpo_c, gui, Hammer bros,  icrawfish, KnusperBKN, Koopster, Marcozzo Daro, Mediocre Espurr, nanec, NINTENLUIGI, ocked, RichardDS90, Schlafkopf - Guests: 83 - Bots: 266 Users: 52,006 (2,082 active)
Latest: asso
Tip: Unless you've disabled the bonus game, don't use a goal tape in a vertical level. The bonus game won't appear if a player happens to reach 100 bonus stars there.
Not logged in.
Patching SM64 hacks
Forum Index - Non-SMW Hacking - Super Mario 64 Hacking - ASM & Data Repository - Patching SM64 hacks
Pages: « 1 2 3 4 5 » Link
beat seems rather terrible, to be honest. I tried creating a delta .bps for "The Missing Stars". Not only did it take several minutes to create, but the compressed size of the patch was actually larger than the non-delta .bps. I also tried creating a patch with Xdelta3 -9, and it was incredibly faster (only a few seconds), the patch was also significantly smaller and compressed better.

the_missing_stars_v1.1.bps -> 7.44 MB
the_missing_stars_v1.1.bps.zip -> 2.81 MB
the_missing_stars_v1.1.delta.bps -> 3.57 MB
the_missing_stars_v1.1.delta.bps.zip -> 3.18 MB
the_missing_stars_v1.1.xdelta -> 2.84 MB
the_missing_stars_v1.1.xdelta.zip -> 2.38 MB

None of them really seem to compare to a patch made against a pre-expanded file, though, so maybe what we really need is a utility that both expands and patches in a single swoop.
The delta creation speed is a known problem that will be fixed eventually, but you only make a patch once so it's not the end of the world. Delta patch application is lightning fast.

As for compressibility, it depends on what the input is.
Linear will beat delta post-compression if the data is easily compressible and little to no insert/deletes have been done in the middle of the file. This is because ZIP/7z/etc are better at compressing data than BPS, which is essentially LZSS (fancier RLE.)

Mystic Ark (J) -> Mystic Ark (U)
bps: 252,938; bps.7z: 165,761
Xdelta3: 342,946; Xdelta3 -9: 219,223

bsnes v079 -> bsnes v079
bps: 234,315; bps.7z: 187,818
Xdelta3: 357,276; Xdelta3 -9: 195,844

Xdelta -9 will probably win more, especially when you put it in an archive afterward. That is essentially three layers of compression (Xdelta layer, -9 layer, ZIP layer)

bps is meant to be a simple format that can be implemented in ~10 lines of code. To me, that's more important than having the absolute smallest patch possible. Try and implement your own Xdelta patcher to see what I mean. I wanted emulators to be able to add soft-patching support, so it had to be simple.

Anyway, you're welcome to use Xdelta as your preferred patcher if you want. If it doesn't work for you guys, that's understandable and cool with me. Thanks for trying it either way.
While it is true that patches only need to be created once, I feel that taking several minutes (where the program is completely unresponsive, possibly interpreted as a hang by some) is a bit of a deal breaker.

Obviously, the resulting size depends on the input data, I recognize that.

Anyway, what I should have said was that perhaps .bps is not the right choice.
Here's more results on bps v Xdelta with regards to size:
https://docs.google.com/spreadsheet/pub?hl=en_US&key=0Al7sXgOl0faodHJMdGowQ2tkSHRlZkZiekpOS0tndVE&hl=en_US&gid=1

I also just tried it against essentially 16MB of line noise (MAME UPX i386 vs i686); Xdelta -9 only wins by 1% on the absolute worst-case input. Both bps and Xdelta get bigger when compressed again. I'm actually kind of surprised you saw such a huge difference with your example, but outliers do happen.

Also, as you can see, the implementation makes a big difference, moreso than the file format itself. The implementation in bps can change while maintaining the same file format, so it's possible to make smaller BPS patches than my tool makes.

Anyway, yes. Delta patch creation speed is a huge problem. It basically takes ~15-30 minutes for a 16MB file. If it's a deal-breaker for you, re-evaluate it when we find a way to do O(n log n) comparisons to find the deltas. Or don't. So far, it's eluded both myself and Screwtape. It's a *very* hard problem.
It seems like the creation speed is the achilles heel here but I do feel it is important to create a standard for SM64 patch's and to enforce that standard within the site as soon as possible.

PPF is at the end of the day much more compact so I still think we should be supporting it. I will be looking more into SM64 specific patching programs (where it would expand, patch and verify the ROM) then formats itself. Till then though I will be keeping .PPF the standard and updating the first post to include ShadowFan-X's clean ROM verifier and more clearer instructions.
Well, there's a limit to how efficient the 8MB -> 24MB+ patches can be anyways. The ROM extender doesn't just drop in empty bytes; it's actually decompressing data from the ROM, which adds several MB to the size of the ROM.
EDIT: note to self: learn some grammar you fucktard

So the best you can do (aside from the way it's currently done) is to either:
  • Make a custom patch applier that automatically extends the ROM.
  • Make a tool that re-compresses everything back into MIO0 files, preferably leaving as much original data intact as possible.
  • Wrap BPS patches in XZ files, possibly combined with better efficiency for beat. (The aforementioned uncompressed data I mentioned is only about 318KB inside an XZ file)

Personally, I believe the first option is much more feasible, but the second would be prettier, at least to the person applying the patches. The third? Well, it isn't really that much more convenient than any of the others. Assuming it is even just as convenient as any of the others.

--------------------
Perhaps it would be worth shooting VL-Tone a message on what exactly the SM64 Extender is doing so we can make a SM64 specific patcher. I almost vote for staying with .ppf over .bps, because that way, the new utility would be automatically compatible with already-existing patches.
Actually, it seems that the ROM extender isn't inserting data, it's putting it at the end of the ROM (kind of like SNES LoROM expansion). That would probably be why delta patching mode is giving atrocious results.

Anyways, assuming you start with an expanded SM64 ROM instead of a clean ROM, the .bps may actually be a bit smaller than the .ppf for the same hack (ie. Mario's Nightmare 64: 10.7MB for the .ppf, 8.73MB for the .bps). Starting with a clean ROM will add 6.81MB to the patch.

So yeah, making a custom patcher would be the best way to go. Also, it might be better to include a patch that extends the ROM rather than manually extending it the way the M64 ROM Extender does it (it takes quite a bit of time to decompress the MIO0 files). The 6.81MB extension patch is about 2.67MB when compressed, so it could probably be bundled with the executable.

There's some source code for applying PPF3 patches somewhere although I'm not sure of the licensing (haven't really checked it out yet). If it is GPL or public domain, then that would make it possible to combine it with beat to create a dual patcher, allowing the .ppf's to remain, but allowing .bpf's to be used in the future.

--------------------
Does anyone know of any good programmers that can help out in making a custom patcher program? I can't seem to find anyone myself, and I personally don't have the time, experience and knowledge to do something like this myself.

Also I've been trying different combinations and without going in Delta mode (which does my head in just how long it takes) it seems Extended > BPS does come up with the smallest patch size. Though at this moment I would probably stick with PPF's since it's still the format SM64 hacking community still identifies as it's default.

But yeah, at the moment I'm focusing on getting this custom patching program made since it feels like it will solve most patching relating problems so far.
I just downloaded Twisted Adventures and am getting the loop error others mentioned.

I followed these steps.

1. Expanded the ROM with the M64 ROM extender
2. Applied obj_import6.ppf to the ROM using PPF-O-Matic
3. Applied the Twisted Adventures ppf to the ROM
4. Opened PJ64
5. Changed the memory setting ti 8 MB instead of 4
6. Started up the ROM
7. Looping error.

I didn't get the ROM from stacked munchers by the way, got it from floating munchers. IT seemed to be working just fine but as mentioned before there isn't really a clean-rom verifier yet.

Mod edit: No ROM site names please.

--------------------
I only came back here because I got way too drunk and had a neat idea for a hack.
How do I undo a patch?

I accidentally applied the obj_import6.ppf patch to my hack and now I can't play any of my edited levels nor load the ROM in Toad's Tool. The "Apply Undo Patch Data" box in PPF-O-Matic is faded out so I can't check it to undo the patch.

Please help. What should I do?
just download and extend another clean rom, and apply the patches.
and i have a problem. in star road deluxe, some levels i enter it freezes. and only my rom hacks seem to work perfectly.
it frezzes when i goto the first level in monochrome mario 64.
anybody have an idea why it does this?
i set the pj 64 settings to 8mb

--------------------
I promise to never cancel my hacks
I seem to be having the same problem that multiple other people are having... I downloaded and patched the hack "Super Mario: Star Revenge," but for some reason, it just doesn't work and always shows the permanent loop error. Here's what I did:

-Got a .n64 version of the SM64 ROM
-Got the .ppf patch
-Used the ROM extender on the SM64 ROM
-Used PPF-o-matic to patch the extended ROM with the .ppf patch
-Changed memory in ROM settings to 8 MB

--------------------
Current Favorite Hack: Mushroom Kingdom Meltdown 2
Now Playing:
-Mario Gives Up 1
-Super Mario Infinity 2
-Mario's Strange Quest
-Yoshi's Strange Quest
Originally posted by Penguin4478
I seem to be having the same problem that multiple other people are having... I downloaded and patched the hack "Super Mario: Star Revenge," but for some reason, it just doesn't work and always shows the permanent loop error. Here's what I did:

-Got a .n64 version of the SM64 ROM
-Got the .ppf patch
-Used the ROM extender on the SM64 ROM
-Used PPF-o-matic to patch the extended ROM with the .ppf patch
-Changed memory in ROM settings to 8 MB



to fix the loop error get chksum64.exe and push the rom over it-

--------------------
My Channel - http://www.youtube.com/skilllux64
Originally posted by Skilllux
Originally posted by Penguin4478
I seem to be having the same problem that multiple other people are having... I downloaded and patched the hack "Super Mario: Star Revenge," but for some reason, it just doesn't work and always shows the permanent loop error. Here's what I did:

-Got a .n64 version of the SM64 ROM
-Got the .ppf patch
-Used the ROM extender on the SM64 ROM
-Used PPF-o-matic to patch the extended ROM with the .ppf patch
-Changed memory in ROM settings to 8 MB



to fix the loop error get chksum64.exe and push the rom over it-


did that on patched roms, still doesnt work

--------------------
I promise to never cancel my hacks
Originally posted by Blakeoramo
did that on patched roms, still doesnt work


From my experience on trying to patch ( for what it worth ), my problem was mentioned nowhere, you see, NO-FUCKING-WHERE around the whole internet, BUT I noticed that most full hacked roms I downloaded ( elsewhere -no rights to tell here ) were 48MB large, not 24 !

The thing is that the ROM extender of VL-Tone only extend to 24MB while some new standard was established on jul.rustedlogic years ago that they'd manually expand their ROM hacks to 48MB here ( look at VL-Tone's first large post ).

But they never updated the ROM extender as I know...

So all I had to do to make it work... is add 24MB of empty data to make the file large enough before patching ( did that with my favourite and most reliable tool ever; a simple hex editor ).

Hope it'll solve your problem...

--------------------
Uber Mario 64 Demo released, 16 awesomely challenging stars awaits YOU!
Originally posted by ArchangelGabriel
Originally posted by Blakeoramo
did that on patched roms, still doesnt work


From my experience on trying to patch ( for what it worth ), my problem was mentioned nowhere, you see, NO-FUCKING-WHERE around the whole internet, BUT I noticed that most full hacked roms I downloaded ( elsewhere -no rights to tell here ) were 48MB large, not 24 !

The thing is that the ROM extender of VL-Tone only extend to 24MB while some new standard was established on jul.rustedlogic years ago that they'd manually expand their ROM hacks to 48MB here ( look at VL-Tone's first large post ).

But they never updated the ROM extender as I know...

So all I had to do to make it work... is add 24MB of empty data to make the file large enough before patching ( did that with my favourite and most reliable tool ever; a simple hex editor ).

Hope it'll solve your problem...


i was able to solve the problem :D
it took a little patience

--------------------
I promise to never cancel my hacks
actually, there is a "rom expander" with every version of the obj importer.
Originally posted by Blakeoramo
i may try to make the ultimate sm64 hacking tool, and will be extremly simple


Please don't be so patronizing, I don't want anyone to feel inferior around here. Also Skelux pretty much has made a simple enough program to help patch hacks, I'm even working on a updated first post to reflect it.
Originally posted by Vinnyboiler
Originally posted by Blakeoramo
i may try to make the ultimate sm64 hacking tool, and will be extremly simple


Please don't be so patronizing, I don't want anyone to feel inferior around here. Also Skelux pretty much has made a simple enough program to help patch hacks, I'm even working on a updated first post to reflect it.


ok, i can save it for later. i completly understand #smw{;)}

--------------------
I promise to never cancel my hacks
Pages: « 1 2 3 4 5 » Link
Forum Index - Non-SMW Hacking - Super Mario 64 Hacking - ASM & Data Repository - Patching SM64 hacks

The purpose of this site is not to distribute copyrighted material, but to honor one of our favourite games.

Copyright © 2005 - 2021 - SMW Central
Legal Information - Privacy Policy - Link To Us


Menu

Follow Us On

  • YouTube
  • Twitch
  • Twitter

Affiliates

  • Super Mario Bros. X Community
  • ROMhacking.net
  • Mario Fan Games Galaxy
  • sm64romhacks