On this page
  1. Related
  2. Games
  3. References
  4. Sources

An elemental weakness changes an attack’s damage when its element matches one the target is weak to. Final Fantasy scales a spell’s power by 1.5 for a weakness and halves it for a resistance1; Final Fantasy II adds 20 to a weapon’s attack instead2. In Final Fantasy III the element multiplies the damage3, Final Fantasy IV adds a 4× tier and immunity4, and Final Fantasy VI lets an absorbed element heal5.

  • Flat bonusFinal Fantasy II (1988). A weapon the target is weak to hits as if it were 20 points stronger.2
  • Scaled powerFinal Fantasy (1987). Spells hit a weakness harder and a resistance softer; elemental and slaying weapons get no bonus at all.1,6,7
  • Damage multiplierFinal Fantasy III (1990). An attack of an element the target is weak to deals double damage.3Final Fantasy IV (1991). A strong weakness quadruples the damage, and some enemies are immune to an element.8,4
  • Multiplier with absorbFinal Fantasy VI (1994). Absorb heals, then nullify, halve, and weak doubles.5

Games

GameYearHowNote
Final Fantasy II1988Flat bonusa weapon the target is weak to hits as if it were 20 points stronger
Final Fantasy1987Scaled powerspells hit a weakness harder and a resistance softer; elemental and slaying weapons get no bonus at all
Final Fantasy III1990Damage multiplieran attack of an element the target is weak to deals double damage
Final Fantasy IV1991Damage multipliera strong weakness quadruples the damage, and some enemies are immune to an element
Final Fantasy VI1994Multiplier with absorbabsorb heals, then nullify, halve, and weak doubles
Every claim about this mechanic, by game (8)
Final Fantasy 1987A physical attack gains 40 hit chance and 4 base damage when its category or element matches the defender's, but neither side of a battle can trigger it: a character's attack reads the character's own category and weakness bytes instead of the weapon's, and a monster's attack is matched against a character's, and all four bytes are always 0.Code
A resisted element halves a damage spell's power and drops the 148 from its doubling chance; a weakness multiplies the power by 1.5 and adds 40 to the chance.Code
Spells that change an enemy's elemental resistance or weakness, such as XFER, have no effect on enemies; the change is never saved, and attacks read those bytes from the enemy's data in ROM.Code
Final Fantasy II 1988When the weapon's type bonus matches the target's type, or the weapon's element matches one of the target's weak elements, the attack power gains 20 before the damage is rolled.Code
Final Fantasy III 1990A physical attack whose element is one of the target's weak elements gets multiplier code 4; one in the target's byte the disassembly calls absorbed elements gets 1, as does any attack when that byte is exactly 2; otherwise 2. The damage routine halves the code, so a weakness doubles the damage and the other byte halves it.Code
Final Fantasy IV 1991A physical attack's element is tested against the target's very weak, weak, immune, and strong elements in that order, and the first match sets a damage multiplier of 4×, 2×, 0, or ½.Code
Final Fantasy III's physical attack has two elemental outcomes besides normal, double for a weakness and half for the target's other element byte; Final Fantasy IV adds very weak (4×) and immune (0) to weak (2×) and strong (½).Code
Final Fantasy VI 1994A damage element that the target absorbs turns the damage into healing; one it nullifies makes the damage 0; one it halves halves it; one it is weak to doubles it, unless the damage is already 32,768 or more. The checks run in that order and the first match applies.Code

References

  1. ^ abA resisted element halves a damage spell's power and drops the 148 from its doubling chance; a weakness multiplies the power by 1.5 and adds 40 to the chance.CodeDisch, FF1 disassembly
    How we know
    8289    AND btlmag_defender_elemresist          ; see if the defender resists this element
    ⋮
    8291      JSR BtlMag_ZeroHitChance              ; ... zero the hit/crit chance
    8292      LSR math_basedamage+1                 ; and halve the damage
    ⋮
    8296    AND btlmag_defender_elemweakness        ; see if they are weak to the element
    ⋮
    8300      JSR MathBuf_Add                       ; crit bonus of +40
    ⋮
    8302                                            ; damage *= 1.5
    
    Final Fantasy Disassembly/bank_0C.asm lines 8288–8313 at cbb87d3 · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-20.

    Checked by a second AI model, 2026-10-21.

    In the claim ledger

  2. ^ abWhen the weapon's type bonus matches the target's type, or the weapon's element matches one of the target's weak elements, the attack power gains 20 before the damage is rolled.Codeeverything8215, FF2 disassembly
    How we know
    163320C/B086: B1 9F     LDA ($9F),Y        ; main hand attack power
    ⋮
    163370C/B090: B1 9F     LDA ($9F),Y        ; main hand type bonus
    163380C/B092: A0 15     LDY #$15
    163390C/B094: 31 A1     AND ($A1),Y        ; target type
    163400C/B096: D0 0A     BNE $B0A2
    163410C/B098: A0 1B     LDY #$1B
    163420C/B09A: B1 9F     LDA ($9F),Y        ; main hand element
    163430C/B09C: A0 16     LDY #$16
    163440C/B09E: 31 A1     AND ($A1),Y        ; target weak elements
    163450C/B0A0: F0 0D     BEQ $B0AF
    163460C/B0A2: 18        CLC 
    163470C/B0A3: A5 44     LDA $44
    ⋮
    
    ff2j.asm lines 16331–16360 at 8d26190 · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-21.

    Checked by a second AI model, 2026-10-21.

    In the claim ledger

  3. ^ abA physical attack whose element is one of the target's weak elements gets multiplier code 4; one in the target's byte the disassembly calls absorbed elements gets 1, as does any attack when that byte is exactly 2; otherwise 2. The damage routine halves the code, so a weakness doubles the damage and the other byte halves it.Codeeverything8215, FF3 disassembly
    How we know
    821530/9FF1: A0 12     LDY #$12
    821630/9FF3: B1 70     LDA ($70),Y        ; target's weak elements
    821730/9FF5: 2D 40 74  AND $7440
    821830/9FF8: F0 04     BEQ $9FFE          ; branch if not weak
    821930/9FFA: A9 04     LDA #$04           ; 4x multiplier
    822030/9FFC: D0 12     BNE $A010
    822130/9FFE: AD 2A 74  LDA $742A          ; absorbed elements
    822231/A001: C9 02     CMP #$02
    822331/A003: F0 05     BEQ $A00A
    822431/A005: 2D 40 74  AND $7440
    822531/A008: F0 04     BEQ $A00E
    822631/A00A: A9 01     LDA #$01           ; 1x multiplier
    ⋮
    
    ff3j.asm lines 8215–8229 at 1acef81 · upstream ↗
    11979; $27: damage multiplier (gets divided by 2)
    
    ff3j.asm line 11979 at 1acef81 · upstream ↗
    1199831/BB5C: A5 27     LDA $27            ; attack multiplier
    1199931/BB5E: 4A        LSR 
    1200031/BB5F: D0 0F     BNE $BB70
    1200131/BB61: 46 19     LSR $19            ; divide by 2
    1200231/BB63: 66 18     ROR $18
    ⋮
    1200931/BB70: 85 1A     STA $1A            ; apply multiplier
    1201031/BB72: 20 F5 FC  JSR $FCF5          ; multiply (16-bit)
    
    ff3j.asm lines 11998–12010 at 1acef81 · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-25.

    Checked by a second AI model, 2026-10-21.

    Checked by a second AI model, 2026-10-25.

    In the claim ledger

  4. ^ abFinal Fantasy III's physical attack has two elemental outcomes besides normal, double for a weakness and half for the target's other element byte; Final Fantasy IV adds very weak (4×) and immune (0) to weak (2×) and strong (½).Codeeverything8215, FF3 disassembly · everything8215, FF4 disassembly
    How we know
    821630/9FF3: B1 70     LDA ($70),Y        ; target's weak elements
    ⋮
    821930/9FFA: A9 04     LDA #$04           ; 4x multiplier
    ⋮
    822130/9FFE: AD 2A 74  LDA $742A          ; absorbed elements
    ⋮
    822631/A00A: A9 01     LDA #$01           ; 1x multiplier
    ⋮
    822831/A00E: A9 02     LDA #$02           ; 2x multiplier
    
    ff3j.asm lines 8216–8228 at 1acef81 · upstream ↗
    227        beq     @c65a       ; branch if not very weak
    228        lda     #$08        ; 4x elemental damage multiplier
    ⋮
    234        lda     #$04        ; 2x elemental damage multiplier
    ⋮
    240        lda     #$00        ; 0x elemental damage multiplier
    ⋮
    246        lda     #$01        ; 1/2x elemental damage multiplier
    
    battle/fight.asm lines 222–247 at a360e2e · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-21.

    Checked by a second AI model, 2026-10-21.

    In the claim ledger

  5. ^ abA damage element that the target absorbs turns the damage into healing; one it nullifies makes the damage 0; one it halves halves it; one it is weak to doubles it, unless the damage is already 32,768 or more. The checks run in that order and the first match applies.Codeeverything8215, FF6 disassembly
    How we know
    40@0bd3:  lda     $11a1
    41        beq     @0c1e
    ⋮
    46        lda     near wTargetProp2::ElemAbsorb,y
    47        bit     $11a1
    48        beq     @0bf2
    49        lda     $f2
    50        eor     #$01
    51        sta     $f2
    52        bra     @0c1e
    53@0bf2:  lda     near wTargetProp2::ElemNull,y
    54        bit     $11a1
    55        beq     @0c00
    ⋮
    
    src/battle/calc_dmg.asm lines 40–72 at 8130132 · upstream ↗
    125@0c76:  phy
    126        php
    127        rol
    128        eor     $f2
    129        lsr
    130        bcc     @0c82       ; branch if damage taken
    
    src/battle/calc_dmg.asm lines 125–130 at 8130132 · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-21.

    Checked by a second AI model, 2026-10-21.

    In the claim ledger

  6. ^A physical attack gains 40 hit chance and 4 base damage when its category or element matches the defender's, but neither side of a battle can trigger it: a character's attack reads the character's own category and weakness bytes instead of the weapon's, and a monster's attack is matched against a character's, and all four bytes are always 0.CodeDisch, FF1 disassembly
    How we know
    4334  : LDA btl_attacker_category       ; see if attacker category matches defender category
    4335    AND btl_defender_category
    ⋮
    4338    LDA btl_attacker_element        ; see if attacker element matches defender elemental weakness
    4339    AND btl_defender_elemweakness
    ⋮
    4345      LDA #MATHBUF_HITCHANCE            ; +40 bonus to hit chance
    ⋮
    4354      LDA math_basedamage               ; and +4 bonus to base damage
    
    Final Fantasy Disassembly/bank_0C.asm lines 4334–4357 at cbb87d3 · upstream ↗
    3998    LDY #btlch_category             ; BUGGED - this is pulling a player's category (always 0).  It should be
    ⋮
    4002    LDY #btlch_elemweak             ; BUGGED - uses player elemental weakness as attack element.  This is always 0
    
    Final Fantasy Disassembly/bank_0C.asm lines 3998–4004 at cbb87d3 · upstream ↗
    4167    LDY #btlch_category                 ; IB:  assigned category.  Always zero?  Players don't have categories.
    ⋮
    4171    LDY #btlch_elemweak                 ; IB:  elemental weakness.  (Always zero?)
    
    Final Fantasy Disassembly/bank_0C.asm lines 4166–4172 at cbb87d3 · upstream ↗
    5668    ; Players start with no elemental weakness or assigned category
    5669    LDA #$00
    5670    LDY #btlch_category
    5671    STA (btl_ib_charstat_ptr), Y
    5672    LDY #btlch_elemweak
    5673    STA (btl_ib_charstat_ptr), Y
    
    Final Fantasy Disassembly/bank_0C.asm lines 5668–5673 at cbb87d3 · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-20.

    Checked by a second AI model, 2026-10-21.

    In the claim ledger

  7. ^Spells that change an enemy's elemental resistance or weakness, such as XFER, have no effect on enemies; the change is never saved, and attacks read those bytes from the enemy's data in ROM.CodeDisch, FF1 disassembly
    How we know
    7976;;    This routine does not save 'btlmag_defender_elemresist' anywhere, and therefore
    7977;;  spells which change enemy resistence (like XFER, AFIR, etc) have no effect when cast
    7978;;  on enemies.
    ⋮
    7982BtlMag_SaveEnemyDefenderStats:
    ⋮
    7986    LDA btlmag_defender_hp          ; update their HP
    ⋮
    7988    STA (btl_entityptr_ibram), Y
    ⋮
    7990    INY
    7991    STA (btl_entityptr_ibram), Y
    ⋮
    7994    LDA btlmag_defender_absorb
    7995    STA (btl_entityptr_ibram), Y
    ⋮
    7997    LDA btlmag_defender_numhitsmult ; their hit multiplier
    ⋮
    7999    STA (btl_entityptr_ibram), Y
    ⋮
    
    Final Fantasy Disassembly/bank_0C.asm lines 7975–8017 at cbb87d3 · upstream ↗
    7898    INY                             ; Y = ENROMSTAT_ELEMWEAK
    7899    LDA (btl_entityptr_obrom), Y    ; elemental weakness from ROM
    7900    STA btlmag_defender_elemweakness
    7901    INY                             ; Y = ENROMSTAT_ELEMRESIST
    7902    LDA (btl_entityptr_obrom), Y    ; elemental resistance from ROM
    7903    STA btlmag_defender_elemresist  ;   BUGGED - loaded from ROM instead of RAM.  Contributes to XFER bug
    
    Final Fantasy Disassembly/bank_0C.asm lines 7898–7903 at cbb87d3 · upstream ↗
    4044    LDY #ENROMSTAT_ELEMWEAK         ; elemental weakness from ROM
    4045    LDA ($86), Y                    ; BUGGED - it should be taking this from enemy RAM stats, not from ROM stats
    
    Final Fantasy Disassembly/bank_0C.asm lines 4044–4046 at cbb87d3 · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-25.

    Checked by a second AI model, 2026-10-21.

    Checked by a second AI model, 2026-10-25.

    In the claim ledger

  8. ^A physical attack's element is tested against the target's very weak, weak, immune, and strong elements in that order, and the first match sets a damage multiplier of 4×, 2×, 0, or ½.Codeeverything8215, FF4 disassembly
    How we know
    223; get elemental multiplier
    224        lda     $2699       ; attack element
    225        sta     $3600
    226        and     $2721
    227        beq     @c65a       ; branch if not very weak
    228        lda     #$08        ; 4x elemental damage multiplier
    ⋮
    232        and     $2720       ; branch if not weak
    233        beq     @c669
    234        lda     #$04        ; 2x elemental damage multiplier
    ⋮
    238        and     $2726       ; branch if not immune
    239        beq     @c678
    240        lda     #$00        ; 0x elemental damage multiplier
    ⋮
    
    battle/fight.asm lines 222–247 at a360e2e · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-21.

    Checked by a second AI model, 2026-10-21.

    In the claim ledger

Sources

Code