mirror of
https://github.com/thornAvery/kep-hack.git
synced 2025-11-14 09:06:41 +13:00
disasm of some battle code
hg-commit-id: a650d8e5b82a
This commit is contained in:
parent
5115993d5a
commit
7b2f040234
143
common.asm
143
common.asm
|
|
@ -21225,7 +21225,7 @@ CooltrainerFAI:
|
||||||
|
|
||||||
BrockAI:
|
BrockAI:
|
||||||
; if his active monster has a status condition, use a full heal
|
; if his active monster has a status condition, use a full heal
|
||||||
ld a,[W_OPPONENTSTATUS]
|
ld a,[W_ENEMYMONSTATUS]
|
||||||
and a
|
and a
|
||||||
ret z
|
ret z
|
||||||
jp AIUseFullHeal
|
jp AIUseFullHeal
|
||||||
|
|
@ -21351,7 +21351,7 @@ AIUseFullRestore: ; 0x3a6a0
|
||||||
ld a,[hl]
|
ld a,[hl]
|
||||||
ld [de],a
|
ld [de],a
|
||||||
ld [$CEEA],a
|
ld [$CEEA],a
|
||||||
ld [W_OPPONENTHP],a
|
ld [W_ENEMYMONCURHP],a
|
||||||
jr Function6718
|
jr Function6718
|
||||||
; 0x3a6ca
|
; 0x3a6ca
|
||||||
|
|
||||||
|
|
@ -21456,13 +21456,13 @@ Function674B: ; 674B
|
||||||
|
|
||||||
; prepare to withdraw the active monster: copy hp, number, and status to roster
|
; prepare to withdraw the active monster: copy hp, number, and status to roster
|
||||||
|
|
||||||
ld a,[W_OPPONENTNUMBER]
|
ld a,[W_ENEMYMONNUMBER]
|
||||||
ld hl,W_ENEMYMON1HP
|
ld hl,W_ENEMYMON1HP
|
||||||
ld bc,$2C
|
ld bc,$2C
|
||||||
call AddNTimes
|
call AddNTimes
|
||||||
ld d,h
|
ld d,h
|
||||||
ld e,l
|
ld e,l
|
||||||
ld hl,W_OPPONENTHP
|
ld hl,W_ENEMYMONCURHP
|
||||||
ld bc,4
|
ld bc,4
|
||||||
call CopyData
|
call CopyData
|
||||||
|
|
||||||
|
|
@ -21495,13 +21495,13 @@ AIUseFullHeal: ; 0x3a786
|
||||||
|
|
||||||
AICureStatus: ; 0x3a791
|
AICureStatus: ; 0x3a791
|
||||||
; cures the status of enemy's active pokemon
|
; cures the status of enemy's active pokemon
|
||||||
ld a,[W_OPPONENTNUMBER]
|
ld a,[W_ENEMYMONNUMBER]
|
||||||
ld hl,$D8A8
|
ld hl,$D8A8
|
||||||
ld bc,$2C
|
ld bc,$2C
|
||||||
call AddNTimes
|
call AddNTimes
|
||||||
xor a
|
xor a
|
||||||
ld [hl],a ; clear status in enemy team roster
|
ld [hl],a ; clear status in enemy team roster
|
||||||
ld [W_OPPONENTSTATUS],a ; clear status of active enemy
|
ld [W_ENEMYMONSTATUS],a ; clear status of active enemy
|
||||||
ld hl,$D069
|
ld hl,$D069
|
||||||
res 0,[hl]
|
res 0,[hl]
|
||||||
ret
|
ret
|
||||||
|
|
@ -24362,7 +24362,7 @@ Function5811: ; 0x3d811 5811
|
||||||
ld a,[H_WHOSETURN]
|
ld a,[H_WHOSETURN]
|
||||||
and a
|
and a
|
||||||
jr nz,.Ghost\@
|
jr nz,.Ghost\@
|
||||||
ld a,[W_CURMONSTATUS] ; player’s turn
|
ld a,[W_PLAYERMONSTATUS] ; player’s turn
|
||||||
and a,SLP | FRZ
|
and a,SLP | FRZ
|
||||||
ret nz
|
ret nz
|
||||||
ld hl,ScaredText
|
ld hl,ScaredText
|
||||||
|
|
@ -24401,13 +24401,13 @@ Function583A: ; 0x3d83a 583A
|
||||||
ret
|
ret
|
||||||
|
|
||||||
Function5854: ; 5854
|
Function5854: ; 5854
|
||||||
ld hl,W_CURMONSTATUS
|
ld hl,W_PLAYERMONSTATUS
|
||||||
ld a,[hl]
|
ld a,[hl]
|
||||||
and a,SLP
|
and a,SLP
|
||||||
jr z,.FrozenCheck\@ ; to 5884
|
jr z,.FrozenCheck\@ ; to 5884
|
||||||
|
|
||||||
dec a
|
dec a
|
||||||
ld [W_CURMONSTATUS],a ; decrement sleep count
|
ld [W_PLAYERMONSTATUS],a ; decrement sleep count
|
||||||
and a
|
and a
|
||||||
jr z,.WakeUp\@ ; to 5874
|
jr z,.WakeUp\@ ; to 5874
|
||||||
|
|
||||||
|
|
@ -24517,7 +24517,7 @@ HyperBeamCheck: ; 58C2
|
||||||
ld hl,$580A
|
ld hl,$580A
|
||||||
jp $5A37
|
jp $5A37
|
||||||
.ParalysisCheck\@
|
.ParalysisCheck\@
|
||||||
ld hl,W_CURMONSTATUS
|
ld hl,W_PLAYERMONSTATUS
|
||||||
bit 6,[hl]
|
bit 6,[hl]
|
||||||
jr z,.next7\@ ; 5975
|
jr z,.next7\@ ; 5975
|
||||||
call $6E9B ; random number?
|
call $6E9B ; random number?
|
||||||
|
|
@ -24844,7 +24844,128 @@ HighCriticalMoves: ; 0x3e08e
|
||||||
db $FF
|
db $FF
|
||||||
; 0x3e093
|
; 0x3e093
|
||||||
|
|
||||||
INCBIN "baserom.gbc",$3e093,$3e2ac - $3e093
|
INCBIN "baserom.gbc",$3e093,$3e0df - $3e093
|
||||||
|
|
||||||
|
ApplyDamageToEnemyPokemon: ; 60DF
|
||||||
|
ld a,[W_PLAYERMOVEEFFECT]
|
||||||
|
cp a,$26 ; OHKO
|
||||||
|
jr z,.applyDamage\@
|
||||||
|
cp a,$28 ; super fang's effect
|
||||||
|
jr z,.superFangEffect\@
|
||||||
|
cp a,$29 ; special damage (fixed or random damage)
|
||||||
|
jr z,.specialDamage\@
|
||||||
|
ld a,[W_PLAYERMOVEPOWER]
|
||||||
|
and a
|
||||||
|
jp z,.done\@
|
||||||
|
jr .applyDamage\@
|
||||||
|
.superFangEffect\@
|
||||||
|
; set the damage to half the target's HP
|
||||||
|
ld hl,W_ENEMYMONCURHP
|
||||||
|
ld de,W_DAMAGE
|
||||||
|
ld a,[hli]
|
||||||
|
srl a
|
||||||
|
ld [de],a
|
||||||
|
inc de
|
||||||
|
ld b,a
|
||||||
|
ld a,[hl]
|
||||||
|
rr a
|
||||||
|
ld [de],a
|
||||||
|
or b
|
||||||
|
jr nz,.applyDamage\@
|
||||||
|
; make sure Super Fang's damage is always at least 1
|
||||||
|
ld a,$01
|
||||||
|
ld [de],a
|
||||||
|
jr .applyDamage\@
|
||||||
|
.specialDamage\@
|
||||||
|
ld hl,W_PLAYERMONLEVEL
|
||||||
|
ld a,[hl]
|
||||||
|
ld b,a
|
||||||
|
ld a,[W_PLAYERMOVENUM]
|
||||||
|
cp a,SEISMIC_TOSS
|
||||||
|
jr z,.storeDamage\@
|
||||||
|
cp a,NIGHT_SHADE
|
||||||
|
jr z,.storeDamage\@
|
||||||
|
ld b,$14 ; Sonic Boom damage
|
||||||
|
cp a,SONICBOOM
|
||||||
|
jr z,.storeDamage\@
|
||||||
|
ld b,$28 ; Dragon Rage damage
|
||||||
|
cp a,DRAGON_RAGE
|
||||||
|
jr z,.storeDamage\@
|
||||||
|
; Psywave
|
||||||
|
ld a,[hl]
|
||||||
|
ld b,a
|
||||||
|
srl a
|
||||||
|
add b
|
||||||
|
ld b,a ; b = level * 1.5
|
||||||
|
; loop until a random number between 1 and b is found
|
||||||
|
.loop\@
|
||||||
|
call $6e9b ; random number
|
||||||
|
and a
|
||||||
|
jr z,.loop\@
|
||||||
|
cp b
|
||||||
|
jr nc,.loop\@
|
||||||
|
ld b,a
|
||||||
|
.storeDamage\@
|
||||||
|
ld hl,W_DAMAGE
|
||||||
|
xor a
|
||||||
|
ld [hli],a
|
||||||
|
ld a,b
|
||||||
|
ld [hl],a
|
||||||
|
.applyDamage\@
|
||||||
|
ld hl,W_DAMAGE
|
||||||
|
ld a,[hli]
|
||||||
|
ld b,a
|
||||||
|
ld a,[hl]
|
||||||
|
or b
|
||||||
|
jr z,.done\@ ; we're done if damage is 0
|
||||||
|
ld a,[W_ENEMYBATTSTATUS2]
|
||||||
|
bit 4,a ; does the enemy have a substitute?
|
||||||
|
jp nz,$625e
|
||||||
|
; subtract the damage from the pokemon's current HP
|
||||||
|
; also, save the current HP at $CEEB
|
||||||
|
ld a,[hld]
|
||||||
|
ld b,a
|
||||||
|
ld a,[W_ENEMYMONCURHP + 1]
|
||||||
|
ld [$ceeb],a
|
||||||
|
sub b
|
||||||
|
ld [W_ENEMYMONCURHP + 1],a
|
||||||
|
ld a,[hl]
|
||||||
|
ld b,a
|
||||||
|
ld a,[W_ENEMYMONCURHP]
|
||||||
|
ld [$ceec],a
|
||||||
|
sbc b
|
||||||
|
ld [W_ENEMYMONCURHP],a
|
||||||
|
jr nc,.animateHpBar\@
|
||||||
|
; if more damage was done than the current HP, zero the HP and set the damage
|
||||||
|
; equal to how HP the pokemon had before fainting
|
||||||
|
ld a,[$ceec]
|
||||||
|
ld [hli],a
|
||||||
|
ld a,[$ceeb]
|
||||||
|
ld [hl],a
|
||||||
|
xor a
|
||||||
|
ld hl,W_ENEMYMONCURHP
|
||||||
|
ld [hli],a
|
||||||
|
ld [hl],a
|
||||||
|
.animateHpBar\@
|
||||||
|
ld hl,W_ENEMYMONMAXHP
|
||||||
|
ld a,[hli]
|
||||||
|
ld [$ceea],a
|
||||||
|
ld a,[hl]
|
||||||
|
ld [$cee9],a
|
||||||
|
ld hl,W_ENEMYMONCURHP
|
||||||
|
ld a,[hli]
|
||||||
|
ld [$ceee],a
|
||||||
|
ld a,[hl]
|
||||||
|
ld [$ceed],a
|
||||||
|
ld hl,$c3ca
|
||||||
|
xor a
|
||||||
|
ld [$cf94],a
|
||||||
|
ld a,$48
|
||||||
|
call Predef ; animate the HP bar shortening
|
||||||
|
.done\@
|
||||||
|
jp $4d5a ; redraw pokemon names and HP bars
|
||||||
|
|
||||||
|
INCBIN "baserom.gbc",$3e1a0,$3e2ac - $3e1a0
|
||||||
|
|
||||||
UnnamedText_3e2ac: ; 0x3e2ac
|
UnnamedText_3e2ac: ; 0x3e2ac
|
||||||
TX_FAR _UnnamedText_3e2ac
|
TX_FAR _UnnamedText_3e2ac
|
||||||
|
|
|
||||||
|
|
@ -114,9 +114,9 @@ W_PLAYERMOVETYPE EQU $CFD5
|
||||||
W_PLAYERMOVEACCURACY EQU $CFD6
|
W_PLAYERMOVEACCURACY EQU $CFD6
|
||||||
W_PLAYERMOVEMAXPP EQU $CFD7
|
W_PLAYERMOVEMAXPP EQU $CFD7
|
||||||
|
|
||||||
W_OPPONENTHP EQU $CFE6 ; active opponent's hp (16 bits)
|
W_ENEMYMONCURHP EQU $CFE6 ; active opponent's hp (16 bits)
|
||||||
W_OPPONENTNUMBER EQU $CFE8 ; active opponent's position in team (0 to 5)
|
W_ENEMYMONNUMBER EQU $CFE8 ; active opponent's position in team (0 to 5)
|
||||||
W_OPPONENTSTATUS EQU $CFE9 ; active opponent's status condition
|
W_ENEMYMONSTATUS EQU $CFE9 ; active opponent's status condition
|
||||||
; bit 0 slp
|
; bit 0 slp
|
||||||
; bit 1 slp
|
; bit 1 slp
|
||||||
; bit 2 slp
|
; bit 2 slp
|
||||||
|
|
@ -125,8 +125,11 @@ W_OPPONENTSTATUS EQU $CFE9 ; active opponent's status condition
|
||||||
; bit 5 frz
|
; bit 5 frz
|
||||||
; bit 6 par
|
; bit 6 par
|
||||||
; unused? (XXX confirm)
|
; unused? (XXX confirm)
|
||||||
|
W_ENEMYMONLEVEL EQU $CFF3
|
||||||
|
W_ENEMYMONMAXHP EQU $CFF4 ; (16 bits)
|
||||||
|
|
||||||
W_CURMONSTATUS EQU $D018 ; the status of the player’s current monster
|
W_PLAYERMONCURHP EQU $D015 ; active opponent's hp (16 bits)
|
||||||
|
W_PLAYERMONSTATUS EQU $D018 ; the status of the player’s current monster
|
||||||
; bit 0 slp
|
; bit 0 slp
|
||||||
; bit 1 slp
|
; bit 1 slp
|
||||||
; bit 2 slp
|
; bit 2 slp
|
||||||
|
|
@ -135,6 +138,8 @@ W_CURMONSTATUS EQU $D018 ; the status of the player’s current monster
|
||||||
; bit 5 frz
|
; bit 5 frz
|
||||||
; bit 6 par
|
; bit 6 par
|
||||||
; unused? (XXX confirm)
|
; unused? (XXX confirm)
|
||||||
|
W_PLAYERMONLEVEL EQU $D022
|
||||||
|
W_PLAYERMONMAXHP EQU $D023 ; (16 bits)
|
||||||
|
|
||||||
W_TRAINERCLASS EQU $D031
|
W_TRAINERCLASS EQU $D031
|
||||||
|
|
||||||
|
|
@ -196,6 +201,8 @@ W_ENEMYDISABLEDMOVE EQU $D072
|
||||||
|
|
||||||
W_NUMHITS EQU $D074 ; number of hits in attacks like Doubleslap, etc.
|
W_NUMHITS EQU $D074 ; number of hits in attacks like Doubleslap, etc.
|
||||||
|
|
||||||
|
W_DAMAGE EQU $D0D7
|
||||||
|
|
||||||
; List type
|
; List type
|
||||||
; used in $D0B6
|
; used in $D0B6
|
||||||
MONSTER_NAME EQU 1
|
MONSTER_NAME EQU 1
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue