data/claims/lufia.yamlLufia & the Fortress of Doom's battle and field rules (USA ROM, our own disassembly of its code)
Game: Lufia & the Fortress of Doom.
The game's random numbers come from a table of 55 bytes that it steps through and, each time it wraps, mixes with itself (each byte XORed with another of the table): random(n) is n times the next byte, divided by 256 and rounded down, so it runs from 0 to n − 1 and takes only n's low byte. lufia/random
About: Lufia & the Fortress of Doom Random number generator
CodeLufia & the Fortress of Doom (USA) ·0x43829-0x4385A — $08:B829-$B85A, random(n): the next of 55 bytes at $1466 (the index wraps at $37, when $B8A1 refills them) times n's low byte, keeping the product's high byteLufia & the Fortress of Doom (USA) · 0x438A1-0x438BF — $08:B8A1-$B8BF, at the wrap: bytes 0-$17 are XORed with bytes $1F-$36, then bytes $18-$36 with bytes 0-$1E as they now standChecked by claude-agent, 2026-11-08 — disassembled $08:B829 and $08:B8A1 from the ROMRevised after a check by a second AI model, 2026-11-08.Random battles start from a roll on each step: on a map that has them, outside some map states that skip the roll (not identified here), a step taken while the party's step count is 4 or more starts a battle when random(128) is below 10 × danger ÷ 128, halved off the world map, where danger is 128 unless something changes it (see the danger claim). So with danger 128 a step after the fourth starts a battle with chance 10 in 128 (1 in 12.8) on the world map and 5 in 128 (1 in 25.6) elsewhere, computed. In one state the code tests (two flags not identified here) the roll is out of 255 instead. While a step count that an item or spell effect sets is above 0 and danger is 192 or more, every step starts a battle, the fourth-step wait included; that count goes down by one a step in some map states. lufia/encounter-roll
About: Lufia & the Fortress of Doom Random encounter
Value: threshold 10 · range 128 · wait 4
CodeLufia & the Fortress of Doom (USA) ·0x8050-0x8064 — $01:8050-$8064: the step roll runs only if $07B4 and $0D33 are 0 and $01:B440 returns carry clearLufia & the Fortress of Doom (USA) · 0xB440-0xB458 — $01:B440-$B458: carry set (no roll) when $078F is 2 to $7F, or $078F is 1 and $0793 is 2 or 8Lufia & the Fortress of Doom (USA) · 0x881D-0x8875 — $01:881D-$8875: no roll while $07B4, $94 or two object bytes are nonzero, while $078B is 0, or if the step count hasn't changed; if $16BA is set and danger ($16B5) >= $C0, battle; else no battle if the step count ($078C) < 4; else battle if random(range) < threshold; then the count is marked as rolledLufia & the Fortress of Doom (USA) · 0x8876-0x88AA — $01:8876-$88AA: threshold = 10 x danger x 2 / 256; halved unless $077F is 1; range = $80, or $FF when $078F is 1 and $0793 is 0Lufia & the Fortress of Doom (USA) · 0x8C86-0x8CAE — $01:8C86-$8CAE, each step: INC $078C, the step count; then $16BA counts down by 1 while above 0 when $078F is 1 and $0793 is 0, or when $0789 is $10 and either $078F isn't 1 or $0793 isn't 2Lufia & the Fortress of Doom (USA) · 0x8967-0x896F — $01:8967-$896F: the formation and both step counters set to 0Lufia & the Fortress of Doom (USA) · 0x43829-0x4385A — $08:B829-$B85A, random(n): the next of 55 bytes at $1466 (the index wraps at $37, when $B8A1 refills them) times n's low byte, keeping the product's high byteLufia Forge: a ROM hack toolkit for Lufia & the Fortress of Doom (SNES) · LufiaForge/LufiaForge/Core/Battle/Encounters.cs#L8-L10/// Steps ($01:881D): after 4 safe steps, each step starts a battle when random(128) < danger x rate / 128,
/// where danger ($16B5) is normally 128 and rate is the constant at <see cref="RateOffset"/> (10); the chance
/// is halved away from the world map. So 10 = 1 in 12.8 steps on the world map, 1 in 25.6 elsewhere.Checked by claude-agent, 2026-11-08 — disassembled $01:881D-$88AA from the ROM, and found the step count's increment and reset by searching for its storesRevised after a check by a second AI model, 2026-11-08.Lufia Forge reads $077F = 1 as the world map, and the rate as the constant 10 in the LDA at $01:8876; the chance per step here is the code's arithmetic, not a measured rate.
Cited by: Random encounter
The Monster Ring raises the chance of a random battle on the world map from 10 to 15 in 128 a step, and the Clear Silk to 11; off the world map the Monster Ring raises it from 5 to 7 in 128, and the Clear Silk leaves it at 5. The world-map figures are the game's threshold routine given the world-map flag, since no run reached the world map, and every figure assumes the roll is out of 128: in one movement state not followed here it is out of 255 (see the roll claim). The roll scales by a danger number, 128 by default. Each party member's encounter number is the average of the nonzero encounter numbers on the five pieces they wear besides the weapon, the party's is the average of its members' nonzero ones, and danger is the party's number when it has one. Of the 256 items only two have an encounter number: the Monster Ring (192) and the Clear Silk (147). The code also has a second danger source, set by an effect handler that no known item or spell has been traced to; by the routine's arithmetic, with both set danger is their mean, or 192 when they add past 255, and with that one alone it is that one. Measured in MesenCE on the prologue's first map, with the items put on the party: danger 128 with the prologue's own equipment, 147 with the Clear Silk on one member or on all four, 192 with the Monster Ring, and 169 with both, on one member or on two; with the second source written directly, 123 (147 and 100), 192 (192 and 200) and 200 alone. A walk on that map rolled against thresholds of 5, 5 and 7 in 128 with neither item, the Clear Silk and the Monster Ring. lufia/encounter-danger
About: Lufia & the Fortress of Doom Random encounter
Value
{
"default": 128,
"overflow": 192,
"chance": {
"none": [
10,
5
],
"clearSilk": [
11,
5
],
"monsterRing": [
15,
7
]
}
}0x4732C-0x47356 — $08:F32C-$F356: if $16B8 and $16B6 are both nonzero, danger = their sum / 2 (rotating the carry back in), or $C0 if the sum carries; else whichever is set; else $80Lufia & the Fortress of Doom (USA) · 0x47916-0x47945 — $08:F916-$F945: sum the four members' nonzero bytes at $1768, count them, divide, and set $16B8 unless the quotient is $FFLufia & the Fortress of Doom (USA) · 0x47858-0x478D1 — $08:F858-$F8D1, the equip step: a member's byte $1768,X = the average of the nonzero property 23 bytes of the five pieces after the weapon, unless it is $FFLufia & the Fortress of Doom (USA) · 0x47113-0x4712C — $08:F113-$F12C, an effect handler: $16B6 = the effect's first byte, $16BA (a step count) = its second, then recompute dangerLufia & the Fortress of Doom (USA) · 0x55A00-0x5787F — the item records from $0A:DA00; the probe's scan of all 256 records finds property 23, the encounter number, only on Clear Silk (item 56, 147) and Monster Ring (item 138, 192)Lufia & the Fortress of Doom (USA) · 0x47999-0x47A2C — $08:F999-$FA2C, the record reader the equip step calls for each pieceLufia & the Fortress of Doom (USA) · 0x8876-0x88AA — $01:8876-$88AA, the step roll's threshold routine the probe calls: threshold = 10 x danger x 2 / 256, halved unless $077F is 1; range $80, or $FF when $078F is 1 and $0793 is 0 (lufia/encounter-roll)Checked by claude-agent, 2026-11-08 — disassembled $08:F32C, $08:F916, the equip step at $08:F858 and $08:F113 from the ROM; ran probes/lufia/encounter-danger.mjs, which calls the equip routine $08:F857 and the threshold routine $01:8876 from the field's main loop: member bytes, the party byte, danger and both thresholds match the statement in all nine cases, a scan of the 256 item records finds the encounter number on the two items only, and the walk's own step rolls use the threshold the routine gaveRevised after a check by a second AI model, 2026-11-08.Revised after a check by a second AI model, 2026-11-08.Probe: probes/lufia/encounter-danger.mjsLufia Forge names property 23 "Encounter rate (?)"; in the item table only Clear Silk (item 56) and Monster Ring (item 138) carry it. The probe puts the items in the party's equipment slots in RAM and calls the game's equip routine $08:F857 for each member and the threshold routine $01:8876, from the field's main loop at $01:8083; the world-map call sets the current-map byte $077F to 1, the value Lufia Forge reads as the world map. The second source is $16B6, set by the handler at $08:F113; the probe writes it directly.
Cited by: Random encounter
A random battle's eight monster slots are filled by draws from the encounter group, each draw putting 1-3 of one monster in consecutive slots. A roll of k + random(k + 1), with k a number set for the battle, then decides how many of the first slots stay filled; fixed formations skip it. Then the slots are kept in order while three limits hold: at most 3 different monsters (a run of the same monster counts once), a total of one picture-size value per different monster below 30, and a total of another below 64; the first slot that breaks a limit is emptied with every later slot not part of a kept run. lufia/battle-size
About: Lufia & the Fortress of Doom Random encounter
CodeLufia & the Fortress of Doom (USA) ·0x45215-0x45287 — $08:D215-$D287: fill eight monster slots, a draw ($08:D9D2) giving a monster and a count that fills that many slots in a rowLufia & the Fortress of Doom (USA) · 0x452A2-0x452C8 — $08:D2A2-$D2C8: unless the formation is $E6 or more, the slots from $14CE + random($14CE + 1) up to 8 are emptied (the loop stops at exactly 8)Lufia & the Fortress of Doom (USA) · 0x452C9-0x45361 — $08:D2C9-$D361: for each slot with a picture: a fourth picture, $DE (sum of a size nibble + 1) reaching $1E, or $DC (sum of a size byte) reaching $40 empties it and the later slots not marked as kept; else $08:D56C marks it and the run of the same monster after it as keptLufia & the Fortress of Doom (USA) · 0x4556C-0x4558F — $08:D56C-$D58F: clear this slot's picture mark, and the following slots' while they show the same monsterA random battle's encounter group (1-69) points to a list of subgroups: each monster draw picks one of the listed subgroups at random, then counts random(4) + 1 steps through its non-empty monster slots, wrapping round to the first, and takes 1-3 of the monster it stops on. So a subgroup with empty slots favours its first ones: subgroup 1 (Big Newt, Madshroom, Jellyfish) gives Big Newt 2 draws in 4 (computed). CodeChecked by claude-agent, 2026-11-08 — disassembled the battle setup at $08:D215-$D361 and $08:D56C from the ROMRevised after a check by a second AI model, 2026-11-08.Cited by: Random encounter
Each monster enters battle with its table HP plus random(HP ÷ 8 + 1), or random(255) when the HP is 2040 or more: up to an eighth more below 2040 HP, at most 254 more from 2040 up (computed); a monster whose HP is 65535 gets no bonus. lufia/monster-hp
0xF63C-0xF665 — $01:F63C-$F665: the HP word goes through $F666, and the result is both the current and the maximum HPLufia & the Fortress of Doom (USA) · 0xF666-0xF67C — $01:F666-$F67C: HP + 1 = 0: none; HP >= $7F8: random($FF); else random(HP / 8 + 1)Lufia & the Fortress of Doom (USA) · 0x43829-0x4385A — $08:B829-$B85A, random(n): the next of 55 bytes at $1466 (the index wraps at $37, when $B8A1 refills them) times n's low byte, keeping the product's high byteEach of the 165 monsters has a record reached through a table of 165 offsets at the start of the monster data: a 10-letter name, then fixed fields, then an ailment group (a mask byte and one byte per set bit), an element group (a mask and one byte per set bit of its low 7), and a count byte with that many more. The battle loader copies the name and the fixed bytes into the fighter, widening the bytes at +24 to +26 to words; the reward code reads the experience as a word at +27, the gold as a word at +30, the dropped item at +32 and its rate at +33. Lufia Forge names the words at +16, +20 and +22 HP, ATP and DFP and treats the word at +18 as MP, the bytes at +24 to +26 M.DEF, AGL and MGR, the byte at +12 the element the monster is weak to and +13 the physical damage it then takes in sixteenths, and the element group's bytes magic damage multipliers in sixteenths. 77 monsters carry a drop. HP runs up to 65535 (Gades). CodeChecked by claude-agent, 2026-11-08 — disassembled the end of the battle loader at $01:F63C and $01:F666 from the ROMRevised after a check by a second AI model, 2026-11-08.A defeated monster adds its table experience to the battle's total; its gold plus a random bonus (each byte of gold ÷ 8 rolled separately, so up to about an eighth more, computed); and, if it has a drop item, the item when random(255) is below its rate byte, a chance of (rate + 1) in 256 for rates 1 to 255 (computed). One drop is kept per battle: a later winning roll replaces it. lufia/rewards
About: Lufia & the Fortress of Doom Item drop table
CodeLufia & the Fortress of Doom (USA) ·0x43C26-0x43CA6 — $08:BC26-$BCA6: experience word into the 3-byte total; gold: bonus low byte = random(low byte of gold/8), high byte = random(high byte of gold/8), total += gold + bonus; if the item byte isn't 0 and random($FF) < rate, $1420 = itemLufia & the Fortress of Doom (USA) · 0x43829-0x4385A — $08:B829-$B85A, random(n): the next of 55 bytes at $1466 (the index wraps at $37, when $B8A1 refills them) times n's low byte, keeping the product's high byteEach of the 165 monsters has a record reached through a table of 165 offsets at the start of the monster data: a 10-letter name, then fixed fields, then an ailment group (a mask byte and one byte per set bit), an element group (a mask and one byte per set bit of its low 7), and a count byte with that many more. The battle loader copies the name and the fixed bytes into the fighter, widening the bytes at +24 to +26 to words; the reward code reads the experience as a word at +27, the gold as a word at +30, the dropped item at +32 and its rate at +33. Lufia Forge names the words at +16, +20 and +22 HP, ATP and DFP and treats the word at +18 as MP, the bytes at +24 to +26 M.DEF, AGL and MGR, the byte at +12 the element the monster is weak to and +13 the physical damage it then takes in sixteenths, and the element group's bytes magic damage multipliers in sixteenths. 77 monsters carry a drop. HP runs up to 65535 (Gades). CodeChecked by claude-agent, 2026-11-08 — disassembled $08:BC26 from the ROM; the drop chance is computed from random's rangeChecked by a second AI model, 2026-11-08.Cited by: Item drop table
A physical attack hits when random(255) is below the attacker's hit byte: a monster's is 255, so a monster's attack always passes this roll (computed), and a party member's is the second byte of their weapon's property 14 (255 if it is 0): 255 on 40 of the 42 weapons, 127 on the Luck Blade, 51 on the Gloom Pick. Before the roll, when a party member attacks a party member, the target's two status flags of value $0C are cleared (not identified here). lufia/physical-hit
About: Lufia & the Fortress of Doom Hit chance
CodeLufia & the Fortress of Doom (USA) ·0x43E9E-0x43EA3 — $08:BE9E: the hit byte $7EDAA0 = $FF before each actionLufia & the Fortress of Doom (USA) · 0x43F75-0x43FC3 — $08:BF75-$BFC3: for a party attacker, the hit byte = $1760,X (and the weapon's other bytes), and if the target is a party member its status bits $0C are cleared; then if random($FF) >= the hit byte, the attack missesLufia & the Fortress of Doom (USA) · 0x47858-0x478D1 — $08:F858-$F8D1, the equip step: $1760,X = the weapon's property 14 second byte, or $FF if it is 0Lufia & the Fortress of Doom (USA) · 0x43829-0x4385A — $08:B829-$B85A, random(n): the next of 55 bytes at $1466 (the index wraps at $37, when $B8A1 refills them) times n's low byte, keeping the product's high byteEach of the 256 items has a record reached through a table of 256 offsets: a 12-letter name, bytes at +12 to +15, a word at +16, a mask byte at +20, one record-relative pointer for each set bit of the mask's low six, and then a list of three-byte properties (an id and a word) ended by 0, which the record reader spreads into one word per property id. The equip code takes a weapon's property 14 second byte as the wearer's hit byte (255 when it is 0), property 22 as the weapon's special, and averages the nonzero property 23 bytes of the other five pieces into the wearer's encounter byte. The other meanings are Lufia Forge's alone: it names +12 the type, +13 the equipment slot (1 weapon to 6 ring), the high four bits of +14 who can equip it (Hero, Lufia, Aguro, Jerin), the word at +16 the price, and the property ids 5 ATP, 6 DFP, 7 MGR, 8 AGL, 9 STR, 10 INT, 14 weight and hit chance, and the rest. 163 items have a slot by that reading; the 57 with a nonzero mask (the usable ones) have pointers before their property list. CodeChecked by claude-agent, 2026-11-08 — disassembled the action setup at $08:BE77, the attack at $08:BF75 and the equip step at $08:F858 from the ROMRevised after a check by a second AI model, 2026-11-08.No agility or evade test was found on this path; the target's checks that end an attack early (a target no longer there, an attack of 0) are separate.
A physical hit's damage starts from ATP − DFP: (ATP − DFP + 1) ÷ 2 + 1 when ATP is higher, 2 when they are within 16 of each other the other way (or equal), and 0 when DFP is 16 or more higher. A critical hit doubles that base, and makes a base of 0 into 2. The base is then multiplied by a factor of 96 plus the mean of (base ÷ 16 + 2) rolls of random(64), over 128, so the larger the base the closer the factor stays to about 127 (computed), and the mean, rounded up, of two rolls of random(r) is added, where r is ATP ÷ 8 rounded to the nearest, plus 1. DFP counts one and a half times against a target in one state the code tests (not identified here), and an attack with ATP 0 misses. Steps for slayer types, elements, weapon specials, a stone target (no damage) and drain follow and aren't covered here. lufia/physical-damage
About: Lufia & the Fortress of Doom Damage formula
CodeLufia & the Fortress of Doom (USA) ·0x43FCF-0x43FE2 — $08:BFCF-$BFE2: attack = $1452, defense = $1456, then the damage routineLufia & the Fortress of Doom (USA) · 0x440A5-0x4417C — $08:C0A5-$C17C: miss if the target fails its check or attack is 0; d = attack - defense: d > 0: (d + 1)/2 + 1; d = 0 or -16 < d < 0: 2; d <= -16: 0; critical doubles it ($C01E); n = base/16 + 2; factor = 96 + (sum of n random(64)) / n; damage = base x factor x 2 / 256; r = (attack >> 3) + 1 + the carry out (bit 2 of attack); + (random(r) + random(r)) / 2 with the carry added; then the type-match, element, weapon-special and status stepsLufia & the Fortress of Doom (USA) · 0x4401E-0x44045 — $08:C01E-$C045: if the critical flag is set: base x 2 (a base of 0 becomes 2)Lufia & the Fortress of Doom (USA) · 0x439DB-0x43A04 — $08:B9DB-$BA04: the target's stat $18 (DFP), times 1.5 when the target's state ($BD69) is 1Lufia & the Fortress of Doom (USA) · 0x43A05-0x43A10 — $08:BA05-$BA10: the attacker's stat $10 (ATP)Lufia & the Fortress of Doom (USA) · 0x43829-0x4385A — $08:B829-$B85A, random(n): the next of 55 bytes at $1466 (the index wraps at $37, when $B8A1 refills them) times n's low byte, keeping the product's high byteLufia & the Fortress of Doom (USA) · 0x4730C-0x4732B — $08:F30C-$F32B: the monster record's offset per stat code: $10 is +$15 and $18 is +$17 (record +20 and +22)Lufia Forge: a ROM hack toolkit for Lufia & the Fortress of Doom (SNES) · LufiaForge/LufiaForge/Modules/GameData/GameDataLabels.cs#L133-L137public static readonly ByteOption[] StatKinds =
{
new(0x00, "Nothing"), new(0x10, "ATP"), new(0x18, "DFP"), new(0x20, "AGL"),
new(0x28, "INT"), new(0x38, "MGR"),
};Checked by claude-agent, 2026-11-08 — disassembled the damage routine at $08:C0A5 and its callers at $08:BFCF from the ROM; Lufia Forge's stat codes ($10 ATP, $18 DFP) quotedRevised after a check by a second AI model, 2026-11-08.The stat codes $10 and $18 are named ATP and DFP by Lufia Forge's stat list for items; for a monster the lookup's offset table ($08:F30C) sends them to the record's words at +20 and +22, which the monsters table carries as ATP and DFP. The rolls use random's low-byte rule, so an ATP of 2040 or more wraps the second term's range.
Cited by: Damage formula
A physical attack between the two sides is a critical hit when random(255) is 1 to 5, a chance of 5 in 256 (computed), unless the attacker is a party member whose weapon has a special effect or the target is a party member with one status flag (value 2, not identified here); a critical doubles the damage's base. lufia/critical-hit
About: Lufia & the Fortress of Doom Critical hit
CodeLufia & the Fortress of Doom (USA) ·0x43DC7-0x43E12 — $08:BDC7-$BE12: flag = 0; skip if the attacker's weapon special ($176C,X) isn't 0, the target has status bit $02, the target fails its check, or both are on one side; if random($FF) is 1-5, flag = 1Lufia & the Fortress of Doom (USA) · 0x4401E-0x44045 — $08:C01E-$C045: the flag doubles the baseLufia & the Fortress of Doom (USA) · 0x43829-0x4385A — $08:B829-$B85A, random(n): the next of 55 bytes at $1466 (the index wraps at $37, when $B8A1 refills them) times n's low byte, keeping the product's high byteChecked by claude-agent, 2026-11-08 — disassembled $08:BDC7 and $08:C01E from the ROMRevised after a check by a second AI model, 2026-11-08.The party's Run command never escapes a fixed formation (the bosses'), always escapes in one battle state the code tests (not identified here), and otherwise escapes when random(A ÷ 4) is at least random(M ÷ 2), where A is the highest AGL among the party members present and M the highest among the monsters still in the battle, each counting its base plus a second stat word that the lookup adds to every stat (cleared to 0 when the monsters load and for the party at a step of the battle code; what raises it wasn't traced). So with equal agility the party's roll is out of half the monsters' range, and an escape succeeds about 1 time in 4 (26% at AGL 120, 28% at 40, computed for an evenly spread random byte). lufia/run
About: Lufia & the Fortress of Doom Fleeing
CodeLufia & the Fortress of Doom (USA) ·0x430B4-0x430CB — $08:B0B4-$B0CB, the Run command: JSL $01:F492; on carry set, $142E = 4 (the battle ends)Lufia & the Fortress of Doom (USA) · 0xF492-0xF4BA — $01:F492-$F4BA: formation >= $E6: fail; $7EDD09 = 1: succeed; else a = $F4BB, b = $F4F1, succeed (and INC $135C) if a >= bLufia & the Fortress of Doom (USA) · 0xF4BB-0xF4F0 — $01:F4BB-$F4F0: over the four slots with $156F,X set, the largest $1700,Y + $1730,Y (stat $20, AGL: base plus bonus); random(that / 4)Lufia & the Fortress of Doom (USA) · 0xF4F1-0xF534 — $01:F4F1-$F534: over the monsters without bit $20 of $142F,X, the largest of the words at +$1B and +$4A of its battle record; random(that / 2)Lufia & the Fortress of Doom (USA) · 0x47203-0x47298 — $08:F203-$F298: a stat by code: for party slot s the base at $16E0 + code + 2s and the bonus at $1710 + code + 2s, so AGL ($20) is $1700 and $1730; for a monster the offsets come from two tables at $08:F30CLufia & the Fortress of Doom (USA) · 0x4730C-0x4732B — $08:F30C-$F32B: the monster record's base and bonus offset per stat code; AGL's are +$1B and +$4ALufia & the Fortress of Doom (USA) · 0xF274-0xF2A1 — $01:F274-$F2A1: for the four slots, the second words at $1720, $1728, $1730 (AGL's), $1738, $1740 and $1748 = 0Lufia & the Fortress of Doom (USA) · 0xF583-0xF593 — $01:F583-$F593, the monster loader: the fighter's $80 bytes are zeroed before the record is copiedLufia & the Fortress of Doom (USA) · 0xF5C7-0xF5D7 — $01:F5C7-$F5D7, the monster loader: record bytes 24-26 (M.DEF, AGL, MGR) become the words at +$19, +$1B, +$1DLufia & the Fortress of Doom (USA) · 0x43829-0x4385A — $08:B829-$B85A, random(n): the next of 55 bytes at $1466 (the index wraps at $37, when $B8A1 refills them) times n's low byte, keeping the product's high byteLufia Forge: a ROM hack toolkit for Lufia & the Fortress of Doom (SNES) · LufiaForge/LufiaForge/Modules/GameData/GameDataLabels.cs#L133-L137public static readonly ByteOption[] StatKinds =
{
new(0x00, "Nothing"), new(0x10, "ATP"), new(0x18, "DFP"), new(0x20, "AGL"),
new(0x28, "INT"), new(0x38, "MGR"),
};Checked by claude-agent, 2026-11-08 — found the Run command's call at $08:B0C0 by a search for calls of $01:F492 after reading the random routine's callers, and disassembled $01:F492-$F534 and the stat lookup at $08:F203 from the ROMRevised after a check by a second AI model, 2026-11-08.The prologue's party when its first map loads is Maxim at level 78, Selan 77, Guy 77 and Artea 75, with the stats and equipment stored in their character records, and the prologue's script has given them 10 items (87 Miracle, 62 Ex Potion, 28 Ex Magic, 50 Revive, 92 Awaken, 88 Stone Cure, 95 Mystery Pin, 91 Shriek, 36 Ex Arrows, 29 Ex Bomb) and taught Maxim 10, Selan 8 and Artea 12 spells. Measured in MesenCE from power-on, pressing A every 10 frames with Start on every fourth press, about 60 frames (60 to 69) after the prologue's first map is entered. lufia/prologue-party
Value
{
"character": [
"Maxim",
"Selan",
"Guy",
"Artea"
],
"level": [
78,
77,
77,
75
],
"hp": [
611,
478,
717,
622
],
"mp": [
370,
629,
0,
514
],
"str": [
234,
145,
255,
211
],
"int": [
127,
250,
88,
249
],
"agl": [
122,
129,
103,
164
],
"mgr": [
222,
254,
153,
217
],
"weapon": [
"Dual Blade",
"Silver Rod",
"Zircon Axe",
"Artea's Bow"
],
"armor": [
"Zircon Armor",
"Silver Robe",
"Zircon Armor",
"Zircon Robe"
],
"shield": [
"Zircon Plate",
"Silver Wrist",
"Silver Plate",
"Zircon Wrist"
],
"helmet": [
"Zircon Helm",
"Sakret",
"Silver Helm",
"Zircon Beret"
],
"shoes": [
"Sword Shoes",
"Cat Heels",
"Mach Shoes",
"Cat Heels"
],
"ring": [
"Wave Ring",
"Flash Ring",
"White Ring",
"Hi Daze Ring"
],
"item": [
"Miracle",
"Ex Potion",
"Ex Magic",
"Revive",
"Awaken",
"Stone Cure",
"Mystery Pin",
"Shriek",
"Ex Arrows",
"Ex Bomb"
],
"count": [
87,
62,
28,
50,
92,
88,
95,
91,
36,
29
],
"spells": {
"0": "Valor, Boost, Champion, Stronger, Poison, Stun, Dead, Stone, Waken, Protect",
"1": "Thunder, Bolt, Vulcan, Glacier, Blizzard, Succumb, Fake, Mirror",
"3": "Flood, Sunder, Dread, Mirror, Bounce, Trick, Valor, Champion, Rally, Courage, Waken, Warp"
}
}0x46D25-0x46E0C — the 8 character records, 29 bytes each; records 4-7 are Maxim, Selan, Guy and Artea (lufia-tables/characters)Lufia & the Fortress of Doom (USA) · 0x1BD8E-0x1BE05 — the prologue script's teach-spell and give-item commands (lufia-tables/prologue-script)Lufia & the Fortress of Doom (USA) · 0x46A9F-0x46B66 — $08:EA9F-$EB66, the join routine: characters 4-7 go to slots 0-3Checked by claude-agent, 2026-11-08 — ran probes/lufia/prologue.mjs: the four slots, the bag and the spell lists in RAM match the records and the scriptRevised after a check by a second AI model, 2026-11-08.Probe: probes/lufia/prologue.mjsSlots 0-3 are the Hero's, Lufia's, Aguro's and Jerin's in the story proper.