[Would] you consider making a non dotnet patcher? Will such conversion be very difficult? Thank you in advance.
Unfortunately very difficult. The patcher isn't my creation, and I don't have the source code to it. The ZPS patch format, especially Turbo's use of it, relies on lots of very specific behaviors, so rewriting the ZPS patcher in another language would require extensive effort to match the behavior of the existing one.
While I'm not a big fan of .NET, I still found the capabilities of the ZPS patch format compelling enough to use in spite of its patcher being .NET and obscure. The only patcher option for it is tough to use outside of Windows.
, thanks. That's a really nice sentiment, I really appreciate it.
, like hmsong said, you should be able to apply Equipment Progression Balance after applying Turbo, with the caveat that it'll overwrite features that affect shops and enemy drops.
And yeah, somewhere I said I'd get it integrated eventually, but there's no timeline for it, especially that one as it'll require a fair bit of compatibility crosschecking and fixups that I'm not currently in the mood for.
My goal is to get all of kethinov's hacks in the Turbo patcher, but I only have so much time available.
Is it alright if I included your Silence Thunder Saber and Poison Sleep Flower in the Spell Balance Overhaul?
Let's hammer out some of the info on the game's events. The following is only for vanilla, as VWF and Relocalized both relocate all event scripts.
Events 0x000-0x3FF are in bank 0xC9 and events 0x400-0x7FF are in bank 0xCA. The first 0x800 bytes of each of those banks are the pointer tables to the events; think of them like a table of contents. So, say you want to know where event 0x318 is in bank 0xC9, take the value 0x318, and multiply it by two because the pointers are 16-bit (2 bytes, so 0x318 * 2 = 0x630); look at $C90630 to get the 16-bit address of event 0x318. At $C90630 you'll find the bytes 0x58 0xCD, which read as a single 16-bit value in little-endian order is 0xCD58, so event 0x318 is at address $C9CD58.
At $C9CD58 you'll find:
N E K O : I _ l o v e _ m e o w - n t a i n \n
_ c l i m b i n g ! _ N e e d _ a n y t h i n g ?
_ I ' l l _ e v e n _ s a v e _ y o u r _ g a m e ! \n
S a v e
B u y
S e l l _ )
C9/CDD0: 00 [End]
In ZPS syntax, this would be:
\event \flag== FA 0C
TEXT ^N ^E ^K ^O : ^I _ l o v e _ m e o w - n t a i n \n
TEXT _ c l i m b i n g ! _ ^N e e d _ a n y t h i n g ?
\event \lock \gather \camera_center
TEXT _ ^I ` l l _ e v e n _ s a v e _ y o u r _ g a m e ! \n
\event \multispace= 03
\event \text_opt_define= 05
TEXT ^S a v e
\event \text_opt_define= 0C
TEXT ^B u y
\event \text_opt_define= 12
TEXT ^S e l l _ )
\event \goto 0FF
\event \goto 04F
\event \goto 312
\event \goto 313
(I think, typed this out without testing.)
The important part for what you want is that very first command, \flag== FA 0C, which sets event flag 0xFA to the value 0x0C. Event flag 0xFA controls which shop shows, and setting it to value 0x0C is the value for the Mandala / Lofty Mountains shop.
can be used to search events, though there are some event commands it doesn't know, and there are some uses of events that won't show up when searched for, but it's certainly a handy reference. If this is anyone's first exposure to somedit, be aware that it is inadequate for actually producing significant ROM hacks for Secret of Mana, but it is amazingly useful reference material. If you try changing anything in it, be ready for the changes to not save, or not be reusable on a subsequent run, etc. I treat it as a read-only resource, but use it on occasion to look at the game's data to come up with ideas.