Verify data table sizes with table_width and assert_table_length macros

This was discussed in #706

It also uncovered some off-by-one issues with defining some constants.

A few structs now use rsreset/_RS to define their offset constants, as discussed in #739
This commit is contained in:
Rangi
2021-03-03 22:22:41 -05:00
parent 9c17fb14c8
commit 40902ffe24
148 changed files with 608 additions and 237 deletions

View File

@@ -143,7 +143,7 @@ PlayCry::
ld [MBC3RomBank], a
ld hl, PokemonCries
rept 6 ; sizeof(mon_cry)
rept MON_CRY_LENGTH
add hl, de
endr

View File

@@ -49,6 +49,7 @@ GetBattleVarAddr::
BattleVarPairs:
; entries correspond to BATTLE_VARS_* constants
table_width 2, BattleVarPairs
dw .Substatus1
dw .Substatus2
dw .Substatus3
@@ -70,6 +71,7 @@ BattleVarPairs:
dw .LastCounterOpp
dw .LastMove
dw .LastMoveOpp
assert_table_length NUM_BATTLE_VARS
; player enemy
.Substatus1: db PLAYER_SUBSTATUS_1, ENEMY_SUBSTATUS_1
@@ -96,6 +98,7 @@ BattleVarPairs:
BattleVarLocations:
; entries correspond to PLAYER_* and ENEMY_* constants
table_width 2 + 2, BattleVarLocations
dw wPlayerSubStatus1, wEnemySubStatus1
dw wPlayerSubStatus2, wEnemySubStatus2
dw wPlayerSubStatus3, wEnemySubStatus3
@@ -109,3 +112,4 @@ BattleVarLocations:
dw wCurPlayerMove, wCurEnemyMove
dw wLastPlayerCounterMove, wLastEnemyCounterMove
dw wLastPlayerMove, wLastEnemyMove
assert_table_length NUM_BATTLE_VAR_LOCATION_PAIRS

View File

@@ -2285,12 +2285,12 @@ LoadMapTileset::
push bc
ld hl, Tilesets
ld bc, wTilesetEnd - wTileset
ld bc, TILESET_LENGTH
ld a, [wMapTileset]
call AddNTimes
ld de, wTilesetBank
ld bc, wTilesetEnd - wTileset
ld bc, TILESET_LENGTH
ld a, BANK(Tilesets)
call FarCopyBytes

View File

@@ -166,7 +166,7 @@ LoadCry::
rst Bankswitch
ld hl, PokemonCries
rept 6 ; sizeof(mon_cry)
rept MON_CRY_LENGTH
add hl, bc
endr