From ad842faeedcd1d5e363d336a5ae21a6657bd2bb1 Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Tue, 19 Jan 2021 17:04:34 -0500 Subject: [PATCH] tfv: queue commands so you can choose while being attacked --- games/tfv/tfv_battle.s | 68 +++++++++++++++++++++++++++++++++--- games/tfv/tfv_battle_enemy.s | 17 ++++++++- games/tfv/tfv_battle_menu.s | 43 ++++++++++++++--------- games/tfv/zp.inc | 5 +++ 4 files changed, 112 insertions(+), 21 deletions(-) diff --git a/games/tfv/tfv_battle.s b/games/tfv/tfv_battle.s index 97c42297..24b8eff5 100644 --- a/games/tfv/tfv_battle.s +++ b/games/tfv/tfv_battle.s @@ -27,6 +27,7 @@ do_battle: sta MENU_POSITION sta ENEMY_DEAD sta ENEMY_ATTACKING + sta QUEUED_ATTACK ; start battle count part-way in lda #20 @@ -247,8 +248,11 @@ done_battle_handle_dead: jsr get_keypress sta LAST_KEY cmp #'Q' - beq done_battle + bne not_quit + jmp done_battle + +not_quit: ;======================================== ; delay for framerate @@ -331,20 +335,76 @@ battle_enemy_is_dead: inc ENEMY_DEAD lda ENEMY_DEAD cmp #15 - bne end_battle_loop + bne end_check_enemy_dead jsr victory_dance jmp done_battle battle_enemy_is_not_dead_yet: lda ENEMY_HP_HI - bne end_battle_loop + bne end_check_enemy_dead lda ENEMY_HP_LO - bne end_battle_loop + bne end_check_enemy_dead ; make enemy dead inc ENEMY_DEAD +end_check_enemy_dead: + + ;==================== + ; run queued attack + + lda QUEUED_ATTACK + beq end_queued_attack + + cmp #QUEUED_DO_ATTACK + beq queued_attack_action + cmp #QUEUED_DO_MAGIC + beq queued_magic_action + cmp #QUEUED_DO_LIMIT + beq queued_limit_action + cmp #QUEUED_DO_SUMMON + beq queued_summon_action + + + jmp end_queued_attack + +queued_attack_action: + lda #0 + sta MENU_STATE + + ; attack and decrement HP + jsr attack + jsr done_attack + jmp done_queued_attack + +queued_magic_action: + lda #0 + sta MENU_STATE + jsr magic_attack + jsr done_attack + jmp done_queued_attack + +queued_limit_action: + lda #0 + sta MENU_STATE + jsr limit_break + jsr done_attack + jmp done_queued_attack + +queued_summon_action: + lda #0 + sta MENU_STATE + jsr summon + jsr done_attack + jmp done_queued_attack + +done_queued_attack: + lda #0 + sta QUEUED_ATTACK + + +end_queued_attack: end_battle_loop: diff --git a/games/tfv/tfv_battle_enemy.s b/games/tfv/tfv_battle_enemy.s index 799793ab..7ff1295f 100644 --- a/games/tfv/tfv_battle_enemy.s +++ b/games/tfv/tfv_battle_enemy.s @@ -225,9 +225,10 @@ enemy_attack: lda #1 sta ENEMY_ATTACKING + enemy_attack_loop: - ; put attack name on + ; put attack name onh ; occasionally attack with that enemy's power? ; occasionally heal self? @@ -247,11 +248,25 @@ enemy_attack_loop: sta YPOS jsr draw_enemy + ; let you finish menu commands? + + lda MENU_STATE + cmp #MENU_NONE + beq enemy_no_menu + + jsr get_keypress + sta LAST_KEY + jsr battle_menu_keypress + +enemy_no_menu: + ;============ ; draw bottom jsr draw_battle_bottom + + ;============ ; page flip diff --git a/games/tfv/tfv_battle_menu.s b/games/tfv/tfv_battle_menu.s index a31aaf26..bcf06839 100644 --- a/games/tfv/tfv_battle_menu.s +++ b/games/tfv/tfv_battle_menu.s @@ -579,35 +579,46 @@ finger_action: brk finger_attack_action: - lda #0 - sta MENU_STATE +; lda #0 +; sta MENU_STATE ; attack and decrement HP - jsr attack - jsr done_attack +; jsr attack +; jsr done_attack + + lda #QUEUED_DO_ATTACK + sta QUEUED_ATTACK rts finger_magic_action: - lda #0 - sta MENU_STATE - jsr magic_attack - jsr done_attack +; lda #0 +; sta MENU_STATE +; jsr magic_attack +; jsr done_attack + + lda #QUEUED_DO_MAGIC + sta QUEUED_ATTACK rts finger_limit_action: - lda #0 - sta MENU_STATE - jsr limit_break - jsr done_attack +; lda #0 +; sta MENU_STATE +; jsr limit_break +; jsr done_attack + + lda #QUEUED_DO_LIMIT + sta QUEUED_ATTACK rts finger_summon_action: - lda #0 - sta MENU_STATE - jsr summon - jsr done_attack +; lda #0 +; sta MENU_STATE +; jsr summon +; jsr done_attack + lda #QUEUED_DO_SUMMON + sta QUEUED_ATTACK rts battle_menu_nofinger_keypress: diff --git a/games/tfv/zp.inc b/games/tfv/zp.inc index 77112eab..d1e5a7ed 100644 --- a/games/tfv/zp.inc +++ b/games/tfv/zp.inc @@ -213,6 +213,11 @@ NEWX = $D9 NEWY = $DA GROUND_COLOR = $DB +QUEUED_ATTACK = $DC + QUEUED_DO_ATTACK = $01 + QUEUED_DO_MAGIC = $02 + QUEUED_DO_LIMIT = $03 + QUEUED_DO_SUMMON = $04 COLOR1 = $E0 COLOR2 = $E1