diff options
Diffstat (limited to 'data')
83 files changed, 230 insertions, 32 deletions
diff --git a/data/battle/effect_command_pointers.asm b/data/battle/effect_command_pointers.asm index d1f747a1f..7239e8150 100644 --- a/data/battle/effect_command_pointers.asm +++ b/data/battle/effect_command_pointers.asm @@ -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 diff --git a/data/battle_anims/framesets.asm b/data/battle_anims/framesets.asm index a5641570c..555ec30f1 100644 --- a/data/battle_anims/framesets.asm +++ b/data/battle_anims/framesets.asm @@ -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 diff --git a/data/battle_anims/oam.asm b/data/battle_anims/oam.asm index 4bf4a331e..73f24ec54 100644 --- a/data/battle_anims/oam.asm +++ b/data/battle_anims/oam.asm @@ -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 diff --git a/data/battle_anims/object_gfx.asm b/data/battle_anims/object_gfx.asm index b132c0ed6..103b97ebe 100644 --- a/data/battle_anims/object_gfx.asm +++ b/data/battle_anims/object_gfx.asm @@ -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 diff --git a/data/battle_anims/objects.asm b/data/battle_anims/objects.asm index 16dc7e653..1f7d7b4ab 100644 --- a/data/battle_anims/objects.asm +++ b/data/battle_anims/objects.asm @@ -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 diff --git a/data/battle_tower/classes.asm b/data/battle_tower/classes.asm index c53197548..863759c70 100644 --- a/data/battle_tower/classes.asm +++ b/data/battle_tower/classes.asm @@ -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 diff --git a/data/battle_tower/parties.asm b/data/battle_tower/parties.asm index 9c67c2f72..d972944b6 100644 --- a/data/battle_tower/parties.asm +++ b/data/battle_tower/parties.asm @@ -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 diff --git a/data/battle_tower/unknown.asm b/data/battle_tower/unknown.asm index 3437c444b..af51b1e83 100644 --- a/data/battle_tower/unknown.asm +++ b/data/battle_tower/unknown.asm @@ -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 diff --git a/data/collision/collision_permissions.asm b/data/collision/collision_permissions.asm index 57172ca51..188338ca9 100644 --- a/data/collision/collision_permissions.asm +++ b/data/collision/collision_permissions.asm @@ -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 diff --git a/data/credits_strings.asm b/data/credits_strings.asm index 22ee7c382..c3a502088 100644 --- a/data/credits_strings.asm +++ b/data/credits_strings.asm @@ -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@" ; "ますだ じゅんいち@" diff --git a/data/decorations/attributes.asm b/data/decorations/attributes.asm index 77cd1388b..5e62c3a11 100644 --- a/data/decorations/attributes.asm +++ b/data/decorations/attributes.asm @@ -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 diff --git a/data/decorations/decorations.asm b/data/decorations/decorations.asm index e3ec28f1c..a5519efa0 100644 --- a/data/decorations/decorations.asm +++ b/data/decorations/decorations.asm @@ -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 diff --git a/data/default_options.asm b/data/default_options.asm index 00fcfa10e..76de34387 100644 --- a/data/default_options.asm +++ b/data/default_options.asm @@ -14,3 +14,5 @@ DefaultOptions: db $00 db $00 +.End + assert DefaultOptions.End - DefaultOptions == wOptionsEnd - wOptions diff --git a/data/events/bug_contest_flags.asm b/data/events/bug_contest_flags.asm index 734bf11f8..f3d9ff74d 100644 --- a/data/events/bug_contest_flags.asm +++ b/data/events/bug_contest_flags.asm @@ -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 diff --git a/data/events/bug_contest_winners.asm b/data/events/bug_contest_winners.asm index e29ce0436..525283afb 100644 --- a/data/events/bug_contest_winners.asm +++ b/data/events/bug_contest_winners.asm @@ -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 diff --git a/data/events/elevator_floors.asm b/data/events/elevator_floors.asm index abc793cf2..861653bae 100644 --- a/data/events/elevator_floors.asm +++ b/data/events/elevator_floors.asm @@ -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@" diff --git a/data/events/engine_flags.asm b/data/events/engine_flags.asm index 526413651..8b5d6b89e 100644 --- a/data/events/engine_flags.asm +++ b/data/events/engine_flags.asm @@ -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 diff --git a/data/events/happiness_changes.asm b/data/events/happiness_changes.asm index c0c7b0101..e6228cf08 100644 --- a/data/events/happiness_changes.asm +++ b/data/events/happiness_changes.asm @@ -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 diff --git a/data/events/npc_trades.asm b/data/events/npc_trades.asm index 03d409571..543a50b1e 100644 --- a/data/events/npc_trades.asm +++ b/data/events/npc_trades.asm @@ -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 diff --git a/data/events/odd_eggs.asm b/data/events/odd_eggs.asm index 5b251645a..20bac2dc1 100644 --- a/data/events/odd_eggs.asm +++ b/data/events/odd_eggs.asm @@ -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 diff --git a/data/icon_pointers.asm b/data/icon_pointers.asm index bfe07abb6..1ad361c1c 100644 --- a/data/icon_pointers.asm +++ b/data/icon_pointers.asm @@ -1,5 +1,6 @@ IconPointers: -; entries correspond to ICON_* constants +; entries correspond to ICON_* constants (see constants/icon_constants.asm) + table_width 2, IconPointers dw NullIcon dw PoliwagIcon dw JigglypuffIcon @@ -39,3 +40,4 @@ IconPointers: dw SlowpokeIcon dw SudowoodoIcon dw BigmonIcon + assert_table_length NUM_ICONS + 1 diff --git a/data/items/attributes.asm b/data/items/attributes.asm index 60ada8b6e..459212835 100644 --- a/data/items/attributes.asm +++ b/data/items/attributes.asm @@ -6,7 +6,8 @@ item_attribute: MACRO ENDM ItemAttributes: -; entries correspond to item ids +; entries correspond to item ids (see constants/item_constants.asm) + table_width ITEMATTR_STRUCT_LENGTH, ItemAttributes ; MASTER_BALL item_attribute 0, HELD_NONE, 0, CANT_SELECT, BALL, ITEMMENU_NOUSE, ITEMMENU_CLOSE ; ULTRA_BALL @@ -387,6 +388,7 @@ ItemAttributes: item_attribute 50, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE ; ITEM_BE item_attribute $9999, HELD_NONE, 0, NO_LIMITS, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + assert_table_length NUM_ITEMS ; TM01 item_attribute 3000, HELD_NONE, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE ; TM02 @@ -491,6 +493,7 @@ ItemAttributes: item_attribute 3000, HELD_NONE, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE ; TM50 item_attribute 2000, HELD_NONE, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE + assert_table_length NUM_ITEMS + NUM_TMS + 2 ; count ITEM_C3 and ITEM_DC ; HM01 item_attribute 0, HELD_NONE, 0, CANT_SELECT | CANT_TOSS, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE ; HM02 @@ -505,6 +508,7 @@ ItemAttributes: item_attribute 0, HELD_NONE, 0, CANT_SELECT | CANT_TOSS, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE ; HM07 item_attribute 0, HELD_NONE, 0, CANT_SELECT | CANT_TOSS, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE + assert_table_length NUM_ITEMS + NUM_TMS + 2 + NUM_HMS ; count ITEM_C3 and ITEM_DC ; ITEM_FA item_attribute $9999, HELD_NONE, 0, NO_LIMITS, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE ; $fb @@ -519,3 +523,4 @@ ItemAttributes: item_attribute $9999, HELD_NONE, 0, NO_LIMITS, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE ; $00 item_attribute $9999, HELD_NONE, 0, NO_LIMITS, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + assert_table_length $100 diff --git a/data/items/buena_prizes.asm b/data/items/buena_prizes.asm index 673082a8d..4e2005c4b 100644 --- a/data/items/buena_prizes.asm +++ b/data/items/buena_prizes.asm @@ -1,5 +1,5 @@ BuenaPrizeItems: -; there are NUM_BUENA_PRIZES entries + table_width 2, BuenaPrizeItems db ULTRA_BALL, 2 db FULL_RESTORE, 2 db NUGGET, 3 @@ -9,3 +9,4 @@ BuenaPrizeItems: db CARBOS, 5 db CALCIUM, 5 db HP_UP, 5 + assert_table_length NUM_BUENA_PRIZES diff --git a/data/items/descriptions.asm b/data/items/descriptions.asm index 2a7900b3a..2654a3194 100644 --- a/data/items/descriptions.asm +++ b/data/items/descriptions.asm @@ -1,5 +1,6 @@ ItemDescriptions: -; entries correspond to item ids +; entries correspond to item ids (see constants/item_constants.asm) + table_width 2, ItemDescriptions dw MasterBallDesc dw UltraBallDesc dw BrightpowderDesc @@ -190,6 +191,7 @@ ItemDescriptions: dw MusicMailDesc dw MirageMailDesc dw TeruSama25Desc + assert_table_length NUM_ITEMS dw TeruSama26Desc dw TeruSama26Desc dw TeruSama26Desc @@ -255,6 +257,7 @@ ItemDescriptions: dw TeruSama31Desc dw TeruSama32Desc dw TeruSama33Desc + assert_table_length $ff MasterBallDesc: db "The best BALL. It" diff --git a/data/items/fruit_trees.asm b/data/items/fruit_trees.asm index 9c4e4793d..ff39551e7 100644 --- a/data/items/fruit_trees.asm +++ b/data/items/fruit_trees.asm @@ -1,5 +1,6 @@ FruitTreeItems: ; entries correspond to FRUITTREE_* constants + table_width 1, FruitTreeItems db BERRY ; ROUTE_29 db BERRY ; ROUTE_30_1 db BERRY ; ROUTE_38 @@ -30,3 +31,4 @@ FruitTreeItems: db ICE_BERRY ; PEWTER_CITY_1 db MINT_BERRY ; PEWTER_CITY_2 db BURNT_BERRY ; FUCHSIA_CITY + assert_table_length NUM_FRUIT_TREES diff --git a/data/items/marts.asm b/data/items/marts.asm index 37bf846b4..d96281dfd 100644 --- a/data/items/marts.asm +++ b/data/items/marts.asm @@ -1,5 +1,6 @@ Marts: -; entries correspond to MART_* constants +; entries correspond to MART_* constants (see constants/mart_constants.asm) + table_width 2, Marts dw MartCherrygrove dw MartCherrygroveDex dw MartViolet @@ -34,6 +35,7 @@ Marts: dw MartMtMoon dw MartIndigoPlateau dw MartUnderground + assert_table_length NUM_MARTS MartCherrygrove: db 4 ; # items diff --git a/data/maps/landmarks.asm b/data/maps/landmarks.asm index 9a28ee52e..8dfff34dc 100644 --- a/data/maps/landmarks.asm +++ b/data/maps/landmarks.asm @@ -6,6 +6,7 @@ ENDM Landmarks: ; entries correspond to constants/landmark_constants.asm + table_width 4, Landmarks dbbw 0, 0, SpecialMapName landmark 140, 100, NewBarkTownName landmark 128, 100, Route29Name @@ -53,6 +54,7 @@ Landmarks: landmark 112, 72, DarkCaveName landmark 124, 88, Route46Name landmark 148, 68, SilverCaveName + assert_table_length KANTO_LANDMARK landmark 52, 108, PalletTownName landmark 52, 92, Route1Name landmark 52, 76, ViridianCityName @@ -102,6 +104,7 @@ Landmarks: landmark 12, 100, TohjoFallsName landmark 20, 68, Route28Name landmark 140, 116, FastShipName + assert_table_length NUM_LANDMARKS NewBarkTownName: db "NEW BARK¯TOWN@" CherrygroveCityName: db "CHERRYGROVE¯CITY@" diff --git a/data/maps/maps.asm b/data/maps/maps.asm index bfbd91c34..381e5328f 100644 --- a/data/maps/maps.asm +++ b/data/maps/maps.asm @@ -16,6 +16,7 @@ ENDM MapGroupPointers:: ; pointers to the first map of each map group + table_width 2, MapGroupPointers dw MapGroup_Olivine ; 1 dw MapGroup_Mahogany ; 2 dw MapGroup_Dungeons ; 3 @@ -42,6 +43,7 @@ MapGroupPointers:: dw MapGroup_NewBark ; 24 dw MapGroup_Saffron ; 25 dw MapGroup_Cherrygrove ; 26 + assert_table_length NUM_MAP_GROUPS MapGroup_Olivine: map OlivinePokecenter1F, TILESET_POKECENTER, INDOOR, LANDMARK_OLIVINE_CITY, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE diff --git a/data/maps/outdoor_sprites.asm b/data/maps/outdoor_sprites.asm index 6398a9511..d666aec75 100644 --- a/data/maps/outdoor_sprites.asm +++ b/data/maps/outdoor_sprites.asm @@ -3,6 +3,7 @@ OutdoorSprites: ; entries correspond to map groups + table_width 2, OutdoorSprites dw OlivineGroupSprites dw MahoganyGroupSprites dw DungeonsGroupSprites @@ -29,6 +30,7 @@ OutdoorSprites: dw NewBarkGroupSprites dw SaffronGroupSprites dw CherrygroveGroupSprites + assert_table_length NUM_MAP_GROUPS PalletGroupSprites: db SPRITE_SUICUNE diff --git a/data/maps/roofs.asm b/data/maps/roofs.asm index ac1ea5569..dee4991d0 100644 --- a/data/maps/roofs.asm +++ b/data/maps/roofs.asm @@ -5,10 +5,12 @@ const ROOF_AZALEA ; 2 const ROOF_OLIVINE ; 3 const ROOF_GOLDENROD ; 4 +NUM_ROOFS EQU const_value MapGroupRoofs: ; entries correspond to map groups ; values are indexes for Roofs (see below) + table_width 1, MapGroupRoofs db -1 ; 0 db ROOF_OLIVINE ; 1 (Olivine) db ROOF_AZALEA ; 2 (Mahogany) @@ -36,11 +38,14 @@ MapGroupRoofs: db ROOF_NEW_BARK ; 24 (New Bark) db -1 ; 25 db ROOF_NEW_BARK ; 26 (Cherrygrove) + assert_table_length NUM_MAP_GROUPS + 1 Roofs: ; entries correspond to ROOF_* constants + table_width ROOF_LENGTH * LEN_2BPP_TILE, Roofs INCBIN "gfx/tilesets/roofs/new_bark.2bpp" INCBIN "gfx/tilesets/roofs/violet.2bpp" INCBIN "gfx/tilesets/roofs/azalea.2bpp" INCBIN "gfx/tilesets/roofs/olivine.2bpp" INCBIN "gfx/tilesets/roofs/goldenrod.2bpp" + assert_table_length NUM_ROOFS diff --git a/data/maps/sgb_roof_pal_inds.asm b/data/maps/sgb_roof_pal_inds.asm index a2620e194..617b0041a 100644 --- a/data/maps/sgb_roof_pal_inds.asm +++ b/data/maps/sgb_roof_pal_inds.asm @@ -2,6 +2,7 @@ MapGroupRoofSGBPalInds: ; entries correspond to map groups + table_width 1, MapGroupRoofSGBPalInds db PREDEFPAL_ROUTES db PREDEFPAL_OLIVINE db PREDEFPAL_MAHOGANY @@ -29,3 +30,4 @@ MapGroupRoofSGBPalInds: db PREDEFPAL_NEW_BARK db PREDEFPAL_SAFFRON db PREDEFPAL_CHERRYGROVE + assert_table_length NUM_MAP_GROUPS + 1 diff --git a/data/maps/spawn_points.asm b/data/maps/spawn_points.asm index 2d99fff73..326995485 100644 --- a/data/maps/spawn_points.asm +++ b/data/maps/spawn_points.asm @@ -6,6 +6,7 @@ ENDM SpawnPoints: ; entries correspond to SPAWN_* constants + table_width 4, SpawnPoints spawn PLAYERS_HOUSE_2F, 3, 3 spawn VIRIDIAN_POKECENTER_1F, 5, 3 @@ -39,3 +40,5 @@ SpawnPoints: spawn FAST_SHIP_CABINS_SW_SSW_NW, 6, 2 spawn N_A, -1, -1 + + assert_table_length NUM_SPAWNS + 1 diff --git a/data/mon_menu.asm b/data/mon_menu.asm index f2b9f3ac0..a69f4132f 100644 --- a/data/mon_menu.asm +++ b/data/mon_menu.asm @@ -20,6 +20,7 @@ MonMenuOptionStrings: MonMenuOptions: ; category, item, value; actions are in PokemonActionSubmenu (see engine/pokemon/mon_menu.asm) + table_width 3, MonMenuOptions ; moves db MONMENU_FIELD_MOVE, MONMENUITEM_CUT, CUT db MONMENU_FIELD_MOVE, MONMENUITEM_FLY, FLY @@ -43,4 +44,5 @@ MonMenuOptions: db MONMENU_MENUOPTION, MONMENUITEM_MOVE, MONMENUVALUE_MOVE db MONMENU_MENUOPTION, MONMENUITEM_MAIL, MONMENUVALUE_MAIL db MONMENU_MENUOPTION, MONMENUITEM_ERROR, MONMENUVALUE_ERROR - db -1 + assert_table_length NUM_MONMENUITEMS + db -1 ; end diff --git a/data/moves/animations.asm b/data/moves/animations.asm index bba0d186f..87b904c0f 100644 --- a/data/moves/animations.asm +++ b/data/moves/animations.asm @@ -1,5 +1,6 @@ BattleAnimations:: ; entries correspond to constants/move_constants.asm + table_width 2, BattleAnimations dw BattleAnim_0 dw BattleAnim_Pound dw BattleAnim_KarateChop @@ -252,10 +253,12 @@ BattleAnimations:: dw BattleAnim_RockSmash dw BattleAnim_Whirlpool dw BattleAnim_BeatUp + assert_table_length NUM_ATTACKS + 1 dw BattleAnim_252 dw BattleAnim_253 dw BattleAnim_254 dw BattleAnim_SweetScent2 + assert_table_length $100 ; $100 dw BattleAnim_ThrowPokeBall dw BattleAnim_SendOutMon @@ -279,6 +282,7 @@ BattleAnimations:: dw BattleAnim_Wobble dw BattleAnim_Shake dw BattleAnim_HitConfusion + assert_table_length NUM_BATTLE_ANIMS + 1 BattleAnim_0: BattleAnim_252: diff --git a/data/moves/descriptions.asm b/data/moves/descriptions.asm index 1d2e5b37f..697be13ee 100644 --- a/data/moves/descriptions.asm +++ b/data/moves/descriptions.asm @@ -1,5 +1,6 @@ MoveDescriptions:: ; entries correspond to move ids (see constants/move_constants.asm) + table_width 2, MoveDescriptions dw PoundDescription dw KarateChopDescription dw DoubleslapDescription @@ -251,11 +252,13 @@ MoveDescriptions:: dw RockSmashDescription dw WhirlpoolDescription dw BeatUpDescription + assert_table_length NUM_ATTACKS dw MoveFCDescription dw MoveFDDescription dw MoveFEDescription dw MoveFFDescription dw Move00Description + assert_table_length $100 MoveFCDescription: MoveFDDescription: diff --git a/data/moves/effects_pointers.asm b/data/moves/effects_pointers.asm index 94834de71..6f8fb2e99 100644 --- a/data/moves/effects_pointers.asm +++ b/data/moves/effects_pointers.asm @@ -1,5 +1,6 @@ MoveEffectsPointers: ; entries correspond to EFFECT_* constants + table_width 2, MoveEffectsPointers dw NormalHit dw DoSleep dw PoisonHit @@ -157,3 +158,4 @@ MoveEffectsPointers: dw BeatUp dw Fly dw DefenseCurl + assert_table_length NUM_MOVE_EFECTS diff --git a/data/moves/moves.asm b/data/moves/moves.asm index 49c17d9bc..31f9d27d0 100644 --- a/data/moves/moves.asm +++ b/data/moves/moves.asm @@ -11,7 +11,8 @@ move: MACRO ENDM Moves: -; entries correspond to constants/move_constants.asm +; entries correspond to move ids (see constants/move_constants.asm) + table_width MOVE_LENGTH, Moves move POUND, EFFECT_NORMAL_HIT, 40, NORMAL, 100, 35, 0 move KARATE_CHOP, EFFECT_NORMAL_HIT, 50, FIGHTING, 100, 25, 0 move DOUBLESLAP, EFFECT_MULTI_HIT, 15, NORMAL, 85, 10, 0 @@ -263,3 +264,4 @@ Moves: move ROCK_SMASH, EFFECT_DEFENSE_DOWN_HIT, 20, FIGHTING, 100, 15, 50 move WHIRLPOOL, EFFECT_TRAP_TARGET, 15, WATER, 70, 15, 0 move BEAT_UP, EFFECT_BEAT_UP, 10, DARK, 100, 10, 0 + assert_table_length NUM_ATTACKS diff --git a/data/moves/tmhm_moves.asm b/data/moves/tmhm_moves.asm index 28f28c24d..7ecf9fec8 100644 --- a/data/moves/tmhm_moves.asm +++ b/data/moves/tmhm_moves.asm @@ -3,6 +3,7 @@ TMHMMoves: ; entries correspond to *_TMNUM constants (see constants/item_constants.asm) + table_width 1, TMHMMoves ; TMs n = 1 @@ -43,4 +44,6 @@ PURGE MOVE_FOR_MT n = n + 1 endr + assert_table_length NUM_TM_HM_TUTOR + db 0 ; end diff --git a/data/party_menu_qualities.asm b/data/party_menu_qualities.asm index 7250743af..a89e6beef 100644 --- a/data/party_menu_qualities.asm +++ b/data/party_menu_qualities.asm @@ -20,6 +20,7 @@ ENDM PartyMenuQualityPointers: ; entries correspond to PARTYMENUACTION_* constants + table_width 2, PartyMenuQualityPointers dw .Default ; PARTYMENUACTION_CHOOSE_POKEMON dw .Default ; PARTYMENUACTION_HEALING_ITEM dw .Default ; PARTYMENUACTION_SWITCH @@ -30,6 +31,7 @@ PartyMenuQualityPointers: dw .Gender ; PARTYMENUACTION_GIVE_MON_FEMALE dw .Default ; PARTYMENUACTION_GIVE_ITEM dw .Mobile ; PARTYMENUACTION_MOBILE + assert_table_length NUM_PARTYMENUACTIONS .Default: partymenuqualities NICKNAMES, HP_BAR, HP_DIGITS, LEVEL, STATUS .TMHM: partymenuqualities NICKNAMES, TMHM_COMPAT, LEVEL, STATUS diff --git a/data/phone/non_trainer_names.asm b/data/phone/non_trainer_names.asm index 1792c506a..deef730d5 100644 --- a/data/phone/non_trainer_names.asm +++ b/data/phone/non_trainer_names.asm @@ -1,11 +1,13 @@ NonTrainerCallerNames: -; entries correspond to PHONECONTACT_* constants +; entries correspond to PHONECONTACT_* constants (see constants/trainer_constants.asm) + table_width 2, NonTrainerCallerNames dw .none dw .mom dw .bikeshop dw .bill dw .elm dw .buena + assert_table_length NUM_NONTRAINER_PHONECONTACTS + 1 .none: db "----------@" .mom: db "MOM:@" diff --git a/data/phone/phone_contacts.asm b/data/phone/phone_contacts.asm index 0c67e5109..aad39ae23 100644 --- a/data/phone/phone_contacts.asm +++ b/data/phone/phone_contacts.asm @@ -10,6 +10,7 @@ ENDM PhoneContacts: ; entries correspond to PHONE_* constants + table_width PHONE_CONTACT_SIZE, PhoneContacts phone TRAINER_NONE, PHONE_00, N_A, 0, UnusedPhoneScript, 0, UnusedPhoneScript phone TRAINER_NONE, PHONECONTACT_MOM, PLAYERS_HOUSE_1F, ANYTIME, MomPhoneCalleeScript, 0, UnusedPhoneScript phone TRAINER_NONE, PHONECONTACT_BIKESHOP, OAKS_LAB, 0, UnusedPhoneScript, 0, UnusedPhoneScript @@ -48,3 +49,4 @@ PhoneContacts: phone HIKER, PARRY1, ROUTE_45, ANYTIME, ParryPhoneCalleeScript, ANYTIME, ParryPhoneCallerScript phone PICNICKER, ERIN1, ROUTE_46, ANYTIME, ErinPhoneCalleeScript, ANYTIME, ErinPhoneCallerScript phone TRAINER_NONE, PHONECONTACT_BUENA, GOLDENROD_DEPT_STORE_ROOF, ANYTIME, BuenaPhoneCalleeScript, ANYTIME, BuenaPhoneCallerScript + assert_table_length NUM_PHONE_CONTACTS + 1 diff --git a/data/phone/special_calls.asm b/data/phone/special_calls.asm index 826a5d283..a516e5957 100644 --- a/data/phone/special_calls.asm +++ b/data/phone/special_calls.asm @@ -7,6 +7,7 @@ ENDM SpecialPhoneCallList: ; entries correspond to SPECIALCALL_* constants + table_width SPECIALCALL_SIZE, SpecialPhoneCallList specialcall SpecialCallOnlyWhenOutside, PHONECONTACT_ELM, ElmPhoneCallerScript specialcall SpecialCallOnlyWhenOutside, PHONECONTACT_ELM, ElmPhoneCallerScript specialcall SpecialCallOnlyWhenOutside, PHONECONTACT_ELM, ElmPhoneCallerScript @@ -15,3 +16,4 @@ SpecialPhoneCallList: specialcall SpecialCallWhereverYouAre, PHONECONTACT_BIKESHOP, BikeShopPhoneCallerScript specialcall SpecialCallWhereverYouAre, PHONECONTACT_MOM, MomPhoneLectureScript specialcall SpecialCallOnlyWhenOutside, PHONECONTACT_ELM, ElmPhoneCallerScript + assert_table_length NUM_SPECIALCALLS diff --git a/data/pokemon/base_stats.asm b/data/pokemon/base_stats.asm index 74928d860..0bd395fd8 100644 --- a/data/pokemon/base_stats.asm +++ b/data/pokemon/base_stats.asm @@ -32,6 +32,7 @@ endr ENDM BaseData:: + table_width BASE_DATA_SIZE, BaseData INCLUDE "data/pokemon/base_stats/bulbasaur.asm" INCLUDE "data/pokemon/base_stats/ivysaur.asm" INCLUDE "data/pokemon/base_stats/venusaur.asm" @@ -283,5 +284,4 @@ INCLUDE "data/pokemon/base_stats/tyranitar.asm" INCLUDE "data/pokemon/base_stats/lugia.asm" INCLUDE "data/pokemon/base_stats/ho_oh.asm" INCLUDE "data/pokemon/base_stats/celebi.asm" -.End: - assert BaseData.End - BaseData == NUM_POKEMON * BASE_DATA_SIZE + assert_table_length NUM_POKEMON diff --git a/data/pokemon/cries.asm b/data/pokemon/cries.asm index e6255e040..dc0d08df9 100644 --- a/data/pokemon/cries.asm +++ b/data/pokemon/cries.asm @@ -5,6 +5,7 @@ ENDM PokemonCries:: ; entries correspond to constants/pokemon_constants.asm + table_width MON_CRY_LENGTH, PokemonCries mon_cry CRY_BULBASAUR, 128, 129 ; BULBASAUR mon_cry CRY_BULBASAUR, 32, 256 ; IVYSAUR mon_cry CRY_BULBASAUR, 0, 320 ; VENUSAUR @@ -256,7 +257,9 @@ PokemonCries:: mon_cry CRY_TYPHLOSION, 0, 256 ; LUGIA mon_cry CRY_AIPOM, 0, 384 ; HO_OH mon_cry CRY_ENTEI, 330, 273 ; CELEBI + assert_table_length NUM_POKEMON mon_cry CRY_NIDORAN_M, 0, 0 ; 252 mon_cry CRY_NIDORAN_M, 0, 0 ; 253 mon_cry CRY_NIDORAN_M, 0, 0 ; 254 mon_cry CRY_NIDORAN_M, 0, 0 ; 255 + assert_table_length $ff diff --git a/data/pokemon/dex_entry_pointers.asm b/data/pokemon/dex_entry_pointers.asm index 6081757e5..890745500 100644 --- a/data/pokemon/dex_entry_pointers.asm +++ b/data/pokemon/dex_entry_pointers.asm @@ -1,5 +1,6 @@ PokedexDataPointerTable: ; entries correspond to constants/pokemon_constants.asm + table_width 2, PokedexDataPointerTable dw BulbasaurPokedexEntry dw IvysaurPokedexEntry dw VenusaurPokedexEntry @@ -251,3 +252,4 @@ PokedexDataPointerTable: dw LugiaPokedexEntry dw HoOhPokedexEntry dw CelebiPokedexEntry + assert_table_length NUM_POKEMON diff --git a/data/pokemon/dex_order_alpha.asm b/data/pokemon/dex_order_alpha.asm index b93238cb9..63e80c3c2 100644 --- a/data/pokemon/dex_order_alpha.asm +++ b/data/pokemon/dex_order_alpha.asm @@ -1,6 +1,7 @@ ; Every Pokémon sorted alphabetically by name. AlphabeticalPokedexOrder: + table_width 1, AlphabeticalPokedexOrder db ABRA db AERODACTYL db AIPOM @@ -252,3 +253,4 @@ AlphabeticalPokedexOrder: db YANMA db ZAPDOS db ZUBAT + assert_table_length NUM_POKEMON diff --git a/data/pokemon/dex_order_new.asm b/data/pokemon/dex_order_new.asm index 853fbe73d..77977cb3a 100644 --- a/data/pokemon/dex_order_new.asm +++ b/data/pokemon/dex_order_new.asm @@ -1,6 +1,7 @@ ; Every Pokémon sorted in New Pokédex Order. NewPokedexOrder: + table_width 1, NewPokedexOrder db CHIKORITA db BAYLEEF db MEGANIUM @@ -252,3 +253,4 @@ NewPokedexOrder: db MEWTWO db MEW db CELEBI + assert_table_length NUM_POKEMON diff --git a/data/pokemon/egg_move_pointers.asm b/data/pokemon/egg_move_pointers.asm index dacf4cffd..e6e087bb4 100644 --- a/data/pokemon/egg_move_pointers.asm +++ b/data/pokemon/egg_move_pointers.asm @@ -1,4 +1,5 @@ EggMovePointers:: + table_width 2, EggMovePointers dw BulbasaurEggMoves dw NoEggMoves dw NoEggMoves @@ -250,3 +251,4 @@ EggMovePointers:: dw NoEggMoves dw NoEggMoves dw NoEggMoves + assert_table_length NUM_POKEMON diff --git a/data/pokemon/evos_attacks_pointers.asm b/data/pokemon/evos_attacks_pointers.asm index 7b27c6a74..3b4155252 100644 --- a/data/pokemon/evos_attacks_pointers.asm +++ b/data/pokemon/evos_attacks_pointers.asm @@ -1,6 +1,7 @@ ; Evolutions and attacks are grouped together since they're both checked at level-up. EvosAttacksPointers:: + table_width 2, EvosAttacksPointers dw BulbasaurEvosAttacks dw IvysaurEvosAttacks dw VenusaurEvosAttacks @@ -252,3 +253,4 @@ EvosAttacksPointers:: dw LugiaEvosAttacks dw HoOhEvosAttacks dw CelebiEvosAttacks + assert_table_length NUM_POKEMON diff --git a/data/pokemon/gen1_base_special.asm b/data/pokemon/gen1_base_special.asm index 306ce31d9..1c523a014 100644 --- a/data/pokemon/gen1_base_special.asm +++ b/data/pokemon/gen1_base_special.asm @@ -1,6 +1,7 @@ ; The original base Special stat for each Pokémon from Red/Blue KantoMonSpecials: + table_width 1, KantoMonSpecials db 65 ; BULBASAUR db 80 ; IVYSAUR db 100 ; VENUSAUR @@ -152,3 +153,4 @@ KantoMonSpecials: db 100 ; DRAGONITE db 154 ; MEWTWO db 100 ; MEW + assert_table_length JOHTO_POKEMON - 1 diff --git a/data/pokemon/gen1_order.asm b/data/pokemon/gen1_order.asm index 45efcafa0..ca40398a4 100644 --- a/data/pokemon/gen1_order.asm +++ b/data/pokemon/gen1_order.asm @@ -1,4 +1,5 @@ Pokered_MonIndices: + table_width 1, Pokered_MonIndices db RHYDON db KANGASKHAN db NIDORAN_M @@ -189,7 +190,7 @@ Pokered_MonIndices: db BELLSPROUT db WEEPINBELL db VICTREEBEL - + assert_table_length 190 ; gen 1 mon indexes db CHIKORITA db BAYLEEF db MEGANIUM @@ -252,3 +253,4 @@ Pokered_MonIndices: db QWILFISH db WOBBUFFET db WOBBUFFET + assert_table_length NUM_POKEMON + 1 diff --git a/data/pokemon/menu_icons.asm b/data/pokemon/menu_icons.asm index f378cbfbe..506d060c3 100644 --- a/data/pokemon/menu_icons.asm +++ b/data/pokemon/menu_icons.asm @@ -1,6 +1,7 @@ ; party menu icons MonMenuIcons: + table_width 1, MonMenuIcons db ICON_BULBASAUR ; BULBASAUR db ICON_BULBASAUR ; IVYSAUR db ICON_BULBASAUR ; VENUSAUR @@ -252,3 +253,4 @@ MonMenuIcons: db ICON_LUGIA ; LUGIA db ICON_HO_OH ; HO_OH db ICON_HUMANSHAPE ; CELEBI + assert_table_length NUM_POKEMON diff --git a/data/pokemon/names.asm b/data/pokemon/names.asm index 266b0c020..ad1d0ef57 100644 --- a/data/pokemon/names.asm +++ b/data/pokemon/names.asm @@ -1,4 +1,5 @@ PokemonNames:: + table_width NAME_LENGTH - 1, PokemonNames db "BULBASAUR@" db "IVYSAUR@@@" db "VENUSAUR@@" @@ -250,8 +251,11 @@ PokemonNames:: db "LUGIA@@@@@" db "HO-OH@@@@@" db "CELEBI@@@@" + assert_table_length NUM_POKEMON db "?????@@@@@" db "EGG@@@@@@@" + assert_table_length EGG db "?????@@@@@" db "?????@@@@@" db "?????@@@@@" + assert_table_length $100 diff --git a/data/pokemon/palettes.asm b/data/pokemon/palettes.asm index 917a629bf..5cefbd38e 100644 --- a/data/pokemon/palettes.asm +++ b/data/pokemon/palettes.asm @@ -5,6 +5,9 @@ PokemonPalettes: ; only the middle two colors are included, not black or white. ; Shiny palettes are defined directly, not generated. + ; 2 middle palettes, front and shiny, with 2 colors each + table_width PAL_COLOR_SIZE * 2 * 2, PokemonPalettes + ; 000 RGB 30, 22, 17 RGB 16, 14, 19 @@ -515,6 +518,8 @@ INCLUDE "gfx/pokemon/ho_oh/shiny.pal" INCBIN "gfx/pokemon/celebi/front.gbcpal", middle_colors INCLUDE "gfx/pokemon/celebi/shiny.pal" + assert_table_length NUM_POKEMON + 1 + ; 252 RGB 30, 26, 11 RGB 23, 16, 00 @@ -525,6 +530,8 @@ INCLUDE "gfx/pokemon/celebi/shiny.pal" INCBIN "gfx/pokemon/egg/front.gbcpal", middle_colors INCLUDE "gfx/pokemon/egg/shiny.pal" + assert_table_length EGG + 1 + ; 254 RGB 30, 26, 11 RGB 23, 16, 00 @@ -538,3 +545,5 @@ INCLUDE "gfx/pokemon/egg/shiny.pal" ; 255 shiny RGB 23, 23, 23 RGB 17, 17, 17 + + assert_table_length $100 diff --git a/data/pokemon/pic_pointers.asm b/data/pokemon/pic_pointers.asm index c45a9837e..a57c63d83 100644 --- a/data/pokemon/pic_pointers.asm +++ b/data/pokemon/pic_pointers.asm @@ -2,6 +2,7 @@ PokemonPicPointers:: ; entries correspond to Pokémon species, two apiece + table_width 3 * 2, PokemonPicPointers dba_pic BulbasaurFrontpic dba_pic BulbasaurBackpic dba_pic IvysaurFrontpic @@ -507,7 +508,9 @@ PokemonPicPointers:: dba_pic HoOhBackpic dba_pic CelebiFrontpic dba_pic CelebiBackpic + assert_table_length NUM_POKEMON dbw -1, -1 ; unused dbw -1, -1 ; unused dba_pic EggPic dbw -1, -1 ; unused + assert_table_length EGG diff --git a/data/pokemon/unown_pic_pointers.asm b/data/pokemon/unown_pic_pointers.asm index 1ae0da6b6..6ecfb4e62 100644 --- a/data/pokemon/unown_pic_pointers.asm +++ b/data/pokemon/unown_pic_pointers.asm @@ -1,5 +1,6 @@ UnownPicPointers:: ; entries correspond to Unown letters, two apiece + table_width 3 * 2, UnownPicPointers dba_pic UnownAFrontpic dba_pic UnownABackpic dba_pic UnownBFrontpic @@ -52,3 +53,4 @@ UnownPicPointers:: dba_pic UnownYBackpic dba_pic UnownZFrontpic dba_pic UnownZBackpic + assert_table_length NUM_UNOWN diff --git a/data/pokemon/unown_words.asm b/data/pokemon/unown_words.asm index 6ddd0f466..329a6aae0 100644 --- a/data/pokemon/unown_words.asm +++ b/data/pokemon/unown_words.asm @@ -9,7 +9,8 @@ ENDM UnownWords: ; entries correspond to UNOWN_* form constants - dw UnownWordA + table_width 2, UnownWords + dw UnownWordA ; unused dw UnownWordA dw UnownWordB dw UnownWordC @@ -36,6 +37,7 @@ UnownWords: dw UnownWordX dw UnownWordY dw UnownWordZ + assert_table_length NUM_UNOWN + 1 UnownWordA: unownword "ANGRY" UnownWordB: unownword "BEAR" diff --git a/data/radio/buenas_passwords.asm b/data/radio/buenas_passwords.asm index 85e1b951b..078bcdd4c 100644 --- a/data/radio/buenas_passwords.asm +++ b/data/radio/buenas_passwords.asm @@ -1,5 +1,5 @@ BuenasPasswordTable: -; there are NUM_PASSWORD_CATEGORIES entries + table_width 2, BuenasPasswordTable dw .JohtoStarters dw .Beverages dw .HealingItems @@ -11,6 +11,7 @@ BuenasPasswordTable: dw .Moves dw .XItems dw .RadioStations + assert_table_length NUM_PASSWORD_CATEGORIES ; string type, points, option 1, option 2, option 3 .JohtoStarters: db BUENA_MON, 10, CYNDAQUIL, TOTODILE, CHIKORITA diff --git a/data/radio/channel_music.asm b/data/radio/channel_music.asm index 62504ed11..5a74ea7ad 100644 --- a/data/radio/channel_music.asm +++ b/data/radio/channel_music.asm @@ -1,5 +1,6 @@ RadioChannelSongs: -; entries correspond to radio channel ids +; entries correspond to radio channel ids (see constants/radio_constants.asm) + table_width 2, RadioChannelSongs dw MUSIC_POKEMON_TALK dw MUSIC_POKEMON_CENTER dw MUSIC_TITLE @@ -11,3 +12,4 @@ RadioChannelSongs: dw MUSIC_POKE_FLUTE_CHANNEL dw MUSIC_RUINS_OF_ALPH_RADIO dw MUSIC_LAKE_OF_RAGE_ROCKET_RADIO + assert_table_length NUM_RADIO_CHANNELS diff --git a/data/radio/oaks_pkmn_talk_routes.asm b/data/radio/oaks_pkmn_talk_routes.asm index db2447401..acef4bdd3 100644 --- a/data/radio/oaks_pkmn_talk_routes.asm +++ b/data/radio/oaks_pkmn_talk_routes.asm @@ -1,7 +1,6 @@ ; Oak's Pokémon Talk will list wild Pokémon on these maps. OaksPKMNTalkRoutes: -; there are NUM_OAKS_POKEMON_TALK_ROUTES entries map_id ROUTE_29 map_id ROUTE_46 map_id ROUTE_30 @@ -17,3 +16,4 @@ OaksPKMNTalkRoutes: map_id ROUTE_45 map_id ROUTE_36 map_id ROUTE_31 +.End diff --git a/data/sprite_anims/framesets.asm b/data/sprite_anims/framesets.asm index 5a154acd8..b7ebc3352 100644 --- a/data/sprite_anims/framesets.asm +++ b/data/sprite_anims/framesets.asm @@ -1,5 +1,6 @@ SpriteAnimFrameData: -; entries correspond to SPRITE_ANIM_FRAMESET_* constants +; entries correspond to SPRITE_ANIM_FRAMESET_* constants (see constants/sprite_anim_constants.asm) + table_width 2, SpriteAnimFrameData dw .Frameset_00 dw .Frameset_PartyMon dw .Frameset_PartyMonWithMail @@ -66,6 +67,7 @@ SpriteAnimFrameData: dw .Frameset_IntroUnownF dw .Frameset_CelebiLeft dw .Frameset_CelebiRight + assert_table_length NUM_SPRITE_ANIM_FRAMESETS .Frameset_00: frame SPRITE_ANIM_OAMSET_RED_WALK_1, 32 diff --git a/data/sprite_anims/oam.asm b/data/sprite_anims/oam.asm index 10e6ed1d9..6207c60a5 100644 --- a/data/sprite_anims/oam.asm +++ b/data/sprite_anims/oam.asm @@ -1,5 +1,6 @@ SpriteAnimOAMData: -; entries correspond to SPRITE_ANIM_OAMSET_* constants +; entries correspond to SPRITE_ANIM_OAMSET_* constants (see constants/sprite_anim_constants.asm) + table_width 3, SpriteAnimOAMData ; vtile offset, data pointer dbw $00, .OAMData_RedWalk ; SPRITE_ANIM_OAMSET_RED_WALK_1 dbw $04, .OAMData_RedWalk ; SPRITE_ANIM_OAMSET_RED_WALK_2 @@ -141,6 +142,7 @@ SpriteAnimOAMData: dbw $08, .OAMData_GameFreakLogo4_11 ; SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_9 dbw $04, .OAMData_GameFreakLogo4_11 ; SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_10 dbw $00, .OAMData_GameFreakLogo4_11 ; SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_11 + assert_table_length NUM_SPRITE_ANIM_OAMSETS .OAMData_1x1_Palette0: db 1 diff --git a/data/sprite_anims/sequences.asm b/data/sprite_anims/sequences.asm index d458d2eee..c41e96cc1 100644 --- a/data/sprite_anims/sequences.asm +++ b/data/sprite_anims/sequences.asm @@ -1,5 +1,6 @@ SpriteAnimSeqData: -; entries correspond to SPRITE_ANIM_INDEX_* constants +; entries correspond to SPRITE_ANIM_INDEX_* constants (see constants/sprite_anim_constants.asm) + table_width 3, SpriteAnimSeqData ; frameset, sequence, tile ; SPRITE_ANIM_INDEX_PARTY_MON db SPRITE_ANIM_FRAMESET_PARTY_MON, SPRITE_ANIM_SEQ_PARTY_MON, SPRITE_ANIM_DICT_DEFAULT @@ -91,3 +92,4 @@ SpriteAnimSeqData: db SPRITE_ANIM_FRAMESET_INTRO_SUICUNE_AWAY, SPRITE_ANIM_SEQ_INTRO_SUICUNE_AWAY, SPRITE_ANIM_DICT_DEFAULT ; SPRITE_ANIM_INDEX_CELEBI db SPRITE_ANIM_FRAMESET_CELEBI_LEFT, SPRITE_ANIM_SEQ_NULL, SPRITE_ANIM_DICT_DEFAULT + assert_table_length NUM_SPRITE_ANIM_INDEXES diff --git a/data/sprites/emotes.asm b/data/sprites/emotes.asm index 2371c4624..32f4c2598 100644 --- a/data/sprites/emotes.asm +++ b/data/sprites/emotes.asm @@ -7,6 +7,7 @@ ENDM Emotes: ; entries correspond to EMOTE_* constants + table_width EMOTE_LENGTH, Emotes emote ShockEmote, 4, $f8 emote QuestionEmote, 4, $f8 emote HappyEmote, 4, $f8 @@ -19,3 +20,4 @@ Emotes: emote FishingRodGFX, 2, $fc emote BoulderDustGFX, 2, $fe emote GrassRustleGFX, 1, $fe + assert_table_length NUM_EMOTES diff --git a/data/sprites/facings.asm b/data/sprites/facings.asm index aebf97ff5..b1bc7abf5 100644 --- a/data/sprites/facings.asm +++ b/data/sprites/facings.asm @@ -1,5 +1,6 @@ Facings: -; entries correspond to FACING_* constants +; entries correspond to FACING_* constants (see constants/map_object_constants.asm) + table_width 2, Facings dw FacingStepDown0 dw FacingStepDown1 dw FacingStepDown2 @@ -32,10 +33,8 @@ Facings: dw FacingBoulderDust2 dw FacingGrass1 dw FacingGrass2 -.End - dw 0 - -NUM_FACINGS EQU (Facings.End - Facings) / 2 + assert_table_length NUM_FACINGS + dw 0 ; end ; Tables used as a reference to transform OAM data. diff --git a/data/sprites/map_objects.asm b/data/sprites/map_objects.asm index 05b2e084b..60a718131 100644 --- a/data/sprites/map_objects.asm +++ b/data/sprites/map_objects.asm @@ -1,5 +1,6 @@ SpriteMovementData:: ; entries correspond to SPRITEMOVEDATA_* constants + table_width NUM_SPRITEMOVEDATA_FIELDS, SpriteMovementData ; SPRITEMOVEDATA_00 db SPRITEMOVEFN_00 ; movement function @@ -304,3 +305,5 @@ SpriteMovementData:: db 0 ; flags1 db 0 ; flags2 db 0 ; palette flags + + assert_table_length NUM_SPRITEMOVEDATA + 1 diff --git a/data/sprites/sprite_mons.asm b/data/sprites/sprite_mons.asm index 3d53804db..9d3e62acd 100644 --- a/data/sprites/sprite_mons.asm +++ b/data/sprites/sprite_mons.asm @@ -1,5 +1,6 @@ SpriteMons: ; entries correspond to SPRITE_* constants past SPRITE_POKEMON + table_width 1, SpriteMons db UNOWN db GEODUDE db GROWLITHE @@ -35,3 +36,4 @@ SpriteMons: db GYARADOS db LUGIA db HO_OH + assert_table_length NUM_POKEMON_SPRITES diff --git a/data/sprites/sprites.asm b/data/sprites/sprites.asm index 39c962b85..0839ec971 100644 --- a/data/sprites/sprites.asm +++ b/data/sprites/sprites.asm @@ -6,6 +6,7 @@ ENDM OverworldSprites: ; entries correspond to SPRITE_* constants + table_width NUM_SPRITEDATA_FIELDS, OverworldSprites overworld_sprite ChrisSpriteGFX, 12, WALKING_SPRITE, PAL_OW_RED overworld_sprite ChrisBikeSpriteGFX, 12, WALKING_SPRITE, PAL_OW_RED overworld_sprite GameboyKidSpriteGFX, 12, STANDING_SPRITE, PAL_OW_GREEN @@ -108,3 +109,4 @@ OverworldSprites: overworld_sprite EnteiSpriteGFX, 4, STILL_SPRITE, PAL_OW_RED overworld_sprite RaikouSpriteGFX, 4, STILL_SPRITE, PAL_OW_RED overworld_sprite StandingYoungsterSpriteGFX, 12, STANDING_SPRITE, PAL_OW_BLUE + assert_table_length NUM_OVERWORLD_SPRITES diff --git a/data/tilesets.asm b/data/tilesets.asm index eb5b6fe49..9d8f62382 100644 --- a/data/tilesets.asm +++ b/data/tilesets.asm @@ -11,7 +11,8 @@ ENDM ; - The *Anim are defined in engine/tilesets/tileset_anims.asm Tilesets:: -; entries correspond to TILESET_* constants +; entries correspond to TILESET_* constants (see constants/tileset_constants.asm) + table_width TILESET_LENGTH, Tilesets tileset Tileset0 tileset TilesetJohto tileset TilesetJohtoModern @@ -49,3 +50,4 @@ Tilesets:: tileset TilesetKabutoWordRoom tileset TilesetOmanyteWordRoom tileset TilesetAerodactylWordRoom + assert_table_length NUM_TILESETS + 1 diff --git a/data/trainers/attributes.asm b/data/trainers/attributes.asm index 67d852d83..70544977d 100644 --- a/data/trainers/attributes.asm +++ b/data/trainers/attributes.asm @@ -1,5 +1,6 @@ TrainerClassAttributes: ; entries correspond to trainer classes (see constants/trainer_constants.asm) + table_width NUM_TRAINER_ATTRIBUTES, TrainerClassAttributes ; Falkner db NO_ITEM, NO_ITEM ; items @@ -402,3 +403,5 @@ TrainerClassAttributes: db 25 ; base reward dw AI_BASIC | AI_SETUP | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS | AI_RISKY dw CONTEXT_USE | SWITCH_SOMETIMES + + assert_table_length NUM_TRAINER_CLASSES diff --git a/data/trainers/dvs.asm b/data/trainers/dvs.asm index 91918b4d9..12bba0da6 100644 --- a/data/trainers/dvs.asm +++ b/data/trainers/dvs.asm @@ -1,5 +1,6 @@ TrainerClassDVs: ; entries correspond to trainer classes (see constants/trainer_constants.asm) + table_width 2, TrainerClassDVs ; atk,def,spd,spc dn 9, 10, 7, 7 ; FALKNER dn 8, 8, 8, 8 ; WHITNEY @@ -68,3 +69,4 @@ TrainerClassDVs: dn 9, 8, 8, 8 ; OFFICER dn 7, 14, 10, 8 ; GRUNTF dn 9, 8, 8, 8 ; MYSTICALMAN + assert_table_length NUM_TRAINER_CLASSES diff --git a/data/trainers/encounter_music.asm b/data/trainers/encounter_music.asm index a64d160fe..026646952 100644 --- a/data/trainers/encounter_music.asm +++ b/data/trainers/encounter_music.asm @@ -2,6 +2,7 @@ TrainerEncounterMusic:: ; entries correspond to trainer classes (see constants/trainer_constants.asm) + table_width 1, TrainerEncounterMusic db MUSIC_HIKER_ENCOUNTER ; none db MUSIC_YOUNGSTER_ENCOUNTER ; falkner db MUSIC_LASS_ENCOUNTER ; whitney @@ -70,6 +71,7 @@ TrainerEncounterMusic:: db MUSIC_HIKER_ENCOUNTER ; officer db MUSIC_ROCKET_ENCOUNTER ; gruntf db MUSIC_HIKER_ENCOUNTER ; mysticalman - db MUSIC_HIKER_ENCOUNTER - db MUSIC_HIKER_ENCOUNTER - db MUSIC_HIKER_ENCOUNTER + assert_table_length NUM_TRAINER_CLASSES + 1 + db MUSIC_HIKER_ENCOUNTER ; unused + db MUSIC_HIKER_ENCOUNTER ; unused + db MUSIC_HIKER_ENCOUNTER ; unused diff --git a/data/trainers/genders.asm b/data/trainers/genders.asm index 1bfc925d2..230b29205 100644 --- a/data/trainers/genders.asm +++ b/data/trainers/genders.asm @@ -2,6 +2,7 @@ BTTrainerClassGenders: ; entries correspond to trainer classes + table_width 1, BTTrainerClassGenders db MALE ; FALKNER db FEMALE ; WHITNEY db FEMALE ; BUGSY @@ -68,3 +69,4 @@ BTTrainerClassGenders: db MALE ; BLUE db MALE ; OFFICER db FEMALE ; GRUNTF + assert_table_length NUM_TRAINER_CLASSES - 1 ; exclude MYSTICALMAN diff --git a/data/trainers/palettes.asm b/data/trainers/palettes.asm index abbe519ca..342999647 100644 --- a/data/trainers/palettes.asm +++ b/data/trainers/palettes.asm @@ -4,6 +4,8 @@ TrainerPalettes: ; Each .gbcpal is generated from the corresponding .png, and ; only the middle two colors are included, not black or white. + table_width PAL_COLOR_SIZE * 2, TrainerPalettes + PlayerPalette: ; Chris uses the same colors as Cal INCBIN "gfx/trainers/cal.gbcpal", middle_colors KrisPalette: ; Kris shares Falkner's palette @@ -74,3 +76,5 @@ INCBIN "gfx/trainers/blue.gbcpal", middle_colors INCBIN "gfx/trainers/officer.gbcpal", middle_colors INCBIN "gfx/trainers/grunt_f.gbcpal", middle_colors INCBIN "gfx/trainers/mysticalman.gbcpal", middle_colors + + assert_table_length NUM_TRAINER_CLASSES + 1 diff --git a/data/trainers/party_pointers.asm b/data/trainers/party_pointers.asm index 45ba65b85..985e81ca4 100644 --- a/data/trainers/party_pointers.asm +++ b/data/trainers/party_pointers.asm @@ -2,6 +2,7 @@ TrainerGroups: ; entries correspond to trainer classes (see constants/trainer_constants.asm) + table_width 2, TrainerGroups dw FalknerGroup dw WhitneyGroup dw BugsyGroup @@ -69,3 +70,4 @@ TrainerGroups: dw OfficerGroup dw GruntFGroup dw MysticalmanGroup + assert_table_length NUM_TRAINER_CLASSES diff --git a/data/trainers/pic_pointers.asm b/data/trainers/pic_pointers.asm index 6fc444eb6..31740ea3d 100644 --- a/data/trainers/pic_pointers.asm +++ b/data/trainers/pic_pointers.asm @@ -2,6 +2,7 @@ TrainerPicPointers:: ; entries correspond to trainer classes (see constants/trainer_constants.asm) + table_width 3, TrainerPicPointers dba_pic FalknerPic dba_pic WhitneyPic dba_pic BugsyPic @@ -69,3 +70,4 @@ TrainerPicPointers:: dba_pic OfficerPic dba_pic GruntfPic dba_pic MysticalmanPic + assert_table_length NUM_TRAINER_CLASSES diff --git a/data/trainers/sprites.asm b/data/trainers/sprites.asm index b92a9032c..cf2f59961 100644 --- a/data/trainers/sprites.asm +++ b/data/trainers/sprites.asm @@ -1,5 +1,6 @@ BTTrainerClassSprites: ; entries correspond to trainer classes + table_width 1, BTTrainerClassSprites db SPRITE_FALKNER db SPRITE_WHITNEY db SPRITE_BUGSY @@ -66,3 +67,4 @@ BTTrainerClassSprites: db SPRITE_BLUE db SPRITE_OFFICER db SPRITE_ROCKET_GIRL + assert_table_length NUM_TRAINER_CLASSES - 1 ; exclude MYSTICALMAN diff --git a/data/types/names.asm b/data/types/names.asm index 62d8e13bf..94fe67e13 100644 --- a/data/types/names.asm +++ b/data/types/names.asm @@ -1,5 +1,6 @@ TypeNames: ; entries correspond to types (see constants/type_constants.asm) + table_width 2, TypeNames dw Normal dw Fighting dw Flying @@ -10,6 +11,7 @@ TypeNames: dw Bug dw Ghost dw Steel + assert_table_length UNUSED_TYPES dw Normal dw Normal dw Normal @@ -20,6 +22,7 @@ TypeNames: dw Normal dw Normal dw CurseType + assert_table_length UNUSED_TYPES_END dw Fire dw Water dw Grass @@ -28,6 +31,7 @@ TypeNames: dw Ice dw Dragon dw Dark + assert_table_length TYPES_END Normal: db "NORMAL@" Fighting: db "FIGHTING@" diff --git a/data/types/search_strings.asm b/data/types/search_strings.asm index d03d2786b..1345c27cd 100644 --- a/data/types/search_strings.asm +++ b/data/types/search_strings.asm @@ -1,5 +1,6 @@ PokedexTypeSearchStrings: ; entries correspond with PokedexTypeSearchConversionTable (see data/types/search_types.asm) + table_width POKEDEX_TYPE_STRING_LENGTH, PokedexTypeSearchStrings db " ---- @" db " NORMAL @" db " FIRE @" @@ -18,3 +19,4 @@ PokedexTypeSearchStrings: db " DRAGON @" db " DARK @" db " STEEL @" + assert_table_length NUM_TYPES + 1 diff --git a/data/types/search_types.asm b/data/types/search_types.asm index c3aba3c91..dd9ea5628 100644 --- a/data/types/search_types.asm +++ b/data/types/search_types.asm @@ -1,5 +1,6 @@ PokedexTypeSearchConversionTable: ; entries correspond with PokedexTypeSearchStrings (see data/types/search_strings.asm) + table_width 1, PokedexTypeSearchConversionTable db NORMAL db FIRE db WATER @@ -17,3 +18,4 @@ PokedexTypeSearchConversionTable: db DRAGON db DARK db STEEL + assert_table_length NUM_TYPES diff --git a/data/wild/fish.asm b/data/wild/fish.asm index 1976c8f95..b849b933f 100644 --- a/data/wild/fish.asm +++ b/data/wild/fish.asm @@ -7,6 +7,7 @@ ENDM FishGroups: ; entries correspond to FISHGROUP_* constants + table_width FISHGROUP_DATA_LENGTH, FishGroups fishgroup 50 percent + 1, .Shore_Old, .Shore_Good, .Shore_Super fishgroup 50 percent + 1, .Ocean_Old, .Ocean_Good, .Ocean_Super fishgroup 50 percent + 1, .Lake_Old, .Lake_Good, .Lake_Super @@ -20,6 +21,7 @@ FishGroups: fishgroup 50 percent + 1, .Qwilfish_Old, .Qwilfish_Good, .Qwilfish_Super fishgroup 50 percent + 1, .Remoraid_Old, .Remoraid_Good, .Remoraid_Super fishgroup 50 percent + 1, .Qwilfish_NoSwarm_Old, .Qwilfish_NoSwarm_Good, .Qwilfish_NoSwarm_Super + assert_table_length NUM_FISHGROUPS .Shore_Old: db 70 percent + 1, MAGIKARP, 10 diff --git a/data/wild/probabilities.asm b/data/wild/probabilities.asm index bf3144bbe..f3f44e0af 100644 --- a/data/wild/probabilities.asm +++ b/data/wild/probabilities.asm @@ -4,6 +4,7 @@ mon_prob: MACRO ENDM GrassMonProbTable: + table_width 2, GrassMonProbTable mon_prob 30, 0 ; 30% chance mon_prob 60, 1 ; 30% chance mon_prob 80, 2 ; 20% chance @@ -11,8 +12,11 @@ GrassMonProbTable: mon_prob 95, 4 ; 5% chance mon_prob 99, 5 ; 4% chance mon_prob 100, 6 ; 1% chance + assert_table_length NUM_GRASSMON WaterMonProbTable: + table_width 2, WaterMonProbTable mon_prob 60, 0 ; 60% chance mon_prob 90, 1 ; 30% chance mon_prob 100, 2 ; 10% chance + assert_table_length NUM_WATERMON diff --git a/data/wild/treemons.asm b/data/wild/treemons.asm index a6b1922f3..c24df03c1 100644 --- a/data/wild/treemons.asm +++ b/data/wild/treemons.asm @@ -1,5 +1,6 @@ TreeMons: ; entries correspond to TREEMON_SET_* constants + table_width 2, TreeMons dw TreeMonSet_City dw TreeMonSet_Canyon dw TreeMonSet_Town @@ -8,7 +9,8 @@ TreeMons: dw TreeMonSet_Lake dw TreeMonSet_Forest dw TreeMonSet_Rock - dw TreeMonSet_City + assert_table_length NUM_TREEMON_SETS + dw TreeMonSet_City ; unused ; Two tables each (common, rare). ; Structure: |