Merge pull request #65 from earthoul/cleanups-2026-04

Clean-ups on menus, serials, and decks and other structured data with asserts and macros
This commit is contained in:
dannye
2026-04-19 09:58:28 -05:00
committed by GitHub
38 changed files with 5780 additions and 7072 deletions

View File

@@ -112,7 +112,7 @@ Music1_SetVolume:
call Music1_LoadAudioWRAMBank
push bc
push af
and $7
and AUDVOL_MASK
ld b, a
swap b
or b
@@ -128,7 +128,7 @@ Music1_Init:
ldh [rAUDENA], a
ld a, AUDENA_ON
ldh [rAUDENA], a
ld a, $77
ld a, AUDVOL_RIGHT | AUDVOL_LEFT
ldh [rAUDVOL], a
ld a, AUDTERM_1_RIGHT | AUDTERM_2_RIGHT | AUDTERM_3_RIGHT | AUDTERM_4_RIGHT | AUDTERM_1_LEFT | AUDTERM_2_LEFT | AUDTERM_3_LEFT | AUDTERM_4_LEFT
ldh [rAUDTERM], a
@@ -140,7 +140,7 @@ Music1_Init:
ld [wCurSongID], a
swap a
ld [wAudio_d083], a
ld a, $77 ; set both speakers to max volume
ld a, AUDVOL_FULL_VOLUME_BOTH
ld [wMusicPanning], a
xor a
ld [wdd8c], a

View File

@@ -22,8 +22,8 @@ _AssertSFXFinished_2::
Music2_f4015_2::
jp Music2_f4066
Music2_f4018_2::
jp Music2_f406f
_SetVolume_2::
jp Music2_SetVolume
_PauseSong_2::
jp Music2_PauseSong
@@ -108,11 +108,11 @@ Music2_f4066:
call Music2_UnloadAudioWRAMBank
ret
Music2_f406f:
Music2_SetVolume:
call Music2_LoadAudioWRAMBank
push bc
push af
and $7
and AUDVOL_MASK
ld b, a
swap b
or b
@@ -128,7 +128,7 @@ Music2_Init:
ldh [rAUDENA], a
ld a, AUDENA_ON
ldh [rAUDENA], a
ld a, $77
ld a, AUDVOL_RIGHT | AUDVOL_LEFT
ldh [rAUDVOL], a
ld a, AUDTERM_1_RIGHT | AUDTERM_2_RIGHT | AUDTERM_3_RIGHT | AUDTERM_4_RIGHT | AUDTERM_1_LEFT | AUDTERM_2_LEFT | AUDTERM_3_LEFT | AUDTERM_4_LEFT
ldh [rAUDTERM], a
@@ -140,7 +140,7 @@ Music2_Init:
ld [wCurSongID], a
swap a
ld [wAudio_d083], a
ld a, $77 ; set both speakers to max volume
ld a, AUDVOL_FULL_VOLUME_BOTH
ld [wMusicPanning], a
xor a
ld [wdd8c], a

View File

@@ -22,8 +22,8 @@ _AssertSFXFinished_3::
Music3_f4015_3::
jp Music3_f4066
Music3_f4018_3::
jp Music3_f406f
_SetVolume_3::
jp Music3_SetVolume
_PauseSong_3::
jp Music3_PauseSong
@@ -108,11 +108,11 @@ Music3_f4066:
call Music3_UnloadAudioWRAMBank
ret
Music3_f406f:
Music3_SetVolume:
call Music3_LoadAudioWRAMBank
push bc
push af
and $7
and AUDVOL_MASK
ld b, a
swap b
or b
@@ -128,7 +128,7 @@ Music3_Init:
ldh [rAUDENA], a
ld a, AUDENA_ON
ldh [rAUDENA], a
ld a, $77
ld a, AUDVOL_RIGHT | AUDVOL_LEFT
ldh [rAUDVOL], a
ld a, AUDTERM_1_RIGHT | AUDTERM_2_RIGHT | AUDTERM_3_RIGHT | AUDTERM_4_RIGHT | AUDTERM_1_LEFT | AUDTERM_2_LEFT | AUDTERM_3_LEFT | AUDTERM_4_LEFT
ldh [rAUDTERM], a
@@ -140,7 +140,7 @@ Music3_Init:
ld [wCurSongID], a
swap a
ld [wAudio_d083], a
ld a, $77 ; set both speakers to max volume
ld a, AUDVOL_FULL_VOLUME_BOTH
ld [wMusicPanning], a
xor a
ld [wdd8c], a

View File

@@ -22,8 +22,8 @@ _AssertSFXFinished_4::
Music4_f4015_4::
jp Music4_f4066
Music4_f4018_4::
jp Music4_f406f
_SetVolume_4::
jp Music4_SetVolume
_PauseSong_4::
jp Music4_PauseSong
@@ -108,11 +108,11 @@ Music4_f4066:
call Music4_UnloadAudioWRAMBank
ret
Music4_f406f:
Music4_SetVolume:
call Music4_LoadAudioWRAMBank
push bc
push af
and $7
and AUDVOL_MASK
ld b, a
swap b
or b
@@ -128,7 +128,7 @@ Music4_Init:
ldh [rAUDENA], a
ld a, AUDENA_ON
ldh [rAUDENA], a
ld a, $77
ld a, AUDVOL_RIGHT | AUDVOL_LEFT
ldh [rAUDVOL], a
ld a, AUDTERM_1_RIGHT | AUDTERM_2_RIGHT | AUDTERM_3_RIGHT | AUDTERM_4_RIGHT | AUDTERM_1_LEFT | AUDTERM_2_LEFT | AUDTERM_3_LEFT | AUDTERM_4_LEFT
ldh [rAUDTERM], a
@@ -140,7 +140,7 @@ Music4_Init:
ld [wCurSongID], a
swap a
ld [wAudio_d083], a
ld a, $77 ; set both speakers to max volume
ld a, AUDVOL_FULL_VOLUME_BOTH
ld [wMusicPanning], a
xor a
ld [wdd8c], a

View File

@@ -22,8 +22,8 @@ _AssertSFXFinished_5::
Music5_f4015_5::
jp Music5_f4066
Music5_f4018_5::
jp Music5_f406f
_SetVolume_5::
jp Music5_SetVolume
_PauseSong_5::
jp Music5_PauseSong
@@ -108,11 +108,11 @@ Music5_f4066:
call Music5_UnloadAudioWRAMBank
ret
Music5_f406f:
Music5_SetVolume:
call Music5_LoadAudioWRAMBank
push bc
push af
and $7
and AUDVOL_MASK
ld b, a
swap b
or b
@@ -128,7 +128,7 @@ Music5_Init:
ldh [rAUDENA], a
ld a, AUDENA_ON
ldh [rAUDENA], a
ld a, $77
ld a, AUDVOL_RIGHT | AUDVOL_LEFT
ldh [rAUDVOL], a
ld a, AUDTERM_1_RIGHT | AUDTERM_2_RIGHT | AUDTERM_3_RIGHT | AUDTERM_4_RIGHT | AUDTERM_1_LEFT | AUDTERM_2_LEFT | AUDTERM_3_LEFT | AUDTERM_4_LEFT
ldh [rAUDTERM], a
@@ -140,7 +140,7 @@ Music5_Init:
ld [wCurSongID], a
swap a
ld [wAudio_d083], a
ld a, $77 ; set both speakers to max volume
ld a, AUDVOL_FULL_VOLUME_BOTH
ld [wMusicPanning], a
xor a
ld [wdd8c], a

View File

@@ -22,8 +22,8 @@ _AssertSFXFinished_6::
Music6_f4015_6::
jp Music6_f4066
Music6_f4018_6::
jp Music6_f406f
_SetVolume_6::
jp Music6_SetVolume
_PauseSong_6::
jp Music6_PauseSong
@@ -108,11 +108,11 @@ Music6_f4066:
call Music6_UnloadAudioWRAMBank
ret
Music6_f406f:
Music6_SetVolume:
call Music6_LoadAudioWRAMBank
push bc
push af
and $7
and AUDVOL_MASK
ld b, a
swap b
or b
@@ -128,7 +128,7 @@ Music6_Init:
ldh [rAUDENA], a
ld a, AUDENA_ON
ldh [rAUDENA], a
ld a, $77
ld a, AUDVOL_RIGHT | AUDVOL_LEFT
ldh [rAUDVOL], a
ld a, AUDTERM_1_RIGHT | AUDTERM_2_RIGHT | AUDTERM_3_RIGHT | AUDTERM_4_RIGHT | AUDTERM_1_LEFT | AUDTERM_2_LEFT | AUDTERM_3_LEFT | AUDTERM_4_LEFT
ldh [rAUDTERM], a
@@ -140,7 +140,7 @@ Music6_Init:
ld [wCurSongID], a
swap a
ld [wAudio_d083], a
ld a, $77 ; set both speakers to max volume
ld a, AUDVOL_FULL_VOLUME_BOTH
ld [wMusicPanning], a
xor a
ld [wdd8c], a

View File

@@ -22,8 +22,8 @@ _AssertSFXFinished_7::
Music7_f4015_7::
jp Music7_f4066
Music7_f4018_7::
jp Music7_f406f
_SetVolume_7::
jp Music7_SetVolume
_PauseSong_7::
jp Music7_PauseSong
@@ -108,11 +108,11 @@ Music7_f4066:
call Music7_UnloadAudioWRAMBank
ret
Music7_f406f:
Music7_SetVolume:
call Music7_LoadAudioWRAMBank
push bc
push af
and $7
and AUDVOL_MASK
ld b, a
swap b
or b
@@ -128,7 +128,7 @@ Music7_Init:
ldh [rAUDENA], a
ld a, AUDENA_ON
ldh [rAUDENA], a
ld a, $77
ld a, AUDVOL_RIGHT | AUDVOL_LEFT
ldh [rAUDVOL], a
ld a, AUDTERM_1_RIGHT | AUDTERM_2_RIGHT | AUDTERM_3_RIGHT | AUDTERM_4_RIGHT | AUDTERM_1_LEFT | AUDTERM_2_LEFT | AUDTERM_3_LEFT | AUDTERM_4_LEFT
ldh [rAUDTERM], a
@@ -140,7 +140,7 @@ Music7_Init:
ld [wCurSongID], a
swap a
ld [wAudio_d083], a
ld a, $77 ; set both speakers to max volume
ld a, AUDVOL_FULL_VOLUME_BOTH
ld [wMusicPanning], a
xor a
ld [wdd8c], a

View File

@@ -134,3 +134,5 @@ ENDM
deck_const POISON_STORM_DECK ; $78
deck_const DECK_7269 ; $79
DEF NUM_DECK_IDS EQU const_value - 2
DEF DECK_NONE EQU $ff

View File

@@ -412,7 +412,7 @@ DEF PRIZES_6 EQU $06
const DUELIST_INTRO_GR_FIRE_FORT_LEADER ; $1f
const DUELIST_INTRO_GR_WATER_FORT_LEADER ; $20
const DUELIST_INTRO_GR_FIGHTING_FORT_LEADER ; $21
const DUELIST_INTRO_GR_PSYCHIC_FORT_LEADER ; $22
const DUELIST_INTRO_GR_PSYCHIC_STRONGHOLD_LEADER ; $22
const DUELIST_INTRO_GR_COLORLESS_ALTAR_GUARDIAN ; $23
const DUELIST_INTRO_GR_BIG_BOSS ; $24
const DUELIST_INTRO_GR_KING ; $25

View File

@@ -61,5 +61,7 @@
const MUSIC_STING_3B ; $3b
; rAUDVOL
DEF AUDVOL_MASK EQU %111
DEF AUDVOL_FULL_VOLUME EQU 7
DEF AUDVOL_HALF_VOLUME EQU 3
DEF AUDVOL_FULL_VOLUME_BOTH EQU AUDVOL_FULL_VOLUME << 4 | AUDVOL_FULL_VOLUME ; $77

File diff suppressed because it is too large Load Diff

View File

@@ -1,528 +1,245 @@
; CARD_RECEIVE_STRUCT_*
; $0, $1: card ID
; $2, $3: dialog-box card name (long)
; $4, $5: dialog-box card name (short, but mostly the same as long)
; $6, $7: received text
; $8 : alt flag (for Legendaries)
; $9, $a: alt received text
/*
CARD_RECEIVE_STRUCT_*
\1 = card ID - word
\2 = long card name on msg box - text ptr
\3 = short card name on msg box - text ptr
\4 = Received*Text - text ptr
\5 = alt flag (Legendaries) - bool
\6 = alt Received*Text - text ptr
11 bytes. Mostly \2 = \3
*/
MACRO receive_card_text
dw \1
tx \2
tx \3
tx \4
db \5
tx \6
ENDM
ReceiveCardTextPointers:
dw GRS_MEWTWO
tx PromotionalGRMewtwoLv35Text
tx PromotionalGRMewtwoText
tx ReceivedPromotionalGRMewtwoText
db FALSE
tx NONE
dw ARCANINE_LV34
tx PromotionalArcanineLv34Text
tx PromotionalArcanineLv34Text
tx ReceivedPromotionalCardText_2
db FALSE
tx NONE
dw ELECTABUZZ_LV20
tx PromotionalElectabuzzLv20Text
tx PromotionalElectabuzzLv20Text
tx ReceivedPromotionalCardText_2
db FALSE
tx NONE
dw DRAGONITE_LV41
tx PromotionalDragoniteLv41Text
tx PromotionalDragoniteLv41Text
tx ReceivedLegendaryCardText_2
db TRUE
tx ReceivedPromotionalCardText_2
dw DRAGONITE_LV43
tx PromotionalDragoniteLv43Text
tx PromotionalDragoniteLv43Text
tx ReceivedPromotionalCardText_2
db FALSE
tx NONE
dw COOL_PORYGON
tx PromotionalCoolPorygonLv15Text
tx PromotionalCoolPorygonText
tx ReceivedPromotionalCoolPorygonText
db FALSE
tx NONE
dw BLASTOISE_ALT_LV52
tx PromotionalBlastoiseLv52Text
tx PromotionalBlastoiseLv52Text
tx ReceivedPromotionalCardText_2
db FALSE
tx NONE
dw FARFETCHD_ALT_LV20
tx PromotionalFarfetchdLv20Text
tx PromotionalFarfetchdLv20Text
tx ReceivedPromotionalCardText_2
db FALSE
tx NONE
dw KANGASKHAN_LV38
tx PromotionalKangaskhanLv38Text
tx PromotionalKangaskhanLv38Text
tx ReceivedPromotionalCardText_2
db FALSE
tx NONE
dw POTION_ENERGY
tx NONE
tx NotPromotionalPotionEnergyText
tx ReceivedNotPromotionalPotionEnergyText
db FALSE
tx NONE
dw HUNGRY_SNORLAX
tx PromotionalHungrySnorlaxLv50Text
tx PromotionalHungrySnorlaxText
tx ReceivedPromotionalHungrySnorlaxText
db FALSE
tx NONE
dw MAGIKARP_LV10
tx PromotionalMagikarpLv10Text
tx PromotionalMagikarpLv10Text
tx ReceivedPromotionalCardText_2
db FALSE
tx NONE
dw ZAPDOS_LV68
tx PromotionalZapdosLv68Text
tx PromotionalZapdosLv68Text
tx ReceivedLegendaryCardText_2
db TRUE
tx ReceivedPromotionalCardText_2
dw FLYING_PIKACHU_LV12
tx PromotionalFlyingPikachuLv12Text
tx PromotionalFlyingPikachuText
tx ReceivedPromotionalFlyingPikachuText_2
db FALSE
tx NONE
dw FLYING_PIKACHU_ALT_LV12
tx PromotionalFlyingPikachuLv12Text
tx PromotionalFlyingPikachuText
tx ReceivedPromotionalFlyingPikachuText_2
db FALSE
tx NONE
dw DUGTRIO_LV40
tx PromotionalDugtrioLv40Text
tx PromotionalDugtrioLv40Text
tx ReceivedPromotionalCardText_2
db FALSE
tx NONE
dw SUPER_ENERGY_RETRIEVAL
tx PromotionalSuperEnergyRetrievalText
tx PromotionalSuperEnergyRetrievalText
tx ReceivedPromotionalCardText_2
db FALSE
tx NONE
dw DIGLETT_LV16
tx PromotionalDiglettLv16Text
tx PromotionalDiglettLv16Text
tx ReceivedPromotionalCardText_2
db FALSE
tx NONE
dw TOGEPI
tx PromotionalTogepiLv8Text
tx PromotionalTogepiLv8Text
tx ReceivedPromotionalCardText_2
db FALSE
tx NONE
dw SURFING_PIKACHU_LV13
tx PromotionalSurfingPikachuLv13Text
tx PromotionalSurfingPikachuText
tx ReceivedPromotionalSurfingPikachuText_2
db FALSE
tx NONE
dw SURFING_PIKACHU_ALT_LV13
tx PromotionalSurfingPikachuLv13Text
tx PromotionalSurfingPikachuText
tx ReceivedPromotionalSurfingPikachuText_2
db FALSE
tx NONE
dw MEOWTH_LV14
tx PromotionalMeowthLv14Text
tx PromotionalMeowthLv14Text
tx ReceivedPromotionalCardText_2
db FALSE
tx NONE
dw COMPUTER_ERROR
tx PromotionalComputerErrorText
tx PromotionalComputerErrorText
tx ReceivedPromotionalCardText_2
db FALSE
tx NONE
dw PIKACHU_LV13
tx PromotionalPikachuLv13Text
tx PromotionalPikachuLv13Text
tx ReceivedPromotionalCardText_2
db FALSE
tx NONE
dw PIKACHU_LV16
tx PromotionalPikachuLv16Text
tx PromotionalPikachuLv16Text
tx ReceivedPromotionalCardText_2
db FALSE
tx NONE
dw PIKACHU_ALT_LV16
tx PromotionalPikachuLv16Text
tx PromotionalPikachuLv16Text
tx ReceivedPromotionalCardText_2
db FALSE
tx NONE
dw MOLTRES_LV40
tx PromotionalMoltresLv40Text
tx PromotionalMoltresLv40Text
tx ReceivedLegendaryCardText_2
db TRUE
tx ReceivedPromotionalCardText_2
dw VENUSAUR_ALT_LV67
tx PromotionalVenusaurLv67Text
tx PromotionalVenusaurLv67Text
tx ReceivedPromotionalCardText_2
db FALSE
tx NONE
dw ARTICUNO_LV37
tx PromotionalArticunoLv37Text
tx PromotionalArticunoLv37Text
tx ReceivedLegendaryCardText_2
db TRUE
tx ReceivedPromotionalCardText_2
dw JIGGLYPUFF_LV12
tx PromotionalJigglypuffLv12Text
tx PromotionalJigglypuffLv12Text
tx ReceivedPromotionalCardText_2
db FALSE
tx NONE
dw GOOP_GAS_ATTACK
tx NONE
tx NONE
tx ReceivedCardText_4
db FALSE
tx NONE
dw BILLS_COMPUTER
tx PromotionalBillsComputerText
tx PromotionalBillsComputerText
tx ReceivedPromotionalCardText_2
db FALSE
tx NONE
dw MARILL
tx PromotionalMarillLv17Text
tx PromotionalMarillLv17Text
tx ReceivedPromotionalCardText_2
db FALSE
tx NONE
dw MANKEY_ALT_LV7
tx PromotionalMankeyLv7Text
tx PromotionalMankeyLv7Text
tx ReceivedPromotionalCardText_2
db FALSE
tx NONE
dw MEW_LV8
tx PromotionalMewLv8Text
tx PromotionalMewLv8Text
tx ReceivedPromotionalCardText_2
db FALSE
tx NONE
dw MEWTWO_LV30
tx PromotionalMewtwoLv30Text
tx PromotionalMewtwoLv30Text
tx ReceivedPromotionalCardText_2
db FALSE
tx NONE
dw MEWTWO_ALT_LV60
tx PromotionalMewtwoLv60Text
tx PromotionalMewtwoLv60Text
tx ReceivedPromotionalCardText_2
db FALSE
tx NONE
dw MEWTWO_LV60
tx PromotionalMewtwoLv60Text
tx PromotionalMewtwoLv60Text
tx ReceivedPromotionalCardText_2
db FALSE
tx NONE
dw SLOWPOKE_LV9
tx PromotionalSlowpokeLv9Text
tx PromotionalSlowpokeLv9Text
tx ReceivedPromotionalCardText_2
db FALSE
tx NONE
dw CHARIZARD_ALT_LV76
tx PromotionalCharizardLv76Text
tx PromotionalCharizardLv76Text
tx ReceivedPromotionalCardText_2
db FALSE
tx NONE
dw ROCKETS_SNEAK_ATTACK
tx NONE
tx NONE
tx ReceivedCardText_3
db FALSE
tx NONE
dw DARK_ARBOK
tx NONE
tx NONE
tx ReceivedCardText_3
db FALSE
tx NONE
dw DARK_PRIMEAPE
tx NONE
tx NONE
tx ReceivedCardText_3
db FALSE
tx NONE
dw DARK_FEAROW
tx NONE
tx NONE
tx ReceivedCardText_3
db FALSE
tx NONE
dw DARK_MACHAMP
tx NONE
tx NONE
tx ReceivedCardText_3
db FALSE
tx NONE
dw DARK_DRAGONITE
tx NONE
tx NONE
tx ReceivedCardText_3
db FALSE
tx NONE
dw DARK_BLASTOISE
tx NONE
tx NONE
tx ReceivedCardText_3
db FALSE
tx NONE
dw DARK_NINETALES
tx NONE
tx NONE
tx ReceivedCardText_3
db FALSE
tx NONE
dw DARK_GYARADOS
tx NONE
tx NONE
tx ReceivedCardText_3
db FALSE
tx NONE
dw DARK_RAPIDASH
tx NONE
tx NONE
tx ReceivedCardText_3
db FALSE
tx NONE
dw DARK_GLOOM
tx NONE
tx NONE
tx ReceivedCardText_3
db FALSE
tx NONE
dw DARK_MACHOKE
tx NONE
tx NONE
tx ReceivedCardText_3
db FALSE
tx NONE
dw DARK_GOLDUCK
tx NONE
tx NONE
tx ReceivedCardText_3
db FALSE
tx NONE
dw DARK_GOLBAT
tx NONE
tx NONE
tx ReceivedCardText_3
db FALSE
tx NONE
dw DARK_JOLTEON
tx NONE
tx NONE
tx ReceivedCardText_3
db FALSE
tx NONE
dw DARK_VAPOREON
tx NONE
tx NONE
tx ReceivedCardText_3
db FALSE
tx NONE
dw DARK_STARMIE
tx NONE
tx NONE
tx ReceivedCardText_3
db FALSE
tx NONE
dw DARK_HYPNO
tx NONE
tx NONE
tx ReceivedCardText_3
db FALSE
tx NONE
dw DARK_DUGTRIO
tx NONE
tx NONE
tx ReceivedCardText_3
db FALSE
tx NONE
dw DARK_DRAGONAIR
tx NONE
tx NONE
tx ReceivedCardText_3
db FALSE
tx NONE
dw DARK_FLAREON
tx NONE
tx NONE
tx ReceivedCardText_3
db FALSE
tx NONE
dw DARK_ALAKAZAM
tx NONE
tx NONE
tx ReceivedCardText_3
db FALSE
tx NONE
dw DARK_IVYSAUR
tx NONE
tx NONE
tx ReceivedCardText_3
db FALSE
tx NONE
dw DARK_VENUSAUR
tx NONE
tx NONE
tx ReceivedCardText_3
db FALSE
tx NONE
dw DARK_MUK
tx NONE
tx NONE
tx ReceivedCardText_3
db FALSE
tx NONE
dw DARK_PERSIAN_LV28
tx NONE
tx NONE
tx ReceivedCardText_3
db FALSE
tx NONE
dw DARK_PERSIAN_ALT_LV28
tx PromotionalDarkPersianLv28Text
tx PromotionalDarkPersianLv28Text
tx ReceivedPromotionalCardText_3
db FALSE
tx NONE
dw DARK_WEEZING
tx NONE
tx NONE
tx ReceivedCardText_3
db FALSE
tx NONE
dw DARK_ELECTRODE
tx NONE
tx NONE
tx ReceivedCardText_3
db FALSE
tx NONE
dw DARK_KADABRA
tx NONE
tx NONE
tx ReceivedCardText_3
db FALSE
tx NONE
dw DARK_RAICHU
tx NONE
tx NONE
tx ReceivedCardText_3
db FALSE
tx NONE
dw DARK_VILEPLUME
tx NONE
tx NONE
tx ReceivedCardText_3
db FALSE
tx NONE
dw DARK_CHARIZARD
tx NONE
tx NONE
tx ReceivedCardText_3
db FALSE
tx NONE
dw DARK_MAGNETON
tx NONE
tx NONE
tx ReceivedCardText_3
db FALSE
tx NONE
receive_card_text GRS_MEWTWO, \
PromotionalGRMewtwoLv35Text, PromotionalGRMewtwoText, \
ReceivedPromotionalGRMewtwoText, FALSE, NONE
receive_card_text ARCANINE_LV34, \
PromotionalArcanineLv34Text, PromotionalArcanineLv34Text, \
ReceivedPromotionalCardText_2, FALSE, NONE
receive_card_text ELECTABUZZ_LV20, \
PromotionalElectabuzzLv20Text, PromotionalElectabuzzLv20Text, \
ReceivedPromotionalCardText_2, FALSE, NONE
receive_card_text DRAGONITE_LV41, \
PromotionalDragoniteLv41Text, PromotionalDragoniteLv41Text, \
ReceivedLegendaryCardText_2, TRUE, ReceivedPromotionalCardText_2
receive_card_text DRAGONITE_LV43, \
PromotionalDragoniteLv43Text, PromotionalDragoniteLv43Text, \
ReceivedPromotionalCardText_2, FALSE, NONE
receive_card_text COOL_PORYGON, \
PromotionalCoolPorygonLv15Text, PromotionalCoolPorygonText, \
ReceivedPromotionalCoolPorygonText, FALSE, NONE
receive_card_text BLASTOISE_ALT_LV52, \
PromotionalBlastoiseLv52Text, PromotionalBlastoiseLv52Text, \
ReceivedPromotionalCardText_2, FALSE, NONE
receive_card_text FARFETCHD_ALT_LV20, \
PromotionalFarfetchdLv20Text, PromotionalFarfetchdLv20Text, \
ReceivedPromotionalCardText_2, FALSE, NONE
receive_card_text KANGASKHAN_LV38, \
PromotionalKangaskhanLv38Text, PromotionalKangaskhanLv38Text, \
ReceivedPromotionalCardText_2, FALSE, NONE
receive_card_text POTION_ENERGY, \
NONE, NotPromotionalPotionEnergyText, \
ReceivedNotPromotionalPotionEnergyText, FALSE, NONE
receive_card_text HUNGRY_SNORLAX, \
PromotionalHungrySnorlaxLv50Text, PromotionalHungrySnorlaxText, \
ReceivedPromotionalHungrySnorlaxText, FALSE, NONE
receive_card_text MAGIKARP_LV10, \
PromotionalMagikarpLv10Text, PromotionalMagikarpLv10Text, \
ReceivedPromotionalCardText_2, FALSE, NONE
receive_card_text ZAPDOS_LV68, \
PromotionalZapdosLv68Text, PromotionalZapdosLv68Text, \
ReceivedLegendaryCardText_2, TRUE, ReceivedPromotionalCardText_2
receive_card_text FLYING_PIKACHU_LV12, \
PromotionalFlyingPikachuLv12Text, PromotionalFlyingPikachuText, \
ReceivedPromotionalFlyingPikachuText_2, FALSE, NONE
receive_card_text FLYING_PIKACHU_ALT_LV12, \
PromotionalFlyingPikachuLv12Text, PromotionalFlyingPikachuText, \
ReceivedPromotionalFlyingPikachuText_2, FALSE, NONE
receive_card_text DUGTRIO_LV40, \
PromotionalDugtrioLv40Text, PromotionalDugtrioLv40Text, \
ReceivedPromotionalCardText_2, FALSE, NONE
receive_card_text SUPER_ENERGY_RETRIEVAL, \
PromotionalSuperEnergyRetrievalText, PromotionalSuperEnergyRetrievalText, \
ReceivedPromotionalCardText_2, FALSE, NONE
receive_card_text DIGLETT_LV16, \
PromotionalDiglettLv16Text, PromotionalDiglettLv16Text, \
ReceivedPromotionalCardText_2, FALSE, NONE
receive_card_text TOGEPI, \
PromotionalTogepiLv8Text, PromotionalTogepiLv8Text, \
ReceivedPromotionalCardText_2, FALSE, NONE
receive_card_text SURFING_PIKACHU_LV13, \
PromotionalSurfingPikachuLv13Text, PromotionalSurfingPikachuText, \
ReceivedPromotionalSurfingPikachuText_2, FALSE, NONE
receive_card_text SURFING_PIKACHU_ALT_LV13, \
PromotionalSurfingPikachuLv13Text, PromotionalSurfingPikachuText, \
ReceivedPromotionalSurfingPikachuText_2, FALSE, NONE
receive_card_text MEOWTH_LV14, \
PromotionalMeowthLv14Text, PromotionalMeowthLv14Text, \
ReceivedPromotionalCardText_2, FALSE, NONE
receive_card_text COMPUTER_ERROR, \
PromotionalComputerErrorText, PromotionalComputerErrorText, \
ReceivedPromotionalCardText_2, FALSE, NONE
receive_card_text PIKACHU_LV13, \
PromotionalPikachuLv13Text, PromotionalPikachuLv13Text, \
ReceivedPromotionalCardText_2, FALSE, NONE
receive_card_text PIKACHU_LV16, \
PromotionalPikachuLv16Text, PromotionalPikachuLv16Text, \
ReceivedPromotionalCardText_2, FALSE, NONE
receive_card_text PIKACHU_ALT_LV16, \
PromotionalPikachuLv16Text, PromotionalPikachuLv16Text, \
ReceivedPromotionalCardText_2, FALSE, NONE
receive_card_text MOLTRES_LV40, \
PromotionalMoltresLv40Text, PromotionalMoltresLv40Text, \
ReceivedLegendaryCardText_2, TRUE, ReceivedPromotionalCardText_2
receive_card_text VENUSAUR_ALT_LV67, \
PromotionalVenusaurLv67Text, PromotionalVenusaurLv67Text, \
ReceivedPromotionalCardText_2, FALSE, NONE
receive_card_text ARTICUNO_LV37, \
PromotionalArticunoLv37Text, PromotionalArticunoLv37Text, \
ReceivedLegendaryCardText_2, TRUE, ReceivedPromotionalCardText_2
receive_card_text JIGGLYPUFF_LV12, \
PromotionalJigglypuffLv12Text, PromotionalJigglypuffLv12Text, \
ReceivedPromotionalCardText_2, FALSE, NONE
receive_card_text GOOP_GAS_ATTACK, \
NONE, NONE, \
ReceivedCardText_4, FALSE, NONE
receive_card_text BILLS_COMPUTER, \
PromotionalBillsComputerText, PromotionalBillsComputerText, \
ReceivedPromotionalCardText_2, FALSE, NONE
receive_card_text MARILL, \
PromotionalMarillLv17Text, PromotionalMarillLv17Text, \
ReceivedPromotionalCardText_2, FALSE, NONE
receive_card_text MANKEY_ALT_LV7, \
PromotionalMankeyLv7Text, PromotionalMankeyLv7Text, \
ReceivedPromotionalCardText_2, FALSE, NONE
receive_card_text MEW_LV8, \
PromotionalMewLv8Text, PromotionalMewLv8Text, \
ReceivedPromotionalCardText_2, FALSE, NONE
receive_card_text MEWTWO_LV30, \
PromotionalMewtwoLv30Text, PromotionalMewtwoLv30Text, \
ReceivedPromotionalCardText_2, FALSE, NONE
receive_card_text MEWTWO_ALT_LV60, \
PromotionalMewtwoLv60Text, PromotionalMewtwoLv60Text, \
ReceivedPromotionalCardText_2, FALSE, NONE
receive_card_text MEWTWO_LV60, \
PromotionalMewtwoLv60Text, PromotionalMewtwoLv60Text, \
ReceivedPromotionalCardText_2, FALSE, NONE
receive_card_text SLOWPOKE_LV9, \
PromotionalSlowpokeLv9Text, PromotionalSlowpokeLv9Text, \
ReceivedPromotionalCardText_2, FALSE, NONE
receive_card_text CHARIZARD_ALT_LV76, \
PromotionalCharizardLv76Text, PromotionalCharizardLv76Text, \
ReceivedPromotionalCardText_2, FALSE, NONE
receive_card_text ROCKETS_SNEAK_ATTACK, \
NONE, NONE, \
ReceivedCardText_3, FALSE, NONE
receive_card_text DARK_ARBOK, \
NONE, NONE, \
ReceivedCardText_3, FALSE, NONE
receive_card_text DARK_PRIMEAPE, \
NONE, NONE, \
ReceivedCardText_3, FALSE, NONE
receive_card_text DARK_FEAROW, \
NONE, NONE, \
ReceivedCardText_3, FALSE, NONE
receive_card_text DARK_MACHAMP, \
NONE, NONE, \
ReceivedCardText_3, FALSE, NONE
receive_card_text DARK_DRAGONITE, \
NONE, NONE, \
ReceivedCardText_3, FALSE, NONE
receive_card_text DARK_BLASTOISE, \
NONE, NONE, \
ReceivedCardText_3, FALSE, NONE
receive_card_text DARK_NINETALES, \
NONE, NONE, \
ReceivedCardText_3, FALSE, NONE
receive_card_text DARK_GYARADOS, \
NONE, NONE, \
ReceivedCardText_3, FALSE, NONE
receive_card_text DARK_RAPIDASH, \
NONE, NONE, \
ReceivedCardText_3, FALSE, NONE
receive_card_text DARK_GLOOM, \
NONE, NONE, \
ReceivedCardText_3, FALSE, NONE
receive_card_text DARK_MACHOKE, \
NONE, NONE, \
ReceivedCardText_3, FALSE, NONE
receive_card_text DARK_GOLDUCK, \
NONE, NONE, \
ReceivedCardText_3, FALSE, NONE
receive_card_text DARK_GOLBAT, \
NONE, NONE, \
ReceivedCardText_3, FALSE, NONE
receive_card_text DARK_JOLTEON, \
NONE, NONE, \
ReceivedCardText_3, FALSE, NONE
receive_card_text DARK_VAPOREON, \
NONE, NONE, \
ReceivedCardText_3, FALSE, NONE
receive_card_text DARK_STARMIE, \
NONE, NONE, \
ReceivedCardText_3, FALSE, NONE
receive_card_text DARK_HYPNO, \
NONE, NONE, \
ReceivedCardText_3, FALSE, NONE
receive_card_text DARK_DUGTRIO, \
NONE, NONE, \
ReceivedCardText_3, FALSE, NONE
receive_card_text DARK_DRAGONAIR, \
NONE, NONE, \
ReceivedCardText_3, FALSE, NONE
receive_card_text DARK_FLAREON, \
NONE, NONE, \
ReceivedCardText_3, FALSE, NONE
receive_card_text DARK_ALAKAZAM, \
NONE, NONE, \
ReceivedCardText_3, FALSE, NONE
receive_card_text DARK_IVYSAUR, \
NONE, NONE, \
ReceivedCardText_3, FALSE, NONE
receive_card_text DARK_VENUSAUR, \
NONE, NONE, \
ReceivedCardText_3, FALSE, NONE
receive_card_text DARK_MUK, \
NONE, NONE, \
ReceivedCardText_3, FALSE, NONE
receive_card_text DARK_PERSIAN_LV28, \
NONE, NONE, \
ReceivedCardText_3, FALSE, NONE
receive_card_text DARK_PERSIAN_ALT_LV28, \
PromotionalDarkPersianLv28Text, PromotionalDarkPersianLv28Text, \
ReceivedPromotionalCardText_3, FALSE, NONE
receive_card_text DARK_WEEZING, \
NONE, NONE, \
ReceivedCardText_3, FALSE, NONE
receive_card_text DARK_ELECTRODE, \
NONE, NONE, \
ReceivedCardText_3, FALSE, NONE
receive_card_text DARK_KADABRA, \
NONE, NONE, \
ReceivedCardText_3, FALSE, NONE
receive_card_text DARK_RAICHU, \
NONE, NONE, \
ReceivedCardText_3, FALSE, NONE
receive_card_text DARK_VILEPLUME, \
NONE, NONE, \
ReceivedCardText_3, FALSE, NONE
receive_card_text DARK_CHARIZARD, \
NONE, NONE, \
ReceivedCardText_3, FALSE, NONE
receive_card_text DARK_MAGNETON, \
NONE, NONE, \
ReceivedCardText_3, FALSE, NONE
dw $ffff ; end of list

528
src/data/deck_id_data.asm Normal file
View File

@@ -0,0 +1,528 @@
/*
\1 = *_DECK_ID - byte
\2 = *DeckName - text ptr
\3 = Duelist*Name - text ptr
\4 = *_PIC ID - byte
\5 = PRIZES_* number or 0 - byte
\6 = special duel rule ID or NONE - byte
\7 = DECK_REQUIREMENT_* ID or NONE - byte
\8 = MUSIC_DUEL_THEME_* ID or MUSIC_STOP - byte
\9 = DUELIST_INTRO_* ID - byte
\10 = COIN_* ID - byte
12 bytes
*/
MACRO deck_duel
db \1
tx \2
tx \3
db \4, \5, \6, \7, \8, \9, \<10>
ENDM
DeckIDData:
; sam
deck_duel SAMS_PRACTICE_DECK_ID, SamsPracticeDeckName, \
DuelistSamName, SAM_PIC, \
PRIZES_2, NONE, NONE, \
MUSIC_DUEL_THEME_CLUB_MEMBER, DUELIST_INTRO_TECH, COIN_CHANSEY
; player (data-wise)
deck_duel STARTER_DECK_ID - 1, StarterDeckName, \
DuelistMainCharacterName, MARK_PIC, \
0, NONE, NONE, \
MUSIC_STOP, NONE, COIN_CHANSEY
deck_duel SWEAT_ANTI_GR1_DECK_ID - 1, SweatAntiGR1DeckName, \
DuelistMainCharacterName, MARK_PIC, \
0, NONE, NONE, \
MUSIC_STOP, NONE, COIN_CHANSEY
deck_duel GIVE_IN_ANTI_GR2_DECK_ID - 1, GiveInAntiGR2DeckName, \
DuelistMainCharacterName, MARK_PIC, \
0, NONE, NONE, \
MUSIC_STOP, NONE, COIN_CHANSEY
deck_duel VENGEFUL_ANTI_GR3_DECK_ID - 1, VengefulAntiGR3DeckName, \
DuelistMainCharacterName, MARK_PIC, \
0, NONE, NONE, \
MUSIC_STOP, NONE, COIN_CHANSEY
deck_duel UNFORGIVING_ANTI_GR4_DECK_ID - 1, UnforgivingAntiGR4DeckName, \
DuelistMainCharacterName, MARK_PIC, \
0, NONE, NONE, \
MUSIC_STOP, NONE, COIN_CHANSEY
deck_duel UNUSED_SAMS_PRACTICE_DECK_ID - 1, PracticeDeckName, \
DuelistMainCharacterName, MARK_PIC, \
0, NONE, NONE, \
MUSIC_STOP, NONE, COIN_CHANSEY
; sam (unused)
deck_duel UNUSED_SAMS_PRACTICE_DECK_ID, SamsPracticeDeckName, \
DuelistSamName, SAM_PIC, \
PRIZES_2, NONE, NONE, \
MUSIC_DUEL_THEME_CLUB_MEMBER, DUELIST_INTRO_TECH, COIN_CHANSEY
; aaron
deck_duel AARON_PRACTICE_DECK1_ID, YourPracticeDeck1Name, \
DuelistMainCharacterName, MARK_PIC, \
0, NONE, NONE, \
MUSIC_STOP, NONE, COIN_CHANSEY
deck_duel AARONS_STEP1_DECK_ID, AaronsStep1DeckName, \
DuelistAaronName, AARON_PIC, \
PRIZES_4, NONE, NONE, \
MUSIC_DUEL_THEME_CLUB_MEMBER, DUELIST_INTRO_TECH, COIN_CHANSEY
deck_duel AARON_PRACTICE_DECK2_ID, YourPracticeDeck2Name, \
DuelistMainCharacterName, MARK_PIC, \
0, NONE, NONE, \
MUSIC_STOP, NONE, COIN_CHANSEY
deck_duel AARONS_STEP2_DECK_ID, AaronsStep2DeckName, \
DuelistAaronName, AARON_PIC, \
PRIZES_4, NONE, NONE, \
MUSIC_DUEL_THEME_CLUB_MEMBER, DUELIST_INTRO_TECH, COIN_CHANSEY
deck_duel AARON_PRACTICE_DECK3_ID, YourPracticeDeck3Name, \
DuelistMainCharacterName, MARK_PIC, \
0, NONE, NONE, \
MUSIC_STOP, NONE, COIN_CHANSEY
deck_duel AARONS_STEP3_DECK_ID, AaronsStep3DeckName, \
DuelistAaronName, AARON_PIC, \
PRIZES_4, NONE, NONE, \
MUSIC_DUEL_THEME_CLUB_MEMBER, DUELIST_INTRO_TECH, COIN_CHANSEY
deck_duel BRICK_WALK_DECK_ID, RiversideWalkDeckName, \
DuelistAaronName, AARON_PIC, \
PRIZES_4, NONE, NONE, \
MUSIC_DUEL_THEME_CLUB_MEMBER, DUELIST_INTRO_TECH, COIN_CHANSEY
deck_duel BENCH_TRAP_DECK_ID, BenchTrapDeckName, \
DuelistAaronName, AARON_PIC, \
PRIZES_4, NONE, NONE, \
MUSIC_DUEL_THEME_CLUB_MEMBER, DUELIST_INTRO_TECH, COIN_CHANSEY
; lightning club
deck_duel SKY_SPARK_DECK_ID, SkySparkDeckName, \
DuelistIsaacName, ISAAC_PIC, \
PRIZES_6, NONE, NONE, \
MUSIC_DUEL_THEME_CLUB_MASTER, DUELIST_INTRO_LIGHTNING_CLUB_MASTER, COIN_PIKACHU
deck_duel ELECTRIC_SELFDESTRUCT_DECK_ID, ElectricSelfDestructDeckName, \
DuelistIsaacName, ISAAC_PIC, \
PRIZES_6, NONE, NONE, \
MUSIC_DUEL_THEME_CLUB_MASTER, DUELIST_INTRO_LIGHTNING_CLUB_MASTER, COIN_PIKACHU
deck_duel OVERFLOW_DECK_ID, OverflowDeckName, \
DuelistNicholasName, NICHOLAS_PIC, \
PRIZES_4, NONE, NONE, \
MUSIC_DUEL_THEME_CLUB_MEMBER, DUELIST_INTRO_LIGHTNING_CLUB_MEMBER, COIN_CHANSEY
deck_duel TRIPLE_ZAPDOS_DECK_ID, TripleZapdosDeckName, \
DuelistNicholasName, NICHOLAS_PIC, \
PRIZES_4, NONE, NONE, \
MUSIC_DUEL_THEME_CLUB_MEMBER, DUELIST_INTRO_LIGHTNING_CLUB_MEMBER, COIN_PIKACHU
deck_duel I_LOVE_PIKACHU_DECK_ID, ILovePikachuDeckName, \
DuelistJenniferName, JENNIFER_PIC, \
PRIZES_4, NONE, NONE, \
MUSIC_DUEL_THEME_CLUB_MEMBER, DUELIST_INTRO_LIGHTNING_CLUB_MEMBER, COIN_CHANSEY
deck_duel TEN_THOUSAND_VOLTS_DECK_ID, ThunderboltDeckName, \
DuelistBrandonName, BRANDON_PIC, \
PRIZES_4, NONE, NONE, \
MUSIC_DUEL_THEME_CLUB_MEMBER, DUELIST_INTRO_LIGHTNING_CLUB_MEMBER, COIN_CHANSEY
; psychic club
deck_duel HAND_OVER_GR_DECK_ID, HandedOverGRDeckName, \
DuelistMurrayName, MURRAY_PIC, \
PRIZES_6, NONE, NONE, \
MUSIC_DUEL_THEME_CLUB_MASTER, DUELIST_INTRO_PSYCHIC_CLUB_MASTER, COIN_ALAKAZAM
deck_duel PSYCHIC_ELITE_DECK_ID, PsychicEliteDeckName, \
DuelistMurrayName, MURRAY_PIC, \
PRIZES_6, NONE, NONE, \
MUSIC_DUEL_THEME_CLUB_MASTER, DUELIST_INTRO_PSYCHIC_CLUB_MASTER, COIN_ALAKAZAM
deck_duel PSYCHOKINESIS_DECK_ID, PsychicDeckName, \
DuelistStephanieName, STEPHANIE_PIC, \
PRIZES_4, NONE, NONE, \
MUSIC_DUEL_THEME_CLUB_MEMBER, DUELIST_INTRO_PSYCHIC_CLUB_MEMBER, COIN_CHANSEY
deck_duel PHANTOM_DECK_ID, GhostDeckName, \
DuelistRobertName, ROBERT_PIC, \
PRIZES_4, NONE, NONE, \
MUSIC_DUEL_THEME_CLUB_MEMBER, DUELIST_INTRO_PSYCHIC_CLUB_MEMBER, COIN_CHANSEY
deck_duel PUPPET_MASTER_DECK_ID, PuppetMasterDeckName, \
DuelistDanielName, DANIEL_PIC, \
PRIZES_4, NONE, NONE, \
MUSIC_DUEL_THEME_CLUB_MEMBER, DUELIST_INTRO_PSYCHIC_CLUB_MEMBER, COIN_CHANSEY
; rock club
deck_duel EVEN3_YEARS_ON_A_ROCK_DECK_ID, ThreeYearsOnRockDeckName, \
DuelistGeneName, GENE_PIC, \
PRIZES_6, NONE, NONE, \
MUSIC_DUEL_THEME_CLUB_MASTER, DUELIST_INTRO_ROCK_CLUB_MASTER, COIN_KABUTO
deck_duel ROLLING_STONE_DECK_ID, RollingStoneDeckName, \
DuelistMatthewName, MATTHEW_PIC, \
PRIZES_4, NONE, NONE, \
MUSIC_DUEL_THEME_CLUB_MEMBER, DUELIST_INTRO_ROCK_CLUB_MEMBER, COIN_CHANSEY
deck_duel GREAT_EARTHQUAKE_DECK_ID, GreatEarthquakeDeckName, \
DuelistRyanName, RYAN_PIC, \
PRIZES_4, NONE, NONE, \
MUSIC_DUEL_THEME_CLUB_MEMBER, DUELIST_INTRO_ROCK_CLUB_MEMBER, COIN_CHANSEY
deck_duel AWESOME_FOSSIL_DECK_ID, AwesomeFossilDeckName, \
DuelistAndrewName, ANDREW_PIC, \
PRIZES_4, NONE, NONE, \
MUSIC_DUEL_THEME_CLUB_MEMBER, DUELIST_INTRO_ROCK_CLUB_MEMBER, COIN_CHANSEY
; fighting club
deck_duel RAGING_BILLOW_OF_FISTS_DECK_ID, RagingBillowOfFistsDeckName, \
DuelistMitchName, MITCH_PIC, \
PRIZES_6, NONE, NONE, \
MUSIC_DUEL_THEME_CLUB_MASTER, DUELIST_INTRO_FIGHTING_CLUB_MASTER, COIN_MACHAMP
deck_duel YOU_CAN_DO_IT_MACHOP_DECK_ID, YouCanDoItMachopDeckName, \
DuelistMichaelName, MICHAEL_PIC, \
PRIZES_4, NONE, NONE, \
MUSIC_DUEL_THEME_CLUB_MEMBER, DUELIST_INTRO_FIGHTING_CLUB_MEMBER, COIN_CHANSEY
deck_duel NEW_MACHOKE_DECK_ID, NewMachokeDeckName, \
DuelistMichaelName, MICHAEL_PIC, \
PRIZES_4, NONE, NONE, \
MUSIC_DUEL_THEME_CLUB_MEMBER, DUELIST_INTRO_FIGHTING_CLUB_MEMBER, COIN_CHANSEY
deck_duel SKILLED_WARRIOR_DECK_ID, SkilledWarriorDeckName, \
DuelistChrisName, CHRIS_PIC, \
PRIZES_4, NONE, NONE, \
MUSIC_DUEL_THEME_CLUB_MEMBER, DUELIST_INTRO_FIGHTING_CLUB_MEMBER, COIN_CHANSEY
deck_duel I_LOVE_TO_FIGHT_DECK_ID, LoveToBattleDeckName, \
DuelistJessicaName, JESSICA_PIC, \
PRIZES_4, NONE, NONE, \
MUSIC_DUEL_THEME_CLUB_MEMBER, DUELIST_INTRO_FIGHTING_CLUB_MEMBER, COIN_CHANSEY
; grass club
deck_duel MAX_ENERGY_DECK_ID, MaxEnergyDeckName, \
DuelistNikkiName, NIKKI_PIC, \
PRIZES_6, NONE, NONE, \
MUSIC_DUEL_THEME_CLUB_MASTER, DUELIST_INTRO_GRASS_CLUB_MASTER, COIN_ODDISH
deck_duel REMAINING_GREEN_DECK_ID, SurvivingGreenDeckName, \
DuelistBrittanyName, BRITTANY_PIC, \
PRIZES_4, NONE, NONE, \
MUSIC_DUEL_THEME_CLUB_MEMBER, DUELIST_INTRO_GRASS_CLUB_MEMBER, COIN_CHANSEY
deck_duel POISON_CURSE_DECK_ID, PoisonVespidsDeckName, \
DuelistBrittanyName, BRITTANY_PIC, \
PRIZES_4, NONE, NONE, \
MUSIC_DUEL_THEME_CLUB_MEMBER, DUELIST_INTRO_GRASS_CLUB_MEMBER, COIN_ODDISH
deck_duel GLITTERING_SCALES_DECK_ID, GlitteringScalesDeckName, \
DuelistKristinName, KRISTIN_PIC, \
PRIZES_4, NONE, NONE, \
MUSIC_DUEL_THEME_CLUB_MEMBER, DUELIST_INTRO_GRASS_CLUB_MEMBER, COIN_CHANSEY
deck_duel STEADY_INCREASE_DECK_ID, SteadyIncreaseDeckName, \
DuelistHeatherName, HEATHER_PIC, \
PRIZES_4, NONE, NONE, \
MUSIC_DUEL_THEME_CLUB_MEMBER, DUELIST_INTRO_GRASS_CLUB_MEMBER, COIN_CHANSEY
; science club
deck_duel DARK_SCIENCE_DECK_ID, DarkScienceDeckName, \
DuelistRickName, RICK_PIC, \
PRIZES_6, NONE, NONE, \
MUSIC_DUEL_THEME_CLUB_MASTER, DUELIST_INTRO_SCIENCE_CLUB_MASTER, COIN_GOLBAT
deck_duel NATURAL_SCIENCE_DECK_ID, NaturalScienceDeckName, \
DuelistDavidName, DAVID_PIC, \
PRIZES_4, NONE, NONE, \
MUSIC_DUEL_THEME_CLUB_MEMBER, DUELIST_INTRO_SCIENCE_CLUB_MEMBER, COIN_CHANSEY
deck_duel POISONOUS_SWAMP_DECK_ID, PoisonousSwampDeckName, \
DuelistJosephName, JOSEPH_PIC, \
PRIZES_4, NONE, NONE, \
MUSIC_DUEL_THEME_CLUB_MEMBER, DUELIST_INTRO_SCIENCE_CLUB_MEMBER, COIN_CHANSEY
deck_duel GATHERING_NIDORAN_DECK_ID, GatheringNidoranDeckName, \
DuelistErikName, ERIK_PIC, \
PRIZES_4, NONE, NONE, \
MUSIC_DUEL_THEME_CLUB_MEMBER, DUELIST_INTRO_SCIENCE_CLUB_MEMBER, COIN_CHANSEY
; water club
deck_duel RAIN_DANCE_CONFUSION_DECK_ID, RainDanceConfusionDeckName, \
DuelistAmyName, AMY_PIC, \
PRIZES_6, NONE, NONE, \
MUSIC_DUEL_THEME_CLUB_MASTER, DUELIST_INTRO_WATER_CLUB_MASTER, COIN_STARMIE
deck_duel CONSERVING_WATER_DECK_ID, SurvivingWaterDeckName, \
DuelistJoshuaName, JOSHUA_PIC, \
PRIZES_4, NONE, NONE, \
MUSIC_DUEL_THEME_CLUB_MEMBER, DUELIST_INTRO_WATER_CLUB_MEMBER, COIN_CHANSEY
deck_duel ENERGY_REMOVAL_DECK_ID, EnergyRemovalDeckName, \
DuelistJoshuaName, JOSHUA_PIC, \
PRIZES_4, NONE, NONE, \
MUSIC_DUEL_THEME_CLUB_MEMBER, DUELIST_INTRO_WATER_CLUB_MEMBER, COIN_STARMIE
deck_duel SPLASHING_ABOUT_DECK_ID, SplashingAboutDeckName, \
DuelistSaraName, SARA_PIC, \
PRIZES_4, NONE, NONE, \
MUSIC_DUEL_THEME_CLUB_MEMBER, DUELIST_INTRO_WATER_CLUB_MEMBER, COIN_CHANSEY
deck_duel BEACH_DECK_ID, BeachDeckName, \
DuelistAmandaName, AMANDA_PIC, \
PRIZES_4, NONE, NONE, \
MUSIC_DUEL_THEME_CLUB_MEMBER, DUELIST_INTRO_WATER_CLUB_MEMBER, COIN_CHANSEY
; fire club
deck_duel GO_ARCANINE_DECK_ID, GoArcanineDeckName, \
DuelistKenName, KEN_PIC, \
PRIZES_6, NONE, NONE, \
MUSIC_DUEL_THEME_CLUB_MASTER, DUELIST_INTRO_FIRE_CLUB_MASTER, COIN_CHARMANDER
deck_duel FLAME_FESTIVAL_DECK_ID, FlameFestivalDeckName, \
DuelistJohnName, JOHN_PIC, \
PRIZES_4, NONE, NONE, \
MUSIC_DUEL_THEME_CLUB_MEMBER, DUELIST_INTRO_FIRE_CLUB_MEMBER, COIN_CHANSEY
deck_duel IMMORTAL_FLAME_DECK_ID, ImmortalFlameDeckName, \
DuelistJonathanName, JONATHAN_PIC, \
PRIZES_4, NONE, NONE, \
MUSIC_DUEL_THEME_CLUB_MEMBER, DUELIST_INTRO_FIRE_CLUB_MEMBER, COIN_CHANSEY
deck_duel ELECTRIC_CURRENT_SHOCK_DECK_ID, ElectricCurrentShockDeckName, \
DuelistAdamName, ADAM_PIC, \
PRIZES_4, NONE, NONE, \
MUSIC_DUEL_THEME_CLUB_MEMBER, DUELIST_INTRO_FIRE_CLUB_MEMBER, COIN_CHANSEY
; masked gr
deck_duel GREAT_ROCKET4_DECK_ID, GreatRocket4DeckName, \
DuelistGR4Name, GR_4_PIC, \
PRIZES_6, NONE, NONE, \
MUSIC_DUEL_THEME_GR_MEMBER, DUELIST_INTRO_ENIGMATIC_MASK, COIN_GR
deck_duel GREAT_ROCKET1_DECK_ID, GreatRocket1DeckName, \
DuelistGR1Name, GR_1_PIC, \
PRIZES_6, NONE, NONE, \
MUSIC_DUEL_THEME_GR_MEMBER, DUELIST_INTRO_ENIGMATIC_MASK, COIN_GR
deck_duel GREAT_ROCKET2_DECK_ID, GreatRocket2DeckName, \
DuelistGR2Name, GR_2_PIC, \
PRIZES_6, NONE, NONE, \
MUSIC_DUEL_THEME_GR_MEMBER, DUELIST_INTRO_ENIGMATIC_MASK, COIN_GR
deck_duel GREAT_ROCKET3_DECK_ID, GreatRocket3DeckName, \
DuelistGR3Name, GR_3_PIC, \
PRIZES_6, NONE, NONE, \
MUSIC_DUEL_THEME_GR_MEMBER, DUELIST_INTRO_ENIGMATIC_MASK, COIN_GR
; grand masters
deck_duel GRAND_FIRE_DECK_ID, GrandFireDeckName, \
DuelistCourtneyName, COURTNEY_PIC, \
PRIZES_6, NONE, NONE, \
MUSIC_DUEL_THEME_GRAND_MASTER, DUELIST_INTRO_GRAND_MASTER, COIN_CHARMANDER
deck_duel LEGENDARY_FOSSIL_DECK_ID, LegendaryFossilDeckName, \
DuelistSteveName, STEVE_PIC, \
PRIZES_6, NONE, NONE, \
MUSIC_DUEL_THEME_GRAND_MASTER, DUELIST_INTRO_GRAND_MASTER, COIN_PIKACHU
deck_duel WATER_LEGEND_DECK_ID, WaterLegendDeckName, \
DuelistJackName, JACK_PIC, \
PRIZES_6, NONE, NONE, \
MUSIC_DUEL_THEME_GRAND_MASTER, DUELIST_INTRO_GRAND_MASTER, COIN_STARMIE
deck_duel GREAT_DRAGON_DECK_ID, GreatDragonDeckName, \
DuelistRodName, ROD_PIC, \
PRIZES_6, NONE, NONE, \
MUSIC_DUEL_THEME_GRAND_MASTER, DUELIST_INTRO_GRAND_MASTER, COIN_CHANSEY
; gr grass
deck_duel BUG_COLLECTING_DECK_ID, InsectCollectionDeckName, \
DuelistMidoriName, MIDORI_PIC, \
PRIZES_4, NONE, NONE, \
MUSIC_DUEL_THEME_GR_MEMBER, DUELIST_INTRO_GR_GRASS_FORT_MEMBER, COIN_GR
deck_duel DEMONIC_FOREST_DECK_ID, DemonicForestDeckName, \
DuelistYutaName, YUTA_PIC, \
PRIZES_4, NONE, NONE, \
MUSIC_DUEL_THEME_GR_MEMBER, DUELIST_INTRO_GR_GRASS_FORT_MEMBER, COIN_GR
deck_duel STICKY_POISON_GAS_DECK_ID, PoisonGoopGasDeckName, \
DuelistMiyukiName, MIYUKI_PIC, \
PRIZES_4, NONE, DECK_REQUIREMENT_GRASS_ENERGY, \
MUSIC_DUEL_THEME_GR_MEMBER, DUELIST_INTRO_GR_GRASS_FORT_MEMBER, COIN_GR
deck_duel MAD_PETALS_DECK_ID, MadPetalsDeckName, \
DuelistMorinoName, MORINO_PIC, \
PRIZES_6, CHLOROPHYLL, NONE, \
MUSIC_DUEL_THEME_GR_LEADER, DUELIST_INTRO_GR_GRASS_FORT_LEADER, COIN_GOLBAT
; gr lightning
deck_duel DANGEROUS_BENCH_DECK_ID, DangerousBenchDeckName, \
DuelistTapName, TAP_PIC, \
PRIZES_4, NONE, NONE, \
MUSIC_DUEL_THEME_CLUB_MEMBER, DUELIST_INTRO_TAP, COIN_CHANSEY
deck_duel CHAIN_LIGHTNING_BY_PIKACHU_DECK_ID, ChainLightningByPikachuDeckName, \
DuelistRennaName, RENNA_PIC, \
PRIZES_4, NONE, DECK_REQUIREMENT_4X_PIKACHU, \
MUSIC_DUEL_THEME_GR_MEMBER, DUELIST_INTRO_GR_LIGHTNING_FORT_MEMBER, COIN_GR
deck_duel THIS_IS_THE_POWER_OF_ELECTRICITY_DECK_ID, ThisIsThePowerOfElectricityDeckName, \
DuelistIchikawaName, ICHIKAWA_PIC, \
PRIZES_4, NONE, DECK_REQUIREMENT_LIGHTNING_ENERGY, \
MUSIC_DUEL_THEME_GR_MEMBER, DUELIST_INTRO_GR_LIGHTNING_FORT_MEMBER, COIN_GR
deck_duel QUICK_ATTACK_DECK_ID, QuickAttackDeckName, \
DuelistCatherineName, CATHERINE_PIC, \
PRIZES_6, THUNDER_CHARGE, NONE, \
MUSIC_DUEL_THEME_GR_LEADER, DUELIST_INTRO_GR_LIGHTNING_FORT_LEADER, COIN_MAGNEMITE
; gr fire
deck_duel COMPLETE_COMBUSTION_DECK_ID, CompleteCombustionDeckName, \
DuelistJesName, JES_PIC, \
PRIZES_4, NONE, NONE, \
MUSIC_DUEL_THEME_GR_MEMBER, DUELIST_INTRO_GR_FIRE_FORT_MEMBER, COIN_GR
deck_duel FIREBALL_DECK_ID, FireballDeckName, \
DuelistYukiName, YUKI_PIC, \
PRIZES_4, NONE, DECK_REQUIREMENT_FIRE_ENERGY, \
MUSIC_DUEL_THEME_GR_MEMBER, DUELIST_INTRO_GR_FIRE_FORT_MEMBER, COIN_GR
deck_duel EEVEE_SHOWDOWN_DECK_ID, EeveeShowdownDeckName, \
DuelistShokoName, SHOKO_PIC, \
PRIZES_4, NONE, DECK_REQUIREMENT_4X_EEVEE, \
MUSIC_DUEL_THEME_GR_MEMBER, DUELIST_INTRO_GR_FIRE_FORT_MEMBER, COIN_GR
deck_duel GAZE_UPON_THE_POWER_OF_FIRE_DECK_ID, GazeUponThePowerOfFireDeckName, \
DuelistHideroName, HIDERO_PIC, \
PRIZES_6, FLAME_ARMOR, NONE, \
MUSIC_DUEL_THEME_GR_LEADER, DUELIST_INTRO_GR_FIRE_FORT_LEADER, COIN_MAGMAR
; gr water
deck_duel WHIRLPOOL_SHOWER_DECK_ID, WhirlpoolShowerDeckName, \
DuelistMiyajimaName, MIYAJIMA_PIC, \
PRIZES_4, NONE, DECK_REQUIREMENT_WATER_ENERGY, \
MUSIC_DUEL_THEME_GR_MEMBER, DUELIST_INTRO_GR_WATER_FORT_MEMBER, COIN_GR
deck_duel PARALYZED_PARALYZED_DECK_ID, ParalyzedParalyzedDeckName, \
DuelistSentaName, SENTA_PIC, \
PRIZES_4, NONE, DECK_REQUIREMENT_4X_MAGIKARP, \
MUSIC_DUEL_THEME_GR_MEMBER, DUELIST_INTRO_GR_WATER_FORT_MEMBER, COIN_GR
deck_duel BENCH_CALL_DECK_ID, BenchCallDeckName, \
DuelistAiraName, AIRA_PIC, \
PRIZES_4, SMALL_BENCH, NONE, \
MUSIC_DUEL_THEME_GR_MEMBER, DUELIST_INTRO_GR_WATER_FORT_MEMBER, COIN_GR
deck_duel WATER_STREAM_DECK_ID, WaterStreamDeckName, \
DuelistKanokoName, KANOKO_PIC, \
PRIZES_6, RUNNING_WATER, NONE, \
MUSIC_DUEL_THEME_GR_LEADER, DUELIST_INTRO_GR_WATER_FORT_LEADER, COIN_PSYDUCK
; gr fighting
deck_duel ROCK_BLAST_DECK_ID, RockBlastDeckName, \
DuelistGodaName, GODA_PIC, \
PRIZES_4, NONE, DECK_REQUIREMENT_NO_ENERGY_REMOVAL, \
MUSIC_DUEL_THEME_GR_MEMBER, DUELIST_INTRO_GR_FIGHTING_FORT_MEMBER, COIN_GR
deck_duel FULL_STRENGTH_DECK_ID, FullStrengthDeckName, \
DuelistGraceName, GRACE_PIC, \
PRIZES_4, NONE, DECK_REQUIREMENT_FIGHTING_ENERGY, \
MUSIC_DUEL_THEME_GR_MEMBER, DUELIST_INTRO_GR_FIGHTING_FORT_MEMBER, COIN_GR
deck_duel RUNNING_WILD_DECK_ID, RunningWildDeckName, \
DuelistKamiyaName, KAMIYA_PIC, \
PRIZES_6, EARTH_POWER, NONE, \
MUSIC_DUEL_THEME_GR_LEADER, DUELIST_INTRO_GR_FIGHTING_FORT_LEADER, COIN_MACHAMP
; gr psychic
deck_duel DIRECT_HIT_DECK_ID, DirectHitDeckName, \
DuelistMiwaName, MIWA_PIC, \
PRIZES_4, NONE, DECK_REQUIREMENT_PSYCHIC_ENERGY, \
MUSIC_DUEL_THEME_GR_MEMBER, DUELIST_INTRO_GR_PSYCHIC_STRONGHOLD_MEMBER, COIN_GR
deck_duel SUPERDESTRUCTIVE_POWER_DECK_ID, SuperDestructivePowerDeckName, \
DuelistKevinName, KEVIN_PIC, \
PRIZES_4, LOW_RESISTANCE, NONE, \
MUSIC_DUEL_THEME_GR_MEMBER, DUELIST_INTRO_GR_PSYCHIC_STRONGHOLD_MEMBER, COIN_GR
deck_duel BAD_DREAM_DECK_ID, BadDreamDeckName, \
DuelistYosukeName, YOSUKE_PIC, \
PRIZES_4, NONE, DECK_REQUIREMENT_6X_GASTLY_HAUNTER, \
MUSIC_DUEL_THEME_GR_MEMBER, DUELIST_INTRO_GR_PSYCHIC_STRONGHOLD_MEMBER, COIN_GR
deck_duel POKEMON_POWER_DECK_ID, PokemonsPowerDeckName, \
DuelistRyokoName, RYOKO_PIC, \
PRIZES_4, NONE, DECK_REQUIREMENT_NO_TRAINERS, \
MUSIC_DUEL_THEME_GR_MEMBER, DUELIST_INTRO_GR_PSYCHIC_STRONGHOLD_MEMBER, COIN_GR
deck_duel SPIRITED_AWAY_DECK_ID, SpiritedAwayDeckName, \
DuelistMamiName, MAMI_PIC, \
PRIZES_6, ENERGY_RETURN, NONE, \
MUSIC_DUEL_THEME_GR_LEADER, DUELIST_INTRO_GR_PSYCHIC_STRONGHOLD_LEADER, COIN_MEW
; gr colorless
deck_duel SNORLAX_GUARD_DECK_ID, SnorlaxGuardDeckName, \
DuelistNishijimaName, NISHIJIMA_PIC, \
PRIZES_6, NONE, DECK_REQUIREMENT_COLORLESS_NISHIJIMA, \
MUSIC_DUEL_THEME_GR_LEADER, DUELIST_INTRO_GR_COLORLESS_ALTAR_GUARDIAN, COIN_SNORLAX
deck_duel EYE_OF_THE_STORM_DECK_ID, EyeOfTheStormDeckName, \
DuelistIshiiName, ISHII_PIC, \
PRIZES_6, NONE, DECK_REQUIREMENT_COLORLESS_ISHII, \
MUSIC_DUEL_THEME_GR_LEADER, DUELIST_INTRO_GR_COLORLESS_ALTAR_GUARDIAN, COIN_SNORLAX
deck_duel SUDDEN_GROWTH_DECK_ID, SuddenGrowthDeckName, \
DuelistSamejimaName, SAMEJIMA_PIC, \
PRIZES_6, NONE, DECK_REQUIREMENT_COLORLESS_SAMEJIMA, \
MUSIC_DUEL_THEME_GR_LEADER, DUELIST_INTRO_GR_COLORLESS_ALTAR_GUARDIAN, COIN_SNORLAX
; ishihara
deck_duel VERY_RARE_CARD_DECK_ID, VeryRareCardDeckName, \
DuelistMrIshiharaName, ISHIHARA_PIC, \
PRIZES_6, NONE, NONE, \
MUSIC_ISHIHARA, DUELIST_INTRO_COLLECTOR, COIN_JIGGLYPUFF
; gr bosses
deck_duel BAD_GUYS_DECK_ID, BadGuysDeckName, \
DuelistKanzakiName, KANZAKI_PIC, \
PRIZES_6, NONE, DECK_REQUIREMENT_FOUR_GB_LEGENDARY, \
MUSIC_DUEL_THEME_GR_LEADER, DUELIST_INTRO_GR_BIG_BOSS, COIN_HORSEA
deck_duel POISON_MIST_DECK_ID, PoisonMistDeckName, \
DuelistRuiName, RUI_PIC, \
PRIZES_6, TOUGH_ESCAPE, NONE, \
MUSIC_DUEL_THEME_GR_LEADER, DUELIST_INTRO_GR_BIG_BOSS, COIN_ARBOK
deck_duel ULTRA_REMOVAL_DECK_ID, UltraRemovalDeckName, \
DuelistRuiName, RUI_PIC, \
PRIZES_6, BLACK_HOLE, NONE, \
MUSIC_DUEL_THEME_GR_LEADER, DUELIST_INTRO_GR_BIG_BOSS, COIN_JIGGLYPUFF
deck_duel PSYCHIC_BATTLE_DECK_ID, PsychicBattleDeckName, \
DuelistRuiName, RUI_PIC, \
PRIZES_6, LOW_RESISTANCE, NONE, \
MUSIC_DUEL_THEME_GR_LEADER, DUELIST_INTRO_GR_BIG_BOSS, COIN_GENGAR
; gr king
deck_duel STOP_LIFE_DECK_ID, ChokeDeckName, \
DuelistBiruritchiName, BIRURITCHI_PIC, \
PRIZES_6, NONE, NONE, \
MUSIC_DUEL_THEME_GR_KING, DUELIST_INTRO_GR_KING, COIN_TOGEPI
deck_duel SCORCHER_DECK_ID, IncinerateDeckName, \
DuelistBiruritchiName, BIRURITCHI_PIC, \
PRIZES_6, NONE, NONE, \
MUSIC_DUEL_THEME_GR_KING, DUELIST_INTRO_GR_KING, COIN_TOGEPI
deck_duel TSUNAMI_STARTER_DECK_ID, SmashDeckName, \
DuelistBiruritchiName, BIRURITCHI_PIC, \
PRIZES_6, NONE, NONE, \
MUSIC_DUEL_THEME_GR_KING, DUELIST_INTRO_GR_KING, COIN_TOGEPI
deck_duel SMASH_TO_MINCEMEAT_DECK_ID, ThrowOutDeckName, \
DuelistBiruritchiName, BIRURITCHI_PIC, \
PRIZES_6, NONE, NONE, \
MUSIC_DUEL_THEME_GR_KING, DUELIST_INTRO_GR_KING, COIN_TOGEPI
; card dungeon
deck_duel TEST_YOUR_LUCK_DECK_ID, TestYourLuckDeckName, \
DuelistPawnName, PAWN_PIC, \
PRIZES_4, NONE, NONE, \
MUSIC_DUEL_THEME_CLUB_MEMBER, DUELIST_INTRO_DUNGEON_MASTER, COIN_JIGGLYPUFF
deck_duel PROTOHISTORIC_DECK_ID, ProtohistoricDeckName, \
DuelistKnightName, KNIGHT_PIC, \
PRIZES_4, NONE, NONE, \
MUSIC_DUEL_THEME_CLUB_MASTER, DUELIST_INTRO_DUNGEON_MASTER, COIN_JIGGLYPUFF
deck_duel TEXTURE_TUNER7_DECK_ID, TextureTuner7DeckName, \
DuelistBishopName, BISHOP_PIC, \
PRIZES_4, NONE, NONE, \
MUSIC_DUEL_THEME_GR_MEMBER, DUELIST_INTRO_DUNGEON_MASTER, COIN_JIGGLYPUFF
deck_duel COLORLESS_ENERGY_DECK_ID, ColorlessEnergyDeckName, \
DuelistRookName, ROOK_PIC, \
PRIZES_5, NONE, NONE, \
MUSIC_DUEL_THEME_GR_MEMBER, DUELIST_INTRO_DUNGEON_MASTER, COIN_JIGGLYPUFF
deck_duel POWERFUL_POKEMON_DECK_ID, PowerfulPokemonDeckName, \
DuelistQueenName, QUEEN_PIC, \
PRIZES_6, NONE, NONE, \
MUSIC_DUEL_THEME_GR_LEADER, DUELIST_INTRO_DUNGEON_MASTER, COIN_JIGGLYPUFF
; imakuni?
deck_duel WEIRD_DECK_ID, WeirdDeckName, \
DuelistImakuniName, IMAKUNI_BLACK_PIC, \
PRIZES_6, NONE, NONE, \
MUSIC_IMAKUNI_BLACK, DUELIST_INTRO_STRANGE_LIFE_FORM, COIN_PSYDUCK
deck_duel STRANGE_DECK_ID, StrangeDeckName, \
DuelistImakuniName, IMAKUNI_RED_PIC, \
PRIZES_6, NONE, NONE, \
MUSIC_IMAKUNI_RED, DUELIST_INTRO_STRANGE_LIFE_FORM, COIN_JIGGLYPUFF
; ronald
deck_duel RONALDS_UNCOOL_DECK_ID, RonaldsUncoolDeckName, \
DuelistRonaldName, RONALD_PIC, \
PRIZES_6, NONE, NONE, \
MUSIC_RONALD, DUELIST_INTRO_RIVAL, COIN_RAICHU
deck_duel RONALDS_GRX_DECK_ID, RonaldsGRXDeckName, \
DuelistGRXName, GR_X_PIC, \
PRIZES_6, NONE, NONE, \
MUSIC_RONALD, DUELIST_INTRO_ENIGMATIC_MASK, COIN_RAICHU
deck_duel RONALDS_POWER_DECK_ID, RonaldsPowerDeckName, \
DuelistRonaldName, RONALD_PIC, \
PRIZES_6, NONE, NONE, \
MUSIC_RONALD, DUELIST_INTRO_RIVAL, COIN_RAICHU
deck_duel RONALDS_PSYCHIC_DECK_ID, RonaldsSuperDeckName, \
DuelistRonaldName, RONALD_PIC, \
PRIZES_6, NONE, NONE, \
MUSIC_RONALD, DUELIST_INTRO_RIVAL, COIN_RAICHU
deck_duel RONALDS_ULTRA_DECK_ID, RonaldsUltraDeckName, \
DuelistRonaldName, RONALD_PIC, \
PRIZES_6, NONE, NONE, \
MUSIC_RONALD, DUELIST_INTRO_RIVAL, COIN_RAICHU
; ghost masters
deck_duel EVERYBODYS_FRIEND_DECK_ID, EverybodysFriendDeckName, \
DuelistEijiName, EIJI_PIC, \
PRIZES_6, NONE, NONE, \
MUSIC_DUEL_THEME_GR_LEADER, DUELIST_INTRO_GHOST_MASTER, COIN_LUGIA
deck_duel IMMORTAL_POKEMON_DECK_ID, ImmortalPokemonDeckName, \
DuelistMagicianName, MAGICIAN_PIC, \
PRIZES_6, NONE, NONE, \
MUSIC_DUEL_THEME_GR_LEADER, DUELIST_INTRO_GHOST_MASTER, COIN_LUGIA
deck_duel TORRENTIAL_FLOOD_DECK_ID, TorrentialFloodDeckName, \
DuelistYuiName, YUI_PIC, \
PRIZES_6, NONE, NONE, \
MUSIC_DUEL_THEME_GR_LEADER, DUELIST_INTRO_GHOST_MASTER, COIN_LUGIA
deck_duel TRAINER_IMPRISON_DECK_ID, TrainerImprisonDeckName, \
DuelistToshironName, TOSHIRON_PIC, \
PRIZES_6, NONE, NONE, \
MUSIC_DUEL_THEME_GR_LEADER, DUELIST_INTRO_GHOST_MASTER, COIN_LUGIA
deck_duel BLAZING_FLAME_DECK_ID, BlazingFlameDeckName, \
DuelistPierrotName, PIERROT_PIC, \
PRIZES_6, NONE, NONE, \
MUSIC_DUEL_THEME_GR_LEADER, DUELIST_INTRO_GHOST_MASTER, COIN_LUGIA
deck_duel DAMAGE_CHAOS_DECK_ID, DamageChaosDeckName, \
DuelistAnnaName, ANNA_PIC, \
PRIZES_6, NONE, NONE, \
MUSIC_DUEL_THEME_GR_LEADER, DUELIST_INTRO_GHOST_MASTER, COIN_LUGIA
deck_duel BIG_THUNDER_DECK_ID, BigThunderDeckName, \
DuelistDeeName, DEE_PIC, \
PRIZES_6, NONE, NONE, \
MUSIC_DUEL_THEME_GR_LEADER, DUELIST_INTRO_GHOST_MASTER, COIN_LUGIA
deck_duel POWER_OF_DARKNESS_DECK_ID, PowerOfDarknessDeckName, \
DuelistMasqueradeName, MASQUERADE_PIC, \
PRIZES_6, NONE, NONE, \
MUSIC_DUEL_THEME_GR_LEADER, DUELIST_INTRO_GHOST_MASTER, COIN_LUGIA
deck_duel POISON_STORM_DECK_ID, PoisonStormDeckName, \
DuelistTobichanName, TOBICHAN_PIC, \
PRIZES_6, NONE, NONE, \
MUSIC_DUEL_THEME_GR_LEADER, DUELIST_INTRO_GHOST_MASTER, COIN_LUGIA
db DECK_NONE ; end

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1060,7 +1060,7 @@ HandleAttachedEnergyMenuInput:
call DoFrame
call HandleCardListInput
jr nc, .wait_input
cp $ff ; B pressed?
cp MENU_CANCEL ; B pressed?
jr z, .return_carry
ld a, [wcbeb]
or a
@@ -1116,7 +1116,7 @@ DuelMenu_Attack:
jr nz, .display_selected_attack_info
call HandleMenuInput
jr nc, .wait_for_input
cp -1 ; was B pressed?
cp MENU_CANCEL ; was B pressed?
jp z, PrintDuelMenuAndHandleInput
ld [wSelectedDuelSubMenuItem], a
call CheckIfEnoughEnergiesToAttack
@@ -2844,7 +2844,7 @@ CardListItemSelectionMenu:
call DoFrame
call HandleMenuInput
jr nc, .wait_a_or_b
cp -1
cp MENU_CANCEL
jr z, .b_pressed
; A pressed
or a
@@ -2866,7 +2866,7 @@ CardListParameters:
; return carry if any of the buttons is pressed, and load the graphics
; of the card pointed to by the cursor whenever a d-pad key is released.
; also return $ff unto hCurScrollMenuItem if B is pressed.
; also return MENU_CANCEL unto hCurScrollMenuItem if B is pressed.
CardListFunction:
ldh a, [hKeysPressed]
bit B_PAD_B, a
@@ -2878,7 +2878,7 @@ CardListFunction:
jr nz, .reload_card_image ; jump if the PAD_CTRL_PAD key was released this frame
ret
.exit
ld a, $ff
ld a, MENU_CANCEL
ldh [hCurScrollMenuItem], a
.action_button
scf
@@ -4215,7 +4215,7 @@ DisplayPlayAreaScreen:
add c
ldh [hTempPlayAreaLocation_ff9d], a
ldh a, [hCurScrollMenuItem]
cp $ff
cp MENU_CANCEL
jr z, .asm_60b5
ldh a, [hTempPlayAreaLocation_ff9d]
add DUELVARS_ARENA_CARD_HP
@@ -4250,7 +4250,7 @@ PlayAreaScreenMenuFunction:
ret z
bit B_PAD_B, a
jr z, .start_or_a
ld a, $ff
ld a, MENU_CANCEL
ldh [hCurScrollMenuItem], a
.start_or_a
scf
@@ -4911,25 +4911,25 @@ DisplayPlayAreaScreenToUsePkmnPower:
xor a
ld [wSelectedDuelSubMenuItem], a
.asm_6435
.start
call .DrawScreen
ld hl, PlayAreaScreenMenuParameters_ActivePokemonIncluded
ld a, [wSelectedDuelSubMenuItem]
call InitializeMenuParameters
ld a, [wNumPlayAreaItems]
ld [wNumScrollMenuItems], a
.asm_6447
.wait_input
call DoFrame
call HandleMenuInput
ldh [hTempPlayAreaLocation_ff9d], a
ld [wHUDEnergyAndHPBarsX], a
jr nc, .asm_6447
cp $ff
jr z, .asm_649b
ld [wCurPlayAreaSlot], a
jr nc, .wait_input
cp MENU_CANCEL
jr z, .cancel
ld [wSelectedDuelSubMenuItem], a
ldh a, [hKeysPressed]
and PAD_START
jr nz, .asm_649d
jr nz, .open_card_page
ldh a, [hCurScrollMenuItem]
add a
ld e, a
@@ -4938,7 +4938,7 @@ DisplayPlayAreaScreenToUsePkmnPower:
add hl, de
ld a, [hld]
cp $04
jr nz, .asm_6447
jr nz, .wait_input
ld a, [hl]
ldh [hTempCardIndex_ff98], a
ld d, a
@@ -4946,31 +4946,31 @@ DisplayPlayAreaScreenToUsePkmnPower:
call CopyAttackDataAndDamage_FromDeckIndex
ld a, EFFECTCMDTYPE_INITIAL_EFFECT_1
call TryExecuteEffectCommandFunction
jr nc, .asm_648c
jr nc, .use_prompt
ldtx hl, PokemonPowerSelectNotRequiredText
farcall DisplayUsePokemonPowerScreen
call WaitForWideTextBoxInput
jp .asm_6435
.asm_648c
jp .start
.use_prompt
ldtx hl, UseThisPokemonPowerPromptText
farcall DisplayUsePokemonPowerScreen
call YesOrNoMenu
jp c, .asm_6435
jp c, .start
ldh a, [hTempCardIndex_ff98]
ldh [hTemp_ffa0], a
or a
ret
.asm_649b
.cancel
scf
ret
.asm_649d
.open_card_page
ldh a, [hCurScrollMenuItem]
add DUELVARS_ARENA_CARD
get_turn_duelist_var
call GetCardIDFromDeckIndex
call LoadCardDataToBuffer1_FromCardID
call OpenCardPage_FromCheckPlayArea
jp .asm_6435
jp .start
.DrawScreen:
call ZeroObjectPositionsAndToggleOAMCopy
@@ -4983,11 +4983,11 @@ DisplayPlayAreaScreenToUsePkmnPower:
get_turn_duelist_var
ld c, a
ld b, $00
.asm_64ca
.loop_play_area
push hl
push bc
ld a, b
ld [wHUDEnergyAndHPBarsX], a
ld [wCurPlayAreaSlot], a
ld a, b
add a
add b
@@ -5005,7 +5005,7 @@ DisplayPlayAreaScreenToUsePkmnPower:
pop hl
inc b
dec c
jr nz, .asm_64ca
jr nz, .loop_play_area
ld a, b
ld [wNumPlayAreaItems], a
call EnableLCD

View File

@@ -2177,7 +2177,7 @@ HandlePrizeCardPlayerSelection:
.read_input
call HandleMultiDirectionalMenu
jr nc, .loop
cp $ff
cp MENU_CANCEL
jr z, .loop
call ZeroObjectPositionsAndToggleOAMCopy_Bank02
ld a, [wMultiDirectionalMenuCursorPosition]
@@ -2503,7 +2503,7 @@ DeckSelectionMenu:
call HandleMenuInput
jr nc, .loop_input
ldh a, [hCurScrollMenuItem]
cp $ff
cp MENU_CANCEL
ret z ; B btn returns
; A btn pressed on a deck
ld [wCurDeck], a
@@ -2596,7 +2596,7 @@ DeckSelectionSubMenu:
call DoFrame
call HandleCheckMenuInput
jp nc, .loop_input
cp $ff
cp MENU_CANCEL
jr nz, .option_selected
; B btn pressed
; erase cursor and go back
@@ -3585,7 +3585,7 @@ HandleDeckBuildScreen:
call HandleCardSelectionInput
jr nc, .wait_input
ld a, [hCurMenuItem]
cp $ff
cp MENU_CANCEL
jp z, OpenDeckConfigurationMenu
.jump_to_list
@@ -3639,7 +3639,7 @@ HandleDeckBuildScreen:
ld hl, wScrollMenuScrollOffset
add [hl]
jr nz, .asm_96a0
ld a, $ff
ld a, MENU_CANCEL
ld [hCurMenuItem], a
ld a, MENU_CANCEL
call PlaySFXConfirmOrCancel
@@ -3686,7 +3686,7 @@ HandleDeckBuildScreen:
ld a, [wTempCardTypeFilter]
ld [wTempCurMenuItem], a
ld a, [hCurMenuItem]
cp $ff
cp MENU_CANCEL
jr nz, .open_card_page
ld hl, FiltersCardSelectionParams
call InitializeScrollMenuParameters
@@ -3731,7 +3731,7 @@ HandleDeckConfigurationMenu:
call HandleMultiDirectionalMenu
jr nc, .do_frame
ld [wd11d], a
cp $ff
cp MENU_CANCEL
jr nz, .asm_9769
.draw_icons
call DrawCardTypeIconsAndPrintCardCounts
@@ -5040,9 +5040,9 @@ HandleCardSelectionInput:
and PAD_A
jr nz, ConfirmSelectionAndReturnCarry
; b button
ld a, -1
ld a, MENU_CANCEL
ld [hCurMenuItem], a
call PlaySFXConfirmOrCancel ; MENU_CANCEL
call PlaySFXConfirmOrCancel
scf
ret
@@ -5108,7 +5108,7 @@ DrawHorizontalListCursor_Visible:
; returns carry if a selection was made
; (either selected card or cancelled)
; outputs in a the list index if selection was made
; or $ff if operation was cancelled
; or MENU_CANCEL if operation was cancelled
HandleScrollListInput:
xor a ; FALSE
ld [wMenuInputSFX], a
@@ -5227,9 +5227,9 @@ HandleScrollListInput:
jr z, .check_sfx
and PAD_A
jr nz, .selected
ld a, -1
ld a, MENU_CANCEL
ld [hCurMenuItem], a
call PlaySFXConfirmOrCancel ; MENU_CANCEL
call PlaySFXConfirmOrCancel
scf
ret
@@ -5769,7 +5769,7 @@ HandleDeckConfirmationMenu:
.selection_made
ld a, [hCurMenuItem]
cp $ff
cp MENU_CANCEL
ret z ; operation cancelled
jr .selected_card
@@ -6391,7 +6391,7 @@ HandleGiftCenterSendCardsMenu:
call HandleMultiDirectionalMenu
jr nc, .loop_input
ld [wd11d], a
cp $ff
cp MENU_CANCEL
jr nz, .confirm
call DrawCardTypeIconsAndPrintCardCounts
ld a, [wTempCurMenuItem]
@@ -6490,7 +6490,7 @@ HandleBlackBoxSendCardsMenu:
call HandleMultiDirectionalMenu
jr nc, .loop_input
ld [wd11d], a
cp $ff
cp MENU_CANCEL
jr nz, .confirm
call DrawCardTypeIconsAndPrintCardCounts
ld a, [wTempCurMenuItem]
@@ -6547,7 +6547,7 @@ HandlePlayersCardsScreen:
jr z, .check_d_down
ld [wCurCardTypeFilter], a
ld hl, wScrollMenuScrollOffset
ld [hl], $00
ld [hl], 0
call PrintFilteredCardSelectionList
ld hl, hffbb
@@ -6569,7 +6569,7 @@ HandlePlayersCardsScreen:
call HandleCardSelectionInput
jr nc, .wait_input
ld a, [hCurMenuItem]
cp $ff ; cancelled
cp MENU_CANCEL
jr nz, .jump_to_list
ret
@@ -6606,7 +6606,7 @@ HandlePlayersCardsScreen:
ld hl, wScrollMenuScrollOffset
add [hl]
jr nz, .asm_a825
ld a, $ff
ld a, MENU_CANCEL
ld [hCurMenuItem], a
jr .selection_made
@@ -6657,7 +6657,7 @@ HandlePlayersCardsScreen:
ld a, [wTempCardTypeFilter]
ld [wTempCurMenuItem], a
ld a, [hCurMenuItem]
cp $ff
cp MENU_CANCEL
jr nz, .open_card_page
ld hl, FiltersCardSelectionParams
call InitializeScrollMenuParameters
@@ -7846,7 +7846,7 @@ CardAlbum:
farcall HandleScrollMenu
jp nc, .loop_input ; can be jr
ld a, [hCurMenuItem]
cp $ff
cp MENU_CANCEL
ret z ; exit
; selected a Booster Pack
@@ -7959,7 +7959,7 @@ CardAlbum:
ld a, [wCurScrollMenuItem]
ld [wTempCurMenuItem], a
ld a, [hCurMenuItem]
cp $ff
cp MENU_CANCEL
jr nz, .open_card_page
ld a, [wTempScrollMenuScrollOffset]
ld [wScrollMenuScrollOffset], a
@@ -8263,7 +8263,7 @@ PrinterMenu_PokemonCards:
jr z, .handle_input
ld [wCurCardTypeFilter], a
ld hl, wScrollMenuScrollOffset
ld [hl], $00
ld [hl], 0
call PrintFilteredCardSelectionList
ld hl, hffbb
ld [hl], $01
@@ -8283,7 +8283,7 @@ PrinterMenu_PokemonCards:
call HandleCardSelectionInput
jr nc, .loop_frame_1
ld a, [hCurMenuItem]
cp $ff
cp MENU_CANCEL
jr nz, .asm_b348
ret
@@ -8321,7 +8321,7 @@ PrinterMenu_PokemonCards:
ld hl, wScrollMenuScrollOffset
add [hl]
jr nz, .asm_b38e
ld a, $ff
ld a, MENU_CANCEL
ld [hCurMenuItem], a
jr .asm_b3e7
.asm_b38e
@@ -8373,7 +8373,7 @@ PrinterMenu_PokemonCards:
ld a, [wTempCardTypeFilter]
ld [wTempCurMenuItem], a
ld a, [hCurMenuItem]
cp $ff
cp MENU_CANCEL
jr nz, .asm_b40c
ld hl, FiltersCardSelectionParams
@@ -8496,7 +8496,7 @@ PrinterMenu:
call HandleMenuInput
jr nc, .loop_input
ldh a, [hCurScrollMenuItem]
cp $ff
cp MENU_CANCEL
call z, .QuitPrint
ld [wSelectedPrinterMenuItem], a
ld hl, .MenuFunctionTable
@@ -8533,7 +8533,7 @@ PrinterMenu:
call HandleCardSelectionInput
jr nc, .loop_input_quality
ld a, [hCurMenuItem]
cp $ff ; cancel
cp MENU_CANCEL
jr z, .re_draw_menu
call EnableSRAM
ld [sPrinterContrastLevel], a
@@ -8850,7 +8850,7 @@ GiftCenter_ReceiveCards:
ld a, [wTempCardTypeFilter]
ld [wTempCurMenuItem], a
ld a, [hCurMenuItem]
cp $ff
cp MENU_CANCEL
jr nz, .open_card_page
ld hl, wNameBuffer
ld de, wDefaultText
@@ -9059,7 +9059,7 @@ HandleGiftCenter::
ld [wTxRam2 + 1], a
ret
.quit
ld a, $ff
ld a, MENU_CANCEL
ld [wSelectedGiftCenterMenuItem], a
ret
@@ -9155,7 +9155,7 @@ DeckDiagnosisResult:
ld a, [wCurScrollMenuItem]
ld [wTempCurMenuItem], a
ld a, [hCurMenuItem]
cp $ff
cp MENU_CANCEL
jr nz, .open_card_page
ret ; exit menu

View File

@@ -3736,26 +3736,26 @@ CheckDuelDeckRequirementWithNPCDeckID_TxRam2:
ret
DuelRequirementFunctionMap:
key_func DUEL_REQUIREMENT_MIYUKI, DuelMiyukiRequirement
key_func DUEL_REQUIREMENT_RENNA, DuelRennaRequirement
key_func DUEL_REQUIREMENT_ICHIKAWA, DuelIchikawaRequirement
key_func DUEL_REQUIREMENT_YUKI, DuelYukiRequirement
key_func DUEL_REQUIREMENT_SHOKO, DuelShokoRequirement
key_func DUEL_REQUIREMENT_MIYAJIMA, DuelMiyajimaRequirement
key_func DUEL_REQUIREMENT_SENTA, DuelSentaRequirement
key_func DUEL_REQUIREMENT_GODA, DuelGodaRequirement
key_func DUEL_REQUIREMENT_GRACE, DuelGraceRequirement
key_func DUEL_REQUIREMENT_MIWA, DuelMiwaRequirement
key_func DUEL_REQUIREMENT_YOSUKE, DuelYosukeRequirement
key_func DUEL_REQUIREMENT_RYOKO, DuelRyokoRequirement
key_func DUEL_REQUIREMENT_MIYUKI, DuelMiyukiRequirement
key_func DUEL_REQUIREMENT_RENNA, DuelRennaRequirement
key_func DUEL_REQUIREMENT_ICHIKAWA, DuelIchikawaRequirement
key_func DUEL_REQUIREMENT_YUKI, DuelYukiRequirement
key_func DUEL_REQUIREMENT_SHOKO, DuelShokoRequirement
key_func DUEL_REQUIREMENT_MIYAJIMA, DuelMiyajimaRequirement
key_func DUEL_REQUIREMENT_SENTA, DuelSentaRequirement
key_func DUEL_REQUIREMENT_GODA, DuelGodaRequirement
key_func DUEL_REQUIREMENT_GRACE, DuelGraceRequirement
key_func DUEL_REQUIREMENT_MIWA, DuelMiwaRequirement
key_func DUEL_REQUIREMENT_YOSUKE, DuelYosukeRequirement
key_func DUEL_REQUIREMENT_RYOKO, DuelRyokoRequirement
key_func DUEL_REQUIREMENT_NISHIJIMA_REROLL, DuelNishijimaRequirement_Reroll
key_func DUEL_REQUIREMENT_NISHIJIMA_USE, DuelNishijimaRequirement_Use
key_func DUEL_REQUIREMENT_ISHII_REROLL, DuelIshiiRequirement_Reroll
key_func DUEL_REQUIREMENT_ISHII_USE, DuelIshiiRequirement_Use
key_func DUEL_REQUIREMENT_SAMEJIMA_REROLL, DuelSamejimaRequirement_Reroll
key_func DUEL_REQUIREMENT_SAMEJIMA_USE, DuelSamejimaRequirement_Use
key_func DUEL_REQUIREMENT_KANZAKI, DuelKanzakiRequirement
db $ff
key_func DUEL_REQUIREMENT_NISHIJIMA_USE, DuelNishijimaRequirement_Use
key_func DUEL_REQUIREMENT_ISHII_REROLL, DuelIshiiRequirement_Reroll
key_func DUEL_REQUIREMENT_ISHII_USE, DuelIshiiRequirement_Use
key_func DUEL_REQUIREMENT_SAMEJIMA_REROLL, DuelSamejimaRequirement_Reroll
key_func DUEL_REQUIREMENT_SAMEJIMA_USE, DuelSamejimaRequirement_Use
key_func DUEL_REQUIREMENT_KANZAKI, DuelKanzakiRequirement
key_funcs_end
ScriptCommand_GetActiveNPCOppositeDirection:
ld a, [wScriptNPC]
@@ -4540,7 +4540,7 @@ SetChallengeMachineOpponents:
.init
ld e, NUM_CHALLENGE_MACHINE_ROUNDS_PER_SET
ld d, VAR_CHALLENGEMACHINE_ROUND1_OPPONENT_DECK_ID
ld c, $ff
ld c, DECK_NONE
.loop_init
ld a, d
call SetVarValue
@@ -4603,7 +4603,7 @@ SetChallengeMachineOpponents:
.loop_check
ld a, e
call GetVarValue
cp $ff
cp DECK_NONE
jr z, .done
call GetNPCByDeck
inc e
@@ -4797,7 +4797,7 @@ DebugBackgroundFontViewerScreen:
ret
; display player's portrait to left, selected npc's to right
DebugBGPortraitViewerScreen:
DebugBackgroundPortraitViewerScreen:
push af
push bc
push de
@@ -4808,8 +4808,8 @@ DebugBGPortraitViewerScreen:
; player's
lb bc, 4, 5
call DrawPlayerPortrait
; npc's
ld h, RONALD_PIC ; starting npc
; npc's, starting with Ronald's
ld h, RONALD_PIC
ld l, EMOTION_NORMAL
ld b, TRUE ; unused?
ld d, 10
@@ -4936,7 +4936,9 @@ DebugBGPortraitViewerScreen:
pop af
ret
DebugObjViewerScreen:
; browse from NPC_MARK to NPC_ISHIHARAS_VILLA_GR_GAL (missing the last few objects)
; on a random background from OVERWORLD_MAP_GFX_TCG to MAP_GFX_GRASS_CLUB_ENTRANCE
DebugNPCObjectViewerScreen:
push af
push bc
push de
@@ -4971,6 +4973,7 @@ DebugObjViewerScreen:
pop af
ret
; starting with Mark's
.Viewer:
ld h, NPC_MARK
jr .draw
@@ -5010,25 +5013,26 @@ DebugObjViewerScreen:
inc h
jr .draw ; unnecessary jr
; 4-way sprite turnaround with NPC_* ID
.draw
farcall InitOWObjects
ld a, h
ld e, 64
ld e, 64 ; y
push af
ld a, SFX_CURSOR
call CallPlaySFX
pop af
push hl
ld d, 24
ld d, 24 ; x
ld b, NORTH
farcall LoadOWObject
ld d, 56
ld d, 24 + 32 ; x
ld b, EAST
farcall LoadOWObject
ld d, 88
ld d, 24 + 32*2 ; x
ld b, SOUTH
farcall LoadOWObject
ld d, 120
ld d, 24 + 32*3 ; x
ld b, WEST
farcall LoadOWObject
pop hl
@@ -5050,13 +5054,13 @@ DebugObjViewerScreen:
pop af
jr .wait_input
DebugMenuEffectViewerScreen:
DebugEffectViewerScreen:
farcall Func_102a4
call DebugMenuEffectViewer
call DebugEffectViewer
farcall Func_102c4
ret
DebugMenuEffectViewer:
DebugEffectViewer:
push af
push bc
push de
@@ -5076,9 +5080,9 @@ DebugMenuEffectViewer:
lb de, 0, 12
lb bc, 20, 6
call DrawRegularTextBoxVRAM0
call DebugEffectViewer_PlaceTextItems
call ChangeAnimationPlayerSideOnStartPress.initialize
call ChangeEffectNumberOnDpadPress.initialize
call .PrintMenu
call .InitSides
call .InitScroll
call PauseSong_SaveState
push af
ld a, MUSIC_DUEL_THEME_CLUB_MEMBER
@@ -5089,17 +5093,18 @@ DebugMenuEffectViewer:
ld a, NUM_COINS
call Random
ld [wOppCoin], a
.button_handling_loop
.wait_input
call DoFrame
call CancelAnimationOnBPress
call ChangeAnimationPlayerSideOnStartPress
call ChangeEffectNumberOnDpadPress
call PlayAnimationOnAPress
call DebugPrintAnimBufferCurPosAndSize
call ChangeDebugViewerStateText
call .StopAnimationOnBPress
call .SwapSidesOnStartPress
call .ScrollOnDpadPress
call .PlayAnimationOnAPress
call .PrintAnimBufferCurPosAndSize
call .PrintViewerState
ldh a, [hKeysPressed]
and PAD_SELECT
jr z, .button_handling_loop
jr z, .wait_input
; exit on select press
call FinishQueuedAnimations
farcall StartFadeToWhite
farcall WaitPalFading_Bank07
@@ -5111,7 +5116,7 @@ DebugMenuEffectViewer:
pop af
ret
PlayAnimationOnAPress:
.PlayAnimationOnAPress:
ldh a, [hKeysPressed]
and PAD_A
ret z
@@ -5146,7 +5151,7 @@ PlayAnimationOnAPress:
call LoadDuelAnimationToBuffer
ret
DebugEffectViewer_PlaceTextItems:
.PrintMenu:
ld hl, .text_items
call PlaceTextItemsVRAM0
ret
@@ -5158,7 +5163,7 @@ DebugEffectViewer_PlaceTextItems:
textitem 2, 13, DebugEffectViewerAnimationNumberText
textitems_end
ChangeAnimationPlayerSideOnStartPress:
.SwapSidesOnStartPress:
ldh a, [hKeysPressed]
and PAD_START
ret z
@@ -5171,12 +5176,14 @@ ChangeAnimationPlayerSideOnStartPress:
ldtx hl, DebugEffectViewerRightToLeftText
ld a, [wDebugAnimDuelistSide]
cp PLAYER_TURN
jr z, .asm_f361
.initialize
jr z, .apply_sides
.InitSides
ld b, PLAYER_TURN
ld c, DUEL_ANIM_SCREEN_MAIN_SCENE
ldtx hl, DebugEffectViewerLeftToRightText
.asm_f361
.apply_sides
ld a, b
ld [wDebugAnimDuelistSide], a
ld a, c
@@ -5185,36 +5192,39 @@ ChangeAnimationPlayerSideOnStartPress:
call InitTextPrinting_ProcessTextFromIDVRAM0
ret
ChangeEffectNumberOnDpadPress:
; scroll through DUEL_ANIM_* IDs
.ScrollOnDpadPress:
ldh a, [hDPadHeld]
and PAD_UP
jr z, .check_down
ld b, 10
jr .update_anim
jr .apply_scroll
.check_down
ldh a, [hDPadHeld]
and PAD_DOWN
jr z, .check_left
ld b, -10
jr .update_anim
jr .apply_scroll
.check_left
ldh a, [hDPadHeld]
and PAD_LEFT
jr z, .check_right
ld b, -1
jr .update_anim
jr .apply_scroll
.check_right
ldh a, [hDPadHeld]
and PAD_RIGHT
ret z
ld b, 1
jr .update_anim
.initialize
jr .apply_scroll
.InitScroll
ld b, 0
.update_anim
.apply_scroll
ld a, [wDebugSelectedAnimNumber]
add b
and $ff
and $ff ; can be or a
ld [wDebugSelectedAnimNumber], a
ld l, a
ld h, 0
@@ -5224,7 +5234,7 @@ ChangeEffectNumberOnDpadPress:
farcall PrintNumber
ret
CancelAnimationOnBPress:
.StopAnimationOnBPress:
ldh a, [hKeysPressed]
and PAD_B
ret z
@@ -5235,7 +5245,7 @@ CancelAnimationOnBPress:
call FinishQueuedAnimations
ret
DebugPrintAnimBufferCurPosAndSize:
.PrintAnimBufferCurPosAndSize:
push af
push bc
push de
@@ -5260,16 +5270,16 @@ DebugPrintAnimBufferCurPosAndSize:
pop af
ret
ChangeDebugViewerStateText:
.PrintViewerState:
push af
push bc
push de
push hl
call CheckAnyAnimationPlaying
ldtx hl, DebugEffectViewerPlayingStateText
jr c, .asm_f3fd
jr c, .print_state
ldtx hl, DebugEffectViewerStopStateText
.asm_f3fd
.print_state
lb de, 13, 13
call InitTextPrinting_ProcessTextFromIDVRAM0
pop hl

View File

@@ -82,11 +82,11 @@ StartUpDebugMenu::
key_func DEBUGMENU_POWER_ON, _CoreGameLoop
key_func DEBUGMENU_COIN, SetAllCoinsObtainedAndShowCoinMenu
key_func DEBUGMENU_CONFIG, DebugShowConfigMenu
key_func DEBUGMENU_EFFECT_VIEWER, DebugMenuEffectViewer
key_func DEBUGMENU_EFFECT_VIEWER, DebugEffectViewer
key_func DEBUGMENU_CREDITS, _PlayCredits
key_func DEBUGMENU_DUEL, StartDebugDuelVsRandomOpponent
key_func DEBUGMENU_SLOT, DebugSlotMachine
db $ff
key_funcs_end
SetAllCoinsObtainedAndShowCoinMenu:
call SetSpriteAnimationAndFadePalsFrameFunc
@@ -258,16 +258,16 @@ InGameDebugMenu:
.FunctionMap:
key_func INGAMEDEBUGMENU_BG_FONT_VIEWER, DebugBackgroundFontViewerScreen
key_func INGAMEDEBUGMENU_BG_PORTRAIT_VIEWER, DebugBGPortraitViewerScreen
key_func INGAMEDEBUGMENU_EFFECT_VIEWER, DebugMenuEffectViewerScreen
key_func INGAMEDEBUGMENU_OBJ_VIEWER, DebugObjViewerScreen
key_func INGAMEDEBUGMENU_BG_PORTRAIT_VIEWER, DebugBackgroundPortraitViewerScreen
key_func INGAMEDEBUGMENU_EFFECT_VIEWER, DebugEffectViewerScreen
key_func INGAMEDEBUGMENU_OBJ_VIEWER, DebugNPCObjectViewerScreen
key_func INGAMEDEBUGMENU_CLEAR_MAIL, InitializeMailboxWRAM
key_func INGAMEDEBUGMENU_CUP_BRACKET, DebugGrandMasterCupBracket
key_func INGAMEDEBUGMENU_SEND_MAIL, DebugSendMailScreen
key_func INGAMEDEBUGMENU_ADJUST_CHIPS, DebugAdjustChips
key_func INGAMEDEBUGMENU_ENTER_NAME, PlayerNameSelectionScreen
key_func INGAMEDEBUGMENU_CREDITS, DebugPlayCredits
db $ff
key_funcs_end
.ExitMenu:
farcall ShowNPCAnimsUnderMenuBox
@@ -1372,7 +1372,7 @@ HandlePauseMenu:
key_func PAUSEMENU_MINICOM, PauseMenuMinicomScreen
key_func PAUSEMENU_COIN, PauseMenuCoinScreen
key_func PAUSEMENU_CONFIG, PauseMenuConfigScreen
db $ff
key_funcs_end
.RestoreNPCs:
farcall ShowNPCAnimsUnderMenuBox
@@ -3352,7 +3352,7 @@ _PCMenu:
key_func PCMENU_DECK_DIAGNOSIS, .DeckDiagnosis
key_func PCMENU_GLOSSARY, .Glossary
key_func PCMENU_PRINTER, .Printer
db $ff ; end
key_funcs_end
.RestoreNPCs:
farcall ShowNPCAnimsUnderMenuBox
@@ -6149,7 +6149,7 @@ ShowProloguePortraitAndText:
key_func PROLOGUE_PLAYER_RECAP, .Player
key_func PROLOGUE_GR_INVASION, .GR
key_func PROLOGUE_PLAYER_TO_LAB, .Player
db $ff ; end
key_funcs_end
.Player:
lb bc, 7, 3

View File

@@ -5178,12 +5178,8 @@ ConvertHPToCounters:
pop bc
ret
; returns in a the result of
; dividing b by a, rounded down
; input:
; a = divisor
; b = dividend
CalculateBDividedByA_Bank5:
; returns a = floor(b / a)
CalculateBDividedByA_Bank05:
push bc
ld c, a
ld a, b
@@ -6236,7 +6232,7 @@ AIDecideBenchPokemonToSwitchTo:
.add_hp_score
ld b, a
ld a, 4
call CalculateBDividedByA_Bank5
call CalculateBDividedByA_Bank05
call ConvertHPToCounters
call AIEncourage

View File

@@ -2764,7 +2764,7 @@ HandleCardPopMenuInput:
jr nz, .set_carry
and PAD_B
ret z
ld a, $ff
ld a, MENU_CANCEL
ldh [hCurScrollMenuItem], a
.set_carry
scf
@@ -3351,7 +3351,7 @@ ViewCardPopRecords:
call DoFrame
call HandleMenuInput
jr nc, .loop_input
cp $ff
cp MENU_CANCEL
ret z
; selected a record entry
call .LoadRecord
@@ -3658,7 +3658,7 @@ ViewCardPopRecords:
and PAD_B
ret z
; cancel
ld a, $ff
ld a, MENU_CANCEL
ldh [hCurScrollMenuItem], a
.a_btn_or_start
scf
@@ -5676,7 +5676,7 @@ InputName:
.asm_1af3b
call HandleNamingScreenInput
jr nc, .loop
cp $ff
cp MENU_CANCEL
jr z, .remove_last_char
call SelectKeyboardItem
jr nc, .loop
@@ -5882,7 +5882,9 @@ ProcessTextWithUnderbar:
ret
.underbar_chars
db $57 ; "_"
PUSHC fullwidth
db CHARVAL("_", 1)
POPC
textfw "__________"
done
@@ -6713,7 +6715,7 @@ InputMultilineText:
.handle_input
call HandleNamingScreenInput
jr nc, .loop
cp $ff
cp MENU_CANCEL
jr z, .remove_last_char
call SelectKeyboardItem_Multiline
jr nc, .loop
@@ -7081,7 +7083,9 @@ ProcessMultilineInputWithUnderbar:
.loop_fill
ld [hl], TX_FULLWIDTH4
inc hl
ld [hl], $57 ; "_"
PUSHC fullwidth
ld [hl], CHARVAL("_", 1)
POPC
inc hl
dec c
dec c

View File

@@ -3055,7 +3055,7 @@ ReadOrInitSaveData:
.FunctionMap
key_func FALSE, .Initialize
key_func TRUE, .Read
db $ff ; end
key_funcs_end
.Initialize:
ld a, PLAYER_MALE
@@ -3378,7 +3378,7 @@ GiftCenter_ExecuteSelectedOption:
key_func GIFTCENTERMENU_RECEIVE_CARDS, .ReceiveCards
key_func GIFTCENTERMENU_SEND_DECK_CONFIGURATION, .SendDeckConfiguration
key_func GIFTCENTERMENU_RECEIVE_DECK_CONFIGURATION, .ReceiveDeckConfiguration
db $ff ; end
key_funcs_end
.SendCards:
farcall Func_1022a
@@ -5392,7 +5392,7 @@ CallMinicomMenuFunction:
key_func MINICOMMENU_DECK_SAVE_MACHINE, MinicomDeckSaveMachine
key_func MINICOMMENU_MAILBOX, MinicomMailbox
key_func MINICOMMENU_CARD_ALBUM, MinicomCardAlbum
db $ff
key_funcs_end
MinicomDeckSaveMachine:
farcall ClearSpriteAnimsAndSetInitialGraphicsConfiguration
@@ -6574,7 +6574,7 @@ MailboxSelectedMail_CallMappedFunction:
.function_map:
key_func MAILBOXMENU_READ, ReadMail
key_func MAILBOXMENU_DELETE, DeleteMail
db $ff
key_funcs_end
ReadMail:
call DrawReadMailScreenHeader
@@ -6636,11 +6636,11 @@ _ReadMail:
.read_mail_loop
; mail is terminated with MAIL_TERMINATOR ($ffff)
ld a, [hl]
cp $ff
cp LOW(MAIL_TERMINATOR)
jr nz, .print_body
inc hl
ld a, [hld]
cp $ff
cp HIGH(MAIL_TERMINATOR)
jr z, .done
.print_body
call PrintMailBodyPage
@@ -7648,7 +7648,7 @@ HandleIngameCardPop:
key_func SCRIPTED_CARD_POP_RONALD, IngameCardPop.Ronald
key_func SCRIPTED_CARD_POP_IMAKUNI, IngameCardPop.Imakuni_first
key_func SCRIPTED_RARE_CARD_POP_IMAKUNI, IngameCardPop.Imakuni_rare
db $ff
key_funcs_end
; dupe of Func_1f7f1
Func_1f81f:

View File

@@ -223,16 +223,45 @@ AIProcessHandTrainerCards:
; copies $ff-terminated list from hl to de
.CopyList:
.loop_copy
ld a, [hli]
ld [de], a
cp $ff
ret z
inc de
jr .loop_copy
; 0x20270
jr .CopyList
SECTION "Bank 8@4290", ROMX[$4290], BANK[$8]
; returns hl = floor(hl / 10)
CalculateWordTensDigit:
push bc
push de
ld bc, -10
ld de, -1
.loop
inc de
add hl, bc
jr c, .loop
ld h, d
ld l, e
pop de
pop bc
ret
; returns a = floor(b / a)
CalculateBDividedByA_Bank08:
push bc
ld c, a
ld a, b
ld b, c
ld c, 0
.loop
sub b
jr c, .done
inc c
jr .loop
.done
ld a, c
pop bc
ret
; makes AI use Potion card.
AIPlay_Potion:

File diff suppressed because it is too large Load Diff

View File

@@ -3346,7 +3346,7 @@ Func_2bc4f:
call HandleMenuInput
jp nc, .loop_input ; can be jr
ldh a, [hCurScrollMenuItem]
cp $ff
cp MENU_CANCEL
jr nz, .selected_deck
; player canceled selection
scf

View File

@@ -3441,7 +3441,7 @@ AICheckIfAttackIsHighRecoil:
ret
; for an HP-recovery effect (a = amount),
; set carry if that puts the card out of KO range of the defending Pokémon,
; set carry if that puts the active pkmn out of KO range of the defending pkmn,
; no carry otherwise
CheckIfRecoveryCanPreventKOByDefendingPokemon:
ld [wAITempHPRecoverAmount], a
@@ -4740,9 +4740,9 @@ HandleScrollMenu:
and PAD_A
jr nz, .asm_3ac12
; b button
ld a, -1
ld a, MENU_CANCEL
ld [hCurMenuItem], a
farcall PlaySFXConfirmOrCancel ; MENU_CANCEL
farcall PlaySFXConfirmOrCancel
scf
ret
@@ -7048,7 +7048,7 @@ _PrinterMenu_DeckConfiguration:
.loop_input
call HandleDeckMachineSelection
jr c, .start_selection
cp $ff
cp MENU_CANCEL
ret z
ld b, a
@@ -7435,7 +7435,7 @@ SendDeckConfigurationMenu:
.loop_input
call HandleDeckMachineSelection
jr c, .start_selection
cp $ff
cp MENU_CANCEL
jr nz, .get_deck_machine_slot
ld a, 1
or a
@@ -7492,7 +7492,7 @@ ReceiveDeckConfigurationMenu:
call InitDeckMachineDrawingParams
call HandleDeckMachineSelection
jr c, .start_selection
cp $ff
cp MENU_CANCEL
jr nz, .get_deck_machine_slot
ld a, 1
or a
@@ -7595,7 +7595,7 @@ OpenDeckSaveMachineFromDeckBuilding:
call InitDeckMachineDrawingParams
call HandleDeckMachineSelection
jr c, .wait_input
cp $ff
cp MENU_CANCEL
jr z, .cancel
ld b, a
ld a, [wScrollMenuScrollOffset]

View File

@@ -352,7 +352,7 @@ SetChallengeCupOpponents:
; init
ld e, NUM_CHALLENGE_CUP_ROUNDS
ld d, VAR_CHALLENGECUP_ROUND1_OPPONENT_DECK_ID
ld c, $ff
ld c, DECK_NONE
.loop_init
ld a, d
farcall SetVarValue
@@ -423,7 +423,7 @@ SetChallengeCupOpponents:
.loop_check
ld a, e
farcall GetVarValue
cp $ff
cp DECK_NONE
jr z, .done
farcall GetNPCByDeck
inc e
@@ -487,7 +487,7 @@ SetGrandMasterCupOpponents:
; init
ld e, NUM_GRANDMASTERCUP_NPC_COMPETITORS
ld d, VAR_GRANDMASTERCUP_ROUND1_NPC1_DECK_ID
ld c, $ff
ld c, DECK_NONE
.loop_init
ld a, d
farcall SetVarValue
@@ -550,7 +550,7 @@ SetGrandMasterCupOpponents:
.loop_check
ld a, e
farcall GetVarValue
cp $ff
cp DECK_NONE
jr z, .done
farcall GetNPCByDeck
inc e

View File

@@ -50,6 +50,6 @@ RunCreditsCommands:
key_func CREDITSCMD_LOAD_OW_OBJ, CreditsCmd_LoadOWObject
key_func CREDITSCMD_LOAD_OW_OBJ_IN_MAP, CreditsCmd_LoadOWObjectInMap
key_func CREDITSCMD_SHOW_TILE, CreditsCmd_ShowTile
db $ff ; end
key_funcs_end
INCLUDE "data/credits.asm"

View File

@@ -1034,7 +1034,7 @@ HandleDefendingPokemonAttackSelection:
jr nz, .open_atk_page
call HandleMenuInput
jr nc, .loop_input
cp -1
cp MENU_CANCEL
jr z, .loop_input
ldh a, [hCurScrollMenuItem]
@@ -2306,7 +2306,7 @@ EnergyTransEffect:
call DoFrame
call HandleMenuInput
jr nc, .loop_input_take
cp -1 ; b press?
cp MENU_CANCEL ; b press?
ret z
; a press
@@ -2342,7 +2342,7 @@ EnergyTransEffect:
call DoFrame
call HandleMenuInput
jr nc, .loop_input_put
cp -1 ; b press?
cp MENU_CANCEL ; b press?
jr z, .remove_symbol
; a press
@@ -5516,7 +5516,7 @@ StrangeBehavior_SelectAndSwapEffect:
call DoFrame
call HandleMenuInput
jr nc, .loop_input
cp -1
cp MENU_CANCEL
ret z ; return when B button is pressed
ldh [hCurSelectionItem], a
@@ -6688,7 +6688,7 @@ Gigashock_PlayerSelectEffect:
call DoFrame
call HandleMenuInput
jr nc, .loop_input
cp -1
cp MENU_CANCEL
jr z, .try_cancel
ld [wCurGigashockItem], a
@@ -10495,7 +10495,7 @@ SummonMinions_PlayerSelectEffect:
call YesOrNoMenuWithText_SetCursorToYes
ret c ; "no" selected
ld a, $ff
ld [$cd20], a
ld [wCardSearchResult], a
ldtx hl, ChooseBasicPokemonText
ldtx de, DuelistDeckText
farcall SelectCardSearchTarget
@@ -10533,7 +10533,7 @@ SummonMinions_PlayerSelectEffect:
.loop_input
bank1call DisplayCardList
jr nc, .check_is_basic
ld a, [$cd20]
ld a, [wCardSearchResult]
or a
jr nz, .finish

View File

@@ -3997,7 +3997,7 @@ BenchMultiSelectMenuPlayerSelection:
call DoFrame
call HandleMenuInput
jr nc, .loop_input
cp -1
cp MENU_CANCEL
jr nz, .selected_pkmn
; B was pressed
call .UndoLastSelection
@@ -4261,7 +4261,7 @@ RockBlast_PlayerSelectEffect:
call DoFrame
call HandleMenuInput
jr nc, .loop_input
cp -1
cp MENU_CANCEL
jr nz, .selected_pkmn
; B was pressed
call UndoLastRockBlastSelection
@@ -5082,7 +5082,7 @@ BurningFire_PlayerSelectEffect:
bank1call HasAlivePokemonInPlayArea
.play_area_selection
bank1call OpenPlayAreaScreenForSelection
cp -1 ; B pressed?
cp MENU_CANCEL ; B pressed?
jr z, .done_selecting_energies
; selected a pkmn, does it have Fire energies?
ldh [hTempPlayAreaLocation_ff9d], a
@@ -5937,7 +5937,7 @@ EarthWave_PlayerSelectEffect:
ld [wCurGigashockItem], a
jr nc, .loop_input
ldh a, [hCurScrollMenuItem]
cp -1
cp MENU_CANCEL
jr z, .try_cancel
call .CheckIfChosenAlready

View File

@@ -224,7 +224,7 @@ HandleGameCenterPrizeExchangeMenu:
key_func GAMECENTERPRIZE_JIGGLYPUFF_COIN, .JigglypuffCoin
key_func GAMECENTERPRIZE_1_PRESENT_PACK, .PresentPack1
key_func GAMECENTERPRIZE_3_PRESENT_PACKS, .PresentPacks3
db $ff
key_funcs_end
.Venusaur:
ld de, VENUSAUR_LV64

View File

@@ -31,7 +31,7 @@ Glossary:
call DoFrame
call HandleMenuInput
jr nc, .loop_input
cp -1
cp MENU_CANCEL
ret z ; return
; selection was made
@@ -83,7 +83,7 @@ Glossary:
call nz, .Func_18763
farcall HandleMultiDirectionalMenu
jr nc, .topic_menu
cp $ff
cp MENU_CANCEL
jr nz, .selected_topic
farcall ZeroObjectPositionsAndToggleOAMCopy_Bank02
ldh a, [hCurScrollMenuItem]

View File

@@ -588,7 +588,7 @@ CardListMenuFunction::
scf
ret
.pressed_b
ld a, $ff
ld a, MENU_CANCEL
ldh [hCurScrollMenuItem], a
scf
ret

View File

@@ -83,7 +83,7 @@ Serial_Func_0be6::
ld [wcba3], a
ld [wSerialRecvIndex], a
ld [wSerialRecvCounter], a
ld [wSerialLastReadCA], a
ld [wSerialLastReadEscapeByte], a
ld a, e
cp SERIAL_OP_MASTER_TCG2
jr nz, .got_mode
@@ -134,7 +134,7 @@ SerialHandler:
ld [wSerialRecvCounter], a
ldh a, [rSB]
ld [wSerialRecvBuf], a
ld a, $ac
ld a, SERIAL_OP_DATA_END
ldh [rSB], a
ld a, [wSerialRecvBuf]
cp SERIAL_PEER_MASTER_TCG2 ; if [wSerialRecvBuf] != $21, use external clock
@@ -154,14 +154,14 @@ SerialHandler:
; handles a byte read from serial transfer by decoding it and storing it into
; the receive buffer
SerialHandleRecv:
ld hl, wSerialLastReadCA
ld hl, wSerialLastReadEscapeByte
ld e, [hl]
dec e
jr z, .last_was_ca
cp $ac
ret z ; return if read_data == $ac
cp $ca
jr z, .read_ca
jr z, .last_was_escape ; wSerialLastReadEscapeByte was TRUE
cp SERIAL_OP_DATA_END
ret z ; read end byte
cp SERIAL_OP_DATA_ESCAPE
jr z, .read_escape
or a
jr z, .read_00_or_ff
cp $ff
@@ -170,12 +170,12 @@ SerialHandleRecv:
ld hl, wSerialFlags
set 6, [hl]
ret
.read_ca
inc [hl] ; inc [wSerialLastReadCA]
.read_escape
inc [hl] ; inc [wSerialLastReadEscapeByte]
ret
.last_was_ca
; if last byte read was $ca, flip all bits of data received
ld [hl], $0
.last_was_escape
; if last byte read was escape, flip all bits of data received
ld [hl], FALSE ; reset wSerialLastReadEscapeByte
cpl
jr .handle_byte
.read_data
@@ -224,8 +224,8 @@ SerialHandleSend:
ld a, [hl]
or a
jr nz, .send_buf
; no more data--send $ac to indicate this
ld a, $ac
; no more data, send end byte
ld a, SERIAL_OP_DATA_END
ret
.send_saved
ld a, [hl]
@@ -246,9 +246,9 @@ SerialHandleSend:
ld a, [hl]
; flip top2 bits of sent data
xor $c0
cp $ac
cp SERIAL_OP_DATA_END
jr z, .send_escaped
cp $ca
cp SERIAL_OP_DATA_ESCAPE
jr z, .send_escaped
cp $ff
jr z, .send_escaped
@@ -256,12 +256,12 @@ SerialHandleSend:
jr z, .send_escaped
ret
.send_escaped
; escape tricky data by prefixing it with $ca and flipping all bits
; escape tricky data by prefixing it with escape byte and flipping all bits
; instead of just top2
xor $c0
cpl
ld [wSerialSendSave], a
ld a, $ca
ld a, SERIAL_OP_DATA_ESCAPE
ret
; store byte at a in wSerialSendBuf for sending

View File

@@ -1,4 +1,5 @@
INCLUDE "macros/audio.asm"
INCLUDE "macros/asserts.asm"
INCLUDE "macros/constants.asm"
INCLUDE "macros/code.asm"
INCLUDE "macros/data.asm"

51
src/macros/asserts.asm Normal file
View File

@@ -0,0 +1,51 @@
; Macros to verify assumptions about the data or code
; MACRO? _redef_current_label
; IF DEF(\1)
; PURGE \1
; ENDC
; IF _NARG > 2
; DEF \1 EQUS "\3"
; ELIF STRLEN(#__SCOPE__)
; IF {{__SCOPE__}} - @ == 0
; DEF \1 EQUS #{__SCOPE__}
; ENDC
; ENDC
; IF !DEF(\1)
; DEF \1 EQUS \2
; {\1}:
; ENDC
; ENDM
; MACRO? table_width
; DEF CURRENT_TABLE_WIDTH = \1
; SHIFT
; _redef_current_label CURRENT_TABLE_START, "._table_width\@", \#
; ENDM
; MACRO? assert_table_length
; DEF w = \1
; DEF x = w * CURRENT_TABLE_WIDTH
; DEF y = @ - {CURRENT_TABLE_START}
; ASSERT x == y, \
; "{CURRENT_TABLE_START}: expected {d:w} entries, each {d:CURRENT_TABLE_WIDTH} " ++ \
; "bytes, for {d:x} total; but got {d:y} bytes"
; ENDM
MACRO? deck_list_start
DEF x = 0
ENDM
; \1 = card ID
; \2 = quantity
MACRO? card_item
DEF x += \2
db \2
dw \1
ENDM
MACRO? deck_list_end
db 0 ; end of list
ASSERT DECK_SIZE == x, \
"deck list: expected {d:DECK_SIZE} cards, got {d:x}"
ENDM

View File

@@ -185,3 +185,7 @@ MACRO? key_func
db \1 ; key
dba \2 ; func
ENDM
MACRO? key_funcs_end
db $ff
ENDM

View File

@@ -344,7 +344,7 @@ wcb80:: ; cb7a
wSerialSendBuf:: ; cb7b
ds $20
wSerialLastReadCA:: ; cb9b
wSerialLastReadEscapeByte:: ; cb9b
ds $1
wSerialRecvCounter:: ; cb9c
@@ -905,6 +905,8 @@ wOpponentTurnEnded:: ; cd1e
wNumberOfCardsToOrder:: ; cd1f
ds $1
; 0 if found, -1 if not found
wCardSearchResult:: ; cd20
ds $1
wCardSearchFunc:: ; cd21