You've already forked pokecrystal-board
mirror of
https://gitlab.com/xCrystal/pokecrystal-board.git
synced 2025-04-09 05:44:44 -07:00
Use "battle_anims" and "sprite_anims" for clarity, not just "anims"
This commit is contained in:
1514
engine/battle_anims/anim_commands.asm
Normal file
1514
engine/battle_anims/anim_commands.asm
Normal file
File diff suppressed because it is too large
Load Diff
2958
engine/battle_anims/bg_effects.asm
Normal file
2958
engine/battle_anims/bg_effects.asm
Normal file
File diff suppressed because it is too large
Load Diff
314
engine/battle_anims/engine.asm
Executable file
314
engine/battle_anims/engine.asm
Executable file
@@ -0,0 +1,314 @@
|
||||
QueueBattleAnimation: ; cc9a1 (33:49a1)
|
||||
ld hl, ActiveAnimObjects
|
||||
ld e, 10
|
||||
.loop
|
||||
ld a, [hl]
|
||||
and a
|
||||
jr z, .done
|
||||
ld bc, BATTLEANIMSTRUCT_LENGTH
|
||||
add hl, bc
|
||||
dec e
|
||||
jr nz, .loop
|
||||
scf
|
||||
ret
|
||||
|
||||
.done
|
||||
ld c, l
|
||||
ld b, h
|
||||
ld hl, wNumActiveBattleAnims
|
||||
inc [hl]
|
||||
call InitBattleAnimation
|
||||
ret
|
||||
|
||||
DeinitBattleAnimation: ; cc9bd
|
||||
ld hl, BATTLEANIMSTRUCT_INDEX
|
||||
add hl, bc
|
||||
ld [hl], $0
|
||||
ret
|
||||
|
||||
; cc9c4
|
||||
|
||||
InitBattleAnimation: ; cc9c4 (33:49c4)
|
||||
ld a, [wBattleAnimTemp0]
|
||||
ld e, a
|
||||
ld d, 0
|
||||
ld hl, BattleAnimObjects
|
||||
rept 6
|
||||
add hl, de
|
||||
endr
|
||||
ld e, l
|
||||
ld d, h
|
||||
ld hl, BATTLEANIMSTRUCT_INDEX
|
||||
add hl, bc
|
||||
ld a, [wNumActiveBattleAnims]
|
||||
ld [hli], a ; Index
|
||||
ld a, [de]
|
||||
inc de
|
||||
ld [hli], a ; 01
|
||||
ld a, [de]
|
||||
inc de
|
||||
ld [hli], a ; 02
|
||||
ld a, [de]
|
||||
inc de
|
||||
ld [hli], a ; Frameset ID
|
||||
ld a, [de]
|
||||
inc de
|
||||
ld [hli], a ; Function
|
||||
ld a, [de]
|
||||
inc de
|
||||
ld [hli], a ; 05
|
||||
ld a, [de]
|
||||
call GetBattleAnimTileOffset
|
||||
ld [hli], a ; Tile ID
|
||||
ld a, [wBattleAnimTemp1]
|
||||
ld [hli], a ; X Coord
|
||||
ld a, [wBattleAnimTemp2]
|
||||
ld [hli], a ; Y Coord
|
||||
xor a
|
||||
ld [hli], a ; X Offset
|
||||
ld [hli], a ; Y Offset
|
||||
ld a, [wBattleAnimTemp3]
|
||||
ld [hli], a ; 0b
|
||||
xor a
|
||||
ld [hli], a ; 0c
|
||||
dec a
|
||||
ld [hli], a ; 0d
|
||||
xor a
|
||||
ld [hli], a ; 0e
|
||||
ld [hli], a ; 0f
|
||||
ld [hl], a ; 10
|
||||
ret
|
||||
|
||||
BattleAnimOAMUpdate: ; cca09
|
||||
call InitBattleAnimBuffer
|
||||
call GetBattleAnimFrame
|
||||
cp -3
|
||||
jp z, .done
|
||||
cp -4
|
||||
jp z, .delete
|
||||
push af
|
||||
ld hl, wBattleAnimTempOAMFlags
|
||||
ld a, [wBattleAnimTemp7]
|
||||
xor [hl]
|
||||
and $e0
|
||||
ld [hl], a
|
||||
pop af
|
||||
push bc
|
||||
call GetBattleAnimOAMPointer
|
||||
ld a, [wBattleAnimTempTileID]
|
||||
add [hl]
|
||||
ld [wBattleAnimTempTileID], a
|
||||
inc hl
|
||||
ld a, [hli]
|
||||
ld c, a
|
||||
ld a, [hli]
|
||||
ld h, [hl]
|
||||
ld l, a
|
||||
ld a, [wBattleAnimOAMPointerLo]
|
||||
ld e, a
|
||||
ld d, HIGH(Sprites)
|
||||
.loop
|
||||
ld a, [wBattleAnimTempYCoord]
|
||||
ld b, a
|
||||
ld a, [wBattleAnimTempYOffset]
|
||||
add b
|
||||
ld b, a
|
||||
push hl
|
||||
ld a, [hl]
|
||||
ld hl, wBattleAnimTempOAMFlags
|
||||
bit 6, [hl]
|
||||
jr z, .no_yflip
|
||||
add $8
|
||||
xor $ff
|
||||
inc a
|
||||
|
||||
.no_yflip
|
||||
pop hl
|
||||
add b
|
||||
ld [de], a
|
||||
inc hl
|
||||
inc de
|
||||
ld a, [wBattleAnimTempXCoord]
|
||||
ld b, a
|
||||
ld a, [wBattleAnimTempXOffset]
|
||||
add b
|
||||
ld b, a
|
||||
push hl
|
||||
ld a, [hl]
|
||||
ld hl, wBattleAnimTempOAMFlags
|
||||
bit 5, [hl]
|
||||
jr z, .no_xflip
|
||||
add $8
|
||||
xor $ff
|
||||
inc a
|
||||
|
||||
.no_xflip
|
||||
pop hl
|
||||
add b
|
||||
ld [de], a
|
||||
inc hl
|
||||
inc de
|
||||
ld a, [wBattleAnimTempTileID]
|
||||
add $31
|
||||
add [hl]
|
||||
ld [de], a
|
||||
inc hl
|
||||
inc de
|
||||
ld a, [wBattleAnimTempOAMFlags]
|
||||
ld b, a
|
||||
ld a, [hl]
|
||||
xor b
|
||||
and $e0
|
||||
ld b, a
|
||||
ld a, [hl]
|
||||
and $10
|
||||
or b
|
||||
ld b, a
|
||||
ld a, [wBattleAnimTempPalette]
|
||||
and $f
|
||||
or b
|
||||
ld [de], a
|
||||
inc hl
|
||||
inc de
|
||||
ld a, e
|
||||
ld [wBattleAnimOAMPointerLo], a
|
||||
cp $a0
|
||||
jr nc, .exit_set_carry
|
||||
dec c
|
||||
jr nz, .loop
|
||||
pop bc
|
||||
jr .done
|
||||
|
||||
.delete
|
||||
call DeinitBattleAnimation
|
||||
|
||||
.done
|
||||
and a
|
||||
ret
|
||||
|
||||
.exit_set_carry
|
||||
pop bc
|
||||
scf
|
||||
ret
|
||||
|
||||
; ccaaa
|
||||
|
||||
InitBattleAnimBuffer: ; ccaaa
|
||||
ld hl, BATTLEANIMSTRUCT_01
|
||||
add hl, bc
|
||||
ld a, [hl]
|
||||
and %10000000
|
||||
ld [wBattleAnimTempOAMFlags], a
|
||||
xor a
|
||||
ld [wBattleAnimTemp7], a
|
||||
ld hl, BATTLEANIMSTRUCT_PALETTE
|
||||
add hl, bc
|
||||
ld a, [hl]
|
||||
ld [wBattleAnimTempPalette], a
|
||||
ld hl, BATTLEANIMSTRUCT_02
|
||||
add hl, bc
|
||||
ld a, [hl]
|
||||
ld [wBattleAnimTemp1], a
|
||||
ld hl, BATTLEANIMSTRUCT_TILEID
|
||||
add hl, bc
|
||||
ld a, [hli]
|
||||
ld [wBattleAnimTempTileID], a
|
||||
ld a, [hli]
|
||||
ld [wBattleAnimTempXCoord], a
|
||||
ld a, [hli]
|
||||
ld [wBattleAnimTempYCoord], a
|
||||
ld a, [hli]
|
||||
ld [wBattleAnimTempXOffset], a
|
||||
ld a, [hli]
|
||||
ld [wBattleAnimTempYOffset], a
|
||||
ld a, [hBattleTurn]
|
||||
and a
|
||||
ret z
|
||||
ld hl, BATTLEANIMSTRUCT_01
|
||||
add hl, bc
|
||||
ld a, [hl]
|
||||
ld [wBattleAnimTempOAMFlags], a
|
||||
bit 0, [hl]
|
||||
ret z
|
||||
ld hl, BATTLEANIMSTRUCT_XCOORD
|
||||
add hl, bc
|
||||
ld a, [hli]
|
||||
ld d, a
|
||||
ld a, (-10 * 8) + 4
|
||||
sub d
|
||||
ld [wBattleAnimTempXCoord], a
|
||||
ld a, [hli]
|
||||
ld d, a
|
||||
ld a, [wBattleAnimTemp1]
|
||||
cp $ff
|
||||
jr nz, .check_kinesis_softboiled_milkdrink
|
||||
ld a, 5 * 8
|
||||
add d
|
||||
jr .done
|
||||
|
||||
.check_kinesis_softboiled_milkdrink
|
||||
sub d
|
||||
push af
|
||||
ld a, [FXAnimID + 1]
|
||||
or a
|
||||
jr nz, .no_sub
|
||||
ld a, [FXAnimID]
|
||||
cp KINESIS
|
||||
jr z, .kinesis
|
||||
cp SOFTBOILED
|
||||
jr z, .softboiled
|
||||
cp MILK_DRINK
|
||||
jr nz, .no_sub
|
||||
.kinesis
|
||||
.softboiled
|
||||
.milk_drink
|
||||
pop af
|
||||
sub 1 * 8
|
||||
jr .done
|
||||
|
||||
.no_sub
|
||||
pop af
|
||||
.done
|
||||
ld [wBattleAnimTempYCoord], a
|
||||
ld a, [hli]
|
||||
xor $ff
|
||||
inc a
|
||||
ld [wBattleAnimTempXOffset], a
|
||||
ret
|
||||
|
||||
; ccb31
|
||||
|
||||
GetBattleAnimTileOffset: ; ccb31 (33:4b31)
|
||||
push hl
|
||||
push bc
|
||||
ld hl, wBattleAnimTileDict
|
||||
ld b, a
|
||||
ld c, 10 / 2
|
||||
.loop
|
||||
ld a, [hli]
|
||||
cp b
|
||||
jr z, .load
|
||||
inc hl
|
||||
dec c
|
||||
jr nz, .loop
|
||||
xor a
|
||||
jr .done
|
||||
|
||||
.load
|
||||
ld a, [hl]
|
||||
.done
|
||||
pop bc
|
||||
pop hl
|
||||
ret
|
||||
|
||||
_ExecuteBGEffects: ; ccb48
|
||||
callfar ExecuteBGEffects
|
||||
ret
|
||||
|
||||
; ccb4f
|
||||
|
||||
_QueueBGEffect: ; ccb4f (33:4b4f)
|
||||
callfar QueueBGEffect
|
||||
ret
|
||||
|
||||
; ccb56 (33:4b56)
|
4157
engine/battle_anims/functions.asm
Executable file
4157
engine/battle_anims/functions.asm
Executable file
File diff suppressed because it is too large
Load Diff
88
engine/battle_anims/getpokeballwobble.asm
Executable file
88
engine/battle_anims/getpokeballwobble.asm
Executable file
@@ -0,0 +1,88 @@
|
||||
GetPokeBallWobble: ; f971 (3:7971)
|
||||
; Returns whether a Poke Ball will wobble in the catch animation.
|
||||
; Whether a Pokemon is caught is determined beforehand.
|
||||
|
||||
push de
|
||||
|
||||
ld a, [rSVBK]
|
||||
ld d, a
|
||||
push de
|
||||
|
||||
ld a, 1 ; BANK(Buffer2)
|
||||
ld [rSVBK], a
|
||||
|
||||
ld a, [Buffer2]
|
||||
inc a
|
||||
ld [Buffer2], a
|
||||
|
||||
; Wobble up to 3 times.
|
||||
cp 3 + 1
|
||||
jr z, .finished
|
||||
|
||||
ld a, [wWildMon]
|
||||
and a
|
||||
ld c, 0 ; next
|
||||
jr nz, .done
|
||||
|
||||
ld hl, .WobbleProbabilities
|
||||
ld a, [Buffer1]
|
||||
ld b, a
|
||||
.loop
|
||||
ld a, [hli]
|
||||
cp b
|
||||
jr nc, .checkwobble
|
||||
inc hl
|
||||
jr .loop
|
||||
|
||||
.checkwobble
|
||||
ld b, [hl]
|
||||
call Random
|
||||
cp b
|
||||
ld c, 0 ; next
|
||||
jr c, .done
|
||||
ld c, 2 ; escaped
|
||||
jr .done
|
||||
|
||||
.finished
|
||||
ld a, [wWildMon]
|
||||
and a
|
||||
ld c, 1 ; caught
|
||||
jr nz, .done
|
||||
ld c, 2 ; escaped
|
||||
|
||||
.done
|
||||
pop de
|
||||
ld e, a
|
||||
ld a, d
|
||||
ld [rSVBK], a
|
||||
ld a, e
|
||||
pop de
|
||||
ret
|
||||
|
||||
.WobbleProbabilities: ; f9ba
|
||||
; catch rate, chance of wobbling / 255
|
||||
; nLeft/255 = (nRight/255) ** 4
|
||||
db 1, 63
|
||||
db 2, 75
|
||||
db 3, 84
|
||||
db 4, 90
|
||||
db 5, 95
|
||||
db 7, 103
|
||||
db 10, 113
|
||||
db 15, 126
|
||||
db 20, 134
|
||||
db 30, 149
|
||||
db 40, 160
|
||||
db 50, 169
|
||||
db 60, 177
|
||||
db 80, 191
|
||||
db 100, 201
|
||||
db 120, 211
|
||||
db 140, 220
|
||||
db 160, 227
|
||||
db 180, 234
|
||||
db 200, 240
|
||||
db 220, 246
|
||||
db 240, 251
|
||||
db 254, 253
|
||||
db 255, 255
|
130
engine/battle_anims/helpers.asm
Executable file
130
engine/battle_anims/helpers.asm
Executable file
@@ -0,0 +1,130 @@
|
||||
ReinitBattleAnimFrameset: ; ce7bf (33:67bf)
|
||||
ld hl, BATTLEANIMSTRUCT_FRAMESET_ID
|
||||
add hl, bc
|
||||
ld [hl], a
|
||||
ld hl, BATTLEANIMSTRUCT_DURATION
|
||||
add hl, bc
|
||||
ld [hl], 0
|
||||
ld hl, BATTLEANIMSTRUCT_FRAME
|
||||
add hl, bc
|
||||
ld [hl], -1
|
||||
ret
|
||||
|
||||
GetBattleAnimFrame: ; ce7d1
|
||||
.loop
|
||||
ld hl, BATTLEANIMSTRUCT_DURATION
|
||||
add hl, bc
|
||||
ld a, [hl]
|
||||
and a
|
||||
jr z, .next_frame
|
||||
dec [hl]
|
||||
call .GetPointer
|
||||
ld a, [hli]
|
||||
push af
|
||||
jr .okay
|
||||
|
||||
.next_frame
|
||||
ld hl, BATTLEANIMSTRUCT_FRAME
|
||||
add hl, bc
|
||||
inc [hl]
|
||||
call .GetPointer
|
||||
ld a, [hli]
|
||||
cp -2
|
||||
jr z, .restart
|
||||
cp -1
|
||||
jr z, .repeat_last
|
||||
push af
|
||||
ld a, [hl]
|
||||
push hl
|
||||
and $3f
|
||||
ld hl, BATTLEANIMSTRUCT_DURATION
|
||||
add hl, bc
|
||||
ld [hl], a
|
||||
pop hl
|
||||
|
||||
.okay
|
||||
ld a, [hl]
|
||||
and $c0
|
||||
srl a
|
||||
ld [wBattleAnimTemp7], a
|
||||
pop af
|
||||
ret
|
||||
|
||||
.repeat_last
|
||||
xor a
|
||||
ld hl, BATTLEANIMSTRUCT_DURATION
|
||||
add hl, bc
|
||||
ld [hl], a
|
||||
ld hl, BATTLEANIMSTRUCT_FRAME
|
||||
add hl, bc
|
||||
dec [hl]
|
||||
dec [hl]
|
||||
jr .loop
|
||||
|
||||
.restart
|
||||
xor a
|
||||
ld hl, BATTLEANIMSTRUCT_DURATION
|
||||
add hl, bc
|
||||
ld [hl], a
|
||||
dec a
|
||||
ld hl, BATTLEANIMSTRUCT_FRAME
|
||||
add hl, bc
|
||||
ld [hl], a
|
||||
jr .loop
|
||||
|
||||
; ce823
|
||||
|
||||
.GetPointer: ; ce823
|
||||
ld hl, BATTLEANIMSTRUCT_FRAMESET_ID
|
||||
add hl, bc
|
||||
ld e, [hl]
|
||||
ld d, 0
|
||||
ld hl, BattleAnimFrameData
|
||||
add hl, de
|
||||
add hl, de
|
||||
ld e, [hl]
|
||||
inc hl
|
||||
ld d, [hl]
|
||||
ld hl, BATTLEANIMSTRUCT_FRAME
|
||||
add hl, bc
|
||||
ld l, [hl]
|
||||
ld h, $0
|
||||
add hl, hl
|
||||
add hl, de
|
||||
ret
|
||||
|
||||
; ce83c
|
||||
|
||||
GetBattleAnimOAMPointer: ; ce83c
|
||||
ld l, a
|
||||
ld h, 0
|
||||
ld de, BattleAnimOAMData
|
||||
add hl, hl
|
||||
add hl, hl
|
||||
add hl, de
|
||||
ret
|
||||
|
||||
; ce846
|
||||
|
||||
LoadBattleAnimObj: ; ce846 (33:6846)
|
||||
push hl
|
||||
ld l, a
|
||||
ld h, 0
|
||||
add hl, hl
|
||||
add hl, hl
|
||||
ld de, AnimObjGFX
|
||||
add hl, de
|
||||
ld c, [hl]
|
||||
inc hl
|
||||
ld b, [hl]
|
||||
inc hl
|
||||
ld a, [hli]
|
||||
ld h, [hl]
|
||||
ld l, a
|
||||
pop de
|
||||
push bc
|
||||
call DecompressRequest2bpp
|
||||
pop bc
|
||||
ret
|
||||
|
||||
; ce85e (33:685e)
|
Reference in New Issue
Block a user