Since we're aiming for consistency across the codebase, I believe it includes a uniform way to refer to the creatures this game consists of in the labels of the code. The only exceptions to this rule are labels referring to things named through the use of the <PK><MN> or <PKMN> characters, in which case PKMN is used. Most of this was already consistent enough™, I just picked the convention with the most occurences and fixed the outliers.
1670 lines
26 KiB
NASM
Executable File
1670 lines
26 KiB
NASM
Executable File
Special_BattleTowerRoomMenu: ; 1700b0
|
|
; special
|
|
call InitBattleTowerChallengeRAM
|
|
farcall _BattleTowerRoomMenu
|
|
ret
|
|
; 1700ba
|
|
|
|
Special_Function1700ba: ; 1700ba
|
|
call InitBattleTowerChallengeRAM
|
|
farcall 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
|
|
|
|
Special_Function170114: ; 170114
|
|
call InitBattleTowerChallengeRAM
|
|
call .Function170121
|
|
farcall 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_OTTempMon1DVs
|
|
ld a, [wPlayerID]
|
|
ld [hli], a
|
|
ld a, [wPlayerID + 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, wPlayerName
|
|
ld bc, NAME_LENGTH_JAPANESE - 1
|
|
call CopyBytes
|
|
ld bc, wPlayerID
|
|
ld de, wPlayerGender
|
|
farcall GetMobileOTTrainerClass
|
|
ld de, wBT_OTTempMon1CaughtGender
|
|
ld a, c
|
|
ld [de], a
|
|
inc de
|
|
ld a, LOW(wPartyMons)
|
|
ld [wcd49], a
|
|
ld a, HIGH(wPartyMons)
|
|
ld [wcd4a], a
|
|
ld a, LOW(wPartyMonNicknames)
|
|
ld [wcd4b], a
|
|
ld a, HIGH(wPartyMonNicknames)
|
|
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, NAME_LENGTH_JAPANESE
|
|
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
|
|
|
|
Special_BattleTowerBattle: ; 170215
|
|
xor a
|
|
ld [wBattleTowerBattleEnded], a
|
|
call _BattleTowerBattle
|
|
ret
|
|
; 17021d
|
|
|
|
DummySpecial_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, [wOptions]
|
|
push af
|
|
ld hl, wOptions
|
|
set BATTLE_SHIFT, [hl] ; SET MODE
|
|
|
|
ld a, [wInBattleTowerBattle]
|
|
push af
|
|
or $1
|
|
ld [wInBattleTowerBattle], a
|
|
|
|
xor a
|
|
ld [wLinkMode], a
|
|
farcall Special_StubbedTrainerRankings_Healings
|
|
farcall HealParty
|
|
call ReadBTTrainerParty
|
|
call Clears5_a89a
|
|
|
|
predef StartBattle
|
|
|
|
farcall LoadPokemonData
|
|
farcall HealParty
|
|
ld a, [wBattleResult]
|
|
ld [wScriptVar], a
|
|
and a
|
|
jr nz, .lost
|
|
ld a, BANK(sNrOfBeatenBattleTowerTrainers)
|
|
call GetSRAMBank
|
|
ld a, [sNrOfBeatenBattleTowerTrainers]
|
|
ld [wNrOfBeatenBattleTowerTrainers], a
|
|
call CloseSRAM
|
|
ld hl, wStringBuffer3
|
|
ld a, [wNrOfBeatenBattleTowerTrainers]
|
|
add "1"
|
|
ld [hli], a
|
|
ld a, "@"
|
|
ld [hl], a
|
|
|
|
.lost
|
|
pop af
|
|
ld [wInBattleTowerBattle], a
|
|
pop af
|
|
ld [wOptions], a
|
|
ld a, $1
|
|
ld [wBattleTowerBattleEnded], a
|
|
ret
|
|
|
|
|
|
ReadBTTrainerParty: ; 1702b7
|
|
; Initialise the BattleTower-Trainer and his mon
|
|
call CopyBTTrainer_FromBT_OT_TowBT_OTTemp
|
|
|
|
; Check the nicknames for illegal characters, and replace bad nicknames
|
|
; with their species names.
|
|
ld de, wBT_OTTempMon1Name ; $c643
|
|
ld c, MON_NAME_LENGTH
|
|
farcall CheckStringForErrors
|
|
jr nc, .skip_mon_1
|
|
|
|
ld a, [wBT_OTTempMon1]
|
|
ld [wNamedObjectIndexBuffer], a
|
|
call GetPokemonName
|
|
ld l, e
|
|
ld h, d
|
|
ld de, wBT_OTTempMon1Name ; $c643
|
|
ld bc, MON_NAME_LENGTH
|
|
call CopyBytes
|
|
|
|
.skip_mon_1
|
|
ld de, wBT_OTTempMon2Name ; $c67e
|
|
ld c, MON_NAME_LENGTH
|
|
farcall CheckStringForErrors
|
|
jr nc, .skip_mon_2
|
|
ld a, [wBT_OTTempMon2] ; [$c64e]
|
|
ld [wNamedObjectIndexBuffer], a
|
|
call GetPokemonName
|
|
ld l, e
|
|
ld h, d
|
|
ld de, wBT_OTTempMon2Name ; $c67e
|
|
ld bc, MON_NAME_LENGTH
|
|
call CopyBytes
|
|
|
|
.skip_mon_2
|
|
ld de, wBT_OTTempMon3Name ; $c686 + 51 = $c6b9
|
|
ld c, MON_NAME_LENGTH
|
|
farcall CheckStringForErrors
|
|
jr nc, .skip_mon_3
|
|
ld a, [wBT_OTTempMon3] ; [$c689]
|
|
ld [wNamedObjectIndexBuffer], a
|
|
call GetPokemonName
|
|
ld l, e
|
|
ld h, d
|
|
ld de, wBT_OTTempMon3Name ; $c686 + 51 = $c6b9
|
|
ld bc, MON_NAME_LENGTH
|
|
call CopyBytes
|
|
|
|
.skip_mon_3
|
|
; Add the terminator character to each of these names
|
|
ld a, "@"
|
|
ld [wBT_OTTempMon1NameEnd - 1], a ; $c64d
|
|
ld [wBT_OTTempMon2NameEnd - 1], a ; $c688
|
|
ld [wBT_OTTempMon3NameEnd - 1], a ; $c68a + 57 = $c6c3
|
|
; Fix errors in the movesets
|
|
call CheckBTMonMovesForErrors
|
|
; Repair the trainer name if needed, then copy it to wOTPlayerName
|
|
ld de, wBT_OTTempName
|
|
ld c, NAME_LENGTH - 1
|
|
farcall 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, wOTPlayerName
|
|
ld bc, NAME_LENGTH - 1
|
|
call CopyBytes
|
|
ld a, "@"
|
|
ld [de], a
|
|
|
|
ld hl, wBT_OTTempTrainerClass
|
|
ld a, [hli]
|
|
ld [wOtherTrainerClass], a
|
|
ld a, LOW(wOTPartyMonNicknames)
|
|
ld [wBGMapBuffer], a
|
|
ld a, HIGH(wOTPartyMonNicknames)
|
|
ld [wBGMapBuffer + 1], a
|
|
|
|
; Copy mon into Memory from the address in hl
|
|
ld de, wOTPartyMon1Species
|
|
ld bc, wOTPartyCount
|
|
ld a, BATTLETOWER_PARTY_LENGTH
|
|
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, [wBGMapBuffer]
|
|
ld e, a
|
|
ld a, [wBGMapBuffer + 1]
|
|
ld d, a
|
|
ld bc, MON_NAME_LENGTH
|
|
call CopyBytes
|
|
ld a, e
|
|
ld [wBGMapBuffer], a
|
|
ld a, d
|
|
ld [wBGMapBuffer + 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_OTTempMon1Species
|
|
ld d, BATTLETOWER_PARTY_LENGTH
|
|
.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 [wCurSpecies], 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 [wCurPartyLevel], 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 CalcMonStats
|
|
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 + MON_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_STREAK_LENGTH
|
|
.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
|
|
|
|
INCLUDE "data/battle_tower/unknown_levels.asm"
|
|
|
|
|
|
CopyBTTrainer_FromBT_OT_TowBT_OTTemp: ; 1704a2
|
|
; copy the BattleTower-Trainer data that lies at 'wBT_OTTrainer' to 'wBT_OTTemp'
|
|
ld a, [rSVBK]
|
|
push af
|
|
ld a, BANK(wBT_OTTrainer)
|
|
ld [rSVBK], a
|
|
|
|
ld hl, wBT_OTTrainer
|
|
ld de, wBT_OTTemp
|
|
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
|
|
|
|
Unreferenced_Function1704ca: ; 1704ca
|
|
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
|
|
|
|
UnusedSpecial_Function1704e1: ; 1704e1
|
|
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
|
|
farcall 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, wStringBuffer3
|
|
ld bc, $16
|
|
call CopyBytes
|
|
|
|
ld hl, $a8b2
|
|
ld de, wMisc
|
|
ld bc, $0096
|
|
call CopyBytes
|
|
|
|
call CloseSRAM
|
|
hlcoord 1, 1
|
|
ld de, wStringBuffer3
|
|
call PlaceString
|
|
hlcoord 1, 3
|
|
ld de, .String_Mail
|
|
call PlaceString
|
|
hlcoord 4, 3
|
|
ld de, wStringBuffer4
|
|
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, "┌"
|
|
ld [hli], a
|
|
ld c, SCREEN_WIDTH - 2
|
|
.top_border_loop
|
|
ld a, "─"
|
|
ld [hli], a
|
|
dec c
|
|
jr nz, .top_border_loop
|
|
ld a, "┐"
|
|
ld [hli], a
|
|
ld de, SCREEN_WIDTH
|
|
ld c, 12
|
|
.left_border_loop
|
|
ld a, "│"
|
|
ld [hl], a
|
|
add hl, de
|
|
dec c
|
|
jr nz, .left_border_loop
|
|
ld a, "└"
|
|
ld [hli], a
|
|
ld c, SCREEN_WIDTH - 2
|
|
.bottom_border_loop
|
|
ld a, "─"
|
|
ld [hli], a
|
|
dec c
|
|
jr nz, .bottom_border_loop
|
|
ld a, "┘"
|
|
ld [hl], a
|
|
ld de, -SCREEN_WIDTH
|
|
add hl, de
|
|
ld c, 12
|
|
.right_border_loop
|
|
ld a, "│"
|
|
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, NAME_LENGTH_JAPANESE
|
|
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
|
|
|
|
Special_BattleTowerAction: ; 170687
|
|
ld a, [wScriptVar]
|
|
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_STREAK_LENGTH
|
|
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 [wScriptVar], a
|
|
ld hl, wNumItems
|
|
ld a, [hli]
|
|
cp MAX_ITEMS
|
|
ret c
|
|
ld b, MAX_ITEMS
|
|
ld a, [wScriptVar]
|
|
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 [wScriptVar], 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
|
|
farcall 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, [wScriptVar]
|
|
and a
|
|
ret z
|
|
|
|
ld a, BANK(sBattleTowerSaveFileFlags)
|
|
call GetSRAMBank
|
|
ld a, [sBattleTowerSaveFileFlags]
|
|
and $2
|
|
ld [wScriptVar], a
|
|
call CloseSRAM
|
|
ret
|
|
|
|
BattleTowerAction_GetChallengeState: ; 170778 (5c:4778) BattleTowerAction $02
|
|
ld hl, sBattleTowerChallengeState
|
|
ld a, BANK(sBattleTowerChallengeState)
|
|
call GetSRAMBank
|
|
ld a, [hl]
|
|
ld [wScriptVar], a
|
|
call CloseSRAM
|
|
ret
|
|
|
|
BattleTowerAction_SetExplanationRead: ; 170788 (5c:4788) BattleTowerAction $01
|
|
ld a, BANK(sBattleTowerSaveFileFlags)
|
|
call GetSRAMBank
|
|
ld a, [sBattleTowerSaveFileFlags]
|
|
or $2
|
|
ld [sBattleTowerSaveFileFlags], 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 [wScriptVar], 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, [wCurDay]
|
|
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, wCurDay
|
|
ld a, $8c
|
|
sub c
|
|
add [hl]
|
|
cp $8
|
|
ret c
|
|
.asm_1707ef
|
|
ld a, $8
|
|
ld [wScriptVar], 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, [wCurDay]
|
|
ld [$b2f9], a
|
|
xor a
|
|
ld [$b2fa], a
|
|
call CloseSRAM
|
|
ret
|
|
|
|
Function17081d: ; 17081d (5c:481d) BattleTowerAction $17
|
|
xor a
|
|
ld [wScriptVar], 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, [wCurDay]
|
|
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, wCurDay
|
|
ld a, 140
|
|
sub c
|
|
add [hl]
|
|
cp $b
|
|
ret c
|
|
.asm_170853
|
|
ld a, $1
|
|
ld [wScriptVar], 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
|
|
farcall CompareLoadedAndSavedPlayerID
|
|
jr z, .yes
|
|
xor a
|
|
jr .nope
|
|
|
|
.yes
|
|
ld a, $1
|
|
|
|
.nope
|
|
ld [wScriptVar], a
|
|
ret
|
|
; 1708b1
|
|
|
|
|
|
Function1708b1: ; 1708b1 (5c:48b1) BattleTowerAction $0a
|
|
xor a
|
|
ld [wMusicFade], 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 [wScriptVar], a
|
|
call CloseSRAM
|
|
ret
|
|
|
|
Function1708c8: ; 1708c8 (5c:48c8) BattleTowerAction $0c
|
|
call UpdateTime
|
|
ld a, $5
|
|
call GetSRAMBank
|
|
ld a, [wCurDay]
|
|
ld [$aa8b], a
|
|
xor a
|
|
ld [$aa8c], a
|
|
ld a, [$aa5d]
|
|
cp $2
|
|
jr nc, .asm_1708ec
|
|
ld a, [wCurDay]
|
|
ld [$aa48], a
|
|
ld a, $1
|
|
ld [$aa47], a
|
|
.asm_1708ec
|
|
call CloseSRAM
|
|
ret
|
|
|
|
Function1708f0: ; 1708f0 (5c:48f0) BattleTowerAction $0d
|
|
xor a
|
|
ld [wScriptVar], 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, wCurDay
|
|
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 [wScriptVar], 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 [wScriptVar], a
|
|
ld a, EGG_TICKET
|
|
ld [wCurItem], a
|
|
ld hl, wNumItems
|
|
call CheckItem
|
|
ret nc
|
|
ld a, [wPartyCount]
|
|
ld b, 0
|
|
ld c, a
|
|
ld hl, wPartySpecies
|
|
.loop
|
|
ld a, [hli]
|
|
cp EGG
|
|
jr nz, .not_egg
|
|
push hl
|
|
ld hl, wPartyMonOT
|
|
ld de, NAME_LENGTH_JAPANESE
|
|
ld a, b
|
|
and a
|
|
jr z, .skip
|
|
.loop2
|
|
add hl, de
|
|
dec a
|
|
jr nz, .loop2
|
|
.skip
|
|
ld de, String_1709a4
|
|
ld a, NAME_LENGTH_JAPANESE
|
|
.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 [wCurItem], a
|
|
ld a, 1
|
|
ld [wItemQuantityChangeBuffer], a
|
|
ld a, -1
|
|
ld [wCurItemQuantity], a
|
|
ld hl, wNumItems
|
|
call TossItem
|
|
ld a, $1
|
|
ld [wScriptVar], 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 [wScriptVar], a
|
|
pop af
|
|
ld [rSVBK], a
|
|
ret
|
|
|
|
Function1709bb: ; 1709bb (5c:49bb) BattleTowerAction $10
|
|
xor a
|
|
ld [wScriptVar], 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
|
|
farcall Function11b6b4
|
|
farcall Function17d0f3
|
|
ld a, $1
|
|
ld [wScriptVar], 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, [wMapGroup]
|
|
ld b, a
|
|
ld a, [wMapNumber]
|
|
ld c, a
|
|
call GetMapSceneID
|
|
ld a, d
|
|
or e
|
|
jr z, .no_scene
|
|
ld a, [de]
|
|
and a
|
|
ret nz
|
|
|
|
.no_scene
|
|
ld a, $1
|
|
ld [wScriptVar], a
|
|
ret
|
|
|
|
.different
|
|
call CloseSRAM
|
|
ld a, $5
|
|
call GetSRAMBank
|
|
xor a
|
|
ld [$a800], a
|
|
call CloseSRAM
|
|
ld [wScriptVar], a
|
|
ld a, [wMapGroup]
|
|
ld b, a
|
|
ld a, [wMapNumber]
|
|
ld c, a
|
|
call GetMapSceneID
|
|
ld a, d
|
|
or e
|
|
jr z, .no_scene_2
|
|
xor a
|
|
ld [de], a
|
|
|
|
.no_scene_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 [wScriptVar], a
|
|
call CloseSRAM
|
|
ret
|
|
|
|
Function170abe: ; 170abe (5c:4abe) BattleTowerAction $14
|
|
call BattleTower_CheckSaveFileExistsAndIsYours
|
|
ld a, [wScriptVar]
|
|
and a
|
|
ret z
|
|
|
|
ld a, BANK(sBattleTowerSaveFileFlags)
|
|
call GetSRAMBank
|
|
ld a, [sBattleTowerSaveFileFlags]
|
|
and $1
|
|
ld [wScriptVar], a
|
|
call CloseSRAM
|
|
ret
|
|
|
|
Function170ad7: ; 170ad7 (5c:4ad7) BattleTowerAction $15
|
|
ld a, BANK(sBattleTowerSaveFileFlags)
|
|
call GetSRAMBank
|
|
ld a, [sBattleTowerSaveFileFlags]
|
|
or $1
|
|
ld [sBattleTowerSaveFileFlags], 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 [wScriptVar], a
|
|
farcall BattleTower_LevelCheck ; level check
|
|
ret nc
|
|
ld a, $5
|
|
call GetSRAMBank
|
|
ld a, [$b2fb]
|
|
call CloseSRAM
|
|
ld [wScriptVar], 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 [wScriptVar], a
|
|
farcall BattleTower_UbersCheck
|
|
ret nc
|
|
ld a, $5
|
|
call GetSRAMBank
|
|
ld a, [$b2fb]
|
|
call CloseSRAM
|
|
ld [wScriptVar], a
|
|
ret
|
|
|
|
Special_LoadOpponentTrainerAndPokemonWithOTSprite: ; 0x170b44
|
|
farcall Function_LoadOpponentTrainerAndPokemons
|
|
ld a, [rSVBK]
|
|
push af
|
|
ld a, $3
|
|
ld [rSVBK], a
|
|
ld hl, wBT_OTTrainerClass
|
|
ld a, [hl]
|
|
dec a
|
|
ld c, a
|
|
ld b, $0
|
|
pop af
|
|
ld [rSVBK], a
|
|
ld hl, BTTrainerClassSprites
|
|
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, [wScriptVar]
|
|
dec a
|
|
sla a
|
|
ld e, a
|
|
sla a
|
|
sla a
|
|
sla a
|
|
ld c, a
|
|
ld b, 0
|
|
ld d, 0
|
|
ld hl, wMapObjects
|
|
add hl, bc
|
|
inc hl
|
|
ld a, [wBTTempOTSprite]
|
|
ld [hl], a
|
|
ld hl, wUsedSprites
|
|
add hl, de
|
|
ld [hli], a
|
|
ld [hUsedSpriteIndex], a
|
|
ld a, [hl]
|
|
ld [hUsedSpriteTile], a
|
|
farcall GetUsedSprite
|
|
ret
|
|
; 170b90
|
|
|
|
INCLUDE "data/trainers/sprites.asm"
|
|
|
|
DummySpecial_170bd2: ; 170bd2
|
|
ret
|
|
; 170bd3
|
|
|
|
Special_CheckForBattleTowerRules: ; 170bd3
|
|
farcall CheckForBattleTowerRules
|
|
jr c, .asm_170bde
|
|
xor a ; FALSE
|
|
jr .asm_170be0
|
|
|
|
.asm_170bde
|
|
ld a, TRUE
|
|
|
|
.asm_170be0
|
|
ld [wScriptVar], a
|
|
ret
|
|
; 170be4
|