Use macros for packed arrays of nybbles

This commit is contained in:
Rangi 2021-05-23 18:33:14 -04:00
parent 82f31b05c1
commit 653b62139d
3 changed files with 240 additions and 105 deletions

View file

@ -1,29 +1,54 @@
TechnicalMachinePrices: TechnicalMachinePrices:
; In thousands (nybbles). ; In thousands (nybbles).
table_width 1, TechnicalMachinePrices nybble_array TechnicalMachinePrices
dn 3, 2 ; TM01, TM02 nybble 3 ; TM01
dn 2, 1 ; TM03, TM04 nybble 2 ; TM02
dn 3, 4 ; TM05, TM06 nybble 2 ; TM03
dn 2, 4 ; TM07, TM08 nybble 1 ; TM04
dn 3, 4 ; TM09, TM10 nybble 3 ; TM05
dn 2, 1 ; TM11, TM12 nybble 4 ; TM06
dn 4, 5 ; TM13, TM14 nybble 2 ; TM07
dn 5, 5 ; TM15, TM16 nybble 4 ; TM08
dn 3, 2 ; TM17, TM18 nybble 3 ; TM09
dn 3, 2 ; TM19, TM20 nybble 4 ; TM10
dn 5, 5 ; TM21, TM22 nybble 2 ; TM11
dn 5, 2 ; TM23, TM24 nybble 1 ; TM12
dn 5, 4 ; TM25, TM26 nybble 4 ; TM13
dn 5, 2 ; TM27, TM28 nybble 5 ; TM14
dn 4, 1 ; TM29, TM30 nybble 5 ; TM15
dn 2, 1 ; TM31, TM32 nybble 5 ; TM16
dn 1, 2 ; TM33, TM34 nybble 3 ; TM17
dn 4, 2 ; TM35, TM36 nybble 2 ; TM18
dn 2, 5 ; TM37, TM38 nybble 3 ; TM19
dn 2, 4 ; TM39, TM40 nybble 2 ; TM20
dn 2, 2 ; TM41, TM42 nybble 5 ; TM21
dn 5, 2 ; TM43, TM44 nybble 5 ; TM22
dn 2, 4 ; TM45, TM46 nybble 5 ; TM23
dn 3, 4 ; TM47, TM48 nybble 2 ; TM24
dn 4, 2 ; TM49, TM50 nybble 5 ; TM25
assert_table_length (NUM_TMS + 1) / 2 nybble 4 ; TM26
nybble 5 ; TM27
nybble 2 ; TM28
nybble 4 ; TM29
nybble 1 ; TM30
nybble 2 ; TM31
nybble 1 ; TM32
nybble 1 ; TM33
nybble 2 ; TM34
nybble 4 ; TM35
nybble 2 ; TM36
nybble 2 ; TM37
nybble 5 ; TM38
nybble 2 ; TM39
nybble 4 ; TM40
nybble 2 ; TM41
nybble 2 ; TM42
nybble 5 ; TM43
nybble 2 ; TM44
nybble 2 ; TM45
nybble 4 ; TM46
nybble 3 ; TM47
nybble 4 ; TM48
nybble 4 ; TM49
nybble 2 ; TM50
end_nybble_array NUM_TMS

View file

@ -1,79 +1,154 @@
MonPartyData: MonPartyData:
table_width 1, MonPartyData nybble_array MonPartyData
dn ICON_GRASS, ICON_GRASS ; Bulbasaur / Ivysaur nybble ICON_GRASS ; Bulbasaur
dn ICON_GRASS, ICON_MON ; Venusaur / Charmander nybble ICON_GRASS ; Ivysaur
dn ICON_MON, ICON_MON ; Charmeleon / Charizard nybble ICON_GRASS ; Venusaur
dn ICON_WATER, ICON_WATER ; Squirtle / Wartortle nybble ICON_MON ; Charmander
dn ICON_WATER, ICON_BUG ; Blastoise / Caterpie nybble ICON_MON ; Charmeleon
dn ICON_BUG, ICON_BUG ; Metapod / Butterfree nybble ICON_MON ; Charizard
dn ICON_BUG, ICON_BUG ; Weedle / Kakuna nybble ICON_WATER ; Squirtle
dn ICON_BUG, ICON_BIRD ; Beedrill / Pidgey nybble ICON_WATER ; Wartortle
dn ICON_BIRD, ICON_BIRD ; Pidgeotto / Pidgeot nybble ICON_WATER ; Blastoise
dn ICON_QUADRUPED, ICON_QUADRUPED ; Rattata / Raticate nybble ICON_BUG ; Caterpie
dn ICON_BIRD, ICON_BIRD ; Spearow / Fearow nybble ICON_BUG ; Metapod
dn ICON_SNAKE, ICON_SNAKE ; Ekans / Arbok nybble ICON_BUG ; Butterfree
dn ICON_FAIRY, ICON_FAIRY ; Pikachu / Raichu nybble ICON_BUG ; Weedle
dn ICON_MON, ICON_MON ; Sandshrew / Sandslash nybble ICON_BUG ; Kakuna
dn ICON_MON, ICON_MON ; NidoranF / Nidorina nybble ICON_BUG ; Beedrill
dn ICON_MON, ICON_MON ; Nidoqueen / NidoranM nybble ICON_BIRD ; Pidgey
dn ICON_MON, ICON_MON ; Nidorino / Nidoking nybble ICON_BIRD ; Pidgeotto
dn ICON_FAIRY, ICON_FAIRY ; Clefairy / Clefable nybble ICON_BIRD ; Pidgeot
dn ICON_QUADRUPED, ICON_QUADRUPED ; Vulpix / Ninetales nybble ICON_QUADRUPED ; Rattata
dn ICON_FAIRY, ICON_FAIRY ; Jigglypuff / Wigglytuff nybble ICON_QUADRUPED ; Raticate
dn ICON_MON, ICON_MON ; Zubat / Golbat nybble ICON_BIRD ; Spearow
dn ICON_GRASS, ICON_GRASS ; Oddish / Gloom nybble ICON_BIRD ; Fearow
dn ICON_GRASS, ICON_BUG ; Vileplume / Paras nybble ICON_SNAKE ; Ekans
dn ICON_BUG, ICON_BUG ; Parasect / Venonat nybble ICON_SNAKE ; Arbok
dn ICON_BUG, ICON_MON ; Venomoth / Diglett nybble ICON_FAIRY ; Pikachu
dn ICON_MON, ICON_MON ; Dugtrio / Meowth nybble ICON_FAIRY ; Raichu
dn ICON_MON, ICON_MON ; Persian / Psyduck nybble ICON_MON ; Sandshrew
dn ICON_MON, ICON_MON ; Golduck / Mankey nybble ICON_MON ; Sandslash
dn ICON_MON, ICON_QUADRUPED ; Primeape / Growlithe nybble ICON_MON ; NidoranF
dn ICON_QUADRUPED, ICON_MON ; Arcanine / Poliwag nybble ICON_MON ; Nidorina
dn ICON_MON, ICON_MON ; Poliwhirl / Poliwrath nybble ICON_MON ; Nidoqueen
dn ICON_MON, ICON_MON ; Abra / Kadabra nybble ICON_MON ; NidoranM
dn ICON_MON, ICON_MON ; Alakazam / Machop nybble ICON_MON ; Nidorino
dn ICON_MON, ICON_MON ; Machoke / Machamp nybble ICON_MON ; Nidoking
dn ICON_GRASS, ICON_GRASS ; Bellsprout / Weepinbell nybble ICON_FAIRY ; Clefairy
dn ICON_GRASS, ICON_WATER ; Victreebel / Tentacool nybble ICON_FAIRY ; Clefable
dn ICON_WATER, ICON_MON ; Tentacruel / Geodude nybble ICON_QUADRUPED ; Vulpix
dn ICON_MON, ICON_MON ; Graveler / Golem nybble ICON_QUADRUPED ; Ninetales
dn ICON_QUADRUPED, ICON_QUADRUPED ; Ponyta / Rapidash nybble ICON_FAIRY ; Jigglypuff
dn ICON_QUADRUPED, ICON_MON ; Slowpoke / Slowbro nybble ICON_FAIRY ; Wigglytuff
dn ICON_BALL, ICON_BALL ; Magnemite / Magneton nybble ICON_MON ; Zubat
dn ICON_BIRD, ICON_BIRD ; Farfetch'd / Doduo nybble ICON_MON ; Golbat
dn ICON_BIRD, ICON_WATER ; Dodrio / Seel nybble ICON_GRASS ; Oddish
dn ICON_WATER, ICON_MON ; Dewgong / Grimer nybble ICON_GRASS ; Gloom
dn ICON_MON, ICON_HELIX ; Muk / Shellder nybble ICON_GRASS ; Vileplume
dn ICON_HELIX, ICON_MON ; Cloyster / Gastly nybble ICON_BUG ; Paras
dn ICON_MON, ICON_MON ; Haunter / Gengar nybble ICON_BUG ; Parasect
dn ICON_SNAKE, ICON_MON ; Onix / Drowzee nybble ICON_BUG ; Venonat
dn ICON_MON, ICON_WATER ; Hypno / Krabby nybble ICON_BUG ; Venomoth
dn ICON_WATER, ICON_BALL ; Kingler / Voltorb nybble ICON_MON ; Diglett
dn ICON_BALL, ICON_GRASS ; Electrode / Exeggcute nybble ICON_MON ; Dugtrio
dn ICON_GRASS, ICON_MON ; Exeggutor / Cubone nybble ICON_MON ; Meowth
dn ICON_MON, ICON_MON ; Marowak / Hitmonlee nybble ICON_MON ; Persian
dn ICON_MON, ICON_MON ; Hitmonchan / Lickitung nybble ICON_MON ; Psyduck
dn ICON_MON, ICON_MON ; Koffing / Weezing nybble ICON_MON ; Golduck
dn ICON_QUADRUPED, ICON_MON ; Rhyhorn / Rhydon nybble ICON_MON ; Mankey
dn ICON_FAIRY, ICON_GRASS ; Chansey / Tangela nybble ICON_MON ; Primeape
dn ICON_MON, ICON_WATER ; Kangaskhan / Horsea nybble ICON_QUADRUPED ; Growlithe
dn ICON_WATER, ICON_WATER ; Seadra / Goldeen nybble ICON_QUADRUPED ; Arcanine
dn ICON_WATER, ICON_HELIX ; Seaking / Staryu nybble ICON_MON ; Poliwag
dn ICON_HELIX, ICON_MON ; Starmie / Mr.Mime nybble ICON_MON ; Poliwhirl
dn ICON_BUG, ICON_MON ; Scyther / Jynx nybble ICON_MON ; Poliwrath
dn ICON_MON, ICON_MON ; Electabuzz / Magmar nybble ICON_MON ; Abra
dn ICON_BUG, ICON_QUADRUPED ; Pinsir / Tauros nybble ICON_MON ; Kadabra
dn ICON_WATER, ICON_SNAKE ; Magikarp / Gyarados nybble ICON_MON ; Alakazam
dn ICON_WATER, ICON_MON ; Lapras / Ditto nybble ICON_MON ; Machop
dn ICON_QUADRUPED, ICON_QUADRUPED ; Eevee / Vaporeon nybble ICON_MON ; Machoke
dn ICON_QUADRUPED, ICON_QUADRUPED ; Jolteon / Flareon nybble ICON_MON ; Machamp
dn ICON_MON, ICON_HELIX ; Porygon / Omanyte nybble ICON_GRASS ; Bellsprout
dn ICON_HELIX, ICON_HELIX ; Omastar / Kabuto nybble ICON_GRASS ; Weepinbell
dn ICON_HELIX, ICON_BIRD ; Kabutops / Aerodactyl nybble ICON_GRASS ; Victreebel
dn ICON_MON, ICON_BIRD ; Snorlax / Articuno nybble ICON_WATER ; Tentacool
dn ICON_BIRD, ICON_BIRD ; Zapdos / Moltres nybble ICON_WATER ; Tentacruel
dn ICON_SNAKE, ICON_SNAKE ; Dratini / Dragonair nybble ICON_MON ; Geodude
dn ICON_SNAKE, ICON_MON ; Dragonite / Mewtwo nybble ICON_MON ; Graveler
dn ICON_MON, 0 ; Mew / padding nybble ICON_MON ; Golem
assert_table_length (NUM_POKEMON + 1) / 2 nybble ICON_QUADRUPED ; Ponyta
nybble ICON_QUADRUPED ; Rapidash
nybble ICON_QUADRUPED ; Slowpoke
nybble ICON_MON ; Slowbro
nybble ICON_BALL ; Magnemite
nybble ICON_BALL ; Magneton
nybble ICON_BIRD ; Farfetch'd
nybble ICON_BIRD ; Doduo
nybble ICON_BIRD ; Dodrio
nybble ICON_WATER ; Seel
nybble ICON_WATER ; Dewgong
nybble ICON_MON ; Grimer
nybble ICON_MON ; Muk
nybble ICON_HELIX ; Shellder
nybble ICON_HELIX ; Cloyster
nybble ICON_MON ; Gastly
nybble ICON_MON ; Haunter
nybble ICON_MON ; Gengar
nybble ICON_SNAKE ; Onix
nybble ICON_MON ; Drowzee
nybble ICON_MON ; Hypno
nybble ICON_WATER ; Krabby
nybble ICON_WATER ; Kingler
nybble ICON_BALL ; Voltorb
nybble ICON_BALL ; Electrode
nybble ICON_GRASS ; Exeggcute
nybble ICON_GRASS ; Exeggutor
nybble ICON_MON ; Cubone
nybble ICON_MON ; Marowak
nybble ICON_MON ; Hitmonlee
nybble ICON_MON ; Hitmonchan
nybble ICON_MON ; Lickitung
nybble ICON_MON ; Koffing
nybble ICON_MON ; Weezing
nybble ICON_QUADRUPED ; Rhyhorn
nybble ICON_MON ; Rhydon
nybble ICON_FAIRY ; Chansey
nybble ICON_GRASS ; Tangela
nybble ICON_MON ; Kangaskhan
nybble ICON_WATER ; Horsea
nybble ICON_WATER ; Seadra
nybble ICON_WATER ; Goldeen
nybble ICON_WATER ; Seaking
nybble ICON_HELIX ; Staryu
nybble ICON_HELIX ; Starmie
nybble ICON_MON ; Mr.Mime
nybble ICON_BUG ; Scyther
nybble ICON_MON ; Jynx
nybble ICON_MON ; Electabuzz
nybble ICON_MON ; Magmar
nybble ICON_BUG ; Pinsir
nybble ICON_QUADRUPED ; Tauros
nybble ICON_WATER ; Magikarp
nybble ICON_SNAKE ; Gyarados
nybble ICON_WATER ; Lapras
nybble ICON_MON ; Ditto
nybble ICON_QUADRUPED ; Eevee
nybble ICON_QUADRUPED ; Vaporeon
nybble ICON_QUADRUPED ; Jolteon
nybble ICON_QUADRUPED ; Flareon
nybble ICON_MON ; Porygon
nybble ICON_HELIX ; Omanyte
nybble ICON_HELIX ; Omastar
nybble ICON_HELIX ; Kabuto
nybble ICON_HELIX ; Kabutops
nybble ICON_BIRD ; Aerodactyl
nybble ICON_MON ; Snorlax
nybble ICON_BIRD ; Articuno
nybble ICON_BIRD ; Zapdos
nybble ICON_BIRD ; Moltres
nybble ICON_SNAKE ; Dratini
nybble ICON_SNAKE ; Dragonair
nybble ICON_SNAKE ; Dragonite
nybble ICON_MON ; Mewtwo
nybble ICON_MON ; Mew
end_nybble_array NUM_POKEMON

View file

@ -38,6 +38,41 @@ x = \1
"{CURRENT_LIST_START}: expected {d:x} entries, got {d:list_index}" "{CURRENT_LIST_START}: expected {d:x} entries, got {d:list_index}"
ENDM ENDM
nybble_array: MACRO
CURRENT_NYBBLE_ARRAY_VALUE = 0
CURRENT_NYBBLE_ARRAY_LENGTH = 0
IF _NARG == 1
REDEF CURRENT_NYBBLE_ARRAY_START EQUS "\1"
ELSE
REDEF CURRENT_NYBBLE_ARRAY_START EQUS "._nybble_array\@"
{CURRENT_NYBBLE_ARRAY_START}:
ENDC
ENDM
nybble: MACRO
ASSERT 0 <= (\1) && (\1) < $10, "nybbles must be 0-15"
CURRENT_NYBBLE_ARRAY_VALUE = (\1) | (CURRENT_NYBBLE_ARRAY_VALUE << 4)
CURRENT_NYBBLE_ARRAY_LENGTH = CURRENT_NYBBLE_ARRAY_LENGTH + 1
IF CURRENT_NYBBLE_ARRAY_LENGTH % 2 == 0
db CURRENT_NYBBLE_ARRAY_VALUE
CURRENT_NYBBLE_ARRAY_VALUE = 0
ENDC
ENDM
end_nybble_array: MACRO
IF CURRENT_NYBBLE_ARRAY_LENGTH % 2
db CURRENT_NYBBLE_ARRAY_VALUE
ENDC
IF _NARG == 1
x = \1
ASSERT x == CURRENT_NYBBLE_ARRAY_LENGTH, \
"{CURRENT_NYBBLE_ARRAY_START}: expected {d:x} nybbles, got {d:CURRENT_NYBBLE_ARRAY_LENGTH}"
x = (x + 1) / 2
ASSERT x == @ - {CURRENT_NYBBLE_ARRAY_START}, \
"{CURRENT_NYBBLE_ARRAY_START}: expected {d:x} bytes"
ENDC
ENDM
def_grass_wildmons: MACRO def_grass_wildmons: MACRO
;\1: encounter rate ;\1: encounter rate
CURRENT_GRASS_WILDMONS_RATE = \1 CURRENT_GRASS_WILDMONS_RATE = \1