Verify uneven list sizes with list_start, li, and assert_list_length macros

This was discussed in #815
This commit is contained in:
Rangi 2021-03-22 17:15:21 -04:00
parent dbe2360ecd
commit 94057c7726
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

View File

@ -1,257 +1,262 @@
ItemNames::
db "MASTER BALL@"
db "ULTRA BALL@"
db "BRIGHTPOWDER@"
db "GREAT BALL@"
db "# BALL@"
db "TERU-SAMA@"
db "BICYCLE@"
db "MOON STONE@"
db "ANTIDOTE@"
db "BURN HEAL@"
db "ICE HEAL@"
db "AWAKENING@"
db "PARLYZ HEAL@"
db "FULL RESTORE@"
db "MAX POTION@"
db "HYPER POTION@"
db "SUPER POTION@"
db "POTION@"
db "ESCAPE ROPE@"
db "REPEL@"
db "MAX ELIXER@"
db "FIRE STONE@"
db "THUNDERSTONE@"
db "WATER STONE@"
db "TERU-SAMA@"
db "HP UP@"
db "PROTEIN@"
db "IRON@"
db "CARBOS@"
db "LUCKY PUNCH@"
db "CALCIUM@"
db "RARE CANDY@"
db "X ACCURACY@"
db "LEAF STONE@"
db "METAL POWDER@"
db "NUGGET@"
db "# DOLL@"
db "FULL HEAL@"
db "REVIVE@"
db "MAX REVIVE@"
db "GUARD SPEC.@"
db "SUPER REPEL@"
db "MAX REPEL@"
db "DIRE HIT@"
db "TERU-SAMA@"
db "FRESH WATER@"
db "SODA POP@"
db "LEMONADE@"
db "X ATTACK@"
db "TERU-SAMA@"
db "X DEFEND@"
db "X SPEED@"
db "X SPECIAL@"
db "COIN CASE@"
db "ITEMFINDER@"
db "TERU-SAMA@"
db "EXP.SHARE@"
db "OLD ROD@"
db "GOOD ROD@"
db "SILVER LEAF@"
db "SUPER ROD@"
db "PP UP@"
db "ETHER@"
db "MAX ETHER@"
db "ELIXER@"
db "RED SCALE@"
db "SECRETPOTION@"
db "S.S.TICKET@"
db "MYSTERY EGG@"
db "CLEAR BELL@"
db "SILVER WING@"
db "MOOMOO MILK@"
db "QUICK CLAW@"
db "PSNCUREBERRY@"
db "GOLD LEAF@"
db "SOFT SAND@"
db "SHARP BEAK@"
db "PRZCUREBERRY@"
db "BURNT BERRY@"
db "ICE BERRY@"
db "POISON BARB@"
db "KING'S ROCK@"
db "BITTER BERRY@"
db "MINT BERRY@"
db "RED APRICORN@"
db "TINYMUSHROOM@"
db "BIG MUSHROOM@"
db "SILVERPOWDER@"
db "BLU APRICORN@"
db "TERU-SAMA@"
db "AMULET COIN@"
db "YLW APRICORN@"
db "GRN APRICORN@"
db "CLEANSE TAG@"
db "MYSTIC WATER@"
db "TWISTEDSPOON@"
db "WHT APRICORN@"
db "BLACKBELT@"
db "BLK APRICORN@"
db "TERU-SAMA@"
db "PNK APRICORN@"
db "BLACKGLASSES@"
db "SLOWPOKETAIL@"
db "PINK BOW@"
db "STICK@"
db "SMOKE BALL@"
db "NEVERMELTICE@"
db "MAGNET@"
db "MIRACLEBERRY@"
db "PEARL@"
db "BIG PEARL@"
db "EVERSTONE@"
db "SPELL TAG@"
db "RAGECANDYBAR@"
db "GS BALL@"
db "BLUE CARD@"
db "MIRACLE SEED@"
db "THICK CLUB@"
db "FOCUS BAND@"
db "TERU-SAMA@"
db "ENERGYPOWDER@"
db "ENERGY ROOT@"
db "HEAL POWDER@"
db "REVIVAL HERB@"
db "HARD STONE@"
db "LUCKY EGG@"
db "CARD KEY@"
db "MACHINE PART@"
db "EGG TICKET@"
db "LOST ITEM@"
db "STARDUST@"
db "STAR PIECE@"
db "BASEMENT KEY@"
db "PASS@"
db "TERU-SAMA@"
db "TERU-SAMA@"
db "TERU-SAMA@"
db "CHARCOAL@"
db "BERRY JUICE@"
db "SCOPE LENS@"
db "TERU-SAMA@"
db "TERU-SAMA@"
db "METAL COAT@"
db "DRAGON FANG@"
db "TERU-SAMA@"
db "LEFTOVERS@"
db "TERU-SAMA@"
db "TERU-SAMA@"
db "TERU-SAMA@"
db "MYSTERYBERRY@"
db "DRAGON SCALE@"
db "BERSERK GENE@"
db "TERU-SAMA@"
db "TERU-SAMA@"
db "TERU-SAMA@"
db "SACRED ASH@"
db "HEAVY BALL@"
db "FLOWER MAIL@"
db "LEVEL BALL@"
db "LURE BALL@"
db "FAST BALL@"
db "TERU-SAMA@"
db "LIGHT BALL@"
db "FRIEND BALL@"
db "MOON BALL@"
db "LOVE BALL@"
db "NORMAL BOX@"
db "GORGEOUS BOX@"
db "SUN STONE@"
db "POLKADOT BOW@"
db "TERU-SAMA@"
db "UP-GRADE@"
db "BERRY@"
db "GOLD BERRY@"
db "SQUIRTBOTTLE@"
db "TERU-SAMA@"
db "PARK BALL@"
db "RAINBOW WING@"
db "TERU-SAMA@"
db "BRICK PIECE@"
db "SURF MAIL@"
db "LITEBLUEMAIL@"
db "PORTRAITMAIL@"
db "LOVELY MAIL@"
db "EON MAIL@"
db "MORPH MAIL@"
db "BLUESKY MAIL@"
db "MUSIC MAIL@"
db "MIRAGE MAIL@"
db "TERU-SAMA@"
db "TM01@"
db "TM02@"
db "TM03@"
db "TM04@"
db "TERU-SAMA@"
db "TM05@"
db "TM06@"
db "TM07@"
db "TM08@"
db "TM09@"
db "TM10@"
db "TM11@"
db "TM12@"
db "TM13@"
db "TM14@"
db "TM15@"
db "TM16@"
db "TM17@"
db "TM18@"
db "TM19@"
db "TM20@"
db "TM21@"
db "TM22@"
db "TM23@"
db "TM24@"
db "TM25@"
db "TM26@"
db "TM27@"
db "TM28@"
db "TERU-SAMA@"
db "TM29@"
db "TM30@"
db "TM31@"
db "TM32@"
db "TM33@"
db "TM34@"
db "TM35@"
db "TM36@"
db "TM37@"
db "TM38@"
db "TM39@"
db "TM40@"
db "TM41@"
db "TM42@"
db "TM43@"
db "TM44@"
db "TM45@"
db "TM46@"
db "TM47@"
db "TM48@"
db "TM49@"
db "TM50@"
db "HM01@"
db "HM02@"
db "HM03@"
db "HM04@"
db "HM05@"
db "HM06@"
db "HM07@"
db "TERU-SAMA@"
db "TERU-SAMA@"
db "TERU-SAMA@"
db "TERU-SAMA@"
db "TERU-SAMA@"
db "TERU-SAMA@"
db "?@"
list_start ItemNames
li "MASTER BALL"
li "ULTRA BALL"
li "BRIGHTPOWDER"
li "GREAT BALL"
li "# BALL"
li "TERU-SAMA"
li "BICYCLE"
li "MOON STONE"
li "ANTIDOTE"
li "BURN HEAL"
li "ICE HEAL"
li "AWAKENING"
li "PARLYZ HEAL"
li "FULL RESTORE"
li "MAX POTION"
li "HYPER POTION"
li "SUPER POTION"
li "POTION"
li "ESCAPE ROPE"
li "REPEL"
li "MAX ELIXER"
li "FIRE STONE"
li "THUNDERSTONE"
li "WATER STONE"
li "TERU-SAMA"
li "HP UP"
li "PROTEIN"
li "IRON"
li "CARBOS"
li "LUCKY PUNCH"
li "CALCIUM"
li "RARE CANDY"
li "X ACCURACY"
li "LEAF STONE"
li "METAL POWDER"
li "NUGGET"
li "# DOLL"
li "FULL HEAL"
li "REVIVE"
li "MAX REVIVE"
li "GUARD SPEC."
li "SUPER REPEL"
li "MAX REPEL"
li "DIRE HIT"
li "TERU-SAMA"
li "FRESH WATER"
li "SODA POP"
li "LEMONADE"
li "X ATTACK"
li "TERU-SAMA"
li "X DEFEND"
li "X SPEED"
li "X SPECIAL"
li "COIN CASE"
li "ITEMFINDER"
li "TERU-SAMA"
li "EXP.SHARE"
li "OLD ROD"
li "GOOD ROD"
li "SILVER LEAF"
li "SUPER ROD"
li "PP UP"
li "ETHER"
li "MAX ETHER"
li "ELIXER"
li "RED SCALE"
li "SECRETPOTION"
li "S.S.TICKET"
li "MYSTERY EGG"
li "CLEAR BELL"
li "SILVER WING"
li "MOOMOO MILK"
li "QUICK CLAW"
li "PSNCUREBERRY"
li "GOLD LEAF"
li "SOFT SAND"
li "SHARP BEAK"
li "PRZCUREBERRY"
li "BURNT BERRY"
li "ICE BERRY"
li "POISON BARB"
li "KING'S ROCK"
li "BITTER BERRY"
li "MINT BERRY"
li "RED APRICORN"
li "TINYMUSHROOM"
li "BIG MUSHROOM"
li "SILVERPOWDER"
li "BLU APRICORN"
li "TERU-SAMA"
li "AMULET COIN"
li "YLW APRICORN"
li "GRN APRICORN"
li "CLEANSE TAG"
li "MYSTIC WATER"
li "TWISTEDSPOON"
li "WHT APRICORN"
li "BLACKBELT"
li "BLK APRICORN"
li "TERU-SAMA"
li "PNK APRICORN"
li "BLACKGLASSES"
li "SLOWPOKETAIL"
li "PINK BOW"
li "STICK"
li "SMOKE BALL"
li "NEVERMELTICE"
li "MAGNET"
li "MIRACLEBERRY"
li "PEARL"
li "BIG PEARL"
li "EVERSTONE"
li "SPELL TAG"
li "RAGECANDYBAR"
li "GS BALL"
li "BLUE CARD"
li "MIRACLE SEED"
li "THICK CLUB"
li "FOCUS BAND"
li "TERU-SAMA"
li "ENERGYPOWDER"
li "ENERGY ROOT"
li "HEAL POWDER"
li "REVIVAL HERB"
li "HARD STONE"
li "LUCKY EGG"
li "CARD KEY"
li "MACHINE PART"
li "EGG TICKET"
li "LOST ITEM"
li "STARDUST"
li "STAR PIECE"
li "BASEMENT KEY"
li "PASS"
li "TERU-SAMA"
li "TERU-SAMA"
li "TERU-SAMA"
li "CHARCOAL"
li "BERRY JUICE"
li "SCOPE LENS"
li "TERU-SAMA"
li "TERU-SAMA"
li "METAL COAT"
li "DRAGON FANG"
li "TERU-SAMA"
li "LEFTOVERS"
li "TERU-SAMA"
li "TERU-SAMA"
li "TERU-SAMA"
li "MYSTERYBERRY"
li "DRAGON SCALE"
li "BERSERK GENE"
li "TERU-SAMA"
li "TERU-SAMA"
li "TERU-SAMA"
li "SACRED ASH"
li "HEAVY BALL"
li "FLOWER MAIL"
li "LEVEL BALL"
li "LURE BALL"
li "FAST BALL"
li "TERU-SAMA"
li "LIGHT BALL"
li "FRIEND BALL"
li "MOON BALL"
li "LOVE BALL"
li "NORMAL BOX"
li "GORGEOUS BOX"
li "SUN STONE"
li "POLKADOT BOW"
li "TERU-SAMA"
li "UP-GRADE"
li "BERRY"
li "GOLD BERRY"
li "SQUIRTBOTTLE"
li "TERU-SAMA"
li "PARK BALL"
li "RAINBOW WING"
li "TERU-SAMA"
li "BRICK PIECE"
li "SURF MAIL"
li "LITEBLUEMAIL"
li "PORTRAITMAIL"
li "LOVELY MAIL"
li "EON MAIL"
li "MORPH MAIL"
li "BLUESKY MAIL"
li "MUSIC MAIL"
li "MIRAGE MAIL"
li "TERU-SAMA"
assert_list_length NUM_ITEMS
li "TM01"
li "TM02"
li "TM03"
li "TM04"
li "TERU-SAMA"
li "TM05"
li "TM06"
li "TM07"
li "TM08"
li "TM09"
li "TM10"
li "TM11"
li "TM12"
li "TM13"
li "TM14"
li "TM15"
li "TM16"
li "TM17"
li "TM18"
li "TM19"
li "TM20"
li "TM21"
li "TM22"
li "TM23"
li "TM24"
li "TM25"
li "TM26"
li "TM27"
li "TM28"
li "TERU-SAMA"
li "TM29"
li "TM30"
li "TM31"
li "TM32"
li "TM33"
li "TM34"
li "TM35"
li "TM36"
li "TM37"
li "TM38"
li "TM39"
li "TM40"
li "TM41"
li "TM42"
li "TM43"
li "TM44"
li "TM45"
li "TM46"
li "TM47"
li "TM48"
li "TM49"
li "TM50"
assert_list_length NUM_ITEMS + NUM_TMS + 2 ; count ITEM_C3 and ITEM_DC
li "HM01"
li "HM02"
li "HM03"
li "HM04"
li "HM05"
li "HM06"
li "HM07"
assert_list_length NUM_ITEMS + NUM_TMS + 2 + NUM_HMS ; count ITEM_C3 and ITEM_DC
li "TERU-SAMA"
li "TERU-SAMA"
li "TERU-SAMA"
li "TERU-SAMA"
li "TERU-SAMA"
li "TERU-SAMA"
li "?"
assert_list_length $100

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)

View File

@ -1,252 +1,254 @@
MoveNames::
db "POUND@"
db "KARATE CHOP@"
db "DOUBLESLAP@"
db "COMET PUNCH@"
db "MEGA PUNCH@"
db "PAY DAY@"
db "FIRE PUNCH@"
db "ICE PUNCH@"
db "THUNDERPUNCH@"
db "SCRATCH@"
db "VICEGRIP@"
db "GUILLOTINE@"
db "RAZOR WIND@"
db "SWORDS DANCE@"
db "CUT@"
db "GUST@"
db "WING ATTACK@"
db "WHIRLWIND@"
db "FLY@"
db "BIND@"
db "SLAM@"
db "VINE WHIP@"
db "STOMP@"
db "DOUBLE KICK@"
db "MEGA KICK@"
db "JUMP KICK@"
db "ROLLING KICK@"
db "SAND-ATTACK@"
db "HEADBUTT@"
db "HORN ATTACK@"
db "FURY ATTACK@"
db "HORN DRILL@"
db "TACKLE@"
db "BODY SLAM@"
db "WRAP@"
db "TAKE DOWN@"
db "THRASH@"
db "DOUBLE-EDGE@"
db "TAIL WHIP@"
db "POISON STING@"
db "TWINEEDLE@"
db "PIN MISSILE@"
db "LEER@"
db "BITE@"
db "GROWL@"
db "ROAR@"
db "SING@"
db "SUPERSONIC@"
db "SONICBOOM@"
db "DISABLE@"
db "ACID@"
db "EMBER@"
db "FLAMETHROWER@"
db "MIST@"
db "WATER GUN@"
db "HYDRO PUMP@"
db "SURF@"
db "ICE BEAM@"
db "BLIZZARD@"
db "PSYBEAM@"
db "BUBBLEBEAM@"
db "AURORA BEAM@"
db "HYPER BEAM@"
db "PECK@"
db "DRILL PECK@"
db "SUBMISSION@"
db "LOW KICK@"
db "COUNTER@"
db "SEISMIC TOSS@"
db "STRENGTH@"
db "ABSORB@"
db "MEGA DRAIN@"
db "LEECH SEED@"
db "GROWTH@"
db "RAZOR LEAF@"
db "SOLARBEAM@"
db "POISONPOWDER@"
db "STUN SPORE@"
db "SLEEP POWDER@"
db "PETAL DANCE@"
db "STRING SHOT@"
db "DRAGON RAGE@"
db "FIRE SPIN@"
db "THUNDERSHOCK@"
db "THUNDERBOLT@"
db "THUNDER WAVE@"
db "THUNDER@"
db "ROCK THROW@"
db "EARTHQUAKE@"
db "FISSURE@"
db "DIG@"
db "TOXIC@"
db "CONFUSION@"
db "PSYCHIC@"
db "HYPNOSIS@"
db "MEDITATE@"
db "AGILITY@"
db "QUICK ATTACK@"
db "RAGE@"
db "TELEPORT@"
db "NIGHT SHADE@"
db "MIMIC@"
db "SCREECH@"
db "DOUBLE TEAM@"
db "RECOVER@"
db "HARDEN@"
db "MINIMIZE@"
db "SMOKESCREEN@"
db "CONFUSE RAY@"
db "WITHDRAW@"
db "DEFENSE CURL@"
db "BARRIER@"
db "LIGHT SCREEN@"
db "HAZE@"
db "REFLECT@"
db "FOCUS ENERGY@"
db "BIDE@"
db "METRONOME@"
db "MIRROR MOVE@"
db "SELFDESTRUCT@"
db "EGG BOMB@"
db "LICK@"
db "SMOG@"
db "SLUDGE@"
db "BONE CLUB@"
db "FIRE BLAST@"
db "WATERFALL@"
db "CLAMP@"
db "SWIFT@"
db "SKULL BASH@"
db "SPIKE CANNON@"
db "CONSTRICT@"
db "AMNESIA@"
db "KINESIS@"
db "SOFTBOILED@"
db "HI JUMP KICK@"
db "GLARE@"
db "DREAM EATER@"
db "POISON GAS@"
db "BARRAGE@"
db "LEECH LIFE@"
db "LOVELY KISS@"
db "SKY ATTACK@"
db "TRANSFORM@"
db "BUBBLE@"
db "DIZZY PUNCH@"
db "SPORE@"
db "FLASH@"
db "PSYWAVE@"
db "SPLASH@"
db "ACID ARMOR@"
db "CRABHAMMER@"
db "EXPLOSION@"
db "FURY SWIPES@"
db "BONEMERANG@"
db "REST@"
db "ROCK SLIDE@"
db "HYPER FANG@"
db "SHARPEN@"
db "CONVERSION@"
db "TRI ATTACK@"
db "SUPER FANG@"
db "SLASH@"
db "SUBSTITUTE@"
db "STRUGGLE@"
db "SKETCH@"
db "TRIPLE KICK@"
db "THIEF@"
db "SPIDER WEB@"
db "MIND READER@"
db "NIGHTMARE@"
db "FLAME WHEEL@"
db "SNORE@"
db "CURSE@"
db "FLAIL@"
db "CONVERSION2@"
db "AEROBLAST@"
db "COTTON SPORE@"
db "REVERSAL@"
db "SPITE@"
db "POWDER SNOW@"
db "PROTECT@"
db "MACH PUNCH@"
db "SCARY FACE@"
db "FAINT ATTACK@"
db "SWEET KISS@"
db "BELLY DRUM@"
db "SLUDGE BOMB@"
db "MUD-SLAP@"
db "OCTAZOOKA@"
db "SPIKES@"
db "ZAP CANNON@"
db "FORESIGHT@"
db "DESTINY BOND@"
db "PERISH SONG@"
db "ICY WIND@"
db "DETECT@"
db "BONE RUSH@"
db "LOCK-ON@"
db "OUTRAGE@"
db "SANDSTORM@"
db "GIGA DRAIN@"
db "ENDURE@"
db "CHARM@"
db "ROLLOUT@"
db "FALSE SWIPE@"
db "SWAGGER@"
db "MILK DRINK@"
db "SPARK@"
db "FURY CUTTER@"
db "STEEL WING@"
db "MEAN LOOK@"
db "ATTRACT@"
db "SLEEP TALK@"
db "HEAL BELL@"
db "RETURN@"
db "PRESENT@"
db "FRUSTRATION@"
db "SAFEGUARD@"
db "PAIN SPLIT@"
db "SACRED FIRE@"
db "MAGNITUDE@"
db "DYNAMICPUNCH@"
db "MEGAHORN@"
db "DRAGONBREATH@"
db "BATON PASS@"
db "ENCORE@"
db "PURSUIT@"
db "RAPID SPIN@"
db "SWEET SCENT@"
db "IRON TAIL@"
db "METAL CLAW@"
db "VITAL THROW@"
db "MORNING SUN@"
db "SYNTHESIS@"
db "MOONLIGHT@"
db "HIDDEN POWER@"
db "CROSS CHOP@"
db "TWISTER@"
db "RAIN DANCE@"
db "SUNNY DAY@"
db "CRUNCH@"
db "MIRROR COAT@"
db "PSYCH UP@"
db "EXTREMESPEED@"
db "ANCIENTPOWER@"
db "SHADOW BALL@"
db "FUTURE SIGHT@"
db "ROCK SMASH@"
db "WHIRLPOOL@"
db "BEAT UP@"
list_start MoveNames
li "POUND"
li "KARATE CHOP"
li "DOUBLESLAP"
li "COMET PUNCH"
li "MEGA PUNCH"
li "PAY DAY"
li "FIRE PUNCH"
li "ICE PUNCH"
li "THUNDERPUNCH"
li "SCRATCH"
li "VICEGRIP"
li "GUILLOTINE"
li "RAZOR WIND"
li "SWORDS DANCE"
li "CUT"
li "GUST"
li "WING ATTACK"
li "WHIRLWIND"
li "FLY"
li "BIND"
li "SLAM"
li "VINE WHIP"
li "STOMP"
li "DOUBLE KICK"
li "MEGA KICK"
li "JUMP KICK"
li "ROLLING KICK"
li "SAND-ATTACK"
li "HEADBUTT"
li "HORN ATTACK"
li "FURY ATTACK"
li "HORN DRILL"
li "TACKLE"
li "BODY SLAM"
li "WRAP"
li "TAKE DOWN"
li "THRASH"
li "DOUBLE-EDGE"
li "TAIL WHIP"
li "POISON STING"
li "TWINEEDLE"
li "PIN MISSILE"
li "LEER"
li "BITE"
li "GROWL"
li "ROAR"
li "SING"
li "SUPERSONIC"
li "SONICBOOM"
li "DISABLE"
li "ACID"
li "EMBER"
li "FLAMETHROWER"
li "MIST"
li "WATER GUN"
li "HYDRO PUMP"
li "SURF"
li "ICE BEAM"
li "BLIZZARD"
li "PSYBEAM"
li "BUBBLEBEAM"
li "AURORA BEAM"
li "HYPER BEAM"
li "PECK"
li "DRILL PECK"
li "SUBMISSION"
li "LOW KICK"
li "COUNTER"
li "SEISMIC TOSS"
li "STRENGTH"
li "ABSORB"
li "MEGA DRAIN"
li "LEECH SEED"
li "GROWTH"
li "RAZOR LEAF"
li "SOLARBEAM"
li "POISONPOWDER"
li "STUN SPORE"
li "SLEEP POWDER"
li "PETAL DANCE"
li "STRING SHOT"
li "DRAGON RAGE"
li "FIRE SPIN"
li "THUNDERSHOCK"
li "THUNDERBOLT"
li "THUNDER WAVE"
li "THUNDER"
li "ROCK THROW"
li "EARTHQUAKE"
li "FISSURE"
li "DIG"
li "TOXIC"
li "CONFUSION"
li "PSYCHIC"
li "HYPNOSIS"
li "MEDITATE"
li "AGILITY"
li "QUICK ATTACK"
li "RAGE"
li "TELEPORT"
li "NIGHT SHADE"
li "MIMIC"
li "SCREECH"
li "DOUBLE TEAM"
li "RECOVER"
li "HARDEN"
li "MINIMIZE"
li "SMOKESCREEN"
li "CONFUSE RAY"
li "WITHDRAW"
li "DEFENSE CURL"
li "BARRIER"
li "LIGHT SCREEN"
li "HAZE"
li "REFLECT"
li "FOCUS ENERGY"
li "BIDE"
li "METRONOME"
li "MIRROR MOVE"
li "SELFDESTRUCT"
li "EGG BOMB"
li "LICK"
li "SMOG"
li "SLUDGE"
li "BONE CLUB"
li "FIRE BLAST"
li "WATERFALL"
li "CLAMP"
li "SWIFT"
li "SKULL BASH"
li "SPIKE CANNON"
li "CONSTRICT"
li "AMNESIA"
li "KINESIS"
li "SOFTBOILED"
li "HI JUMP KICK"
li "GLARE"
li "DREAM EATER"
li "POISON GAS"
li "BARRAGE"
li "LEECH LIFE"
li "LOVELY KISS"
li "SKY ATTACK"
li "TRANSFORM"
li "BUBBLE"
li "DIZZY PUNCH"
li "SPORE"
li "FLASH"
li "PSYWAVE"
li "SPLASH"
li "ACID ARMOR"
li "CRABHAMMER"
li "EXPLOSION"
li "FURY SWIPES"
li "BONEMERANG"
li "REST"
li "ROCK SLIDE"
li "HYPER FANG"
li "SHARPEN"
li "CONVERSION"
li "TRI ATTACK"
li "SUPER FANG"
li "SLASH"
li "SUBSTITUTE"
li "STRUGGLE"
li "SKETCH"
li "TRIPLE KICK"
li "THIEF"
li "SPIDER WEB"
li "MIND READER"
li "NIGHTMARE"
li "FLAME WHEEL"
li "SNORE"
li "CURSE"
li "FLAIL"
li "CONVERSION2"
li "AEROBLAST"
li "COTTON SPORE"
li "REVERSAL"
li "SPITE"
li "POWDER SNOW"
li "PROTECT"
li "MACH PUNCH"
li "SCARY FACE"
li "FAINT ATTACK"
li "SWEET KISS"
li "BELLY DRUM"
li "SLUDGE BOMB"
li "MUD-SLAP"
li "OCTAZOOKA"
li "SPIKES"
li "ZAP CANNON"
li "FORESIGHT"
li "DESTINY BOND"
li "PERISH SONG"
li "ICY WIND"
li "DETECT"
li "BONE RUSH"
li "LOCK-ON"
li "OUTRAGE"
li "SANDSTORM"
li "GIGA DRAIN"
li "ENDURE"
li "CHARM"
li "ROLLOUT"
li "FALSE SWIPE"
li "SWAGGER"
li "MILK DRINK"
li "SPARK"
li "FURY CUTTER"
li "STEEL WING"
li "MEAN LOOK"
li "ATTRACT"
li "SLEEP TALK"
li "HEAL BELL"
li "RETURN"
li "PRESENT"
li "FRUSTRATION"
li "SAFEGUARD"
li "PAIN SPLIT"
li "SACRED FIRE"
li "MAGNITUDE"
li "DYNAMICPUNCH"
li "MEGAHORN"
li "DRAGONBREATH"
li "BATON PASS"
li "ENCORE"
li "PURSUIT"
li "RAPID SPIN"
li "SWEET SCENT"
li "IRON TAIL"
li "METAL CLAW"
li "VITAL THROW"
li "MORNING SUN"
li "SYNTHESIS"
li "MOONLIGHT"
li "HIDDEN POWER"
li "CROSS CHOP"
li "TWISTER"
li "RAIN DANCE"
li "SUNNY DAY"
li "CRUNCH"
li "MIRROR COAT"
li "PSYCH UP"
li "EXTREMESPEED"
li "ANCIENTPOWER"
li "SHADOW BALL"
li "FUTURE SIGHT"
li "ROCK SMASH"
li "WHIRLPOOL"
li "BEAT UP"
assert_list_length NUM_ATTACKS

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)