Modding => PSX FFT Hacking => Topic started by: Grond on March 24, 2014, 02:00:32 pm
Title: Buggy ASM hacks
Post by: Grond on March 24, 2014, 02:00:32 pm
Hello, FFHacktics regulars! Does anyone have fixed versions of these, or would anyone care to fix these? I would like to use them in a major mod I am working on; otherwise I will have to design around not being able to use them.
To verify that the problems I'm having with them aren't the result of conlicts with other patches, I tested them all individually with pSX v1.13 on a clean/vanilla ISO (except for changes necessary for an ASM to be usable in-game).
Disable Move hack by FFMaster http://ffhacktics.com/smf/index.php?topic=5658.msg155233#msg155233 (http://ffhacktics.com/smf/index.php?topic=5658.msg155233#msg155233) Just doesn't work more often than not, but occasionally it will function correctly.
Units with reaction between Counter and Distribute have front evasion for sides and back by FFMaster Seems to affect everyone and is not limited to units using the ability, as described.
Learning Support Hack by pokeytax Technically works, but also screws up equipment and/or stats. Test scenario 1: I set up the patch to utilize the blank support ability under Non-charge and using job Calculator and skillset Math Skill. Made the new 'learning' ability cost 0 JP and added it to Math Skill skillset. Added Flame Attack to Math Skill skillset and make it 100% learn-on-hit, non-learnable with JP, and cost 9999 JP. Added Flame Attack to Bomb's skillset. In-game, equipped 'learning' on a weaponless non-Calculator and let a Bomb hit him with Flame Attack. Result: learned Flame Attack as expected, but also ended up with an Asura Knife mysteriously equipped in the right hand. Test scenario 2: Same as 1, but I sent the unit in as a Calculator without the 'learning' ability and ended up with a Yoichi Bow in my hands out of nowhere. Test scenario 3: Same basic setup as 1, but changed from Calculator to Mediator, a more ordinary job/skillset in hopes that it wouldn't bug out like Calculator. Ended up with a Rod equipped in the body armor slot. Test scenario 4: Same as 3, but I sent the unit in as a Mediator without the 'learning' ability and ended up with a Spell Edge in the body armor slot. I stopped this test here, but I've had this patch give me many hundreds of MP in the past instead of (or in addition to) altering equipment.
Multiplier Editor in Raven's Workbooks Tested these with the default values provided. Using the "Haste, Slow Edits" portion caused battles to start out stuck in some sort of infinite loop with everyone walking in slow motion. In the "Element Fixes and Edits" portion, elemental weakness is completely broken. I didn't test any further with that part. In the "Attack Up, (etc.) Edits" portion, Attack Up tested with a Mithril Gun (64 base dmg) against a freshly-hired neutral-compatibility Squire deals 80 dmg (125%) instead of the expected 85dmg (133%). I stopped testing here.
Blank support ability over Short Charge adds 25% bonus skill hit by Xifanie I noticed there are two* different versions of this, one in Xifanie's ASM thread and one in an xml included in v483 of the patcher suite. The former seems to work okay, actually, though I haven't tested it a lot. The latter version doesn't seem to do anything at all. Why does the (newer?) version in the xml exist? Is it supposed to be fixed to work on a real PS1 or something? *Choto has a modification of this patch that also has issues, but I posted about that in his ASM thread (which is still active unlike most) so hopefully he can fix it. Version A (working):
Title: Re: Buggy ASM hacks
Post by: Choto on March 24, 2014, 09:09:04 pm
Ok lets see here. First thanks for the feedback on the hacks.
I addressed the accuracy hack in my thread. Check the OP for a working version that just nulls 20% of the targets evade. I think there's a small amount of deviation in that amount but nothing that would cause concern.
I'll take a look at the disable move hack since Celdia requested a similar fix.
Try this hack for the front evade applied to sides and back. It says "should be fixed" so maybe it's fixed. Then again..
For the multiplier thing, check and make sure you have the most up-to-date workbooks. The other possibility is that you have conflicting hacks. Hacks written to the same location will cause the kind of catastrophic failures you're describing. Check all the others and we'll tackle that later.
Edit: A note on the learn on hit hack. 64000534 <-- The 64 sets the % amount. 64 in hex is 100 in decimal. So change 64 to any hex number less than 64 to set it's equivalent decimal %.
Title: Re: Buggy ASM hacks
Post by: Grond on March 25, 2014, 02:18:29 pm
Thanks for the accuracy and evasion hacks! They seem to work fine after a brief test.
If you can't fix the Disable Move hack easily, don't worry about it. I was only using it for two abilities anyway, so I can design around not having it easily enough.
Unfortunately the big learning hack you posted is the same as the one I tried, just without the editable parts indicated. :| Looks like I won't have a Learning ability, but I don't too much mind having to be in the Blue Mage job to learn the skills.
Concerning the Multiplier Editor, I suppose I don't need it either since there are seperate small hacks for pretty much all that stuff already.
Thanks again.
Title: Re: Buggy ASM hacks
Post by: Choto on March 25, 2014, 11:56:51 pm
That's really strange... all those hacks and the multiplier all work for JoT5. That leads me to believe you have hacks writing to the same place and causing random effects. That's cool if you want to design around it, but if you want I could show you how to check for and fix that problem.
At least it's one of the cooler bugs, giving tons of MP and random equips with good intentions.
Title: Re: Buggy ASM hacks
Post by: Grond on March 27, 2014, 05:12:46 pm
There weren't any conflicts, trust me. Like I said, I tested the patches individually with a clean ISO (.bin, technically) that I personally ripped with ImgBurn--and it has the same hashes as one of those in this topic (http://ffhacktics.com/smf/index.php?topic=10119.0) (the crc32 = 377F6510 one), so it's almost certainly a good rip.
Though actually, on a closer read of the Raven's Spreadsheet Shop topic (http://ffhacktics.com/smf/index.php?topic=7271.msg190847#msg190847) it seems that it's known that the Multipliers Editor has lingering issues. If I'd noticed that before I wouldn't have mentioned it here. Well, it's of little concern to me. If it gets fixed I might use it, but I can do without it for now.
Concerning your evasion reduction hack, I assume no problems will arise if I alter 0x11e858 to make it subtract a lesser amount? I imagine it will work fine, but I figured I'd ask.
Title: Re: Buggy ASM hacks
Post by: Choto on March 27, 2014, 07:52:02 pm
I thought you had some programmer in you... got that vibe.
To be honest I forget how most of my hacks work since I usually do them once and post em up. If you have trouble let me know and i can look into it. that seems like it should be the trick tho
Title: Re: Buggy ASM hacks
Post by: Celdia on March 28, 2014, 01:16:40 am
You could say that... (http://www.romhacking.net/?page=hacks&authorid=560)
Since I can't imagine there are two Gronds, this is the guy who made some of the best FF1 hacks out there.
*quietly hero worships*
Title: Re: Buggy ASM hacks
Post by: Choto on March 29, 2014, 03:49:31 pm
Here Grond, the learn ASM should be fixed:
<Patch name="R/S/M designates Learn on Hit (Fixed)"> <Description>Units with the specified support ability (value XX on byte WW) equipped are treated as having the specified job/skillset (job YY, skillset ZZ) for the duration of learn-on-hit checks. So if you specify byte 91, value 10, job 51, skillset 0c, units with Monster Talk equipped learn Time Magic (e.g. Haste 2 and Slow 2), not their current skillset. It should not interfere with the support ability's ordinary functioning.</Description> <Location file="BATTLE_BIN" offset="F2F14"> 03000292 1680053C 12000492 749FA524 0800A2A0 </Location> <Variable name="Ability byte (WW)" file="BATTLE_BIN" offset="F2F28"/> <Location file="BATTLE_BIN" offset="F2F29"> 000292 0400A4A0 </Location> <Variable name="Ability value (XX)" file="BATTLE_BIN" offset="F2F30"/> <Location file="BATTLE_BIN" offset="F2F31"> 004230 04000210 </Location> <Variable name="Skillset (ZZ)" file="BATTLE_BIN" offset="F2F38"/> <Location file="BATTLE_BIN" offset="F2F39"> 000234 120002A2 </Location> <Variable name="Job (YY)" file="BATTLE_BIN" offset="F2F40"/> <Location file="BATTLE_BIN" offset="F2F41"> 000234 030002A2 E1390608 00000000 </Location> <Location file="BATTLE_BIN" offset="F2F54"> 1680013C 409F2124 00002190 00000000 B6FF2124 40100100 21084100 23986102 67FF7326 05000234 4a000334 120062A2 030063A2 633A0608 00000000 </Location> <Location file="BATTLE_BIN" offset="127774"> C5670508 </Location> <Location file="BATTLE_BIN" offset="12797c"> 25104202 000062A0 D5670508 </Location> </Patch>
Title: Re: Buggy ASM hacks
Post by: Grond on March 29, 2014, 10:41:11 pm
Ah, good work, Choto. It's better now, but it still has an issue, unfortunately. If my unit gets hit with an enemy skill he has already learned, something... odd happens. He will get Blue Magic as his primary action command, overwriting whatever is supposed to be there. And after the battle's end, the character has been automatically job-changed to Blue Mage. I'm using Calculator/Math Skill as my Blue Mage base job/class, if that's relevant in any way. Hope this is a minor fix.
And yes Celdia, I'm the same Grond that makes FF1 hacks (and not much else). I've only got a tiny bit of programmer in me, I'm afraid--ASM hacking doesn't come as easily to me as I would like. But I think (hope) I can make a fun FFT mod without having to learn a bit of PSX coding... but others can judge that later on when I've got something to show.
Title: Re: Buggy ASM hacks
Post by: Celdia on March 30, 2014, 12:53:13 am
I can speak from experience that it is TOTALLY possible. Go look at my patch if you want an example since I know fuck-all about ASM hacking. Beyond that, you're definitely getting involved with the right person for help with what you need. Choto is damned good at what he does. He won't steer you wrong.
I know I'm definitely looking forward to seeing what you've got in mind for my second gaming love [FF1 will always hold top billing for me but FFT is a damned close second.] But hey, y'know...no pressure. :P
Title: Re: Buggy ASM hacks
Post by: 3lric on March 30, 2014, 02:03:23 pm
Title: Re: Buggy ASM hacks
Post by: Choto on March 30, 2014, 05:25:10 pm
Take 3. I'm amazed that the original hack didn't fail catastrophically in JoT5.
<Patch name="R/S/M designates Learn on Hit"> <Description>Units with the specified support ability (value XX on byte WW) equipped are treated as having the specified job/skillset (job YY, skillset ZZ) for the duration of learn-on-hit checks. So if you specify byte 91, value 10, job 51, skillset 0c, units with Monster Talk equipped learn Time Magic (e.g. Haste 2 and Slow 2), not their current skillset. It should not interfere with the support ability's ordinary functioning. 0x008b: Reactions 1 0x80 - PA Save 0x40 - MA Save 0x20 - Speed Save 0x10 - Sunken State 0x08 - Caution 0x04 - Dragon Spirit 0x02 - Regenerator 0x01 - Brave UP 0x008c: Reactions 2 0x80 - Face (Faith) UP 0x40 - HP Restore 0x20 - MP Restore 0x10 - Critical Quick 0x08 - Meatbone Slash 0x04 - Counter Magic 0x02 - Counter Tackle 0x01 - Counter Flood 0x008d: Reactions 3 0x80 - Absorb Used MP 0x40 - Gilgame Heart 0x20 - Reflect 0x10 - Auto Potion 0x08 - Counter 0x04 - 0x02 - Distribute 0x01 - MP Switch 0x008e: Reactions 4 0x80 - Damage Split 0x40 - Weapon Guard 0x20 - Finger Guard 0x10 - Abandon 0x08 - Catch 0x04 - Blade Grasp 0x02 - Arrow Guard 0x01 - Hamedo 0x008f: Support 1 0x80 - Equip Armor 0x40 - Equip Shield 0x20 - Equip Sword 0x10 - Equip Katana 0x08 - Equip Crossbow 0x04 - Equip Spear 0x02 - Equip Axe 0x01 - Equip Gun 0x0090: Support 2 0x80 - Half of MP 0x40 - Gained JP-UP 0x20 - Gained EXP-UP 0x10 - Attack UP 0x08 - Defense UP 0x04 - Magic Attack UP 0x02 - Magic Defense UP 0x01 - Concentrate 0x0091: Support 3 0x80 - Train 0x40 - Secret Hunt 0x20 - Martial Arts 0x10 - Monster Talk 0x08 - Throw Item 0x04 - Maintenance 0x02 - Two Hands 0x01 - Two Swords 0x0092: Support 4 0x80 - Monster Skill 0x40 - Defend 0x20 - Equip Change 0x10 - 0x08 - Short Charge 0x04 - Non-Charge 0x02 - 0x01 - 0x0093: Movement 1 0x80 - Move +1 0x40 - Move +2 0x20 - Move +3 0x10 - Jump +1 0x08 - Jump +2 0x04 - Jump +3 0x02 - Ignore Height 0x01 - Move-HP UP 0x0094: Movement 2 0x80 - Move-MP UP 0x40 - Move-Get EXP 0x20 - Move-Get JP 0x10 - Cannot Enter Water 0x08 - Teleport 0x04 - Teleport 2 0x02 - Any Weather 0x01 - Any Ground 0x0095: Movement 3 0x80 - Walk on Water 0x40 - Move in Water 0x20 - Move on Lava 0x10 - Move Underwater 0x08 - Float 0x04 - Fly 0x02 - Silent Walk 0x01 - Move-Find Item </Description> <Location file="BATTLE_BIN" offset="F2F14"> 03000292 1680053C 12000492 749FA524 0800A2A0 </Location> <Variable name="Ability byte (WW)" file="BATTLE_BIN" offset="F2F28"/> <Location file="BATTLE_BIN" offset="F2F29"> 000292 0400A4A0 </Location> <Variable name="Ability Bit (XX)" file="BATTLE_BIN" offset="F2F30"/> <Location file="BATTLE_BIN" offset="F2F31"> 004230 04000210 </Location> <Variable name="Skillset (ZZ)" file="BATTLE_BIN" offset="F2F38"/> <Location file="BATTLE_BIN" offset="F2F39"> 000234 120002A2 </Location> <Variable name="Job (YY)" file="BATTLE_BIN" offset="F2F40"/> <Location file="BATTLE_BIN" offset="F2F41"> 000234 030002A2 E0390608 00000000 </Location> <Location file="BATTLE_BIN" offset="F2F54"> 1680013C 409F2124 00002190 00000000 B6FF2124 40100100 21084100 23986102 67FF7326 05000234 4a000334 120062A2 030063A2 0800E003 00000000 </Location> <Location file="BATTLE_BIN" offset="F2Fb0"> CC082124 21103400 89014190 04001034 06003014 1680013C 749F2124 04003090 08002190 120050A0 030041A0 01003126 1C3A0608 1500222E </Location> <Location file="BATTLE_BIN" offset="127868"> EC670508 1980013C </Location> <Location file="BATTLE_BIN" offset="127774"> C5670508 </Location> <Location file="BATTLE_BIN" offset="12797c"> 25104202 000062A0 D567050c </Location> </Patch>
ASM comes with time and effort. Once you get used to how to do things it's just same-old-stuff. Let me know if you have any questions on it. Also if you want to do any Event Editing in your mod, Elric can tell you all there is to know. We're usually in IRC if that's your thing.
Also regarding the Patcher source code: Glain's the caretaker of it and I'm starting to get involved, but it's still pretty tough for us (me, at least) to make changes. We'll try to address those things but there are no timetables for a newer release. The person who originally wrote it (Melonhead) has been gone for a long time I think.
Title: Re: Buggy ASM hacks
Post by: Grond on March 30, 2014, 08:36:02 pm
The same problem persists with this version, oddly enough :| Maybe it's just not a feasible hack for whatever strange reason. Don't keep trying if you don't want to; it's not that important. (Are you sure Jot5 is using it? I checked and it doesn't look like it is.)
Title: Re: Buggy ASM hacks
Post by: Choto on March 30, 2014, 10:01:53 pm
Sorry bout that, little oversight. This *should* work now. I want to do this hack cause blue mage is kind of a staple. And I could be wrong with JoT5, I just assumed they used it.
<Patch name="R/S/M designates Learn on Hit"> <Description>Units with the specified support ability (value XX on byte WW) equipped are treated as having the specified job/skillset (job YY, skillset ZZ) for the duration of learn-on-hit checks. So if you specify byte 91, value 10, job 51, skillset 0c, units with Monster Talk equipped learn Time Magic (e.g. Haste 2 and Slow 2), not their current skillset. It should not interfere with the support ability's ordinary functioning. 0x008b: Reactions 1 0x008c: Reactions 2 0x80 - PA Save 0x80 - Face (Faith) UP 0x40 - MA Save 0x40 - HP Restore 0x20 - Speed Save 0x20 - MP Restore 0x10 - Sunken State 0x10 - Critical Quick 0x08 - Caution 0x08 - Meatbone Slash 0x04 - Dragon Spirit 0x04 - Counter Magic 0x02 - Regenerator 0x02 - Counter Tackle 0x01 - Brave UP 0x01 - Counter Flood
Title: Re: Buggy ASM hacks
Post by: Grond on March 30, 2014, 11:11:07 pm
Cool, it seems to work fine now. Thanks! Others will use this too, no doubt.
Yes, Blue Mage (or similar) is an obvious class to include in a patch--it should have been in the original.
When I make ASM changes (modest as they tend to be) to FF1 I usually make plenty of mistakes and typically need lots of trial-and-error to get things working properly. I also seem to learn new things slowly and have a terrible memory, so I doubt my coding skills could ever come close to yours or some of the others'.:)
Title: Re: Buggy ASM hacks
Post by: Astos on May 04, 2015, 04:36:11 am
Thanks a lot, Choto! This is exactly what I as looking for. I tried using the R/S/M learning hack that comes built in the FFTorgASM but the result was that my game froze everytime a "learnable" skill was used. Your xml worked perfectly. I used ability 01E1 (nameless ability between Equip Change and Short Charge) and changed its name to "Blue Learning".
Title: Re: Buggy ASM hacks
Post by: Grond on May 08, 2015, 05:54:24 pm
Since this old topic of mine has been conveniently bumped (and the relevant ASM thread is dead), I'll post this in here:
I discovered an issue with another ASM hack that I wished to use (one of pokeytax's).
The problem is that his "Half of MP multiplies MP cost by XX/YY" hack currently does not actually affect the amount of MP consumed, but only affects the MP cost displayed in the ability selection menu.
The existing version only makes changes to this (http://ffhacktics.com/wiki/Load_ability_data_for_skillset) section of code. Similar changes also needed to be made in this (http://ffhacktics.com/wiki/MP_Cost_%28Half_of_MP%29_Section) section to make the hack work fully. (There is also another bit of code concerning Half of MP in this (http://ffhacktics.com/wiki/Default) section, but I didn't mess with it because I'm not sure when/if it's used (perhaps in the A.I.'s decision-making process?)
Basically, this hack should now work as intended, and hopefully without bugs.*
(Actual cost only, not displayed. REQUIRES pokeytax's hack, found in his ASM topic (http://ffhacktics.com/smf/index.php?topic=6505.0), to properly display cost.) BATTLE.BIN = 116b60-f: 00680508 00000000 00000000 00000000
Using similar methods, I also made the following hack (which oddly doesn't seem to have been done before). NOTE: This currently does not work in pSXfin (or on a real PS1?), but does work in ePSXe. I have no idea why :\ Perhaps one of the ASMers here can fix it.
*Full disclosure: I didn't do any real coding to make this. I basically just swiped some code from nates1984.xml and changed the addresses & registers as necessary. And credit also goes to pokeytax for the other (original) part of the hack.
Edit: Forgot something important. Choto's "R/S/M designates Learn on Hit" a couple posts back actually conflicts with pokeytax's Half of MP hack in its current form, so I advise making these changes to the Learning hack:
One section of it needs to be nudged forward 8 bytes. Change <Location file="BATTLE_BIN" offset="F2Fb0"> to F2Fb8
...and update the jump address like so: <Location file="BATTLE_BIN" offset="127868"> EC670508 to EE670508
Title: Re: Buggy ASM hacks
Post by: Choto on May 10, 2015, 10:06:10 am
I fucking love people that use the wiki <3
Ok so, that's really lazy by pokeytax and I'm surprised it didn't come up early. Nice work in fixing it up. Do me a favor and post the final completed hack in the http://ffhacktics.com/smf/index.php?topic=7163.220 (http://Patcher Source Thread), and I'll update it when the new release of patcher happens (if ever). It'd be cool if an Admin could update pokeytax's OP with it too.
in terms of the psx compatibility, here's the code:
[0x00000000] lw r8,0x00f8(r29) [0x00000004] beq r0,r8,0x00000020 [0x00000008] ori r2,r0,0x0000 [0x0000000c] mult r2,r17 [0x00000010] ori r2,r0,0x0000 [0x00000014] mflo r17 [0x00000018] div r17,r2 [0x0000001c] mflo r17 [0x00000020] j 0x00181a48 [0x00000024] nop
lw r8 immediately followed by bne r0, r8 is bad coding since r8 won't be loaded until the next command after the bne (load delays 1 command), but that won't cause a crash. However, I'm pretty sure there needs to be a 3 or 4 command buffer in between mult/mflo and div/mfl. I forget the exact rule, but that immediately jumps out as a problem. Add a couple of nop's in between them and it may work.
In regards to the learn on hit hack: There are quite a few hacks that conflict, and I don't really want to invest in fixing ALLTHECONFLICTS. Yes it would be better and more professional to do so... but the value vs. time ratio for me is not very good. I made the conflict checker so that people can see what hacks conflict and then move them themselves. If they have trouble they can always post for help and I'll help them out.
Happy to know you're still patching Grond, I'm still looking forward to what you come out with!
Title: Re: Buggy ASM hacks
Post by: Grond on May 14, 2015, 09:07:03 pm
Okay, I seem to have things working properly now.
I've attached fixed versions of the above hacks as an xml, and I'll post them in the FFTPatcher thread also, as requested.