mirror of
https://github.com/pret/poketcg2.git
synced 2026-10-01 05:27:15 -05:00
Refactor Challenge Machine functions
This commit is contained in:
@@ -29,6 +29,15 @@ DEF TURN_PLAYER_TIED EQU $3
|
||||
DEF DUEL_WIN EQU $0
|
||||
DEF DUEL_LOSS EQU $1
|
||||
|
||||
; wChallengeMachineDuelResult constants
|
||||
DEF CHALLENGE_MACHINE_DUEL_WIN EQU TURN_PLAYER_WON ; 1
|
||||
DEF CHALLENGE_MACHINE_DUEL_LOSS_OR_QUIT EQU TURN_PLAYER_LOST ; 2
|
||||
|
||||
; challenge machines
|
||||
DEF NUM_CHALLENGE_MACHINE_ROUNDS_PER_SET EQU 5
|
||||
DEF NUM_TCG_CHALLENGE_MACHINE_OPPONENT_POOL EQU 49
|
||||
DEF NUM_GR_CHALLENGE_MACHINE_OPPONENT_POOL EQU 37
|
||||
|
||||
; wPlayerDuelVariables or wOpponentDuelVariables constants
|
||||
DEF DUELVARS_CARD_LOCATIONS EQUS "LOW(wPlayerCardLocations)" ; 00
|
||||
DEF DUELVARS_PRIZE_CARDS EQUS "LOW(wPlayerPrizeCards)" ; 3c
|
||||
|
||||
@@ -1,64 +1,64 @@
|
||||
const_def
|
||||
const VAR_00 ; $00
|
||||
const VAR_01 ; $01
|
||||
const VAR_02 ; $02
|
||||
const VAR_03 ; $03
|
||||
const VAR_TIMES_MET_RONALD ; $04
|
||||
const VAR_05 ; $05
|
||||
const VAR_06 ; $06
|
||||
const VAR_07 ; $07
|
||||
const VAR_08 ; $08
|
||||
const VAR_09 ; $09
|
||||
const VAR_0A ; $0a
|
||||
const VAR_0B ; $0b
|
||||
const VAR_0C ; $0c
|
||||
const VAR_0D ; $0d
|
||||
const VAR_0E ; $0e
|
||||
const VAR_0F ; $0f
|
||||
const VAR_GRANDMASTERCUP_PRIZE_INDEX_0 ; $10
|
||||
const VAR_GRANDMASTERCUP_PRIZE_INDEX_1 ; $11
|
||||
const VAR_GRANDMASTERCUP_PRIZE_INDEX_2 ; $12
|
||||
const VAR_GRANDMASTERCUP_PRIZE_INDEX_3 ; $13
|
||||
const VAR_GRANDMASTERCUP_OPPONENT_DECK_0 ; $14
|
||||
const VAR_GRANDMASTERCUP_OPPONENT_DECK_1 ; $15
|
||||
const VAR_GRANDMASTERCUP_OPPONENT_DECK_2 ; $16
|
||||
const VAR_GRANDMASTERCUP_OPPONENT_DECK_3 ; $17
|
||||
const VAR_GRANDMASTERCUP_OPPONENT_DECK_4 ; $18
|
||||
const VAR_GRANDMASTERCUP_OPPONENT_DECK_5 ; $19
|
||||
const VAR_GRANDMASTERCUP_OPPONENT_DECK_6 ; $1a
|
||||
const VAR_1B ; $1b
|
||||
const VAR_1C ; $1c
|
||||
const VAR_1D ; $1d
|
||||
const VAR_1E ; $1e
|
||||
const VAR_1F ; $1f
|
||||
const VAR_20 ; $20
|
||||
const VAR_21 ; $21
|
||||
const VAR_IMAKUNI_BLACK_WIN_COUNT ; $22
|
||||
const VAR_23 ; $23
|
||||
const VAR_24 ; $24
|
||||
const VAR_25 ; $25
|
||||
const VAR_26 ; $26
|
||||
const VAR_27 ; $27
|
||||
const VAR_TCG_CHALLENGE_CUP_STATE ; $28
|
||||
const VAR_TCG_CHALLENGE_CUP_PRIZE_INDEX ; $29
|
||||
const VAR_TIMES_WON_TCG_CHALLENGE_CUP ; $2a
|
||||
const VAR_TCG_CHALLENGE_CUP_RESULT ; $2b
|
||||
const VAR_CHALLENGECUP_CURRENT_ROUND ; $2c
|
||||
const VAR_CHALLENGECUP_ROUND1_OPPONENT_DECK_ID ; $2d
|
||||
const VAR_CHALLENGECUP_ROUND2_OPPONENT_DECK_ID ; $2e
|
||||
const VAR_CHALLENGECUP_ROUND3_OPPONENT_DECK_ID ; $2f
|
||||
const VAR_GR_CHALLENGE_CUP_STATE ; $30
|
||||
const VAR_GR_CHALLENGE_CUP_PRIZE_INDEX ; $31
|
||||
const VAR_TIMES_WON_GR_CHALLENGE_CUP ; $32
|
||||
const VAR_GR_CHALLENGE_CUP_RESULT ; $33
|
||||
const VAR_34 ; $34
|
||||
const VAR_35 ; $35
|
||||
const VAR_36 ; $36
|
||||
const VAR_37 ; $37
|
||||
const VAR_38 ; $38
|
||||
const VAR_39 ; $39
|
||||
const VAR_CARD_DUNGEON_PROGRESS ; $3a
|
||||
const VAR_3B ; $3b: AARON_STEP_*; Fighting Fort
|
||||
const VAR_NPC_DECK_ID ; $3c
|
||||
const VAR_DUEL_START_THEME ; $3d
|
||||
const VAR_3E ; $3e
|
||||
const VAR_00 ; $00
|
||||
const VAR_01 ; $01
|
||||
const VAR_02 ; $02
|
||||
const VAR_03 ; $03
|
||||
const VAR_TIMES_MET_RONALD ; $04
|
||||
const VAR_05 ; $05
|
||||
const VAR_06 ; $06
|
||||
const VAR_07 ; $07
|
||||
const VAR_08 ; $08
|
||||
const VAR_09 ; $09
|
||||
const VAR_0A ; $0a
|
||||
const VAR_0B ; $0b
|
||||
const VAR_0C ; $0c
|
||||
const VAR_0D ; $0d
|
||||
const VAR_0E ; $0e
|
||||
const VAR_0F ; $0f
|
||||
const VAR_GRANDMASTERCUP_PRIZE_INDEX_0 ; $10
|
||||
const VAR_GRANDMASTERCUP_PRIZE_INDEX_1 ; $11
|
||||
const VAR_GRANDMASTERCUP_PRIZE_INDEX_2 ; $12
|
||||
const VAR_GRANDMASTERCUP_PRIZE_INDEX_3 ; $13
|
||||
const VAR_GRANDMASTERCUP_OPPONENT_DECK_0 ; $14
|
||||
const VAR_GRANDMASTERCUP_OPPONENT_DECK_1 ; $15
|
||||
const VAR_GRANDMASTERCUP_OPPONENT_DECK_2 ; $16
|
||||
const VAR_GRANDMASTERCUP_OPPONENT_DECK_3 ; $17
|
||||
const VAR_GRANDMASTERCUP_OPPONENT_DECK_4 ; $18
|
||||
const VAR_GRANDMASTERCUP_OPPONENT_DECK_5 ; $19
|
||||
const VAR_GRANDMASTERCUP_OPPONENT_DECK_6 ; $1a
|
||||
const VAR_1B ; $1b
|
||||
const VAR_1C ; $1c
|
||||
const VAR_1D ; $1d
|
||||
const VAR_1E ; $1e
|
||||
const VAR_1F ; $1f
|
||||
const VAR_20 ; $20
|
||||
const VAR_21 ; $21
|
||||
const VAR_IMAKUNI_BLACK_WIN_COUNT ; $22
|
||||
const VAR_23 ; $23
|
||||
const VAR_24 ; $24
|
||||
const VAR_25 ; $25
|
||||
const VAR_26 ; $26
|
||||
const VAR_27 ; $27
|
||||
const VAR_TCG_CHALLENGE_CUP_STATE ; $28
|
||||
const VAR_TCG_CHALLENGE_CUP_PRIZE_INDEX ; $29
|
||||
const VAR_TIMES_WON_TCG_CHALLENGE_CUP ; $2a
|
||||
const VAR_TCG_CHALLENGE_CUP_RESULT ; $2b
|
||||
const VAR_CHALLENGECUP_CURRENT_ROUND ; $2c
|
||||
const VAR_CHALLENGECUP_ROUND1_OPPONENT_DECK_ID ; $2d
|
||||
const VAR_CHALLENGECUP_ROUND2_OPPONENT_DECK_ID ; $2e
|
||||
const VAR_CHALLENGECUP_ROUND3_OPPONENT_DECK_ID ; $2f
|
||||
const VAR_GR_CHALLENGE_CUP_STATE ; $30
|
||||
const VAR_GR_CHALLENGE_CUP_PRIZE_INDEX ; $31
|
||||
const VAR_TIMES_WON_GR_CHALLENGE_CUP ; $32
|
||||
const VAR_GR_CHALLENGE_CUP_RESULT ; $33
|
||||
const VAR_CHALLENGEMACHINE_CURRENT_ROUND ; $34
|
||||
const VAR_CHALLENGEMACHINE_ROUND1_OPPONENT_DECK_ID ; $35
|
||||
const VAR_CHALLENGEMACHINE_ROUND2_OPPONENT_DECK_ID ; $36
|
||||
const VAR_CHALLENGEMACHINE_ROUND3_OPPONENT_DECK_ID ; $37
|
||||
const VAR_CHALLENGEMACHINE_ROUND4_OPPONENT_DECK_ID ; $38
|
||||
const VAR_CHALLENGEMACHINE_ROUND5_OPPONENT_DECK_ID ; $39
|
||||
const VAR_CARD_DUNGEON_PROGRESS ; $3a
|
||||
const VAR_3B ; $3b: AARON_STEP_* / Fighting Fort
|
||||
const VAR_NPC_DECK_ID ; $3c
|
||||
const VAR_DUEL_START_THEME ; $3d
|
||||
const VAR_3E ; $3e
|
||||
|
||||
91
src/data/challenge_machine_opponents.asm
Normal file
91
src/data/challenge_machine_opponents.asm
Normal file
@@ -0,0 +1,91 @@
|
||||
; deck id and bitmask
|
||||
|
||||
TCGChallengeMachineOpponents::
|
||||
db OVERFLOW_DECK_ID, %00111
|
||||
db TRIPLE_ZAPDOS_DECK_ID, %00111
|
||||
db I_LOVE_PIKACHU_DECK_ID, %00111
|
||||
db TEN_THOUSAND_VOLTS_DECK_ID, %00111
|
||||
db PSYCHOKINESIS_DECK_ID, %00111
|
||||
db PHANTOM_DECK_ID, %00111
|
||||
db PUPPET_MASTER_DECK_ID, %00111
|
||||
db ROLLING_STONE_DECK_ID, %00111
|
||||
db GREAT_EARTHQUAKE_DECK_ID, %00111
|
||||
db AWESOME_FOSSIL_DECK_ID, %00111
|
||||
db YOU_CAN_DO_IT_MACHOP_DECK_ID, %00111
|
||||
db NEW_MACHOKE_DECK_ID, %00111
|
||||
db SKILLED_WARRIOR_DECK_ID, %00111
|
||||
db I_LOVE_TO_FIGHT_DECK_ID, %00111
|
||||
db REMAINING_GREEN_DECK_ID, %00111
|
||||
db POISON_CURSE_DECK_ID, %00111
|
||||
db GLITTERING_SCALES_DECK_ID, %00111
|
||||
db STEADY_INCREASE_DECK_ID, %00111
|
||||
db NATURAL_SCIENCE_DECK_ID, %00111
|
||||
db POISONOUS_SWAMP_DECK_ID, %00111
|
||||
db GATHERING_NIDORAN_DECK_ID, %00111
|
||||
db CONSERVING_WATER_DECK_ID, %00111
|
||||
db ENERGY_REMOVAL_DECK_ID, %00111
|
||||
db SPLASHING_ABOUT_DECK_ID, %00111
|
||||
db BEACH_DECK_ID, %00111
|
||||
db FLAME_FESTIVAL_DECK_ID, %00111
|
||||
db IMMORTAL_FLAME_DECK_ID, %00111
|
||||
db ELECTRIC_CURRENT_SHOCK_DECK_ID, %00111
|
||||
db ELECTRIC_SELFDESTRUCT_DECK_ID, %01000
|
||||
db PSYCHIC_ELITE_DECK_ID, %01000
|
||||
db EVEN3_YEARS_ON_A_ROCK_DECK_ID, %01000
|
||||
db RAGING_BILLOW_OF_FISTS_DECK_ID, %01000
|
||||
db MAX_ENERGY_DECK_ID, %01000
|
||||
db DARK_SCIENCE_DECK_ID, %01000
|
||||
db RAIN_DANCE_CONFUSION_DECK_ID, %01000
|
||||
db GO_ARCANINE_DECK_ID, %01000
|
||||
db GREAT_ROCKET1_DECK_ID, %01000
|
||||
db GREAT_ROCKET2_DECK_ID, %01000
|
||||
db GREAT_ROCKET3_DECK_ID, %01000
|
||||
db GREAT_ROCKET4_DECK_ID, %01000
|
||||
db BRICK_WALK_DECK_ID, %10000
|
||||
db BENCH_TRAP_DECK_ID, %10000
|
||||
db GRAND_FIRE_DECK_ID, %10000
|
||||
db LEGENDARY_FOSSIL_DECK_ID, %10000
|
||||
db WATER_LEGEND_DECK_ID, %10000
|
||||
db GREAT_DRAGON_DECK_ID, %10000
|
||||
db WEIRD_DECK_ID, %10000
|
||||
db RONALDS_UNCOOL_DECK_ID, %10000
|
||||
db RONALDS_GRX_DECK_ID, %10000
|
||||
|
||||
GRChallengeMachineOpponents::
|
||||
db BUG_COLLECTING_DECK_ID, %00111
|
||||
db DEMONIC_FOREST_DECK_ID, %00111
|
||||
db STICKY_POISON_GAS_DECK_ID, %00111
|
||||
db CHAIN_LIGHTNING_BY_PIKACHU_DECK_ID, %00111
|
||||
db THIS_IS_THE_POWER_OF_ELECTRICITY_DECK_ID, %00111
|
||||
db COMPLETE_COMBUSTION_DECK_ID, %00111
|
||||
db FIREBALL_DECK_ID, %00111
|
||||
db EEVEE_SHOWDOWN_DECK_ID, %00111
|
||||
db WHIRLPOOL_SHOWER_DECK_ID, %00111
|
||||
db PARALYZED_PARALYZED_DECK_ID, %00111
|
||||
db BENCH_CALL_DECK_ID, %00111
|
||||
db ROCK_BLAST_DECK_ID, %00111
|
||||
db FULL_STRENGTH_DECK_ID, %00111
|
||||
db DIRECT_HIT_DECK_ID, %00111
|
||||
db SUPERDESTRUCTIVE_POWER_DECK_ID, %00111
|
||||
db BAD_DREAM_DECK_ID, %00111
|
||||
db POKEMON_POWER_DECK_ID, %00111
|
||||
db MAD_PETALS_DECK_ID, %01000
|
||||
db QUICK_ATTACK_DECK_ID, %01000
|
||||
db GAZE_UPON_THE_POWER_OF_FIRE_DECK_ID, %01000
|
||||
db WATER_STREAM_DECK_ID, %01000
|
||||
db RUNNING_WILD_DECK_ID, %01000
|
||||
db SPIRITED_AWAY_DECK_ID, %01000
|
||||
db SNORLAX_GUARD_DECK_ID, %01000
|
||||
db EYE_OF_THE_STORM_DECK_ID, %01000
|
||||
db SUDDEN_GROWTH_DECK_ID, %01000
|
||||
db BAD_GUYS_DECK_ID, %10000
|
||||
db POISON_MIST_DECK_ID, %10000
|
||||
db ULTRA_REMOVAL_DECK_ID, %10000
|
||||
db PSYCHIC_BATTLE_DECK_ID, %10000
|
||||
db STOP_LIFE_DECK_ID, %10000
|
||||
db SCORCHER_DECK_ID, %10000
|
||||
db TSUNAMI_STARTER_DECK_ID, %10000
|
||||
db SMASH_TO_MINCEMEAT_DECK_ID, %10000
|
||||
db STRANGE_DECK_ID, %10000
|
||||
db RONALDS_POWER_DECK_ID, %10000
|
||||
db RONALDS_PSYCHIC_DECK_ID, %10000
|
||||
@@ -68,9 +68,9 @@ WRAMToSRAMMapper_GeneralSave::
|
||||
|
||||
; 64 bytes
|
||||
WRAMToSRAMMapper_ChallengeMachineSave::
|
||||
wram_sram_map wddf9, 20, $00, $ff
|
||||
wram_sram_map wde0d, 4, $00, $ff
|
||||
wram_sram_map wde11, 4, $00, $ff
|
||||
wram_sram_map wde15, 4, $00, $ff
|
||||
wram_sram_map wde19, 32, $00, $ff
|
||||
wram_sram_map wChallengeMachineOpponentTitlesAndNames, 4 * NUM_CHALLENGE_MACHINE_ROUNDS_PER_SET, $00, $ff
|
||||
wram_sram_map wChallengeMachineSetsWonRecords, 2 * 2, $00, $ff
|
||||
wram_sram_map wChallengeMachineCurWinStreaks, 2 * 2, $00, $ff
|
||||
wram_sram_map wChallengeMachineWinStreakRecords, 2 * 2, $00, $ff
|
||||
wram_sram_map wChallengeMachinePlayerNames, NAME_BUFFER_LENGTH * 2, $00, $ff
|
||||
dw NULL
|
||||
|
||||
@@ -34,7 +34,7 @@ StartMenu_NewGame:
|
||||
farcall InitSaveData
|
||||
call ClearSaveData
|
||||
call Func_c24d
|
||||
call Func_eb97
|
||||
call ClearChallengeMachineRecords
|
||||
xor a ; FALSE
|
||||
farcall ReadOrInitSaveData
|
||||
ld a, GAME_EVENT_NEWGAME_PROLOGUE
|
||||
@@ -350,9 +350,9 @@ Func_c24d:
|
||||
ld [wSentMailBitfield + 1], a
|
||||
ld [wSentMailBitfield + 2], a
|
||||
ld [wSentMailBitfield + 3], a
|
||||
call Func_ebc6
|
||||
call ValidateChallengeMachineSaveData
|
||||
jr nc, .asm_c299
|
||||
call Func_eb39
|
||||
call InitChallengeMachine
|
||||
.asm_c299
|
||||
call Func_c2a7
|
||||
ret
|
||||
@@ -1108,9 +1108,8 @@ GRIslandLocationNamePointers:
|
||||
tx MapGRCastleText ; OWMAP_GR_CASTLE
|
||||
|
||||
INCLUDE "data/challenge_cup_prizes.asm"
|
||||
; 0xd1ed
|
||||
|
||||
SECTION "Bank 3@5299", ROMX[$5299], BANK[$3]
|
||||
INCLUDE "data/challenge_machine_opponents.asm"
|
||||
|
||||
; main ow handler for GAME_EVENT_OVERWORLD_UPDATE
|
||||
; e.g. map loading, player movement/interactions, game event transitions
|
||||
@@ -2196,12 +2195,12 @@ GeneralVarMasks:
|
||||
db $21, %11111000 ; VAR_GR_CHALLENGE_CUP_PRIZE_INDEX
|
||||
db $22, %00001111 ; VAR_TIMES_WON_GR_CHALLENGE_CUP
|
||||
db $22, %00110000 ; VAR_GR_CHALLENGE_CUP_RESULT
|
||||
db $23, %00000111 ; VAR_34
|
||||
db $24, %11111111 ; VAR_35
|
||||
db $25, %11111111 ; VAR_36
|
||||
db $26, %11111111 ; VAR_37
|
||||
db $27, %11111111 ; VAR_38
|
||||
db $28, %11111111 ; VAR_39
|
||||
db $23, %00000111 ; VAR_CHALLENGEMACHINE_CURRENT_ROUND
|
||||
db $24, %11111111 ; VAR_CHALLENGEMACHINE_ROUND1_OPPONENT_DECK_ID
|
||||
db $25, %11111111 ; VAR_CHALLENGEMACHINE_ROUND2_OPPONENT_DECK_ID
|
||||
db $26, %11111111 ; VAR_CHALLENGEMACHINE_ROUND3_OPPONENT_DECK_ID
|
||||
db $27, %11111111 ; VAR_CHALLENGEMACHINE_ROUND4_OPPONENT_DECK_ID
|
||||
db $28, %11111111 ; VAR_CHALLENGEMACHINE_ROUND5_OPPONENT_DECK_ID
|
||||
db $29, %00000111 ; VAR_CARD_DUNGEON_PROGRESS
|
||||
db $2a, %11111111 ; VAR_3B
|
||||
db $2b, %11111111 ; VAR_NPC_DECK_ID
|
||||
@@ -4489,62 +4488,67 @@ ScriptCommand_WaitInput:
|
||||
INCLUDE "engine/save.asm"
|
||||
INCLUDE "data/save.asm"
|
||||
|
||||
Func_ef40:
|
||||
; a = TCG_ISLAND or GR_ISLAND
|
||||
; set five opponents for the set
|
||||
SetChallengeMachineOpponents:
|
||||
or a
|
||||
jr nz, .asm_ef54
|
||||
ld a, $31
|
||||
jr nz, .gr_machine
|
||||
ld a, NUM_TCG_CHALLENGE_MACHINE_OPPONENT_POOL
|
||||
ld [wNumRandomDuelists], a
|
||||
ld a, LOW($51ed)
|
||||
ld a, LOW(TCGChallengeMachineOpponents)
|
||||
ld [wFilteredListPtr], a
|
||||
ld a, HIGH($51ed)
|
||||
ld a, HIGH(TCGChallengeMachineOpponents)
|
||||
ld [wFilteredListPtr + 1], a
|
||||
jr .asm_ef63
|
||||
.asm_ef54
|
||||
ld a, $25
|
||||
jr .init
|
||||
.gr_machine
|
||||
ld a, NUM_GR_CHALLENGE_MACHINE_OPPONENT_POOL
|
||||
ld [wNumRandomDuelists], a
|
||||
ld a, LOW($524f)
|
||||
ld a, LOW(GRChallengeMachineOpponents)
|
||||
ld [wFilteredListPtr], a
|
||||
ld a, HIGH($524f)
|
||||
ld a, HIGH(GRChallengeMachineOpponents)
|
||||
ld [wFilteredListPtr + 1], a
|
||||
.asm_ef63
|
||||
ld e, $05
|
||||
ld d, VAR_35
|
||||
.init
|
||||
ld e, NUM_CHALLENGE_MACHINE_ROUNDS_PER_SET
|
||||
ld d, VAR_CHALLENGEMACHINE_ROUND1_OPPONENT_DECK_ID
|
||||
ld c, $ff
|
||||
.asm_ef69
|
||||
.loop_init
|
||||
ld a, d
|
||||
call SetVarValue
|
||||
inc d
|
||||
dec e
|
||||
jr nz, .asm_ef69
|
||||
ld c, $00
|
||||
.asm_ef73
|
||||
ld b, $01
|
||||
jr nz, .loop_init
|
||||
; set
|
||||
; b = 1 << c for c = round number [0, 4]
|
||||
; set opponents randomly with the bitmask b
|
||||
ld c, 0
|
||||
.loop_set_opponents
|
||||
ld b, 1
|
||||
ld a, c
|
||||
or a
|
||||
.asm_ef77
|
||||
jr z, .asm_ef7e
|
||||
.loop_shift
|
||||
jr z, .loop_pick
|
||||
sla b
|
||||
dec a
|
||||
jr .asm_ef77
|
||||
.asm_ef7e
|
||||
call Func_ef97
|
||||
call Func_efb3
|
||||
jr c, .asm_ef7e
|
||||
jr .loop_shift
|
||||
.loop_pick
|
||||
call .PickOpponent
|
||||
call .CheckDupe
|
||||
jr c, .loop_pick
|
||||
push bc
|
||||
ld d, a
|
||||
ld a, VAR_35
|
||||
ld a, VAR_CHALLENGEMACHINE_ROUND1_OPPONENT_DECK_ID
|
||||
add c
|
||||
ld c, d
|
||||
call SetVarValue
|
||||
pop bc
|
||||
inc c
|
||||
ld a, $05
|
||||
ld a, NUM_CHALLENGE_MACHINE_ROUNDS_PER_SET
|
||||
cp c
|
||||
jr nz, .asm_ef73
|
||||
jr nz, .loop_set_opponents
|
||||
ret
|
||||
|
||||
Func_ef97:
|
||||
.loop
|
||||
; for b = bitmask, choose a random opponent and return their deck id in a
|
||||
.PickOpponent:
|
||||
ld a, [wFilteredListPtr]
|
||||
ld l, a
|
||||
ld a, [wFilteredListPtr + 1]
|
||||
@@ -4556,38 +4560,39 @@ Func_ef97:
|
||||
inc hl
|
||||
ld a, [hld]
|
||||
and b
|
||||
jr z, .loop
|
||||
jr z, .PickOpponent
|
||||
ld a, [hl]
|
||||
ret
|
||||
|
||||
Func_efb3:
|
||||
; set carry if the opponent is already picked
|
||||
.CheckDupe:
|
||||
ld d, a
|
||||
call GetNPCByDeck
|
||||
ld l, a
|
||||
ld e, VAR_35
|
||||
.asm_efba
|
||||
ld e, VAR_CHALLENGEMACHINE_ROUND1_OPPONENT_DECK_ID
|
||||
.loop_check
|
||||
ld a, e
|
||||
call GetVarValue
|
||||
cp $ff
|
||||
jr z, .asm_efcc
|
||||
jr z, .done
|
||||
call GetNPCByDeck
|
||||
inc e
|
||||
cp l
|
||||
jr nz, .asm_efba
|
||||
jr nz, .loop_check
|
||||
ld a, d
|
||||
scf
|
||||
ret
|
||||
.asm_efcc
|
||||
.done
|
||||
ld a, d
|
||||
scf
|
||||
ccf
|
||||
ret
|
||||
|
||||
Func_efd0:
|
||||
ld c, $05
|
||||
ld a, VAR_35
|
||||
ld hl, wddf9
|
||||
.asm_efd7
|
||||
LoadChallengeMachineOpponentTitlesAndNames:
|
||||
ld c, NUM_CHALLENGE_MACHINE_ROUNDS_PER_SET
|
||||
ld a, VAR_CHALLENGEMACHINE_ROUND1_OPPONENT_DECK_ID
|
||||
ld hl, wChallengeMachineOpponentTitlesAndNames
|
||||
.loop_load
|
||||
push af
|
||||
call GetVarValue
|
||||
call GetNPCByDeck
|
||||
@@ -4607,16 +4612,16 @@ Func_efd0:
|
||||
pop af
|
||||
inc a
|
||||
dec c
|
||||
jr nz, .asm_efd7
|
||||
jr nz, .loop_load
|
||||
ret
|
||||
|
||||
Func_eff7:
|
||||
call Func_ec38
|
||||
ld a, VAR_34
|
||||
SetChallengeMachineDuelParams:
|
||||
call SaveChallengeMachine
|
||||
ld a, VAR_CHALLENGEMACHINE_CURRENT_ROUND
|
||||
call GetVarValue
|
||||
dec a
|
||||
ld c, a
|
||||
ld a, VAR_35
|
||||
ld a, VAR_CHALLENGEMACHINE_ROUND1_OPPONENT_DECK_ID
|
||||
add c
|
||||
call GetVarValue
|
||||
ld [wNPCDuelDeckID], a
|
||||
|
||||
@@ -5479,7 +5479,7 @@ PlaySlotsPrompt:
|
||||
call PauseSong_SaveState
|
||||
push af
|
||||
ld a, MUSIC_GAME_CENTER_POWER_ON
|
||||
call Func_3d09
|
||||
call CallPlaySong
|
||||
pop af
|
||||
call WaitForSongToFinish
|
||||
call ResumeSong_ClearTemp
|
||||
@@ -6433,7 +6433,7 @@ Func_131bd:
|
||||
call PauseSong_SaveState
|
||||
push af
|
||||
ld a, MUSIC_GAME_CENTER_POWER_ON
|
||||
call Func_3d09
|
||||
call CallPlaySong
|
||||
pop af
|
||||
call WaitForSongToFinish
|
||||
call ResumeSong_ClearTemp
|
||||
@@ -7053,365 +7053,7 @@ ENDR
|
||||
pop de
|
||||
ret
|
||||
|
||||
Func_135ec:
|
||||
call Func_102a4
|
||||
call Func_135f6
|
||||
call Func_102c4
|
||||
ret
|
||||
|
||||
Func_135f6:
|
||||
push bc
|
||||
push de
|
||||
push hl
|
||||
ld [wddf6], a
|
||||
ld a, c
|
||||
ld [wddf8], a
|
||||
ld a, b
|
||||
ld [wddf7], a
|
||||
and a
|
||||
jr nz, .asm_1360e
|
||||
call Func_13617
|
||||
ld a, $00
|
||||
jr c, .asm_13613
|
||||
.asm_1360e
|
||||
call Func_136e4
|
||||
ld a, $01
|
||||
.asm_13613
|
||||
pop hl
|
||||
pop de
|
||||
pop bc
|
||||
ret
|
||||
|
||||
Func_13617:
|
||||
call ClearSpriteAnimsAndSetInitialGraphicsConfiguration
|
||||
lb de, $40, $ff
|
||||
call SetupText
|
||||
call Func_1362d
|
||||
call SetFrameFuncAndFadeFromWhite
|
||||
call Func_136db
|
||||
call FadeToWhiteAndUnsetFrameFunc
|
||||
ret
|
||||
|
||||
Func_1362d:
|
||||
lb de, 0, 0
|
||||
lb bc, 20, 13
|
||||
call DrawRegularTextBoxVRAM0
|
||||
lb de, 0, 12
|
||||
lb bc, 20, 6
|
||||
call DrawRegularTextBoxVRAM0
|
||||
ld a, [wddf6]
|
||||
add a
|
||||
ld c, a
|
||||
ld b, $00
|
||||
ld hl, $76b0
|
||||
add hl, bc
|
||||
ld a, [hli]
|
||||
ld h, [hl]
|
||||
ld l, a
|
||||
lb de, 1, 0
|
||||
call Func_2c4b
|
||||
ld hl, $7697
|
||||
call PlaceTextItemsVRAM0
|
||||
ldtx hl, ChallengeMachineScoreTitleText
|
||||
lb de, 1, 2
|
||||
call PrintTextNoDelay_InitVRAM0
|
||||
ld hl, wde0d
|
||||
lb de, 14, 4
|
||||
call .PrintScore
|
||||
ld hl, wde11
|
||||
lb de, 14, 6
|
||||
call .PrintScore
|
||||
ld hl, wde15
|
||||
lb de, 14, 10
|
||||
call .PrintScore
|
||||
call Func_136b4
|
||||
ret
|
||||
|
||||
.PrintScore:
|
||||
push hl
|
||||
ld a, [wddf6]
|
||||
add a
|
||||
ld c, a
|
||||
ld b, $00
|
||||
add hl, bc
|
||||
ld a, [hli]
|
||||
ld h, [hl]
|
||||
ld l, a
|
||||
ld a, 3
|
||||
ld b, TRUE
|
||||
farcall PrintNumber
|
||||
pop hl
|
||||
ret
|
||||
; 0x13697
|
||||
|
||||
SECTION "Bank 4@76b4", ROMX[$76b4], BANK[$4]
|
||||
|
||||
Func_136b4:
|
||||
ld de, wde39
|
||||
call Func_13d1f
|
||||
ld a, [wddf6]
|
||||
add a
|
||||
add a
|
||||
add a
|
||||
add a
|
||||
ld c, a
|
||||
ld b, $00
|
||||
ld hl, wde19
|
||||
add hl, bc
|
||||
call SavePlayerName
|
||||
ldtx hl, TxRam1Text
|
||||
lb de, 2, 10
|
||||
call PrintTextNoDelay_InitVRAM0
|
||||
ld hl, wde39
|
||||
call SavePlayerName
|
||||
ret
|
||||
|
||||
Func_136db:
|
||||
ldtx hl, ChallengeMachineStartPromptText
|
||||
ld a, $01
|
||||
call DrawWideTextBox_PrintTextWithYesOrNoMenu
|
||||
ret
|
||||
|
||||
Func_136e4:
|
||||
call ClearSpriteAnimsAndSetInitialGraphicsConfiguration
|
||||
lb de, $40, $ff
|
||||
call SetupText
|
||||
call Func_1371f
|
||||
call SetFrameFuncAndFadeFromWhite
|
||||
ld a, [wddf8]
|
||||
and a
|
||||
jr z, .asm_1370b
|
||||
call Func_137fa
|
||||
ld a, [wddf8]
|
||||
cp $02
|
||||
jr z, .asm_13718
|
||||
ld a, [wddf7]
|
||||
cp $05
|
||||
scf
|
||||
jr z, .asm_13718
|
||||
.asm_1370b
|
||||
call Func_13792
|
||||
call Func_137df
|
||||
jr nc, .asm_1371b
|
||||
ld a, $02
|
||||
ld [wddf8], a
|
||||
.asm_13718
|
||||
call Func_1382e
|
||||
.asm_1371b
|
||||
call FadeToWhiteAndUnsetFrameFunc
|
||||
ret
|
||||
|
||||
Func_1371f:
|
||||
lb de, 0, 0
|
||||
lb bc, 20, 13
|
||||
call DrawRegularTextBoxVRAM0
|
||||
lb de, 0, 12
|
||||
lb bc, 20, 6
|
||||
call DrawRegularTextBoxVRAM0
|
||||
ld a, [wddf6]
|
||||
add a
|
||||
ld c, a
|
||||
ld b, $00
|
||||
ld hl, $7749
|
||||
add hl, bc
|
||||
ld a, [hli]
|
||||
ld h, [hl]
|
||||
ld l, a
|
||||
lb de, 1, 0
|
||||
call Func_2c4b
|
||||
call Func_1374d
|
||||
ret
|
||||
; 0x13749
|
||||
|
||||
SECTION "Bank 4@774d", ROMX[$774d], BANK[$4]
|
||||
|
||||
Func_1374d:
|
||||
ld hl, wddf9
|
||||
ld c, $05
|
||||
ld e, $02
|
||||
.asm_13754
|
||||
call Func_13763
|
||||
call Func_13778
|
||||
call Func_13785
|
||||
inc e
|
||||
inc e
|
||||
dec c
|
||||
jr nz, .asm_13754
|
||||
ret
|
||||
|
||||
Func_13763:
|
||||
push hl
|
||||
ld a, $06
|
||||
sub c
|
||||
ld [wTxRam3], a
|
||||
xor a
|
||||
ld [wTxRam3 + 1], a
|
||||
ldtx hl, TxRam3Text
|
||||
ld d, $02
|
||||
call PrintTextNoDelay_InitVRAM0
|
||||
pop hl
|
||||
ret
|
||||
|
||||
Func_13778:
|
||||
push hl
|
||||
ld a, [hli]
|
||||
ld h, [hl]
|
||||
ld l, a
|
||||
ld d, $04
|
||||
call PrintTextNoDelay_InitVRAM0
|
||||
pop hl
|
||||
inc hl
|
||||
inc hl
|
||||
ret
|
||||
|
||||
Func_13785:
|
||||
push hl
|
||||
ld a, [hli]
|
||||
ld h, [hl]
|
||||
ld l, a
|
||||
ld d, $0e
|
||||
call PrintTextNoDelay_InitVRAM0
|
||||
pop hl
|
||||
inc hl
|
||||
inc hl
|
||||
ret
|
||||
|
||||
Func_13792:
|
||||
ld a, [wddf7]
|
||||
and a
|
||||
jr nz, .asm_1379e
|
||||
ldtx hl, ChallengeMachineOpponentListDialogText
|
||||
call PrintScrollableText_NoTextBoxLabelVRAM0
|
||||
.asm_1379e
|
||||
ld a, [wddf6]
|
||||
add a
|
||||
ld c, a
|
||||
ld b, $00
|
||||
ld hl, wde11
|
||||
add hl, bc
|
||||
ld c, [hl]
|
||||
inc hl
|
||||
ld b, [hl]
|
||||
ld de, $1
|
||||
call CompareBCAndDE
|
||||
ret c
|
||||
ret z
|
||||
ld h, b
|
||||
ld l, c
|
||||
call LoadTxRam3
|
||||
ld a, [wddf7]
|
||||
inc a
|
||||
ld [wTxRam3_b], a
|
||||
xor a
|
||||
ld [wTxRam3_b + 1], a
|
||||
ld a, [wddf7]
|
||||
add a
|
||||
add a
|
||||
ld c, a
|
||||
ld b, $00
|
||||
ld hl, wddf9
|
||||
add hl, bc
|
||||
inc hl
|
||||
inc hl
|
||||
ld a, [hli]
|
||||
ld h, [hl]
|
||||
ld l, a
|
||||
call LoadTxRam2
|
||||
ldtx hl, ChallengeMachineOpponentXDialogText
|
||||
call PrintScrollableText_NoTextBoxLabelVRAM0
|
||||
ret
|
||||
|
||||
Func_137df:
|
||||
.asm_137df
|
||||
ldtx hl, ChallengeMachineDuelPromptText
|
||||
ld a, $01
|
||||
call DrawWideTextBox_PrintTextWithYesOrNoMenu
|
||||
ret nc
|
||||
ldtx hl, ChallengeMachineQuitWinStreakWarningText
|
||||
call PrintScrollableText_NoTextBoxLabelVRAM0
|
||||
ldtx hl, ChallengeMachineQuitPromptText
|
||||
ld a, $01
|
||||
call DrawWideTextBox_PrintTextWithYesOrNoMenu
|
||||
jr c, .asm_137df
|
||||
scf
|
||||
ret
|
||||
|
||||
Func_137fa:
|
||||
ld a, [wddf7]
|
||||
dec a
|
||||
add a
|
||||
add a
|
||||
ld c, a
|
||||
ld b, $00
|
||||
ld hl, wddf9
|
||||
add hl, bc
|
||||
inc hl
|
||||
inc hl
|
||||
ld a, [hli]
|
||||
ld [wTxRam2], a
|
||||
ld a, [hl]
|
||||
ld [wTxRam2 + 1], a
|
||||
ld a, [wddf7]
|
||||
ld l, a
|
||||
ld h, $00
|
||||
call LoadTxRam3
|
||||
ld a, [wddf8]
|
||||
dec a
|
||||
jr z, .asm_13827
|
||||
ldtx hl, ChallengeMachineLossDialogText
|
||||
call PrintScrollableText_NoTextBoxLabelVRAM0
|
||||
ret
|
||||
.asm_13827
|
||||
ldtx hl, ChallengeMachineWinDialogText
|
||||
call PrintScrollableText_NoTextBoxLabelVRAM0
|
||||
ret
|
||||
|
||||
Func_1382e:
|
||||
push af
|
||||
ld a, [wddf8]
|
||||
dec a
|
||||
jr z, .asm_1384e
|
||||
ld a, [wddf6]
|
||||
add a
|
||||
ld c, a
|
||||
ld b, $00
|
||||
ld hl, wde11
|
||||
add hl, bc
|
||||
ld a, [hli]
|
||||
ld h, [hl]
|
||||
ld l, a
|
||||
call LoadTxRam3
|
||||
ldtx hl, ChallengeMachineLossDialogWinStreakText
|
||||
call PrintScrollableText_NoTextBoxLabelVRAM0
|
||||
jr .asm_1387e
|
||||
.asm_1384e
|
||||
call PauseSong_SaveState
|
||||
push af
|
||||
ld a, MUSIC_MEDAL
|
||||
call Func_3d09
|
||||
pop af
|
||||
ldtx hl, ChallengeMachineWonASetText
|
||||
call PrintTextInWideTextBox
|
||||
call WaitForSongToFinish
|
||||
call ResumeSong_ClearTemp
|
||||
call WaitForWideTextBoxInput
|
||||
ld a, [wddf6]
|
||||
add a
|
||||
ld c, a
|
||||
ld b, $00
|
||||
ld hl, wde0d
|
||||
add hl, bc
|
||||
ld a, [hli]
|
||||
ld h, [hl]
|
||||
ld l, a
|
||||
call LoadTxRam3
|
||||
ldtx hl, ChallengeMachineSetsWonText
|
||||
call PrintScrollableText_NoTextBoxLabelVRAM0
|
||||
.asm_1387e
|
||||
ldtx hl, ChallengeMachineComeAgainText
|
||||
call PrintScrollableText_NoTextBoxLabelVRAM0
|
||||
pop af
|
||||
ret
|
||||
INCLUDE "engine/challenge_machine.asm"
|
||||
|
||||
INCLUDE "engine/credits_commands.asm"
|
||||
|
||||
@@ -7656,6 +7298,7 @@ LoadPlayerName:
|
||||
pop bc
|
||||
ret
|
||||
|
||||
; from hl to sPlayerName
|
||||
SavePlayerName:
|
||||
push af
|
||||
push bc
|
||||
@@ -7672,14 +7315,15 @@ SavePlayerName:
|
||||
pop af
|
||||
ret
|
||||
|
||||
Func_13d1f:
|
||||
; from sPlayerName to de
|
||||
LoadPlayerNameToDE:
|
||||
push af
|
||||
push bc
|
||||
push de
|
||||
push hl
|
||||
call EnableSRAM
|
||||
ld hl, sPlayerName
|
||||
ld bc, $10
|
||||
ld bc, NAME_BUFFER_LENGTH
|
||||
call CopyBCBytesFromHLToDE
|
||||
call DisableSRAM
|
||||
pop hl
|
||||
|
||||
@@ -3737,7 +3737,7 @@ Func_1db81:
|
||||
call DoAFrames_WithPreCheck
|
||||
push af
|
||||
ld a, MUSIC_MEDAL
|
||||
call Func_3d09
|
||||
call CallPlaySong
|
||||
pop af
|
||||
call WaitForSongToFinish
|
||||
ld a, 60
|
||||
@@ -5331,7 +5331,7 @@ Func_1e60c:
|
||||
ld a, [wDuelStartTheme]
|
||||
push af
|
||||
ld a, a ; wow
|
||||
call Func_3d09
|
||||
call CallPlaySong
|
||||
pop af
|
||||
|
||||
; print duelist intro text
|
||||
@@ -5694,7 +5694,7 @@ _GiveBoosterPack:
|
||||
call PauseSong_SaveState
|
||||
push af
|
||||
ld a, MUSIC_BOOSTER_PACK
|
||||
call Func_3d09
|
||||
call CallPlaySong
|
||||
pop af
|
||||
ld a, [wCurBoosterPack]
|
||||
add a
|
||||
|
||||
@@ -1341,8 +1341,8 @@ MasonLaboratoryMain_NPCInteractions:
|
||||
MasonLaboratoryMain_OWInteractions:
|
||||
ow_script 1, 2, PCMenu
|
||||
ow_script 2, 2, PCMenu
|
||||
ow_script 6, 3, Func_4101d
|
||||
ow_script 7, 3, Func_4101d
|
||||
ow_script 6, 3, Script_TCGChallengeMachine
|
||||
ow_script 7, 3, Script_TCGChallengeMachine
|
||||
db $ff
|
||||
|
||||
MasonLaboratoryMain_MapScripts:
|
||||
@@ -1461,7 +1461,7 @@ Func_40f21:
|
||||
scf
|
||||
ret
|
||||
.asm_40f34
|
||||
farcall Func_ec6c
|
||||
farcall LoadChallengeMachineSave
|
||||
call Func_41074
|
||||
scf
|
||||
ret
|
||||
@@ -1586,45 +1586,45 @@ Func_40fff:
|
||||
call Func_40fbc
|
||||
ret
|
||||
|
||||
Func_4101d:
|
||||
Script_TCGChallengeMachine:
|
||||
ld a, EVENT_MASONS_LAB_CHALLENGE_MACHINE_STATE
|
||||
farcall GetEventValue
|
||||
ret z
|
||||
farcall Func_ebc6
|
||||
jr nc, .asm_41038
|
||||
farcall Func_eb39
|
||||
farcall ValidateChallengeMachineSaveData
|
||||
jr nc, .no_error
|
||||
farcall InitChallengeMachine
|
||||
xor a
|
||||
start_script
|
||||
start_dialog
|
||||
print_text ChallengeMachineWinStreakRecordCorruptedAndResetText
|
||||
end_dialog
|
||||
end_script
|
||||
.asm_41038
|
||||
farcall Func_ec6c
|
||||
.no_error
|
||||
farcall LoadChallengeMachineSave
|
||||
xor a
|
||||
farcall Func_ef40
|
||||
farcall Func_efd0
|
||||
farcall SetChallengeMachineOpponents
|
||||
farcall LoadChallengeMachineOpponentTitlesAndNames
|
||||
xor a
|
||||
ld bc, $0
|
||||
farcall Func_135ec
|
||||
farcall ChallengeMachine
|
||||
jr c, .asm_41061
|
||||
xor a
|
||||
start_script
|
||||
set_event EVENT_EB
|
||||
set_var VAR_34, $01
|
||||
set_var VAR_CHALLENGEMACHINE_CURRENT_ROUND, $01
|
||||
send_mail $0d
|
||||
end_script
|
||||
farcall Func_eff7
|
||||
farcall SetChallengeMachineDuelParams
|
||||
jr .asm_41073
|
||||
.asm_41061
|
||||
or a
|
||||
jr z, .asm_41073
|
||||
ld bc, $0
|
||||
ld a, c
|
||||
ld [wde11], a
|
||||
ld [wTCGChallengeMachineCurWinStreak], a
|
||||
ld a, b
|
||||
ld [wde11 + 1], a
|
||||
farcall Func_ec38
|
||||
ld [wTCGChallengeMachineCurWinStreak + 1], a
|
||||
farcall SaveChallengeMachine
|
||||
.asm_41073
|
||||
ret
|
||||
|
||||
@@ -1632,78 +1632,78 @@ Func_41074:
|
||||
ld a, EVENT_SET_UNTIL_MAP_RELOAD_2
|
||||
farcall GetEventValue
|
||||
jp z, .asm_410ee
|
||||
ld a, [wde11]
|
||||
ld a, [wTCGChallengeMachineCurWinStreak]
|
||||
ld c, a
|
||||
ld a, [wde11 + 1]
|
||||
ld a, [wTCGChallengeMachineCurWinStreak + 1]
|
||||
ld b, a
|
||||
inc bc
|
||||
cp16bc_long 1000
|
||||
jr nc, .asm_4109a
|
||||
ld a, c
|
||||
ld [wde11], a
|
||||
ld [wTCGChallengeMachineCurWinStreak], a
|
||||
ld a, b
|
||||
ld [wde11 + 1], a
|
||||
ld [wTCGChallengeMachineCurWinStreak + 1], a
|
||||
.asm_4109a
|
||||
ld a, VAR_34
|
||||
ld a, VAR_CHALLENGEMACHINE_CURRENT_ROUND
|
||||
farcall GetVarValue
|
||||
cp $05
|
||||
jr z, .asm_410c4
|
||||
ld b, a
|
||||
xor a
|
||||
ld c, $01
|
||||
farcall Func_135ec
|
||||
farcall ChallengeMachine
|
||||
jp c, .asm_410fc
|
||||
ld a, VAR_34
|
||||
ld a, VAR_CHALLENGEMACHINE_CURRENT_ROUND
|
||||
ld d, a
|
||||
farcall GetVarValue
|
||||
inc a
|
||||
ld c, a
|
||||
ld a, d
|
||||
farcall SetVarValue
|
||||
farcall Func_eff7
|
||||
farcall SetChallengeMachineDuelParams
|
||||
jp .asm_41114
|
||||
.asm_410c4
|
||||
ld a, [wde0d]
|
||||
ld a, [wTCGChallengeMachineSetsWonRecord]
|
||||
ld c, a
|
||||
ld a, [wde0d + 1]
|
||||
ld a, [wTCGChallengeMachineSetsWonRecord + 1]
|
||||
ld b, a
|
||||
inc bc
|
||||
cp16bc_long 1000
|
||||
jr nc, .asm_410e1
|
||||
ld a, c
|
||||
ld [wde0d], a
|
||||
ld [wTCGChallengeMachineSetsWonRecord], a
|
||||
ld a, b
|
||||
ld [wde0d + 1], a
|
||||
ld [wTCGChallengeMachineSetsWonRecord + 1], a
|
||||
.asm_410e1
|
||||
call Func_4112e
|
||||
xor a
|
||||
ld bc, $501
|
||||
farcall Func_135ec
|
||||
farcall ChallengeMachine
|
||||
jr .asm_41115
|
||||
.asm_410ee
|
||||
ld a, VAR_34
|
||||
ld a, VAR_CHALLENGEMACHINE_CURRENT_ROUND
|
||||
farcall GetVarValue
|
||||
ld b, a
|
||||
xor a
|
||||
ld c, $02
|
||||
farcall Func_135ec
|
||||
farcall ChallengeMachine
|
||||
.asm_410fc
|
||||
call Func_4112e
|
||||
ld bc, $0
|
||||
ld a, c
|
||||
ld [wde11], a
|
||||
ld [wTCGChallengeMachineCurWinStreak], a
|
||||
ld a, b
|
||||
ld [wde11 + 1], a
|
||||
ld [wTCGChallengeMachineCurWinStreak + 1], a
|
||||
.asm_4110a
|
||||
ld a, EVENT_EB
|
||||
farcall ZeroOutEventValue
|
||||
farcall Func_ec38
|
||||
farcall SaveChallengeMachine
|
||||
.asm_41114
|
||||
ret
|
||||
.asm_41115
|
||||
ld a, [wde11]
|
||||
ld a, [wTCGChallengeMachineCurWinStreak]
|
||||
ld e, a
|
||||
ld a, [wde11 + 1]
|
||||
ld a, [wTCGChallengeMachineCurWinStreak + 1]
|
||||
ld d, a
|
||||
cp16_long 50
|
||||
jr nz, .asm_4110a
|
||||
@@ -1711,13 +1711,13 @@ Func_41074:
|
||||
jr .asm_4110a
|
||||
|
||||
Func_4112e:
|
||||
ld a, [wde11]
|
||||
ld a, [wTCGChallengeMachineCurWinStreak]
|
||||
ld c, a
|
||||
ld a, [wde11 + 1]
|
||||
ld a, [wTCGChallengeMachineCurWinStreak + 1]
|
||||
ld b, a
|
||||
ld a, [wde15]
|
||||
ld a, [wTCGChallengeMachineWinStreakRecord]
|
||||
ld e, a
|
||||
ld a, [wde15 + 1]
|
||||
ld a, [wTCGChallengeMachineWinStreakRecord + 1]
|
||||
ld d, a
|
||||
cp16bc_long de
|
||||
jr nc, .asm_4114a
|
||||
@@ -1725,12 +1725,12 @@ Func_4112e:
|
||||
ret
|
||||
.asm_4114a
|
||||
ld a, c
|
||||
ld [wde15], a
|
||||
ld [wTCGChallengeMachineWinStreakRecord], a
|
||||
ld a, b
|
||||
ld [wde15 + 1], a
|
||||
ld [wTCGChallengeMachineWinStreakRecord + 1], a
|
||||
call EnableSRAM
|
||||
ld hl, sPlayerName
|
||||
ld de, wde19
|
||||
ld de, wTCGChallengeMachinePlayerName
|
||||
ld bc, $10
|
||||
call CopyDataHLtoDE_SaveRegisters
|
||||
call DisableSRAM
|
||||
@@ -4514,7 +4514,7 @@ Func_426d6:
|
||||
jp z, Script_GRCupRound2AfterDuel
|
||||
jp Script_GRCupRound3AfterDuel
|
||||
.asm_426ef
|
||||
farcall Func_ec6c
|
||||
farcall LoadChallengeMachineSave
|
||||
call Func_42776
|
||||
scf
|
||||
ret
|
||||
@@ -4546,9 +4546,9 @@ Script_GRChallengeMachine:
|
||||
ld a, EVENT_MASONS_LAB_CHALLENGE_MACHINE_STATE
|
||||
farcall GetEventValue
|
||||
ret z
|
||||
farcall Func_ebc6
|
||||
farcall ValidateChallengeMachineSaveData
|
||||
jr nc, .asm_4273a
|
||||
farcall Func_eb39
|
||||
farcall InitChallengeMachine
|
||||
xor a
|
||||
start_script
|
||||
start_dialog
|
||||
@@ -4556,30 +4556,30 @@ Script_GRChallengeMachine:
|
||||
end_dialog
|
||||
end_script
|
||||
.asm_4273a
|
||||
farcall Func_ec6c
|
||||
farcall LoadChallengeMachineSave
|
||||
ld a, $01
|
||||
farcall Func_ef40
|
||||
farcall Func_efd0
|
||||
farcall SetChallengeMachineOpponents
|
||||
farcall LoadChallengeMachineOpponentTitlesAndNames
|
||||
ld a, $01
|
||||
ld bc, $0
|
||||
farcall Func_135ec
|
||||
farcall ChallengeMachine
|
||||
jr c, .asm_42763
|
||||
xor a
|
||||
start_script
|
||||
set_event EVENT_EB
|
||||
set_var VAR_34, $01
|
||||
set_var VAR_CHALLENGEMACHINE_CURRENT_ROUND, $01
|
||||
end_script
|
||||
farcall Func_eff7
|
||||
farcall SetChallengeMachineDuelParams
|
||||
jr .asm_42775
|
||||
.asm_42763
|
||||
or a
|
||||
jr z, .asm_42775
|
||||
ld bc, $0
|
||||
ld a, c
|
||||
ld [wde13], a
|
||||
ld [wGRChallengeMachineCurWinStreak], a
|
||||
ld a, b
|
||||
ld [wde13 + 1], a
|
||||
farcall Func_ec38
|
||||
ld [wGRChallengeMachineCurWinStreak + 1], a
|
||||
farcall SaveChallengeMachine
|
||||
.asm_42775
|
||||
ret
|
||||
|
||||
@@ -4587,78 +4587,78 @@ Func_42776:
|
||||
ld a, EVENT_SET_UNTIL_MAP_RELOAD_2
|
||||
farcall GetEventValue
|
||||
jp z, .asm_427f2
|
||||
ld a, [wde13]
|
||||
ld a, [wGRChallengeMachineCurWinStreak]
|
||||
ld c, a
|
||||
ld a, [wde13 + 1]
|
||||
ld a, [wGRChallengeMachineCurWinStreak + 1]
|
||||
ld b, a
|
||||
inc bc
|
||||
cp16bc_long 1000
|
||||
jr nc, .asm_4279c
|
||||
ld a, c
|
||||
ld [wde13], a
|
||||
ld [wGRChallengeMachineCurWinStreak], a
|
||||
ld a, b
|
||||
ld [wde13 + 1], a
|
||||
ld [wGRChallengeMachineCurWinStreak + 1], a
|
||||
.asm_4279c
|
||||
ld a, VAR_34
|
||||
ld a, VAR_CHALLENGEMACHINE_CURRENT_ROUND
|
||||
farcall GetVarValue
|
||||
cp $05
|
||||
jr z, .asm_427c7
|
||||
ld b, a
|
||||
ld a, $01
|
||||
ld c, $01
|
||||
farcall Func_135ec
|
||||
farcall ChallengeMachine
|
||||
jp c, .asm_42801
|
||||
ld a, VAR_34
|
||||
ld a, VAR_CHALLENGEMACHINE_CURRENT_ROUND
|
||||
ld d, a
|
||||
farcall GetVarValue
|
||||
inc a
|
||||
ld c, a
|
||||
ld a, d
|
||||
farcall SetVarValue
|
||||
farcall Func_eff7
|
||||
farcall SetChallengeMachineDuelParams
|
||||
jp .asm_42819
|
||||
.asm_427c7
|
||||
ld a, [wde0f]
|
||||
ld a, [wGRChallengeMachineSetsWonRecord]
|
||||
ld c, a
|
||||
ld a, [wde0f + 1]
|
||||
ld a, [wGRChallengeMachineSetsWonRecord + 1]
|
||||
ld b, a
|
||||
inc bc
|
||||
cp16bc_long 1000
|
||||
jr nc, .asm_427e4
|
||||
ld a, c
|
||||
ld [wde0f], a
|
||||
ld [wGRChallengeMachineSetsWonRecord], a
|
||||
ld a, b
|
||||
ld [wde0f + 1], a
|
||||
ld [wGRChallengeMachineSetsWonRecord + 1], a
|
||||
.asm_427e4
|
||||
call Func_42833
|
||||
ld a, $01
|
||||
ld bc, $501
|
||||
farcall Func_135ec
|
||||
farcall ChallengeMachine
|
||||
jr .asm_4281a
|
||||
.asm_427f2
|
||||
ld a, VAR_34
|
||||
ld a, VAR_CHALLENGEMACHINE_CURRENT_ROUND
|
||||
farcall GetVarValue
|
||||
ld b, a
|
||||
ld a, $01
|
||||
ld c, $02
|
||||
farcall Func_135ec
|
||||
farcall ChallengeMachine
|
||||
.asm_42801
|
||||
call Func_42833
|
||||
ld bc, $0
|
||||
ld a, c
|
||||
ld [wde13], a
|
||||
ld [wGRChallengeMachineCurWinStreak], a
|
||||
ld a, b
|
||||
ld [wde13 + 1], a
|
||||
ld [wGRChallengeMachineCurWinStreak + 1], a
|
||||
.asm_4280f
|
||||
ld a, EVENT_EB
|
||||
farcall ZeroOutEventValue
|
||||
farcall Func_ec38
|
||||
farcall SaveChallengeMachine
|
||||
.asm_42819
|
||||
ret
|
||||
.asm_4281a
|
||||
ld a, [wde13]
|
||||
ld a, [wGRChallengeMachineCurWinStreak]
|
||||
ld e, a
|
||||
ld a, [wde13 + 1]
|
||||
ld a, [wGRChallengeMachineCurWinStreak + 1]
|
||||
ld d, a
|
||||
cp16_long 50
|
||||
jr nz, .asm_4280f
|
||||
@@ -4666,13 +4666,13 @@ Func_42776:
|
||||
jr .asm_4280f
|
||||
|
||||
Func_42833:
|
||||
ld a, [wde13]
|
||||
ld a, [wGRChallengeMachineCurWinStreak]
|
||||
ld c, a
|
||||
ld a, [wde13 + 1]
|
||||
ld a, [wGRChallengeMachineCurWinStreak + 1]
|
||||
ld b, a
|
||||
ld a, [wde17]
|
||||
ld a, [wGRChallengeMachineWinStreakRecord]
|
||||
ld e, a
|
||||
ld a, [wde17 + 1]
|
||||
ld a, [wGRChallengeMachineWinStreakRecord + 1]
|
||||
ld d, a
|
||||
cp16bc_long de
|
||||
jr nc, .asm_4284f
|
||||
@@ -4680,12 +4680,12 @@ Func_42833:
|
||||
ret
|
||||
.asm_4284f
|
||||
ld a, c
|
||||
ld [wde17], a
|
||||
ld [wGRChallengeMachineWinStreakRecord], a
|
||||
ld a, b
|
||||
ld [wde17 + 1], a
|
||||
ld [wGRChallengeMachineWinStreakRecord + 1], a
|
||||
call EnableSRAM
|
||||
ld hl, sPlayerName
|
||||
ld de, wde29
|
||||
ld de, wGRChallengeMachinePlayerName
|
||||
ld bc, NAME_BUFFER_LENGTH
|
||||
call CopyDataHLtoDE_SaveRegisters
|
||||
call DisableSRAM
|
||||
|
||||
378
src/engine/challenge_machine.asm
Normal file
378
src/engine/challenge_machine.asm
Normal file
@@ -0,0 +1,378 @@
|
||||
; a -> wChallengeMachineIndex (island)
|
||||
; b -> wChallengeMachineCurRound [0, 4]
|
||||
; c -> wChallengeMachineDuelResult
|
||||
ChallengeMachine:
|
||||
call Func_102a4
|
||||
call _ChallengeMachine
|
||||
call Func_102c4
|
||||
ret
|
||||
|
||||
_ChallengeMachine:
|
||||
push bc
|
||||
push de
|
||||
push hl
|
||||
ld [wChallengeMachineIndex], a
|
||||
ld a, c
|
||||
ld [wChallengeMachineDuelResult], a
|
||||
ld a, b
|
||||
ld [wChallengeMachineCurRound], a
|
||||
and a
|
||||
jr nz, .resume_challenge
|
||||
; new challenge
|
||||
call ChallengeMachine_Start
|
||||
ld a, $00
|
||||
jr c, .exit
|
||||
.resume_challenge
|
||||
call ChallengeMachine_DrawCurSet
|
||||
ld a, $01
|
||||
.exit
|
||||
pop hl
|
||||
pop de
|
||||
pop bc
|
||||
ret
|
||||
|
||||
ChallengeMachine_Start:
|
||||
call ClearSpriteAnimsAndSetInitialGraphicsConfiguration
|
||||
lb de, $40, $ff
|
||||
call SetupText
|
||||
call ChallengeMachine_DrawScoreScreen
|
||||
call SetFrameFuncAndFadeFromWhite
|
||||
call ChallengeMachine_StartConfirmation
|
||||
call FadeToWhiteAndUnsetFrameFunc
|
||||
ret
|
||||
|
||||
ChallengeMachine_DrawScoreScreen:
|
||||
lb de, 0, 0
|
||||
lb bc, 20, 13
|
||||
call DrawRegularTextBoxVRAM0
|
||||
lb de, 0, 12
|
||||
lb bc, 20, 6
|
||||
call DrawRegularTextBoxVRAM0
|
||||
ld a, [wChallengeMachineIndex]
|
||||
add a
|
||||
ld c, a
|
||||
ld b, $00
|
||||
ld hl, .name_table
|
||||
add hl, bc
|
||||
ld a, [hli]
|
||||
ld h, [hl]
|
||||
ld l, a
|
||||
lb de, 1, 0
|
||||
call Func_2c4b
|
||||
ld hl, .text_items
|
||||
call PlaceTextItemsVRAM0
|
||||
ldtx hl, ChallengeMachineScoreTitleText
|
||||
lb de, 1, 2
|
||||
call PrintTextNoDelay_InitVRAM0
|
||||
ld hl, wChallengeMachineSetsWonRecords
|
||||
lb de, 14, 4
|
||||
call .PrintScore
|
||||
ld hl, wChallengeMachineCurWinStreaks
|
||||
lb de, 14, 6
|
||||
call .PrintScore
|
||||
ld hl, wChallengeMachineWinStreakRecords
|
||||
lb de, 14, 10
|
||||
call .PrintScore
|
||||
call .PrintPlayerName
|
||||
ret
|
||||
|
||||
.PrintScore:
|
||||
push hl
|
||||
ld a, [wChallengeMachineIndex]
|
||||
add a
|
||||
ld c, a
|
||||
ld b, $00
|
||||
add hl, bc
|
||||
ld a, [hli]
|
||||
ld h, [hl]
|
||||
ld l, a
|
||||
ld a, 3
|
||||
ld b, TRUE
|
||||
farcall PrintNumber
|
||||
pop hl
|
||||
ret
|
||||
|
||||
.text_items:
|
||||
textitem 2, 4, ChallengeMachineSetsWonRecordText
|
||||
textitem 2, 6, ChallengeMachineCurrentWinStreakText
|
||||
textitem 1, 8, ChallengeMachineWinStreakRecordText
|
||||
textitem 17, 4, AttemptsUnitText
|
||||
textitem 17, 6, WinsUnitText
|
||||
textitem 17, 10, WinsUnitText
|
||||
textitems_end
|
||||
|
||||
.name_table:
|
||||
tx TCGChallengeMachineText
|
||||
tx GRChallengeMachineText
|
||||
|
||||
.PrintPlayerName:
|
||||
ld de, wChallengeMachineTempPlayerName
|
||||
call LoadPlayerNameToDE
|
||||
ld a, [wChallengeMachineIndex]
|
||||
REPT 4 ; *= NAME_BUFFER_LENGTH
|
||||
add a
|
||||
ENDR
|
||||
ld c, a
|
||||
ld b, $00
|
||||
ld hl, wChallengeMachinePlayerNames
|
||||
add hl, bc
|
||||
call SavePlayerName
|
||||
ldtx hl, TxRam1Text
|
||||
lb de, 2, 10
|
||||
call PrintTextNoDelay_InitVRAM0
|
||||
ld hl, wChallengeMachineTempPlayerName
|
||||
call SavePlayerName
|
||||
ret
|
||||
|
||||
ChallengeMachine_StartConfirmation:
|
||||
ldtx hl, ChallengeMachineStartPromptText
|
||||
ld a, $01
|
||||
call DrawWideTextBox_PrintTextWithYesOrNoMenu
|
||||
ret
|
||||
|
||||
ChallengeMachine_DrawCurSet:
|
||||
call ClearSpriteAnimsAndSetInitialGraphicsConfiguration
|
||||
lb de, $40, $ff
|
||||
call SetupText
|
||||
call ChallengeMachine_DrawOpponentList
|
||||
call SetFrameFuncAndFadeFromWhite
|
||||
ld a, [wChallengeMachineDuelResult]
|
||||
and a
|
||||
jr z, .next_opponent
|
||||
call ChallengeMachine_PrintRoundResult
|
||||
ld a, [wChallengeMachineDuelResult]
|
||||
cp CHALLENGE_MACHINE_DUEL_LOSS_OR_QUIT
|
||||
jr z, .finished_set
|
||||
ld a, [wChallengeMachineCurRound]
|
||||
cp NUM_CHALLENGE_MACHINE_ROUNDS_PER_SET
|
||||
scf
|
||||
jr z, .finished_set
|
||||
.next_opponent
|
||||
call ChallengeMachine_PrintOpponentDialog
|
||||
call ChallengeMachine_ProceedConfirmation
|
||||
jr nc, .done
|
||||
; quit
|
||||
ld a, CHALLENGE_MACHINE_DUEL_LOSS_OR_QUIT
|
||||
ld [wChallengeMachineDuelResult], a
|
||||
.finished_set
|
||||
call ChallengeMachine_PrintSetResult
|
||||
.done
|
||||
call FadeToWhiteAndUnsetFrameFunc
|
||||
ret
|
||||
|
||||
ChallengeMachine_DrawOpponentList:
|
||||
lb de, 0, 0
|
||||
lb bc, 20, 13
|
||||
call DrawRegularTextBoxVRAM0
|
||||
lb de, 0, 12
|
||||
lb bc, 20, 6
|
||||
call DrawRegularTextBoxVRAM0
|
||||
ld a, [wChallengeMachineIndex]
|
||||
add a
|
||||
ld c, a
|
||||
ld b, $00
|
||||
ld hl, .name_table
|
||||
add hl, bc
|
||||
ld a, [hli]
|
||||
ld h, [hl]
|
||||
ld l, a
|
||||
lb de, 1, 0
|
||||
call Func_2c4b
|
||||
call ChallengeMachine_PrintOpponentInfo
|
||||
ret
|
||||
|
||||
.name_table:
|
||||
tx TCGChallengeMachineText
|
||||
tx GRChallengeMachineText
|
||||
|
||||
ChallengeMachine_PrintOpponentInfo:
|
||||
ld hl, wChallengeMachineOpponentTitlesAndNames
|
||||
ld c, NUM_CHALLENGE_MACHINE_ROUNDS_PER_SET
|
||||
ld e, 2 ; beginning y-pos
|
||||
.loop_rounds
|
||||
call .PrintRoundNumber
|
||||
call .PrintOpponentTitle
|
||||
call .PrintOpponentName
|
||||
; down 2 rows
|
||||
inc e
|
||||
inc e
|
||||
dec c
|
||||
jr nz, .loop_rounds
|
||||
ret
|
||||
|
||||
.PrintRoundNumber:
|
||||
push hl
|
||||
ld a, NUM_CHALLENGE_MACHINE_ROUNDS_PER_SET + 1
|
||||
sub c
|
||||
ld [wTxRam3], a
|
||||
xor a
|
||||
ld [wTxRam3 + 1], a
|
||||
ldtx hl, TxRam3Text
|
||||
ld d, 2 ; x-pos
|
||||
call PrintTextNoDelay_InitVRAM0
|
||||
pop hl
|
||||
ret
|
||||
|
||||
.PrintOpponentTitle:
|
||||
push hl
|
||||
ld a, [hli]
|
||||
ld h, [hl]
|
||||
ld l, a
|
||||
ld d, 4 ; x-pos
|
||||
call PrintTextNoDelay_InitVRAM0
|
||||
pop hl
|
||||
inc hl
|
||||
inc hl
|
||||
ret
|
||||
|
||||
.PrintOpponentName:
|
||||
push hl
|
||||
ld a, [hli]
|
||||
ld h, [hl]
|
||||
ld l, a
|
||||
ld d, 14 ; x-pos
|
||||
call PrintTextNoDelay_InitVRAM0
|
||||
pop hl
|
||||
inc hl
|
||||
inc hl
|
||||
ret
|
||||
|
||||
ChallengeMachine_PrintOpponentDialog:
|
||||
ld a, [wChallengeMachineCurRound]
|
||||
and a
|
||||
jr nz, .next_opponent
|
||||
ldtx hl, ChallengeMachineOpponentListDialogText
|
||||
call PrintScrollableText_NoTextBoxLabelVRAM0
|
||||
.next_opponent
|
||||
ld a, [wChallengeMachineIndex]
|
||||
add a
|
||||
ld c, a
|
||||
ld b, $00
|
||||
ld hl, wChallengeMachineCurWinStreaks
|
||||
add hl, bc
|
||||
ld c, [hl]
|
||||
inc hl
|
||||
ld b, [hl]
|
||||
ld de, 1
|
||||
call CompareBCAndDE
|
||||
ret c
|
||||
ret z
|
||||
ld h, b
|
||||
ld l, c
|
||||
call LoadTxRam3 ; current win streak
|
||||
ld a, [wChallengeMachineCurRound]
|
||||
inc a
|
||||
ld [wTxRam3_b], a ; next round num
|
||||
xor a
|
||||
ld [wTxRam3_b + 1], a
|
||||
ld a, [wChallengeMachineCurRound]
|
||||
add a
|
||||
add a
|
||||
ld c, a
|
||||
ld b, $00
|
||||
ld hl, wChallengeMachineOpponentTitlesAndNames
|
||||
add hl, bc
|
||||
inc hl
|
||||
inc hl
|
||||
ld a, [hli]
|
||||
ld h, [hl]
|
||||
ld l, a
|
||||
call LoadTxRam2 ; next opp name
|
||||
ldtx hl, ChallengeMachineOpponentXDialogText
|
||||
call PrintScrollableText_NoTextBoxLabelVRAM0
|
||||
ret
|
||||
|
||||
ChallengeMachine_ProceedConfirmation:
|
||||
.duel_prompt
|
||||
ldtx hl, ChallengeMachineDuelPromptText
|
||||
ld a, $01
|
||||
call DrawWideTextBox_PrintTextWithYesOrNoMenu
|
||||
ret nc
|
||||
ldtx hl, ChallengeMachineQuitWinStreakWarningText
|
||||
call PrintScrollableText_NoTextBoxLabelVRAM0
|
||||
ldtx hl, ChallengeMachineQuitPromptText
|
||||
ld a, $01
|
||||
call DrawWideTextBox_PrintTextWithYesOrNoMenu
|
||||
jr c, .duel_prompt
|
||||
; quit
|
||||
scf
|
||||
ret
|
||||
|
||||
ChallengeMachine_PrintRoundResult:
|
||||
ld a, [wChallengeMachineCurRound]
|
||||
dec a
|
||||
add a
|
||||
add a
|
||||
ld c, a
|
||||
ld b, $00
|
||||
ld hl, wChallengeMachineOpponentTitlesAndNames
|
||||
add hl, bc
|
||||
inc hl
|
||||
inc hl
|
||||
ld a, [hli] ; last opp name
|
||||
ld [wTxRam2], a
|
||||
ld a, [hl]
|
||||
ld [wTxRam2 + 1], a
|
||||
ld a, [wChallengeMachineCurRound]
|
||||
ld l, a
|
||||
ld h, $00
|
||||
call LoadTxRam3 ; cur round num
|
||||
ld a, [wChallengeMachineDuelResult]
|
||||
dec a
|
||||
jr z, .won_round
|
||||
; lost round
|
||||
ldtx hl, ChallengeMachineLossDialogText
|
||||
call PrintScrollableText_NoTextBoxLabelVRAM0
|
||||
ret
|
||||
.won_round
|
||||
ldtx hl, ChallengeMachineWinDialogText
|
||||
call PrintScrollableText_NoTextBoxLabelVRAM0
|
||||
ret
|
||||
|
||||
ChallengeMachine_PrintSetResult:
|
||||
push af
|
||||
ld a, [wChallengeMachineDuelResult]
|
||||
dec a
|
||||
jr z, .won_set
|
||||
; lost or quit
|
||||
ld a, [wChallengeMachineIndex]
|
||||
add a
|
||||
ld c, a
|
||||
ld b, $00
|
||||
ld hl, wChallengeMachineCurWinStreaks
|
||||
add hl, bc
|
||||
ld a, [hli]
|
||||
ld h, [hl]
|
||||
ld l, a
|
||||
call LoadTxRam3 ; cur win streak
|
||||
ldtx hl, ChallengeMachineLossDialogWinStreakText
|
||||
call PrintScrollableText_NoTextBoxLabelVRAM0
|
||||
jr .exit
|
||||
.won_set
|
||||
call PauseSong_SaveState
|
||||
push af
|
||||
ld a, MUSIC_MEDAL
|
||||
call CallPlaySong
|
||||
pop af
|
||||
ldtx hl, ChallengeMachineWonASetText
|
||||
call PrintTextInWideTextBox
|
||||
call WaitForSongToFinish
|
||||
call ResumeSong_ClearTemp
|
||||
call WaitForWideTextBoxInput
|
||||
ld a, [wChallengeMachineIndex]
|
||||
add a
|
||||
ld c, a
|
||||
ld b, $00
|
||||
ld hl, wChallengeMachineSetsWonRecords
|
||||
add hl, bc
|
||||
ld a, [hli]
|
||||
ld h, [hl]
|
||||
ld l, a
|
||||
call LoadTxRam3 ; sets won
|
||||
ldtx hl, ChallengeMachineSetsWonText
|
||||
call PrintScrollableText_NoTextBoxLabelVRAM0
|
||||
.exit
|
||||
ldtx hl, ChallengeMachineComeAgainText
|
||||
call PrintScrollableText_NoTextBoxLabelVRAM0
|
||||
pop af
|
||||
ret
|
||||
@@ -377,72 +377,76 @@ LoadMainSave:
|
||||
farcall Func_10f78
|
||||
ret
|
||||
|
||||
Func_eb39:
|
||||
ld hl, wddf9
|
||||
InitChallengeMachine:
|
||||
ld hl, wChallengeMachineOpponentTitlesAndNames
|
||||
xor a
|
||||
ld c, $14
|
||||
ld c, (2 + 2) * NUM_CHALLENGE_MACHINE_ROUNDS_PER_SET
|
||||
.loop_init
|
||||
ld [hli], a
|
||||
dec c
|
||||
jr nz, .loop_init
|
||||
|
||||
; init verbosely from wde0d to wde17
|
||||
ld hl, wde0d
|
||||
; init records verbosely
|
||||
ld hl, wChallengeMachineSetsWonRecords
|
||||
xor a
|
||||
REPT 4
|
||||
ld [hli], a
|
||||
ENDR
|
||||
ld hl, wde11
|
||||
ld hl, wChallengeMachineCurWinStreaks
|
||||
xor a
|
||||
REPT 4
|
||||
ld [hli], a
|
||||
ENDR
|
||||
ld hl, wde15
|
||||
ld hl, wChallengeMachineWinStreakRecords
|
||||
xor a
|
||||
REPT 4
|
||||
ld [hli], a
|
||||
ENDR
|
||||
|
||||
ld a, $01
|
||||
ld [wde15], a
|
||||
ld a, $05
|
||||
ld [wde17], a
|
||||
ld hl, .data
|
||||
ld de, wde19
|
||||
ld c, $20
|
||||
; set default scorers
|
||||
ld a, 1
|
||||
ld [wTCGChallengeMachineWinStreakRecord], a
|
||||
ld a, 5
|
||||
ld [wGRChallengeMachineWinStreakRecord], a
|
||||
ld hl, .default_scorers
|
||||
ld de, wChallengeMachinePlayerNames
|
||||
ld c, NAME_BUFFER_LENGTH * 2
|
||||
.loop_copy
|
||||
ld a, [hli]
|
||||
ld [de], a
|
||||
inc de
|
||||
dec c
|
||||
jr nz, .loop_copy
|
||||
call Func_ec38
|
||||
call SaveChallengeMachine
|
||||
ret
|
||||
|
||||
.data
|
||||
db $04, $13, $79, $15, $0f, $6b, $0f, $34, $0f, $2f, $0f, $00, $00, $00, $00, $00, $4e, $0f, $39, $0f, $38, $0f, $5f, $0f, $21, $0f, $00, $00, $00, $00, $00, $00
|
||||
.default_scorers
|
||||
db $04, $13, $79, $15, $0f, $6b, $0f, $34, $0f, $2f, $0f, $00, $00, $00, $00, $00 ; "Dr.オーヤマ"
|
||||
db $4e, $0f, $39, $0f, $38, $0f, $5f, $0f, $21, $0f, $00, $00, $00, $00, $00, $00 ; "ビルリッチ"
|
||||
|
||||
Func_eb97:
|
||||
call Func_ebc6
|
||||
jr nc, .asm_eb9f
|
||||
call Func_eb39
|
||||
.asm_eb9f
|
||||
call Func_ec6c
|
||||
; init verbosely from wde0d to wde13
|
||||
ld hl, wde0d
|
||||
; also init if has invalid save
|
||||
ClearChallengeMachineRecords:
|
||||
call ValidateChallengeMachineSaveData
|
||||
jr nc, .valid
|
||||
call InitChallengeMachine
|
||||
.valid
|
||||
call LoadChallengeMachineSave
|
||||
; init records verbosely
|
||||
ld hl, wChallengeMachineSetsWonRecords
|
||||
xor a
|
||||
REPT 4
|
||||
ld [hli], a
|
||||
ENDR
|
||||
ld hl, wde11
|
||||
ld hl, wChallengeMachineCurWinStreaks
|
||||
xor a
|
||||
REPT 4
|
||||
ld [hli], a
|
||||
ENDR
|
||||
call Func_ec38
|
||||
call SaveChallengeMachine
|
||||
ret
|
||||
|
||||
Func_ebb6:
|
||||
; unused?
|
||||
InitChallengeMachineChecksums:
|
||||
call EnableSRAM
|
||||
xor a
|
||||
ld [sChallengeMachineSaveDataChecksum0], a
|
||||
@@ -451,7 +455,7 @@ Func_ebb6:
|
||||
call DisableSRAM
|
||||
ret
|
||||
|
||||
Func_ebc6:
|
||||
ValidateChallengeMachineSaveData:
|
||||
xor a ; BANK(sChallengeMachineSaveData)
|
||||
ld [wSaveDataCurBankSRAM], a
|
||||
ld a, LOW(WRAMToSRAMMapper_ChallengeMachineSave)
|
||||
@@ -483,15 +487,15 @@ Func_ebc6:
|
||||
ld a, c
|
||||
cp e
|
||||
jr nz, .error
|
||||
ld a, [wde15 + 0]
|
||||
ld a, [wTCGChallengeMachineWinStreakRecord + 0]
|
||||
ld e, a
|
||||
ld a, [wde15 + 1]
|
||||
ld a, [wTCGChallengeMachineWinStreakRecord + 1]
|
||||
ld d, a
|
||||
cp16_long 0
|
||||
jr z, .error
|
||||
ld a, [wde17 + 0]
|
||||
ld a, [wGRChallengeMachineWinStreakRecord + 0]
|
||||
ld e, a
|
||||
ld a, [wde17 + 1]
|
||||
ld a, [wGRChallengeMachineWinStreakRecord + 1]
|
||||
ld d, a
|
||||
cp16_long 0
|
||||
jr z, .error
|
||||
@@ -502,7 +506,7 @@ Func_ebc6:
|
||||
scf
|
||||
ret
|
||||
|
||||
Func_ec38:
|
||||
SaveChallengeMachine:
|
||||
xor a ; BANK(sChallengeMachineSaveData)
|
||||
ld [wSaveDataCurBankSRAM], a
|
||||
ld a, LOW(WRAMToSRAMMapper_ChallengeMachineSave)
|
||||
@@ -524,7 +528,7 @@ Func_ec38:
|
||||
call DisableSRAM
|
||||
ret
|
||||
|
||||
Func_ec6c:
|
||||
LoadChallengeMachineSave:
|
||||
xor a ; BANK(sChallengeMachineSaveData)
|
||||
ld [wSaveDataCurBankSRAM], a
|
||||
ld a, LOW(WRAMToSRAMMapper_ChallengeMachineSave)
|
||||
|
||||
@@ -2421,7 +2421,8 @@ Func_3d02::
|
||||
ret
|
||||
|
||||
; a = MUSIC_* constant
|
||||
Func_3d09::
|
||||
; intended for short songs?
|
||||
CallPlaySong::
|
||||
call PlaySong
|
||||
ret
|
||||
|
||||
|
||||
@@ -2581,7 +2581,7 @@ MainMenuContinueFromDiaryInsteadOfDuelConfirmText:
|
||||
textfw "「つづきを あそぶ」で はじめます?"
|
||||
done
|
||||
|
||||
ChallengeMachineText:
|
||||
TCGChallengeMachineText:
|
||||
textfw "チャレンジマシン"
|
||||
done
|
||||
|
||||
|
||||
@@ -1939,7 +1939,7 @@ TextOffsets::
|
||||
textpointer MainMenuContinueFromDiaryInsteadOfDuelWarning3Text ; 0x078a
|
||||
textpointer MainMenuContinueFromDiaryInsteadOfDuelWarning4Text ; 0x078b
|
||||
textpointer MainMenuContinueFromDiaryInsteadOfDuelConfirmText ; 0x078c
|
||||
textpointer ChallengeMachineText ; 0x078d
|
||||
textpointer TCGChallengeMachineText ; 0x078d
|
||||
textpointer GRChallengeMachineText ; 0x078e
|
||||
textpointer ChallengeMachineScoreTitleText ; 0x078f
|
||||
textpointer ChallengeMachineSetsWonRecordText ; 0x0790
|
||||
|
||||
41
src/wram.asm
41
src/wram.asm
@@ -3473,45 +3473,50 @@ wCardTilemapOffset:: ; ddf4
|
||||
wddf5:: ; ddf5
|
||||
ds $1
|
||||
|
||||
wddf6:: ; ddf6
|
||||
; TCG_ISLAND or GR_ISLAND
|
||||
wChallengeMachineIndex:: ; ddf6
|
||||
ds $1
|
||||
|
||||
wddf7:: ; ddf7
|
||||
wChallengeMachineCurRound:: ; ddf7
|
||||
ds $1
|
||||
|
||||
wddf8:: ; ddf8
|
||||
wChallengeMachineDuelResult:: ; ddf8
|
||||
ds $1
|
||||
|
||||
; challenge machine
|
||||
wddf9:: ; ddf9
|
||||
ds $14
|
||||
; title name, dialog name for 5 rounds of the set
|
||||
wChallengeMachineOpponentTitlesAndNames:: ; ddf9
|
||||
ds (2 + 2) * NUM_CHALLENGE_MACHINE_ROUNDS_PER_SET
|
||||
|
||||
wde0d:: ; de0d
|
||||
wChallengeMachineSetsWonRecords:: ; de0d
|
||||
wTCGChallengeMachineSetsWonRecord:: ; de0d
|
||||
ds $2
|
||||
|
||||
wde0f:: ; de0f
|
||||
wGRChallengeMachineSetsWonRecord:: ; de0f
|
||||
ds $2
|
||||
|
||||
wde11:: ; de11
|
||||
wChallengeMachineCurWinStreaks:: ; de11
|
||||
wTCGChallengeMachineCurWinStreak:: ; de11
|
||||
ds $2
|
||||
|
||||
wde13:: ; de13
|
||||
wGRChallengeMachineCurWinStreak:: ; de13
|
||||
ds $2
|
||||
|
||||
wde15:: ; de15
|
||||
wChallengeMachineWinStreakRecords:: ; de15
|
||||
wTCGChallengeMachineWinStreakRecord:: ; de15
|
||||
ds $2
|
||||
|
||||
wde17:: ; de17
|
||||
wGRChallengeMachineWinStreakRecord:: ; de17
|
||||
ds $2
|
||||
|
||||
wde19:: ; de19
|
||||
ds $10
|
||||
wChallengeMachinePlayerNames:: ; de19
|
||||
wTCGChallengeMachinePlayerName:: ; de19
|
||||
ds NAME_BUFFER_LENGTH
|
||||
|
||||
wde29:: ; de29
|
||||
ds $10
|
||||
wGRChallengeMachinePlayerName:: ; de29
|
||||
ds NAME_BUFFER_LENGTH
|
||||
|
||||
wde39:: ; de39
|
||||
ds $10
|
||||
wChallengeMachineTempPlayerName:: ; de39
|
||||
ds NAME_BUFFER_LENGTH
|
||||
|
||||
wCreditsCmdArg1:: ; de49
|
||||
ds $1
|
||||
|
||||
@@ -3008,12 +3008,12 @@ vars = [
|
||||
"VAR_GR_CHALLENGE_CUP_PRIZE_INDEX",
|
||||
"VAR_TIMES_WON_GR_CHALLENGE_CUP",
|
||||
"VAR_GR_CHALLENGE_CUP_RESULT",
|
||||
"VAR_34",
|
||||
"VAR_35",
|
||||
"VAR_36",
|
||||
"VAR_37",
|
||||
"VAR_38",
|
||||
"VAR_39",
|
||||
"VAR_CHALLENGEMACHINE_CURRENT_ROUND",
|
||||
"VAR_CHALLENGEMACHINE_ROUND1_OPPONENT_DECK_ID",
|
||||
"VAR_CHALLENGEMACHINE_ROUND2_OPPONENT_DECK_ID",
|
||||
"VAR_CHALLENGEMACHINE_ROUND3_OPPONENT_DECK_ID",
|
||||
"VAR_CHALLENGEMACHINE_ROUND4_OPPONENT_DECK_ID",
|
||||
"VAR_CHALLENGEMACHINE_ROUND5_OPPONENT_DECK_ID",
|
||||
"VAR_CARD_DUNGEON_PROGRESS",
|
||||
"VAR_3B",
|
||||
"VAR_NPC_DECK_ID",
|
||||
|
||||
Reference in New Issue
Block a user