mirror of
https://gitlab.com/xCrystal/pokecrystal-board.git
synced 2024-11-16 11:27:33 -08:00
More Battle Tower shenanigans
This commit is contained in:
parent
eb39f6a339
commit
09603bf031
@ -114,6 +114,7 @@ BATTLETOWER_NROFPKMNS EQU 3
|
||||
BATTLETOWER_TRAINERDATALENGTH EQU $24
|
||||
BATTLETOWER_NROFTRAINERS EQU 7
|
||||
BATTLETOWER_NRMONSPERLEVELBRACKET EQU BATTLETOWER_NROFPKMNS * BATTLETOWER_NROFTRAINERS
|
||||
BATTLE_TOWER_STRUCT_LENGTH EQU $e0 ; NAME_LENGTH + 3 * (PARTYMON_STRUCT_LENGTH + PKMN_NAME_LENGTH) + BATTLETOWER_TRAINERDATALENGTH
|
||||
|
||||
NUM_WILDMONS_PER_AREA_TIME_OF_DAY EQU 7
|
||||
WILDMON_GRASS_STRUCTURE_LENGTH EQU 2 + 3 * (1 + 2 * NUM_WILDMONS_PER_AREA_TIME_OF_DAY)
|
||||
|
@ -1,13 +1,13 @@
|
||||
Function_LoadOpponentTrainerAndPokemons: ; 1f8000
|
||||
ld a, [rSVBK]
|
||||
push af
|
||||
ld a, BANK(BT_OTrainer)
|
||||
ld a, BANK(BT_OTTrainer)
|
||||
ld [rSVBK], a
|
||||
|
||||
; Fill BT_OTrainer with zeros
|
||||
; Fill BT_OTTrainer with zeros
|
||||
xor a
|
||||
ld hl, BT_OTrainer
|
||||
ld bc, BT_OTrainerEnd - BT_OTrainer
|
||||
ld hl, BT_OTTrainer
|
||||
ld bc, BT_OTTrainerEnd - BT_OTTrainer
|
||||
call ByteFill
|
||||
|
||||
; Write $ff into the Item-Slots
|
||||
@ -17,7 +17,7 @@ Function_LoadOpponentTrainerAndPokemons: ; 1f8000
|
||||
ld [BT_OTPkmn3Item], a
|
||||
|
||||
; Set BT_OTTrainer as start address to write the following data to
|
||||
ld de, BT_OTrainer
|
||||
ld de, BT_OTTrainer
|
||||
|
||||
ld a, [hRandomAdd]
|
||||
ld b, a
|
||||
|
@ -141,7 +141,7 @@ SpecialsPointers:: ; c029
|
||||
add_special Function170114
|
||||
add_special BattleTowerBattle
|
||||
add_special Function1704e1
|
||||
add_special Function17021d
|
||||
add_special EmptySpecial_17021d
|
||||
add_special Function_LoadOpponentTrainerAndPokemonsWithOTSprite
|
||||
add_special Function11ba38
|
||||
add_special SpecialCheckForBattleTowerRules
|
||||
|
4
main.asm
4
main.asm
@ -15809,7 +15809,7 @@ Function13a47: ; unreferenced
|
||||
push bc
|
||||
call Function13b71
|
||||
push de
|
||||
callba Function17d073
|
||||
callba CheckStringForErrors
|
||||
pop hl
|
||||
pop bc
|
||||
jr nc, .asm_13b0e
|
||||
@ -15847,7 +15847,7 @@ Function13a47: ; unreferenced
|
||||
push bc
|
||||
call Function13b71
|
||||
push de
|
||||
callba Function17d073
|
||||
callba CheckStringForErrors
|
||||
pop hl
|
||||
jr nc, .asm_13b34
|
||||
ld d, h
|
||||
|
@ -1,16 +1,16 @@
|
||||
BattleTowerText:: ; 11c000
|
||||
; Print text c for trainer [BT_OTrainer_TrainerClass]
|
||||
; Print text c for trainer [BT_OTTrainerClass]
|
||||
; 1: Intro text
|
||||
; 2: Player lost
|
||||
; 3: Player won
|
||||
ld a, [rSVBK]
|
||||
push af
|
||||
ld a, 3 ; BANK(BT_OTrainer_TrainerClass)
|
||||
ld a, 3 ; BANK(BT_OTTrainerClass)
|
||||
ld [rSVBK], a
|
||||
IF DEF(CRYSTAL11)
|
||||
ld hl, BT_OTrainer_TrainerClass
|
||||
ld hl, BT_OTTrainerClass
|
||||
ELSE
|
||||
ld hl, BT_OTrainer_Name + 5
|
||||
ld hl, BT_OTName + 5
|
||||
ENDC
|
||||
ld a, [hl]
|
||||
dec a
|
||||
|
422
misc/battle_tower_5c.asm
Executable file
422
misc/battle_tower_5c.asm
Executable file
@ -0,0 +1,422 @@
|
||||
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
|
||||
|
||||
Function170394: ; 170394
|
||||
ld hl, $c608 + 11
|
||||
ld d, $3
|
||||
.asm_170399
|
||||
push de
|
||||
push hl
|
||||
ld b, h
|
||||
ld c, l
|
||||
ld a, [hl]
|
||||
and a
|
||||
jr z, .asm_1703b1
|
||||
cp $ff
|
||||
jr z, .asm_1703b1
|
||||
cp $fe
|
||||
jr z, .asm_1703b1
|
||||
cp $fd
|
||||
jr z, .asm_1703b1
|
||||
cp $fc
|
||||
jr nz, .asm_1703b4
|
||||
|
||||
.asm_1703b1
|
||||
ld a, $eb
|
||||
ld [hl], a
|
||||
|
||||
.asm_1703b4
|
||||
ld [CurSpecies], a
|
||||
call GetBaseData
|
||||
ld a, $5
|
||||
call GetSRAMBank
|
||||
ld a, [$b2fb]
|
||||
call CloseSRAM
|
||||
ld e, a
|
||||
ld hl, $001f
|
||||
add hl, bc
|
||||
ld a, [hl]
|
||||
cp $2
|
||||
ld a, $2
|
||||
jr c, .asm_1703d6
|
||||
ld a, [hl]
|
||||
cp e
|
||||
jr c, .asm_1703d7
|
||||
ld a, e
|
||||
|
||||
.asm_1703d6
|
||||
ld [hl], a
|
||||
|
||||
.asm_1703d7
|
||||
ld [CurPartyLevel], a
|
||||
ld hl, $0002
|
||||
add hl, bc
|
||||
ld d, $3
|
||||
ld a, [hli]
|
||||
and a
|
||||
jr z, .asm_1703ea
|
||||
cp $fc
|
||||
jr nc, .asm_1703ea
|
||||
jr .asm_1703f4
|
||||
|
||||
.asm_1703ea
|
||||
dec hl
|
||||
ld a, $1
|
||||
ld [hli], a
|
||||
xor a
|
||||
rept 2
|
||||
ld [hli], a
|
||||
endr
|
||||
ld [hl], a
|
||||
jr .asm_1703ff
|
||||
|
||||
.asm_1703f4
|
||||
ld a, [hl]
|
||||
cp $fc
|
||||
jr c, .asm_1703fb
|
||||
ld [hl], $0
|
||||
|
||||
.asm_1703fb
|
||||
inc hl
|
||||
dec d
|
||||
jr nz, .asm_1703f4
|
||||
|
||||
.asm_1703ff
|
||||
ld hl, $0024
|
||||
add hl, bc
|
||||
ld d, h
|
||||
ld e, l
|
||||
push hl
|
||||
push de
|
||||
ld hl, $000a
|
||||
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, .asm_170399
|
||||
ret
|
||||
; 170426
|
||||
|
||||
BT_ChrisName: ; 170426
|
||||
db "CHRIS@"
|
||||
; 17042c
|
||||
|
||||
Function17042c: ; 17042c
|
||||
ld hl, OTPartyMon2ID
|
||||
ld a, $7
|
||||
.asm_170431
|
||||
push af
|
||||
push hl
|
||||
ld c, $12
|
||||
.asm_170435
|
||||
ld a, [hli]
|
||||
ld b, a
|
||||
ld a, [hli]
|
||||
and a
|
||||
jr z, .asm_170451
|
||||
cp $f
|
||||
jr nc, .asm_17045b
|
||||
push hl
|
||||
ld hl, Unknown_170470
|
||||
dec a
|
||||
ld e, a
|
||||
ld d, 0
|
||||
add hl, de
|
||||
ld a, [hl]
|
||||
pop hl
|
||||
cp b
|
||||
jr c, .asm_17045b
|
||||
jr z, .asm_17045b
|
||||
jr .asm_170456
|
||||
|
||||
.asm_170451
|
||||
ld a, b
|
||||
cp $fc
|
||||
jr nc, .asm_17045b
|
||||
|
||||
.asm_170456
|
||||
dec c
|
||||
jr nz, .asm_170435
|
||||
jr .asm_170466
|
||||
|
||||
.asm_17045b
|
||||
pop de
|
||||
push de
|
||||
ld hl, Unknown_17047e
|
||||
ld bc, BATTLETOWER_TRAINERDATALENGTH
|
||||
call CopyBytes
|
||||
|
||||
.asm_170466
|
||||
pop hl
|
||||
ld de, $00e0
|
||||
add hl, de
|
||||
pop af
|
||||
dec a
|
||||
jr nz, .asm_170431
|
||||
ret
|
||||
; 170470
|
||||
|
||||
Unknown_170470:
|
||||
db $12, $24, $45, $45, $42, $42, $45, $42, $27, $27, $45, $27, $42, $24
|
||||
|
||||
Unknown_17047e:
|
||||
db $03, $04, $05, $08
|
||||
db $03, $05, $0e, $06
|
||||
db $03, $02, $00, $00
|
||||
db $39, $07, $07, $04
|
||||
db $00, $05, $04, $07
|
||||
db $01, $05, $00, $00
|
||||
db $0f, $05, $14, $07
|
||||
db $05, $05, $11, $0c
|
||||
db $0c, $06, $06, $04
|
||||
|
||||
|
||||
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(s1_be45)
|
||||
call GetSRAMBank
|
||||
ld a, $2
|
||||
ld [s1_be45], a
|
||||
ld hl, sNrOfBeatenBattleTowerTrainers
|
||||
inc [hl]
|
||||
call CloseSRAM
|
||||
SkipBattleTowerTrainer: ; 1704c9
|
||||
ret
|
||||
; 1704ca
|
@ -7543,7 +7543,7 @@ Function11b6b4: ; 11b6b4
|
||||
ld [$c628], a
|
||||
ld de, $c63d
|
||||
ld c, $5
|
||||
callba Function17d073
|
||||
callba CheckStringForErrors
|
||||
jr nc, .asm_11b70f
|
||||
callba Function17d187
|
||||
|
||||
@ -7557,7 +7557,7 @@ Function11b6b4: ; 11b6b4
|
||||
.asm_11b723
|
||||
ld de, $c642
|
||||
ld c, $5
|
||||
callba Function17d073
|
||||
callba CheckStringForErrors
|
||||
jr nc, .asm_11b736
|
||||
callba Function17d199
|
||||
|
||||
@ -7571,7 +7571,7 @@ Function11b6b4: ; 11b6b4
|
||||
.asm_11b74a
|
||||
ld de, $c647
|
||||
ld c, $21
|
||||
callba Function17d073
|
||||
callba CheckStringForErrors
|
||||
jr nc, .asm_11b75d
|
||||
callba Function17d1ab
|
||||
|
||||
@ -7590,7 +7590,7 @@ Function11b6b4: ; 11b6b4
|
||||
.asm_11b776
|
||||
ld de, $c668
|
||||
ld c, $5
|
||||
callba Function17d073
|
||||
callba CheckStringForErrors
|
||||
jr nc, .asm_11b789
|
||||
callba Function17d1c9
|
||||
|
||||
|
@ -251,418 +251,7 @@ Function17020c: ; 17020c
|
||||
ret
|
||||
; 170215
|
||||
|
||||
BattleTowerBattle: ; 170215
|
||||
xor a
|
||||
ld [wJumptableIndex], a
|
||||
call Function17022c
|
||||
ret
|
||||
; 17021d
|
||||
|
||||
Function17021d: ; 17021d
|
||||
ret
|
||||
; 17021e
|
||||
|
||||
Function17021e: ; 17021e
|
||||
xor a
|
||||
ld [wJumptableIndex], a
|
||||
ld [wcf64], a
|
||||
ld [wcf65], a
|
||||
ld [wcf66], a
|
||||
ret
|
||||
; 17022c
|
||||
|
||||
Function17022c: ; 17022c
|
||||
.loop
|
||||
call Jumpto_BattleTowerBattleFunction
|
||||
call DelayFrame
|
||||
ld a, [wJumptableIndex]
|
||||
cp $1
|
||||
jr nz, .loop
|
||||
ret
|
||||
; 17023a
|
||||
|
||||
Jumpto_BattleTowerBattleFunction: ; 17023a
|
||||
ld a, [wJumptableIndex]
|
||||
ld e, a
|
||||
ld d, 0
|
||||
ld hl, Jumptable_BattleTowerBattleFunctions
|
||||
rept 2
|
||||
add hl, de
|
||||
endr
|
||||
ld a, [hli]
|
||||
ld h, [hl]
|
||||
ld l, a
|
||||
jp [hl]
|
||||
; 170249
|
||||
|
||||
Jumptable_BattleTowerBattleFunctions: ; 170249
|
||||
dw RunBattleTowerBattle
|
||||
dw SkipBattleTowerBattle
|
||||
; 17024d
|
||||
|
||||
RunBattleTowerBattle: ; 17024d
|
||||
ld a, [Options]
|
||||
push af
|
||||
ld hl, Options
|
||||
set 6, [hl]
|
||||
ld a, [InBattleTowerBattle]
|
||||
push af
|
||||
or $1
|
||||
ld [InBattleTowerBattle], a
|
||||
xor a
|
||||
ld [wLinkMode], a
|
||||
callba Mobile_HealParty
|
||||
callba HealParty
|
||||
call Function1702b7
|
||||
call Function170bf7
|
||||
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 $f7
|
||||
ld [hli], a
|
||||
ld a, $50
|
||||
ld [hl], a
|
||||
|
||||
.lost
|
||||
pop af
|
||||
ld [InBattleTowerBattle], a
|
||||
pop af
|
||||
ld [Options], a
|
||||
ld a, $1
|
||||
ld [wJumptableIndex], a
|
||||
ret
|
||||
|
||||
|
||||
Function1702b7: ; 1702b7
|
||||
; Initialise the BattleTower-Trainer and his Pkmn
|
||||
call CopyBTTrainer_FromBT_OTrainer_TowBT_OTTempCopy
|
||||
ld de, wBT_OTTempCopy + wBT_OTTempCopy_Pkmn1Name ; $c643
|
||||
ld c, PKMN_NAME_LENGTH
|
||||
callba Function17d073
|
||||
jr nc, .asm_1702db
|
||||
|
||||
ld a, [wBT_OTTempCopy + wBT_OTTempCopy_Pkmn1]
|
||||
ld [wd265], a
|
||||
call GetPokemonName
|
||||
ld l, e
|
||||
ld h, d
|
||||
ld de, wBT_OTTempCopy + wBT_OTTempCopy_Pkmn1Name ; $c643
|
||||
ld bc, PKMN_NAME_LENGTH
|
||||
call CopyBytes
|
||||
|
||||
.asm_1702db
|
||||
ld de, wBT_OTTempCopy + wBT_OTTempCopy_Pkmn2Name ; $c67e
|
||||
ld c, PKMN_NAME_LENGTH
|
||||
callba Function17d073
|
||||
jr nc, .asm_1702fc
|
||||
ld a, [wBT_OTTempCopy + wBT_OTTempCopy_Pkmn2] ; [$c64e]
|
||||
ld [wd265], a
|
||||
call GetPokemonName
|
||||
ld l, e
|
||||
ld h, d
|
||||
ld de, wBT_OTTempCopy + wBT_OTTempCopy_Pkmn2Name ; $c67e
|
||||
ld bc, PKMN_NAME_LENGTH
|
||||
call CopyBytes
|
||||
|
||||
.asm_1702fc
|
||||
ld de, wBT_OTTempCopy + wBT_OTTempCopy_Pkmn3Name ; $c686 + 51 = $c6b9
|
||||
ld c, PKMN_NAME_LENGTH
|
||||
callba Function17d073
|
||||
jr nc, .asm_17031d
|
||||
ld a, [wBT_OTTempCopy + wBT_OTTempCopy_Pkmn3] ; [$c689]
|
||||
ld [wd265], a
|
||||
call GetPokemonName
|
||||
ld l, e
|
||||
ld h, d
|
||||
ld de, wBT_OTTempCopy + wBT_OTTempCopy_Pkmn3Name ; $c686 + 51 = $c6b9
|
||||
ld bc, PKMN_NAME_LENGTH
|
||||
call CopyBytes
|
||||
|
||||
.asm_17031d
|
||||
ld a, $50
|
||||
ld [wBT_OTTempCopy + wBT_OTTempCopy_45], a ; $c64d
|
||||
ld [wBT_OTTempCopy + wBT_OTTempCopy_80], a ; $c688
|
||||
ld [wBT_OTTempCopy + wBT_OTTempCopy_BB], a ; $c68a + 57 = $c6c3
|
||||
call Function170c98
|
||||
ld de, wBT_OTTempCopy
|
||||
ld c, $a
|
||||
callba Function17d073
|
||||
jr nc, .asm_17033d
|
||||
ld hl, String_170426
|
||||
jr .asm_170340
|
||||
|
||||
.asm_17033d
|
||||
ld hl, wBT_OTTempCopy ; 0xc608
|
||||
|
||||
.asm_170340
|
||||
ld de, wd26b
|
||||
ld bc, $000a
|
||||
call CopyBytes
|
||||
ld a, $50
|
||||
ld [de], a
|
||||
ld hl, wBT_OTTempCopy + wBT_OTTempCopy_TrainerClass
|
||||
ld a, [hli]
|
||||
ld [OtherTrainerClass], a
|
||||
ld a, $ea
|
||||
ld [BGMapBuffer], a
|
||||
ld a, $d3
|
||||
ld [wcd21], 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
|
||||
.asm_170367
|
||||
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, [wcd21]
|
||||
ld d, a
|
||||
ld bc, $000b
|
||||
call CopyBytes
|
||||
ld a, e
|
||||
ld [BGMapBuffer], a
|
||||
ld a, d
|
||||
ld [wcd21], a
|
||||
pop de
|
||||
pop bc
|
||||
pop af
|
||||
dec a
|
||||
and a
|
||||
jr nz, .asm_170367
|
||||
ld a, $ff
|
||||
ld [bc], a
|
||||
ret
|
||||
; 170394
|
||||
|
||||
Function170394: ; 170394
|
||||
ld hl, $c608 + 11
|
||||
ld d, $3
|
||||
.asm_170399
|
||||
push de
|
||||
push hl
|
||||
ld b, h
|
||||
ld c, l
|
||||
ld a, [hl]
|
||||
and a
|
||||
jr z, .asm_1703b1
|
||||
cp $ff
|
||||
jr z, .asm_1703b1
|
||||
cp $fe
|
||||
jr z, .asm_1703b1
|
||||
cp $fd
|
||||
jr z, .asm_1703b1
|
||||
cp $fc
|
||||
jr nz, .asm_1703b4
|
||||
|
||||
.asm_1703b1
|
||||
ld a, $eb
|
||||
ld [hl], a
|
||||
|
||||
.asm_1703b4
|
||||
ld [CurSpecies], a
|
||||
call GetBaseData
|
||||
ld a, $5
|
||||
call GetSRAMBank
|
||||
ld a, [$b2fb]
|
||||
call CloseSRAM
|
||||
ld e, a
|
||||
ld hl, $001f
|
||||
add hl, bc
|
||||
ld a, [hl]
|
||||
cp $2
|
||||
ld a, $2
|
||||
jr c, .asm_1703d6
|
||||
ld a, [hl]
|
||||
cp e
|
||||
jr c, .asm_1703d7
|
||||
ld a, e
|
||||
|
||||
.asm_1703d6
|
||||
ld [hl], a
|
||||
|
||||
.asm_1703d7
|
||||
ld [CurPartyLevel], a
|
||||
ld hl, $0002
|
||||
add hl, bc
|
||||
ld d, $3
|
||||
ld a, [hli]
|
||||
and a
|
||||
jr z, .asm_1703ea
|
||||
cp $fc
|
||||
jr nc, .asm_1703ea
|
||||
jr .asm_1703f4
|
||||
|
||||
.asm_1703ea
|
||||
dec hl
|
||||
ld a, $1
|
||||
ld [hli], a
|
||||
xor a
|
||||
rept 2
|
||||
ld [hli], a
|
||||
endr
|
||||
ld [hl], a
|
||||
jr .asm_1703ff
|
||||
|
||||
.asm_1703f4
|
||||
ld a, [hl]
|
||||
cp $fc
|
||||
jr c, .asm_1703fb
|
||||
ld [hl], $0
|
||||
|
||||
.asm_1703fb
|
||||
inc hl
|
||||
dec d
|
||||
jr nz, .asm_1703f4
|
||||
|
||||
.asm_1703ff
|
||||
ld hl, $0024
|
||||
add hl, bc
|
||||
ld d, h
|
||||
ld e, l
|
||||
push hl
|
||||
push de
|
||||
ld hl, $000a
|
||||
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, $003b
|
||||
add hl, bc
|
||||
pop de
|
||||
dec d
|
||||
jp nz, .asm_170399
|
||||
ret
|
||||
; 170426
|
||||
|
||||
String_170426: ; 170426
|
||||
db "CHRIS@"
|
||||
; 17042c
|
||||
|
||||
Function17042c: ; 17042c
|
||||
ld hl, OTPartyMon2ID
|
||||
ld a, $7
|
||||
.asm_170431
|
||||
push af
|
||||
push hl
|
||||
ld c, $12
|
||||
.asm_170435
|
||||
ld a, [hli]
|
||||
ld b, a
|
||||
ld a, [hli]
|
||||
and a
|
||||
jr z, .asm_170451
|
||||
cp $f
|
||||
jr nc, .asm_17045b
|
||||
push hl
|
||||
ld hl, Unknown_170470
|
||||
dec a
|
||||
ld e, a
|
||||
ld d, 0
|
||||
add hl, de
|
||||
ld a, [hl]
|
||||
pop hl
|
||||
cp b
|
||||
jr c, .asm_17045b
|
||||
jr z, .asm_17045b
|
||||
jr .asm_170456
|
||||
|
||||
.asm_170451
|
||||
ld a, b
|
||||
cp $fc
|
||||
jr nc, .asm_17045b
|
||||
|
||||
.asm_170456
|
||||
dec c
|
||||
jr nz, .asm_170435
|
||||
jr .asm_170466
|
||||
|
||||
.asm_17045b
|
||||
pop de
|
||||
push de
|
||||
ld hl, Unknown_17047e
|
||||
ld bc, $0024
|
||||
call CopyBytes
|
||||
|
||||
.asm_170466
|
||||
pop hl
|
||||
ld de, $00e0
|
||||
add hl, de
|
||||
pop af
|
||||
dec a
|
||||
jr nz, .asm_170431
|
||||
ret
|
||||
; 170470
|
||||
|
||||
Unknown_170470:
|
||||
db $12, $24, $45, $45, $42, $42, $45, $42, $27, $27, $45, $27, $42, $24
|
||||
|
||||
Unknown_17047e:
|
||||
db $03, $04, $05, $08
|
||||
db $03, $05, $0e, $06
|
||||
db $03, $02, $00, $00
|
||||
db $39, $07, $07, $04
|
||||
db $00, $05, $04, $07
|
||||
db $01, $05, $00, $00
|
||||
db $0f, $05, $14, $07
|
||||
db $05, $05, $11, $0c
|
||||
db $0c, $06, $06, $04
|
||||
|
||||
|
||||
CopyBTTrainer_FromBT_OTrainer_TowBT_OTTempCopy: ; 1704a2
|
||||
; copy the BattleTower-Trainer data that lies at 'BT_OTrainer' to 'wBT_OTTempCopy'
|
||||
ld a, [rSVBK]
|
||||
push af
|
||||
ld a, $3
|
||||
ld [rSVBK], a
|
||||
ld hl, BT_OTrainer ; $d100
|
||||
ld de, wBT_OTTempCopy ; $c608
|
||||
ld bc, BT_OTrainerEnd - BT_OTrainer ; $e0 = $a + $1 + 3*$3b + $24
|
||||
; = $a + $1 + BATTLETOWER_NROFPKMNS * (PARTYMON_STRUCT_LENGTH + PKMN_NAME_LENGTH) + BATTLETOWER_TRAINERDATALENGTH
|
||||
call CopyBytes
|
||||
pop af
|
||||
ld [rSVBK], a
|
||||
ld a, BANK(s1_be45)
|
||||
call GetSRAMBank
|
||||
ld a, $2
|
||||
ld [s1_be45], a
|
||||
ld hl, sNrOfBeatenBattleTowerTrainers
|
||||
inc [hl]
|
||||
call CloseSRAM
|
||||
SkipBattleTowerBattle: ; 1704c9
|
||||
ret
|
||||
; 1704ca
|
||||
|
||||
INCLUDE "misc/battle_tower_5c.asm"
|
||||
|
||||
Function1704ca: ; 1704ca
|
||||
ld a, [$be46]
|
||||
@ -1753,7 +1342,7 @@ Function170be4: ; 170be4
|
||||
ret
|
||||
; 170bf7
|
||||
|
||||
Function170bf7: ; 170bf7
|
||||
Clears5_a89a: ; 170bf7
|
||||
ld a, $5
|
||||
call GetSRAMBank
|
||||
ld hl, $a89a
|
||||
@ -1881,46 +1470,46 @@ Function170c8b: ; 170c8b
|
||||
ret
|
||||
; 170c98
|
||||
|
||||
Function170c98: ; 170c98
|
||||
ld c, $3
|
||||
ld hl, $c608 + 13
|
||||
.asm_170c9d
|
||||
CheckBTMonMovesForErrors: ; 170c98
|
||||
ld c, BATTLETOWER_NROFPKMNS
|
||||
ld hl, wBT_OTTempPkmn1Moves
|
||||
.loop
|
||||
push hl
|
||||
ld a, [hl]
|
||||
cp $fc
|
||||
jr c, .asm_170ca6
|
||||
ld a, $1
|
||||
cp NUM_ATTACKS + 1
|
||||
jr c, .okay
|
||||
ld a, POUND
|
||||
ld [hl], a
|
||||
|
||||
.asm_170ca6
|
||||
.okay
|
||||
inc hl
|
||||
ld b, $3
|
||||
.asm_170ca9
|
||||
ld b, NUM_MOVES - 1
|
||||
.loop2
|
||||
ld a, [hl]
|
||||
and a
|
||||
jr z, .asm_170cb1
|
||||
cp $fc
|
||||
jr c, .asm_170cb9
|
||||
jr z, .loop3
|
||||
cp NUM_ATTACKS + 1
|
||||
jr c, .next
|
||||
|
||||
.asm_170cb1
|
||||
.loop3
|
||||
xor a
|
||||
ld [hl], a
|
||||
inc hl
|
||||
dec b
|
||||
jr nz, .asm_170cb1
|
||||
jr .asm_170cbd
|
||||
jr nz, .loop3
|
||||
jr .done
|
||||
|
||||
.asm_170cb9
|
||||
.next
|
||||
inc hl
|
||||
dec b
|
||||
jr nz, .asm_170ca9
|
||||
jr nz, .loop2
|
||||
|
||||
.asm_170cbd
|
||||
.done
|
||||
pop hl
|
||||
ld de, $003b
|
||||
ld de, PARTYMON_STRUCT_LENGTH + PKMN_NAME_LENGTH
|
||||
add hl, de
|
||||
dec c
|
||||
jr nz, .asm_170c9d
|
||||
jr nz, .loop
|
||||
ret
|
||||
; 170cc6
|
||||
|
||||
|
@ -178,48 +178,50 @@ HaveWantPals: ; 17cff3
|
||||
RGB 0, 0, 0
|
||||
|
||||
|
||||
Function17d073: ; 17d073
|
||||
.asm_17d073
|
||||
CheckStringForErrors: ; 17d073
|
||||
; Valid character ranges:
|
||||
; $00, $05 - $13, $19 - $1c, $26 - $34, $3a - $3e, $40 - $48, $60 - $ff
|
||||
.loop
|
||||
ld a, [de]
|
||||
inc de
|
||||
and a
|
||||
jr z, .asm_17d0ae
|
||||
jr z, .NextChar
|
||||
cp $60
|
||||
jr nc, .asm_17d0ae
|
||||
jr nc, .NextChar
|
||||
cp $4e
|
||||
jr z, .asm_17d0ae
|
||||
cp $50
|
||||
jr z, .asm_17d0b1
|
||||
jr z, .NextChar
|
||||
cp "@"
|
||||
jr z, .Done
|
||||
cp $5
|
||||
jr c, .asm_17d0ac
|
||||
cp $14
|
||||
jr c, .asm_17d0ae
|
||||
jr c, .Fail
|
||||
cp "<PLAY_G>"
|
||||
jr c, .NextChar
|
||||
cp $19
|
||||
jr c, .asm_17d0ac
|
||||
jr c, .Fail
|
||||
cp $1d
|
||||
jr c, .asm_17d0ae
|
||||
jr c, .NextChar
|
||||
cp $26
|
||||
jr c, .asm_17d0ac
|
||||
jr c, .Fail
|
||||
cp $35
|
||||
jr c, .asm_17d0ae
|
||||
jr c, .NextChar
|
||||
cp $3a
|
||||
jr c, .asm_17d0ac
|
||||
jr c, .Fail
|
||||
cp $3f
|
||||
jr c, .asm_17d0ae
|
||||
jr c, .NextChar
|
||||
cp $40
|
||||
jr c, .asm_17d0ac
|
||||
jr c, .Fail
|
||||
cp $49
|
||||
jr c, .asm_17d0ae
|
||||
jr c, .NextChar
|
||||
|
||||
.asm_17d0ac
|
||||
.Fail
|
||||
scf
|
||||
ret
|
||||
|
||||
.asm_17d0ae
|
||||
.NextChar
|
||||
dec c
|
||||
jr nz, .asm_17d073
|
||||
jr nz, .loop
|
||||
|
||||
.asm_17d0b1
|
||||
.Done
|
||||
and a
|
||||
ret
|
||||
; 17d0b3
|
||||
|
68
wram.asm
68
wram.asm
@ -129,6 +129,22 @@ channel_struct: MACRO
|
||||
ds 1 ; c132
|
||||
ENDM
|
||||
|
||||
battle_tower_struct: MACRO
|
||||
\1Name:: ds NAME_LENGTH +- 1
|
||||
\1TrainerClass:: ds 1
|
||||
\1Pkmn1:: party_struct \1Pkmn1
|
||||
\1Pkmn1Name:: ds PKMN_NAME_LENGTH
|
||||
\1Pkmn1NameEnd::
|
||||
\1Pkmn2:: party_struct \1Pkmn2
|
||||
\1Pkmn2Name:: ds PKMN_NAME_LENGTH
|
||||
\1Pkmn2NameEnd::
|
||||
\1Pkmn3:: party_struct \1Pkmn3
|
||||
\1Pkmn3Name:: ds PKMN_NAME_LENGTH
|
||||
\1Pkmn3NameEnd::
|
||||
\1TrainerData:: ds BATTLETOWER_TRAINERDATALENGTH
|
||||
\1TrainerEnd::
|
||||
endm
|
||||
|
||||
INCLUDE "vram.asm"
|
||||
|
||||
SECTION "Stack", WRAM0
|
||||
@ -435,10 +451,12 @@ wOddEggName:: ds PKMN_NAME_LENGTH
|
||||
wOddEggOTName:: ds PKMN_NAME_LENGTH
|
||||
ds -70
|
||||
|
||||
wBT_OTTemp:: battle_tower_struct wBT_OTTemp
|
||||
ds -BATTLE_TOWER_STRUCT_LENGTH
|
||||
|
||||
wMisc::
|
||||
wBattle::
|
||||
wc608::
|
||||
wBT_OTTempCopy:: ; used to copy the data of the BattleTower-Trainer and the 3 Pkmn
|
||||
|
||||
wEnemyMoveStruct:: ds MOVE_LENGTH ; c608
|
||||
wc60f::
|
||||
@ -888,21 +906,21 @@ wMiscEnd::
|
||||
wc7e8:: ds 24
|
||||
|
||||
|
||||
RSSET 0 ; Offsets for wBT_OTTempCopy:: @ $c608
|
||||
wBT_OTTempCopy_0 RB NAME_LENGTH + -1 ; $c608
|
||||
wBT_OTTempCopy_TrainerClass RB 1 ; $c608 + $a = $c612
|
||||
wBT_OTTempCopy_Pkmn1 RB $30 ; PARTYMON_STRUCT_LENGTH ; $c608 + $b = $c613
|
||||
wBT_OTTempCopy_Pkmn1Name RB PKMN_NAME_LENGTH + -1 ; $c608 + $45 = $c64d
|
||||
wBT_OTTempCopy_45 RB 1
|
||||
wBT_OTTempCopy_Pkmn2 RB $30 ; PARTYMON_STRUCT_LENGTH ; $c608 + $46 = $c64e
|
||||
wBT_OTTempCopy_Pkmn2Name RB PKMN_NAME_LENGTH + -1 ; $c608 + $76 = $c67e
|
||||
wBT_OTTempCopy_80 RB 1
|
||||
wBT_OTTempCopy_Pkmn3 RB $30 ; PARTYMON_STRUCT_LENGTH ; $c608 + $81 = $c689
|
||||
wBT_OTTempCopy_Pkmn3Name RB PKMN_NAME_LENGTH + -1 ; $c608 + $b1 = $c6b9
|
||||
wBT_OTTempCopy_BB RB 1
|
||||
RSSET 0 ; Offsets for wBT_OTTemp:: @ $c608
|
||||
wBT_OTTemp_0 RB NAME_LENGTH + -1 ; $c608
|
||||
wBT_OTTemp_TrainerClass RB 1 ; $c608 + $a = $c612
|
||||
wBT_OTTemp_Pkmn1 RB $30 ; PARTYMON_STRUCT_LENGTH ; $c608 + $b = $c613
|
||||
wBT_OTTemp_Pkmn1Name RB PKMN_NAME_LENGTH + -1 ; $c608 + $45 = $c64d
|
||||
wBT_OTTemp_45 RB 1
|
||||
wBT_OTTemp_Pkmn2 RB $30 ; PARTYMON_STRUCT_LENGTH ; $c608 + $46 = $c64e
|
||||
wBT_OTTemp_Pkmn2Name RB PKMN_NAME_LENGTH + -1 ; $c608 + $76 = $c67e
|
||||
wBT_OTTemp_80 RB 1
|
||||
wBT_OTTemp_Pkmn3 RB $30 ; PARTYMON_STRUCT_LENGTH ; $c608 + $81 = $c689
|
||||
wBT_OTTemp_Pkmn3Name RB PKMN_NAME_LENGTH + -1 ; $c608 + $b1 = $c6b9
|
||||
wBT_OTTemp_BB RB 1
|
||||
|
||||
GLOBAL wBT_OTTempCopy_TrainerClass, wBT_OTTempCopy_Pkmn1, wBT_OTTempCopy_Pkmn1Name, wBT_OTTempCopy_Pkmn2, wBT_OTTempCopy_Pkmn2Name, wBT_OTTempCopy_Pkmn3, wBT_OTTempCopy_Pkmn3Name
|
||||
GLOBAL wBT_OTTempCopy_45, wBT_OTTempCopy_80, wBT_OTTempCopy_BB
|
||||
GLOBAL wBT_OTTemp_TrainerClass, wBT_OTTemp_Pkmn1, wBT_OTTemp_Pkmn1Name, wBT_OTTemp_Pkmn2, wBT_OTTemp_Pkmn2Name, wBT_OTTemp_Pkmn3, wBT_OTTemp_Pkmn3Name
|
||||
GLOBAL wBT_OTTemp_45, wBT_OTTemp_80, wBT_OTTemp_BB
|
||||
|
||||
|
||||
|
||||
@ -1205,7 +1223,8 @@ CurMove::
|
||||
|
||||
wNamedObjectTypeBuffer:: ds 1
|
||||
ds 1
|
||||
wJumptableIndex:: ds 1
|
||||
wJumptableIndex::
|
||||
wcf63:: ds 1
|
||||
wNrOfBeatenBattleTowerTrainers::
|
||||
wMomBankDigitCursorPosition::
|
||||
wIntroSceneFrameCounter::
|
||||
@ -2695,22 +2714,9 @@ w3_d000:: ; d000
|
||||
w3_d090::
|
||||
ds $70
|
||||
|
||||
BT_OTrainer::
|
||||
w3_d100:: ; BattleTower OpponentTrainer-Data (length = 0xe0 = $a + $1 + 3*$3b + $24)
|
||||
BT_OTrainer_Name::
|
||||
ds NAME_LENGTH + -1
|
||||
BT_OTrainer_TrainerClass::
|
||||
ds 1
|
||||
BT_OTPkmn1:: party_struct BT_OTPkmn1
|
||||
BT_OTPkmn1Name:: ds PKMN_NAME_LENGTH
|
||||
BT_OTPkmn2:: party_struct BT_OTPkmn2
|
||||
BT_OTPkmn2Name:: ds PKMN_NAME_LENGTH
|
||||
BT_OTPkmn3:: party_struct BT_OTPkmn3
|
||||
BT_OTPkmn3Name:: ds PKMN_NAME_LENGTH
|
||||
|
||||
BT_OTrainerData:: ds $24
|
||||
BT_OTrainerEnd:: ; w3_d1e0
|
||||
|
||||
BT_OTTrainer:: battle_tower_struct BT_OT
|
||||
; d1e0
|
||||
ds $20
|
||||
BT_TrainerTextIndex::
|
||||
ds $600
|
||||
|
Loading…
Reference in New Issue
Block a user