diff --git a/games/tfv/tfv_battle.s b/games/tfv/tfv_battle.s index 4968160f..60ae031c 100644 --- a/games/tfv/tfv_battle.s +++ b/games/tfv/tfv_battle.s @@ -1315,56 +1315,110 @@ enemy_attack: rts +victory_string: + .byte 13,21,"EXPERIENCE +2",0 + .byte 16,22,"MONEY +1",0 + + ;==================================== ; victory dance ;==================================== victory_dance: -.if 0 + lda #34 + sta HERO_X - int ax=34; - int i; - int saved_drawpage; + ; update XP and money - saved_drawpage=ram[DRAW_PAGE]; + inc HERO_XP + inc HERO_XP - ram[DRAW_PAGE]=PAGE2; ; 0xc00 + inc HERO_MONEY - clear_bottom(); - vtab(21); - htab(10); - move_cursor(); - print("EXPERIENCE +2"); - experience+=2; + ldx #25 + stx ANIMATE_LOOP +victory_dance_loop: - vtab(22); - htab(10); - move_cursor(); - print("MONEY +1"); - money+=1; + jsr gr_copy_to_current - ram[DRAW_PAGE]=saved_drawpage; + jsr clear_bottom - for(i=0;i<25;i++) { + 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) { - grsim_put_sprite(tfv_stand_left,ax,20); - grsim_put_sprite(tfv_led_sword,ax-5,20); - } - else { - grsim_put_sprite(tfv_victory,ax,20); - grsim_put_sprite(tfv_led_sword,ax-2,14); - } +victory_stand: + lda HERO_X + sta XPOS + lda #20 + sta YPOS - page_flip(); + 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 + jmp victory_draw_done + +victory_wave: + + lda HERO_X + sta XPOS + lda #20 + sta YPOS + + 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 + + +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 ;=========================== diff --git a/games/tfv/tfv_sprites.inc b/games/tfv/tfv_sprites.inc index acbb6e6a..b2234bf6 100644 --- a/games/tfv/tfv_sprites.inc +++ b/games/tfv/tfv_sprites.inc @@ -61,6 +61,18 @@ tfv_defeat_sprite: .byte $88,$AA,$AA,$22,$bA,$bA,$dA .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 ;================ diff --git a/games/tfv/zp.inc b/games/tfv/zp.inc index d23d53b0..11afa563 100644 --- a/games/tfv/zp.inc +++ b/games/tfv/zp.inc @@ -88,6 +88,11 @@ HERO_HP = $91 ; hero's hit points HERO_HP_MAX = $92 ; hero's max hit points HERO_MP = $93 ; hero's magic points 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)============== @@ -101,7 +106,7 @@ SOUND_STATUS = $A6 SOUND_IN_LC = $01 ; $01 sound effects in language card SOUND_MOCKINGBOARD = $02 ; mockingboard detected JS_BUTTON_STATE = $A7 - +ANIMATE_LOOP = $A8 HERO_X = $B0 ; used in battle HERO_STATE = $B1 ; used in battle