diff options
Diffstat (limited to 'data')
74 files changed, 202 insertions, 29 deletions
diff --git a/data/battle/effect_command_pointers.asm b/data/battle/effect_command_pointers.asm index d1f747a1..7239e815 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 a5641570..555ec30f 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 4bf4a331..73f24ec5 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 b132c0ed..103b97eb 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 16dc7e65..1f7d7b4a 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/collision/collision_permissions.asm b/data/collision/collision_permissions.asm index 57172ca5..188338ca 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_pointers.asm b/data/credits_strings_pointers.asm index 4d79bfad..0b178d1d 100644 --- a/data/credits_strings_pointers.asm +++ b/data/credits_strings_pointers.asm @@ -1,5 +1,6 @@ CreditsStringsPointers: ; entries correspond to constants/credits_constants.asm + table_width 2, CreditsStringsPointers dw Credits_SatoshiTajiri dw Credits_JunichiMasuda dw Credits_TetsuyaWatanabe @@ -76,3 +77,4 @@ CreditsStringsPointers: dw Credits_UsCoordination dw Credits_TextTranslation dw Credits_PaadTesting + assert_table_length NUM_CREDITS_STRINGS diff --git a/data/decorations/attributes.asm b/data/decorations/attributes.asm index 77cd1388..5e62c3a1 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 e3ec28f1..a5519efa 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 00fcfa10..76de3438 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 734bf11f..f3d9ff74 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 e29ce043..525283af 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 abc793cf..861653ba 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 bd135f36..2557b0a4 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 @@ -118,3 +119,5 @@ EngineFlags: engine_flag wDailyFlags2, DAILYFLAGS2_GOLDENROD_DEPT_STORE_TM27_RETURN_F engine_flag wDailyFlags2, DAILYFLAGS2_DAISYS_GROOMING_F engine_flag wDailyFlags2, DAILYFLAGS2_INDIGO_PLATEAU_RIVAL_FIGHT_F + + assert_table_length NUM_ENGINE_FLAGS diff --git a/data/events/happiness_changes.asm b/data/events/happiness_changes.asm index aa154e4c..8e3c4687 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 @@ -19,3 +20,4 @@ HappinessChanges: db -10, -10, -15 ; Used Energy Root (bitter) db -15, -15, -20 ; Used Revival Herb (bitter) db +3, +3, +1 ; Grooming + assert_table_length NUM_HAPPINESS_CHANGES diff --git a/data/events/npc_trades.asm b/data/events/npc_trades.asm index dae70fe0..42715df1 100644 --- a/data/events/npc_trades.asm +++ b/data/events/npc_trades.asm @@ -8,9 +8,11 @@ ENDM NPCTrades: ; entries correspond to NPCTRADE_* constants + table_width NPCTRADE_STRUCT_LENGTH, NPCTrades npctrade TRADE_DIALOGSET_COLLECTOR, DROWZEE, 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 npctrade TRADE_DIALOGSET_NEWBIE, DRAGONAIR, RHYDON, "DON@@@@@@@@", $77, $66, BITTER_BERRY, 00283, "EMY@@@@@@@@", TRADE_GENDER_FEMALE npctrade TRADE_DIALOGSET_HAPPY, GLOOM, RAPIDASH, "RUNNY@@@@@@", $96, $66, BURNT_BERRY, 15616, "CHRIS@@@@@@", TRADE_GENDER_EITHER npctrade TRADE_DIALOGSET_NEWBIE, CHANSEY, AERODACTYL, "AEROY@@@@@@", $96, $66, GOLD_BERRY, 26491, "KIM@@@@@@@@", TRADE_GENDER_EITHER + assert_table_length NUM_NPC_TRADES diff --git a/data/icon_pointers.asm b/data/icon_pointers.asm index bfe07abb..1ad361c1 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 1ed369f0..964843c1 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/descriptions.asm b/data/items/descriptions.asm index d259b364..7c195f78 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 TeruSama29Desc + assert_table_length NUM_ITEMS dw TeruSama30Desc dw TeruSama30Desc dw TeruSama30Desc @@ -256,6 +258,7 @@ ItemDescriptions: dw TeruSama36Desc dw TeruSama37Desc dw TeruSama37Desc + assert_table_length $100 MasterBallDesc: db "The best BALL. It" diff --git a/data/items/fruit_trees.asm b/data/items/fruit_trees.asm index 9c4e4793..ff39551e 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 37bf846b..d96281df 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 2ab7fcff..286171a5 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 @@ -52,6 +53,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 @@ -101,6 +103,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 c32071bb..a7876800 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 671f39a4..1c41e49b 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_TEACHER diff --git a/data/maps/roofs.asm b/data/maps/roofs.asm index ac1ea556..dee4991d 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 ac6779b1..5f95b58f 100644 --- a/data/maps/sgb_roof_pal_inds.asm +++ b/data/maps/sgb_roof_pal_inds.asm @@ -1,5 +1,6 @@ MapGroupRoofSGBPalInds: ; entries correspond to map groups + table_width 1, MapGroupRoofSGBPalInds db PREDEFPAL_ROUTES db PREDEFPAL_OLIVINE db PREDEFPAL_MAHOGANY @@ -27,3 +28,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 2d99fff7..32699548 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 f2b9f3ac..a69f4132 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 e215957a..56cff04c 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 160c7d7f..9773852f 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 94834de7..6f8fb2e9 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 49c17d9b..31f9d27d 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 e2c44f23..ed8cc6c2 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 @@ -30,6 +31,8 @@ PURGE MOVE_FOR_HM n = n + 1 endr + assert_table_length NUM_TM_HM + db 0 ; end ; unused diff --git a/data/party_menu_qualities.asm b/data/party_menu_qualities.asm index 94b10067..1e00e523 100644 --- a/data/party_menu_qualities.asm +++ b/data/party_menu_qualities.asm @@ -19,6 +19,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 @@ -28,6 +29,7 @@ PartyMenuQualityPointers: dw .Gender ; PARTYMENUACTION_GIVE_MON dw .Gender ; PARTYMENUACTION_GIVE_MON_FEMALE dw .Default ; PARTYMENUACTION_GIVE_ITEM + 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 4159014a..0a1fd5b1 100644 --- a/data/phone/non_trainer_names.asm +++ b/data/phone/non_trainer_names.asm @@ -1,10 +1,12 @@ 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 + 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 d2b2c7a7..e0b48f91 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 @@ -47,3 +48,4 @@ PhoneContacts: phone BLACKBELT_T, KENJI3, ROUTE_45, ANYTIME, KenjiPhoneCalleeScript, ANYTIME, KenjiPhoneCallerScript phone HIKER, PARRY1, ROUTE_45, ANYTIME, ParryPhoneCalleeScript, ANYTIME, ParryPhoneCallerScript phone PICNICKER, ERIN1, ROUTE_46, ANYTIME, ErinPhoneCalleeScript, ANYTIME, ErinPhoneCallerScript + assert_table_length NUM_PHONE_CONTACTS + 1 diff --git a/data/phone/special_calls.asm b/data/phone/special_calls.asm index 826a5d28..a516e595 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 f3a3ed32..4b4bdfa4 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 e6255e04..dc0d08df 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 6081757e..89074550 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 b93238cb..63e80c3c 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 853fbe73..77977cb3 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 67a2c625..fadb531c 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 7b27c6a7..3b415525 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 306ce31d..1c523a01 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 45efcafa..ca40398a 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 f378cbfb..506d060c 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 266b0c02..ad1d0ef5 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 36d2c662..421fa57c 100644 --- a/data/pokemon/palettes.asm +++ b/data/pokemon/palettes.asm @@ -6,6 +6,9 @@ PokemonPalettes: ; (Back sprites are used since they are the same in Gold and Silver.) ; 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 @@ -516,6 +519,8 @@ INCLUDE "gfx/pokemon/ho_oh/shiny.pal" INCBIN "gfx/pokemon/celebi/back.gbcpal", middle_colors INCLUDE "gfx/pokemon/celebi/shiny.pal" + assert_table_length NUM_POKEMON + 1 + ; 252 RGB 30, 26, 11 RGB 23, 16, 00 @@ -526,6 +531,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 @@ -539,3 +546,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 b5912852..1e797c01 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,3 +508,4 @@ PokemonPicPointers:: dba_pic HoOhBackpic dba_pic CelebiFrontpic dba_pic CelebiBackpic + assert_table_length NUM_POKEMON diff --git a/data/pokemon/unown_pic_pointers.asm b/data/pokemon/unown_pic_pointers.asm index 1ae0da6b..6ecfb4e6 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 6ddd0f46..329a6aae 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/channel_music.asm b/data/radio/channel_music.asm index c11360af..e8536821 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 @@ -10,3 +11,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 db244740..acef4bdd 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 9660043f..94723816 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 @@ -56,6 +57,7 @@ SpriteAnimFrameData: dw .Frameset_EggHatch4 dw .Frameset_GSIntroHoOhLugia dw .Frameset_HeadbuttTree + 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 00da9b51..d5b59f85 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 @@ -101,6 +102,7 @@ ELIF DEF(_SILVER) dbw $00, .OAMData_GSIntroLugia1 ; SPRITE_ANIM_OAMSET_GS_INTRO_HO_OH_5 ENDC dbw $04, .OAMData_Tree ; SPRITE_ANIM_OAMSET_HEADBUTT_TREE_2 + assert_table_length NUM_SPRITE_ANIM_OAMSETS .OAMData_1x1_Palette0: db 1 diff --git a/data/sprites/emotes.asm b/data/sprites/emotes.asm index 2371c462..32f4c259 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 ccf91082..405194f6 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 05b2e084..60a71813 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 3d53804d..9d3e62ac 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 b3035fe2..c0b5a3a1 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 @@ -101,3 +102,4 @@ OverworldSprites: overworld_sprite FruitTreeSpriteGFX, 4, STILL_SPRITE, PAL_OW_TREE overworld_sprite GoldTrophySpriteGFX, 4, STILL_SPRITE, PAL_OW_BROWN overworld_sprite SilverTrophySpriteGFX, 4, STILL_SPRITE, PAL_OW_SILVER + assert_table_length NUM_OVERWORLD_SPRITES diff --git a/data/tilesets.asm b/data/tilesets.asm index bc1f1b2f..b3b4ed9f 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 @@ -41,3 +42,4 @@ Tilesets:: tileset TilesetIcePath tileset TilesetDarkCave tileset TilesetForest + assert_table_length NUM_TILESETS + 1 diff --git a/data/trainers/attributes.asm b/data/trainers/attributes.asm index 86f5841c..8170f28b 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 @@ -396,3 +397,5 @@ TrainerClassAttributes: db 10 ; base reward dw AI_BASIC | AI_TYPES | AI_OPPORTUNIST | 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 09c63a8b..9abf35be 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 @@ -67,3 +68,4 @@ TrainerClassDVs: dn 9, 13, 13, 13 ; BLUE dn 9, 8, 8, 8 ; OFFICER dn 7, 14, 10, 8 ; GRUNTF + assert_table_length NUM_TRAINER_CLASSES diff --git a/data/trainers/encounter_music.asm b/data/trainers/encounter_music.asm index a64d160f..8f9c55e2 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 @@ -69,7 +70,8 @@ TrainerEncounterMusic:: db MUSIC_RIVAL_ENCOUNTER ; blue 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 + db MUSIC_HIKER_ENCOUNTER ; unused diff --git a/data/trainers/palettes.asm b/data/trainers/palettes.asm index 6641e0df..f44f65ff 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 INCBIN "gfx/trainers/falkner.gbcpal", middle_colors @@ -72,3 +74,5 @@ INCBIN "gfx/trainers/red.gbcpal", middle_colors INCBIN "gfx/trainers/blue.gbcpal", middle_colors INCBIN "gfx/trainers/officer.gbcpal", middle_colors INCBIN "gfx/trainers/grunt_f.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 ff476a41..4acfb70e 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 @@ -68,3 +69,4 @@ TrainerGroups: dw BlueGroup dw OfficerGroup dw GruntFGroup + assert_table_length NUM_TRAINER_CLASSES diff --git a/data/trainers/pic_pointers.asm b/data/trainers/pic_pointers.asm index 134fec36..371d3d35 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 @@ -68,3 +69,4 @@ TrainerPicPointers:: dba_pic BluePic dba_pic OfficerPic dba_pic GruntfPic + assert_table_length NUM_TRAINER_CLASSES diff --git a/data/types/names.asm b/data/types/names.asm index 62d8e13b..94fe67e1 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 d03d2786..1345c27c 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 c3aba3c9..dd9ea562 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 1976c8f9..b849b933 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 bf3144bb..f3f44e0a 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 f2687339..4b877084 100644 --- a/data/wild/treemons.asm +++ b/data/wild/treemons.asm @@ -1,9 +1,12 @@ TreeMons: ; entries correspond to TREEMON_SET_* constants + table_width 2, TreeMons dw TreeMonSet_None dw TreeMonSet_Forest dw TreeMonSet_Canyon dw TreeMonSet_Rock + assert_table_length NUM_TREEMON_SETS +; last two are unused/ignored dw TreeMonSet_Unused dw TreeMonSet_City |