data/claims/ff3.yamlFinal Fantasy III (everything8215's disassembly)
Game: Final Fantasy III.
A Fight action rolls 0–99 once per point of the attacker's attack multiplier and counts the rolls under its hit %; Blind halves the hit %, and when a back-row penalty applies (not for a harp or bow and arrow) an attacker in the back row halves it, and a target in the back row halves it again and adds one evaded hit. The target then rolls once per point of its evade multiplier against its evade %, with no evade rolls when it is a toad, mini, or jumping, and its successes are subtracted from the hits, at least 0. The net hits multiply one damage roll, and none is a miss. Each hand rolls separately. ff3/hits
About: Final Fantasy III Multi-hit attack
CodeFinal Fantasy III (NES) disassembly and ROM info ·ff3j.asm#L11953-L11972; [ get number of hits ]
; $24: attack/defense multiplier (no. of hits)
; $25: hit/def %
; $30: number of hits
31/BB28: A9 00 LDA #$00
31/BB2A: 85 30 STA $30
31/BB2C: A5 24 LDA $24 ; no. of hits
31/BB2E: F0 11 BEQ $BB41
31/BB30: A9 63 LDA #$63
31/BB32: 20 B4 BE JSR $BEB4 ; random (0..A)
31/BB35: C5 25 CMP $25 ; hit %
31/BB37: B0 02 BCS $BB3B
…Final Fantasy III (NES) disassembly and ROM info · ff3j.asm#L8151-L8210; start of loop for 2 hands
30/9F6A: AD 41 74 LDA $7441 ; attack multiplier
…
30/9F6F: AD 42 74 LDA $7442 ; hit %
…
30/9F7C: 46 25 LSR $25 ; halve hit %
…
30/9F84: D0 20 BNE $9FA6 ; branch if harp or bow + arrow
…
30/9F8C: 20 97 A3 JSR $A397 ; check for back row penalty
30/9F8F: B0 15 BCS $9FA6 ; branch if no penalty
…
…Checked by claude-agent, 2026-10-21 — read each pinned range against every part of the statementCited by: Final Fantasy III, Hit chance
The damage roll is attack plus a random 0 to half of it, times the elemental multiplier (stored doubled and halved back), plus the crit bonus on a critical, less defense (at least 0; skipped when a character hits a character); that times the net hits, divided by the targets hit, is capped at 9,999. ff3/damage
About: Final Fantasy III Damage formula
Value
{
"spread": 0.5,
"cap": 9999
}ff3j.asm#L11974-L12064; [ calculate damage ]
; $24: no. of hits (before hit % check)
; $25: attack
; $26: defense
; $27: damage multiplier (gets divided by 2)
; $28: crit bonus
; $29: crit flag
; $2A: number of targets hit (divide damage)
…
31/BB4A: 20 B4 BE JSR $BEB4 ; random (0..A)
31/BB4D: 18 CLC
31/BB4E: 65 25 ADC $25
…Checked by claude-agent, 2026-10-21 — read each pinned range against every part of the statementCited by: Damage formula, Final Fantasy III
A Fight action rolls once for a critical, 0–99 against the crit probability, and a critical adds the crit bonus to the damage before defense. Both numbers are the first two bytes of the character's job modifiers, so the job sets them. ff3/critical
About: Final Fantasy III Critical hit
CodeFinal Fantasy III (NES) disassembly and ROM info ·ff3j.asm#L8278-L829131/A077: A9 63 LDA #$63
31/A079: 20 B4 BE JSR $BEB4 ; random (0..A)
31/A07C: CD 30 74 CMP $7430 ; crit probability
31/A07F: B0 04 BCS $A085
31/A081: E6 29 INC $29 ; crit flag
…
31/A093: 20 44 BB JSR $BB44 ; calculate damageFinal Fantasy III (NES) disassembly and ROM info · ff3j.asm#L8234-L823531/A019: AD 31 74 LDA $7431 ; crit bonus
31/A01C: 85 28 STA $28Final Fantasy III (NES) disassembly and ROM info · ff3j.asm#L8824-L8829; [ load character properties ]
; job modifiers format (39/BB1A)
; $00: crit probability
; $01: crit bonus
; $02: run probabilityFinal Fantasy III (NES) disassembly and ROM info · ff3j.asm#L8867-L888831/A4B9: B1 57 LDA ($57),Y ; job id
31/A4BB: 85 46 STA $46
31/A4BD: 20 40 FD JSR $FD40 ; asl2
31/A4C0: 18 CLC
31/A4C1: 65 46 ADC $46
31/A4C3: 69 1A ADC #$1A ; 39/BB1A (job modifiers)
…
31/A4CD: A9 05 LDA #$05 ; size: 5 bytes
…
31/A4D7: 20 DC FD JSR $FDDC ; load rom data to buffer
31/A4DA: A2 00 LDX #$00
31/A4DC: BD 00 74 LDA $7400,X
…Final Fantasy III (NES) disassembly and ROM info · ff3j.asm#L8773-L878231/A421: 20 82 A4 JSR $A482 ; load character properties
…
31/A429: B5 18 LDA $18,X ; copy $18-$4B to character properties
31/A42B: 91 5B STA ($5B),YFinal Fantasy III (NES) disassembly and ROM info · ff3j.asm#L8138-L815030/9F52: B1 70 LDA ($70),Y ; copy target's defense stats
…
30/9F59: E0 0F CPX #$0F
…
30/9F5D: A0 27 LDY #$27
30/9F5F: B1 6E LDA ($6E),Y ; copy attacker's job modifiers
30/9F61: 9D 20 74 STA $7420,X
30/9F64: C8 INY
30/9F65: E8 INX
30/9F66: E0 12 CPX #$12Checked by claude, 2026-10-25 — read each pinned range against every part of the statement, then traced $7430 and $7431 to the job table: load character properties (L8837-L8897) loads 5 bytes from 39/BB1A + job id × 5 and copies them to $40-$44, and nothing else in it writes $40 or $41 before its caller copies $18-$4B into the character's properties (L8773-L8782), so they land at properties $28 and $29; the Fight action copies the attacker's properties $27-$29 into $742F-$7431 (L8144-L8150), after 15 bytes of attack and defense statsCited by: Critical hit, Final Fantasy III
A 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. ff3/elements
About: Final Fantasy III Elemental weakness
Value
{
"weak": 2,
"resisted": 0.5
}ff3j.asm#L8215-L822930/9FF1: A0 12 LDY #$12
30/9FF3: B1 70 LDA ($70),Y ; target's weak elements
30/9FF5: 2D 40 74 AND $7440
30/9FF8: F0 04 BEQ $9FFE ; branch if not weak
30/9FFA: A9 04 LDA #$04 ; 4x multiplier
30/9FFC: D0 12 BNE $A010
30/9FFE: AD 2A 74 LDA $742A ; absorbed elements
31/A001: C9 02 CMP #$02
31/A003: F0 05 BEQ $A00A
31/A005: 2D 40 74 AND $7440
31/A008: F0 04 BEQ $A00E
31/A00A: A9 01 LDA #$01 ; 1x multiplier
…Final Fantasy III (NES) disassembly and ROM info · ff3j.asm#L11979; $27: damage multiplier (gets divided by 2)Final Fantasy III (NES) disassembly and ROM info · ff3j.asm#L11998-L1201031/BB5C: A5 27 LDA $27 ; attack multiplier
31/BB5E: 4A LSR
31/BB5F: D0 0F BNE $BB70
31/BB61: 46 19 LSR $19 ; divide by 2
31/BB63: 66 18 ROR $18
…
31/BB70: 85 1A STA $1A ; apply multiplier
31/BB72: 20 F5 FC JSR $FCF5 ; multiply (16-bit)Checked by claude, 2026-10-25 — read each pinned range against every part of the statement, and the damage routine's use of $27 (L11998-L12010): it shifts the code right once, divides the attack by 2 when that leaves 0, and otherwise multiplies by the resultCited by: Elemental weakness, Final Fantasy III
Run escapes when a roll of 0–100 is under the runner's run probability plus 25 less the average level of the monsters present (at least 0). The run probability is the third byte of the job modifiers. ff3/run
About: Final Fantasy III Fleeing
Value
{
"plus": 25
}ff3j.asm#L26703-L26763; [ action $06: run ]
…
35/A8F2: B1 24 LDA ($24),Y ; sum of monster levels
…
35/A8FE: E6 1A INC $1A ; divide by no. of monsters
…
35/A912: 20 92 FC JSR $FC92 ; divide (16-bit)
35/A915: A0 2A LDY #$2A
35/A917: B1 6E LDA ($6E),Y ; run probability
35/A919: 18 CLC
35/A91A: 69 19 ADC #$19 ; add 25
35/A91C: 38 SEC
…Final Fantasy III (NES) disassembly and ROM info · battle-ram.txt#L266-L268$28 crit probability (39/BB1A, byte 0)
$29 crit bonus (39/BB1A, byte 1)
$2A run probability (39/BB1A, byte 2)Checked by claude-agent, 2026-10-21 — read each pinned range against every part of the statementCited by: Final Fantasy III, Fleeing
determine attack order gives each of the 12 battle slots a random key of 0–255 and passes the list to a routine the disassembly calls "sort attack order list ???"; it then gives each of the four characters a key of agility plus a random 0 to twice agility, sorts those the same way, and writes the characters in that order into the character entries of the first list. Chance places each character among the monsters, and agility orders the characters among themselves. ff3/turn-order
About: Final Fantasy III Turn order
CodeFinal Fantasy III (NES) disassembly and ROM info ·ff3j.asm#L24351-L24425; [ determine attack order ]
34/9777: A0 00 LDY #$00
34/9779: A9 FF LDA #$FF
34/977B: 20 64 A5 JSR $A564 ; random (0..A)
34/977E: 99 00 74 STA $7400,Y
…
34/97A2: 20 57 8F JSR $8F57
…
34/97BF: B1 57 LDA ($57),Y ; agility
34/97C1: 85 3C STA $3C
34/97C3: 0A ASL
34/97C4: 20 64 A5 JSR $A564 ; random (0..A)
…Final Fantasy III (NES) disassembly and ROM info · ff3j.asm#L23241-L23243; [ sort attack order list ??? ]
; recursive subroutineChecked by claude-agent, 2026-10-21 — read each pinned range against every part of the statementCited by: Final Fantasy III, Final Fantasy IV, Turn order
On the world map, a step starts a battle when a random byte is under the rate loaded for the current world and vehicle; the listing's comments give those rates as 5 on foot, by canoe, or by ship, 7 underwater, and 18 for one chocobo case the disassembly marks with "???". ff3/encounter-rate
About: Final Fantasy III Random encounter
Value
{
"onFoot": 5,
"underwater": 7,
"of": 256
}ff3j.asm#L46599-L46659; [ check random battle ]
…
3D/BC75: AD 47 9D LDA $9D47 ; 2E/9D47 (no vehicle battle rate: 5)
…
3D/BC7C: AD 48 9D LDA $9D48 ; 2E/9D48 (canoe battle rate: 5)
…
3D/BC83: AD 49 9D LDA $9D49 ; 2E/9D49 (ship battle rate: 5)
…
3D/BCB8: AD 4E 9D LDA $9D4E ; 2E/9D4E (chocobo ??? battle rate: 18)
…
3D/BCC2: AD 4F 9D LDA $9D4F ; 2E/9D4F (underwater battle rate: 7)
3D/BCC5: 85 80 STA $80
…Checked by claude-agent, 2026-10-21 — read each pinned range against every part of the statementThe rates are the values in the listing's comments on each load from bank $2E; the data bytes themselves aren't in the listing, and no Japanese ROM is on hand to read them.
Cited by: Final Fantasy III, Random encounter
Final Fantasy II rolls damage, attack plus 0 to attack less defense, and a critical for each hit that gets through and adds them up; Final Fantasy III rolls damage once, attack plus 0 to half of it, and multiplies it by the net hits, and its single critical roll uses the job's crit probability in place of Final Fantasy II's fixed roll under 5. ff3/damage-changes-ff2
About: Final Fantasy III Damage formula
CodeFinal Fantasy II (NES) disassembly and ROM info ·ff2j.asm#L18030-L18073; start of hit loop
…
0C/BCAF: 65 44 ADC $44 ; attack * (0..1)
…
0C/BCE2: C9 05 CMP #$05
0C/BCE4: B0 11 BCS $BCF7 ; 5% chance for crit
…
0C/BCF7: 88 DEY ; next hit
0C/BCF8: D0 AD BNE $BCA7Final Fantasy III (NES) disassembly and ROM info · ff3j.asm#L11989-L1199231/BB4A: 20 B4 BE JSR $BEB4 ; random (0..A)
31/BB4D: 18 CLC
31/BB4E: 65 25 ADC $25
31/BB50: 85 18 STA $18 ; +$18 = attack * (1..3/2)Final Fantasy III (NES) disassembly and ROM info · ff3j.asm#L12042-L1204631/BBB3: AD 7C 00 LDA $007C ; total no. of hits
…
31/BBBD: 85 18 STA $18 ; +$18 = net damageFinal Fantasy III (NES) disassembly and ROM info · ff3j.asm#L8278-L828231/A079: 20 B4 BE JSR $BEB4 ; random (0..A)
31/A07C: CD 30 74 CMP $7430 ; crit probabilityChecked by claude-agent, 2026-10-21 — read each pinned range against every part of the statementCited by: Critical hit, Damage formula, Final Fantasy III, Multi-hit attack