Claim set · data/claims/ff3.yaml

Final 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 statement

Cited 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
}
CodeFinal Fantasy III (NES) disassembly and ROM info · 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 statement

Cited 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 stats

Cited 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
}
CodeFinal Fantasy III (NES) disassembly and ROM info · 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 result

Cited 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
}
CodeFinal Fantasy III (NES) disassembly and ROM info · 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 statement

Cited 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 statement

Cited 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
}
CodeFinal Fantasy III (NES) disassembly and ROM info · 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 statement

The 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 statement

Cited by: Critical hit, Damage formula, Final Fantasy III, Multi-hit attack