data/claims/ff2.yamlFinal Fantasy II (everything8215's disassembly)
Game: Final Fantasy II.
A Fight action rolls 0–100 once per point of the attacker's hit multiplier (adjusted by haste or slow, at least 1) and counts the rolls under its hit %, then rolls once per point of the target's evade multiplier and counts the rolls under its evade %. The evaded rolls are subtracted from the hits, at least 0, and the rest are the hits that deal damage. Blind halves the attacker's hit % and the target's evade %. The check returns no successes when the attacker is a toad or mini, and the disassembly marks as a bug that the evade check reads the attacker's status too. ff2/hits
About: Final Fantasy II Multi-hit attack
CodeFinal Fantasy II (NES) disassembly and ROM info ·ff2j.asm#L16227-L16290; [ do fight effect ]
…
0C/AFBF: B1 9F LDA ($9F),Y ; main hand hit multiplier
…
0C/AFC4: 71 9F ADC ($9F),Y ; add haste/slow modifier
…
0C/AFD1: E9 14 SBC #$14 ; subtract 20
…
0C/AFDD: A2 01 LDX #$01 ; min 1
…
0C/AFE6: B1 9F LDA ($9F),Y ; main hand hit %
…
…Final Fantasy II (NES) disassembly and ROM info · ff2j.asm#L17943-L17971; [ check for hit ]
; $44: hit %
; $46: number of hit attempts
; $48: number of successful hits (out)
; *** bug *** should use target status for evade checks
0C/BC2C: A9 00 LDA #$00 ; start with 0 hits
…
0C/BC40: A4 46 LDY $46
0C/BC42: A2 00 LDX #$00
0C/BC44: A9 64 LDA #$64
0C/BC46: 20 11 FD JSR $FD11 ; random (X..A)
0C/BC49: 38 SEC
…Checked by claude-agent, 2026-10-21 — read each pinned range against every part of the statementCited by: Final Fantasy II, Hit chance, Multi-hit attack
Each hit that gets through deals attack plus a random 0 to attack, less the target's defense (at least 0), and the hits add up. Each hit also rolls 0–100, and a roll under 5 makes it critical, adding the attack again. ff2/damage
About: Final Fantasy II Damage formula
Value
{
"critBelow": 5,
"rollMax": 100
}ff2j.asm#L18008-L18074; [ calculate damage ]
; $44: attack
; $46: defense
; $48: number of hits
; +$4A: damage
…
; start of hit loop
0C/BCA7: A2 00 LDX #$00
0C/BCA9: A5 44 LDA $44
0C/BCAB: 20 11 FD JSR $FD11 ; random (X..A)
0C/BCAE: 18 CLC
0C/BCAF: 65 44 ADC $44 ; attack * (0..1)
…Checked by claude-agent, 2026-10-21 — read each pinned range against every part of the statementCited by: Critical hit, Damage formula, Damage modifier, Final Fantasy II, Multi-hit attack
When 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. ff2/weakness
About: Final Fantasy II Elemental weakness
Value
{
"attackBonus": 20
}ff2j.asm#L16331-L163600C/B086: B1 9F LDA ($9F),Y ; main hand attack power
…
0C/B090: B1 9F LDA ($9F),Y ; main hand type bonus
0C/B092: A0 15 LDY #$15
0C/B094: 31 A1 AND ($A1),Y ; target type
0C/B096: D0 0A BNE $B0A2
0C/B098: A0 1B LDY #$1B
0C/B09A: B1 9F LDA ($9F),Y ; main hand element
0C/B09C: A0 16 LDY #$16
0C/B09E: 31 A1 AND ($A1),Y ; target weak elements
0C/B0A0: F0 0D BEQ $B0AF
0C/B0A2: 18 CLC
…Checked by claude-agent, 2026-10-21 — read each pinned range against every part of the statementCited by: Damage modifier, Elemental weakness, Final Fantasy II
A character's Run command rolls 0–100 and escapes when the roll is under the runner's own evade %, unless the battle forbids escape; no level or enemy stat enters. ff2/run
About: Final Fantasy II Fleeing
CodeFinal Fantasy II (NES) disassembly and ROM info ·ff2j.asm#L15267-L152810C/A865: C9 FE CMP #$FE
0C/A867: D0 23 BNE $A88C ; branch if not running away
0C/A869: AD 4B 7B LDA $7B4B
0C/A86C: D0 18 BNE $A886
0C/A86E: A2 00 LDX #$00
0C/A870: A9 64 LDA #$64
0C/A872: 20 11 FD JSR $FD11 ; random (X..A)
0C/A875: A0 01 LDY #$01
0C/A877: F1 9F SBC ($9F),Y ; check vs. evade %
0C/A879: B0 0B BCS $A886 ; branch if check failed
0C/A87B: A9 01 LDA #$01
0C/A87D: 8D B7 7C STA $7CB7 ; ran away
…Final Fantasy II (NES) disassembly and ROM info · ram-map.txt#L575-L576 — The battle stats at the runner's pointer, so offset 1 is the runner's evade %.$00 evade mult.
$01 evade %Checked by claude-agent, 2026-10-21 — read each pinned range against every part of the statementCited by: Final Fantasy II, Fleeing
Final Fantasy rolls once per swing against a single hit chance that already has the defender's evade subtracted; Final Fantasy II splits that into two sets of rolls, the attacker's against its hit % and the defender's against its evade %, and subtracts the defender's successes from the attacker's. ff2/hits-changes-ff1
About: Final Fantasy II Hit chance
CodeFinal Fantasy Disassembly ·Final Fantasy Disassembly/bank_0C.asm#L4377-L4399LDA #MATHBUF_HITCHANCE ; add their hit rate to their hit chance
…
LDX btl_defender_evade ; the hit chance.Final Fantasy Disassembly · Final Fantasy Disassembly/bank_0C.asm#L4471-L4494LDX #200
JSR RandAX ; [0,200]
…
CMP math_randhit ; if hit chance is < randhit value, then this was a miss. Jump aheadFinal Fantasy II (NES) disassembly and ROM info · ff2j.asm#L16260-L162900C/AFF9: 20 2C BC JSR $BC2C ; check for hit
…
0C/B006: B1 A1 LDA ($A1),Y ; target's evade multiplier
…
0C/B00B: B1 A1 LDA ($A1),Y ; target's evade %
…
0C/B020: 20 2C BC JSR $BC2C ; check for hit
…
0C/B02C: A5 52 LDA $52 ; subtract evaded hitsChecked by claude-agent, 2026-10-21 — read each pinned range against every part of the statementCited by: Final Fantasy, Final Fantasy II, Hit chance, Multi-hit attack