^ thanks.
so "X-type instant death revives instant death-immune undead", and its sibling (#2 here:
viewtopic.php?f=2&t=108&p=1355#p1355 ) are fairly simple bugs, but the fix has me dragging my feet over space and resulting concerns.
the obvious solution is for Function C2/3D43 to exit whenever C2/3890 didn't auto-activate the X-kill. since the former function is a caller of the latter and doesn't "know" the path it took, the straightforward way is to replicate the checks. for FF6j, which lacks the non-landing Jump restriction, that's just the instant death-protected $3AA1 check. (C2/3D43 already has its own Undead check, and being undead forgoes the Stamina and random 25% tests.) for FF3us, that'd also involve the C2/38AB thru 38B5 checks (albeit with the read of $B5 changed to $3A7C to be safe, as the former can get modified in the weapon effect). the bottom of this giant post has tentative code.
the FF3us version gets a bit heavy on free space needed. parceling the checks out of C2/3890 to be called as a shared mini-function is a no-go, because truly saving space with this would require shifting up the rest of the routine, which one of my patches already edits. changing the callee to return elsewhere via stack fiddling is a possibility, but would dump on anybody who wanted to call it from a different function (e.g. Geiger's Painful Chainsaw patch, iirc), and i'd need to make space for the PLAs somehow.
so that leaves C2/3D43 detecting one of various "signatures" left by C2/3890 activating X-kill:
1) 16-bit $B5 == 7E02h . the command and attack for animation purposes. possible problems come to mind, then eliminate themselves. playing on FF6j sans Jump Megafix could allow the variables to hold 7E02h even on a strike that didn't insta-kill, but we wouldn't need to have this test in the first place, as FF6j's version of C2/3890 only has the ID-protection check to duplicate. conversely, FF3us should never have 7E02h on a non-landing jump due to Square's added check.
2) Wound being marked in the "Status to Set" variable. possible foolers are:
a. an attack that already inflicts Wound (as in instant death; lethal damage doesn't mark it until later) and has the random X-kill as a special effect on top of that. but who'd make such a redundant thing?
b. a Mute-aborting Rage attack (without my Mute Steals Rage statuses fix applied) where the monster has inherent Death and the Rager gets muddled into hitting themselves with an X-type weapon on the next strike might cause ambiguity. but that is SO far out there.
3) the entity being set in 16-bit $A4. they're temporarily cleared from it by the original C2/3443 caller, as my C2/38B9 comment explains. the weapon ID activation restores them slightly earlier than usual, something of which i can take advantage. no side effects are coming to mind, but leaning on this oddity makes me uneasy somehow.
-------
so the shortening options are all reasonably safe, though #2 the least so in a non-bugfixed game.
any preferences on which? should i just do things the cleaner, longer way? also, i'm hesitant to drop the $3AA1 check -- maybe because i want FF3us to have at least as much safeguard as FF6j -- even though any #1-3 should technically remove the need for it, and it takes 7 bytes.
so, much of this comes down to my indecision between slightly flawed and/or weird methods, and wanting other opinions. but straight-up logical analysis of whether any of these methods have side effects i'm overlooking would also be helpful. i'd prefer not to require other bugfixes, so vanilla is definitely fair game. i swear i revised my stance on #1 numerous times en route to making my notes months ago. (issues with it are _probably_ limited to somebody hacking out Square's non-landing jump check on FF3us without applying Jump Megafix -- i.e. pointless -- but my slowness in grasping the interactions leaves me concerned.)
completely different techniques are also welcome.
-----
projected FF6j fix (damn, so simple and short):
http://assassin17.brinkster.net/patches ... ix1b-j.asmFF3us the long way (26 bytes free space):
http://assassin17.brinkster.net/patches ... ix1b-u.asm