tfv: end-of-battle animation

This commit is contained in:
Vince Weaver 2021-01-13 12:45:24 -05:00
parent 5a3db0f576
commit d6cdf30217
3 changed files with 103 additions and 32 deletions

View File

@ -1315,56 +1315,110 @@ enemy_attack:
rts rts
victory_string:
.byte 13,21,"EXPERIENCE +2",0
.byte 16,22,"MONEY +1",0
;==================================== ;====================================
; victory dance ; victory dance
;==================================== ;====================================
victory_dance: victory_dance:
.if 0 lda #34
sta HERO_X
int ax=34; ; update XP and money
int i;
int saved_drawpage;
saved_drawpage=ram[DRAW_PAGE]; inc HERO_XP
inc HERO_XP
ram[DRAW_PAGE]=PAGE2; ; 0xc00 inc HERO_MONEY
clear_bottom();
vtab(21); ldx #25
htab(10); stx ANIMATE_LOOP
move_cursor(); victory_dance_loop:
print("EXPERIENCE +2");
experience+=2;
vtab(22); jsr gr_copy_to_current
htab(10);
move_cursor();
print("MONEY +1");
money+=1;
ram[DRAW_PAGE]=saved_drawpage; jsr clear_bottom
for(i=0;i<25;i++) { lda #<victory_string
sta OUTL
lda #>victory_string
sta OUTH
jsr move_and_print
jsr move_and_print
gr_copy_to_current(0xc00); txa
and #1
beq victory_wave
if (i&1) { victory_stand:
grsim_put_sprite(tfv_stand_left,ax,20); lda HERO_X
grsim_put_sprite(tfv_led_sword,ax-5,20); sta XPOS
} lda #20
else { sta YPOS
grsim_put_sprite(tfv_victory,ax,20);
grsim_put_sprite(tfv_led_sword,ax-2,14);
}
page_flip(); lda #<tfv_stand_left_sprite
sta INL
lda #>tfv_stand_left_sprite
sta INH
jsr put_sprite_crop
usleep(200000); lda HERO_X
sec
sbc #5
sta XPOS
lda #20
sta YPOS
lda #<tfv_led_sword_sprite
sta INL
lda #>tfv_led_sword_sprite
jmp victory_draw_done
victory_wave:
lda HERO_X
sta XPOS
lda #20
sta YPOS
lda #<tfv_victory_sprite
sta INL
lda #>tfv_victory_sprite
sta INH
jsr put_sprite_crop
lda HERO_X
sec
sbc #2
sta XPOS
lda #14
sta YPOS
lda #<tfv_led_sword_sprite
sta INL
lda #>tfv_led_sword_sprite
victory_draw_done:
sta INH
jsr put_sprite_crop
jsr page_flip
; delay
lda #255
jsr WAIT
dec ANIMATE_LOOP
bne victory_dance_loop
.endif
rts rts
;=========================== ;===========================

View File

@ -61,6 +61,18 @@ tfv_defeat_sprite:
.byte $88,$AA,$AA,$22,$bA,$bA,$dA .byte $88,$AA,$AA,$22,$bA,$bA,$dA
.byte $88,$22,$22,$22,$dd,$db,$dd .byte $88,$22,$22,$22,$dd,$db,$dd
tfv_victory_sprite:
.byte $4,$6
.byte $AA,$BD,$2b,$AA
.byte $AB,$DB,$22,$AA
.byte $AA,$AA,$22,$AA
.byte $AA,$AA,$22,$AA
.byte $AA,$2A,$A2,$22
.byte $AA,$82,$AA,$82
;================ ;================
; Bird Sprites ; Bird Sprites
;================ ;================

View File

@ -88,6 +88,11 @@ HERO_HP = $91 ; hero's hit points
HERO_HP_MAX = $92 ; hero's max hit points HERO_HP_MAX = $92 ; hero's max hit points
HERO_MP = $93 ; hero's magic points HERO_MP = $93 ; hero's magic points
HERO_LIMIT = $94 ; hero's limit break count HERO_LIMIT = $94 ; hero's limit break count
HERO_LEVEL = $95 ; hero's level
HERO_XP = $96 ; hero's experience points
HERO_MONEY = $97 ; hero's money
HERO_INVENTORY = $98 ; hero's inventory
;==================GAME STATE (not in save game)============== ;==================GAME STATE (not in save game)==============
@ -101,7 +106,7 @@ SOUND_STATUS = $A6
SOUND_IN_LC = $01 ; $01 sound effects in language card SOUND_IN_LC = $01 ; $01 sound effects in language card
SOUND_MOCKINGBOARD = $02 ; mockingboard detected SOUND_MOCKINGBOARD = $02 ; mockingboard detected
JS_BUTTON_STATE = $A7 JS_BUTTON_STATE = $A7
ANIMATE_LOOP = $A8
HERO_X = $B0 ; used in battle HERO_X = $B0 ; used in battle
HERO_STATE = $B1 ; used in battle HERO_STATE = $B1 ; used in battle