mirror of
https://gitlab.com/xCrystal/pokecrystal-board.git
synced 2024-11-16 11:27:33 -08:00
e6ea1889fb
The former is arguably misleading (as you don’t access the memory location in hl to retrieve the jump location), and is consequently deprecated in newer versions of rgbds. This fix silences these deprecation warnings.
399 lines
5.0 KiB
NASM
Executable File
399 lines
5.0 KiB
NASM
Executable File
|
|
ReadTrainerParty: ; 39771
|
|
ld a, [InBattleTowerBattle]
|
|
bit 0, a
|
|
ret nz
|
|
|
|
ld a, [wLinkMode]
|
|
and a
|
|
ret nz
|
|
|
|
ld hl, OTPartyCount
|
|
xor a
|
|
ld [hli], a
|
|
dec a
|
|
ld [hl], a
|
|
|
|
ld hl, OTPartyMons
|
|
ld bc, OTPartyMonsEnd - OTPartyMons
|
|
xor a
|
|
call ByteFill
|
|
|
|
ld a, [OtherTrainerClass]
|
|
cp CAL
|
|
jr nz, .not_cal2
|
|
ld a, [OtherTrainerID]
|
|
cp CAL2
|
|
jr z, .cal2
|
|
ld a, [OtherTrainerClass]
|
|
.not_cal2
|
|
|
|
dec a
|
|
ld c, a
|
|
ld b, 0
|
|
ld hl, TrainerGroups
|
|
add hl, bc
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
|
|
ld a, [OtherTrainerID]
|
|
ld b, a
|
|
.skip_trainer
|
|
dec b
|
|
jr z, .got_trainer
|
|
.loop
|
|
ld a, [hli]
|
|
cp $ff
|
|
jr nz, .loop
|
|
jr .skip_trainer
|
|
.got_trainer
|
|
|
|
.skip_name
|
|
ld a, [hli]
|
|
cp "@"
|
|
jr nz, .skip_name
|
|
|
|
ld a, [hli]
|
|
ld c, a
|
|
ld b, 0
|
|
ld d, h
|
|
ld e, l
|
|
ld hl, TrainerTypes
|
|
add hl, bc
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
ld bc, .done
|
|
push bc
|
|
jp hl
|
|
|
|
.done
|
|
jp ComputeTrainerReward
|
|
|
|
.cal2
|
|
ld a, BANK(sMysteryGiftTrainer)
|
|
call GetSRAMBank
|
|
ld de, sMysteryGiftTrainer
|
|
call TrainerType2
|
|
call CloseSRAM
|
|
jr .done
|
|
; 397e3
|
|
|
|
TrainerTypes: ; 397e3
|
|
dw TrainerType1 ; level, species
|
|
dw TrainerType2 ; level, species, moves
|
|
dw TrainerType3 ; level, species, item
|
|
dw TrainerType4 ; level, species, item, moves
|
|
; 397eb
|
|
|
|
TrainerType1: ; 397eb
|
|
; normal (level, species)
|
|
ld h, d
|
|
ld l, e
|
|
.loop
|
|
ld a, [hli]
|
|
cp $ff
|
|
ret z
|
|
|
|
ld [CurPartyLevel], a
|
|
ld a, [hli]
|
|
ld [CurPartySpecies], a
|
|
ld a, OTPARTYMON
|
|
ld [MonType], a
|
|
push hl
|
|
predef TryAddMonToParty
|
|
pop hl
|
|
jr .loop
|
|
; 39806
|
|
|
|
TrainerType2: ; 39806
|
|
; moves
|
|
ld h, d
|
|
ld l, e
|
|
.loop
|
|
ld a, [hli]
|
|
cp $ff
|
|
ret z
|
|
|
|
ld [CurPartyLevel], a
|
|
ld a, [hli]
|
|
ld [CurPartySpecies], a
|
|
ld a, OTPARTYMON
|
|
ld [MonType], a
|
|
|
|
push hl
|
|
predef TryAddMonToParty
|
|
ld a, [OTPartyCount]
|
|
dec a
|
|
ld hl, OTPartyMon1Moves
|
|
ld bc, PARTYMON_STRUCT_LENGTH
|
|
call AddNTimes
|
|
ld d, h
|
|
ld e, l
|
|
pop hl
|
|
|
|
ld b, NUM_MOVES
|
|
.copy_moves
|
|
ld a, [hli]
|
|
ld [de], a
|
|
inc de
|
|
dec b
|
|
jr nz, .copy_moves
|
|
|
|
push hl
|
|
|
|
ld a, [OTPartyCount]
|
|
dec a
|
|
ld hl, OTPartyMon1Species
|
|
ld bc, PARTYMON_STRUCT_LENGTH
|
|
call AddNTimes
|
|
ld d, h
|
|
ld e, l
|
|
ld hl, MON_PP
|
|
add hl, de
|
|
push hl
|
|
ld hl, MON_MOVES
|
|
add hl, de
|
|
pop de
|
|
|
|
ld b, NUM_MOVES
|
|
.copy_pp
|
|
ld a, [hli]
|
|
and a
|
|
jr z, .copied_pp
|
|
|
|
push hl
|
|
push bc
|
|
dec a
|
|
ld hl, Moves + MOVE_PP
|
|
ld bc, MOVE_LENGTH
|
|
call AddNTimes
|
|
ld a, BANK(Moves)
|
|
call GetFarByte
|
|
pop bc
|
|
pop hl
|
|
|
|
ld [de], a
|
|
inc de
|
|
dec b
|
|
jr nz, .copy_pp
|
|
.copied_pp
|
|
|
|
pop hl
|
|
jr .loop
|
|
; 39871
|
|
|
|
TrainerType3: ; 39871
|
|
; item
|
|
ld h, d
|
|
ld l, e
|
|
.loop
|
|
ld a, [hli]
|
|
cp $ff
|
|
ret z
|
|
|
|
ld [CurPartyLevel], a
|
|
ld a, [hli]
|
|
ld [CurPartySpecies], a
|
|
ld a, OTPARTYMON
|
|
ld [MonType], a
|
|
push hl
|
|
predef TryAddMonToParty
|
|
ld a, [OTPartyCount]
|
|
dec a
|
|
ld hl, OTPartyMon1Item
|
|
ld bc, PARTYMON_STRUCT_LENGTH
|
|
call AddNTimes
|
|
ld d, h
|
|
ld e, l
|
|
pop hl
|
|
ld a, [hli]
|
|
ld [de], a
|
|
jr .loop
|
|
; 3989d (e:589d)
|
|
|
|
TrainerType4: ; 3989d
|
|
; item + moves
|
|
ld h, d
|
|
ld l, e
|
|
.loop
|
|
ld a, [hli]
|
|
cp $ff
|
|
ret z
|
|
|
|
ld [CurPartyLevel], a
|
|
ld a, [hli]
|
|
ld [CurPartySpecies], a
|
|
|
|
ld a, OTPARTYMON
|
|
ld [MonType], a
|
|
|
|
push hl
|
|
predef TryAddMonToParty
|
|
ld a, [OTPartyCount]
|
|
dec a
|
|
ld hl, OTPartyMon1Item
|
|
ld bc, PARTYMON_STRUCT_LENGTH
|
|
call AddNTimes
|
|
ld d, h
|
|
ld e, l
|
|
pop hl
|
|
|
|
ld a, [hli]
|
|
ld [de], a
|
|
|
|
push hl
|
|
ld a, [OTPartyCount]
|
|
dec a
|
|
ld hl, OTPartyMon1Moves
|
|
ld bc, PARTYMON_STRUCT_LENGTH
|
|
call AddNTimes
|
|
ld d, h
|
|
ld e, l
|
|
pop hl
|
|
|
|
ld b, NUM_MOVES
|
|
.copy_moves
|
|
ld a, [hli]
|
|
ld [de], a
|
|
inc de
|
|
dec b
|
|
jr nz, .copy_moves
|
|
|
|
push hl
|
|
|
|
ld a, [OTPartyCount]
|
|
dec a
|
|
ld hl, OTPartyMon1
|
|
ld bc, PARTYMON_STRUCT_LENGTH
|
|
call AddNTimes
|
|
ld d, h
|
|
ld e, l
|
|
ld hl, MON_PP
|
|
add hl, de
|
|
|
|
push hl
|
|
ld hl, MON_MOVES
|
|
add hl, de
|
|
pop de
|
|
|
|
ld b, NUM_MOVES
|
|
.copy_pp
|
|
ld a, [hli]
|
|
and a
|
|
jr z, .copied_pp
|
|
|
|
push hl
|
|
push bc
|
|
dec a
|
|
ld hl, Moves + MOVE_PP
|
|
ld bc, MOVE_LENGTH
|
|
call AddNTimes
|
|
ld a, BANK(Moves)
|
|
call GetFarByte
|
|
pop bc
|
|
pop hl
|
|
|
|
ld [de], a
|
|
inc de
|
|
dec b
|
|
jr nz, .copy_pp
|
|
.copied_pp
|
|
|
|
pop hl
|
|
jr .loop
|
|
; 3991b
|
|
|
|
ComputeTrainerReward: ; 3991b (e:591b)
|
|
ld hl, hProduct
|
|
xor a
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld a, [wEnemyTrainerBaseReward]
|
|
ld [hli], a
|
|
ld a, [CurPartyLevel]
|
|
ld [hl], a
|
|
call Multiply
|
|
ld hl, wBattleReward
|
|
xor a
|
|
ld [hli], a
|
|
ld a, [hProduct + 2]
|
|
ld [hli], a
|
|
ld a, [hProduct + 3]
|
|
ld [hl], a
|
|
ret
|
|
|
|
|
|
Battle_GetTrainerName:: ; 39939
|
|
ld a, [InBattleTowerBattle]
|
|
bit 0, a
|
|
ld hl, OTPlayerName
|
|
jp nz, CopyTrainerName
|
|
|
|
ld a, [OtherTrainerID]
|
|
ld b, a
|
|
ld a, [OtherTrainerClass]
|
|
ld c, a
|
|
|
|
GetTrainerName:: ; 3994c
|
|
ld a, c
|
|
cp CAL
|
|
jr nz, .not_cal2
|
|
|
|
ld a, BANK(sMysteryGiftTrainerHouseFlag)
|
|
call GetSRAMBank
|
|
ld a, [sMysteryGiftTrainerHouseFlag]
|
|
and a
|
|
call CloseSRAM
|
|
jr z, .not_cal2
|
|
|
|
ld a, BANK(sMysteryGiftPartnerName)
|
|
call GetSRAMBank
|
|
ld hl, sMysteryGiftPartnerName
|
|
call CopyTrainerName
|
|
jp CloseSRAM
|
|
|
|
.not_cal2
|
|
dec c
|
|
push bc
|
|
ld b, 0
|
|
ld hl, TrainerGroups
|
|
add hl, bc
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
pop bc
|
|
|
|
.loop
|
|
dec b
|
|
jr z, CopyTrainerName
|
|
|
|
.skip
|
|
ld a, [hli]
|
|
cp $ff
|
|
jr nz, .skip
|
|
jr .loop
|
|
|
|
CopyTrainerName: ; 39984
|
|
ld de, StringBuffer1
|
|
push de
|
|
ld bc, NAME_LENGTH
|
|
call CopyBytes
|
|
pop de
|
|
ret
|
|
; 39990
|
|
|
|
Function39990: ; 39990
|
|
; This function is useless.
|
|
ld de, StringBuffer1
|
|
push de
|
|
ld bc, NAME_LENGTH
|
|
pop de
|
|
ret
|
|
; 39999
|