diff --git a/games/tfv/TODO b/games/tfv/TODO index b1de33dd..f14f56cc 100644 --- a/games/tfv/TODO +++ b/games/tfv/TODO @@ -8,8 +8,9 @@ short-term: - if not enough magic points, grey out? somehow the ones we can't cast - adjust color of fight background based on ground color - - enemy can attack + - randomize/generic enemy - get limit timer working properly + - handle dying properly (game over at bottom of screen) + load game support diff --git a/games/tfv/tfv_battle.s b/games/tfv/tfv_battle.s index 3f95d197..8b72e43b 100644 --- a/games/tfv/tfv_battle.s +++ b/games/tfv/tfv_battle.s @@ -20,6 +20,7 @@ do_battle: sta MENU_STATE sta MENU_POSITION sta ENEMY_DEAD + sta ENEMY_ATTACKING ; FIXME: set limit break lda #3 @@ -233,7 +234,7 @@ done_battle_handle_dead: ;======================================== ; delay for framerate - lda #20 + lda #50 jsr WAIT @@ -241,6 +242,9 @@ done_battle_handle_dead: ;======================== ; handle enemy attacks + lda ENEMY_DEAD + bne battle_done_enemy_attack + lda ENEMY_COUNT bne battle_no_enemy_attack battle_start_enemy_attack: @@ -248,22 +252,11 @@ battle_start_enemy_attack: ; attack and decrement HP jsr enemy_attack - ; update limit count - ; max out at 4 - lda HERO_LIMIT - cmp #4 - beq battle_no_inc_limit - - inc HERO_LIMIT -battle_no_inc_limit: - - ; reset enemy time. FIXME: variable? - lda #50 - sta ENEMY_COUNT - battle_no_enemy_attack: - dec ENEMY_COUNT + dec ENEMY_COUNT ; countdown until attack + +battle_done_enemy_attack: ;=============================== ; handle battle counter diff --git a/games/tfv/tfv_battle_draw_hero.s b/games/tfv/tfv_battle_draw_hero.s index 2699700e..4938c7e4 100644 --- a/games/tfv/tfv_battle_draw_hero.s +++ b/games/tfv/tfv_battle_draw_hero.s @@ -37,17 +37,17 @@ draw_hero_victory: ;============================ ; draw hero down ;============================ - ; draws at HERO_X-2,24 + ; draws at HERO_X-2,26 draw_hero_down: - ; grsim_put_sprite(tfv_defeat,ax-2,24); + ; grsim_put_sprite(tfv_defeat,ax-2,26); lda HERO_X sec sbc #2 sta XPOS - lda #24 + lda #26 sta YPOS lda #battle_enemy_attack_string + sta OUTH + jsr move_and_print + jsr normal_text + +done_print_enemy_attack: ;======================= ; print hero name string @@ -105,7 +114,7 @@ draw_battle_menu_none: ; make limit label flash if at limit break lda HERO_LIMIT - cmp #4 + cmp #5 bcc plain_limit jsr flash_text plain_limit: @@ -174,17 +183,9 @@ draw_battle_menu_main: ; wrap location lda HERO_LIMIT - cmp #3 - bcs limit3_wrap ; bge -limit4_wrap: - lda MENU_POSITION cmp #4 - bcc done_menu_wrap - lda #4 - sta MENU_POSITION - bne done_menu_wrap ; bra - -limit3_wrap: + bcs limit4_wrap ; bge +limit5_wrap: lda MENU_POSITION cmp #5 bcc done_menu_wrap @@ -192,6 +193,14 @@ limit3_wrap: sta MENU_POSITION bne done_menu_wrap ; bra +limit4_wrap: + lda MENU_POSITION + cmp #6 + bcc done_menu_wrap + lda #6 + sta MENU_POSITION + bne done_menu_wrap ; bra + done_menu_wrap: lda #=4 cpx #MENU_MAIN_LIMIT @@ -867,7 +876,24 @@ update_hero_hp: sta OUTH lda HERO_HP_HI - beq update_hero_hp_bottom_byte + bne update_hero_hp_top_byte + + lda #' '|$80 + ldy #0 + sta (OUTL),Y + iny + sta (OUTL),Y + lda OUTL + clc + adc #2 + sta OUTL + lda OUTH + adc #0 + sta OUTH + + + jmp update_hero_hp_bottom_byte +update_hero_hp_top_byte: jsr convert_bcd_to_string update_hero_hp_bottom_byte: lda HERO_HP_LO diff --git a/games/tfv/zp.inc b/games/tfv/zp.inc index b596922b..ec7bb336 100644 --- a/games/tfv/zp.inc +++ b/games/tfv/zp.inc @@ -164,6 +164,7 @@ MAGIC_Y = $D2 FINGER_DIRECTION= $D3 ENEMY_DEAD = $D4 MAGIC_COST = $D5 +ENEMY_ATTACKING = $D6 COLOR1 = $E0 COLOR2 = $E1