Hacking NSMBW Mod ISO Builder v1.00

  • Thread starter Thread starter damysteryman
  • Start date Start date
  • Views Views 318,351
  • Replies Replies 648
  • Likes Likes 27
It will likely take a month or longer to do a clean port into Node.js, I know if anyone has seen my workflows before this sounds massive, and that's because, in actuality, it is. I may release an intermediate batch version in the mean time resolving friction with the engine design that has been exposed since my last v1.06 release.
 
Okay, time for user feedback...

I’m reviewing the current community-led release against my freeze point at v1.06 and noticed a few gaps:

  • Optional components in a mod aren't able to be expressed in the current PLG spec, and thus are not represented or selectable in the current model.
  • BASE coverage was missing a few regions (e.g., Korean, Taiwanese), though I’m unsure if any existing Riivolution packages target them directly.
  • PLG creation feels underspecified in practice; I’ll likely need to be more explicit about intended structure going forward.
Separately, I want to sanity-check scope: are there any additional behaviors or features in the current community build that are not captured in my freeze point model, or did I enumerate all that the hotfix should address?
 
Okay, time for user feedback...

I’m reviewing the current community-led release against my freeze point at v1.06 and noticed a few gaps:

  • Optional components in a mod aren't able to be expressed in the current PLG spec, and thus are not represented or selectable in the current model.
  • BASE coverage was missing a few regions (e.g., Korean, Taiwanese), though I’m unsure if any existing Riivolution packages target them directly.
  • PLG creation feels underspecified in practice; I’ll likely need to be more explicit about intended structure going forward.
Separately, I want to sanity-check scope: are there any additional behaviors or features in the current community build that are not captured in my freeze point model, or did I enumerate all that the hotfix should address?
Is this solely to support New Super Mario Bros Wii or would other games work? Universal ISO Builder works but it isn't the best. Node.js is an interesting choice but it probably could be made better than the surprisingly small options there are for an ISO builder program
 
  • Like
Reactions: viktormax
The project scope is fully limited to NSMBW, this is by design. This allows me to use a signature inside the initial image to verify compatibility between original image (BASE) and Riivolution package (PLG), you can look back at the original spec for BASE and PLG here (earlier in this thread)

The spec expansion I see that I need is:
Inside the PLG at the end:

Code:
option.1.desc=(mod option description)
option.1.file=(destination to overwrite in image)
option.1.value.1.desc=(primary/default state description)
option.1.value.1.file=(source of overwrite from Riivolution pack)
option.1.value.2.desc=(selectable alternate state description)
option.1.value.2.file=(source of overwrite from Riivolution pack)
...
option.1.value.N...
...
option.N...
Example from Dark Mario Reverse:
Code:
option.1.desc=Luigi's Costume
option.1.file=Object\
option.1.value.1.desc=Standard
option.1.value.1.file=LuigiStandard
option.1.value.2.desc=Classic
option.1.value.2.file=LuigiClassic
option.1.value.3.desc=Halloween
option.1.value.3.file=LuigiHalloween\
option.2.desc=Toad's Costume
option.2.file=Object\Kinopio.arc
option.2.value.1.desc=Standard
option.2.value.1.file=ToadStandard\Kinopio.arc
option.2.value.2.desc=Halloween
option.2.value.2.file=ToadHalloween\Kinopio.arc
option.3.desc=Wario's Costume
option.3.file=Object\Luigi.arc
option.3.value.1.desc=Standard
option.3.value.1.file=WarioStandard\Luigi.arc
option.3.value.2.desc=Halloween
option.3.value.2.file=WarioHalloween\Luigi.arc
option.4.desc=Hammer Suit
option.4.file=Object\hammerM.arc
option.4.value.1.desc=Classic
option.4.value.1.file=HammerSuitClassic\hammerM.arc
option.4.value.2.desc=Halloween
option.4.value.2.file=HammerSuitHalloween\hammerM.arc
option.5.desc=Luigi Physics
option.5.file=Objects\
option.5.value.1.desc=OFF
option.5.value.1.file=PhysicsDM\
option.5.value.2.desc=ON
option.5.value.2.file=PhysicsLL
(Note that while option.1.file and option.5.file have the same value, they do not overlap as 1 contains Mario.arc and OpeningScene.arc and 5 contains P_rcha.arc and P_rcha3.arc. I could have set them all to the same value, and that's what the latest community release does, just use Object\)
I will implement a menu that will parse this and allow one state per option.N.file.
each option.N should target a different file, and selection will be independent.
 
Last edited by CaseyOmah,
It is like a welcome rain at a time when the Wii is past its twilight years! :)

  • BASE coverage was missing a few regions (e.g., Korean, Taiwanese), though I’m unsure if any existing Riivolution packages target them directly.

To limit it to Korean, I believe Newer Super Mario Bros. Wii is the only one.
 
Okay, let me first say that, yes, I know I came back on April 1st, and no, this isn't a prank. I have rewritten my option spec, and it currently leaves some Riivolution edge cases out, in Riivolution each choice in an option can have different target(s), This spec does not allow for that, but I can make it so it does if needed. I won't do that unless I hear it will be needed.
Code:
option.N.name
option.N.O.file // xor
option.N.O.offset // and
option.N.O.original
option.N.choice.M.name
option.N.choice.M.O.file // xor
option.N.choice.M.O.value
Each O is either a file/file pair or an offset+original/value set.
Will this be sufficient, or do I need to move the destination into the choice too?

If I don't get any push-back on this design I will begin to implement it starting tomorrow (04/07), note that M=1 (first choice) is still the default behavior, choice.M.O.file may be null to say that this choice does not override this file, thus off/on of file would be
Code:
option.N.choice.1.O.file=

I have one more question we should cover quickly, I noticed that Riivolution supports/uses forwardslash (/) as path separator, should I rewrite all PLGs to do the same, or keep backslash (\)?
 
Last edited by CaseyOmah,
Is this solely to support New Super Mario Bros Wii or would other games work? Universal ISO Builder works but it isn't the best. Node.js is an interesting choice but it probably could be made better than the surprisingly small options there are for an ISO builder program
I have a universal riivolution patcher for ISO/WBFS, based on Wit; you just put the game backup in, select the game's XML file, and it does the whole process, It works in most of the games I tested.
 

Site & Scene News

Popular threads in this forum