mirror of
https://github.com/thornAvery/kep-hack.git
synced 2025-11-11 07:44:47 +13:00
Rename battle files and split move effects Part 4
e.asm, e_2. asm, and 14.asm
This commit is contained in:
parent
77d0e5ff84
commit
2fe782b11a
191
engine/battle/draw_hud_pokeball_gfx.asm
Normal file
191
engine/battle/draw_hud_pokeball_gfx.asm
Normal file
|
|
@ -0,0 +1,191 @@
|
||||||
|
DrawAllPokeballs: ; 3a849 (e:6849)
|
||||||
|
call LoadPartyPokeballGfx
|
||||||
|
call SetupOwnPartyPokeballs
|
||||||
|
ld a, [W_ISINBATTLE] ; W_ISINBATTLE
|
||||||
|
dec a
|
||||||
|
ret z ; return if wild pokémon
|
||||||
|
jp SetupEnemyPartyPokeballs
|
||||||
|
|
||||||
|
DrawEnemyPokeballs: ; 0x3a857
|
||||||
|
call LoadPartyPokeballGfx
|
||||||
|
jp SetupEnemyPartyPokeballs
|
||||||
|
|
||||||
|
LoadPartyPokeballGfx: ; 3a85d (e:685d)
|
||||||
|
ld de, PokeballTileGraphics ; $697e
|
||||||
|
ld hl, vSprites + $310
|
||||||
|
ld bc, (BANK(PokeballTileGraphics) << 8) + $04
|
||||||
|
jp CopyVideoData
|
||||||
|
|
||||||
|
SetupOwnPartyPokeballs: ; 3a869 (e:6869)
|
||||||
|
call PlacePlayerHUDTiles
|
||||||
|
ld hl, wPartyMon1
|
||||||
|
ld de, wPartyCount ; wPartyCount
|
||||||
|
call SetupPokeballs
|
||||||
|
ld a, $60
|
||||||
|
ld hl, W_BASECOORDX ; wd081
|
||||||
|
ld [hli], a
|
||||||
|
ld [hl], a
|
||||||
|
ld a, $8
|
||||||
|
ld [wTrainerEngageDistance], a
|
||||||
|
ld hl, wOAMBuffer
|
||||||
|
jp WritePokeballOAMData
|
||||||
|
|
||||||
|
SetupEnemyPartyPokeballs: ; 3a887 (e:6887)
|
||||||
|
call PlaceEnemyHUDTiles
|
||||||
|
ld hl, wEnemyMons
|
||||||
|
ld de, wEnemyPartyCount ; wEnemyPartyCount
|
||||||
|
call SetupPokeballs
|
||||||
|
ld hl, W_BASECOORDX ; wd081
|
||||||
|
ld a, $48
|
||||||
|
ld [hli], a
|
||||||
|
ld [hl], $20
|
||||||
|
ld a, $f8
|
||||||
|
ld [wTrainerEngageDistance], a
|
||||||
|
ld hl, wOAMBuffer + PARTY_LENGTH * 4
|
||||||
|
jp WritePokeballOAMData
|
||||||
|
|
||||||
|
SetupPokeballs: ; 0x3a8a6
|
||||||
|
ld a, [de]
|
||||||
|
push af
|
||||||
|
ld de, wBuffer
|
||||||
|
ld c, PARTY_LENGTH
|
||||||
|
ld a, $34 ; empty pokeball
|
||||||
|
.emptyloop
|
||||||
|
ld [de], a
|
||||||
|
inc de
|
||||||
|
dec c
|
||||||
|
jr nz, .emptyloop
|
||||||
|
pop af
|
||||||
|
ld de, wBuffer
|
||||||
|
.monloop
|
||||||
|
push af
|
||||||
|
call PickPokeball
|
||||||
|
inc de
|
||||||
|
pop af
|
||||||
|
dec a
|
||||||
|
jr nz, .monloop
|
||||||
|
ret
|
||||||
|
|
||||||
|
PickPokeball: ; 3a8c2 (e:68c2)
|
||||||
|
inc hl
|
||||||
|
ld a, [hli]
|
||||||
|
and a
|
||||||
|
jr nz, .alive
|
||||||
|
ld a, [hl]
|
||||||
|
and a
|
||||||
|
ld b, $33 ; crossed ball (fainted)
|
||||||
|
jr z, .done_fainted
|
||||||
|
.alive
|
||||||
|
inc hl
|
||||||
|
inc hl
|
||||||
|
ld a, [hl] ; status
|
||||||
|
and a
|
||||||
|
ld b, $32 ; black ball (status)
|
||||||
|
jr nz, .done
|
||||||
|
dec b ; regular ball
|
||||||
|
jr .done
|
||||||
|
.done_fainted
|
||||||
|
inc hl
|
||||||
|
inc hl
|
||||||
|
.done
|
||||||
|
ld a, b
|
||||||
|
ld [de], a
|
||||||
|
ld bc, $0028 ; rest of mon struct
|
||||||
|
add hl, bc
|
||||||
|
ret
|
||||||
|
|
||||||
|
WritePokeballOAMData: ; 3a8e1 (e:68e1)
|
||||||
|
ld de, wBuffer
|
||||||
|
ld c, PARTY_LENGTH
|
||||||
|
.loop
|
||||||
|
ld a, [W_BASECOORDY] ; wd082
|
||||||
|
ld [hli], a
|
||||||
|
ld a, [W_BASECOORDX] ; wd081
|
||||||
|
ld [hli], a
|
||||||
|
ld a, [de]
|
||||||
|
ld [hli], a
|
||||||
|
xor a
|
||||||
|
ld [hli], a
|
||||||
|
ld a, [W_BASECOORDX] ; wd081
|
||||||
|
ld b, a
|
||||||
|
ld a, [wTrainerEngageDistance]
|
||||||
|
add b
|
||||||
|
ld [W_BASECOORDX], a ; wd081
|
||||||
|
inc de
|
||||||
|
dec c
|
||||||
|
jr nz, .loop
|
||||||
|
ret
|
||||||
|
|
||||||
|
PlacePlayerHUDTiles: ; 3a902 (e:6902)
|
||||||
|
ld hl, PlayerBattleHUDGraphicsTiles ; $6916
|
||||||
|
ld de, wTrainerFacingDirection
|
||||||
|
ld bc, $3
|
||||||
|
call CopyData
|
||||||
|
hlCoord 18, 10
|
||||||
|
ld de, rIE ; $ffff
|
||||||
|
jr PlaceHUDTiles
|
||||||
|
|
||||||
|
PlayerBattleHUDGraphicsTiles: ; 3a916 (e:6916)
|
||||||
|
; The tile numbers for specific parts of the battle display for the player's pokemon
|
||||||
|
db $73 ; unused ($73 is hardcoded into the routine that uses these bytes)
|
||||||
|
db $77 ; lower-right corner tile of the HUD
|
||||||
|
db $6F ; lower-left triangle tile of the HUD
|
||||||
|
|
||||||
|
PlaceEnemyHUDTiles: ; 3a919 (e:6919)
|
||||||
|
ld hl, EnemyBattleHUDGraphicsTiles ; $692d
|
||||||
|
ld de, wTrainerFacingDirection
|
||||||
|
ld bc, $3
|
||||||
|
call CopyData
|
||||||
|
hlCoord 1, 2
|
||||||
|
ld de, $1
|
||||||
|
jr PlaceHUDTiles
|
||||||
|
|
||||||
|
EnemyBattleHUDGraphicsTiles: ; 3a92d (e:692d)
|
||||||
|
; The tile numbers for specific parts of the battle display for the enemy
|
||||||
|
db $73 ; unused ($73 is hardcoded in the routine that uses these bytes)
|
||||||
|
db $74 ; lower-left corner tile of the HUD
|
||||||
|
db $78 ; lower-right triangle tile of the HUD
|
||||||
|
|
||||||
|
PlaceHUDTiles: ; 3a930 (e:6930)
|
||||||
|
ld [hl], $73
|
||||||
|
ld bc, $14
|
||||||
|
add hl, bc
|
||||||
|
ld a, [wTrainerScreenY]
|
||||||
|
ld [hl], a
|
||||||
|
ld a, $8
|
||||||
|
.asm_3a93c
|
||||||
|
add hl, de
|
||||||
|
ld [hl], $76
|
||||||
|
dec a
|
||||||
|
jr nz, .asm_3a93c
|
||||||
|
add hl, de
|
||||||
|
ld a, [wTrainerScreenX]
|
||||||
|
ld [hl], a
|
||||||
|
ret
|
||||||
|
|
||||||
|
SetupPlayerAndEnemyPokeballs: ; 3a948 (e:6948)
|
||||||
|
call LoadPartyPokeballGfx
|
||||||
|
ld hl, wPartyMon1Species ; wPartyMon1Species (aliases: wPartyMon1)
|
||||||
|
ld de, wPartyCount ; wPartyCount
|
||||||
|
call SetupPokeballs
|
||||||
|
ld hl, W_BASECOORDX ; wd081
|
||||||
|
ld a, $50
|
||||||
|
ld [hli], a
|
||||||
|
ld [hl], $40
|
||||||
|
ld a, $8
|
||||||
|
ld [wTrainerEngageDistance], a
|
||||||
|
ld hl, wOAMBuffer
|
||||||
|
call WritePokeballOAMData
|
||||||
|
ld hl, wEnemyMons ; wEnemyMon1Species
|
||||||
|
ld de, wEnemyPartyCount ; wEnemyPartyCount
|
||||||
|
call SetupPokeballs
|
||||||
|
ld hl, W_BASECOORDX ; wd081
|
||||||
|
ld a, $50
|
||||||
|
ld [hli], a
|
||||||
|
ld [hl], $68
|
||||||
|
ld hl, wOAMBuffer + $18
|
||||||
|
jp WritePokeballOAMData
|
||||||
|
|
||||||
|
; four tiles: pokeball, black pokeball (status ailment), crossed out pokeball (faited) and pokeball slot (no mon)
|
||||||
|
PokeballTileGraphics:: ; 3a97e (e:697e)
|
||||||
|
INCBIN "gfx/pokeball.2bpp"
|
||||||
|
|
@ -1,301 +0,0 @@
|
||||||
HealEffect_: ; 3b9ec (e:79ec)
|
|
||||||
ld a, [H_WHOSETURN]
|
|
||||||
and a
|
|
||||||
ld de, wBattleMonHP
|
|
||||||
ld hl, wBattleMonMaxHP
|
|
||||||
ld a, [W_PLAYERMOVENUM]
|
|
||||||
jr z, .asm_3ba03
|
|
||||||
ld de, wEnemyMonHP
|
|
||||||
ld hl, wEnemyMonMaxHP
|
|
||||||
ld a, [W_ENEMYMOVENUM]
|
|
||||||
.asm_3ba03
|
|
||||||
ld b, a
|
|
||||||
ld a, [de]
|
|
||||||
cp [hl]
|
|
||||||
inc de
|
|
||||||
inc hl
|
|
||||||
ld a, [de]
|
|
||||||
sbc [hl]
|
|
||||||
jp z, .failed
|
|
||||||
ld a, b
|
|
||||||
cp REST
|
|
||||||
jr nz, .asm_3ba37
|
|
||||||
push hl
|
|
||||||
push de
|
|
||||||
push af
|
|
||||||
ld c, 50
|
|
||||||
call DelayFrames
|
|
||||||
ld hl, wBattleMonStatus
|
|
||||||
ld a, [H_WHOSETURN]
|
|
||||||
and a
|
|
||||||
jr z, .asm_3ba25
|
|
||||||
ld hl, wEnemyMonStatus
|
|
||||||
.asm_3ba25
|
|
||||||
ld a, [hl]
|
|
||||||
and a
|
|
||||||
ld [hl], 2 ; Number of turns from Rest
|
|
||||||
ld hl, StartedSleepingEffect
|
|
||||||
jr z, .asm_3ba31
|
|
||||||
ld hl, FellAsleepBecameHealthyText
|
|
||||||
.asm_3ba31
|
|
||||||
call PrintText
|
|
||||||
pop af
|
|
||||||
pop de
|
|
||||||
pop hl
|
|
||||||
.asm_3ba37
|
|
||||||
ld a, [hld]
|
|
||||||
ld [wHPBarMaxHP], a
|
|
||||||
ld c, a
|
|
||||||
ld a, [hl]
|
|
||||||
ld [wHPBarMaxHP+1], a
|
|
||||||
ld b, a
|
|
||||||
jr z, .asm_3ba47
|
|
||||||
srl b
|
|
||||||
rr c
|
|
||||||
.asm_3ba47
|
|
||||||
ld a, [de]
|
|
||||||
ld [wHPBarOldHP], a
|
|
||||||
add c
|
|
||||||
ld [de], a
|
|
||||||
ld [wHPBarNewHP], a
|
|
||||||
dec de
|
|
||||||
ld a, [de]
|
|
||||||
ld [wHPBarOldHP+1], a
|
|
||||||
adc b
|
|
||||||
ld [de], a
|
|
||||||
ld [wHPBarNewHP+1], a
|
|
||||||
inc hl
|
|
||||||
inc de
|
|
||||||
ld a, [de]
|
|
||||||
dec de
|
|
||||||
sub [hl]
|
|
||||||
dec hl
|
|
||||||
ld a, [de]
|
|
||||||
sbc [hl]
|
|
||||||
jr c, .asm_3ba6f
|
|
||||||
ld a, [hli]
|
|
||||||
ld [de], a
|
|
||||||
ld [wHPBarNewHP+1], a
|
|
||||||
inc de
|
|
||||||
ld a, [hl]
|
|
||||||
ld [de], a
|
|
||||||
ld [wHPBarNewHP], a
|
|
||||||
.asm_3ba6f
|
|
||||||
ld hl, PlayCurrentMoveAnimation
|
|
||||||
call BankswitchEtoF
|
|
||||||
ld a, [H_WHOSETURN]
|
|
||||||
and a
|
|
||||||
hlCoord 10, 9
|
|
||||||
ld a, $1
|
|
||||||
jr z, .asm_3ba83
|
|
||||||
hlCoord 2, 2
|
|
||||||
xor a
|
|
||||||
.asm_3ba83
|
|
||||||
ld [wHPBarType], a
|
|
||||||
predef UpdateHPBar2
|
|
||||||
ld hl, DrawHUDsAndHPBars
|
|
||||||
call BankswitchEtoF
|
|
||||||
ld hl, RegainedHealthText
|
|
||||||
jp PrintText
|
|
||||||
.failed
|
|
||||||
ld c, 50
|
|
||||||
call DelayFrames
|
|
||||||
ld hl, PrintButItFailedText_
|
|
||||||
jp BankswitchEtoF
|
|
||||||
|
|
||||||
StartedSleepingEffect: ; 3baa2 (e:7aa2)
|
|
||||||
TX_FAR _StartedSleepingEffect
|
|
||||||
db "@"
|
|
||||||
|
|
||||||
FellAsleepBecameHealthyText: ; 3baa7 (e:7aa7)
|
|
||||||
TX_FAR _FellAsleepBecameHealthyText
|
|
||||||
db "@"
|
|
||||||
|
|
||||||
RegainedHealthText: ; 3baac (e:7aac)
|
|
||||||
TX_FAR _RegainedHealthText
|
|
||||||
db "@"
|
|
||||||
|
|
||||||
TransformEffect_: ; 3bab1 (e:7ab1)
|
|
||||||
ld hl, wBattleMonSpecies
|
|
||||||
ld de, wEnemyMonSpecies
|
|
||||||
ld bc, W_ENEMYBATTSTATUS3
|
|
||||||
ld a, [W_ENEMYBATTSTATUS1]
|
|
||||||
ld a, [H_WHOSETURN]
|
|
||||||
and a
|
|
||||||
jr nz, .asm_3bad1
|
|
||||||
ld hl, wEnemyMonSpecies
|
|
||||||
ld de, wBattleMonSpecies
|
|
||||||
ld bc, W_PLAYERBATTSTATUS3
|
|
||||||
ld [wPlayerMoveListIndex], a
|
|
||||||
ld a, [W_PLAYERBATTSTATUS1]
|
|
||||||
.asm_3bad1
|
|
||||||
bit Invulnerable, a ; is mon invulnerable to typical attacks? (fly/dig)
|
|
||||||
jp nz, .failed
|
|
||||||
push hl
|
|
||||||
push de
|
|
||||||
push bc
|
|
||||||
ld hl, W_PLAYERBATTSTATUS2
|
|
||||||
ld a, [H_WHOSETURN]
|
|
||||||
and a
|
|
||||||
jr z, .asm_3bae4
|
|
||||||
ld hl, W_ENEMYBATTSTATUS2
|
|
||||||
.asm_3bae4
|
|
||||||
bit HasSubstituteUp, [hl]
|
|
||||||
push af
|
|
||||||
ld hl, Func_79747
|
|
||||||
ld b, BANK(Func_79747)
|
|
||||||
call nz, Bankswitch
|
|
||||||
ld a, [W_OPTIONS]
|
|
||||||
add a
|
|
||||||
ld hl, PlayCurrentMoveAnimation
|
|
||||||
ld b, BANK(PlayCurrentMoveAnimation)
|
|
||||||
jr nc, .asm_3baff
|
|
||||||
ld hl, AnimationTransformMon
|
|
||||||
ld b, BANK(AnimationTransformMon)
|
|
||||||
.asm_3baff
|
|
||||||
call Bankswitch
|
|
||||||
ld hl, Func_79771
|
|
||||||
ld b, BANK(Func_79771)
|
|
||||||
pop af
|
|
||||||
call nz, Bankswitch
|
|
||||||
pop bc
|
|
||||||
ld a, [bc]
|
|
||||||
set Transformed, a
|
|
||||||
ld [bc], a
|
|
||||||
pop de
|
|
||||||
pop hl
|
|
||||||
push hl
|
|
||||||
ld a, [hl]
|
|
||||||
ld [de], a
|
|
||||||
ld bc, $5
|
|
||||||
add hl, bc
|
|
||||||
inc de
|
|
||||||
inc de
|
|
||||||
inc de
|
|
||||||
inc de
|
|
||||||
inc de
|
|
||||||
inc bc
|
|
||||||
inc bc
|
|
||||||
call CopyData
|
|
||||||
ld a, [H_WHOSETURN]
|
|
||||||
and a
|
|
||||||
jr z, .asm_3bb32
|
|
||||||
ld a, [de]
|
|
||||||
ld [wcceb], a
|
|
||||||
inc de
|
|
||||||
ld a, [de]
|
|
||||||
ld [wccec], a
|
|
||||||
dec de
|
|
||||||
.asm_3bb32
|
|
||||||
ld a, [hli]
|
|
||||||
ld [de], a
|
|
||||||
inc de
|
|
||||||
ld a, [hli]
|
|
||||||
ld [de], a
|
|
||||||
inc de
|
|
||||||
inc hl
|
|
||||||
inc hl
|
|
||||||
inc hl
|
|
||||||
inc de
|
|
||||||
inc de
|
|
||||||
inc de
|
|
||||||
ld bc, $8
|
|
||||||
call CopyData
|
|
||||||
ld bc, $ffef
|
|
||||||
add hl, bc
|
|
||||||
ld b, $4
|
|
||||||
.asm_3bb4a
|
|
||||||
ld a, [hli]
|
|
||||||
and a
|
|
||||||
jr z, .asm_3bb57
|
|
||||||
ld a, $5
|
|
||||||
ld [de], a
|
|
||||||
inc de
|
|
||||||
dec b
|
|
||||||
jr nz, .asm_3bb4a
|
|
||||||
jr .asm_3bb5d
|
|
||||||
.asm_3bb57
|
|
||||||
xor a
|
|
||||||
ld [de], a
|
|
||||||
inc de
|
|
||||||
dec b
|
|
||||||
jr nz, .asm_3bb57
|
|
||||||
.asm_3bb5d
|
|
||||||
pop hl
|
|
||||||
ld a, [hl]
|
|
||||||
ld [wd11e], a
|
|
||||||
call GetMonName
|
|
||||||
ld hl, wEnemyMonUnmodifiedAttack
|
|
||||||
ld de, wPlayerMonUnmodifiedAttack
|
|
||||||
call .copyBasedOnTurn
|
|
||||||
ld hl, wEnemyMonStatMods
|
|
||||||
ld de, wPlayerMonStatMods
|
|
||||||
call .copyBasedOnTurn
|
|
||||||
ld hl, TransformedText
|
|
||||||
jp PrintText
|
|
||||||
|
|
||||||
.copyBasedOnTurn
|
|
||||||
ld a, [H_WHOSETURN]
|
|
||||||
and a
|
|
||||||
jr z, .asm_3bb86
|
|
||||||
push hl
|
|
||||||
ld h, d
|
|
||||||
ld l, e
|
|
||||||
pop de
|
|
||||||
.asm_3bb86
|
|
||||||
ld bc, $8
|
|
||||||
jp CopyData
|
|
||||||
|
|
||||||
.failed
|
|
||||||
ld hl, PrintButItFailedText_
|
|
||||||
jp BankswitchEtoF
|
|
||||||
|
|
||||||
TransformedText: ; 3bb92 (e:7b92)
|
|
||||||
TX_FAR _TransformedText
|
|
||||||
db "@"
|
|
||||||
|
|
||||||
ReflectLightScreenEffect_: ; 3bb97 (e:7b97)
|
|
||||||
ld hl, W_PLAYERBATTSTATUS3
|
|
||||||
ld de, W_PLAYERMOVEEFFECT
|
|
||||||
ld a, [H_WHOSETURN]
|
|
||||||
and a
|
|
||||||
jr z, .asm_3bba8
|
|
||||||
ld hl, W_ENEMYBATTSTATUS3
|
|
||||||
ld de, W_ENEMYMOVEEFFECT
|
|
||||||
.asm_3bba8
|
|
||||||
ld a, [de]
|
|
||||||
cp LIGHT_SCREEN_EFFECT
|
|
||||||
jr nz, .reflect
|
|
||||||
bit HasLightScreenUp, [hl] ; is mon already protected by light screen?
|
|
||||||
jr nz, .moveFailed
|
|
||||||
set HasLightScreenUp, [hl] ; mon is now protected by light screen
|
|
||||||
ld hl, LightScreenProtectedText
|
|
||||||
jr .asm_3bbc1
|
|
||||||
.reflect
|
|
||||||
bit HasReflectUp, [hl] ; is mon already protected by reflect?
|
|
||||||
jr nz, .moveFailed
|
|
||||||
set HasReflectUp, [hl] ; mon is now protected by reflect
|
|
||||||
ld hl, ReflectGainedArmorText
|
|
||||||
.asm_3bbc1
|
|
||||||
push hl
|
|
||||||
ld hl, PlayCurrentMoveAnimation
|
|
||||||
call BankswitchEtoF
|
|
||||||
pop hl
|
|
||||||
jp PrintText
|
|
||||||
.moveFailed
|
|
||||||
ld c, $32
|
|
||||||
call DelayFrames
|
|
||||||
ld hl, PrintButItFailedText_
|
|
||||||
jp BankswitchEtoF
|
|
||||||
|
|
||||||
LightScreenProtectedText: ; 3bbd7 (e:7bd7)
|
|
||||||
TX_FAR _LightScreenProtectedText
|
|
||||||
db "@"
|
|
||||||
|
|
||||||
ReflectGainedArmorText: ; 3bbdc (e:7bdc)
|
|
||||||
TX_FAR _ReflectGainedArmorText
|
|
||||||
db "@"
|
|
||||||
|
|
||||||
BankswitchEtoF: ; 3bbe1 (e:7be1)
|
|
||||||
ld b, BANK(BattleCore)
|
|
||||||
jp Bankswitch
|
|
||||||
40
engine/battle/init_battle_variables.asm
Normal file
40
engine/battle/init_battle_variables.asm
Normal file
|
|
@ -0,0 +1,40 @@
|
||||||
|
InitBattleVariables: ; 525af (14:65af)
|
||||||
|
ld a, [hTilesetType]
|
||||||
|
ld [wd0d4], a
|
||||||
|
xor a
|
||||||
|
ld [wcd6a], a
|
||||||
|
ld [wBattleResult], a
|
||||||
|
ld hl, wcc2b
|
||||||
|
ld [hli], a
|
||||||
|
ld [hli], a
|
||||||
|
ld [hli], a
|
||||||
|
ld [hl], a
|
||||||
|
ld [wListScrollOffset], a
|
||||||
|
ld [wCriticalHitOrOHKO], a
|
||||||
|
ld [wBattleMonSpecies], a
|
||||||
|
ld [wPartyGainExpFlags], a
|
||||||
|
ld [wPlayerMonNumber], a
|
||||||
|
ld [wEscapedFromBattle], a
|
||||||
|
ld [wMapPalOffset], a
|
||||||
|
ld hl, wcf1d
|
||||||
|
ld [hli], a
|
||||||
|
ld [hl], a
|
||||||
|
ld hl, wccd3
|
||||||
|
ld b, $3c
|
||||||
|
.loop
|
||||||
|
ld [hli], a
|
||||||
|
dec b
|
||||||
|
jr nz, .loop
|
||||||
|
inc a
|
||||||
|
ld [wccd9], a
|
||||||
|
ld a, [W_CURMAP]
|
||||||
|
cp SAFARI_ZONE_EAST
|
||||||
|
jr c, .notSafariBattle
|
||||||
|
cp SAFARI_ZONE_REST_HOUSE_1
|
||||||
|
jr nc, .notSafariBattle
|
||||||
|
ld a, $2 ; safari battle
|
||||||
|
ld [W_BATTLETYPE], a
|
||||||
|
.notSafariBattle
|
||||||
|
ld hl, PlayBattleMusic
|
||||||
|
ld b, BANK(PlayBattleMusic)
|
||||||
|
jp Bankswitch
|
||||||
116
engine/battle/moveEffects/heal_effect.asm
Normal file
116
engine/battle/moveEffects/heal_effect.asm
Normal file
|
|
@ -0,0 +1,116 @@
|
||||||
|
HealEffect_: ; 3b9ec (e:79ec)
|
||||||
|
ld a, [H_WHOSETURN]
|
||||||
|
and a
|
||||||
|
ld de, wBattleMonHP
|
||||||
|
ld hl, wBattleMonMaxHP
|
||||||
|
ld a, [W_PLAYERMOVENUM]
|
||||||
|
jr z, .asm_3ba03
|
||||||
|
ld de, wEnemyMonHP
|
||||||
|
ld hl, wEnemyMonMaxHP
|
||||||
|
ld a, [W_ENEMYMOVENUM]
|
||||||
|
.asm_3ba03
|
||||||
|
ld b, a
|
||||||
|
ld a, [de]
|
||||||
|
cp [hl]
|
||||||
|
inc de
|
||||||
|
inc hl
|
||||||
|
ld a, [de]
|
||||||
|
sbc [hl]
|
||||||
|
jp z, .failed
|
||||||
|
ld a, b
|
||||||
|
cp REST
|
||||||
|
jr nz, .asm_3ba37
|
||||||
|
push hl
|
||||||
|
push de
|
||||||
|
push af
|
||||||
|
ld c, 50
|
||||||
|
call DelayFrames
|
||||||
|
ld hl, wBattleMonStatus
|
||||||
|
ld a, [H_WHOSETURN]
|
||||||
|
and a
|
||||||
|
jr z, .asm_3ba25
|
||||||
|
ld hl, wEnemyMonStatus
|
||||||
|
.asm_3ba25
|
||||||
|
ld a, [hl]
|
||||||
|
and a
|
||||||
|
ld [hl], 2 ; Number of turns from Rest
|
||||||
|
ld hl, StartedSleepingEffect
|
||||||
|
jr z, .asm_3ba31
|
||||||
|
ld hl, FellAsleepBecameHealthyText
|
||||||
|
.asm_3ba31
|
||||||
|
call PrintText
|
||||||
|
pop af
|
||||||
|
pop de
|
||||||
|
pop hl
|
||||||
|
.asm_3ba37
|
||||||
|
ld a, [hld]
|
||||||
|
ld [wHPBarMaxHP], a
|
||||||
|
ld c, a
|
||||||
|
ld a, [hl]
|
||||||
|
ld [wHPBarMaxHP+1], a
|
||||||
|
ld b, a
|
||||||
|
jr z, .asm_3ba47
|
||||||
|
srl b
|
||||||
|
rr c
|
||||||
|
.asm_3ba47
|
||||||
|
ld a, [de]
|
||||||
|
ld [wHPBarOldHP], a
|
||||||
|
add c
|
||||||
|
ld [de], a
|
||||||
|
ld [wHPBarNewHP], a
|
||||||
|
dec de
|
||||||
|
ld a, [de]
|
||||||
|
ld [wHPBarOldHP+1], a
|
||||||
|
adc b
|
||||||
|
ld [de], a
|
||||||
|
ld [wHPBarNewHP+1], a
|
||||||
|
inc hl
|
||||||
|
inc de
|
||||||
|
ld a, [de]
|
||||||
|
dec de
|
||||||
|
sub [hl]
|
||||||
|
dec hl
|
||||||
|
ld a, [de]
|
||||||
|
sbc [hl]
|
||||||
|
jr c, .asm_3ba6f
|
||||||
|
ld a, [hli]
|
||||||
|
ld [de], a
|
||||||
|
ld [wHPBarNewHP+1], a
|
||||||
|
inc de
|
||||||
|
ld a, [hl]
|
||||||
|
ld [de], a
|
||||||
|
ld [wHPBarNewHP], a
|
||||||
|
.asm_3ba6f
|
||||||
|
ld hl, PlayCurrentMoveAnimation
|
||||||
|
call BankswitchEtoF
|
||||||
|
ld a, [H_WHOSETURN]
|
||||||
|
and a
|
||||||
|
hlCoord 10, 9
|
||||||
|
ld a, $1
|
||||||
|
jr z, .asm_3ba83
|
||||||
|
hlCoord 2, 2
|
||||||
|
xor a
|
||||||
|
.asm_3ba83
|
||||||
|
ld [wHPBarType], a
|
||||||
|
predef UpdateHPBar2
|
||||||
|
ld hl, DrawHUDsAndHPBars
|
||||||
|
call BankswitchEtoF
|
||||||
|
ld hl, RegainedHealthText
|
||||||
|
jp PrintText
|
||||||
|
.failed
|
||||||
|
ld c, 50
|
||||||
|
call DelayFrames
|
||||||
|
ld hl, PrintButItFailedText_
|
||||||
|
jp BankswitchEtoF
|
||||||
|
|
||||||
|
StartedSleepingEffect: ; 3baa2 (e:7aa2)
|
||||||
|
TX_FAR _StartedSleepingEffect
|
||||||
|
db "@"
|
||||||
|
|
||||||
|
FellAsleepBecameHealthyText: ; 3baa7 (e:7aa7)
|
||||||
|
TX_FAR _FellAsleepBecameHealthyText
|
||||||
|
db "@"
|
||||||
|
|
||||||
|
RegainedHealthText: ; 3baac (e:7aac)
|
||||||
|
TX_FAR _RegainedHealthText
|
||||||
|
db "@"
|
||||||
41
engine/battle/14.asm → engine/battle/moveEffects/paralyze_effect.asm
Executable file → Normal file
41
engine/battle/14.asm → engine/battle/moveEffects/paralyze_effect.asm
Executable file → Normal file
|
|
@ -1,44 +1,3 @@
|
||||||
InitBattleVariables: ; 525af (14:65af)
|
|
||||||
ld a, [hTilesetType]
|
|
||||||
ld [wd0d4], a
|
|
||||||
xor a
|
|
||||||
ld [wcd6a], a
|
|
||||||
ld [wBattleResult], a
|
|
||||||
ld hl, wcc2b
|
|
||||||
ld [hli], a
|
|
||||||
ld [hli], a
|
|
||||||
ld [hli], a
|
|
||||||
ld [hl], a
|
|
||||||
ld [wListScrollOffset], a
|
|
||||||
ld [wCriticalHitOrOHKO], a
|
|
||||||
ld [wBattleMonSpecies], a
|
|
||||||
ld [wPartyGainExpFlags], a
|
|
||||||
ld [wPlayerMonNumber], a
|
|
||||||
ld [wEscapedFromBattle], a
|
|
||||||
ld [wMapPalOffset], a
|
|
||||||
ld hl, wcf1d
|
|
||||||
ld [hli], a
|
|
||||||
ld [hl], a
|
|
||||||
ld hl, wccd3
|
|
||||||
ld b, $3c
|
|
||||||
.loop
|
|
||||||
ld [hli], a
|
|
||||||
dec b
|
|
||||||
jr nz, .loop
|
|
||||||
inc a
|
|
||||||
ld [wccd9], a
|
|
||||||
ld a, [W_CURMAP]
|
|
||||||
cp SAFARI_ZONE_EAST
|
|
||||||
jr c, .notSafariBattle
|
|
||||||
cp SAFARI_ZONE_REST_HOUSE_1
|
|
||||||
jr nc, .notSafariBattle
|
|
||||||
ld a, $2 ; safari battle
|
|
||||||
ld [W_BATTLETYPE], a
|
|
||||||
.notSafariBattle
|
|
||||||
ld hl, PlayBattleMusic
|
|
||||||
ld b, BANK(PlayBattleMusic)
|
|
||||||
jp Bankswitch
|
|
||||||
|
|
||||||
ParalyzeEffect_: ; 52601 (14:6601)
|
ParalyzeEffect_: ; 52601 (14:6601)
|
||||||
ld hl, wEnemyMonStatus
|
ld hl, wEnemyMonStatus
|
||||||
ld de, W_PLAYERMOVETYPE
|
ld de, W_PLAYERMOVETYPE
|
||||||
45
engine/battle/moveEffects/reflect_light_screen_effect.asm
Normal file
45
engine/battle/moveEffects/reflect_light_screen_effect.asm
Normal file
|
|
@ -0,0 +1,45 @@
|
||||||
|
ReflectLightScreenEffect_: ; 3bb97 (e:7b97)
|
||||||
|
ld hl, W_PLAYERBATTSTATUS3
|
||||||
|
ld de, W_PLAYERMOVEEFFECT
|
||||||
|
ld a, [H_WHOSETURN]
|
||||||
|
and a
|
||||||
|
jr z, .asm_3bba8
|
||||||
|
ld hl, W_ENEMYBATTSTATUS3
|
||||||
|
ld de, W_ENEMYMOVEEFFECT
|
||||||
|
.asm_3bba8
|
||||||
|
ld a, [de]
|
||||||
|
cp LIGHT_SCREEN_EFFECT
|
||||||
|
jr nz, .reflect
|
||||||
|
bit HasLightScreenUp, [hl] ; is mon already protected by light screen?
|
||||||
|
jr nz, .moveFailed
|
||||||
|
set HasLightScreenUp, [hl] ; mon is now protected by light screen
|
||||||
|
ld hl, LightScreenProtectedText
|
||||||
|
jr .asm_3bbc1
|
||||||
|
.reflect
|
||||||
|
bit HasReflectUp, [hl] ; is mon already protected by reflect?
|
||||||
|
jr nz, .moveFailed
|
||||||
|
set HasReflectUp, [hl] ; mon is now protected by reflect
|
||||||
|
ld hl, ReflectGainedArmorText
|
||||||
|
.asm_3bbc1
|
||||||
|
push hl
|
||||||
|
ld hl, PlayCurrentMoveAnimation
|
||||||
|
call BankswitchEtoF
|
||||||
|
pop hl
|
||||||
|
jp PrintText
|
||||||
|
.moveFailed
|
||||||
|
ld c, $32
|
||||||
|
call DelayFrames
|
||||||
|
ld hl, PrintButItFailedText_
|
||||||
|
jp BankswitchEtoF
|
||||||
|
|
||||||
|
LightScreenProtectedText: ; 3bbd7 (e:7bd7)
|
||||||
|
TX_FAR _LightScreenProtectedText
|
||||||
|
db "@"
|
||||||
|
|
||||||
|
ReflectGainedArmorText: ; 3bbdc (e:7bdc)
|
||||||
|
TX_FAR _ReflectGainedArmorText
|
||||||
|
db "@"
|
||||||
|
|
||||||
|
BankswitchEtoF: ; 3bbe1 (e:7be1)
|
||||||
|
ld b, BANK(BattleCore)
|
||||||
|
jp Bankswitch
|
||||||
138
engine/battle/moveEffects/transform_effect.asm
Normal file
138
engine/battle/moveEffects/transform_effect.asm
Normal file
|
|
@ -0,0 +1,138 @@
|
||||||
|
TransformEffect_: ; 3bab1 (e:7ab1)
|
||||||
|
ld hl, wBattleMonSpecies
|
||||||
|
ld de, wEnemyMonSpecies
|
||||||
|
ld bc, W_ENEMYBATTSTATUS3
|
||||||
|
ld a, [W_ENEMYBATTSTATUS1]
|
||||||
|
ld a, [H_WHOSETURN]
|
||||||
|
and a
|
||||||
|
jr nz, .asm_3bad1
|
||||||
|
ld hl, wEnemyMonSpecies
|
||||||
|
ld de, wBattleMonSpecies
|
||||||
|
ld bc, W_PLAYERBATTSTATUS3
|
||||||
|
ld [wPlayerMoveListIndex], a
|
||||||
|
ld a, [W_PLAYERBATTSTATUS1]
|
||||||
|
.asm_3bad1
|
||||||
|
bit Invulnerable, a ; is mon invulnerable to typical attacks? (fly/dig)
|
||||||
|
jp nz, .failed
|
||||||
|
push hl
|
||||||
|
push de
|
||||||
|
push bc
|
||||||
|
ld hl, W_PLAYERBATTSTATUS2
|
||||||
|
ld a, [H_WHOSETURN]
|
||||||
|
and a
|
||||||
|
jr z, .asm_3bae4
|
||||||
|
ld hl, W_ENEMYBATTSTATUS2
|
||||||
|
.asm_3bae4
|
||||||
|
bit HasSubstituteUp, [hl]
|
||||||
|
push af
|
||||||
|
ld hl, Func_79747
|
||||||
|
ld b, BANK(Func_79747)
|
||||||
|
call nz, Bankswitch
|
||||||
|
ld a, [W_OPTIONS]
|
||||||
|
add a
|
||||||
|
ld hl, PlayCurrentMoveAnimation
|
||||||
|
ld b, BANK(PlayCurrentMoveAnimation)
|
||||||
|
jr nc, .asm_3baff
|
||||||
|
ld hl, AnimationTransformMon
|
||||||
|
ld b, BANK(AnimationTransformMon)
|
||||||
|
.asm_3baff
|
||||||
|
call Bankswitch
|
||||||
|
ld hl, Func_79771
|
||||||
|
ld b, BANK(Func_79771)
|
||||||
|
pop af
|
||||||
|
call nz, Bankswitch
|
||||||
|
pop bc
|
||||||
|
ld a, [bc]
|
||||||
|
set Transformed, a
|
||||||
|
ld [bc], a
|
||||||
|
pop de
|
||||||
|
pop hl
|
||||||
|
push hl
|
||||||
|
ld a, [hl]
|
||||||
|
ld [de], a
|
||||||
|
ld bc, $5
|
||||||
|
add hl, bc
|
||||||
|
inc de
|
||||||
|
inc de
|
||||||
|
inc de
|
||||||
|
inc de
|
||||||
|
inc de
|
||||||
|
inc bc
|
||||||
|
inc bc
|
||||||
|
call CopyData
|
||||||
|
ld a, [H_WHOSETURN]
|
||||||
|
and a
|
||||||
|
jr z, .asm_3bb32
|
||||||
|
ld a, [de]
|
||||||
|
ld [wcceb], a
|
||||||
|
inc de
|
||||||
|
ld a, [de]
|
||||||
|
ld [wccec], a
|
||||||
|
dec de
|
||||||
|
.asm_3bb32
|
||||||
|
ld a, [hli]
|
||||||
|
ld [de], a
|
||||||
|
inc de
|
||||||
|
ld a, [hli]
|
||||||
|
ld [de], a
|
||||||
|
inc de
|
||||||
|
inc hl
|
||||||
|
inc hl
|
||||||
|
inc hl
|
||||||
|
inc de
|
||||||
|
inc de
|
||||||
|
inc de
|
||||||
|
ld bc, $8
|
||||||
|
call CopyData
|
||||||
|
ld bc, $ffef
|
||||||
|
add hl, bc
|
||||||
|
ld b, $4
|
||||||
|
.asm_3bb4a
|
||||||
|
ld a, [hli]
|
||||||
|
and a
|
||||||
|
jr z, .asm_3bb57
|
||||||
|
ld a, $5
|
||||||
|
ld [de], a
|
||||||
|
inc de
|
||||||
|
dec b
|
||||||
|
jr nz, .asm_3bb4a
|
||||||
|
jr .asm_3bb5d
|
||||||
|
.asm_3bb57
|
||||||
|
xor a
|
||||||
|
ld [de], a
|
||||||
|
inc de
|
||||||
|
dec b
|
||||||
|
jr nz, .asm_3bb57
|
||||||
|
.asm_3bb5d
|
||||||
|
pop hl
|
||||||
|
ld a, [hl]
|
||||||
|
ld [wd11e], a
|
||||||
|
call GetMonName
|
||||||
|
ld hl, wEnemyMonUnmodifiedAttack
|
||||||
|
ld de, wPlayerMonUnmodifiedAttack
|
||||||
|
call .copyBasedOnTurn
|
||||||
|
ld hl, wEnemyMonStatMods
|
||||||
|
ld de, wPlayerMonStatMods
|
||||||
|
call .copyBasedOnTurn
|
||||||
|
ld hl, TransformedText
|
||||||
|
jp PrintText
|
||||||
|
|
||||||
|
.copyBasedOnTurn
|
||||||
|
ld a, [H_WHOSETURN]
|
||||||
|
and a
|
||||||
|
jr z, .asm_3bb86
|
||||||
|
push hl
|
||||||
|
ld h, d
|
||||||
|
ld l, e
|
||||||
|
pop de
|
||||||
|
.asm_3bb86
|
||||||
|
ld bc, $8
|
||||||
|
jp CopyData
|
||||||
|
|
||||||
|
.failed
|
||||||
|
ld hl, PrintButItFailedText_
|
||||||
|
jp BankswitchEtoF
|
||||||
|
|
||||||
|
TransformedText: ; 3bb92 (e:7b92)
|
||||||
|
TX_FAR _TransformedText
|
||||||
|
db "@"
|
||||||
50
engine/battle/scroll_draw_trainer_pic.asm
Normal file
50
engine/battle/scroll_draw_trainer_pic.asm
Normal file
|
|
@ -0,0 +1,50 @@
|
||||||
|
_ScrollTrainerPicAfterBattle: ; 396d3 (e:56d3)
|
||||||
|
; Load the enemy trainer's pic and scrolls it into
|
||||||
|
; the screen from the right.
|
||||||
|
xor a
|
||||||
|
ld [wEnemyMonSpecies2], a
|
||||||
|
ld b, $1
|
||||||
|
call GoPAL_SET
|
||||||
|
callab _LoadTrainerPic
|
||||||
|
hlCoord 19, 0
|
||||||
|
ld c, $0
|
||||||
|
.scrollLoop
|
||||||
|
inc c
|
||||||
|
ld a, c
|
||||||
|
cp 7
|
||||||
|
ret z
|
||||||
|
ld d, $0
|
||||||
|
push bc
|
||||||
|
push hl
|
||||||
|
.drawTrainerPicLoop
|
||||||
|
call DrawTrainerPicColumn
|
||||||
|
inc hl
|
||||||
|
ld a, 7
|
||||||
|
add d
|
||||||
|
ld d, a
|
||||||
|
dec c
|
||||||
|
jr nz, .drawTrainerPicLoop
|
||||||
|
ld c, 4
|
||||||
|
call DelayFrames
|
||||||
|
pop hl
|
||||||
|
pop bc
|
||||||
|
dec hl
|
||||||
|
jr .scrollLoop
|
||||||
|
|
||||||
|
; write one 7-tile column of the trainer pic to the tilemap
|
||||||
|
DrawTrainerPicColumn: ; 39707 (e:5707)
|
||||||
|
push hl
|
||||||
|
push de
|
||||||
|
push bc
|
||||||
|
ld e, 7
|
||||||
|
.loop
|
||||||
|
ld [hl], d
|
||||||
|
ld bc, SCREEN_WIDTH
|
||||||
|
add hl, bc
|
||||||
|
inc d
|
||||||
|
dec e
|
||||||
|
jr nz, .loop
|
||||||
|
pop bc
|
||||||
|
pop de
|
||||||
|
pop hl
|
||||||
|
ret
|
||||||
306
engine/battle/e.asm → engine/battle/trainer_party_ai_misc.asm
Executable file → Normal file
306
engine/battle/e.asm → engine/battle/trainer_party_ai_misc.asm
Executable file → Normal file
|
|
@ -1,117 +1,3 @@
|
||||||
; does nothing since no stats are ever selected (barring glitches)
|
|
||||||
DoubleSelectedStats: ; 39680 (e:5680)
|
|
||||||
ld a, [H_WHOSETURN]
|
|
||||||
and a
|
|
||||||
ld a, [wPlayerStatsToDouble]
|
|
||||||
ld hl, wBattleMonAttack + 1
|
|
||||||
jr z, .notEnemyTurn
|
|
||||||
ld a, [wEnemyStatsToDouble]
|
|
||||||
ld hl, wEnemyMonAttack + 1
|
|
||||||
.notEnemyTurn
|
|
||||||
ld c, 4
|
|
||||||
ld b, a
|
|
||||||
.loop
|
|
||||||
srl b
|
|
||||||
call c, .doubleStat
|
|
||||||
inc hl
|
|
||||||
inc hl
|
|
||||||
dec c
|
|
||||||
ret z
|
|
||||||
jr .loop
|
|
||||||
|
|
||||||
.doubleStat
|
|
||||||
ld a, [hl]
|
|
||||||
add a
|
|
||||||
ld [hld], a
|
|
||||||
ld a, [hl]
|
|
||||||
rl a
|
|
||||||
ld [hli], a
|
|
||||||
ret
|
|
||||||
|
|
||||||
; does nothing since no stats are ever selected (barring glitches)
|
|
||||||
HalveSelectedStats: ; 396a7 (e:56a7)
|
|
||||||
ld a, [H_WHOSETURN]
|
|
||||||
and a
|
|
||||||
ld a, [wPlayerStatsToHalve]
|
|
||||||
ld hl, wBattleMonAttack
|
|
||||||
jr z, .notEnemyTurn
|
|
||||||
ld a, [wEnemyStatsToHalve]
|
|
||||||
ld hl, wEnemyMonAttack
|
|
||||||
.notEnemyTurn
|
|
||||||
ld c, 4
|
|
||||||
ld b, a
|
|
||||||
.loop
|
|
||||||
srl b
|
|
||||||
call c, .halveStat
|
|
||||||
inc hl
|
|
||||||
inc hl
|
|
||||||
dec c
|
|
||||||
ret z
|
|
||||||
jr .loop
|
|
||||||
|
|
||||||
.halveStat
|
|
||||||
ld a, [hl]
|
|
||||||
srl a
|
|
||||||
ld [hli], a
|
|
||||||
rr [hl]
|
|
||||||
or [hl]
|
|
||||||
jr nz, .nonzeroStat
|
|
||||||
ld [hl], 1
|
|
||||||
.nonzeroStat
|
|
||||||
dec hl
|
|
||||||
ret
|
|
||||||
|
|
||||||
_ScrollTrainerPicAfterBattle: ; 396d3 (e:56d3)
|
|
||||||
; Load the enemy trainer's pic and scrolls it into
|
|
||||||
; the screen from the right.
|
|
||||||
xor a
|
|
||||||
ld [wEnemyMonSpecies2], a
|
|
||||||
ld b, $1
|
|
||||||
call GoPAL_SET
|
|
||||||
callab _LoadTrainerPic
|
|
||||||
hlCoord 19, 0
|
|
||||||
ld c, $0
|
|
||||||
.scrollLoop
|
|
||||||
inc c
|
|
||||||
ld a, c
|
|
||||||
cp 7
|
|
||||||
ret z
|
|
||||||
ld d, $0
|
|
||||||
push bc
|
|
||||||
push hl
|
|
||||||
.drawTrainerPicLoop
|
|
||||||
call DrawTrainerPicColumn
|
|
||||||
inc hl
|
|
||||||
ld a, 7
|
|
||||||
add d
|
|
||||||
ld d, a
|
|
||||||
dec c
|
|
||||||
jr nz, .drawTrainerPicLoop
|
|
||||||
ld c, 4
|
|
||||||
call DelayFrames
|
|
||||||
pop hl
|
|
||||||
pop bc
|
|
||||||
dec hl
|
|
||||||
jr .scrollLoop
|
|
||||||
|
|
||||||
; write one 7-tile column of the trainer pic to the tilemap
|
|
||||||
DrawTrainerPicColumn: ; 39707 (e:5707)
|
|
||||||
push hl
|
|
||||||
push de
|
|
||||||
push bc
|
|
||||||
ld e, 7
|
|
||||||
.loop
|
|
||||||
ld [hl], d
|
|
||||||
ld bc, SCREEN_WIDTH
|
|
||||||
add hl, bc
|
|
||||||
inc d
|
|
||||||
dec e
|
|
||||||
jr nz, .loop
|
|
||||||
pop bc
|
|
||||||
pop de
|
|
||||||
pop hl
|
|
||||||
ret
|
|
||||||
|
|
||||||
; creates a set of moves that may be used and returns its address in hl
|
; creates a set of moves that may be used and returns its address in hl
|
||||||
; unused slots are filled with 0, all used slots may be chosen with equal probability
|
; unused slots are filled with 0, all used slots may be chosen with equal probability
|
||||||
AIEnemyTrainerChooseMoves: ; 39719 (e:5719)
|
AIEnemyTrainerChooseMoves: ; 39719 (e:5719)
|
||||||
|
|
@ -1375,195 +1261,3 @@ AIPrintItemUse_: ; 3a835 (e:6835)
|
||||||
AIBattleUseItemText: ; 3a844 (e:6844)
|
AIBattleUseItemText: ; 3a844 (e:6844)
|
||||||
TX_FAR _AIBattleUseItemText
|
TX_FAR _AIBattleUseItemText
|
||||||
db "@"
|
db "@"
|
||||||
|
|
||||||
DrawAllPokeballs: ; 3a849 (e:6849)
|
|
||||||
call LoadPartyPokeballGfx
|
|
||||||
call SetupOwnPartyPokeballs
|
|
||||||
ld a, [W_ISINBATTLE] ; W_ISINBATTLE
|
|
||||||
dec a
|
|
||||||
ret z ; return if wild pokémon
|
|
||||||
jp SetupEnemyPartyPokeballs
|
|
||||||
|
|
||||||
DrawEnemyPokeballs: ; 0x3a857
|
|
||||||
call LoadPartyPokeballGfx
|
|
||||||
jp SetupEnemyPartyPokeballs
|
|
||||||
|
|
||||||
LoadPartyPokeballGfx: ; 3a85d (e:685d)
|
|
||||||
ld de, PokeballTileGraphics ; $697e
|
|
||||||
ld hl, vSprites + $310
|
|
||||||
ld bc, (BANK(PokeballTileGraphics) << 8) + $04
|
|
||||||
jp CopyVideoData
|
|
||||||
|
|
||||||
SetupOwnPartyPokeballs: ; 3a869 (e:6869)
|
|
||||||
call PlacePlayerHUDTiles
|
|
||||||
ld hl, wPartyMon1
|
|
||||||
ld de, wPartyCount ; wPartyCount
|
|
||||||
call SetupPokeballs
|
|
||||||
ld a, $60
|
|
||||||
ld hl, W_BASECOORDX ; wd081
|
|
||||||
ld [hli], a
|
|
||||||
ld [hl], a
|
|
||||||
ld a, $8
|
|
||||||
ld [wTrainerEngageDistance], a
|
|
||||||
ld hl, wOAMBuffer
|
|
||||||
jp WritePokeballOAMData
|
|
||||||
|
|
||||||
SetupEnemyPartyPokeballs: ; 3a887 (e:6887)
|
|
||||||
call PlaceEnemyHUDTiles
|
|
||||||
ld hl, wEnemyMons
|
|
||||||
ld de, wEnemyPartyCount ; wEnemyPartyCount
|
|
||||||
call SetupPokeballs
|
|
||||||
ld hl, W_BASECOORDX ; wd081
|
|
||||||
ld a, $48
|
|
||||||
ld [hli], a
|
|
||||||
ld [hl], $20
|
|
||||||
ld a, $f8
|
|
||||||
ld [wTrainerEngageDistance], a
|
|
||||||
ld hl, wOAMBuffer + PARTY_LENGTH * 4
|
|
||||||
jp WritePokeballOAMData
|
|
||||||
|
|
||||||
SetupPokeballs: ; 0x3a8a6
|
|
||||||
ld a, [de]
|
|
||||||
push af
|
|
||||||
ld de, wBuffer
|
|
||||||
ld c, PARTY_LENGTH
|
|
||||||
ld a, $34 ; empty pokeball
|
|
||||||
.emptyloop
|
|
||||||
ld [de], a
|
|
||||||
inc de
|
|
||||||
dec c
|
|
||||||
jr nz, .emptyloop
|
|
||||||
pop af
|
|
||||||
ld de, wBuffer
|
|
||||||
.monloop
|
|
||||||
push af
|
|
||||||
call PickPokeball
|
|
||||||
inc de
|
|
||||||
pop af
|
|
||||||
dec a
|
|
||||||
jr nz, .monloop
|
|
||||||
ret
|
|
||||||
|
|
||||||
PickPokeball: ; 3a8c2 (e:68c2)
|
|
||||||
inc hl
|
|
||||||
ld a, [hli]
|
|
||||||
and a
|
|
||||||
jr nz, .alive
|
|
||||||
ld a, [hl]
|
|
||||||
and a
|
|
||||||
ld b, $33 ; crossed ball (fainted)
|
|
||||||
jr z, .done_fainted
|
|
||||||
.alive
|
|
||||||
inc hl
|
|
||||||
inc hl
|
|
||||||
ld a, [hl] ; status
|
|
||||||
and a
|
|
||||||
ld b, $32 ; black ball (status)
|
|
||||||
jr nz, .done
|
|
||||||
dec b ; regular ball
|
|
||||||
jr .done
|
|
||||||
.done_fainted
|
|
||||||
inc hl
|
|
||||||
inc hl
|
|
||||||
.done
|
|
||||||
ld a, b
|
|
||||||
ld [de], a
|
|
||||||
ld bc, $0028 ; rest of mon struct
|
|
||||||
add hl, bc
|
|
||||||
ret
|
|
||||||
|
|
||||||
WritePokeballOAMData: ; 3a8e1 (e:68e1)
|
|
||||||
ld de, wBuffer
|
|
||||||
ld c, PARTY_LENGTH
|
|
||||||
.loop
|
|
||||||
ld a, [W_BASECOORDY] ; wd082
|
|
||||||
ld [hli], a
|
|
||||||
ld a, [W_BASECOORDX] ; wd081
|
|
||||||
ld [hli], a
|
|
||||||
ld a, [de]
|
|
||||||
ld [hli], a
|
|
||||||
xor a
|
|
||||||
ld [hli], a
|
|
||||||
ld a, [W_BASECOORDX] ; wd081
|
|
||||||
ld b, a
|
|
||||||
ld a, [wTrainerEngageDistance]
|
|
||||||
add b
|
|
||||||
ld [W_BASECOORDX], a ; wd081
|
|
||||||
inc de
|
|
||||||
dec c
|
|
||||||
jr nz, .loop
|
|
||||||
ret
|
|
||||||
|
|
||||||
PlacePlayerHUDTiles: ; 3a902 (e:6902)
|
|
||||||
ld hl, PlayerBattleHUDGraphicsTiles ; $6916
|
|
||||||
ld de, wTrainerFacingDirection
|
|
||||||
ld bc, $3
|
|
||||||
call CopyData
|
|
||||||
hlCoord 18, 10
|
|
||||||
ld de, rIE ; $ffff
|
|
||||||
jr PlaceHUDTiles
|
|
||||||
|
|
||||||
PlayerBattleHUDGraphicsTiles: ; 3a916 (e:6916)
|
|
||||||
; The tile numbers for specific parts of the battle display for the player's pokemon
|
|
||||||
db $73 ; unused ($73 is hardcoded into the routine that uses these bytes)
|
|
||||||
db $77 ; lower-right corner tile of the HUD
|
|
||||||
db $6F ; lower-left triangle tile of the HUD
|
|
||||||
|
|
||||||
PlaceEnemyHUDTiles: ; 3a919 (e:6919)
|
|
||||||
ld hl, EnemyBattleHUDGraphicsTiles ; $692d
|
|
||||||
ld de, wTrainerFacingDirection
|
|
||||||
ld bc, $3
|
|
||||||
call CopyData
|
|
||||||
hlCoord 1, 2
|
|
||||||
ld de, $1
|
|
||||||
jr PlaceHUDTiles
|
|
||||||
|
|
||||||
EnemyBattleHUDGraphicsTiles: ; 3a92d (e:692d)
|
|
||||||
; The tile numbers for specific parts of the battle display for the enemy
|
|
||||||
db $73 ; unused ($73 is hardcoded in the routine that uses these bytes)
|
|
||||||
db $74 ; lower-left corner tile of the HUD
|
|
||||||
db $78 ; lower-right triangle tile of the HUD
|
|
||||||
|
|
||||||
PlaceHUDTiles: ; 3a930 (e:6930)
|
|
||||||
ld [hl], $73
|
|
||||||
ld bc, $14
|
|
||||||
add hl, bc
|
|
||||||
ld a, [wTrainerScreenY]
|
|
||||||
ld [hl], a
|
|
||||||
ld a, $8
|
|
||||||
.asm_3a93c
|
|
||||||
add hl, de
|
|
||||||
ld [hl], $76
|
|
||||||
dec a
|
|
||||||
jr nz, .asm_3a93c
|
|
||||||
add hl, de
|
|
||||||
ld a, [wTrainerScreenX]
|
|
||||||
ld [hl], a
|
|
||||||
ret
|
|
||||||
|
|
||||||
SetupPlayerAndEnemyPokeballs: ; 3a948 (e:6948)
|
|
||||||
call LoadPartyPokeballGfx
|
|
||||||
ld hl, wPartyMon1Species ; wPartyMon1Species (aliases: wPartyMon1)
|
|
||||||
ld de, wPartyCount ; wPartyCount
|
|
||||||
call SetupPokeballs
|
|
||||||
ld hl, W_BASECOORDX ; wd081
|
|
||||||
ld a, $50
|
|
||||||
ld [hli], a
|
|
||||||
ld [hl], $40
|
|
||||||
ld a, $8
|
|
||||||
ld [wTrainerEngageDistance], a
|
|
||||||
ld hl, wOAMBuffer
|
|
||||||
call WritePokeballOAMData
|
|
||||||
ld hl, wEnemyMons ; wEnemyMon1Species
|
|
||||||
ld de, wEnemyPartyCount ; wEnemyPartyCount
|
|
||||||
call SetupPokeballs
|
|
||||||
ld hl, W_BASECOORDX ; wd081
|
|
||||||
ld a, $50
|
|
||||||
ld [hli], a
|
|
||||||
ld [hl], $68
|
|
||||||
ld hl, wOAMBuffer + $18
|
|
||||||
jp WritePokeballOAMData
|
|
||||||
|
|
||||||
; four tiles: pokeball, black pokeball (status ailment), crossed out pokeball (faited) and pokeball slot (no mon)
|
|
||||||
PokeballTileGraphics:: ; 3a97e (e:697e)
|
|
||||||
INCBIN "gfx/pokeball.2bpp"
|
|
||||||
62
engine/battle/unused_stats_functions.asm
Normal file
62
engine/battle/unused_stats_functions.asm
Normal file
|
|
@ -0,0 +1,62 @@
|
||||||
|
; does nothing since no stats are ever selected (barring glitches)
|
||||||
|
DoubleSelectedStats: ; 39680 (e:5680)
|
||||||
|
ld a, [H_WHOSETURN]
|
||||||
|
and a
|
||||||
|
ld a, [wPlayerStatsToDouble]
|
||||||
|
ld hl, wBattleMonAttack + 1
|
||||||
|
jr z, .notEnemyTurn
|
||||||
|
ld a, [wEnemyStatsToDouble]
|
||||||
|
ld hl, wEnemyMonAttack + 1
|
||||||
|
.notEnemyTurn
|
||||||
|
ld c, 4
|
||||||
|
ld b, a
|
||||||
|
.loop
|
||||||
|
srl b
|
||||||
|
call c, .doubleStat
|
||||||
|
inc hl
|
||||||
|
inc hl
|
||||||
|
dec c
|
||||||
|
ret z
|
||||||
|
jr .loop
|
||||||
|
|
||||||
|
.doubleStat
|
||||||
|
ld a, [hl]
|
||||||
|
add a
|
||||||
|
ld [hld], a
|
||||||
|
ld a, [hl]
|
||||||
|
rl a
|
||||||
|
ld [hli], a
|
||||||
|
ret
|
||||||
|
|
||||||
|
; does nothing since no stats are ever selected (barring glitches)
|
||||||
|
HalveSelectedStats: ; 396a7 (e:56a7)
|
||||||
|
ld a, [H_WHOSETURN]
|
||||||
|
and a
|
||||||
|
ld a, [wPlayerStatsToHalve]
|
||||||
|
ld hl, wBattleMonAttack
|
||||||
|
jr z, .notEnemyTurn
|
||||||
|
ld a, [wEnemyStatsToHalve]
|
||||||
|
ld hl, wEnemyMonAttack
|
||||||
|
.notEnemyTurn
|
||||||
|
ld c, 4
|
||||||
|
ld b, a
|
||||||
|
.loop
|
||||||
|
srl b
|
||||||
|
call c, .halveStat
|
||||||
|
inc hl
|
||||||
|
inc hl
|
||||||
|
dec c
|
||||||
|
ret z
|
||||||
|
jr .loop
|
||||||
|
|
||||||
|
.halveStat
|
||||||
|
ld a, [hl]
|
||||||
|
srl a
|
||||||
|
ld [hli], a
|
||||||
|
rr [hl]
|
||||||
|
or [hl]
|
||||||
|
jr nz, .nonzeroStat
|
||||||
|
ld [hl], 1
|
||||||
|
.nonzeroStat
|
||||||
|
dec hl
|
||||||
|
ret
|
||||||
12
main.asm
12
main.asm
|
|
@ -5463,7 +5463,10 @@ SECTION "bankE",ROMX,BANK[$E]
|
||||||
INCLUDE "data/moves.asm"
|
INCLUDE "data/moves.asm"
|
||||||
BaseStats: INCLUDE "data/base_stats.asm"
|
BaseStats: INCLUDE "data/base_stats.asm"
|
||||||
INCLUDE "data/cries.asm"
|
INCLUDE "data/cries.asm"
|
||||||
INCLUDE "engine/battle/e.asm"
|
INCLUDE "engine/battle/unused_stats_functions.asm"
|
||||||
|
INCLUDE "engine/battle/scroll_draw_trainer_pic.asm"
|
||||||
|
INCLUDE "engine/battle/trainer_party_ai_misc.asm"
|
||||||
|
INCLUDE "engine/battle/draw_hud_pokeball_gfx.asm"
|
||||||
|
|
||||||
TradingAnimationGraphics:
|
TradingAnimationGraphics:
|
||||||
INCBIN "gfx/game_boy.norepeat.2bpp"
|
INCBIN "gfx/game_boy.norepeat.2bpp"
|
||||||
|
|
@ -5474,7 +5477,9 @@ TradingAnimationGraphics2:
|
||||||
INCBIN "gfx/trade2.2bpp"
|
INCBIN "gfx/trade2.2bpp"
|
||||||
|
|
||||||
INCLUDE "engine/evos_moves.asm"
|
INCLUDE "engine/evos_moves.asm"
|
||||||
INCLUDE "engine/battle/e_2.asm"
|
INCLUDE "engine/battle/moveEffects/heal_effect.asm"
|
||||||
|
INCLUDE "engine/battle/moveEffects/transform_effect.asm"
|
||||||
|
INCLUDE "engine/battle/moveEffects/reflect_light_screen_effect.asm"
|
||||||
|
|
||||||
|
|
||||||
SECTION "bankF",ROMX,BANK[$F]
|
SECTION "bankF",ROMX,BANK[$F]
|
||||||
|
|
@ -5947,7 +5952,8 @@ INCLUDE "scripts/mansion4.asm"
|
||||||
INCLUDE "data/mapObjects/mansion4.asm"
|
INCLUDE "data/mapObjects/mansion4.asm"
|
||||||
Mansion4Blocks: INCBIN "maps/mansion4.blk"
|
Mansion4Blocks: INCBIN "maps/mansion4.blk"
|
||||||
|
|
||||||
INCLUDE "engine/battle/14.asm"
|
INCLUDE "engine/battle/init_battle_variables.asm"
|
||||||
|
INCLUDE "engine/battle/moveEffects/paralyze_effect.asm"
|
||||||
|
|
||||||
INCLUDE "engine/overworld/card_key.asm"
|
INCLUDE "engine/overworld/card_key.asm"
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue