mirror of
https://github.com/thornAvery/kep-hack.git
synced 2026-02-06 15:45:24 +13:00
Merge remote-tracking branch 'YamaArashi/master'
Conflicts: constants/misc_constants.asm engine/battle/core.asm engine/menu/pokedex.asm engine/town_map.asm home.asm hram.asm
This commit is contained in:
commit
dff0cdeb5a
224 changed files with 15213 additions and 4665 deletions
|
|
@ -75,8 +75,8 @@ Func_7861: ; 7861 (1:7861)
|
|||
.asm_78aa
|
||||
ld [wListMenuID], a ; wListMenuID
|
||||
predef UpdateHPBar2
|
||||
predef Func_3cd60
|
||||
predef Func_3cdec
|
||||
predef DrawPlayerHUDAndHPBar
|
||||
predef DrawEnemyHUDAndHPBar
|
||||
callab ReadPlayerMonCurHPAndStatus
|
||||
ld hl, SuckedHealthText ; $78dc
|
||||
ld a, [H_WHOSETURN] ; $fff3
|
||||
|
|
|
|||
|
|
@ -1,21 +1,21 @@
|
|||
Func_525af: ; 525af (14:65af)
|
||||
ld a, [$ffd7]
|
||||
ld a, [hTilesetType]
|
||||
ld [wd0d4], a
|
||||
xor a
|
||||
ld [wcd6a], a
|
||||
ld [wcf0b], a
|
||||
ld [wBattleResult], a
|
||||
ld hl, wcc2b
|
||||
ld [hli], a
|
||||
ld [hli], a
|
||||
ld [hli], a
|
||||
ld [hl], a
|
||||
ld [wListScrollOffset], a ; wcc36
|
||||
ld [wd05e], a
|
||||
ld [wCriticalHitOrOHKO], a
|
||||
ld [wBattleMonSpecies], a
|
||||
ld [wPartyAliveFlags], a
|
||||
ld [wPartyGainExpFlags], a
|
||||
ld [wPlayerMonNumber], a ; wPlayerMonNumber
|
||||
ld [wd078], a
|
||||
ld [wd35d], a
|
||||
ld [wEscapedFromBattle], a
|
||||
ld [wMapPalOffset], a
|
||||
ld hl, wcf1d
|
||||
ld [hli], a
|
||||
ld [hl], a
|
||||
|
|
@ -73,7 +73,7 @@ ParalyzeEffect_: ; 52601 (14:6601)
|
|||
and a
|
||||
jr nz, .asm_52659
|
||||
set 6, [hl]
|
||||
callab Func_3ed27
|
||||
callab QuarterSpeedDueToParalysis
|
||||
ld c, $1e
|
||||
call DelayFrames
|
||||
callab Func_3fba8
|
||||
|
|
|
|||
|
|
@ -1,63 +1,63 @@
|
|||
GainExperience: ; 5524f (15:524f)
|
||||
ld a, [W_ISLINKBATTLE]
|
||||
cp $4
|
||||
ret z
|
||||
call Func_5546c
|
||||
ld hl, wPartyMons
|
||||
ret z ; return if link battle
|
||||
call DivideExpDataByNumMonsGainingExp
|
||||
ld hl, wPartyMon1
|
||||
xor a
|
||||
ld [wWhichPokemon], a
|
||||
|
||||
Func_5525f: ; 5525f (15:525f)
|
||||
.partyMonLoop ; loop over each mon and add gained exp
|
||||
inc hl
|
||||
ld a, [hli]
|
||||
or [hl]
|
||||
jp z, Func_55436
|
||||
or [hl] ; is mon's HP 0?
|
||||
jp z, .nextMon ; if so, go to next mon
|
||||
push hl
|
||||
ld hl, wPartyAliveFlags
|
||||
ld hl, wPartyGainExpFlags
|
||||
ld a, [wWhichPokemon]
|
||||
ld c, a
|
||||
ld b, $2
|
||||
predef FlagActionPredef
|
||||
ld a, c
|
||||
and a
|
||||
and a ; is mon's gain exp flag set?
|
||||
pop hl
|
||||
jp z, Func_55436
|
||||
ld de, $10
|
||||
jp z, .nextMon ; if mon's gain exp flag not set, go to next mon
|
||||
ld de, (wPartyMon1HPExp + 1) - (wPartyMon1HP + 1)
|
||||
add hl, de
|
||||
ld d, h
|
||||
ld e, l
|
||||
ld hl, wd002
|
||||
ld hl, wEnemyMonBaseStats
|
||||
ld c, $5
|
||||
.asm_55285
|
||||
.gainStatExpLoop
|
||||
ld a, [hli]
|
||||
ld b, a
|
||||
ld a, [de]
|
||||
add b
|
||||
ld b, a ; enemy mon base stat
|
||||
ld a, [de] ; stat exp
|
||||
add b ; add enemy mon base state to stat exp
|
||||
ld [de], a
|
||||
jr nc, .asm_5529a
|
||||
jr nc, .nextBaseStat
|
||||
; if there was a carry, increment the upper byte
|
||||
dec de
|
||||
ld a, [de]
|
||||
inc a
|
||||
jr z, .asm_55295
|
||||
jr z, .maxStatExp ; jump if the value overflowed
|
||||
ld [de], a
|
||||
inc de
|
||||
jr .asm_5529a
|
||||
.asm_55295
|
||||
jr .nextBaseStat
|
||||
.maxStatExp ; if the upper byte also overflowed, then we have hit the max stat exp
|
||||
ld a, $ff
|
||||
ld [de], a
|
||||
inc de
|
||||
ld [de], a
|
||||
.asm_5529a
|
||||
.nextBaseStat
|
||||
dec c
|
||||
jr z, .asm_552a1
|
||||
inc de
|
||||
inc de
|
||||
jr .asm_55285
|
||||
jr .gainStatExpLoop
|
||||
.asm_552a1
|
||||
xor a
|
||||
ld [H_MULTIPLICAND], a
|
||||
ld [H_MULTIPLICAND + 1], a
|
||||
ld a, [wd008]
|
||||
ld a, [wEnemyMonBaseExp]
|
||||
ld [H_MULTIPLICAND + 2], a
|
||||
ld a, [wEnemyMonLevel]
|
||||
ld [H_MULTIPLIER], a
|
||||
|
|
@ -66,44 +66,46 @@ Func_5525f: ; 5525f (15:525f)
|
|||
ld [H_DIVISOR], a
|
||||
ld b, 4
|
||||
call Divide
|
||||
ld hl, $fff2
|
||||
ld hl, -((wPartyMon1HPExp + 1) - wPartyMon1OTID + 4 * 2)
|
||||
add hl, de
|
||||
ld b, [hl]
|
||||
ld b, [hl] ; party mon OTID
|
||||
inc hl
|
||||
ld a, [wPlayerID]
|
||||
cp b
|
||||
jr nz, .asm_552d1
|
||||
jr nz, .tradedMon
|
||||
ld b, [hl]
|
||||
ld a, [wPlayerID + 1]
|
||||
cp b
|
||||
ld a, $0
|
||||
jr z, .asm_552d6
|
||||
.asm_552d1
|
||||
call Func_5549f
|
||||
jr z, .next
|
||||
.tradedMon
|
||||
call BoostExp ; traded mon exp boost
|
||||
ld a, $1
|
||||
.asm_552d6
|
||||
.next
|
||||
ld [wcf4d], a
|
||||
ld a, [W_ISINBATTLE]
|
||||
dec a
|
||||
call nz, Func_5549f
|
||||
dec a ; is it a trainer battle?
|
||||
call nz, BoostExp ; if so, boost exp
|
||||
inc hl
|
||||
inc hl
|
||||
inc hl
|
||||
; add the gained exp to the party mon's exp
|
||||
ld b, [hl]
|
||||
ld a, [$ff98]
|
||||
ld a, [H_QUOTIENT + 3]
|
||||
ld [wcf4c], a
|
||||
add b
|
||||
ld [hld], a
|
||||
ld b, [hl]
|
||||
ld a, [$ff97]
|
||||
ld a, [H_QUOTIENT + 2]
|
||||
ld [wcf4b], a
|
||||
adc b
|
||||
ld [hl], a
|
||||
jr nc, .asm_552f8
|
||||
jr nc, .noCarry
|
||||
dec hl
|
||||
inc [hl]
|
||||
inc hl
|
||||
.asm_552f8
|
||||
.noCarry
|
||||
; calculate exp for the mon at max level, and cap the exp at that value
|
||||
inc hl
|
||||
push hl
|
||||
ld a, [wWhichPokemon]
|
||||
|
|
@ -111,11 +113,12 @@ Func_5525f: ; 5525f (15:525f)
|
|||
ld b, 0
|
||||
ld hl, wPartySpecies
|
||||
add hl, bc
|
||||
ld a, [hl]
|
||||
ld a, [hl] ; species
|
||||
ld [wd0b5], a
|
||||
call GetMonHeader
|
||||
ld d, MAX_LEVEL
|
||||
callab CalcExperience
|
||||
callab CalcExperience ; get max exp
|
||||
; compare max exp with current exp
|
||||
ld a, [$ff96]
|
||||
ld b, a
|
||||
ld a, [$ff97]
|
||||
|
|
@ -129,7 +132,8 @@ Func_5525f: ; 5525f (15:525f)
|
|||
sbc c
|
||||
ld a, [hl]
|
||||
sbc b
|
||||
jr c, .asm_5532e
|
||||
jr c, .next2
|
||||
; the mon's exp is greater than the max exp, so overwrite it with the max exp
|
||||
ld a, b
|
||||
ld [hli], a
|
||||
ld a, c
|
||||
|
|
@ -137,103 +141,108 @@ Func_5525f: ; 5525f (15:525f)
|
|||
ld a, d
|
||||
ld [hld], a
|
||||
dec hl
|
||||
.asm_5532e
|
||||
.next2
|
||||
push hl
|
||||
ld a, [wWhichPokemon]
|
||||
ld hl, wPartyMonNicks
|
||||
call GetPartyMonName
|
||||
ld hl, GainedText
|
||||
call PrintText
|
||||
xor a
|
||||
xor a ; party mon data
|
||||
ld [wcc49], a
|
||||
call LoadMonData
|
||||
pop hl
|
||||
ld bc, $13
|
||||
ld bc, wPartyMon1Level - wPartyMon1Exp
|
||||
add hl, bc
|
||||
push hl
|
||||
callba Func_58f43
|
||||
callba CalcLevelFromExperience
|
||||
pop hl
|
||||
ld a, [hl]
|
||||
ld a, [hl] ; current level
|
||||
cp d
|
||||
jp z, Func_55436
|
||||
jp z, .nextMon ; if level didn't change, go to next mon
|
||||
ld a, [W_CURENEMYLVL]
|
||||
push af
|
||||
push hl
|
||||
ld a, d
|
||||
ld [W_CURENEMYLVL], a
|
||||
ld [hl], a
|
||||
ld bc, $ffdf
|
||||
ld bc, wPartyMon1Species - wPartyMon1Level
|
||||
add hl, bc
|
||||
ld a, [hl]
|
||||
ld a, [hl] ; species
|
||||
ld [wd0b5], a
|
||||
ld [wd11e], a
|
||||
call GetMonHeader
|
||||
ld bc, $23
|
||||
ld bc, (wPartyMon1MaxHP + 1) - wPartyMon1Species
|
||||
add hl, bc
|
||||
push hl
|
||||
ld a, [hld]
|
||||
ld c, a
|
||||
ld b, [hl]
|
||||
push bc
|
||||
push bc ; push max HP (from before levelling up)
|
||||
ld d, h
|
||||
ld e, l
|
||||
ld bc, $ffee
|
||||
ld bc, (wPartyMon1HPExp - 1) - wPartyMon1MaxHP
|
||||
add hl, bc
|
||||
ld b, $1
|
||||
ld b, $1 ; consider stat exp when calculating stats
|
||||
call CalcStats
|
||||
pop bc
|
||||
pop bc ; pop max HP (from before levelling up)
|
||||
pop hl
|
||||
ld a, [hld]
|
||||
sub c
|
||||
ld c, a
|
||||
ld a, [hl]
|
||||
sbc b
|
||||
ld b, a
|
||||
ld de, $ffe0
|
||||
ld b, a ; bc = difference between old max HP and new max HP after levelling
|
||||
ld de, (wPartyMon1HP + 1) - wPartyMon1MaxHP
|
||||
add hl, de
|
||||
ld a, [hl]
|
||||
; add to the current HP the amount of max HP gained when levelling
|
||||
ld a, [hl] ; wPartyMon1HP + 1
|
||||
add c
|
||||
ld [hld], a
|
||||
ld a, [hl]
|
||||
ld a, [hl] ; wPartyMon1HP + 1
|
||||
adc b
|
||||
ld [hl], a
|
||||
ld [hl], a ; wPartyMon1HP
|
||||
ld a, [wPlayerMonNumber]
|
||||
ld b, a
|
||||
ld a, [wWhichPokemon]
|
||||
cp b
|
||||
jr nz, .asm_553f7
|
||||
cp b ; is the current mon in battle?
|
||||
jr nz, .printGrewLevelText
|
||||
; current mon is in battle
|
||||
ld de, wBattleMonHP
|
||||
; copy party mon HP to battle mon HP
|
||||
ld a, [hli]
|
||||
ld [de], a
|
||||
inc de
|
||||
ld a, [hl]
|
||||
ld [de], a
|
||||
ld bc, $1f
|
||||
; copy other stats from party mon to battle mon
|
||||
ld bc, wPartyMon1Level - (wPartyMon1HP + 1)
|
||||
add hl, bc
|
||||
push hl
|
||||
ld de, wBattleMonLevel ; wBattleMonLevel
|
||||
ld bc, $b
|
||||
ld de, wBattleMonLevel
|
||||
ld bc, $b ; size of stats
|
||||
call CopyData
|
||||
pop hl
|
||||
ld a, [W_PLAYERBATTSTATUS3] ; W_PLAYERBATTSTATUS3
|
||||
bit 3, a
|
||||
jr nz, .asm_553c8
|
||||
ld a, [W_PLAYERBATTSTATUS3]
|
||||
bit 3, a ; is the mon transformed?
|
||||
jr nz, .recalcStatChanges
|
||||
; the mon is transformed, so copy transformed data
|
||||
ld de, wcd0f
|
||||
ld bc, $b
|
||||
call CopyData
|
||||
.asm_553c8
|
||||
.recalcStatChanges
|
||||
xor a
|
||||
ld [wd11e], a
|
||||
callab Func_3ed99
|
||||
callab Func_3ed1a
|
||||
callab Func_3ee19
|
||||
callab Func_3cd60
|
||||
callab Func_3ee94
|
||||
callab CalculateModifiedStats
|
||||
callab ApplyBurnAndParalysisPenaltiesToPlayer
|
||||
callab ApplyBadgeStatBoosts
|
||||
callab DrawPlayerHUDAndHPBar
|
||||
callab PrintEmptyString
|
||||
call SaveScreenTilesToBuffer1
|
||||
.asm_553f7
|
||||
.printGrewLevelText
|
||||
ld hl, GrewLevelText
|
||||
call PrintText
|
||||
xor a
|
||||
xor a ; party mon data
|
||||
ld [wcc49], a
|
||||
call LoadMonData
|
||||
ld d, $1
|
||||
|
|
@ -244,88 +253,90 @@ Func_5525f: ; 5525f (15:525f)
|
|||
ld [wcc49], a
|
||||
ld a, [wd0b5]
|
||||
ld [wd11e], a
|
||||
predef Func_3af5b
|
||||
predef LearnMoveFromLevelUp
|
||||
ld hl, wccd3
|
||||
ld a, [wWhichPokemon] ; wWhichPokemon
|
||||
ld a, [wWhichPokemon]
|
||||
ld c, a
|
||||
ld b, $1
|
||||
predef FlagActionPredef
|
||||
pop hl
|
||||
pop af
|
||||
ld [W_CURENEMYLVL], a ; W_CURENEMYLVL
|
||||
ld [W_CURENEMYLVL], a
|
||||
|
||||
Func_55436: ; 55436 (15:5436)
|
||||
ld a, [wPartyCount] ; wPartyCount
|
||||
.nextMon
|
||||
ld a, [wPartyCount]
|
||||
ld b, a
|
||||
ld a, [wWhichPokemon] ; wWhichPokemon
|
||||
ld a, [wWhichPokemon]
|
||||
inc a
|
||||
cp b
|
||||
jr z, .asm_55450
|
||||
ld [wWhichPokemon], a ; wWhichPokemon
|
||||
ld bc, $2c
|
||||
ld hl, wPartyMon1Species ; wPartyMon1Species (aliases: wPartyMon1)
|
||||
jr z, .done
|
||||
ld [wWhichPokemon], a
|
||||
ld bc, wPartyMon2 - wPartyMon1
|
||||
ld hl, wPartyMon1
|
||||
call AddNTimes
|
||||
jp Func_5525f
|
||||
.asm_55450
|
||||
ld hl, wPartyAliveFlags
|
||||
jp .partyMonLoop
|
||||
.done
|
||||
ld hl, wPartyGainExpFlags
|
||||
xor a
|
||||
ld [hl], a
|
||||
ld a, [wPlayerMonNumber] ; wPlayerMonNumber
|
||||
ld [hl], a ; clear gain exp flags
|
||||
ld a, [wPlayerMonNumber]
|
||||
ld c, a
|
||||
ld b, $1
|
||||
push bc
|
||||
predef FlagActionPredef
|
||||
ld hl, wccf5
|
||||
predef FlagActionPredef ; set the gain exp flag for the mon that is currently out
|
||||
ld hl, wPartyFoughtCurrentEnemyFlags
|
||||
xor a
|
||||
ld [hl], a
|
||||
pop bc
|
||||
predef_jump FlagActionPredef
|
||||
predef_jump FlagActionPredef ; set the fought current enemy flag for the mon that is currently out
|
||||
|
||||
Func_5546c: ; 5546c (15:546c)
|
||||
ld a, [wPartyAliveFlags]
|
||||
; divide enemy base stats, catch rate, and base exp by the number of mons gaining exp
|
||||
DivideExpDataByNumMonsGainingExp: ; 5546c (15:546c)
|
||||
ld a, [wPartyGainExpFlags]
|
||||
ld b, a
|
||||
xor a
|
||||
ld c, $8
|
||||
ld d, $0
|
||||
.asm_55475
|
||||
.countSetBitsLoop ; loop to count set bits in wPartyGainExpFlags
|
||||
xor a
|
||||
srl b
|
||||
adc d
|
||||
ld d, a
|
||||
dec c
|
||||
jr nz, .asm_55475
|
||||
jr nz, .countSetBitsLoop
|
||||
cp $2
|
||||
ret c
|
||||
ld [wd11e], a
|
||||
ld hl, wd002
|
||||
ret c ; return if only one mon is gaining exp
|
||||
ld [wd11e], a ; store number of mons gaining exp
|
||||
ld hl, wEnemyMonBaseStats
|
||||
ld c, $7
|
||||
.asm_55488
|
||||
.divideLoop
|
||||
xor a
|
||||
ld [H_DIVIDEND], a ; $ff95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT)
|
||||
ld [H_DIVIDEND], a
|
||||
ld a, [hl]
|
||||
ld [H_NUMTOPRINT], a ; $ff96 (aliases: H_MULTIPLICAND)
|
||||
ld [H_DIVIDEND + 1], a
|
||||
ld a, [wd11e]
|
||||
ld [H_REMAINDER], a ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN)
|
||||
ld [H_DIVISOR], a
|
||||
ld b, $2
|
||||
call Divide
|
||||
ld a, [$ff98]
|
||||
call Divide ; divide value by number of mons gaining exp
|
||||
ld a, [H_QUOTIENT + 3]
|
||||
ld [hli], a
|
||||
dec c
|
||||
jr nz, .asm_55488
|
||||
jr nz, .divideLoop
|
||||
ret
|
||||
|
||||
Func_5549f: ; 5549f (15:549f)
|
||||
ld a, [$ff97]
|
||||
; multiplies exp by 1.5
|
||||
BoostExp: ; 5549f (15:549f)
|
||||
ld a, [H_QUOTIENT + 2]
|
||||
ld b, a
|
||||
ld a, [$ff98]
|
||||
ld a, [H_QUOTIENT + 3]
|
||||
ld c, a
|
||||
srl b
|
||||
rr c
|
||||
add c
|
||||
ld [$ff98], a
|
||||
ld a, [$ff97]
|
||||
ld [H_QUOTIENT + 3], a
|
||||
ld a, [H_QUOTIENT + 2]
|
||||
adc b
|
||||
ld [$ff97], a
|
||||
ld [H_QUOTIENT + 2], a
|
||||
ret
|
||||
|
||||
GainedText: ; 554b2 (15:54b2)
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ PrintBeginningBattleText: ; 58d99 (16:4d99)
|
|||
ld a, b
|
||||
and a
|
||||
jr z, .noSilphScope
|
||||
callab Func_3eb01
|
||||
callab LoadEnemyMonData
|
||||
jr .notPokemonTower
|
||||
.noSilphScope
|
||||
ld hl, EnemyAppearedText
|
||||
|
|
@ -54,7 +54,7 @@ PrintBeginningBattleText: ; 58d99 (16:4d99)
|
|||
call PrintText
|
||||
ld hl, UnveiledGhostText
|
||||
call PrintText
|
||||
callab Func_3eb01
|
||||
callab LoadEnemyMonData
|
||||
callab Func_708ca
|
||||
ld hl, WildMonAppearedText
|
||||
call PrintText
|
||||
|
|
@ -94,25 +94,25 @@ GhostCantBeIDdText: ; 58e54 (16:4e54)
|
|||
TX_FAR _GhostCantBeIDdText
|
||||
db "@"
|
||||
|
||||
SendOutMon: ; 58e59 (16:4e59)
|
||||
ld hl, wEnemyMonHP ; wEnemyMonHP
|
||||
PrintSendOutMonMessage: ; 58e59 (16:4e59)
|
||||
ld hl, wEnemyMonHP
|
||||
ld a, [hli]
|
||||
or [hl]
|
||||
ld hl, GoText
|
||||
jr z, .printText
|
||||
xor a
|
||||
ld [H_NUMTOPRINT], a ; $ff96 (aliases: H_MULTIPLICAND)
|
||||
ld hl, wEnemyMonHP ; wEnemyMonHP
|
||||
ld [H_MULTIPLICAND], a
|
||||
ld hl, wEnemyMonHP
|
||||
ld a, [hli]
|
||||
ld [wcce3], a
|
||||
ld [$ff97], a
|
||||
ld [H_MULTIPLICAND + 1], a
|
||||
ld a, [hl]
|
||||
ld [wcce4], a
|
||||
ld [$ff98], a
|
||||
ld a, $19
|
||||
ld [H_REMAINDER], a ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN)
|
||||
ld [H_MULTIPLICAND + 2], a
|
||||
ld a, 25
|
||||
ld [H_MULTIPLIER], a
|
||||
call Multiply
|
||||
ld hl, wEnemyMonMaxHP ; wEnemyMonMaxHP
|
||||
ld hl, wEnemyMonMaxHP
|
||||
ld a, [hli]
|
||||
ld b, [hl]
|
||||
srl a
|
||||
|
|
@ -121,19 +121,19 @@ SendOutMon: ; 58e59 (16:4e59)
|
|||
rr b
|
||||
ld a, b
|
||||
ld b, $4
|
||||
ld [H_REMAINDER], a ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN)
|
||||
ld [H_DIVISOR], a ; enemy mon max HP divided by 4
|
||||
call Divide
|
||||
ld a, [$ff98]
|
||||
ld hl, GoText
|
||||
cp $46
|
||||
ld a, [H_QUOTIENT + 3] ; a = (enemy mon current HP * 25) / (enemy max HP / 4); this approximates the current percentage of max HP
|
||||
ld hl, GoText ; 70% or greater
|
||||
cp 70
|
||||
jr nc, .printText
|
||||
ld hl, DoItText
|
||||
cp $28
|
||||
ld hl, DoItText ; 40% - 69%
|
||||
cp 40
|
||||
jr nc, .printText
|
||||
ld hl, GetmText
|
||||
cp $a
|
||||
ld hl, GetmText ; 10% - 39%
|
||||
cp 10
|
||||
jr nc, .printText
|
||||
ld hl, EnemysWeakText
|
||||
ld hl, EnemysWeakText ; 0% - 9%
|
||||
.printText
|
||||
jp PrintText
|
||||
|
||||
|
|
|
|||
|
|
@ -87,9 +87,9 @@ BattleTransition: ; 7096d (1c:496d)
|
|||
ld [H_AUTOBGTRANSFERENABLED], a
|
||||
call Delay3
|
||||
xor a
|
||||
ld [$ffb0], a
|
||||
ld [hVBlankWY], a
|
||||
dec a
|
||||
ld [wcfcb], a
|
||||
ld [wUpdateSpritesEnabled], a
|
||||
call DelayFrame
|
||||
ld hl, wSpriteStateData1 + 2
|
||||
ld a, [H_DOWNARROWBLINKCNT2]
|
||||
|
|
|
|||
|
|
@ -1,76 +1,77 @@
|
|||
Func_137aa: ; 137aa (4:77aa)
|
||||
ld a, [W_ISLINKBATTLE] ; W_ISLINKBATTLE
|
||||
EndOfBattle: ; 137aa (4:77aa)
|
||||
ld a, [W_ISLINKBATTLE]
|
||||
cp $4
|
||||
jr nz, .asm_137eb
|
||||
jr nz, .notLinkBattle
|
||||
; link battle
|
||||
ld a, [wEnemyMonPartyPos]
|
||||
ld hl, wEnemyMon1Status
|
||||
ld bc, wEnemyMon2 - wEnemyMon1
|
||||
call AddNTimes
|
||||
ld a, [wEnemyMonStatus] ; wcfe9
|
||||
ld a, [wEnemyMonStatus]
|
||||
ld [hl], a
|
||||
call ClearScreen
|
||||
callab Func_372d6
|
||||
ld a, [wcf0b]
|
||||
callab DisplayLinkBattleVersusTextBox
|
||||
ld a, [wBattleResult]
|
||||
cp $1
|
||||
ld de, YouWinText
|
||||
jr c, .asm_137de
|
||||
jr c, .placeWinOrLoseString
|
||||
ld de, YouLoseText
|
||||
jr z, .asm_137de
|
||||
jr z, .placeWinOrLoseString
|
||||
ld de, DrawText
|
||||
.asm_137de
|
||||
.placeWinOrLoseString
|
||||
hlCoord 6, 8
|
||||
call PlaceString
|
||||
ld c, $c8
|
||||
call DelayFrames
|
||||
jr .asm_1380a
|
||||
.asm_137eb
|
||||
ld a, [wcf0b]
|
||||
jr .evolution
|
||||
.notLinkBattle
|
||||
ld a, [wBattleResult]
|
||||
and a
|
||||
jr nz, .asm_13813
|
||||
ld hl, wcce5
|
||||
jr nz, .resetVariables
|
||||
ld hl, wTotalPayDayMoney
|
||||
ld a, [hli]
|
||||
or [hl]
|
||||
inc hl
|
||||
or [hl]
|
||||
jr z, .asm_1380a
|
||||
ld de, wPlayerMoney + 2 ; wd349
|
||||
jr z, .evolution ; if pay day money is 0, jump
|
||||
ld de, wPlayerMoney + 2
|
||||
ld c, $3
|
||||
predef AddBCDPredef
|
||||
ld hl, PickUpPayDayMoneyText
|
||||
call PrintText
|
||||
.asm_1380a
|
||||
.evolution
|
||||
xor a
|
||||
ld [wccd4], a
|
||||
predef Func_3ad1c
|
||||
.asm_13813
|
||||
predef EvolutionAfterBattle
|
||||
.resetVariables
|
||||
xor a
|
||||
ld [wd083], a
|
||||
ld [wc02a], a
|
||||
ld [W_ISINBATTLE], a ; W_ISINBATTLE
|
||||
ld [W_BATTLETYPE], a ; wd05a
|
||||
ld [W_MOVEMISSED], a ; W_MOVEMISSED
|
||||
ld [W_CUROPPONENT], a ; wd059
|
||||
ld [W_ISINBATTLE], a
|
||||
ld [W_BATTLETYPE], a
|
||||
ld [W_MOVEMISSED], a
|
||||
ld [W_CUROPPONENT], a
|
||||
ld [wd11f], a
|
||||
ld [wd120], a
|
||||
ld [wd078], a
|
||||
ld [wNumRunAttempts], a
|
||||
ld [wEscapedFromBattle], a
|
||||
ld hl, wcc2b
|
||||
ld [hli], a
|
||||
ld [hli], a
|
||||
ld [hli], a
|
||||
ld [hl], a
|
||||
ld [wListScrollOffset], a ; wcc36
|
||||
ld [wListScrollOffset], a
|
||||
ld hl, wd060
|
||||
ld b, $18
|
||||
.asm_1383e
|
||||
.loop
|
||||
ld [hli], a
|
||||
dec b
|
||||
jr nz, .asm_1383e
|
||||
jr nz, .loop
|
||||
ld hl, wd72c
|
||||
set 0, [hl]
|
||||
call WaitForSoundToFinish
|
||||
call GBPalWhiteOut
|
||||
ld a, $ff
|
||||
ld [wd42f], a
|
||||
ld [wDestinationWarpID], a
|
||||
ret
|
||||
|
||||
YouWinText: ; 13853 (4:7853)
|
||||
|
|
@ -87,13 +88,13 @@ PickUpPayDayMoneyText: ; 1386b (4:786b)
|
|||
db "@"
|
||||
|
||||
Func_13870: ; 13870 (4:7870)
|
||||
ld a, [wcc57]
|
||||
ld a, [wNPCMovementScriptPointerTableNum]
|
||||
and a
|
||||
ret nz
|
||||
ld a, [wd736]
|
||||
and a
|
||||
ret nz
|
||||
callab Func_c49d
|
||||
callab IsPlayerStandingOnDoorTileOrWarpTile
|
||||
jr nc, .asm_13888
|
||||
.asm_13884
|
||||
ld a, $1
|
||||
|
|
@ -307,7 +308,7 @@ HazeEffect_: ; 139da (4:79da)
|
|||
ld hl, wcd12
|
||||
ld de, wBattleMonAttack
|
||||
call Func_13a4a
|
||||
ld hl, wcd26
|
||||
ld hl, wEnemyMonUnmodifiedAttack
|
||||
ld de, wEnemyMonAttack
|
||||
call Func_13a4a
|
||||
ld hl, wEnemyMonStatus
|
||||
|
|
|
|||
|
|
@ -53,8 +53,8 @@ SubstituteEffectHandler: ; 17dad (5:7dad)
|
|||
call Bankswitch ;jump to routine depending on animation setting
|
||||
ld hl, SubstituteText
|
||||
call PrintText
|
||||
ld hl, Func_3cd5a
|
||||
ld b, BANK(Func_3cd5a)
|
||||
ld hl, DrawHUDsAndHPBars
|
||||
ld b, BANK(DrawHUDsAndHPBars)
|
||||
jp Bankswitch
|
||||
.alreadyHasSubstitute
|
||||
ld hl, HasSubstituteText
|
||||
|
|
|
|||
|
|
@ -517,7 +517,7 @@ Func_78e01: ; 78e01 (1e:4e01)
|
|||
ret
|
||||
|
||||
Func_78e23: ; 78e23 (1e:4e23)
|
||||
ld a, [wcf1b]
|
||||
ld a, [wOnSGB]
|
||||
and a
|
||||
ld a, $e4
|
||||
jr z, .asm_78e47
|
||||
|
|
@ -1091,7 +1091,7 @@ CallWithTurnFlipped: ; 79155 (1e:5155)
|
|||
AnimationFlashScreenLong: ; 79165 (1e:5165)
|
||||
ld a,3 ; cycle through the palettes 3 times
|
||||
ld [wd08a],a
|
||||
ld a,[wcf1b] ; running on SGB?
|
||||
ld a,[wOnSGB] ; running on SGB?
|
||||
and a
|
||||
ld hl,FlashScreenLongMonochrome
|
||||
jr z,.loop
|
||||
|
|
@ -1211,7 +1211,7 @@ Func_791f9: ; 791f9 (1e:51f9)
|
|||
ld bc, $4040
|
||||
|
||||
Func_791fc: ; 791fc (1e:51fc)
|
||||
ld a, [wcf1b]
|
||||
ld a, [wOnSGB]
|
||||
and a
|
||||
ld a, b
|
||||
jr z, .asm_79204
|
||||
|
|
@ -1411,50 +1411,50 @@ Func_79329: ; 79329 (1e:5329)
|
|||
ld [hli], a
|
||||
ret
|
||||
|
||||
Func_79337: ; 79337 (1e:5337)
|
||||
AdjustOAMBlockXPos: ; 79337 (1e:5337)
|
||||
ld l, e
|
||||
ld h, d
|
||||
|
||||
Func_79339: ; 79339 (1e:5339)
|
||||
AdjustOAMBlockXPos2: ; 79339 (1e:5339)
|
||||
ld de, $4
|
||||
.asm_7933c
|
||||
.loop
|
||||
ld a, [wd08a]
|
||||
ld b, a
|
||||
ld a, [hl]
|
||||
add b
|
||||
cp $a8
|
||||
jr c, .asm_7934a
|
||||
jr c, .skipPuttingEntryOffScreen
|
||||
dec hl
|
||||
ld a, $a0
|
||||
ld [hli], a
|
||||
.asm_7934a
|
||||
.skipPuttingEntryOffScreen
|
||||
ld [hl], a
|
||||
add hl, de
|
||||
dec c
|
||||
jr nz, .asm_7933c
|
||||
jr nz, .loop
|
||||
ret
|
||||
|
||||
Func_79350: ; 79350 (1e:5350)
|
||||
AdjustOAMBlockYPos: ; 79350 (1e:5350)
|
||||
ld l, e
|
||||
ld h, d
|
||||
|
||||
Func_79352: ; 79352 (1e:5352)
|
||||
AdjustOAMBlockYPos2: ; 79352 (1e:5352)
|
||||
ld de, $4
|
||||
.asm_79355
|
||||
.loop
|
||||
ld a, [wd08a]
|
||||
ld b, a
|
||||
ld a, [hl]
|
||||
add b
|
||||
cp $70
|
||||
jr c, .asm_79363
|
||||
jr c, .skipSettingPreviousEntrysAttribute
|
||||
dec hl
|
||||
ld a, $a0
|
||||
ld a, $a0 ; bug, sets previous OAM entry's attribute
|
||||
ld [hli], a
|
||||
.asm_79363
|
||||
.skipSettingPreviousEntrysAttribute
|
||||
ld [hl], a
|
||||
add hl, de
|
||||
dec c
|
||||
jr nz, .asm_79355
|
||||
jr nz, .loop
|
||||
ret
|
||||
|
||||
AnimationBlinkEnemyMon: ; 79369 (1e:5369)
|
||||
|
|
@ -1962,7 +1962,7 @@ AnimationWavyScreen: ; 79666 (1e:5666)
|
|||
xor a
|
||||
ld [H_AUTOBGTRANSFERENABLED], a
|
||||
ld a, $90
|
||||
ld [$ffb0], a
|
||||
ld [hVBlankWY], a
|
||||
ld d, $80
|
||||
ld e, $8f
|
||||
ld c, $ff
|
||||
|
|
@ -1984,7 +1984,7 @@ AnimationWavyScreen: ; 79666 (1e:5666)
|
|||
dec c
|
||||
jr nz, .asm_7967f
|
||||
xor a
|
||||
ld [$ffb0], a
|
||||
ld [hVBlankWY], a
|
||||
call SaveScreenTilesToBuffer2
|
||||
call ClearScreen
|
||||
ld a, $1
|
||||
|
|
@ -2744,11 +2744,11 @@ AnimationShakeEnemyHUD: ; 79d77 (1e:5d77)
|
|||
ld hl, vBGMap0
|
||||
call Func_79e0d
|
||||
ld a, $90
|
||||
ld [$ffb0], a
|
||||
ld [hVBlankWY], a
|
||||
ld hl, vBGMap0 + $320
|
||||
call Func_79e0d
|
||||
ld a, $38
|
||||
ld [$ffb0], a
|
||||
ld [hVBlankWY], a
|
||||
call Func_792fd
|
||||
ld hl, vBGMap0
|
||||
call Func_79e0d
|
||||
|
|
@ -2759,11 +2759,11 @@ AnimationShakeEnemyHUD: ; 79d77 (1e:5d77)
|
|||
call AnimationShowMonPic
|
||||
call ClearSprites
|
||||
ld a, $90
|
||||
ld [$ffb0], a
|
||||
ld [hVBlankWY], a
|
||||
ld hl, vBGMap1
|
||||
call Func_79e0d
|
||||
xor a
|
||||
ld [$ffb0], a
|
||||
ld [hVBlankWY], a
|
||||
call SaveScreenTilesToBuffer1
|
||||
ld hl, vBGMap0
|
||||
call Func_79e0d
|
||||
|
|
|
|||
|
|
@ -88,10 +88,10 @@ PayDayEffect_ ; 2feb8 (b:7eb8)
|
|||
xor a
|
||||
ld hl, wcd6d
|
||||
ld [hli], a
|
||||
ld a, [$fff3]
|
||||
ld a, [H_WHOSETURN]
|
||||
and a
|
||||
ld a, [wBattleMonLevel]
|
||||
jr z, .asm_2fec8 ; 0x2fec3 $3
|
||||
jr z, .asm_2fec8
|
||||
ld a, [wEnemyMonLevel]
|
||||
.asm_2fec8
|
||||
add a
|
||||
|
|
@ -118,10 +118,10 @@ PayDayEffect_ ; 2feb8 (b:7eb8)
|
|||
ld a, [$ff99]
|
||||
add b
|
||||
ld [hl], a
|
||||
ld de, wcce7
|
||||
ld de, wTotalPayDayMoney + 2
|
||||
ld c, $3
|
||||
predef AddBCDPredef
|
||||
ld hl, CoinsScatteredText ; $7f04
|
||||
ld hl, CoinsScatteredText
|
||||
jp PrintText
|
||||
|
||||
CoinsScatteredText: ; 2ff04 (b:7f04)
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ OneHitKOEffect_: ; 33f57 (c:7f57)
|
|||
ld [hli], a
|
||||
ld [hl], a ; set the damage output to zero
|
||||
dec a
|
||||
ld [wd05e], a
|
||||
ld [wCriticalHitOrOHKO], a
|
||||
ld hl, wBattleMonSpeed + 1
|
||||
ld de, wEnemyMonSpeed + 1
|
||||
ld a, [H_WHOSETURN] ; $fff3
|
||||
|
|
@ -50,7 +50,7 @@ OneHitKOEffect_: ; 33f57 (c:7f57)
|
|||
ld [hli], a
|
||||
ld [hl], a
|
||||
ld a, $2
|
||||
ld [wd05e], a
|
||||
ld [wCriticalHitOrOHKO], a
|
||||
ret
|
||||
.asm_33f8a
|
||||
ld a, $1
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
8639
engine/battle/core.asm.orig
Executable file
8639
engine/battle/core.asm.orig
Executable file
File diff suppressed because it is too large
Load diff
|
|
@ -1,21 +1,23 @@
|
|||
Func_372d6: ; 372d6 (d:72d6)
|
||||
; display "[player] VS [enemy]" text box with pokeballs representing their parties next to the names
|
||||
DisplayLinkBattleVersusTextBox: ; 372d6 (d:72d6)
|
||||
call LoadTextBoxTilePatterns
|
||||
hlCoord 3, 4
|
||||
ld b, $7
|
||||
ld c, $c
|
||||
call TextBoxBorder
|
||||
hlCoord 4, 5
|
||||
ld de, wPlayerName ; wd158
|
||||
ld de, wPlayerName
|
||||
call PlaceString
|
||||
hlCoord 4, 10
|
||||
ld de, W_GRASSRATE ; W_GRASSRATE
|
||||
ld de, W_GRASSRATE ; enemy name
|
||||
call PlaceString
|
||||
; place bold "VS" tiles between the names
|
||||
hlCoord 9, 8
|
||||
ld a, $69
|
||||
ld [hli], a
|
||||
ld [hl], $6a
|
||||
xor a
|
||||
ld [wcfcb], a
|
||||
ld [wUpdateSpritesEnabled], a
|
||||
callab SetupPlayerAndEnemyPokeballs
|
||||
ld c, $96
|
||||
ld c, 150
|
||||
jp DelayFrames
|
||||
|
|
|
|||
|
|
@ -1203,11 +1203,11 @@ Func_3a72a: ; 3a72a (e:672a)
|
|||
|
||||
ld a,d ; how many available monsters are there?
|
||||
cp 2 ; don't bother if only 1 or 2
|
||||
jp nc,Func_3a74b
|
||||
jp nc,SwitchEnemyMon
|
||||
and a
|
||||
ret
|
||||
|
||||
Func_3a74b: ; 3a74b (e:674b)
|
||||
SwitchEnemyMon: ; 3a74b (e:674b)
|
||||
|
||||
; prepare to withdraw the active monster: copy hp, number, and status to roster
|
||||
|
||||
|
|
|
|||
|
|
@ -93,7 +93,7 @@ HealEffect_: ; 3b9ec (e:79ec)
|
|||
.asm_3ba83
|
||||
ld [wListMenuID], a ; wListMenuID
|
||||
predef UpdateHPBar2
|
||||
ld hl, Func_3cd5a ; $4d5a
|
||||
ld hl, DrawHUDsAndHPBars ; $4d5a
|
||||
call BankswitchEtoF
|
||||
ld hl, RegainedHealthText ; $7aac
|
||||
jp PrintText
|
||||
|
|
@ -226,8 +226,8 @@ TransformEffect_: ; 3bab1 (e:7ab1)
|
|||
ld a, [hl]
|
||||
ld [wd11e], a
|
||||
call GetMonName
|
||||
ld hl, wcd26
|
||||
ld de, wcd12
|
||||
ld hl, wEnemyMonUnmodifiedAttack
|
||||
ld de, wPlayerMonUnmodifiedAttack
|
||||
call Func_3bb7d
|
||||
ld hl, wEnemyMonStatMods ; wcd2e
|
||||
ld de, wPlayerMonStatMods ; wcd1a
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
PrintSafariZoneBattleText: ; 4277 (1:4277)
|
||||
ld hl, wcce9
|
||||
ld hl, wSafariBaitFactor
|
||||
ld a, [hl]
|
||||
and a
|
||||
jr z, .asm_4284
|
||||
|
|
@ -19,7 +19,7 @@ PrintSafariZoneBattleText: ; 4277 (1:4277)
|
|||
ld [wd0b5], a
|
||||
call GetMonHeader
|
||||
ld a, [W_MONHCATCHRATE]
|
||||
ld [wd007], a
|
||||
ld [wEnemyMonCatchRate], a
|
||||
pop hl
|
||||
.asm_429f
|
||||
push hl
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue