øAslickproductions.org/forum/index.php?PHPSESSID=so1iojs5ocdn0o2vf0tti7fbu6&topic=2433.0e:/My Web Sites/Slick Productions - FFIV Message Board/slickproductions.org/forum/indexa3fc-2.htmlslickproductions.org/forum/index.php?PHPSESSID=so1iojs5ocdn0o2vf0tti7fbu6&board=8.0e:/My Web Sites/Slick Productions - FFIV Message Board/slickproductions.org/forum/indexa3fc-2.html.zxÃôg^ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ ­ ôOKtext/htmlISO-8859-1gzip@øÕ ôÿÿÿÿÿÿÿÿTue, 10 Mar 2020 20:29:15 GMT0ó°° ®0®P®€§²ð®Ãôg^ÿÿÿÿÿÿÿÿ& ô FF6 Advance makes Imp-inflicting spells fail if immunity to Imp found

Author Topic: FF6 Advance makes Imp-inflicting spells fail if immunity to Imp found  (Read 194 times)

13375K31C43R

  • Ultros
  • *
  • Posts: 675
  • Gender: Male
    • View Profile
    • Leet Sketcher's Final Fantasy III Patches
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.
« Last Edit: March 02, 2018, 12:17:16 AM by 13375K31C43R »
"Do not meddle in the affairs of wizards, for they are subtle and quick to anger." -Gildor from The Lord of the Rings

Xardas

  • Siren
  • *
  • Posts: 75
    • View Profile
Re: FF6 Advance makes Imp-inflicting spells fail if immunity to Imp found
« Reply #1 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*

assassin

  • Bane of Retards
  • *
  • Posts: 1,033
  • space bears are not gentle!
    • View Profile
    • My Barren Webpage
Re: FF6 Advance makes Imp-inflicting spells fail if immunity to Imp found
« Reply #2 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.
« Last Edit: March 02, 2018, 03:01:14 AM by assassin »

13375K31C43R

  • Ultros
  • *
  • Posts: 675
  • Gender: Male
    • View Profile
    • Leet Sketcher's Final Fantasy III Patches
Re: FF6 Advance makes Imp-inflicting spells fail if immunity to Imp found
« Reply #3 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?).
"Do not meddle in the affairs of wizards, for they are subtle and quick to anger." -Gildor from The Lord of the Rings

assassin

  • Bane of Retards
  • *
  • Posts: 1,033
  • space bears are not gentle!
    • View Profile
    • My Barren Webpage
Re: FF6 Advance makes Imp-inflicting spells fail if immunity to Imp found
« Reply #4 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?

13375K31C43R

  • Ultros
  • *
  • Posts: 675
  • Gender: Male
    • View Profile
    • Leet Sketcher's Final Fantasy III Patches
Re: FF6 Advance makes Imp-inflicting spells fail if immunity to Imp found
« Reply #5 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.

Code: [Select]
LDA $B3
BPL no_vanish

LDA $3EE4,Y
BIT #$10
BEQ no_vanish

LDA $11A4
ASL A
BMI force_clear_vanish

LDA $11A2
BIT #$02
BEQ no_idp

LDA $3AA1,Y
BIT #$04
BNE force_clear_vanish

no_idp:
LDA $11AA
BIT #$20
BEQ check_physical

LDA $11A4
BIT #$04
BNE check_physical

LDA $331C,Y
BIT #$20
BEQ force_clear_vanish

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.
« Last Edit: March 02, 2018, 11:35:15 AM by 13375K31C43R »
"Do not meddle in the affairs of wizards, for they are subtle and quick to anger." -Gildor from The Lord of the Rings

assassin

  • Bane of Retards
  • *
  • Posts: 1,033
  • space bears are not gentle!
    • View Profile
    • My Barren Webpage
Re: FF6 Advance makes Imp-inflicting spells fail if immunity to Imp found
« Reply #6 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?

13375K31C43R

  • Ultros
  • *
  • Posts: 675
  • Gender: Male
    • View Profile
    • Leet Sketcher's Final Fantasy III Patches
Re: FF6 Advance makes Imp-inflicting spells fail if immunity to Imp found
« Reply #7 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:
"Do not meddle in the affairs of wizards, for they are subtle and quick to anger." -Gildor from The Lord of the Rings

assassin

  • Bane of Retards
  • *
  • Posts: 1,033
  • space bears are not gentle!
    • View Profile
    • My Barren Webpage
Re: FF6 Advance makes Imp-inflicting spells fail if immunity to Imp found
« Reply #8 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.

Squall

  • Dark Dragon
  • *
  • Posts: 486
    • View Profile
Re: FF6 Advance makes Imp-inflicting spells fail if immunity to Imp found
« Reply #9 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???

assassin

  • Bane of Retards
  • *
  • Posts: 1,033
  • space bears are not gentle!
    • View Profile
    • My Barren Webpage
Re: FF6 Advance makes Imp-inflicting spells fail if immunity to Imp found
« Reply #10 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.)