Rename some sections
engine/battle_tower.asm fits better in events/
This commit is contained in:
@@ -1,210 +0,0 @@
|
||||
Function_LoadOpponentTrainerAndPokemons: ; 1f8000
|
||||
ld a, [rSVBK]
|
||||
push af
|
||||
ld a, BANK(BT_OTTrainer)
|
||||
ld [rSVBK], a
|
||||
|
||||
; Fill BT_OTTrainer with zeros
|
||||
xor a
|
||||
ld hl, BT_OTTrainer
|
||||
ld bc, BT_OTTrainerEnd - BT_OTTrainer
|
||||
call ByteFill
|
||||
|
||||
; Write $ff into the Item-Slots
|
||||
ld a, $ff
|
||||
ld [BT_OTPkmn1Item], a
|
||||
ld [BT_OTPkmn2Item], a
|
||||
ld [BT_OTPkmn3Item], a
|
||||
|
||||
; Set BT_OTTrainer as start address to write the following data to
|
||||
ld de, BT_OTTrainer
|
||||
|
||||
ld a, [hRandomAdd]
|
||||
ld b, a
|
||||
.resample ; loop to find a random trainer
|
||||
call Random
|
||||
ld a, [hRandomAdd]
|
||||
add b
|
||||
ld b, a ; b contains the nr of the trainer
|
||||
IF DEF(CRYSTAL11)
|
||||
and (1 << 7) - 1
|
||||
cp 70
|
||||
ELSE
|
||||
and (1 << 5) - 1
|
||||
cp 21
|
||||
ENDC
|
||||
jr nc, .resample
|
||||
ld b, a
|
||||
|
||||
ld a, BANK(sBTTrainers)
|
||||
call GetSRAMBank
|
||||
|
||||
ld c, BATTLETOWER_NROFTRAINERS
|
||||
ld hl, sBTTrainers
|
||||
.next_trainer
|
||||
ld a, [hli]
|
||||
cp b
|
||||
jr z, .resample
|
||||
dec c
|
||||
jr nz, .next_trainer ; c <= 7 initialise all 7 trainers?
|
||||
|
||||
ld hl, sBTTrainers
|
||||
ld a, [sNrOfBeatenBattleTowerTrainers]
|
||||
ld c, a
|
||||
ld a, b
|
||||
ld b, 0
|
||||
add hl, bc
|
||||
ld [hl], a
|
||||
|
||||
call CloseSRAM
|
||||
|
||||
push af
|
||||
; Copy name (10 bytes) and class (1 byte) of trainer
|
||||
ld hl, BattleTowerTrainers
|
||||
ld bc, NAME_LENGTH
|
||||
call AddNTimes
|
||||
ld bc, NAME_LENGTH
|
||||
call CopyBytes
|
||||
|
||||
call Function_LoadRandomBattleTowerPkmn
|
||||
pop af
|
||||
|
||||
ld hl, BattleTowerTrainerData
|
||||
ld bc, BATTLETOWER_TRAINERDATALENGTH
|
||||
call AddNTimes
|
||||
ld bc, BATTLETOWER_TRAINERDATALENGTH
|
||||
.copy_bt_trainer_data_loop
|
||||
ld a, BANK(BattleTowerTrainerData)
|
||||
call GetFarByte
|
||||
ld [de], a
|
||||
inc hl
|
||||
inc de
|
||||
dec bc
|
||||
ld a, b
|
||||
or c
|
||||
jr nz, .copy_bt_trainer_data_loop
|
||||
|
||||
pop af
|
||||
ld [rSVBK], a
|
||||
|
||||
ret
|
||||
|
||||
|
||||
Function_LoadRandomBattleTowerPkmn: ; 1f8081
|
||||
ld c, BATTLETOWER_NROFPKMNS
|
||||
.loop
|
||||
push bc
|
||||
ld a, BANK(sBTPkmnPrevTrainer1)
|
||||
call GetSRAMBank
|
||||
|
||||
.FindARandomBattleTowerPkmn:
|
||||
; From Which LevelGroup are the Pkmn loaded
|
||||
; a = 1..10
|
||||
ld a, [wBTChoiceOfLvlGroup] ; [$d800]
|
||||
dec a
|
||||
ld hl, BattleTowerMons
|
||||
ld bc, BattleTowerMons2 - BattleTowerMons1
|
||||
call AddNTimes
|
||||
|
||||
ld a, [hRandomAdd]
|
||||
ld b, a
|
||||
.resample
|
||||
call Random
|
||||
ld a, [hRandomAdd]
|
||||
add b
|
||||
ld b, a
|
||||
and $1f
|
||||
cp BATTLETOWER_NRMONSPERLEVELBRACKET
|
||||
jr nc, .resample
|
||||
; in register 'a' is the chosen Pkmn of the LevelGroup
|
||||
|
||||
; Check if Pkmn was already loaded before
|
||||
; Check current and the 2 previous teams
|
||||
; includes check if item is double at the current team
|
||||
ld bc, PARTYMON_STRUCT_LENGTH + PKMN_NAME_LENGTH
|
||||
call AddNTimes
|
||||
ld a, [hli]
|
||||
ld b, a
|
||||
ld a, [hld]
|
||||
ld c, a
|
||||
ld a, [BT_OTPkmn1]
|
||||
cp b
|
||||
jr z, .FindARandomBattleTowerPkmn
|
||||
ld a, [BT_OTPkmn1Item]
|
||||
cp c
|
||||
jr z, .FindARandomBattleTowerPkmn
|
||||
ld a, [BT_OTPkmn2]
|
||||
cp b
|
||||
jr z, .FindARandomBattleTowerPkmn
|
||||
ld a, [BT_OTPkmn2Item]
|
||||
cp c
|
||||
jr z, .FindARandomBattleTowerPkmn
|
||||
ld a, [BT_OTPkmn3]
|
||||
cp b
|
||||
jr z, .FindARandomBattleTowerPkmn
|
||||
ld a, [BT_OTPkmn3Item]
|
||||
cp c
|
||||
jr z, .FindARandomBattleTowerPkmn
|
||||
ld a, [sBTPkmnPrevTrainer1]
|
||||
cp b
|
||||
jr z, .FindARandomBattleTowerPkmn
|
||||
ld a, [sBTPkmnPrevTrainer2]
|
||||
cp b
|
||||
jr z, .FindARandomBattleTowerPkmn
|
||||
ld a, [sBTPkmnPrevTrainer3]
|
||||
cp b
|
||||
jr z, .FindARandomBattleTowerPkmn
|
||||
ld a, [sBTPkmnPrevPrevTrainer1]
|
||||
cp b
|
||||
jr z, .FindARandomBattleTowerPkmn
|
||||
ld a, [sBTPkmnPrevPrevTrainer2]
|
||||
cp b
|
||||
jr z, .FindARandomBattleTowerPkmn
|
||||
ld a, [sBTPkmnPrevPrevTrainer3]
|
||||
cp b
|
||||
jr z, .FindARandomBattleTowerPkmn
|
||||
|
||||
ld bc, PARTYMON_STRUCT_LENGTH + PKMN_NAME_LENGTH
|
||||
call CopyBytes
|
||||
|
||||
ld a, [wNamedObjectIndexBuffer]
|
||||
push af
|
||||
push de
|
||||
ld hl, - (PARTYMON_STRUCT_LENGTH + PKMN_NAME_LENGTH)
|
||||
add hl, de
|
||||
ld a, [hl]
|
||||
ld [wNamedObjectIndexBuffer], a
|
||||
ld bc, PARTYMON_STRUCT_LENGTH
|
||||
add hl, bc
|
||||
push hl
|
||||
call GetPokemonName
|
||||
ld h, d
|
||||
ld l, e
|
||||
pop de
|
||||
ld bc, PKMN_NAME_LENGTH
|
||||
call CopyBytes
|
||||
|
||||
pop de
|
||||
pop af
|
||||
ld [wNamedObjectIndexBuffer], a
|
||||
pop bc
|
||||
dec c
|
||||
jp nz, .loop
|
||||
|
||||
ld a, [sBTPkmnPrevTrainer1]
|
||||
ld [sBTPkmnPrevPrevTrainer1], a
|
||||
ld a, [sBTPkmnPrevTrainer2]
|
||||
ld [sBTPkmnPrevPrevTrainer2], a
|
||||
ld a, [sBTPkmnPrevTrainer3]
|
||||
ld [sBTPkmnPrevPrevTrainer3], a
|
||||
ld a, [BT_OTPkmn1]
|
||||
ld [sBTPkmnPrevTrainer1], a
|
||||
ld a, [BT_OTPkmn2]
|
||||
ld [sBTPkmnPrevTrainer2], a
|
||||
ld a, [BT_OTPkmn3]
|
||||
ld [sBTPkmnPrevTrainer3], a
|
||||
call CloseSRAM
|
||||
ret
|
||||
; 1f814e
|
||||
|
||||
INCLUDE "data/battle_tower.asm"
|
@@ -1,96 +0,0 @@
|
||||
GiveOddEgg: ; 1fb4b6
|
||||
; Figure out which egg to give.
|
||||
|
||||
; Compare a random word to
|
||||
; probabilities out of 0xffff.
|
||||
call Random
|
||||
ld hl, OddEggProbabilities
|
||||
ld c, 0
|
||||
ld b, c
|
||||
.loop
|
||||
ld a, [hli]
|
||||
ld e, a
|
||||
ld a, [hli]
|
||||
ld d, a
|
||||
|
||||
; Break on $ffff.
|
||||
ld a, d
|
||||
cp HIGH($ffff)
|
||||
jr nz, .not_done
|
||||
ld a, e
|
||||
cp LOW($ffff)
|
||||
jr z, .done
|
||||
.not_done
|
||||
|
||||
; Break when [hRandom] <= de.
|
||||
ld a, [hRandom + 1]
|
||||
cp d
|
||||
jr c, .done
|
||||
jr z, .ok
|
||||
jr .next
|
||||
.ok
|
||||
ld a, [hRandom + 0]
|
||||
cp e
|
||||
jr c, .done
|
||||
jr z, .done
|
||||
.next
|
||||
inc bc
|
||||
jr .loop
|
||||
.done
|
||||
|
||||
ld hl, OddEggs
|
||||
ld a, OddEgg2 - OddEgg1
|
||||
call AddNTimes
|
||||
|
||||
ld de, OddEggSpecies
|
||||
ld bc, PARTYMON_STRUCT_LENGTH + 2 * PKMN_NAME_LENGTH
|
||||
call CopyBytes
|
||||
|
||||
ld a, EGG_TICKET
|
||||
ld [CurItem], a
|
||||
ld a, 1
|
||||
ld [wItemQuantityChangeBuffer], a
|
||||
ld a, -1
|
||||
ld [CurItemQuantity], a
|
||||
ld hl, NumItems
|
||||
call TossItem
|
||||
|
||||
; load species in wcd2a
|
||||
ld a, EGG
|
||||
ld [wMobileMonSpeciesBuffer], a
|
||||
|
||||
; load pointer to (wMobileMonSpeciesBuffer - 1) in wMobileMonSpeciesPointerBuffer
|
||||
ld a, LOW(wMobileMonSpeciesBuffer - 1)
|
||||
ld [wMobileMonSpeciesPointerBuffer], a
|
||||
ld a, HIGH(wMobileMonSpeciesBuffer - 1)
|
||||
ld [wMobileMonSpeciesPointerBuffer + 1], a
|
||||
; load pointer to OddEggSpecies in wMobileMonStructurePointerBuffer
|
||||
ld a, LOW(OddEggSpecies)
|
||||
ld [wMobileMonStructurePointerBuffer], a
|
||||
ld a, HIGH(OddEggSpecies)
|
||||
ld [wMobileMonStructurePointerBuffer + 1], a
|
||||
|
||||
; load Odd Egg Name in wTempOddEggNickname
|
||||
ld hl, .Odd
|
||||
ld de, wTempOddEggNickname
|
||||
ld bc, PKMN_NAME_LENGTH
|
||||
call CopyBytes
|
||||
|
||||
; load pointer to wTempOddEggNickname in wMobileMonOTNamePointerBuffer
|
||||
ld a, LOW(wTempOddEggNickname)
|
||||
ld [wMobileMonOTNamePointerBuffer], a
|
||||
ld a, HIGH(wTempOddEggNickname)
|
||||
ld [wMobileMonOTNamePointerBuffer + 1], a
|
||||
; load pointer to wOddEggName in wMobileMonNicknamePointerBuffer
|
||||
ld a, LOW(wOddEggName)
|
||||
ld [wMobileMonNicknamePointerBuffer], a
|
||||
ld a, HIGH(wOddEggName)
|
||||
ld [wMobileMonNicknamePointerBuffer + 1], a
|
||||
farcall AddMobileMonToParty
|
||||
ret
|
||||
; 1fb546
|
||||
|
||||
.Odd:
|
||||
db "ODD@@@@@@@@@"
|
||||
|
||||
INCLUDE "data/odd_eggs.asm"
|
Reference in New Issue
Block a user