shithub: pokecrystal

ref: f599e477fc3306dbca9cad4aeadfe7a66b84c7bc
dir: /misc/battle_tower_5c.asm/

View raw version
Function1700b0: ; 1700b0
	call Function17021e
	callba Function118121
	ret
; 1700ba

Function1700ba: ; 1700ba
	call Function17021e
	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, $dffc
	ld de, $aa41
	ld bc, $0004
	call CopyBytes
	ld hl, $d202
	ld de, $aa8e
	ld bc, $0594
	call CopyBytes
	ld hl, $aa5d
	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, $dffc
	ld bc, $0004
	call CopyBytes
	call CloseSRAM
	pop af
	ld [rSVBK], a
	ret
; 170114

Function170114: ; 170114
	call Function17021e
	call Function170121
	callba Function11805f
	ret
; 170121

Function170121: ; 170121
	ld a, $5
	call GetSRAMBank
	ld hl, $a948
	ld de, $c608
	ld bc, $00f6
	call CopyBytes
	call CloseSRAM
	call Function170c8b
	ret
; 170139

Function170139: ; 170139
	ld a, $5
	call GetSRAMBank
	ld de, $aa41
	ld h, $0
	ld l, h
	ld bc, $03e8
	call Function17020c
	ld bc, $0064
	call Function17020c
	ld bc, $000a
	call Function17020c
	ld a, [de]
	ld c, a
	ld b, $0
	add hl, bc
	call CloseSRAM
	ld a, h
	ld [$c608], a
	ld a, l
	ld [$c608 + 1], a
	ld hl, $c628
	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, $0005 ; Japanese name length
	call CopyBytes
	ld bc, PlayerID
	ld de, PlayerGender
	callba Function4e929
	ld de, $c62c + 5
	ld a, c
	ld [de], a
	inc de
	ld a, $df
	ld [wcd49], a
	ld a, $dc
	ld [wcd4a], a
	ld a, $41
	ld [wcd4b], a
	ld a, $de
	ld [wcd4c], a
	ld a, $3
.asm_1701ac
	push af
	ld a, [wcd49]
	ld l, a
	ld a, [wcd4a]
	ld h, a
	ld bc, $0030
	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, .asm_1701ac
	ld a, $4
	call GetSRAMBank
	ld hl, $a013
	ld bc, $0024
	call CopyBytes
	call CloseSRAM
	ld a, $5
	call GetSRAMBank
	ld hl, $a894
	ld bc, $0006
	call CopyBytes
	ld hl, $c608
	ld de, $a948
	ld bc, $00f6
	call CopyBytes
	call CloseSRAM
	ret
; 17020c

Function17020c: ; 17020c
	ld a, [de]
	inc de
	and a
	ret z

.loop
	add hl, bc
	dec a
	jr nz, .loop
	ret
; 170215

BattleTowerBattle: ; 170215
	xor a
	ld [wcf63], a
	call _BattleTowerBattle
	ret
; 17021d

EmptySpecial_17021d: ; 17021d
	ret
; 17021e

Function17021e: ; 17021e
	xor a
	ld [wcf63], a
	ld [wcf64], a
	ld [wcf65], a
	ld [wcf66], a
	ret
; 17022c

_BattleTowerBattle: ; 17022c
.loop
	call .do_jumptable
	call DelayFrame
	ld a, [wcf63]
	cp $1
	jr nz, .loop
	ret
; 17023a

.do_jumptable: ; 17023a
	ld a, [wcf63]
	ld e, a
	ld d, 0
	ld hl, .jumptable
rept 2
	add hl, de
endr
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]
; 170249

.jumptable: ; 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 Mobile_HealParty
	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 ; wcf64
	call CloseSRAM
	ld hl, StringBuffer3
	ld a, [wNrOfBeatenBattleTowerTrainers] ; wcf64
	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 [wcf63], 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
rept 2
	ld [hli], a
endr
	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_EXP + 2
	add hl, bc
	ld b, $1
	predef CalcPkmnStats
	pop de
	pop hl
rept 2
	dec de
endr
	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, 7
.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 $f
	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 ; $c608
	ld bc, BATTLE_TOWER_STRUCT_LENGTH
	call CopyBytes

	pop af
	ld [rSVBK], a

	ld a, BANK(sBattleTowerChallengeState)
	call GetSRAMBank
	ld a, $2
	ld [sBattleTowerChallengeState], a
	ld hl, sNrOfBeatenBattleTowerTrainers
	inc [hl]
	call CloseSRAM
SkipBattleTowerTrainer: ; 1704c9
	ret
; 1704ca
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

Function1704e1: ; 1704e1
	call SpeechTextBox
	call FadeToMenu
	call Function17021e
	call Function1704f1
	call ReturnToCallingMenu
	ret
; 1704f1

Function1704f1: ; 1704f1
	call ClearBGPalettes
	call ClearSprites
	call ClearScreen
.asm_1704fa
	call JoyTextDelay
	ld a, [wJumptableIndex]
	bit 7, a
	jr nz, .asm_17050f
	call Function170510
	callba ReloadMapPart
	jr .asm_1704fa

.asm_17050f
	ret
; 170510

Function170510: ; 170510
	ld a, [wJumptableIndex]
	ld e, a
	ld d, 0
	ld hl, Jumptable_17051f
rept 2
	add hl, de
endr
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]
; 17051f

Jumptable_17051f: ; 17051f
	dw Function170525
	dw Function170571
	dw Function170577
; 170525

Function170525: ; 170525
	ld a, $5
	call GetSRAMBank

	ld hl, $a89c
	ld de, StringBuffer3
	ld bc, $0016
	call CopyBytes

	ld hl, $a8b2
	ld de, $c608
	ld bc, $0096
	call CopyBytes

	call CloseSRAM
	hlcoord 1, 1
	ld de, StringBuffer3
	call PlaceString
	hlcoord 1, 3
	ld de, String_170676
	call PlaceString
	hlcoord 4, 3
	ld de, StringBuffer4
	call PlaceString
	hlcoord 8, 3
	ld de, String_17067a
	call PlaceString
	call Function1705b7
	call Function1705f0
	jr Function1705b2


Function170571:
	call SetPalettes
	call Function1705b2


Function170577:
	ld hl, hJoyPressed
	ld a, [hl]
	and $1
	jr nz, .asm_1705ac
	ld a, [hl]
	and $2
	jr nz, .asm_1705ac
	ld a, [hl]
	and $40
	jr nz, .asm_17058f
	ld a, [hl]
	and $80
	jr nz, .asm_17059d
	ret

.asm_17058f
	ld a, [wcf64]
	and a
	ret z
	sub $f
	ld [wcf64], a
	call Function1705f0
	ret

.asm_17059d
	ld a, [wcf64]
	cp $3c
	ret z
	add $f
	ld [wcf64], a
	call Function1705f0
	ret

.asm_1705ac
	ld hl, wJumptableIndex
	set 7, [hl]
	ret

Function1705b2:
	ld hl, wJumptableIndex
	inc [hl]
	ret
; 1705b7

Function1705b7: ; 1705b7
	hlcoord 0, 4
	ld a, $79
	ld [hli], a
	ld c, $12
.asm_1705bf
	ld a, $7a
	ld [hli], a
	dec c
	jr nz, .asm_1705bf
	ld a, $7b
	ld [hli], a
	ld de, $0014
	ld c, $c
.asm_1705cd
	ld a, $7c
	ld [hl], a
	add hl, de
	dec c
	jr nz, .asm_1705cd
	ld a, $7d
	ld [hli], a
	ld c, $12
.asm_1705d9
	ld a, $7a
	ld [hli], a
	dec c
	jr nz, .asm_1705d9
	ld a, $7e
	ld [hl], a
	ld de, $ffec
	add hl, de
	ld c, $c
.asm_1705e8
	ld a, $7c
	ld [hl], a
	add hl, de
	dec c
	jr nz, .asm_1705e8
	ret
; 1705f0

Function1705f0: ; 1705f0
	call Function17064b
	call Function17065d
	ld a, $50
	ld [wcd4e], a
	ld hl, $c608
	ld a, [wcf64]
	ld c, a
	xor a
	ld b, a
	add hl, bc
	push hl
	pop bc
	hlcoord 1, 6
	ld a, $6
.asm_17060c
	push af
	push hl
	ld a, $3
.asm_170610
	push af
	ld de, wcd49
	ld a, [bc]
	and a
	jr z, .asm_170625
	ld a, $5
.asm_17061a
	push af
	ld a, [bc]
	ld [de], a
	inc bc
	inc de
	pop af
	dec a
	jr nz, .asm_17061a
	jr .asm_170631

.asm_170625
	ld a, $5
.asm_170627
	push af
	ld a, $e3
	ld [de], a
	inc de
	inc bc
	pop af
	dec a
	jr nz, .asm_170627

.asm_170631
	ld de, wcd49
	push bc
	call PlaceString
	ld de, $0006
	add hl, de
	pop bc
	pop af
	dec a
	jr nz, .asm_170610
	pop hl
	ld de, $0028
	add hl, de
	pop af
	dec a
	jr nz, .asm_17060c
	ret
; 17064b

Function17064b: ; 17064b
	hlcoord 1, 5
	xor a
	ld b, $c
.asm_170651
	ld c, $12
.asm_170653
	ld [hli], a
	dec c
	jr nz, .asm_170653
rept 2
	inc hl
endr
	dec b
	jr nz, .asm_170651
	ret
; 17065d

Function17065d: ; 17065d
	ld a, [wcf64]
	and a
	jr z, .asm_170669
	hlcoord 18, 5
	ld a, $61
	ld [hl], a

.asm_170669
	ld a, [wcf64]
	cp $3c
	ret z
	hlcoord 18, 16
	ld a, $ee
	ld [hl], a
	ret
; 170676

String_170676: ; 170676
	db "ルーム@"
; 17067a

String_17067a: ; 17067a
	db "れきだいりーダーいちらん@"
; 170687

BattleTowerAction: ; 170687
	ld a, [ScriptVar]
	ld e, a
	ld d, 0
	ld hl, .jumptable
rept 2
	add hl, de
endr
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]
; 170696


.jumptable: ; 170696 (5c:4696)
	dw Function17075f ; 0x00
	dw Function170788 ; 0x01
	dw Function170778 ; 0x02
	dw Function170799 ; 0x03
	dw Function17079d ; 0x04
	dw Function1707ac ; 0x05
	dw Function1707f4 ; 0x06
	dw Function170868 ; 0x07
	dw Function170881 ; 0x08
	dw Function17089a ; 0x09
	dw Function1708b1 ; 0x0a
	dw CheckMobileEventIndex ; 0x0b
	dw Function1708c8 ; 0x0c
	dw Function1708f0 ; 0x0d
	dw Function17093c ; 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 Function170ae8 ; 0x18
	dw Function170b16 ; 0x19
	dw ResetBattleTowerTrainersSRAM ; 0x1a
	dw Function1706ee ; 0x1b
	dw Function17071b ; 0x1c
	dw Function170729 ; 0x1d
	dw Function17073e ; 0x1e
	dw Function170737 ; 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

Function1706ee: ; 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, $3
	ld [sBattleTowerChallengeState], a
	call CloseSRAM
	ret

Function170729: ; 170729 (5c:4729) BattleTowerAction $1d
	ld a, BANK(sBattleTowerChallengeState)
	call GetSRAMBank
	ld a, $4
	ld [sBattleTowerChallengeState], a
	call CloseSRAM
	ret

Function170737: ; 170737 (5c:4737) BattleTowerAction $1e
	callba SaveOptions
	ret

Function17073e: ; 17073e (5c:473e) BattleTowerAction $1f
; 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

Function17075f: ; 17075f (5c:475f) BattleTowerAction $00
	call Function17089a
	ld a, [ScriptVar]
	and a
	ret z

	ld a, BANK(sbe4f)
	call GetSRAMBank
	ld a, [sbe4f]
	and $2
	ld [ScriptVar], a
	call CloseSRAM
	ret

Function170778: ; 170778 (5c:4778) BattleTowerAction $02
	ld hl, sBattleTowerChallengeState
	ld a, BANK(sBattleTowerChallengeState)
	call GetSRAMBank
	ld a, [hl]
	ld [ScriptVar], a
	call CloseSRAM
	ret

Function170788: ; 170788 (5c:4788) BattleTowerAction $01
	ld a, BANK(sbe4f)
	call GetSRAMBank
	ld a, [sbe4f]
	or $2
	ld [sbe4f], a
	call CloseSRAM
	ret

Function170799: ; 170799 (5c:4799) BattleTowerAction $03
	ld c, $1
	jr asm_17079f

Function17079d: ; 17079d (5c:479d) BattleTowerAction $04
	ld c, $0
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, $8c
	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

Function170868: ; 170868 (5c:4868) BattleTowerAction $07
	ld a, BANK(sbe47)
	call GetSRAMBank
	ld a, [rSVBK]
	push af
	ld a, $3
	ld [rSVBK], a
	ld a, [wd000 + $800]
	ld [sbe47], a
	pop af
	ld [rSVBK], a
	call CloseSRAM
	ret

Function170881: ; 170881 (5c:4881) BattleTowerAction $08
	ld a, BANK(sbe47)
	call GetSRAMBank
	ld a, [rSVBK]
	push af
	ld a, $3
	ld [rSVBK], a
	ld a, [sbe47]
	ld [wd000 + $800], a
	pop af
	ld [rSVBK], a
	call CloseSRAM
	ret

Function17089a: ; 17089a BattleTowerAction $09
	ld a, [wSaveFileExists]
	and a
	jr z, .nope
	callba Function14bcb
	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


Function17093c: ; 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
	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
.asm_17096e
	push af
	ld a, [de]
	inc de
	cp [hl]
	inc hl
	jr nz, .asm_17099d
	pop af
	dec a
	jr nz, .asm_17096e
rept 4
	dec hl
endr
	ld a, $50
rept 2
	ld [hli], a
endr
	pop hl
	ld a, EGG_TICKET
	ld [CurItem], a
	ld a, $1
	ld [wItemQuantityChangeBuffer], a
	ld a, $ff
	ld [wd107], a
	ld hl, NumItems
	call TossItem
	ld a, $1
	ld [ScriptVar], a
	ret

.asm_17099d
	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
rept 2
	add hl, de
endr
	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 Function170a00
	dw Function170a00
	dw Function1709f3
	dw Function1709f3
	dw Function170a01
	dw Function170a33
; 1709f3

Function1709f3: ; 1709f3
	ld a, $5
	call GetSRAMBank
	ld a, $1
	ld [$a800], a
	call CloseSRAM

Function170a00: ; 170a00
	ret
; 170a01

Function170a01: ; 170a01
	ld a, $5
	call GetSRAMBank
	ld hl, $b023
	ld de, $c608
	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

Function170a33: ; 170a33
	ld a, $0
	call GetSRAMBank
	ld hl, wRTC
	ld de, $c608
	ld bc, $0004
	call CopyBytes
	call CloseSRAM
	ld a, $5
	call GetSRAMBank
	ld hl, $b08c
	ld de, $c608
	ld c, $4
.asm_170a54
	ld a, [de]
	inc de
	cp [hl]
	jr nz, .asm_170a78
	inc hl
	dec c
	jr nz, .asm_170a54
	call CloseSRAM
	ld a, [MapGroup]
	ld b, a
	ld a, [MapNumber]
	ld c, a
	call GetMapTrigger
	ld a, d
	or e
	jr z, .asm_170a72
	ld a, [de]
	and a
	ret nz

.asm_170a72
	ld a, $1
	ld [ScriptVar], a
	ret

.asm_170a78
	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, .asm_170a9b
	xor a
	ld [de], a

.asm_170a9b
	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 Function17089a
	ld a, [ScriptVar]
	and a
	ret z
	ld a, BANK(sbe4f)
	call GetSRAMBank
	ld a, [sbe4f]
	and $1
	ld [ScriptVar], a
	call CloseSRAM
	ret

Function170ad7: ; 170ad7 (5c:4ad7) BattleTowerAction $15
	ld a, BANK(sbe4f)
	call GetSRAMBank
	ld a, [sbe4f]
	or $1
	ld [sbe4f], a
	call CloseSRAM
	ret

Function170ae8: ; 170ae8 (5c:4ae8) BattleTowerAction $18
	ld a, $5
	call GetSRAMBank
	ld a, [$b2fb]
	call CloseSRAM
	ld c, $a
	call SimpleDivide
	ld a, b
	ld [wcd4f], a
	xor a
	ld [ScriptVar], a
	callba Function119d93
	ret nc
	ld a, $5
	call GetSRAMBank
	ld a, [$b2fb]
	call CloseSRAM
	ld [ScriptVar], a
	ret

Function170b16: ; 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 Function119dd1
	ret nc
	ld a, $5
	call GetSRAMBank
	ld a, [$b2fb]
	call CloseSRAM
	ld [ScriptVar], a
	ret