øA slickproductions.org /forum/index.php?PHPSESSID=5f0fck550j2m4m2fpbtkj2vkm1&action=printpage;topic=2433.0 e:/My Web Sites/Slick Productions - FFIV Message Board/slickproductions.org/forum/indexb484-3.html slickproductions.org /forum/index.php?PHPSESSID=5f0fck550j2m4m2fpbtkj2vkm1&topic=2433.0 e:/My Web Sites/Slick Productions - FFIV Message Board/slickproductions.org/forum/indexb484-3.html.z x |.h^ ÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ `¦D dM OK text/html ISO-8859-1 gzip 8:Ö dM ÿÿÿÿÿÿÿÿ Wed, 11 Mar 2020 00:35:33 GMT 0ó° °® 0® P® €§² ð® |.h^ Â dM
Print Page - FF6 Advance makes Imp-inflicting spells fail if immunity to Imp found
Board of Slick
Banon's Donkey Farm => Game Modification Station => Topic started by: 13375K31C43R on March 02, 2018, 12:07:18 AM
Title: FF6 Advance makes Imp-inflicting spells fail if immunity to Imp found
Post by: 13375K31C43R on March 02, 2018, 12:07:18 AM
In FF6 Advance, there's an extra bit of code that checks if a spell affecting Imp status without the "lift status" bit set is cast on a target that is immune to Imp status and, if so, makes the spell fail completely regardless of other effects. This check does not exist in the SNES version of the game.
This check seems unnecessary to me, and in fact it creates a bug with those spells. Specifically, the spells it affects are: Bad Breath/Sour Mouth, Rippler, Mind Blast, Diabolic Whistle/Evil Toot and Disaster. Those spells inflict statuses other than Imp, but don't do anything in the Advance version as long as the target is immune to Imp. Note that in the case of Rippler, the caster being immune to Imp does not matter, just the target. I can't think of any good reason why Square Enix would add this to the game.
Title: Re: FF6 Advance makes Imp-inflicting spells fail if immunity to Imp found
Post by: Xardas on March 02, 2018, 01:46:19 AM
I can't think of any good reason why Square Enix would add this to the game.
A: "Guys, so we fixed the evade bug - the Prayer Beads now do actually something! Awesome" B: "Yeah, but the beloved White Cape was nerfed..." A: "Oh no - that's unacceptable. What shall we do about that?" C: "Say no more pals - I got this one covered" *adds the extra Imp immunity check*
Title: Re: FF6 Advance makes Imp-inflicting spells fail if immunity to Imp found
Post by: assassin on March 02, 2018, 02:14:54 AM
bug has been known for a long time.. but i take it you found the actual code responsible? as in you're standing close enough to slit its throat and throw it off a building? hypothetically speaking; i cannot endorse violence in any form. ;)
anyway, the foremost theory is that it's there to fix one or more Vanish/Imp bugs. because SNES monster sprite changes are tied to the spells hitting as opposed to the entity's actual Imp status presence/absence, well then by golly, we'll just make the spells miss! *contentedly brushes hands together*
also, my theory has been that this check is probably near the Instant Death protection one (or perhaps the remake's changes as it relates to Vanish+Instant Death). because the remake team was too stupid to realize that: 1) unlike insta-kill spells, which focus on one thing, Imp can be inflicted concurrently with other statuses. 2) the Instant Death protection has no choice but to make a spell miss, because you can't be immune to Death/Wound status without becoming bloody immortal. however, every other status (e.g. Imp) has no such limitation, so mimicking the ID logic for them is unnecessary and problematic.
Title: Re: FF6 Advance makes Imp-inflicting spells fail if immunity to Imp found
Post by: 13375K31C43R on March 02, 2018, 05:01:46 AM
After a little more scrutiny, my best guess as to its real purpose is that it's meant to fix the "Rippler hits even when it misses" bug, because the special data byte that Terii Senshi's patch changes to fix that bug is not changed in the GBA version from the original SNES version.
re assassin: Yes, there is an Imp check in the same vicinity as an Instant Death Protection check. The one that actually causes this problem, though, is right after the "Dead XOR Undead" check. I don't know if the former even does anything at all because I don't know any spells that pay attention to IDP and Imp status at the same time (except I think there might be one that inflicts Countdown status, but who actually cares?).
Title: Re: FF6 Advance makes Imp-inflicting spells fail if immunity to Imp found
Post by: assassin on March 02, 2018, 06:02:22 AM
After a little more scrutiny, my best guess as to its real purpose is that it's meant to fix the "Rippler hits even when it misses" bug, because the special data byte that Terii Senshi's patch changes to fix that bug is not changed in the GBA version from the original SNES version.
guess that could be.. but why would they check just Imp as opposed to all of the statuses present in Rippler's data?
Quote
re assassin: Yes, there is an Imp check in the same vicinity as an Instant Death Protection check. The one that actually causes this problem, though, is right after the "Dead XOR Undead" check. I don't know if the former even does anything at all because I don't know any spells that pay attention to IDP and Imp status at the same time (except I think there might be one that inflicts Countdown status, but who actually cares?).
a second Imp check? huh.
re your parenthetical note: as in Evil Toot/Diabolic Whistle and Mind Blast? those don't have the "Miss if Instant Death protected" flag, so any IDP won't come into play until Countdown's expiration. or in the off chance you were addressing this comment:
Quote
1) unlike insta-kill spells, which focus on one thing, Imp can be inflicted concurrently with other statuses
i guess Overcast/Cloudy Heaven would be an example of an IDP-heeding spell that inflicts another status. but because it gets to that Zombie destination by way of Death (in turn by way of Countdown), having IDP thwart the whole thing isn't incongruous like Imp-immunity thwarting Sour Mouth/Bad Breath's Blind/Dark.
-------------
any way you could post pseudocode of the relevant block(s)? i sadly don't speak GBAese, let alone the ported game dialect of it, where 70% of instructions are nonsensical misdirects. it'd make my head explode.
but maybe if sufficiently dumbed down, i could take a stab at what needs to be culled.
Quote
I don't know if the former even does anything at all because I don't know any spells that pay attention to IDP and Imp status at the same time
perhaps the first Imp check is to stop Vanish status from guaranteeing a hit for magical attacks and skipping over the second check?
Title: Re: FF6 Advance makes Imp-inflicting spells fail if immunity to Imp found
Post by: 13375K31C43R on March 02, 2018, 11:30:07 AM
perhaps the first Imp check is to stop Vanish status from guaranteeing a hit for magical attacks and skipping over the second check?
Astute; the target having Vanish status is a requirement to get to that point in the code. In fact, now that I think about it, Master ZED's Bug FAQ mentioned that if Imp was cast on a Vanished enemy, that enemy's graphic would change to Imp even if the enemy is immune to Imp status. Maybe that has something to do with it?
:edit: After further testing, I can confirm this to be true.
any way you could post pseudocode of the relevant block(s)? i sadly don't speak GBAese, let alone the ported game dialect of it, where 70% of instructions are nonsensical misdirects. it'd make my head explode.
The whole structure of the port is to give it a SNES-like function as well as look. So, for instance, there are special addresses in RAM that the GBA uses for the "accumulator" and "X/Y registers". It also handles SNES processor flags manually instead of relying on its own processor flags which have largely the same purposes (e.g. Carry bit, Zero flag).
Since it's written that way, I think it would be most suitable to write the SNES equivalent to what is in the code.
check_physical: LDA $11A2 LSR A JMP miss_if_carry_set
force_clear_vanish: LDA $3DFC,Y ORA #$10 STA $3DFC,Y
no_vanish: LDA $11A3 BIT #$02 BNE no_reflect
LDA $3EF8,Y BPL no_reflect
REP #$20 LDA $3018,Y TSB $A6 JMP miss_and_exit
no_reflect: LDA $11A2 BIT #$02 BEQ no_idp2
LDA $3AA1,Y BIT #$04 BNE force_miss
no_idp2: LDA $11A2 BIT #$04 BNE no_dead_xor_undead
LDA $3EE4,Y EOR $3C95,Y BPL force_miss
no_dead_xor_undead LDA $11AA BIT #$20 BEQ no_imp
LDA $11A4 BIT #$04 BNE no_imp
LDA $331C,Y BIT #$20 BEQ force_miss
no_imp: LDA $B5 CMP #$00
That's as much as I'll include because the rest is detailed nicely in your bank C2 doc.
Title: Re: FF6 Advance makes Imp-inflicting spells fail if immunity to Imp found
Post by: assassin on March 02, 2018, 02:07:25 PM
1) yeah, that's why it's my suspicion that a proper Vanish+Imp/etc fix (e.g. ported Imp Skimp) will let you drop the GBA Imp additions. doesn't seem like it'd be fun to port, but hey. :P
2) thank you; very readable!
if i'm following right, does this mean Imp-granting physical Specials (Monster # 14, 60, 65, 180, 198, 201, 205, 220) will now remove Vanish from Imp-susceptible targets and be able to hit them?
Title: Re: FF6 Advance makes Imp-inflicting spells fail if immunity to Imp found
Post by: 13375K31C43R on March 02, 2018, 02:13:43 PM
1) yeah, that's why it's my suspicion that a proper Vanish+Imp/etc fix (e.g. ported Imp Skimp) will let you drop the GBA Imp additions. doesn't seem like it'd be fun to port, but hey. :P
It certainly won't be fun if I ever even get to porting Imp Skimp to GBA. In fact, I'm still not entirely satisfied with the current implementation of Imp Skimp. It works fine for now, but I'd much rather just have a "correct graphic" check everywhere that it's needed. Sadly, I don't know how to do that and I'm too busy to try and find out.
if i'm following right, does this mean Imp-granting physical Specials (Monster # 14, 60, 65, 180, 198, 201, 205, 220) will now remove Vanish from Imp-susceptible targets and be able to hit them?
Best answer I have to that is...possibly? :sad:
Title: Re: FF6 Advance makes Imp-inflicting spells fail if immunity to Imp found
Post by: assassin on March 02, 2018, 07:36:52 PM
just tested, and that fortunately does not happen. so i must've misread. my newer interpretation is that Vanished, Imp-immune targets will have those Specials miss -- but Clear status will get removed. of course, i will need to verify this in-game.
Title: Re: FF6 Advance makes Imp-inflicting spells fail if immunity to Imp found
Post by: Squall on March 03, 2018, 06:44:14 AM
The whole structure of the port is to give it a SNES-like function as well as look. So, for instance, there are special addresses in RAM that the GBA uses for the "accumulator" and "X/Y registers". It also handles SNES processor flags manually instead of relying on its own processor flags which have largely the same purposes (e.g. Carry bit, Zero flag).
Wait a minute, don't tell me that GBA version is actually some kind of SNES port-emulation???
Title: Re: FF6 Advance makes Imp-inflicting spells fail if immunity to Imp found
Post by: assassin on March 04, 2018, 02:30:55 AM
Quote
my newer interpretation is that Vanished, Imp-immune targets will have those Specials miss -- but Clear status will get removed.
verified. so the latter is another reason to gut their Imp checks once you can port Imp Skimp. (or maybe even before, since them hosing Sour Mouth, Rippler, etc. is more consequential than some silly graphical bug.)