Basic attack animation functions.

hg-commit-id: d5377e1bb8b5
This commit is contained in:
IIMarckus 2011-04-11 23:13:22 -06:00
parent 489ce74215
commit 3cbe353075
2 changed files with 248 additions and 3 deletions

View file

@ -773,6 +773,11 @@ SUPER_FANG EQU $A2
SLASH EQU $A3
SUBSTITUTE EQU $A4
STRUGGLE EQU $A5
; these do double duty as animation identifiers
SLP_ANIM EQU $BD ; sleeping monster
CONF_ANIM EQU $BF ; confused monster
TOSS_ANIM EQU $C1 ; try to catch a monster
SEND_ANIM EQU $C3 ; send out a monster
; super game boy palettes
PAL_ROUTE EQU $00

View file

@ -6789,7 +6789,15 @@ EnemySendOut: ; 490E
db $22
db $50
INCBIN "baserom.gbc",$3CA83,$40000 - $3CA83
INCBIN "baserom.gbc",$3CA83,$3EF07 - $3CA83
PlayAttackAnimation: ; 6F07
ld [$D07C],a
call Delay3
ld a,8
jp Predef
INCBIN "baserom.gbc",$3EF12,$40000 - $3EF12
SECTION "bank10",DATA,BANK[$10]
INCBIN "baserom.gbc",$40000,$1024
@ -7063,7 +7071,7 @@ PredefPointers: ; 7E79
dbw $1E,$5ABA
dbw $03,$7132
dbw $03,$76A5
dbw $1E,$4D5E
dbw BANK(AttackAnimation),AttackAnimation; 08 play attack animation
dbw $03,$771E
dbw $03,$771E
dbw $03,$781D
@ -7811,7 +7819,239 @@ SECTION "bank1D",DATA,BANK[$1D]
INCBIN "baserom.gbc",$74000,$4000
SECTION "bank1E",DATA,BANK[$1E]
INCBIN "baserom.gbc",$78000,$4000
INCBIN "baserom.gbc",$78000,$F1
PlayAnimation: ; 40F1
xor a
ld [$FF8B],a
ld [$D08B],a
ld a,[$D07C]
dec a
ld l,a
ld h,0
add hl,hl
ld de,$607D
add hl,de
ld a,[hli]
ld h,[hl]
ld l,a
.next7\@
ld a,[hli]
cp a,$FF
jr z,.AnimationOver\@
cp a,$C0 ; is this animation for a monster onscreen?
jr c,.next2\@
ld c,a
ld de,$50DA
.next4\@
ld a,[de]
cp c
jr z,.next3\@
inc de
inc de
inc de
jr .next4\@
.next3\@
ld a,[hli]
cp a,$FF
jr z,.next5\@
ld [$CF07],a
push hl
push de
call $586F
call $23B1
pop de
pop hl
.next5\@
push hl
inc de
ld a,[de]
ld l,a
inc de
ld a,[de]
ld h,a
ld de,.next6\@
push de
jp [hl]
.next2\@
ld c,a
and a,$3F
ld [$D086],a
xor a
sla c
rla
sla c
rla
ld [$D09F],a
ld a,[hli]
ld [$CF07],a
ld a,[hli]
ld c,l
ld b,h
ld l,a
ld h,0
add hl,hl
ld de,$676D
add hl,de
ld a,l
ld [$D094],a
ld a,h
ld [$D095],a
ld l,c
ld h,b
push hl
ld a,[rOBP0]
push af
ld a,[$CC79]
ld [rOBP0],a
call $41D2
call $417C
call $4E53 ; play the actual animation
pop af
ld [rOBP0],a
.next6\@
pop hl
jr .next7\@
.AnimationOver\@ ; 417B
ret
INCBIN "baserom.gbc",$7817C,$78D5E - $7817C
AttackAnimation: ; 4D5E
push hl
push de
push bc
push af
call $3748
call $4E23
ld a,[$D07C]
and a
jr z,.AnimationFinished\@
; if throwing a Poké Ball, skip the regular animation code
cp a,TOSS_ANIM
jr nz,.AttackAnimation\@
ld de,.AnimationFinished\@
push de
jp TossBallAnimation
.AttackAnimation\@
; check if battle animations are disabled in the options
ld a,[$D355]
bit 7,a
jr nz,.AnimationsDisabled\@
call ShareAttackAnimations
call PlayAnimation
jr .next4\@
.AnimationsDisabled\@
ld c,30
call DelayFrames
.next4\@
call $4DBD ; reload pic and flash the pic in and out (to show damage)
.AnimationFinished\@
call $3748
xor a
ld [$D096],a
ld [$D09B],a
ld [$D08B],a
dec a
ld [$CF07],a
pop af
pop bc
pop de
pop hl
ret
ShareAttackAnimations: ; 4DA6
; some moves just reuse animations from status conditions
ld a,[$FFF3]
and a
ret z
ld a,[$D07C]
cp a,AMNESIA
ld b,CONF_ANIM
jr z,.Replace\@
cp a,REST
ld b,SLP_ANIM
ret nz
.Replace\@
ld a,b
ld [$D07C],a
ret
Function4DBD: ; 4DBD
ld a,[$CC5B]
and a
ret z
dec a
add a
ld c,a
ld b,0
ld hl,Pointer4DCF
add hl,bc
ld a,[hli]
ld h,[hl]
ld l,a
jp [hl]
Pointer4DCF: ; 4DCF
dw $4DDB,$4DE3,$4DEB,$4DF0,$4DF6,$4DFE
INCBIN "baserom.gbc",$78DDB,$79E16 - $78DDB
TossBallAnimation: ; 5E16
ld a,[$D057]
cp a,2
jr z,.next4\@
ld a,[$D11E]
ld b,a
and a,$F0
swap a
ld c,a
ld a,b
and a,$F
ld [$CD3D],a
ld hl,.Pointer5E50
ld a,[$CF91]
cp a,4
ld b,$C1
jr z,.next2\@
cp a,3
ld b,$C5
jr z,.next2\@
ld b,$C6
.next2\@
ld a,b
.next3\@
ld [$D07C],a
push bc
push hl
call $40F1
pop hl
ld a,[hli]
pop bc
dec c
jr nz,.next3\@
ret
.Pointer5E50: ; 5E50
db $C3,$C8,$C2,$C3,$A6 ; XXX what is this
.next4\@ ; 5E55
ld a,$C1
ld [$D07C],a
call $40F1
ld a,$95
call $23B1
ld a,$C4
ld [$D07C],a
jp $40F1
INCBIN "baserom.gbc",$79E6A,$7C000 - $79E6A
SECTION "bank1F",DATA,BANK[$1F]
INCBIN "baserom.gbc",$7C000,$4000