data/claims/super-mario-rpg-tables.yamlSuper Mario RPG's data tables (Yoshifanatic's Super Mario RPG disassembly)
Game: Super Mario RPG.
A character reaches level 2 at 16 experience in all, level 10 at 700, level 20 at 3950 and level 30 at 9999, where experience stops: a character already at 9999 gets none, and a total past it is cut back to 9999. After a battle, unless a flag that skips the award is set, each party member gets the battle's experience whole, doubled for one wearing the Exp. Booster, and goes up every level the new total reaches, several at once if it reaches several. super-mario-rpg-tables/experience-to-level
SMRPG/Routine_Macros_SMRPG.asm#L234730-L234734DATA_FA1AFF:
dw $0010,$0030,$0054,$0082,$00C8,$0122,$0192,$021A
dw $02BC,$037A,$0456,$0550,$0668,$079E,$08F2,$0A64
dw $0BF4,$0DA2,$0F6E,$1158,$1360,$1586,$17C8,$1A24
dw $1C98,$1F20,$21BA,$2463,$270FSuper-Mario-RPG-Disassembly: Super Mario RPG (SNES) disassembly · SMRPG/Routine_Macros_SMRPG.asm#L74156-L74169CODE_C28EB0:
JSR.w CODE_C299C5
LDA.w $0B64
BNE.b CODE_C28ED7
LDA.w #$0000
STA.w $0810
LDA.w #$0001
STA.w $0812
LDA.l $7EFA02
STA.w $0832
JSL.l CODE_C2A021
LDA.w $0834
…Our readingif 0x0B64 is set, skip the award74158–74159store the battle's experience as the award74164–74165add it to the party and level them up74166Super-Mario-RPG-Disassembly: Super Mario RPG (SNES) disassembly · SMRPG/Routine_Macros_SMRPG.asm#L74369-L74393CODE_C29092:
STZ.w $0700
STZ.w $0B64
…
CODE_C290B8:
LDA.b $48
CMP.w #$FFFF
BNE.b CODE_C290CA
LDA.w #$0003
STA.l $7EFA0E
INC.w $0B64
RTSOur readingclear 0x0B6474371if the value at 0x48 is 0xFFFF, set 0x0B64 to 174387–74392Super-Mario-RPG-Disassembly: Super Mario RPG (SNES) disassembly · SMRPG/Routine_Macros_SMRPG.asm#L76337-L76346CODE_C2A112:
PHP
PHB
PHD
REP.b #$30
LDA.w #$0000
TCD
PHA
PLB
PLBSuper-Mario-RPG-Disassembly: Super Mario RPG (SNES) disassembly · SMRPG/Routine_Macros_SMRPG.asm#L84238-L84326CODE_C2DCD8:
LDA.l DATA_FA0000+$0C
STA.b $80
LDA.w #DATA_FA1AFF>>16
…
CODE_C2DD00:
STA.b $8A
TAX
LDA.w $0832
STA.b $7A
LDA.l $7FF80E,x
AND.w #$00FF
…Our readingfor each party member84245–84256 award = the battle's experience84259–84262 if the accessory slot holds item 0x50, award × 284263–84267 if experience is already 9999 or more, skip84269–84272 total = experience + award, at most 999984274–84281 while the table's entry for the current level is at most the total84282–84292 count one more pending level and raise the level84294–84310 store the total84312–84314Super-Mario-RPG-Disassembly: Super Mario RPG (SNES) disassembly · SMRPG/Routine_Macros_SMRPG.asm#L236768 — item 0x50 in the list of item names, 0x3D the icon before the name and 0x81 the perioddb $3D,"Exp",$81," Booster "Super-Mario-RPG-Disassembly: Super Mario RPG (SNES) disassembly · SMRPG/Routine_Macros_SMRPG.asm#L234390-L234391 — item 0x50's 18 bytes in the item table (18 bytes an item from L234299): the first byte, 2, is its kinddw $0002,$001F,$0000,$0000,$0000,$0000,$0000,$0000
dw $00FF,$0082,$0001,$0000,$0000,$1E00,$1E1E,$1E1ESuper-Mario-RPG-Disassembly: Super Mario RPG (SNES) disassembly · SMRPG/Routine_Macros_SMRPG.asm#L27999-L28021CODE_C0C555:
…
LDA.b $70
REP.b #$20
AND.w #$00FF
ASL
STA.b $80
ASL
ASL
ASL
CLC
ADC.b $80
…Our readingan item's kind is the low two bits of its first byte in the item table28004–28019Super-Mario-RPG-Disassembly: Super Mario RPG (SNES) disassembly · SMRPG/Routine_Macros_SMRPG.asm#L27701-L27717CODE_C0C346:
PHX
JSR.w CODE_C0C555
REP.b #$20
AND.w #$00FF
CLC
ADC.b $72
TAX
SEP.b #$20
LDA.l $7FF80C,x
STA.b $80
LDA.b $70
…Our readingequipping an item puts it in the character's slot 12 + its kind, and the item it replaces back in the bag27702–27716Checked by claude, 2026-11-08 — read the experience routine and its call at the end of a battle, decoded the pinned table, and followed the 0x50 test to the equip routine's slots and the item's kind byteRevised after a check by a second AI model, 2026-11-08.The flag 0x0B64 is set by a routine that clears it and sets it when the value at 0x48 is 0xFFFF; what that value is, and when the routine runs, is not read here. The comparison at level 30 reads the two bytes after the table, the first bytes of the level-up gains table (12805), which 9999 never reaches, so level 30 is the last. Equip slots: 12 weapon, 13 armor, 14 accessory (kinds 0, 1 and 2 in the item table).
Each level from 2 to 30 raises a character's maximum HP, Attack, Defense, Magic Attack and Magic Defense by fixed amounts from a table by character and level, after a press of A and before the bonus the player picks (super-mario-rpg/level-up-bonus). HP is refilled to the new maximum, and the other stats stop at 255. Mario's gains climb from 5 HP, 3 Attack, 2 Defense, 2 Magic Attack and 2 Magic Defense at level 2 to 10, 6, 4, 5 and 3 at level 20, then fall to 2 of each from level 21; every character's gains fall at level 21. super-mario-rpg-tables/level-up-gains
SMRPG/Routine_Macros_SMRPG.asm#L234736-L234765 — 15 bytes a level from level 2, 3 a character in the order Mario, Toadstool, Bowser, Geno, Mallow (the name list at L83199-L83218)DATA_FA1B39:
db $05,$32,$22,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$05
db $32,$22,$00,$00,$00,$00,$00,$00,$00,$00,$00,$04,$23,$22,$05,$33Super-Mario-RPG-Disassembly: Super Mario RPG (SNES) disassembly · SMRPG/Routine_Macros_SMRPG.asm#L84541-L84674CODE_C2DF40:
LDA.w $3014
BIT.w #$0080
BNE.b CODE_C2DF49
RTS
…
TYX
LDA.l $400066,x
SEC
SBC.w #$0002
STA.b $E8
…
…Our readingwait for a new press of A84542–84545row = (new level - 2) × 15 + character × 384550–84574maximum HP + the first byte; HP = the new maximum; show it84575–84592Attack + the high four bits of the second byte, at most 255; show it84593–84617Defense + its low four bits, at most 255; show it84618–84633Magic Attack + the high four bits of the third byte, at most 255; show it84634–84652Magic Defense + its low four bits, at most 255; show it84653–84668next: the spell, then the bonus84669–84673For the levels each character can reach, from 2 to 30 for Mario, 3 for Mallow, 7 for Geno, 9 for Bowser and 10 for Toadstool (their rows below that are zero), each level a character gains ends with a bonus the player picks from three: more Attack and Defense, more maximum HP, or more Magic Attack and Magic Defense. The amounts are a table by character and level. Defense and Magic Defense always get 1. HP, Attack and Magic Attack each repeat every three levels with amounts of their own, Mario's at levels 2 to 4 running 3, 3 and 4 HP, 1, 2 and 1 Attack, and 3, 1 and 1 Magic Attack. HP's cycle changes at level 21: Bowser's stays 1 or 3 at every level, and the others' fall to 1 to 3 (Toadstool's 3 at level 21, then 2, 1 and 1 over and over). The cursor starts on HP. Once the player picks, the screen shows the new values; A applies them and B goes back to the three choices. HP raises the maximum and fills the character's HP to it; each other stat stops at 255. Several levels from one battle each bring their own bonus, one after another. Code — the labels each value is shown under, the bonus that follows, and the pad reader: bit 0x0080 of 0x3014 is a new press of A (L14997-L15016)Checked by claude, 2026-11-08 — read the gains routine and decoded the pinned table by its row arithmeticRevised after a check by a second AI model, 2026-11-08.Toadstool's rows are zeros up to level 9, Bowser's to 8, Geno's to 6 and Mallow's at level 2. From level 21 Mario, Toadstool and Mallow gain 2 of each, Bowser 4 HP and 2 of the rest, Geno 1 HP, 3 Defense and 2 of the rest.
Mario learns Fire Orb at level 3, Super Jump at 6, Super Flame at 10, Ultra Jump at 14 and Ultra Flame at 18; Toadstool Sleepy Time at 11, Come Back at 13, Mute at 15 and Psych Bomb at 18; Bowser Poison Gas at 12, Crusher at 15 and Bowser Crush at 18; Geno Geno Boost at 8, Geno Whirl at 11, Geno Blast at 14 and Geno Flash at 17; Mallow HP Rain at 3, Psychopath at 6, Shocker at 10, Snowy at 14 and Star Rain at 18. No level after 18 teaches a spell. super-mario-rpg-tables/spells-by-level
SMRPG/Routine_Macros_SMRPG.asm#L236603-L236613 — 5 bytes a level from level 2, one a character; 0xFF teaches nothingDATA_FA42F5:
db $FF,$FF,$FF,$FF,$FF,$01,$FF,$FF,$FF,$16,$FF,$FF,$FF,$FF,$FF,$FF
db $FF,$FF,$FF,$FF,$02,$FF,$FF,$FF,$17,$FF,$FF,$FF,$FF,$FF,$FF,$FF
db $FF,$11,$FF,$FF,$FF,$FF,$FF,$FF,$03,$FF,$FF,$FF,$18,$FF,$08,$FF
db $12,$FF,$FF,$FF,$0D,$FF,$FF,$FF,$09,$FF,$FF,$FF,$04,$FF,$FF,$13
db $19,$FF,$0A,$0E,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$14,$FF
db $05,$0B,$0F,$FF,$1A,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
db $FFSuper-Mario-RPG-Disassembly: Super Mario RPG (SNES) disassembly · SMRPG/Routine_Macros_SMRPG.asm#L84675-L84744CODE_C2E078:
LDA.w $3014
BIT.w #$0080
BNE.b CODE_C2E081
RTS
…
TYX
LDA.l $400066,x
SEC
SBC.w #$0002
STA.b $E8
…
…Our readingwait for a new press of A84676–84679entry = (new level - 2) × 5 + character84684–84705if it is 0xFF, skip84706–84713set the spell's bit in the character's spell bits84714–84729show " learns" and the spell's name84730–84739Super-Mario-RPG-Disassembly: Super Mario RPG (SNES) disassembly · SMRPG/Routine_Macros_SMRPG.asm#L83221-L83262CODE_C2D3D2:
INY
STY.b $EE
LDA.b [$E8],y
AND.w #$00FF
ASL
TAX
LDA.w $3498,x
ASL
ASL
ASL
ASL
…Our readingtake the value the message names (here the spell)83224–83228its name starts at value × 15 in the spell-name list83229–83239trim the trailing spaces, then draw from the entry's second byte83240–83261Super-Mario-RPG-Disassembly: Super Mario RPG (SNES) disassembly · SMRPG/Routine_Macros_SMRPG.asm#L234598-L234625DATA_FA137F: ; Note: Player Spell names/More Enemy Spell names
db $40,"Jump "
db $40,"Fire Orb "
db $40,"Super Jump "
db $40,"Super Flame "
…
db $40,"Thunderbolt "
db $40,"HP Rain "
db $40,"Psychopath "
db $40,"Shocker "
db $40,"Snowy "
db $40,"Star Rain "Checked by claude, 2026-11-08 — read the spell routine and the name lookup, and decoded the pinned tableChecked by a second AI model, 2026-11-08.Each of the 40 entries of the weapon timing table gives four frame counts that bound a timed hit (super-mario-rpg/timed-hit): outer start, inner start, inner end, outer end. The inner window, where one press doubles the damage, is 7 frames wide for every weapon (items 5 to 35) but the Drill Claw, whose 16 to 24 is 9 (widths computed); the earliest inner start is the War Fan's frame 2 and the latest frame 50, for the Chomp, the Chomp Shell and the Spiked Link. The entries are indexed by item number. When the weapon slot is empty the entry is chosen by another byte of the battler's record; entries 0 to 4 sit on the numbers the item list names Weapon, Armor, Accessory and Space, and entries 36 to 39 on Spare, Shirt, Pants and Thick Shirt. super-mario-rpg-tables/weapon-timing
About: Super Mario RPG Action command
CodeSuper-Mario-RPG-Disassembly: Super Mario RPG (SNES) disassembly ·SMRPG/Routine_Macros_SMRPG.asm#L236621-L236631DATA_FA438A:
db $00,$08,$0E,$16,$00,$0A,$10,$24,$00,$10,$18,$24,$00,$18,$1E,$38
db $00,$0A,$10,$16,$08,$0E,$14,$26,$08,$12,$18,$24,$14,$19,$1F,$24
db $04,$08,$0E,$16,$08,$10,$16,$1A,$04,$05,$0B,$1E,$28,$32,$38,$3C
db $08,$0E,$14,$26,$28,$32,$38,$3C,$08,$28,$2E,$32,$08,$18,$1E,$22
db $02,$0A,$10,$16,$00,$0A,$10,$24,$14,$19,$1F,$24,$05,$08,$0E,$18
db $0C,$18,$1E,$24,$06,$1A,$20,$24,$08,$12,$18,$24,$28,$32,$38,$3C
db $06,$0C,$12,$1A,$00,$02,$08,$16,$08,$2E,$34,$40,$05,$0C,$12,$1A
db $08,$0E,$14,$26,$08,$0A,$10,$24,$00,$10,$18,$24,$08,$18,$1E,$22
db $04,$05,$0B,$1E,$14,$19,$1F,$24,$00,$04,$0A,$18,$08,$0E,$14,$26
db $0A,$14,$1E,$28,$0A,$14,$1E,$28,$0A,$14,$1E,$28,$0A,$14,$1E,$28Super-Mario-RPG-Disassembly: Super Mario RPG (SNES) disassembly · SMRPG/Routine_Macros_SMRPG.asm#L79193-L79210CODE_C2B58E:
LDA.l DATA_FA0000+$26
STA.b $DC
LDA.w #DATA_FA438A>>16
STA.b $DE
LDA.b $D0
ASL
ASL
TYX
TAY
LDA.b [$DC],y
STA.b $00,x
…Our readingthe four bytes at 4 × item number79194–79208Super-Mario-RPG-Disassembly: Super Mario RPG (SNES) disassembly · SMRPG/Routine_Macros_SMRPG.asm#L236687-L236727 — the item names for numbers 0 to 39, one a lineDATA_FA46EF:
db $7F,"Weapon "
db $7F,"Armor "
db $7F,"Accessory "
db "Space "
db "Space "
db $22,"Hammer "
…
db $27,"Chomp "
…
db $27,"Chomp Shell "
…
…An attack that runs the battle's damage step is judged as a timed hit as its damage is applied, from a record of the buttons first pressed on each frame, counted from the record's last clearing, the first frame recorded after it being frame 0 (a battle-script command clears it, and so does each judgment). Exactly one frame with a press of A, B, X or Y between the attacker's outer bounds doubles the damage if it falls between its inner bounds, and adds half otherwise; no such frame, or two or more, adds nothing, so pressing again on a later frame spoils a good press (buttons pressed together on one frame count once). The extra is shown with the damage and taken from the target's HP too. The bounds are frame counts per weapon (super-mario-rpg-tables/weapon-timing): the Hammer's inner bounds take a press 14 to 20 frames in, 7 frames (computed), and its outer bounds 8 to 38; the outer end is cut back to the number of frames recorded so far. Code — how the four counts are used, each in frames from the record's clearingChecked by claude, 2026-11-08 — decoded the pinned table by its loader (4 bytes an item number) and named each entry from the item listChecked by a second AI model, 2026-11-08.The monster table gives each of 256 monster numbers its HP, Attack, Defense, Magic Attack and Magic Defense, and the battle names it from a list of 13-letter names by the same number; 17 numbers have a blank name. HP runs up to 8000 (Smithy), Attack to 250 (Smithy and Culex), Defense to 200 (the Wind Crystal), Magic Attack to 130 (the Fire Crystal and Smithy) and Magic Defense to 180 (the Mad Adder). Each number points to 16 bytes, which the battle copies into the monster's battle record: the first two are its HP, which it starts the battle with, and bytes 3 to 6 fill the places where a party member's record holds Attack, Defense, Magic Attack and Magic Defense. super-mario-rpg-tables/monsters
SMRPG/Routine_Macros_SMRPG.asm#L229544-L229576 — the 256 pointers into the bank, one per monster numberDATA_F90026: ; Note: Enemy stats
dw $0226,$0236,$0246,$0866,$0706,$02E6,$0256,$0396
dw $0346,$02B6,$0536,$0576,$03F6,$06D6,$06F6,$0296Super-Mario-RPG-Disassembly: Super Mario RPG (SNES) disassembly · SMRPG/Routine_Macros_SMRPG.asm#L229577-L229832dw $000A,$010A,$0008,$6401,$0000,$5C00,$0000,$0300
dw $0014,$060E,$040B,$6402,$0000,$0800,$0180,$4200
dw $000A,$0412,$0610,$6404,$0008,$5C00,$8100,$6800
dw $0010,$030D,$0103,$6401,$0000,$0C00,$4200,$0200Super-Mario-RPG-Disassembly: Super Mario RPG (SNES) disassembly · SMRPG/Routine_Macros_SMRPG.asm#L74761-L74785CODE_C293DE:
REP.b #$20
STX.b $C0
LDA.l DATA_F90000
STA.b $C2
LDA.w #DATA_F90026>>16
STA.b $C4
LDA.l $7E0001,x
AND.w #$00FF
ASL
TAY
LDA.b [$C2],y
…Our readingstats = the pointer for the battler's monster number74764–74773copy 16 bytes to the battler's record from offset 0x1374774–74782HP = the copied maximum74784–74785Super-Mario-RPG-Disassembly: Super Mario RPG (SNES) disassembly · SMRPG/Routine_Macros_SMRPG.asm#L75085-L75102LDA.b $C0
CLC
ADC.w #$0010
TAY
LDX.b $C2
PHB
…
LDA.w #$0013
MVN $7E,$7F
BRA.b CODE_C29713
CODE_C2970D:
LDA.w #$0013
…Our readinga party member's 20-byte record goes to its battle record from offset 0x1075085–75102Each level from 2 to 30 raises a character's maximum HP, Attack, Defense, Magic Attack and Magic Defense by fixed amounts from a table by character and level, after a press of A and before the bonus the player picks (super-mario-rpg/level-up-bonus). HP is refilled to the new maximum, and the other stats stop at 255. Mario's gains climb from 5 HP, 3 Attack, 2 Defense, 2 Magic Attack and 2 Magic Defense at level 2 to 10, 6, 4, 5 and 3 at level 20, then fall to 2 of each from level 21; every character's gains fall at level 21. Code — the party record's places: maximum HP at 3, Attack at 6, Defense at 7, Magic Attack at 8, Magic Defense at 9, so 0x13 and 0x16 to 0x19 in the battle recordSuper-Mario-RPG-Disassembly: Super Mario RPG (SNES) disassembly · SMRPG/Routine_Macros_SMRPG.asm#L49291-L49303CODE_C16BF7:
LDA.w $0001,x
LDY.w #$000D
JSR.w CODE_C10E3C
STA.b $80
LDY.w #$F900
LDA.l DATA_F90000+$16
STY.b $9E
LDY.w #$000D
CODE_C16C0E:
CLC
ADC.b $80
…Our readingthe name is 13 bytes at the battler's monster number × 13 in the list49292–49303Super-Mario-RPG-Disassembly: Super Mario RPG (SNES) disassembly · SMRPG/Routine_Macros_SMRPG.asm#L232215-L232471DATA_F992D1:
db "TERRAPIN "
db "SPIKEY "
db "SKY TROOPA "
db "MAD MALLET "
db "SHAMAN "
db "CROOK "
db "GOOMBA "Checked by claude, 2026-11-08 — read the copy into the battle record and the name lookup, and decoded each monster's 16 bytes through its pointer at the pinned commitRevised after a check by a second AI model, 2026-11-08.The other bytes (2 and 7 to 15) are not read here; byte 2 fills the place after the party's maximum HP. Several numbers share a name, Smithy's among them, which looks like the forms of one fight (not read in the battle code).
At a battle's end, each monster knocked out in it adds the experience and coins of its row in the rewards table. The experience total is divided by the number of party members (3 at most), rounded up, and each gets that share (super-mario-rpg-tables/experience-to-level). A battle gives at most one item: going through the knocked-out monsters in slot order, the first whose roll succeeds gives it. A monster whose two item places hold the same item always gives it; otherwise a draw from 0 to 100 below 5 gives its rare item, and failing that, or with no rare item, a draw below 25 gives its common item (5 and 25 of the draw's 101 values, computed). The item goes to the first empty place of the 30-place bag, or is lost when the bag is full. Of the 239 named monsters, Culex gives the most experience (600) and Chester and Valentina the most coins (200); 107 can drop an item, and 10 hold the same item in both places. super-mario-rpg-tables/battle-rewards
About: Super Mario RPG Item drop table
CodeSuper-Mario-RPG-Disassembly: Super Mario RPG (SNES) disassembly ·SMRPG/Routine_Macros_SMRPG.asm#L229869-L229997 — 256 pointers, one per monster number, to 6-byte rows: experience (2 bytes), coins, a byte this reader skips, rare item, common item (0xFF none)DATA_F9142A:
dw $162A,$1630,$1636,$1888,$17FE,$1672,$163C,$16B4
…
dw $0000,$6000,$FFFF,$0001,$6802,$FF63,$0001,$6001
dw $60FF,$0001,$6000,$FFFF,$0002,$6900,$FFFF,$0003Super-Mario-RPG-Disassembly: Super Mario RPG (SNES) disassembly · SMRPG/Routine_Macros_SMRPG.asm#L79168-L79191CODE_C2B565:
LDA.l DATA_F90000+$04
STA.b $DC
LDA.w #DATA_F9142A>>16
STA.b $DE
LDA.b $D0
ASL
TYX
TAY
LDA.b [$DC],y
STA.b $DC
LDY.w #$0000
…Our readinga monster's row through its pointer, six bytes79169–79190Super-Mario-RPG-Disassembly: Super Mario RPG (SNES) disassembly · SMRPG/Routine_Macros_SMRPG.asm#L79951-L80013CODE_C2BB09:
LDA.w #$0000
STA.b $B8
STA.b $BA
LDA.w #$0100
STA.b $BC
LDX.w #$0000
CODE_C2BB18:
STX.b $B0
LDA.l DATA_C2A1F0,x
TAX
LDA.l $7E0000,x
…Our readingtotals start at 0 and the item at none (0x100)79952–79956each of the eight monster slots whose first byte has both 0x40 and 0x80 adds its row79958–79971a nonzero experience total is divided by the party count, capped at 3, and rounded up79972–79993experience share, coins and item kept for the award80000–80004the item is added to the bag; if that fails, no item80005–80012Super-Mario-RPG-Disassembly: Super Mario RPG (SNES) disassembly · SMRPG/Routine_Macros_SMRPG.asm#L80016-L80064CODE_C2BB94:
STX.b $B2
LDA.l $7E0001,x
AND.w #$00FF
LDX.w #$000E
LDY.w #$00C0
JSR.w CODE_C2B3CA
LDA.b $C0
CLC
ADC.b $B8
STA.b $B8
LDA.b $C2
…Our readingthe monster's row: experience and coins added to the totals80017–80033only while no item is chosen80034–80036the draw is from 0 to 100 (bound 0x64)80038–80039rare item 0xFF: try the common one; the same item twice: take it80040–80043rare item when a draw is below 580044–80048common item (if any) when a draw is below 25 (0x19)80051–80057Super-Mario-RPG-Disassembly: Super Mario RPG (SNES) disassembly · SMRPG/Routine_Macros_SMRPG.asm#L80109-L80128CODE_C2BC37:
PHP
SEP.b #$20
LDX.w #$0000
CODE_C2BC3D:
LDA.l !RAM_SMRPG_Global_CurrentItemInventory,x
CMP.b #$FF
BEQ.b CODE_C2BC50
INX
CPX.w #$001E
BMI.b CODE_C2BC3D
LDX.w #$FFFF
…Our readingthe item goes in the first empty place (0xFF) of the 30-place item bag; with none, the routine gives 0xFFFF80110–80127Super-Mario-RPG-Disassembly: Super Mario RPG (SNES) disassembly · SMRPG/Routine_Macros_SMRPG.asm#L81417-L81423CODE_C2C5C8:
PHP
SEP.b #$20
LDX.b $CA
LDA.l $7E0000,x
ORA.b #$40
STA.l $7E0000,xOur readingknocking out the target (0xCA) sets bit 0x40 of its first record byte81420–81423Super-Mario-RPG-Disassembly: Super Mario RPG (SNES) disassembly · SMRPG/Routine_Macros_SMRPG.asm#L80477-L80488CODE_C2BEDB:
JSR.w CODE_C2C55E
LDY.b $C0
BNE.b CODE_C2BEFC
LDA.b $CE
BNE.b CODE_C2BEF0
LDX.b $CA
LDA.l $7E001D,x
BIT.b #$01
BNE.b CODE_C2BEFC
CODE_C2BEF0:
JSR.w CODE_C2C5C8Our readingafter the damage is applied, a target left with 0 HP is knocked out, a monster only while bit 0x01 of its record byte 0x1D is clear80478–80488An attack's damage is its power less the target's defense, at least 1 unless the power is 0, and at most 9999. An ordinary attack's power is the attacker's Attack, against the target's Defense. A special's is the caster's Magic Attack plus the special's own power, against Magic Defense, except that the four specials that restore HP (Therapy, Group Hug, HP Rain and Come Back) take no defense off (computed). An item's is its own power, with no defense taken off and no multiplier. A party member's ordinary attack first moves its Attack by a random amount: from Attack less the weapon's variance (0 if that is negative) up by 0 to twice the variance. A monster's ordinary attack has no variance; its power, a number from 0 to 7, picks a multiplier applied after the subtraction: ×1, ×1.5 (the half rounded down), ×2, ×4, ×8, ×16, ×32 or ×64. A monster's magic attack uses its Magic Attack plus that number against Magic Defense, and deals 0 when the number is 0. The halving and ×1.5 steps (super-mario-rpg/damage-status-steps) and the elements, which can make the damage 0 (super-mario-rpg/damage-elements), follow, then the 9999 cap. Three kinds of attack skip the formula (super-mario-rpg/damage-skips). A timed hit's extra comes after all of this, from the damage as applied, and has no cap of its own (super-mario-rpg/timed-hit). Code — the routine that applies the damage keeps the HP left (0xC0)Super-Mario-RPG-Disassembly: Super Mario RPG (SNES) disassembly · SMRPG/Routine_Macros_SMRPG.asm#L74998-L75005LDA.w $3032
AND.w #$00FF
CMP.w #$0004
BMI.b CODE_C29630
LDA.w #$0003
CODE_C29630:
DEC
STA.b $B2Our readingthe party count, capped at 3, sets how many party records the battle builds74998–75005An attack with a hit rate of 100 always hits. Otherwise an attack marked to test the knock-out guard, as a monster attack's knock-out bit marks it, misses a target with that guard, which the Safety Ring, the Attack Scarf, the Jinx Belt and the Quartz Charm give from the start of a battle. Against a monster, a draw from 0 to 99 below its evade (or its magic evade, for an attack that isn't physical) is a miss; then, against any target, a draw from 0 to 99 below the hit rate is a hit. A party member's ordinary attack has a hit rate of 99, so it hits a monster with no evade 99 times in 100 (computed); against a party member only the hit rate is drawn. A miss does nothing to that target, except by the knock-out kind that falls back to the damage formula on a miss (super-mario-rpg/damage-skips). Code — the chance draw: from 0 to the bound, true when below the valueThe monster table gives each of 256 monster numbers its HP, Attack, Defense, Magic Attack and Magic Defense, and the battle names it from a list of 13-letter names by the same number; 17 numbers have a blank name. HP runs up to 8000 (Smithy), Attack to 250 (Smithy and Culex), Defense to 200 (the Wind Crystal), Magic Attack to 130 (the Fire Crystal and Smithy) and Magic Defense to 180 (the Mad Adder). Each number points to 16 bytes, which the battle copies into the monster's battle record: the first two are its HP, which it starts the battle with, and bytes 3 to 6 fill the places where a party member's record holds Attack, Defense, Magic Attack and Magic Defense. Code — monster numbers and namesSuper-Mario-RPG-Disassembly: Super Mario RPG (SNES) disassembly · SMRPG/Routine_Macros_SMRPG.asm#L236687-L236943 — item names, 15 bytes each by item number, the first a menu icon; the source spells glyph 0x3A as ~ (B~tub Ring); glyph 0x81, which it leaves as a raw byte, is written here as a period (Exp. Booster)DATA_FA46EF:
db $7F,"Weapon "Checked by claude, 2026-11-08 — read the reward loop, the per-monster reader and the item draws, and decoded every row through its pointer with the item namesRevised after a check by a second AI model, 2026-11-08.Each weapon, armor and accessory adds fixed amounts, possibly negative, to five stats while worn: Speed (the stat the battle sorts its battlers by, highest first), Attack, Defense, Magic Attack and Magic Defense. It may also nullify or resist elements, guard against statuses, and give boosts from the start of each battle, and one flag per character (Mario, Toadstool, Bowser, Geno and Mallow) says who can wear it. Weapons give only Attack and a variance (super-mario-rpg/damage-formula); the Lazy Shell and the Frying Pan give the most Attack, 90, with variances of 40 and 20. The Lazy Shell armor gives the most Defense and Magic Defense, 127, and takes 50 from Speed, Attack and Magic Attack. Every character can wear the Work Pants, the Super Suit, the Lazy Shell armor and all accessories but four: the Jump Shoes, the Attack Scarf and the Coin Trick are Mario's alone and the B~tub Ring is Toadstool's. The Super Suit, the Lazy Shell armor and the Safety Ring nullify all four elements, and the Amulet and the B~tub Ring resist them. super-mario-rpg-tables/equipment
SMRPG/Routine_Macros_SMRPG.asm#L234299-L234406 — 18 bytes an item: 0 kind (low two bits) and flags, 1 flags, 2 who can wear it, 4-6 elements, 7 statuses, 8 boosts, 9-13 the five stats (signed), 14 variance, 15 power, 16 effectDATA_FA014D:
dw $0000,$0001,$0000,$0000,$0000,$0000,$0000,$0000
…
dw $0000,$0000,$0000,$0000,$00FF,$0000,$0001,$0000Super-Mario-RPG-Disassembly: Super Mario RPG (SNES) disassembly · SMRPG/Routine_Macros_SMRPG.asm#L101564-L101570CODE_C37803:
SEP.b #$20
JSR.w CODE_C377E2
LDA.l $FA0000,x
AND.b #$03
STA.b $72
RTSOur readingan item's kind is the low two bits of its byte 0101567–101569A character reaches level 2 at 16 experience in all, level 10 at 700, level 20 at 3950 and level 30 at 9999, where experience stops: a character already at 9999 gets none, and a total past it is cut back to 9999. After a battle, unless a flag that skips the award is set, each party member gets the battle's experience whole, doubled for one wearing the Exp. Booster, and goes up every level the new total reaches, several at once if it reaches several. Code — kinds 0, 1 and 2 go to equip slots 12, 13 and 14: weapon, armor, accessoryAn attack with an element (Jump, Fire, Thunder or Ice) deals 0 to a target that nullifies all its elements, except that Mario's Jump-element attacks keep their damage while he wears the Jump Shoes. Otherwise a party member who resists all its elements takes half (rounded down, but not below 1), and a monster weak to all of them takes ×2. A party member's nullified and resisted elements are those of its equipment combined (the Super Suit, the Lazy Shell armor and the Safety Ring nullify all four; the Amulet and the B'tub Ring resist all four); a monster's are its own (super-mario-rpg-tables/monster-defenses). The element step runs after the status steps (super-mario-rpg/damage-formula). A party member's ordinary attack carries its equipment's attack element, which none of the 86 pieces of equipment has (computed). Code — byte 5 holds the nullified elements and byte 6 the resisted onesSuper-Mario-RPG-Disassembly: Super Mario RPG (SNES) disassembly · SMRPG/Routine_Macros_SMRPG.asm#L78949-L79000CODE_C2B404:
LDA.l DATA_FA0000+$04
STA.b $DC
LDA.w #DATA_FA014D>>16
STA.b $DE
LDA.b $D0
ASL
STA.b $DA
ASL
ASL
ASL
CLC
…Our readingan item's 18 bytes at 18 × its number78950–78999Super-Mario-RPG-Disassembly: Super Mario RPG (SNES) disassembly · SMRPG/Routine_Macros_SMRPG.asm#L79815-L79856CODE_C2B9C7:
STA.l $7E002E,x
STA.b $FA
LDX.w #$0010
LDY.w #$00E0
JSR.w CODE_C2B3CA
LDX.b $F8
REP.b #$20
LDA.b $E0
STA.l $7E005C,x
LDA.b $E2
STA.l $7E005E,x
…Our readingthe weapon's bytes, its variance kept, its stats added79828–79835then the armor's and the accessory's, if any (0xFF none)79836–79852the starting boosts become the battle's79854–79855Super-Mario-RPG-Disassembly: Super Mario RPG (SNES) disassembly · SMRPG/Routine_Macros_SMRPG.asm#L79859-L79947CODE_C2BA34:
REP.b #$20
LDA.b $E9
AND.w #$00FF
BIT.w #$0080
BEQ.b CODE_C2BA43
ORA.w #$FF00
CODE_C2BA43:
CLC
ADC.l $7E0070,x
BPL.b CODE_C2BA4D
LDA.w #$0000
…Our readingbytes 9-13, signed, added to Speed, Attack, Defense, Magic Attack and Magic Defense (the first four not below 0)79860–79916bytes 4-6 combined into the attack element, nullified and resisted elements79917–79927byte 0 bit 0x80: boost 0x02 at the start79928–79933byte 1 bit 0x01: byte 7's statuses guarded; bit 0x02: byte 8's boosts at the start79935–79947Super-Mario-RPG-Disassembly: Super Mario RPG (SNES) disassembly · SMRPG/Routine_Macros_SMRPG.asm#L75301-L75332CODE_C298B2:
LDX.w #$0000
CODE_C298B5:
STX.b $E0
LDA.l $403D00,x
BEQ.b CODE_C298F8
STA.b $E2
INX
INX
CODE_C298C1:
STX.b $E8
LDA.l $403D00,x
…Our readingthe battlers' list is sorted by the Speed word, larger first75302–75332Super-Mario-RPG-Disassembly: Super Mario RPG (SNES) disassembly · SMRPG/Routine_Macros_SMRPG.asm#L89655-L89666CODE_C31D0C:
JSR.w CODE_C377CE
STA.b $72
JSR.w CODE_C377E2
LDA.l $FA0002,x
BIT.b $72
BEQ.b CODE_C31D1E
SEC
RTS
CODE_C31D1E:
CLCOur readingan item can be worn when its byte 2 has the character's bit89656–89663Super-Mario-RPG-Disassembly: Super Mario RPG (SNES) disassembly · SMRPG/Routine_Macros_SMRPG.asm#L101529-L101540CODE_C377CE:
PHX
LDX.b $6E
TDC
LDA.w $0001,x
TAX
LDA.l DATA_C377DC,x
PLX
RTS
DATA_C377DC:
db $01,$02,$04,$08,$10,$20Our readingthe character's bit is 1 shifted left by its number101530–101540Super-Mario-RPG-Disassembly: Super Mario RPG (SNES) disassembly · SMRPG/Routine_Macros_SMRPG.asm#L83199-L83218 — characters 0 to 4: Mario, Toadstool, Bowser, Geno, Mallow. No line read ties the wear bits to this list; the tie is from the weapons each bit allows (computed): bit 0x01 the Hammer, the shells and the gloves with it, 0x02 the Parasol, the War Fan and the Frying Pan, 0x04 the Chomp, 0x08 the Finger Shot and the guns, 0x10 the Froggie Stick and the cymbalsDATA_C2D3A5:
…
DATA_C2D3AF:
…
DATA_C2D3B5:
…
DATA_C2D3BF:Super-Mario-RPG-Disassembly: Super Mario RPG (SNES) disassembly · SMRPG/Routine_Macros_SMRPG.asm#L236687-L236943 — item names, 15 bytes each by item number, the first a menu icon; the source spells glyph 0x3A as ~ (B~tub Ring); glyph 0x81, which it leaves as a raw byte, is written here as a period (Exp. Booster)DATA_FA46EF:
db $7F,"Weapon "After the subtraction and multiplier, damage that isn't a heal is halved once (rounded down, but not below 1) if any of these holds: the attacker has the status Terrorize inflicts (bit 0x08) or status bit 0x20 (one of the two the Trueform Pin guards against); the target has status bit 0x20; the target's boost bit 0x04 is set (what sets it is not read); or the target has the boost that halves that type of attack, bit 0x40 for ordinary attacks and 0x20 for specials and items (the two bits the Bracer, the Crystalline and the Ghost Medal give). It is then raised by half once (×1.5, the half rounded down) if the target has Terrorize's status, or the attacker has the boost for its type, bit 0x10 for ordinary attacks and 0x08 for others (the two bits Geno Boost, the Energizer, the Power Blast and the Troopa Pin give). A heal skips both steps. An ordinary attack on a target with the status Sleepy Time inflicts (bit 0x02) wakes it, clearing its statuses. Code — what boost bits 0x08-0x40 doAn attack with a hit rate of 100 always hits. Otherwise an attack marked to test the knock-out guard, as a monster attack's knock-out bit marks it, misses a target with that guard, which the Safety Ring, the Attack Scarf, the Jinx Belt and the Quartz Charm give from the start of a battle. Against a monster, a draw from 0 to 99 below its evade (or its magic evade, for an attack that isn't physical) is a miss; then, against any target, a draw from 0 to 99 below the hit rate is a hit. A party member's ordinary attack has a hit rate of 99, so it hits a monster with no evade 99 times in 100 (computed); against a party member only the hit rate is drawn. A miss does nothing to that target, except by the knock-out kind that falls back to the damage formula on a miss (super-mario-rpg/damage-skips). Code — what boost 0x02 doesEach of the 27 specials has a fixed FP cost, power, hit rate, element and statuses. Jump costs 3 FP at power 25 and Ultra Flame 14 at 60; Bowser Crush and Geno Flash cost the most, 16, and Psychopath the least, 1. A damaging special's damage is the caster's Magic Attack plus its power against Magic Defense (super-mario-rpg/damage-formula). Sleepy Time and Mute have a hit rate of 99 and Terrorize and Poison Gas 90; the rest have 100. Jump, Super Jump and Ultra Jump carry the Jump element, Fire Orb, Super Flame and Ultra Flame Fire, Thunderbolt and Shocker Thunder, and Snowy Ice. The list of the acting character's specials halves each cost, rounded up, while the Scrooge Ring is worn, and marks a special unusable when its cost is more than the battle's FP; the cost as listed comes off that FP when the special is picked. Code — status bits named by the specials that inflict them: Mute 0x01, Sleepy Time 0x02, Poison Gas 0x04, Terrorize 0x08; elements by Jump, Fire Orb, Thunderbolt and SnowyChecked by claude, 2026-11-08 — read the item loader, the equipment sums, the turn sort and the menu's wear test, and decoded items 5 to 94 by that layoutRevised after a check by a second AI model, 2026-11-08.Each of the 27 specials has a fixed FP cost, power, hit rate, element and statuses. Jump costs 3 FP at power 25 and Ultra Flame 14 at 60; Bowser Crush and Geno Flash cost the most, 16, and Psychopath the least, 1. A damaging special's damage is the caster's Magic Attack plus its power against Magic Defense (super-mario-rpg/damage-formula). Sleepy Time and Mute have a hit rate of 99 and Terrorize and Poison Gas 90; the rest have 100. Jump, Super Jump and Ultra Jump carry the Jump element, Fire Orb, Super Flame and Ultra Flame Fire, Thunderbolt and Shocker Thunder, and Snowy Ice. The list of the acting character's specials halves each cost, rounded up, while the Scrooge Ring is worn, and marks a special unusable when its cost is more than the battle's FP; the cost as listed comes off that FP when the special is picked. super-mario-rpg-tables/specials
SMRPG/Routine_Macros_SMRPG.asm#L234833-L234854 — 12 bytes a special: 0 and 1 flags, 2 FP cost, 4 element, 5 power, 6 hit rate, 7 statuses, 8 boosts, 10 effectDATA_FA20F1:
db $00,$00,$03,$46,$80,$19,$64,$00,$00,$00,$04,$00,$00,$00,$05,$46
db $40,$14,$64,$00,$00,$00,$FF,$00,$00,$00,$07,$46,$80,$2D,$64,$00Super-Mario-RPG-Disassembly: Super Mario RPG (SNES) disassembly · SMRPG/Routine_Macros_SMRPG.asm#L79001-L79038CODE_C2B452:
LDA.l DATA_FA0000+$12
STA.b $DC
LDA.w #DATA_FA20F1>>16
STA.b $DE
LDA.b $D0
ASL
ASL
STA.b $DA
ASL
CLC
ADC.b $DA
…Our readinga special's 12 bytes at 12 × its number79002–79037An attack's damage is its power less the target's defense, at least 1 unless the power is 0, and at most 9999. An ordinary attack's power is the attacker's Attack, against the target's Defense. A special's is the caster's Magic Attack plus the special's own power, against Magic Defense, except that the four specials that restore HP (Therapy, Group Hug, HP Rain and Come Back) take no defense off (computed). An item's is its own power, with no defense taken off and no multiplier. A party member's ordinary attack first moves its Attack by a random amount: from Attack less the weapon's variance (0 if that is negative) up by 0 to twice the variance. A monster's ordinary attack has no variance; its power, a number from 0 to 7, picks a multiplier applied after the subtraction: ×1, ×1.5 (the half rounded down), ×2, ×4, ×8, ×16, ×32 or ×64. A monster's magic attack uses its Magic Attack plus that number against Magic Defense, and deals 0 when the number is 0. The halving and ×1.5 steps (super-mario-rpg/damage-status-steps) and the elements, which can make the damage 0 (super-mario-rpg/damage-elements), follow, then the 9999 cap. Three kinds of attack skip the formula (super-mario-rpg/damage-skips). A timed hit's extra comes after all of this, from the damage as applied, and has no cap of its own (super-mario-rpg/timed-hit). Code — the special's set-up: byte 4 element, 5 power, 6 hit rate, and byte 1's status flagsSuper-Mario-RPG-Disassembly: Super Mario RPG (SNES) disassembly · SMRPG/Routine_Macros_SMRPG.asm#L47700-L47712STZ.w $072C
STZ.w $0730
STZ.w $7004
STZ.w $700C
LDA.w #$0000
STA.l $003090
LDX.w $0750
LDA.w $0544
JSR.w CODE_C12072
LDA.b $80
AND.w #$00FF
STA.w $7000
…Our readingthe acting battler (0x0750) and the list of its specials47706–47712Super-Mario-RPG-Disassembly: Super Mario RPG (SNES) disassembly · SMRPG/Routine_Macros_SMRPG.asm#L48543-L48563CODE_C16610:
REP.b #$30
STZ.b $92
LDA.w $FA0E
AND.w #$01FF
CMP.w #$015D
BNE.b CODE_C16621
INC.b $92
CODE_C16621:
STZ.b $94
LDX.w $0750
LDA.w $001E,x
…Our readingthe list's routine: whether the acting battler's accessory (record place 0x1E) is item 0x4F48552–48558its specials from the bits of record place 0x20 on48560–48563Super-Mario-RPG-Disassembly: Super Mario RPG (SNES) disassembly · SMRPG/Routine_Macros_SMRPG.asm#L47811-L47828LDA.w $0539
AND.w #$00FF
STA.w $072C
TAY
LDA.w $0544
BNE.b CODE_C15EF3
LDA.w $055C
AND.w #$00FF
CLC
ADC.w $7000
TAY
SEP.b #$20
…Our readingthe picked entry is kept as the special (0x072C)47811–47813from the specials list (0x0544 = 0), the entry's listed cost comes off the battle's FP47815–47828An attack's damage is its power less the target's defense, at least 1 unless the power is 0, and at most 9999. An ordinary attack's power is the attacker's Attack, against the target's Defense. A special's is the caster's Magic Attack plus the special's own power, against Magic Defense, except that the four specials that restore HP (Therapy, Group Hug, HP Rain and Come Back) take no defense off (computed). An item's is its own power, with no defense taken off and no multiplier. A party member's ordinary attack first moves its Attack by a random amount: from Attack less the weapon's variance (0 if that is negative) up by 0 to twice the variance. A monster's ordinary attack has no variance; its power, a number from 0 to 7, picks a multiplier applied after the subtraction: ×1, ×1.5 (the half rounded down), ×2, ×4, ×8, ×16, ×32 or ×64. A monster's magic attack uses its Magic Attack plus that number against Magic Defense, and deals 0 when the number is 0. The halving and ×1.5 steps (super-mario-rpg/damage-status-steps) and the elements, which can make the damage 0 (super-mario-rpg/damage-elements), follow, then the 9999 cap. Three kinds of attack skip the formula (super-mario-rpg/damage-skips). A timed hit's extra comes after all of this, from the damage as applied, and has no cap of its own (super-mario-rpg/timed-hit). Code — 0x0750 is the acting battler, taken as the attacker, and 0x072C the special the set-up loadsSuper-Mario-RPG-Disassembly: Super Mario RPG (SNES) disassembly · SMRPG/Routine_Macros_SMRPG.asm#L48600-L48620CLC
ADC.l DATA_FA0000+$12
TAX
LDA.l (DATA_FA20F1&$FF0000)+$02,x
SEP.b #$20
STA.w $7090,y
LDA.b $94
BEQ.b CODE_C1669B
LDA.w $7090,y
BIT.b #$01
BEQ.b CODE_C16697
INC
…Our readingthe cost is the special's byte 248601–48605with the Scrooge Ring, halved and rounded up48606–48614FP less the cost below 0 marks it unusable48616–48620Super-Mario-RPG-Disassembly: Super Mario RPG (SNES) disassembly · SMRPG/Routine_Macros_SMRPG.asm#L74544-L74545LDA.l !RAM_SMRPG_Global_CurrentFP
STA.l $7EFA0COur readingthe battle keeps a copy of the party's FP74544–74545Super-Mario-RPG-Disassembly: Super Mario RPG (SNES) disassembly · SMRPG/Routine_Macros_SMRPG.asm#L234598-L234625 — the specials' names, 15 bytes eachDATA_FA137F: ; Note: Player Spell names/More Enemy Spell names
db $40,"Jump "Super-Mario-RPG-Disassembly: Super Mario RPG (SNES) disassembly · SMRPG/Routine_Macros_SMRPG.asm#L81266-L81275CODE_C2C48B:
LDX.b $CA
LDA.b $FE
BEQ.b CODE_C2C4C0
EOR.l $7E004E,x
AND.b $FE
BEQ.b CODE_C2C4C0
CMP.l $7E0040,x
BCC.b CODE_C2C4C0
STA.l $7E0040,xOur readinga special's statuses go to the target unless it is immune81267–81275Checked by claude, 2026-11-08 — read the special loader and set-up, the specials list's cost routine and the Scrooge Ring test, the list's caller and the FP deduction, and decoded the 27 rowsRevised after a check by a second AI model, 2026-11-08.A monster has a Speed (the battle's turn-sort stat), an evade and a magic evade (super-mario-rpg/hit-chance), elements it nullifies and is weak to (super-mario-rpg/damage-elements), and statuses it is immune to. Of the 239 named monsters, Formless has the highest evade, 100, and the Jester and Mukumuku the highest magic evade, 80; 53 are weak to Fire, 42 to Thunder, 39 to Ice and 30 to Jump, and 74 are immune to all four statuses the specials inflict. The element columns read the four element bits; the low four bits of the two element bytes are not read here. super-mario-rpg-tables/monster-defenses
SMRPG/Routine_Macros_SMRPG.asm#L229577-L229832 — the 16-byte monster rows, through the pointers at L229544-L229576; bytes 2, 8, 9, 12, 13 and 14 are the Speed, evade, magic evade, nullified elements, weaknesses and status immunitiesdw $000A,$010A,$0008,$6401,$0000,$5C00,$0000,$0300
dw $0014,$060E,$040B,$6402,$0000,$0800,$0180,$4200Super-Mario-RPG-Disassembly: Super Mario RPG (SNES) disassembly · SMRPG/Routine_Macros_SMRPG.asm#L74835-L74857LDA.l $7E0015,x
STA.l $7E0070,x
LDA.l $7E0016,x
STA.l $7E0072,x
LDA.l $7E0017,x
STA.l $7E0074,x
LDA.l $7E0018,x
STA.l $7E0076,x
LDA.l $7E0019,x
STA.l $7E0078,x
LDA.b #$00
STA.l $7E0071,x
…Our readingbyte 2 (record 0x15) becomes the Speed word74835–74836bytes 12, 13 and 14 become the nullified elements, weaknesses and status immunities74852–74857The monster table gives each of 256 monster numbers its HP, Attack, Defense, Magic Attack and Magic Defense, and the battle names it from a list of 13-letter names by the same number; 17 numbers have a blank name. HP runs up to 8000 (Smithy), Attack to 250 (Smithy and Culex), Defense to 200 (the Wind Crystal), Magic Attack to 130 (the Fire Crystal and Smithy) and Magic Defense to 180 (the Mad Adder). Each number points to 16 bytes, which the battle copies into the monster's battle record: the first two are its HP, which it starts the battle with, and bytes 3 to 6 fill the places where a party member's record holds Attack, Defense, Magic Attack and Magic Defense. Code — the rows, their pointers and names; byte n sits at record place 0x13 + nAn attack with a hit rate of 100 always hits. Otherwise an attack marked to test the knock-out guard, as a monster attack's knock-out bit marks it, misses a target with that guard, which the Safety Ring, the Attack Scarf, the Jinx Belt and the Quartz Charm give from the start of a battle. Against a monster, a draw from 0 to 99 below its evade (or its magic evade, for an attack that isn't physical) is a miss; then, against any target, a draw from 0 to 99 below the hit rate is a hit. A party member's ordinary attack has a hit rate of 99, so it hits a monster with no evade 99 times in 100 (computed); against a party member only the hit rate is drawn. A miss does nothing to that target, except by the knock-out kind that falls back to the damage formula on a miss (super-mario-rpg/damage-skips). Code — record places 0x1B and 0x1C (bytes 8 and 9) are drawn as evade and magic evadeAn attack with an element (Jump, Fire, Thunder or Ice) deals 0 to a target that nullifies all its elements, except that Mario's Jump-element attacks keep their damage while he wears the Jump Shoes. Otherwise a party member who resists all its elements takes half (rounded down, but not below 1), and a monster weak to all of them takes ×2. A party member's nullified and resisted elements are those of its equipment combined (the Super Suit, the Lazy Shell armor and the Safety Ring nullify all four; the Amulet and the B'tub Ring resist all four); a monster's are its own (super-mario-rpg-tables/monster-defenses). The element step runs after the status steps (super-mario-rpg/damage-formula). A party member's ordinary attack carries its equipment's attack element, which none of the 86 pieces of equipment has (computed). Code — how the element bytes actEach weapon, armor and accessory adds fixed amounts, possibly negative, to five stats while worn: Speed (the stat the battle sorts its battlers by, highest first), Attack, Defense, Magic Attack and Magic Defense. It may also nullify or resist elements, guard against statuses, and give boosts from the start of each battle, and one flag per character (Mario, Toadstool, Bowser, Geno and Mallow) says who can wear it. Weapons give only Attack and a variance (super-mario-rpg/damage-formula); the Lazy Shell and the Frying Pan give the most Attack, 90, with variances of 40 and 20. The Lazy Shell armor gives the most Defense and Magic Defense, 127, and takes 50 from Speed, Attack and Magic Attack. Every character can wear the Work Pants, the Super Suit, the Lazy Shell armor and all accessories but four: the Jump Shoes, the Attack Scarf and the Coin Trick are Mario's alone and the B~tub Ring is Toadstool's. The Super Suit, the Lazy Shell armor and the Safety Ring nullify all four elements, and the Amulet and the B~tub Ring resist them. Code — the turn sort by the Speed wordEach of the 27 specials has a fixed FP cost, power, hit rate, element and statuses. Jump costs 3 FP at power 25 and Ultra Flame 14 at 60; Bowser Crush and Geno Flash cost the most, 16, and Psychopath the least, 1. A damaging special's damage is the caster's Magic Attack plus its power against Magic Defense (super-mario-rpg/damage-formula). Sleepy Time and Mute have a hit rate of 99 and Terrorize and Poison Gas 90; the rest have 100. Jump, Super Jump and Ultra Jump carry the Jump element, Fire Orb, Super Flame and Ultra Flame Fire, Thunderbolt and Shocker Thunder, and Snowy Ice. The list of the acting character's specials halves each cost, rounded up, while the Scrooge Ring is worn, and marks a special unusable when its cost is more than the battle's FP; the cost as listed comes off that FP when the special is picked. Code — status and element bits named by the specials that carry themChecked by claude, 2026-11-08 — read the monster set-up and decoded bytes 2, 8, 9 and 12-14 of every named monsterRevised after a check by a second AI model, 2026-11-08.