Merge pull request #816 from Rangi42/lists

Verify uneven list sizes with list_start, li, and assert_list_length macros
This commit is contained in:
Rangi 2021-03-23 09:38:23 -04:00 committed by GitHub
commit e2838892d6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 663 additions and 618 deletions

View File

@ -18,7 +18,8 @@ DECOATTR_STRUCT_LENGTH EQU _RS
NUM_DECO_TYPES EQU const_value - 1
; DecorationNames indexes (see data/decorations/names.asm)
const_def 1
const_def
const CANCEL_DECO
const PUT_IT_AWAY
const MAGNAPLANT
const TROPICPLANT
@ -44,6 +45,7 @@ NUM_DECO_TYPES EQU const_value - 1
const BLUE_CARPET
const YELLOW_CARPET
const GREEN_CARPET
NUM_DECO_NAMES EQU const_value
; DoDecorationAction2.DecoActions indexes (see engine/overworld/decorations.asm)
const_def 1

View File

@ -1,10 +1,12 @@
StatNames:
; entries correspond to stat ids
db "ATTACK@"
db "DEFENSE@"
db "SPEED@"
db "SPCL.ATK@"
db "SPCL.DEF@"
db "ACCURACY@"
db "EVASION@"
db "ABILITY@" ; used for BattleCommand_Curse
list_start StatNames
li "ATTACK"
li "DEFENSE"
li "SPEED"
li "SPCL.ATK"
li "SPCL.DEF"
li "ACCURACY"
li "EVASION"
li "ABILITY" ; used for BattleCommand_Curse
assert_list_length NUM_LEVEL_STATS

View File

@ -1,28 +1,30 @@
DecorationNames:
; entries correspond to constants/deco_constants.asm
db "CANCEL@"
db "PUT IT AWAY@"
db "MAGNAPLANT@"
db "TROPICPLANT@"
db "JUMBOPLANT@"
db "TOWN MAP@"
db "NES@"
db "SUPER NES@"
db "NINTENDO 64@"
db "VIRTUAL BOY@"
db "GOLD TROPHY@"
db "SILVER TROPHY@"
db "SURF PIKACHU DOLL@"
db " BED@"
db " CARPET@"
db " POSTER@"
db " DOLL@"
db "BIG @"
db "FEATHERY@"
db "PIKACHU@"
db "PINK@"
db "POLKADOT@"
db "RED@"
db "BLUE@"
db "YELLOW@"
db "GREEN@"
list_start DecorationNames
li "CANCEL"
li "PUT IT AWAY"
li "MAGNAPLANT"
li "TROPICPLANT"
li "JUMBOPLANT"
li "TOWN MAP"
li "NES"
li "SUPER NES"
li "NINTENDO 64"
li "VIRTUAL BOY"
li "GOLD TROPHY"
li "SILVER TROPHY"
li "SURF PIKACHU DOLL"
li " BED"
li " CARPET"
li " POSTER"
li " DOLL"
li "BIG "
li "FEATHERY"
li "PIKACHU"
li "PINK"
li "POLKADOT"
li "RED"
li "BLUE"
li "YELLOW"
li "GREEN"
assert_list_length NUM_DECO_NAMES

File diff suppressed because it is too large Load Diff

View File

@ -7,16 +7,19 @@
const MONMENUVALUE_MOVE ; 5
const MONMENUVALUE_MAIL ; 6
const MONMENUVALUE_ERROR ; 7
NUM_MONMENUVALUES EQU const_value - 1
MonMenuOptionStrings:
; entries correspond to MONMENUVALUE_* constants
db "STATS@"
db "SWITCH@"
db "ITEM@"
db "CANCEL@"
db "MOVE@"
db "MAIL@"
db "ERROR!@"
list_start MonMenuOptionStrings
li "STATS"
li "SWITCH"
li "ITEM"
li "CANCEL"
li "MOVE"
li "MAIL"
li "ERROR!"
assert_list_length NUM_MONMENUVALUES
MonMenuOptions:
; category, item, value; actions are in PokemonActionSubmenu (see engine/pokemon/mon_menu.asm)

File diff suppressed because it is too large Load Diff

View File

@ -14,7 +14,7 @@ MalePlayerNameArray:
db "MAT@"
db "ALLAN@"
db "JON@"
db 2 ; displacement
db 2 ; title indent
db " NAME @" ; title
KrisNameMenuHeader:

View File

@ -1,69 +1,71 @@
TrainerClassNames::
; entries correspond to trainer classes (see constants/trainer_constants.asm)
db "LEADER@"
db "LEADER@"
db "LEADER@"
db "LEADER@"
db "LEADER@"
db "LEADER@"
db "LEADER@"
db "LEADER@"
db "RIVAL@"
db "#MON PROF.@"
db "ELITE FOUR@"
db "<PKMN> TRAINER@"
db "ELITE FOUR@"
db "ELITE FOUR@"
db "ELITE FOUR@"
db "CHAMPION@"
db "LEADER@"
db "LEADER@"
db "LEADER@"
db "SCIENTIST@"
db "LEADER@"
db "YOUNGSTER@"
db "SCHOOLBOY@"
db "BIRD KEEPER@"
db "LASS@"
db "LEADER@"
db "COOLTRAINER@"
db "COOLTRAINER@"
db "BEAUTY@"
db "#MANIAC@"
db "ROCKET@"
db "GENTLEMAN@"
db "SKIER@"
db "TEACHER@"
db "LEADER@"
db "BUG CATCHER@"
db "FISHER@"
db "SWIMMER♂@"
db "SWIMMER♀@"
db "SAILOR@"
db "SUPER NERD@"
db "RIVAL@"
db "GUITARIST@"
db "HIKER@"
db "BIKER@"
db "LEADER@"
db "BURGLAR@"
db "FIREBREATHER@"
db "JUGGLER@"
db "BLACKBELT@"
db "ROCKET@"
db "PSYCHIC@"
db "PICNICKER@"
db "CAMPER@"
db "ROCKET@"
db "SAGE@"
db "MEDIUM@"
db "BOARDER@"
db "#FAN@"
db "KIMONO GIRL@"
db "TWINS@"
db "#FAN@"
db "<PKMN> TRAINER@"
db "LEADER@"
db "OFFICER@"
db "ROCKET@"
db "MYSTICALMAN@"
list_start TrainerClassNames
li "LEADER"
li "LEADER"
li "LEADER"
li "LEADER"
li "LEADER"
li "LEADER"
li "LEADER"
li "LEADER"
li "RIVAL"
li "#MON PROF."
li "ELITE FOUR"
li "<PKMN> TRAINER"
li "ELITE FOUR"
li "ELITE FOUR"
li "ELITE FOUR"
li "CHAMPION"
li "LEADER"
li "LEADER"
li "LEADER"
li "SCIENTIST"
li "LEADER"
li "YOUNGSTER"
li "SCHOOLBOY"
li "BIRD KEEPER"
li "LASS"
li "LEADER"
li "COOLTRAINER"
li "COOLTRAINER"
li "BEAUTY"
li "#MANIAC"
li "ROCKET"
li "GENTLEMAN"
li "SKIER"
li "TEACHER"
li "LEADER"
li "BUG CATCHER"
li "FISHER"
li "SWIMMER♂"
li "SWIMMER♀"
li "SAILOR"
li "SUPER NERD"
li "RIVAL"
li "GUITARIST"
li "HIKER"
li "BIKER"
li "LEADER"
li "BURGLAR"
li "FIREBREATHER"
li "JUGGLER"
li "BLACKBELT"
li "ROCKET"
li "PSYCHIC"
li "PICNICKER"
li "CAMPER"
li "ROCKET"
li "SAGE"
li "MEDIUM"
li "BOARDER"
li "#FAN"
li "KIMONO GIRL"
li "TWINS"
li "#FAN"
li "<PKMN> TRAINER"
li "LEADER"
li "OFFICER"
li "ROCKET"
li "MYSTICALMAN"
assert_list_length NUM_TRAINER_CLASSES

View File

@ -9,10 +9,11 @@ rept _NARG - 1
shift
endr
db 0
list_index = list_index + 1
ENDM
RoamMaps:
; there are NUM_ROAMMON_MAPS entries
list_start RoamMaps
; start map, ...other maps
roam_map ROUTE_29, ROUTE_30, ROUTE_46
roam_map ROUTE_30, ROUTE_29, ROUTE_31
@ -30,4 +31,5 @@ RoamMaps:
roam_map ROUTE_44, ROUTE_42, ROUTE_43, ROUTE_45
roam_map ROUTE_45, ROUTE_44, ROUTE_46
roam_map ROUTE_46, ROUTE_45, ROUTE_29
assert_list_length NUM_ROAMMON_MAPS
db -1 ; end

View File

@ -19,6 +19,31 @@ x = \1
"{CURRENT_TABLE_START}: expected {d:x} entries, each {d:CURRENT_TABLE_WIDTH} bytes"
ENDM
list_start: MACRO
list_index = 0
if DEF(CURRENT_LIST_START)
PURGE CURRENT_LIST_START
endc
if _NARG == 1
CURRENT_LIST_START EQUS "\1"
else
CURRENT_LIST_START EQUS "._list_start\@"
CURRENT_LIST_START:
endc
ENDM
li: MACRO
assert !STRIN(\1, "@"), STRCAT("String terminator \"@\" in list entry: ", \1)
db \1, "@"
list_index = list_index + 1
ENDM
assert_list_length: MACRO
x = \1
assert x == list_index, \
"{CURRENT_LIST_START}: expected {d:x} entries, got {d:list_index}"
ENDM
def_grass_wildmons: MACRO
;\1: map id
if DEF(CURRENT_GRASS_WILDMONS_MAP)