You've already forked pokecrystal-board
mirror of
https://gitlab.com/xCrystal/pokecrystal-board.git
synced 2025-09-08 08:13:02 -07:00
Verify data table sizes with table_width and assert_table_length macros
This was discussed in #706 It also uncovered some off-by-one issues with defining some constants. A few structs now use rsreset/_RS to define their offset constants, as discussed in #739
This commit is contained in:
@@ -4,6 +4,7 @@
|
||||
|
||||
BattleCommandPointers:
|
||||
; entries correspond to macros/scripts/battle_commands.asm
|
||||
table_width 2, BattleCommandPointers
|
||||
dw BattleCommand_CheckTurn
|
||||
dw BattleCommand_CheckObedience
|
||||
dw BattleCommand_UsedMoveText
|
||||
@@ -179,3 +180,4 @@ BattleCommandPointers:
|
||||
dw BattleCommand_SuperEffectiveLoopText
|
||||
dw BattleCommand_StartLoop
|
||||
dw BattleCommand_Curl
|
||||
assert_table_length NUM_EFFECT_COMMANDS
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
BattleAnimFrameData:
|
||||
; entries correspond to BATTLEANIMFRAMESET_* constants
|
||||
table_width 2, BattleAnimFrameData
|
||||
dw .Frameset_00 ; BATTLEANIMFRAMESET_00
|
||||
dw .Frameset_01 ; BATTLEANIMFRAMESET_01
|
||||
dw .Frameset_02 ; BATTLEANIMFRAMESET_02
|
||||
@@ -185,6 +186,7 @@ BattleAnimFrameData:
|
||||
dw .Frameset_b6 ; BATTLEANIMFRAMESET_B6
|
||||
dw .Frameset_b7 ; BATTLEANIMFRAMESET_B7
|
||||
dw .Frameset_b8 ; BATTLEANIMFRAMESET_B8
|
||||
assert_table_length NUM_BATTLEANIMFRAMESETS
|
||||
|
||||
.Frameset_00:
|
||||
frame BATTLEANIMOAMSET_00, 6
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
BattleAnimOAMData:
|
||||
; entries correspond to BATTLEANIMOAMSET_* constants
|
||||
table_width 4, BattleAnimOAMData
|
||||
; vtile offset, data length, data pointer
|
||||
dbbw $00, 16, .OAMData_00 ; BATTLEANIMOAMSET_00
|
||||
dbbw $04, 9, .OAMData_01 ; BATTLEANIMOAMSET_01
|
||||
@@ -217,6 +218,7 @@ BattleAnimOAMData:
|
||||
dbbw $00, 6, .OAMData_d5 ; BATTLEANIMOAMSET_D5
|
||||
dbbw $00, 14, .OAMData_d6 ; BATTLEANIMOAMSET_D6
|
||||
dbbw $00, 12, .OAMData_d7 ; BATTLEANIMOAMSET_D7
|
||||
assert_table_length NUM_BATTLEANIMOAMSETS
|
||||
|
||||
.OAMData_11:
|
||||
dbsprite -1, -1, 4, 0, $00, $0
|
||||
|
||||
@@ -6,6 +6,7 @@ ENDM
|
||||
|
||||
AnimObjGFX:
|
||||
; entries correspond to ANIM_GFX_* constants
|
||||
table_width 4, AnimObjGFX
|
||||
anim_obj_gfx 0, AnimObj00GFX
|
||||
anim_obj_gfx 21, AnimObjHitGFX
|
||||
anim_obj_gfx 6, AnimObjCutGFX
|
||||
@@ -48,3 +49,4 @@ AnimObjGFX:
|
||||
anim_obj_gfx 24, AnimObjAeroblastGFX
|
||||
anim_obj_gfx 1, NULL
|
||||
anim_obj_gfx 1, NULL
|
||||
assert_table_length NUM_ANIM_GFX + 1
|
||||
|
||||
@@ -18,6 +18,7 @@ ENDM
|
||||
|
||||
BattleAnimObjects:
|
||||
; entries correspond to ANIM_OBJ_* constants
|
||||
table_width BATTLEANIMOBJ_LENGTH, BattleAnimObjects
|
||||
; ANIM_OBJ_HIT_BIG_YFIX
|
||||
battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_00, BATTLEANIMFUNC_NULL, PAL_BATTLE_OB_GRAY, ANIM_GFX_HIT
|
||||
; ANIM_OBJ_HIT_YFIX
|
||||
@@ -394,3 +395,4 @@ BattleAnimObjects:
|
||||
battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_B7, BATTLEANIMFUNC_NULL, PAL_BATTLE_OB_ENEMY, ANIM_GFX_PLAYERHEAD
|
||||
; ANIM_OBJ_PLAYERHEAD_2ROW
|
||||
battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_B8, BATTLEANIMFUNC_NULL, PAL_BATTLE_OB_PLAYER, ANIM_GFX_ENEMYFEET
|
||||
assert_table_length NUM_ANIM_OBJS
|
||||
|
||||
@@ -2,6 +2,8 @@ BattleTowerTrainers:
|
||||
; The trainer class is not used in Crystal 1.0 due to a bug.
|
||||
; Instead, the sixth character in the trainer's name is used.
|
||||
; See BattleTowerText in engine/events/battle_tower/trainer_text.asm.
|
||||
table_width (NAME_LENGTH - 1) + 1, BattleTowerTrainers
|
||||
; name, class
|
||||
db "HANSON@@@@", FISHER
|
||||
db "SAWYER@@@@", POKEMANIAC
|
||||
db "MASUDA@@@@", GUITARIST
|
||||
@@ -23,6 +25,7 @@ BattleTowerTrainers:
|
||||
db "KAUFMAN@@@", SWIMMERM
|
||||
db "LANCASTER@", SKIER
|
||||
db "McMAHILL@@", CAMPER
|
||||
assert_table_length BATTLETOWER_NUM_UNIQUE_MON
|
||||
; The following can only be sampled in Crystal 1.1.
|
||||
db "OBRIEN@@@@", GENTLEMAN
|
||||
db "FROST@@@@@", BEAUTY
|
||||
@@ -73,3 +76,4 @@ BattleTowerTrainers:
|
||||
db "DYKSTRA@@@", SWIMMERF
|
||||
db "EATON@@@@@", BIKER
|
||||
db "WONG@@@@@@", FIREBREATHER
|
||||
assert_table_length BATTLETOWER_NUM_UNIQUE_TRAINERS
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
BattleTowerMons:
|
||||
; 10 groups (one per floor level) of 21 mons (BATTLETOWER_NUM_UNIQUE_MON).
|
||||
table_width NICKNAMED_MON_STRUCT_LENGTH, BattleTowerMons
|
||||
|
||||
; BattleTowerMons group 1
|
||||
|
||||
@@ -5489,3 +5490,5 @@ BattleTowerMons:
|
||||
bigdw 214 ; SAtk
|
||||
bigdw 214 ; SDef
|
||||
db "RANTA-N@@@@"
|
||||
|
||||
assert_table_length 10 * BATTLETOWER_NUM_UNIQUE_MON
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
BattleTowerTrainerData:: ; ???
|
||||
; 70 tables (BATTLETOWER_NUM_UNIQUE_TRAINERS) of 18 two-argument entries (total size BATTLETOWER_TRAINERDATALENGTH).
|
||||
; Second argument points to an entry in Unknown_170470, to which the first argument is compared.
|
||||
table_width BATTLETOWER_TRAINERDATALENGTH, BattleTowerTrainerData
|
||||
|
||||
; BattleTowerTrainerData table 1:
|
||||
db $37, 3
|
||||
@@ -1401,3 +1402,5 @@ BattleTowerTrainerData:: ; ???
|
||||
db $22, 7
|
||||
db $d1, 0
|
||||
db $32, 13
|
||||
|
||||
assert_table_length BATTLETOWER_NUM_UNIQUE_TRAINERS
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
TileCollisionTable::
|
||||
; entries correspond to COLL_* constants
|
||||
table_width 1, TileCollisionTable
|
||||
db LAND_TILE ; COLL_FLOOR
|
||||
db LAND_TILE ; COLL_01
|
||||
db LAND_TILE ; 02
|
||||
@@ -256,3 +257,4 @@ TileCollisionTable::
|
||||
db LAND_TILE ; fd
|
||||
db LAND_TILE ; fe
|
||||
db WALL_TILE ; COLL_FF
|
||||
assert_table_length $100
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
CreditsStringsPointers:
|
||||
; entries correspond to constants/credits_constants.asm
|
||||
table_width 2, CreditsStringsPointers
|
||||
dw .SatoshiTajiri
|
||||
dw .JunichiMasuda
|
||||
dw .TetsuyaWatanabe
|
||||
@@ -103,6 +104,7 @@ CreditsStringsPointers:
|
||||
dw .UsCoordination
|
||||
dw .TextTranslation
|
||||
dw .PaadTesting
|
||||
assert_table_length NUM_CREDITS_STRINGS
|
||||
|
||||
.SatoshiTajiri: db " SATOSHI TAJIRI@" ; "たじり さとし@"
|
||||
.JunichiMasuda: db " JUNICHI MASUDA@" ; "ますだ じゅんいち@"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
decoration: MACRO
|
||||
; type, name, command, event flag, tile/sprite
|
||||
; type, name, action, event flag, tile/sprite
|
||||
db \1, \2, \3
|
||||
dw \4
|
||||
db \5
|
||||
@@ -7,6 +7,7 @@ ENDM
|
||||
|
||||
DecorationAttributes:
|
||||
; entries correspond to deco constants
|
||||
table_width DECOATTR_STRUCT_LENGTH, DecorationAttributes
|
||||
decoration DECO_PLANT, 0, 0, EVENT_TEMPORARY_UNTIL_MAP_RELOAD_1, 0
|
||||
decoration DECO_PLANT, PUT_IT_AWAY, PUT_AWAY_BED, EVENT_TEMPORARY_UNTIL_MAP_RELOAD_1, 0
|
||||
decoration DECO_BED, FEATHERY_BED, SET_UP_BED, EVENT_DECO_BED_1, $1b
|
||||
@@ -60,3 +61,4 @@ DecorationAttributes:
|
||||
decoration DECO_DOLL, TENTACOOL, SET_UP_DOLL, EVENT_DECO_TENTACOOL_DOLL, SPRITE_TENTACOOL
|
||||
decoration DECO_PLANT, GOLD_TROPHY, SET_UP_DOLL, EVENT_DECO_GOLD_TROPHY, SPRITE_GOLD_TROPHY
|
||||
decoration DECO_PLANT, SILVER_TROPHY, SET_UP_DOLL, EVENT_DECO_SILVER_TROPHY, SPRITE_SILVER_TROPHY
|
||||
assert_table_length NUM_DECOS + NUM_DECO_CATEGORIES + 1
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
DecorationIDs:
|
||||
; see constants/deco_constants.asm
|
||||
table_width 1, DecorationIDs
|
||||
|
||||
db DECO_FEATHERY_BED ; 2
|
||||
db DECO_PINK_BED ; 3
|
||||
db DECO_POLKADOT_BED ; 4
|
||||
@@ -52,4 +54,5 @@ DecorationIDs:
|
||||
db DECO_GOLD_TROPHY_DOLL ; 33
|
||||
db DECO_SILVER_TROPHY_DOLL ; 34
|
||||
|
||||
assert_table_length NUM_DECOS
|
||||
db -1 ; end
|
||||
|
||||
@@ -14,3 +14,5 @@ DefaultOptions:
|
||||
|
||||
db $00
|
||||
db $00
|
||||
.End
|
||||
assert DefaultOptions.End - DefaultOptions == wOptionsEnd - wOptions
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
BugCatchingContestantEventFlagTable:
|
||||
; there are NUM_BUG_CONTESTANTS entries
|
||||
table_width 2, BugCatchingContestantEventFlagTable
|
||||
dw EVENT_BUG_CATCHING_CONTESTANT_1A
|
||||
dw EVENT_BUG_CATCHING_CONTESTANT_2A
|
||||
dw EVENT_BUG_CATCHING_CONTESTANT_3A
|
||||
@@ -10,3 +10,4 @@ BugCatchingContestantEventFlagTable:
|
||||
dw EVENT_BUG_CATCHING_CONTESTANT_8A
|
||||
dw EVENT_BUG_CATCHING_CONTESTANT_9A
|
||||
dw EVENT_BUG_CATCHING_CONTESTANT_10A
|
||||
assert_table_length NUM_BUG_CONTESTANTS
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
BugContestantPointers:
|
||||
; there are NUM_BUG_CONTESTANTS + 1 entries
|
||||
table_width 2, BugContestantPointers
|
||||
dw BugContestant_BugCatcherDon ; this reverts back to the player
|
||||
dw BugContestant_BugCatcherDon
|
||||
dw BugContestant_BugCatcherEd
|
||||
@@ -11,6 +11,7 @@ BugContestantPointers:
|
||||
dw BugContestant_BugCatcherJosh
|
||||
dw BugContestant_YoungsterSamuel
|
||||
dw BugContestant_SchoolboyKipp
|
||||
assert_table_length NUM_BUG_CONTESTANTS + 1
|
||||
|
||||
; contestant format:
|
||||
; db class, id
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
ElevatorFloorNames:
|
||||
; entries correspond to FLOOR_* constants
|
||||
table_width 2, ElevatorFloorNames
|
||||
dw .B4F
|
||||
dw .B3F
|
||||
dw .B2F
|
||||
@@ -16,6 +17,7 @@ ElevatorFloorNames:
|
||||
dw ._10F
|
||||
dw ._11F
|
||||
dw .ROOF
|
||||
assert_table_length NUM_FLOORS
|
||||
|
||||
.B4F: db "B4F@"
|
||||
.B3F: db "B3F@"
|
||||
|
||||
@@ -6,6 +6,7 @@ ENDM
|
||||
|
||||
EngineFlags:
|
||||
; entries correspond to ENGINE_* constants
|
||||
table_width 3, EngineFlags
|
||||
|
||||
; pokegear
|
||||
engine_flag wPokegearFlags, POKEGEAR_RADIO_CARD_F
|
||||
@@ -197,3 +198,5 @@ EngineFlags:
|
||||
|
||||
engine_flag wSwarmFlags, SWARMFLAGS_DUNSPARCE_SWARM_F
|
||||
engine_flag wSwarmFlags, SWARMFLAGS_YANMA_SWARM_F
|
||||
|
||||
assert_table_length NUM_ENGINE_FLAGS
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
HappinessChanges:
|
||||
; entries correspond to HAPPINESS_* constants
|
||||
; change if happiness < 100, change if happiness < 200, change otherwise
|
||||
table_width 3, HappinessChanges
|
||||
; change if happiness < 100, change if happiness < 200, change otherwise
|
||||
db +5, +3, +2 ; Gained a level
|
||||
db +5, +3, +2 ; Vitamin
|
||||
db +1, +1, +0 ; X Item
|
||||
@@ -20,3 +21,4 @@ HappinessChanges:
|
||||
db -15, -15, -20 ; Used Revival Herb (bitter)
|
||||
db +3, +3, +1 ; Grooming
|
||||
db +10, +6, +4 ; Gained a level in the place where it was caught
|
||||
assert_table_length NUM_HAPPINESS_CHANGES
|
||||
|
||||
@@ -8,6 +8,7 @@ ENDM
|
||||
|
||||
NPCTrades:
|
||||
; entries correspond to NPCTRADE_* constants
|
||||
table_width NPCTRADE_STRUCT_LENGTH, NPCTrades
|
||||
npctrade TRADE_DIALOGSET_COLLECTOR, ABRA, MACHOP, "MUSCLE@@@@@", $37, $66, GOLD_BERRY, 37460, "MIKE@@@@@@@", TRADE_GENDER_EITHER
|
||||
npctrade TRADE_DIALOGSET_COLLECTOR, BELLSPROUT, ONIX, "ROCKY@@@@@@", $96, $66, BITTER_BERRY, 48926, "KYLE@@@@@@@", TRADE_GENDER_EITHER
|
||||
npctrade TRADE_DIALOGSET_HAPPY, KRABBY, VOLTORB, "VOLTY@@@@@@", $98, $88, PRZCUREBERRY, 29189, "TIM@@@@@@@@", TRADE_GENDER_EITHER
|
||||
@@ -15,3 +16,4 @@ NPCTrades:
|
||||
npctrade TRADE_DIALOGSET_NEWBIE, HAUNTER, XATU, "PAUL@@@@@@@", $96, $86, MYSTERYBERRY, 15616, "CHRIS@@@@@@", TRADE_GENDER_EITHER
|
||||
npctrade TRADE_DIALOGSET_GIRL, CHANSEY, AERODACTYL, "AEROY@@@@@@", $96, $66, GOLD_BERRY, 26491, "KIM@@@@@@@@", TRADE_GENDER_EITHER
|
||||
npctrade TRADE_DIALOGSET_COLLECTOR, DUGTRIO, MAGNETON, "MAGGIE@@@@@", $96, $66, METAL_COAT, 50082, "FOREST@@@@@", TRADE_GENDER_EITHER
|
||||
assert_table_length NUM_NPC_TRADES
|
||||
|
||||
@@ -1,9 +1,12 @@
|
||||
NUM_ODD_EGGS EQU 14
|
||||
|
||||
prob: MACRO
|
||||
prob_total = prob_total + (\1)
|
||||
dw prob_total * $ffff / 100
|
||||
ENDM
|
||||
|
||||
OddEggProbabilities:
|
||||
table_width 2, OddEggProbabilities
|
||||
prob_total = 0
|
||||
; Pichu
|
||||
prob 8
|
||||
@@ -26,8 +29,10 @@ prob_total = 0
|
||||
; Tyrogue
|
||||
prob 10
|
||||
prob 1
|
||||
assert_table_length NUM_ODD_EGGS
|
||||
|
||||
OddEggs:
|
||||
table_width NICKNAMED_MON_STRUCT_LENGTH, OddEggs
|
||||
|
||||
db PICHU
|
||||
db NO_ITEM
|
||||
@@ -392,3 +397,5 @@ OddEggs:
|
||||
bigdw 9 ; SAtk
|
||||
bigdw 9 ; SDef
|
||||
db "EGG@@@@@@@@"
|
||||
|
||||
assert_table_length NUM_ODD_EGGS
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user