mirror of
https://gitlab.com/xCrystal/pokecrystal-board.git
synced 2024-09-09 09:51:34 -07:00
afc92eadc1
All of the functions called by it are prefixed with BattleTowerRoomMenu, but a bunch of them seem more generic than that, since they're part of different mobile menus. Also called another menu jumptable BattleTowerRoomMenu2 for the lack of a better name (only the Yes/No menu functions are used in western crystal). The names of the more generic functions should be fixed when we start labelling other menus.
1773 lines
27 KiB
NASM
Executable File
1773 lines
27 KiB
NASM
Executable File
BattleTowerRoomMenu: ; 1700b0
|
|
; special
|
|
call InitBattleTowerChallengeRAM
|
|
callba _BattleTowerRoomMenu
|
|
ret
|
|
; 1700ba
|
|
|
|
Function1700ba: ; 1700ba
|
|
call InitBattleTowerChallengeRAM
|
|
callba Function11811a
|
|
ret
|
|
; 1700c4
|
|
|
|
Function1700c4: ; 1700c4
|
|
ld a, [rSVBK]
|
|
push af
|
|
ld a, $3
|
|
ld [rSVBK], a
|
|
|
|
call Function17042c
|
|
|
|
ld a, $5
|
|
call GetSRAMBank
|
|
ld a, $1
|
|
ld [$be45], a
|
|
xor a
|
|
ld [$be46], a
|
|
ld hl, w3_dffc
|
|
ld de, $aa41
|
|
ld bc, 4
|
|
call CopyBytes
|
|
ld hl, w3_d202Name
|
|
ld de, $aa8e
|
|
ld bc, 7 * $cc ; length of battle tower struct from japanese games?
|
|
call CopyBytes
|
|
ld hl, $aa5d ; some sort of count
|
|
ld a, [hl]
|
|
inc [hl]
|
|
inc hl
|
|
sla a
|
|
sla a
|
|
ld e, a
|
|
ld d, $0
|
|
add hl, de
|
|
ld e, l
|
|
ld d, h
|
|
ld hl, w3_dffc
|
|
ld bc, 4
|
|
call CopyBytes
|
|
call CloseSRAM
|
|
pop af
|
|
ld [rSVBK], a
|
|
ret
|
|
; 170114
|
|
|
|
Function170114: ; 170114
|
|
call InitBattleTowerChallengeRAM
|
|
call .Function170121
|
|
callba Function11805f
|
|
ret
|
|
; 170121
|
|
|
|
.Function170121: ; 170121
|
|
ld a, $5
|
|
call GetSRAMBank
|
|
ld hl, $a948
|
|
ld de, wMisc
|
|
ld bc, $f6 ; 246
|
|
call CopyBytes
|
|
call CloseSRAM
|
|
call Function170c8b
|
|
ret
|
|
; 170139
|
|
|
|
Function170139: ; 170139
|
|
; Convert the 4-digit decimal number at 5:aa41 into binary
|
|
ld a, $5
|
|
call GetSRAMBank
|
|
ld de, $aa41
|
|
ld h, $0
|
|
ld l, h
|
|
ld bc, 1000
|
|
call .DecToBin
|
|
ld bc, 100
|
|
call .DecToBin
|
|
ld bc, 10
|
|
call .DecToBin
|
|
ld a, [de]
|
|
ld c, a
|
|
ld b, $0
|
|
add hl, bc
|
|
call CloseSRAM
|
|
; Store that number in wMisc
|
|
ld a, h
|
|
ld [wMisc], a
|
|
ld a, l
|
|
ld [wMisc + 1], a
|
|
ld hl, wBT_OTTempPkmn1DVs
|
|
ld a, [PlayerID]
|
|
ld [hli], a
|
|
ld a, [PlayerID + 1]
|
|
ld [hli], a
|
|
ld a, [wSecretID]
|
|
ld [hli], a
|
|
ld a, [wSecretID + 1]
|
|
ld [hli], a
|
|
ld e, l
|
|
ld d, h
|
|
ld hl, PlayerName
|
|
ld bc, 5 ; Japanese name length
|
|
call CopyBytes
|
|
ld bc, PlayerID
|
|
ld de, PlayerGender
|
|
callba GetMobileOTTrainerClass
|
|
ld de, wBT_OTTempPkmn1CaughtGender
|
|
ld a, c
|
|
ld [de], a
|
|
inc de
|
|
ld a, PartyMons % $100
|
|
ld [wcd49], a
|
|
ld a, PartyMons / $100
|
|
ld [wcd4a], a
|
|
ld a, PartyMonNicknames % $100
|
|
ld [wcd4b], a
|
|
ld a, PartyMonNicknames / $100
|
|
ld [wcd4c], a
|
|
ld a, 3
|
|
.CopyLoop:
|
|
push af
|
|
ld a, [wcd49]
|
|
ld l, a
|
|
ld a, [wcd4a]
|
|
ld h, a
|
|
ld bc, PARTYMON_STRUCT_LENGTH
|
|
call CopyBytes
|
|
ld a, l
|
|
ld [wcd49], a
|
|
ld a, h
|
|
ld [wcd4a], a
|
|
ld a, [wcd4b]
|
|
ld l, a
|
|
ld a, [wcd4c]
|
|
ld h, a
|
|
ld bc, $0006
|
|
call CopyBytes
|
|
ld a, l
|
|
ld [wcd4b], a
|
|
ld a, h
|
|
ld [wcd4c], a
|
|
pop af
|
|
dec a
|
|
jr nz, .CopyLoop
|
|
ld a, $4
|
|
call GetSRAMBank
|
|
ld hl, $a013
|
|
ld bc, $24
|
|
call CopyBytes
|
|
call CloseSRAM
|
|
ld a, $5
|
|
call GetSRAMBank
|
|
ld hl, $a894
|
|
ld bc, 6
|
|
call CopyBytes
|
|
ld hl, wMisc
|
|
ld de, $a948
|
|
ld bc, $f6
|
|
call CopyBytes
|
|
call CloseSRAM
|
|
ret
|
|
; 17020c
|
|
|
|
.DecToBin: ; 17020c
|
|
ld a, [de]
|
|
inc de
|
|
and a
|
|
ret z
|
|
|
|
.digit_loop
|
|
add hl, bc
|
|
dec a
|
|
jr nz, .digit_loop
|
|
ret
|
|
; 170215
|
|
|
|
BattleTowerBattle: ; 170215
|
|
xor a
|
|
ld [wBattleTowerBattleEnded], a
|
|
call _BattleTowerBattle
|
|
ret
|
|
; 17021d
|
|
|
|
EmptySpecial_17021d: ; 17021d
|
|
ret
|
|
; 17021e
|
|
|
|
InitBattleTowerChallengeRAM: ; 17021e
|
|
xor a
|
|
ld [wBattleTowerBattleEnded], a
|
|
ld [wNrOfBeatenBattleTowerTrainers], a
|
|
ld [wcf65], a
|
|
ld [wcf66], a
|
|
ret
|
|
; 17022c
|
|
|
|
_BattleTowerBattle: ; 17022c
|
|
.loop
|
|
call .do_dw
|
|
call DelayFrame
|
|
ld a, [wBattleTowerBattleEnded]
|
|
cp $1
|
|
jr nz, .loop
|
|
ret
|
|
; 17023a
|
|
|
|
.do_dw ; 17023a
|
|
ld a, [wBattleTowerBattleEnded]
|
|
ld e, a
|
|
ld d, 0
|
|
ld hl, .dw
|
|
add hl, de
|
|
add hl, de
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
jp hl
|
|
; 170249
|
|
|
|
.dw ; 170249
|
|
dw RunBattleTowerTrainer
|
|
dw SkipBattleTowerTrainer
|
|
; 17024d
|
|
|
|
RunBattleTowerTrainer: ; 17024d
|
|
ld a, [Options]
|
|
push af
|
|
ld hl, Options
|
|
set BATTLE_SHIFT, [hl] ; SET MODE
|
|
|
|
ld a, [InBattleTowerBattle]
|
|
push af
|
|
or $1
|
|
ld [InBattleTowerBattle], a
|
|
|
|
xor a
|
|
ld [wLinkMode], a
|
|
callba TrainerRankings_Healings
|
|
callba HealParty
|
|
call ReadBTTrainerParty
|
|
call Clears5_a89a
|
|
|
|
predef StartBattle
|
|
|
|
callba LoadPokemonData
|
|
callba HealParty
|
|
ld a, [wBattleResult]
|
|
ld [ScriptVar], a
|
|
and a
|
|
jr nz, .lost
|
|
ld a, BANK(sNrOfBeatenBattleTowerTrainers)
|
|
call GetSRAMBank
|
|
ld a, [sNrOfBeatenBattleTowerTrainers]
|
|
ld [wNrOfBeatenBattleTowerTrainers], a
|
|
call CloseSRAM
|
|
ld hl, StringBuffer3
|
|
ld a, [wNrOfBeatenBattleTowerTrainers]
|
|
add "1"
|
|
ld [hli], a
|
|
ld a, "@"
|
|
ld [hl], a
|
|
|
|
.lost
|
|
pop af
|
|
ld [InBattleTowerBattle], a
|
|
pop af
|
|
ld [Options], a
|
|
ld a, $1
|
|
ld [wBattleTowerBattleEnded], a
|
|
ret
|
|
|
|
|
|
ReadBTTrainerParty: ; 1702b7
|
|
; Initialise the BattleTower-Trainer and his Pkmn
|
|
call CopyBTTrainer_FromBT_OT_TowBT_OTTemp
|
|
|
|
; Check the nicknames for illegal characters, and replace bad nicknames
|
|
; with their species names.
|
|
ld de, wBT_OTTempPkmn1Name ; $c643
|
|
ld c, PKMN_NAME_LENGTH
|
|
callba CheckStringForErrors
|
|
jr nc, .skip_mon_1
|
|
|
|
ld a, [wBT_OTTempPkmn1]
|
|
ld [wNamedObjectIndexBuffer], a
|
|
call GetPokemonName
|
|
ld l, e
|
|
ld h, d
|
|
ld de, wBT_OTTempPkmn1Name ; $c643
|
|
ld bc, PKMN_NAME_LENGTH
|
|
call CopyBytes
|
|
|
|
.skip_mon_1
|
|
ld de, wBT_OTTempPkmn2Name ; $c67e
|
|
ld c, PKMN_NAME_LENGTH
|
|
callba CheckStringForErrors
|
|
jr nc, .skip_mon_2
|
|
ld a, [wBT_OTTempPkmn2] ; [$c64e]
|
|
ld [wNamedObjectIndexBuffer], a
|
|
call GetPokemonName
|
|
ld l, e
|
|
ld h, d
|
|
ld de, wBT_OTTempPkmn2Name ; $c67e
|
|
ld bc, PKMN_NAME_LENGTH
|
|
call CopyBytes
|
|
|
|
.skip_mon_2
|
|
ld de, wBT_OTTempPkmn3Name ; $c686 + 51 = $c6b9
|
|
ld c, PKMN_NAME_LENGTH
|
|
callba CheckStringForErrors
|
|
jr nc, .skip_mon_3
|
|
ld a, [wBT_OTTempPkmn3] ; [$c689]
|
|
ld [wNamedObjectIndexBuffer], a
|
|
call GetPokemonName
|
|
ld l, e
|
|
ld h, d
|
|
ld de, wBT_OTTempPkmn3Name ; $c686 + 51 = $c6b9
|
|
ld bc, PKMN_NAME_LENGTH
|
|
call CopyBytes
|
|
|
|
.skip_mon_3
|
|
; Add the terminator character to each of these names
|
|
ld a, "@"
|
|
ld [wBT_OTTempPkmn1NameEnd - 1], a ; $c64d
|
|
ld [wBT_OTTempPkmn2NameEnd - 1], a ; $c688
|
|
ld [wBT_OTTempPkmn3NameEnd - 1], a ; $c68a + 57 = $c6c3
|
|
; Fix errors in the movesets
|
|
call CheckBTMonMovesForErrors
|
|
; Repair the trainer name if needed, then copy it to OTPlayerName
|
|
ld de, wBT_OTTempName
|
|
ld c, NAME_LENGTH - 1
|
|
callba CheckStringForErrors
|
|
jr nc, .trainer_name_okay
|
|
ld hl, BT_ChrisName
|
|
jr .done_trainer_name
|
|
|
|
.trainer_name_okay
|
|
ld hl, wBT_OTTempName ; 0xc608
|
|
|
|
.done_trainer_name
|
|
ld de, OTPlayerName
|
|
ld bc, NAME_LENGTH - 1
|
|
call CopyBytes
|
|
ld a, "@"
|
|
ld [de], a
|
|
|
|
ld hl, wBT_OTTempTrainerClass
|
|
ld a, [hli]
|
|
ld [OtherTrainerClass], a
|
|
ld a, OTPartyMonNicknames % $100
|
|
ld [BGMapBuffer], a
|
|
ld a, OTPartyMonNicknames / $100
|
|
ld [BGMapBuffer + 1], a
|
|
|
|
; Copy Pkmn into Memory from the address in hl
|
|
ld de, OTPartyMon1Species
|
|
ld bc, OTPartyCount
|
|
ld a, BATTLETOWER_NROFPKMNS ; Number of Pkmn the BattleTower-Trainer has
|
|
ld [bc], a
|
|
inc bc
|
|
.otpartymon_loop
|
|
push af
|
|
ld a, [hl]
|
|
ld [bc], a
|
|
inc bc
|
|
push bc
|
|
ld bc, PARTYMON_STRUCT_LENGTH
|
|
call CopyBytes
|
|
push de
|
|
ld a, [BGMapBuffer]
|
|
ld e, a
|
|
ld a, [BGMapBuffer + 1]
|
|
ld d, a
|
|
ld bc, PKMN_NAME_LENGTH
|
|
call CopyBytes
|
|
ld a, e
|
|
ld [BGMapBuffer], a
|
|
ld a, d
|
|
ld [BGMapBuffer + 1], a
|
|
pop de
|
|
pop bc
|
|
pop af
|
|
dec a
|
|
and a
|
|
jr nz, .otpartymon_loop
|
|
ld a, -1
|
|
ld [bc], a
|
|
ret
|
|
; 170394
|
|
|
|
ValidateBTParty: ; 170394
|
|
; Check for and fix errors in party data
|
|
ld hl, wBT_OTTempPkmn1Species
|
|
ld d, BATTLETOWER_NROFPKMNS
|
|
.pkmn_loop
|
|
push de
|
|
push hl
|
|
ld b, h
|
|
ld c, l
|
|
ld a, [hl]
|
|
and a
|
|
idx = $ff
|
|
rept ($ff +- NUM_POKEMON)
|
|
jr z, .invalid
|
|
cp idx
|
|
idx = idx +- 1
|
|
endr
|
|
jr nz, .valid
|
|
|
|
.invalid
|
|
ld a, SMEARGLE
|
|
ld [hl], a
|
|
|
|
.valid
|
|
ld [CurSpecies], a
|
|
call GetBaseData
|
|
ld a, $5
|
|
call GetSRAMBank
|
|
ld a, [$b2fb] ; s5_b2fb ; max level?
|
|
call CloseSRAM
|
|
ld e, a
|
|
ld hl, MON_LEVEL
|
|
add hl, bc
|
|
ld a, [hl]
|
|
cp MIN_LEVEL
|
|
ld a, MIN_LEVEL
|
|
jr c, .load
|
|
ld a, [hl]
|
|
cp e
|
|
jr c, .dont_load
|
|
ld a, e
|
|
|
|
.load
|
|
ld [hl], a
|
|
|
|
.dont_load
|
|
ld [CurPartyLevel], a
|
|
ld hl, MON_MOVES
|
|
add hl, bc
|
|
ld d, NUM_MOVES - 1
|
|
ld a, [hli]
|
|
and a
|
|
jr z, .not_move
|
|
cp NUM_ATTACKS + 1
|
|
jr nc, .not_move
|
|
jr .valid_move
|
|
|
|
.not_move
|
|
dec hl
|
|
ld a, POUND
|
|
ld [hli], a
|
|
xor a
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hl], a
|
|
jr .done_moves
|
|
|
|
.valid_move
|
|
ld a, [hl]
|
|
cp NUM_ATTACKS + 1
|
|
jr c, .next
|
|
ld [hl], $0
|
|
|
|
.next
|
|
inc hl
|
|
dec d
|
|
jr nz, .valid_move
|
|
|
|
.done_moves
|
|
ld hl, MON_MAXHP
|
|
add hl, bc
|
|
ld d, h
|
|
ld e, l
|
|
push hl
|
|
push de
|
|
ld hl, MON_STAT_EXP - 1
|
|
add hl, bc
|
|
ld b, $1
|
|
predef CalcPkmnStats
|
|
pop de
|
|
pop hl
|
|
dec de
|
|
dec de
|
|
ld a, [hli]
|
|
ld [de], a
|
|
inc de
|
|
ld a, [hl]
|
|
ld [de], a
|
|
pop hl
|
|
ld bc, PARTYMON_STRUCT_LENGTH + PKMN_NAME_LENGTH
|
|
add hl, bc
|
|
pop de
|
|
dec d
|
|
jp nz, .pkmn_loop
|
|
ret
|
|
; 170426
|
|
|
|
BT_ChrisName: ; 170426
|
|
db "CHRIS@"
|
|
; 17042c
|
|
|
|
Function17042c: ; 17042c
|
|
ld hl, w3_d202TrainerData
|
|
ld a, BATTLETOWER_NROFTRAINERS
|
|
.loop
|
|
push af
|
|
push hl
|
|
ld c, BATTLETOWER_TRAINERDATALENGTH / 2
|
|
.loop2
|
|
; First byte is a comparison value.
|
|
ld a, [hli]
|
|
ld b, a
|
|
; Second byte is a lookup index.
|
|
ld a, [hli]
|
|
and a
|
|
jr z, .empty
|
|
cp 15
|
|
jr nc, .copy_data
|
|
|
|
push hl
|
|
ld hl, Unknown_170470
|
|
dec a
|
|
ld e, a
|
|
ld d, 0
|
|
add hl, de
|
|
ld a, [hl]
|
|
pop hl
|
|
|
|
; If Unknown_170470[a-1] <= b, overwrite the current trainer's data
|
|
; with Unknown17047e, and exit the inner loop.
|
|
cp b
|
|
jr c, .copy_data
|
|
jr z, .copy_data
|
|
jr .next_iteration
|
|
|
|
.empty
|
|
; If a == 0 and b >= $fc, overwrite the current trainer's data with
|
|
; Unknown17047e, and exit the inner loop.
|
|
ld a, b
|
|
cp $fc
|
|
jr nc, .copy_data
|
|
|
|
.next_iteration
|
|
dec c
|
|
jr nz, .loop2
|
|
jr .next_trainer
|
|
|
|
.copy_data
|
|
pop de
|
|
push de
|
|
ld hl, Unknown_17047e
|
|
ld bc, BATTLETOWER_TRAINERDATALENGTH
|
|
call CopyBytes
|
|
|
|
.next_trainer
|
|
pop hl
|
|
ld de, BATTLE_TOWER_STRUCT_LENGTH
|
|
add hl, de
|
|
pop af
|
|
dec a
|
|
jr nz, .loop
|
|
ret
|
|
; 170470
|
|
|
|
Unknown_170470:
|
|
db $12
|
|
db $24
|
|
db $45
|
|
db $45
|
|
db $42
|
|
db $42
|
|
db $45
|
|
db $42
|
|
db $27
|
|
db $27
|
|
db $45
|
|
db $27
|
|
db $42
|
|
db $24
|
|
|
|
Unknown_17047e:
|
|
; see data/battle_tower_2.asm
|
|
db $03, 4
|
|
db $05, 8
|
|
db $03, 5
|
|
db $0e, 6
|
|
db $03, 2
|
|
db $00, 0
|
|
db $39, 7
|
|
db $07, 4
|
|
db $00, 5
|
|
db $04, 7
|
|
db $01, 5
|
|
db $00, 0
|
|
db $0f, 5
|
|
db $14, 7
|
|
db $05, 5
|
|
db $11, 12
|
|
db $0c, 6
|
|
db $06, 4
|
|
|
|
|
|
CopyBTTrainer_FromBT_OT_TowBT_OTTemp: ; 1704a2
|
|
; copy the BattleTower-Trainer data that lies at 'BT_OTTrainer' to 'wBT_OTTemp'
|
|
ld a, [rSVBK]
|
|
push af
|
|
ld a, $3 ; BANK(BT_OTTrainer)
|
|
ld [rSVBK], a
|
|
|
|
ld hl, BT_OTTrainer ; $d100
|
|
ld de, wBT_OTTemp ; wMisc
|
|
ld bc, BATTLE_TOWER_STRUCT_LENGTH
|
|
call CopyBytes
|
|
|
|
pop af
|
|
ld [rSVBK], a
|
|
|
|
ld a, BANK(sBattleTowerChallengeState)
|
|
call GetSRAMBank
|
|
ld a, BATTLETOWER_CHALLENGE_IN_PROGESS
|
|
ld [sBattleTowerChallengeState], a
|
|
ld hl, sNrOfBeatenBattleTowerTrainers
|
|
inc [hl]
|
|
call CloseSRAM
|
|
SkipBattleTowerTrainer: ; 1704c9
|
|
ret
|
|
; 1704ca
|
|
|
|
Function1704ca: ; 1704ca
|
|
; unreferenced mobile function
|
|
ld a, [$be46]
|
|
cp $7
|
|
jr c, .asm_1704d3
|
|
ld a, $6
|
|
|
|
.asm_1704d3
|
|
ld hl, $afce
|
|
ld de, -$e0
|
|
.asm_1704d9
|
|
and a
|
|
jr z, .asm_1704e0
|
|
add hl, de
|
|
dec a
|
|
jr .asm_1704d9
|
|
|
|
.asm_1704e0
|
|
ret
|
|
; 1704e1
|
|
|
|
Function1704e1: ; 1704e1
|
|
; unreferenced special
|
|
call SpeechTextBox
|
|
call FadeToMenu
|
|
call InitBattleTowerChallengeRAM
|
|
call .JumptableLoop
|
|
call CloseSubmenu
|
|
ret
|
|
; 1704f1
|
|
|
|
.JumptableLoop: ; 1704f1
|
|
call ClearBGPalettes
|
|
call ClearSprites
|
|
call ClearScreen
|
|
.loop
|
|
call JoyTextDelay
|
|
ld a, [wJumptableIndex]
|
|
bit 7, a
|
|
jr nz, .done
|
|
call .DoJumptable
|
|
callba ReloadMapPart
|
|
jr .loop
|
|
|
|
.done
|
|
ret
|
|
; 170510
|
|
|
|
.DoJumptable: ; 170510
|
|
ld a, [wJumptableIndex]
|
|
ld e, a
|
|
ld d, 0
|
|
ld hl, .dw
|
|
add hl, de
|
|
add hl, de
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
jp hl
|
|
; 17051f
|
|
|
|
.dw ; 17051f
|
|
dw .Jumptable_0
|
|
dw .Jumptable_1
|
|
dw .Jumptable_2
|
|
; 170525
|
|
|
|
.Jumptable_0: ; 170525
|
|
ld a, $5
|
|
call GetSRAMBank
|
|
|
|
ld hl, $a89c
|
|
ld de, StringBuffer3
|
|
ld bc, $16
|
|
call CopyBytes
|
|
|
|
ld hl, $a8b2
|
|
ld de, wMisc
|
|
ld bc, $0096
|
|
call CopyBytes
|
|
|
|
call CloseSRAM
|
|
hlcoord 1, 1
|
|
ld de, StringBuffer3
|
|
call PlaceString
|
|
hlcoord 1, 3
|
|
ld de, .String_Mail
|
|
call PlaceString
|
|
hlcoord 4, 3
|
|
ld de, StringBuffer4
|
|
call PlaceString
|
|
hlcoord 8, 3
|
|
ld de, .String_PastReaders
|
|
call PlaceString
|
|
call .DrawBorder
|
|
call .PlaceTextItems
|
|
jr .NextJumptableFunction
|
|
|
|
|
|
.Jumptable_1:
|
|
call SetPalettes
|
|
call .NextJumptableFunction
|
|
|
|
|
|
.Jumptable_2:
|
|
ld hl, hJoyPressed
|
|
ld a, [hl]
|
|
and A_BUTTON
|
|
jr nz, .pressed_a_or_b
|
|
ld a, [hl]
|
|
and B_BUTTON
|
|
jr nz, .pressed_a_or_b
|
|
ld a, [hl]
|
|
and D_UP
|
|
jr nz, .pressed_up
|
|
ld a, [hl]
|
|
and D_DOWN
|
|
jr nz, .pressed_down
|
|
ret
|
|
|
|
.pressed_up
|
|
ld a, [wNrOfBeatenBattleTowerTrainers]
|
|
and a
|
|
ret z
|
|
sub 15
|
|
ld [wNrOfBeatenBattleTowerTrainers], a
|
|
call .PlaceTextItems
|
|
ret
|
|
|
|
.pressed_down
|
|
ld a, [wNrOfBeatenBattleTowerTrainers]
|
|
cp 60
|
|
ret z
|
|
add 15
|
|
ld [wNrOfBeatenBattleTowerTrainers], a
|
|
call .PlaceTextItems
|
|
ret
|
|
|
|
.pressed_a_or_b
|
|
ld hl, wJumptableIndex
|
|
set 7, [hl]
|
|
ret
|
|
|
|
.NextJumptableFunction:
|
|
ld hl, wJumptableIndex
|
|
inc [hl]
|
|
ret
|
|
; 1705b7
|
|
|
|
.DrawBorder: ; 1705b7
|
|
hlcoord 0, 4
|
|
ld a, $79
|
|
ld [hli], a
|
|
ld c, SCREEN_WIDTH - 2
|
|
.top_border_loop
|
|
ld a, $7a
|
|
ld [hli], a
|
|
dec c
|
|
jr nz, .top_border_loop
|
|
ld a, $7b
|
|
ld [hli], a
|
|
ld de, SCREEN_WIDTH
|
|
ld c, 12
|
|
.left_border_loop
|
|
ld a, $7c
|
|
ld [hl], a
|
|
add hl, de
|
|
dec c
|
|
jr nz, .left_border_loop
|
|
ld a, $7d
|
|
ld [hli], a
|
|
ld c, SCREEN_WIDTH - 2
|
|
.bottom_border_loop
|
|
ld a, $7a
|
|
ld [hli], a
|
|
dec c
|
|
jr nz, .bottom_border_loop
|
|
ld a, $7e
|
|
ld [hl], a
|
|
ld de, -SCREEN_WIDTH
|
|
add hl, de
|
|
ld c, 12
|
|
.right_border_loop
|
|
ld a, $7c
|
|
ld [hl], a
|
|
add hl, de
|
|
dec c
|
|
jr nz, .right_border_loop
|
|
ret
|
|
; 1705f0
|
|
|
|
.PlaceTextItems: ; 1705f0
|
|
call .ClearBox
|
|
call .PlaceUpDownArrows
|
|
ld a, $50
|
|
ld [wcd4e], a
|
|
ld hl, wMisc
|
|
ld a, [wNrOfBeatenBattleTowerTrainers]
|
|
ld c, a
|
|
xor a
|
|
ld b, a
|
|
add hl, bc
|
|
push hl
|
|
pop bc
|
|
hlcoord 1, 6
|
|
ld a, 6
|
|
.loop1
|
|
push af
|
|
push hl
|
|
ld a, 3
|
|
.loop2
|
|
push af
|
|
ld de, wcd49
|
|
ld a, [bc]
|
|
and a
|
|
jr z, .fill_with_e3
|
|
; .copy
|
|
ld a, 5
|
|
.loop3a
|
|
push af
|
|
ld a, [bc]
|
|
ld [de], a
|
|
inc bc
|
|
inc de
|
|
pop af
|
|
dec a
|
|
jr nz, .loop3a
|
|
jr .rejoin
|
|
|
|
.fill_with_e3
|
|
ld a, 5
|
|
.loop3b
|
|
push af
|
|
ld a, $e3
|
|
ld [de], a
|
|
inc de
|
|
inc bc
|
|
pop af
|
|
dec a
|
|
jr nz, .loop3b
|
|
|
|
.rejoin
|
|
ld de, wcd49
|
|
push bc
|
|
call PlaceString
|
|
ld de, 6
|
|
add hl, de
|
|
pop bc
|
|
pop af
|
|
dec a
|
|
jr nz, .loop2
|
|
pop hl
|
|
ld de, $28
|
|
add hl, de
|
|
pop af
|
|
dec a
|
|
jr nz, .loop1
|
|
ret
|
|
; 17064b
|
|
|
|
.ClearBox: ; 17064b
|
|
hlcoord 1, 5
|
|
xor a
|
|
ld b, 12
|
|
.clearbox_row
|
|
ld c, SCREEN_WIDTH - 2
|
|
.clearbox_column
|
|
ld [hli], a
|
|
dec c
|
|
jr nz, .clearbox_column
|
|
inc hl
|
|
inc hl
|
|
dec b
|
|
jr nz, .clearbox_row
|
|
ret
|
|
; 17065d
|
|
|
|
.PlaceUpDownArrows: ; 17065d
|
|
ld a, [wNrOfBeatenBattleTowerTrainers]
|
|
and a
|
|
jr z, .nope
|
|
hlcoord 18, 5
|
|
ld a, "▲"
|
|
ld [hl], a
|
|
|
|
.nope
|
|
ld a, [wNrOfBeatenBattleTowerTrainers]
|
|
cp 60
|
|
ret z
|
|
hlcoord 18, 16
|
|
ld a, "▼"
|
|
ld [hl], a
|
|
ret
|
|
; 170676
|
|
|
|
.String_Mail: ; 170676
|
|
db "ルーム@"
|
|
; 17067a
|
|
|
|
.String_PastReaders: ; 17067a
|
|
db "れきだいりーダーいちらん@"
|
|
; 170687
|
|
|
|
BattleTowerAction: ; 170687
|
|
ld a, [ScriptVar]
|
|
ld e, a
|
|
ld d, 0
|
|
ld hl, .dw
|
|
add hl, de
|
|
add hl, de
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
jp hl
|
|
; 170696
|
|
|
|
|
|
.dw ; 170696 (5c:4696)
|
|
dw BattleTowerAction_CheckExplanationRead ; 0x00
|
|
dw BattleTowerAction_SetExplanationRead ; 0x01
|
|
dw BattleTowerAction_GetChallengeState ; 0x02
|
|
dw BattleTowerAction_SetByteToQuickSaveChallenge ; 0x03
|
|
dw BattleTowerAction_SetByteToCancelChallenge ; 0x04
|
|
dw Function1707ac ; 0x05
|
|
dw Function1707f4 ; 0x06
|
|
dw SaveBattleTowerLevelGroup ; 0x07
|
|
dw LoadBattleTowerLevelGroup ; 0x08
|
|
dw BattleTower_CheckSaveFileExistsAndIsYours ; 0x09
|
|
dw Function1708b1 ; 0x0a
|
|
dw CheckMobileEventIndex ; 0x0b
|
|
dw Function1708c8 ; 0x0c
|
|
dw Function1708f0 ; 0x0d
|
|
dw BattleTowerAction_EggTicket ; 0x0e
|
|
dw Function1709aa ; 0x0f
|
|
dw Function1709bb ; 0x10
|
|
dw Function170a9c ; 0x11
|
|
dw Function170aa0 ; 0x12
|
|
dw Function170aaf ; 0x13
|
|
dw Function170abe ; 0x14
|
|
dw Function170ad7 ; 0x15
|
|
dw Function170807 ; 0x16
|
|
dw Function17081d ; 0x17
|
|
dw BattleTowerAction_LevelCheck ; 0x18
|
|
dw BattleTowerAction_UbersCheck ; 0x19
|
|
dw ResetBattleTowerTrainersSRAM ; 0x1a
|
|
dw BattleTower_GiveReward ; 0x1b
|
|
dw Function17071b ; 0x1c
|
|
dw Function170729 ; 0x1d
|
|
dw BattleTower_RandomlyChooseReward ; 0x1e
|
|
dw BattleTower_SaveOptions ; 0x1f
|
|
|
|
|
|
; Reset the save memory for BattleTower-Trainers (Counter and all 7 TrainerBytes)
|
|
ResetBattleTowerTrainersSRAM: ; 1706d6 (5c:46d6) BattleTowerAction $1a
|
|
ld a, BANK(sBTTrainers)
|
|
call GetSRAMBank
|
|
|
|
ld a, $ff
|
|
ld hl, sBTTrainers
|
|
ld bc, BATTLETOWER_NROFTRAINERS
|
|
call ByteFill
|
|
|
|
xor a
|
|
ld [sNrOfBeatenBattleTowerTrainers], a
|
|
|
|
call CloseSRAM
|
|
|
|
ret
|
|
|
|
BattleTower_GiveReward: ; 1706ee (5c:46ee) BattleTowerAction $1b
|
|
ld a, BANK(sBattleTowerReward)
|
|
call GetSRAMBank
|
|
|
|
ld a, [sBattleTowerReward]
|
|
call CloseSRAM
|
|
ld [ScriptVar], a
|
|
ld hl, NumItems
|
|
ld a, [hli]
|
|
cp MAX_ITEMS
|
|
ret c
|
|
ld b, MAX_ITEMS
|
|
ld a, [ScriptVar]
|
|
ld c, a
|
|
.loop
|
|
ld a, [hli]
|
|
cp c
|
|
jr nz, .next
|
|
ld a, [hl]
|
|
cp 95
|
|
ret c
|
|
.next
|
|
inc hl
|
|
dec b
|
|
jr nz, .loop
|
|
ld a, POTION
|
|
ld [ScriptVar], a
|
|
ret
|
|
|
|
Function17071b: ; 17071b (5c:471b) BattleTowerAction $1c
|
|
ld a, BANK(sBattleTowerChallengeState)
|
|
call GetSRAMBank
|
|
ld a, BATTLETOWER_WON_CHALLENGE
|
|
ld [sBattleTowerChallengeState], a
|
|
call CloseSRAM
|
|
ret
|
|
|
|
Function170729: ; 170729 (5c:4729) BattleTowerAction $1d
|
|
ld a, BANK(sBattleTowerChallengeState)
|
|
call GetSRAMBank
|
|
ld a, BATTLETOWER_RECEIVED_REWARD
|
|
ld [sBattleTowerChallengeState], a
|
|
call CloseSRAM
|
|
ret
|
|
|
|
BattleTower_SaveOptions: ; 170737 (5c:4737) BattleTowerAction $1f
|
|
callba SaveOptions
|
|
ret
|
|
|
|
BattleTower_RandomlyChooseReward: ; 17073e (5c:473e) BattleTowerAction $1e
|
|
; Generate a random stat boosting item.
|
|
.loop
|
|
call Random
|
|
ld a, [hRandomAdd]
|
|
and $7
|
|
cp 6
|
|
jr c, .okay
|
|
sub 6
|
|
.okay
|
|
add HP_UP
|
|
cp LUCKY_PUNCH
|
|
jr z, .loop
|
|
push af
|
|
ld a, BANK(sBattleTowerReward)
|
|
call GetSRAMBank
|
|
pop af
|
|
ld [sBattleTowerReward], a
|
|
call CloseSRAM
|
|
ret
|
|
|
|
BattleTowerAction_CheckExplanationRead: ; 17075f (5c:475f) BattleTowerAction $00
|
|
call BattleTower_CheckSaveFileExistsAndIsYours
|
|
ld a, [ScriptVar]
|
|
and a
|
|
ret z
|
|
|
|
ld a, BANK(s1_be4f)
|
|
call GetSRAMBank
|
|
ld a, [s1_be4f]
|
|
and $2
|
|
ld [ScriptVar], a
|
|
call CloseSRAM
|
|
ret
|
|
|
|
BattleTowerAction_GetChallengeState: ; 170778 (5c:4778) BattleTowerAction $02
|
|
ld hl, sBattleTowerChallengeState
|
|
ld a, BANK(sBattleTowerChallengeState)
|
|
call GetSRAMBank
|
|
ld a, [hl]
|
|
ld [ScriptVar], a
|
|
call CloseSRAM
|
|
ret
|
|
|
|
BattleTowerAction_SetExplanationRead: ; 170788 (5c:4788) BattleTowerAction $01
|
|
ld a, BANK(s1_be4f)
|
|
call GetSRAMBank
|
|
ld a, [s1_be4f]
|
|
or $2
|
|
ld [s1_be4f], a
|
|
call CloseSRAM
|
|
ret
|
|
|
|
BattleTowerAction_SetByteToQuickSaveChallenge: ; 170799 (5c:4799) BattleTowerAction $03
|
|
ld c, BATTLETOWER_SAVED_AND_LEFT
|
|
jr asm_17079f
|
|
|
|
BattleTowerAction_SetByteToCancelChallenge: ; 17079d (5c:479d) BattleTowerAction $04
|
|
ld c, BATTLETOWER_NO_CHALLENGE
|
|
asm_17079f: ; 17079f (5c:479f)
|
|
ld a, BANK(sBattleTowerChallengeState)
|
|
call GetSRAMBank
|
|
ld a, c
|
|
ld [sBattleTowerChallengeState], a
|
|
call CloseSRAM
|
|
ret
|
|
|
|
Function1707ac: ; 1707ac (5c:47ac) BattleTowerAction $05
|
|
ld a, $5
|
|
call GetSRAMBank
|
|
ld a, [$aa8c]
|
|
ld b, a
|
|
ld a, [$be46]
|
|
ld [ScriptVar], a
|
|
call CloseSRAM
|
|
and a
|
|
ret z
|
|
ld a, b
|
|
cp $2
|
|
jr nc, .asm_1707ef
|
|
push bc
|
|
call UpdateTime
|
|
pop bc
|
|
ld a, $5
|
|
call GetSRAMBank
|
|
ld a, [$aa8b]
|
|
call CloseSRAM
|
|
ld c, a
|
|
ld a, [CurDay]
|
|
sub c
|
|
jr c, .asm_1707e5
|
|
cp $8
|
|
jr nc, .asm_1707ef
|
|
ld a, b
|
|
and a
|
|
jr nz, .asm_1707ef
|
|
ret
|
|
.asm_1707e5
|
|
ld hl, CurDay
|
|
ld a, $8c
|
|
sub c
|
|
add [hl]
|
|
cp $8
|
|
ret c
|
|
.asm_1707ef
|
|
ld a, $8
|
|
ld [ScriptVar], a
|
|
|
|
Function1707f4: ; 1707f4 (5c:47f4) BattleTowerAction $06
|
|
ld a, $5
|
|
call GetSRAMBank
|
|
xor a
|
|
ld [$be46], a
|
|
ld [$aa8b], a
|
|
ld [$aa8c], a
|
|
call CloseSRAM
|
|
ret
|
|
|
|
Function170807: ; 170807 (5c:4807) BattleTowerAction $16
|
|
call UpdateTime
|
|
ld a, $5
|
|
call GetSRAMBank
|
|
ld a, [CurDay]
|
|
ld [$b2f9], a
|
|
xor a
|
|
ld [$b2fa], a
|
|
call CloseSRAM
|
|
ret
|
|
|
|
Function17081d: ; 17081d (5c:481d) BattleTowerAction $17
|
|
xor a
|
|
ld [ScriptVar], a
|
|
ld a, $5
|
|
call GetSRAMBank
|
|
ld a, [$b2f9]
|
|
ld c, a
|
|
ld a, [$b2fa]
|
|
ld b, a
|
|
call CloseSRAM
|
|
cp $2
|
|
jr nc, .asm_170853
|
|
push bc
|
|
call UpdateTime
|
|
pop bc
|
|
ld a, [CurDay]
|
|
sub c
|
|
jr c, .asm_170849
|
|
cp $b
|
|
jr nc, .asm_170853
|
|
ld a, b
|
|
and a
|
|
jr nz, .asm_170853
|
|
ret
|
|
|
|
.asm_170849
|
|
ld hl, CurDay
|
|
ld a, 140
|
|
sub c
|
|
add [hl]
|
|
cp $b
|
|
ret c
|
|
.asm_170853
|
|
ld a, $1
|
|
ld [ScriptVar], a
|
|
ld a, $5
|
|
call GetSRAMBank
|
|
xor a
|
|
ld [$b2f9], a
|
|
ld [$b2fa], a
|
|
call CloseSRAM
|
|
ret
|
|
|
|
SaveBattleTowerLevelGroup: ; 170868 (5c:4868) BattleTowerAction $07
|
|
ld a, BANK(sBTChoiceOfLevelGroup)
|
|
call GetSRAMBank
|
|
ld a, [rSVBK]
|
|
push af
|
|
ld a, $3
|
|
ld [rSVBK], a
|
|
ld a, [wBTChoiceOfLvlGroup]
|
|
ld [sBTChoiceOfLevelGroup], a
|
|
pop af
|
|
ld [rSVBK], a
|
|
call CloseSRAM
|
|
ret
|
|
|
|
LoadBattleTowerLevelGroup: ; 170881 (5c:4881) BattleTowerAction $08 ; Load level group choice
|
|
ld a, BANK(sBTChoiceOfLevelGroup)
|
|
call GetSRAMBank
|
|
ld a, [rSVBK]
|
|
push af
|
|
ld a, $3
|
|
ld [rSVBK], a
|
|
ld a, [sBTChoiceOfLevelGroup]
|
|
ld [wBTChoiceOfLvlGroup], a
|
|
pop af
|
|
ld [rSVBK], a
|
|
call CloseSRAM
|
|
ret
|
|
|
|
BattleTower_CheckSaveFileExistsAndIsYours: ; 17089a BattleTowerAction $09
|
|
ld a, [wSaveFileExists]
|
|
and a
|
|
jr z, .nope
|
|
callba CompareLoadedAndSavedPlayerID
|
|
jr z, .yes
|
|
xor a
|
|
jr .nope
|
|
|
|
.yes
|
|
ld a, $1
|
|
|
|
.nope
|
|
ld [ScriptVar], a
|
|
ret
|
|
; 1708b1
|
|
|
|
|
|
Function1708b1: ; 1708b1 (5c:48b1) BattleTowerAction $0a
|
|
xor a
|
|
ld [MusicFade], a
|
|
call MaxVolume
|
|
ret
|
|
|
|
CheckMobileEventIndex: ; 1708b9 (5c:48b9) BattleTowerAction $0b something to do with GS Ball
|
|
ld a, BANK(sMobileEventIndex)
|
|
call GetSRAMBank
|
|
ld a, [sMobileEventIndex]
|
|
ld [ScriptVar], a
|
|
call CloseSRAM
|
|
ret
|
|
|
|
Function1708c8: ; 1708c8 (5c:48c8) BattleTowerAction $0c
|
|
call UpdateTime
|
|
ld a, $5
|
|
call GetSRAMBank
|
|
ld a, [CurDay]
|
|
ld [$aa8b], a
|
|
xor a
|
|
ld [$aa8c], a
|
|
ld a, [$aa5d]
|
|
cp $2
|
|
jr nc, .asm_1708ec
|
|
ld a, [CurDay]
|
|
ld [$aa48], a
|
|
ld a, $1
|
|
ld [$aa47], a
|
|
.asm_1708ec
|
|
call CloseSRAM
|
|
ret
|
|
|
|
Function1708f0: ; 1708f0 (5c:48f0) BattleTowerAction $0d
|
|
xor a
|
|
ld [ScriptVar], a
|
|
call UpdateTime
|
|
ld a, $5
|
|
call GetSRAMBank
|
|
ld a, [$aa48]
|
|
ld c, a
|
|
ld a, [$aa47]
|
|
call CloseSRAM
|
|
and a
|
|
ret z
|
|
ld hl, CurDay
|
|
ld a, c
|
|
cp [hl]
|
|
jr nz, Function170923
|
|
ld a, $5
|
|
call GetSRAMBank
|
|
ld a, [$aa5d]
|
|
call CloseSRAM
|
|
cp $5
|
|
ret c
|
|
ld a, $1
|
|
ld [ScriptVar], a
|
|
ret
|
|
|
|
|
|
Function170923: ; 170923
|
|
ld a, $5
|
|
call GetSRAMBank
|
|
xor a
|
|
ld [$aa48], a
|
|
ld [$aa47], a
|
|
ld hl, $aa5d
|
|
ld bc, $0011
|
|
call ByteFill
|
|
call CloseSRAM
|
|
ret
|
|
; 17093c
|
|
|
|
|
|
BattleTowerAction_EggTicket: ; 17093c (5c:493c) BattleTowerAction $0e
|
|
xor a
|
|
ld [ScriptVar], a
|
|
ld a, EGG_TICKET
|
|
ld [CurItem], a
|
|
ld hl, NumItems
|
|
call CheckItem
|
|
ret nc
|
|
ld a, [PartyCount]
|
|
ld b, 0
|
|
ld c, a
|
|
ld hl, PartySpecies
|
|
.loop
|
|
ld a, [hli]
|
|
cp EGG
|
|
jr nz, .not_egg
|
|
push hl
|
|
ld hl, PartyMonOT ; wddff (aliases: PartyMonOT)
|
|
ld de, $6 ; NAME_LENGTH
|
|
ld a, b
|
|
and a
|
|
jr z, .skip
|
|
.loop2
|
|
add hl, de
|
|
dec a
|
|
jr nz, .loop2
|
|
.skip
|
|
ld de, String_1709a4
|
|
ld a, $6 ; NAME_LENGTH
|
|
.compare_loop
|
|
push af
|
|
ld a, [de]
|
|
inc de
|
|
cp [hl]
|
|
inc hl
|
|
jr nz, .different
|
|
pop af
|
|
dec a
|
|
jr nz, .compare_loop
|
|
rept 4
|
|
dec hl
|
|
endr
|
|
ld a, "@"
|
|
ld [hli], a
|
|
ld [hli], a
|
|
pop hl
|
|
ld a, EGG_TICKET
|
|
ld [CurItem], a
|
|
ld a, 1
|
|
ld [wItemQuantityChangeBuffer], a
|
|
ld a, -1
|
|
ld [CurItemQuantity], a
|
|
ld hl, NumItems
|
|
call TossItem
|
|
ld a, $1
|
|
ld [ScriptVar], a
|
|
ret
|
|
|
|
.different
|
|
pop af
|
|
pop hl
|
|
.not_egg
|
|
inc b
|
|
dec c
|
|
jr nz, .loop
|
|
ret
|
|
; 1709a4 (5c:49a4)
|
|
|
|
String_1709a4: ; 1709a4
|
|
db "なぞナゾ@@"
|
|
|
|
Function1709aa: ; 1709aa (5c:49aa) BattleTowerAction $0f
|
|
ld a, [rSVBK]
|
|
push af
|
|
ld a, BANK(w3_d090)
|
|
ld [rSVBK], a
|
|
ld a, [w3_d090]
|
|
ld [ScriptVar], a
|
|
pop af
|
|
ld [rSVBK], a
|
|
ret
|
|
|
|
Function1709bb: ; 1709bb (5c:49bb) BattleTowerAction $10
|
|
xor a
|
|
ld [ScriptVar], a
|
|
ld a, $5
|
|
call GetSRAMBank
|
|
ld a, [$a800]
|
|
call CloseSRAM
|
|
cp 6
|
|
jr nc, .invalid
|
|
ld e, a
|
|
ld d, 0
|
|
ld hl, Jumptable_1709e7
|
|
add hl, de
|
|
add hl, de
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
jp hl
|
|
|
|
.invalid
|
|
ld a, $5
|
|
call GetSRAMBank
|
|
xor a
|
|
ld [$a800], a
|
|
call CloseSRAM
|
|
ret
|
|
; 1709e7 (5c:49e7)
|
|
|
|
Jumptable_1709e7: ; 1709e7
|
|
dw .NoAction
|
|
dw .NoAction
|
|
dw .DoAction1
|
|
dw .DoAction1
|
|
dw .Action4
|
|
dw .Action5
|
|
; 1709f3
|
|
|
|
.DoAction1: ; 1709f3
|
|
ld a, $5
|
|
call GetSRAMBank
|
|
ld a, $1
|
|
ld [$a800], a
|
|
call CloseSRAM
|
|
|
|
.NoAction: ; 170a00
|
|
ret
|
|
; 170a01
|
|
|
|
.Action4: ; 170a01
|
|
ld a, $5
|
|
call GetSRAMBank
|
|
ld hl, $b023
|
|
ld de, wMisc
|
|
ld bc, $0069
|
|
call CopyBytes
|
|
ld a, [$a825]
|
|
ld [wcd30], a
|
|
ld a, [$a826]
|
|
ld [wcd31], a
|
|
call CloseSRAM
|
|
callba Function11b6b4
|
|
callba Function17d0f3
|
|
ld a, $1
|
|
ld [ScriptVar], a
|
|
ret
|
|
; 170a33
|
|
|
|
.Action5: ; 170a33
|
|
ld a, $0
|
|
call GetSRAMBank
|
|
ld hl, wRTC
|
|
ld de, wMisc
|
|
ld bc, $0004
|
|
call CopyBytes
|
|
call CloseSRAM
|
|
ld a, $5
|
|
call GetSRAMBank
|
|
ld hl, $b08c
|
|
ld de, wMisc
|
|
ld c, $4
|
|
.compare_loop
|
|
ld a, [de]
|
|
inc de
|
|
cp [hl]
|
|
jr nz, .different
|
|
inc hl
|
|
dec c
|
|
jr nz, .compare_loop
|
|
call CloseSRAM
|
|
ld a, [MapGroup]
|
|
ld b, a
|
|
ld a, [MapNumber]
|
|
ld c, a
|
|
call GetMapTrigger
|
|
ld a, d
|
|
or e
|
|
jr z, .no_trigger
|
|
ld a, [de]
|
|
and a
|
|
ret nz
|
|
|
|
.no_trigger
|
|
ld a, $1
|
|
ld [ScriptVar], a
|
|
ret
|
|
|
|
.different
|
|
call CloseSRAM
|
|
ld a, $5
|
|
call GetSRAMBank
|
|
xor a
|
|
ld [$a800], a
|
|
call CloseSRAM
|
|
ld [ScriptVar], a
|
|
ld a, [MapGroup]
|
|
ld b, a
|
|
ld a, [MapNumber]
|
|
ld c, a
|
|
call GetMapTrigger
|
|
ld a, d
|
|
or e
|
|
jr z, .no_trigger_2
|
|
xor a
|
|
ld [de], a
|
|
|
|
.no_trigger_2
|
|
ret
|
|
; 170a9c
|
|
|
|
Function170a9c: ; 170a9c (5c:4a9c) BattleTowerAction $11
|
|
ld c, $0
|
|
jr asm_170aa2
|
|
|
|
Function170aa0: ; 170aa0 (5c:4aa0) BattleTowerAction $12
|
|
ld c, $1
|
|
asm_170aa2: ; 170aa2 (5c:4aa2)
|
|
ld a, $5
|
|
call GetSRAMBank
|
|
ld a, c
|
|
ld [$aa8d], a
|
|
call CloseSRAM
|
|
ret
|
|
|
|
Function170aaf: ; 170aaf (5c:4aaf) BattleTowerAction $13
|
|
ld a, $5
|
|
call GetSRAMBank
|
|
ld a, [$aa8d]
|
|
ld [ScriptVar], a
|
|
call CloseSRAM
|
|
ret
|
|
|
|
Function170abe: ; 170abe (5c:4abe) BattleTowerAction $14
|
|
call BattleTower_CheckSaveFileExistsAndIsYours
|
|
ld a, [ScriptVar]
|
|
and a
|
|
ret z
|
|
|
|
ld a, BANK(s1_be4f)
|
|
call GetSRAMBank
|
|
ld a, [s1_be4f]
|
|
and $1
|
|
ld [ScriptVar], a
|
|
call CloseSRAM
|
|
ret
|
|
|
|
Function170ad7: ; 170ad7 (5c:4ad7) BattleTowerAction $15
|
|
ld a, BANK(s1_be4f)
|
|
call GetSRAMBank
|
|
ld a, [s1_be4f]
|
|
or $1
|
|
ld [s1_be4f], a
|
|
call CloseSRAM
|
|
ret
|
|
|
|
BattleTowerAction_LevelCheck: ; 170ae8 (5c:4ae8) BattleTowerAction $18
|
|
ld a, $5
|
|
call GetSRAMBank
|
|
ld a, [$b2fb]
|
|
call CloseSRAM
|
|
ld c, 10
|
|
call SimpleDivide
|
|
ld a, b
|
|
ld [wcd4f], a
|
|
xor a
|
|
ld [ScriptVar], a
|
|
callba BattleTower_LevelCheck ; level check
|
|
ret nc
|
|
ld a, $5
|
|
call GetSRAMBank
|
|
ld a, [$b2fb]
|
|
call CloseSRAM
|
|
ld [ScriptVar], a
|
|
ret
|
|
|
|
BattleTowerAction_UbersCheck: ; 170b16 (5c:4b16) BattleTowerAction $19
|
|
ld a, $5
|
|
call GetSRAMBank
|
|
ld a, [$b2fb]
|
|
call CloseSRAM
|
|
ld c, 10
|
|
call SimpleDivide
|
|
ld a, b
|
|
ld [wcd4f], a
|
|
xor a
|
|
ld [ScriptVar], a
|
|
callba BattleTower_UbersCheck
|
|
ret nc
|
|
ld a, $5
|
|
call GetSRAMBank
|
|
ld a, [$b2fb]
|
|
call CloseSRAM
|
|
ld [ScriptVar], a
|
|
ret
|
|
|
|
Function_LoadOpponentTrainerAndPokemonsWithOTSprite: ; 0x170b44
|
|
callba Function_LoadOpponentTrainerAndPokemons
|
|
ld a, [rSVBK]
|
|
push af
|
|
ld a, $3
|
|
ld [rSVBK], a
|
|
ld hl, BT_OTTrainerClass
|
|
ld a, [hl]
|
|
dec a
|
|
ld c, a
|
|
ld b, $0
|
|
pop af
|
|
ld [rSVBK], a
|
|
ld hl, .Sprites
|
|
add hl, bc
|
|
ld a, [hl]
|
|
ld [wBTTempOTSprite], a
|
|
|
|
; Load sprite of the opponent trainer
|
|
; because s/he is chosen randomly and appears out of nowhere
|
|
ld a, [ScriptVar]
|
|
dec a
|
|
sla a
|
|
ld e, a
|
|
sla a
|
|
sla a
|
|
sla a
|
|
ld c, a
|
|
ld b, 0
|
|
ld d, 0
|
|
ld hl, MapObjects
|
|
add hl, bc
|
|
inc hl
|
|
ld a, [wBTTempOTSprite]
|
|
ld [hl], a
|
|
ld hl, UsedSprites
|
|
add hl, de
|
|
ld [hli], a
|
|
ld [hUsedSpriteIndex], a
|
|
ld a, [hl]
|
|
ld [hUsedSpriteTile], a
|
|
callba GetUsedSprite
|
|
ret
|
|
; 170b90
|
|
|
|
.Sprites:
|
|
db SPRITE_FALKNER
|
|
db SPRITE_WHITNEY
|
|
db SPRITE_BUGSY
|
|
db SPRITE_MORTY
|
|
db SPRITE_PRYCE
|
|
db SPRITE_JASMINE
|
|
db SPRITE_CHUCK
|
|
db SPRITE_CLAIR
|
|
db SPRITE_SILVER
|
|
db SPRITE_OAK
|
|
db SPRITE_WILL
|
|
db SPRITE_CHRIS
|
|
db SPRITE_BRUNO
|
|
db SPRITE_KAREN
|
|
db SPRITE_KOGA
|
|
db SPRITE_LANCE
|
|
db SPRITE_BROCK
|
|
db SPRITE_MISTY
|
|
db SPRITE_SURGE
|
|
db SPRITE_SCIENTIST
|
|
db SPRITE_ERIKA
|
|
db SPRITE_YOUNGSTER
|
|
db SPRITE_YOUNGSTER
|
|
db SPRITE_YOUNGSTER
|
|
db SPRITE_LASS
|
|
db SPRITE_JANINE
|
|
db SPRITE_COOLTRAINER_M
|
|
db SPRITE_COOLTRAINER_F
|
|
db SPRITE_BUENA
|
|
db SPRITE_SUPER_NERD
|
|
db SPRITE_ROCKET
|
|
db SPRITE_GENTLEMAN
|
|
db SPRITE_BUENA
|
|
db SPRITE_TEACHER
|
|
db SPRITE_SABRINA
|
|
db SPRITE_BUG_CATCHER
|
|
db SPRITE_FISHER
|
|
db SPRITE_SUPER_NERD
|
|
db SPRITE_COOLTRAINER_F
|
|
db SPRITE_SAILOR
|
|
db SPRITE_SUPER_NERD
|
|
db SPRITE_BLUE
|
|
db SPRITE_ROCKER
|
|
db SPRITE_POKEFAN_M
|
|
db SPRITE_BIKER
|
|
db SPRITE_BLAINE
|
|
db SPRITE_PHARMACIST
|
|
db SPRITE_FISHER
|
|
db SPRITE_SUPER_NERD
|
|
db SPRITE_BLACK_BELT
|
|
db SPRITE_ROCKET
|
|
db SPRITE_YOUNGSTER
|
|
db SPRITE_LASS
|
|
db SPRITE_YOUNGSTER
|
|
db SPRITE_ROCKET_GIRL
|
|
db SPRITE_SAGE
|
|
db SPRITE_GRANNY
|
|
db SPRITE_ROCKER
|
|
db SPRITE_POKEFAN_M
|
|
db SPRITE_KIMONO_GIRL
|
|
db SPRITE_TWIN
|
|
db SPRITE_POKEFAN_F
|
|
db SPRITE_RED
|
|
db SPRITE_BLUE
|
|
db SPRITE_OFFICER
|
|
db SPRITE_ROCKET_GIRL
|
|
|
|
ret_170bd2: ; 170bd2
|
|
ret
|
|
; 170bd3
|
|
|
|
SpecialCheckForBattleTowerRules: ; 170bd3
|
|
callba CheckForBattleTowerRules
|
|
jr c, .asm_170bde
|
|
xor a
|
|
jr .asm_170be0
|
|
|
|
.asm_170bde
|
|
ld a, $1
|
|
|
|
.asm_170be0
|
|
ld [ScriptVar], a
|
|
ret
|
|
; 170be4
|