tfv: let you select target of attacks
This commit is contained in:
parent
b249df66fa
commit
09ad61c229
|
@ -1,6 +1,24 @@
|
||||||
|
;===================
|
||||||
|
; Selection Pointers
|
||||||
|
;===================
|
||||||
|
|
||||||
|
finger_left_sprite:
|
||||||
|
.byte 6,4
|
||||||
|
.byte $AA,$AA,$AA,$AB,$BA,$AA
|
||||||
|
.byte $BB,$BB,$BB,$BB,$BB,$BB
|
||||||
|
.byte $AA,$AA,$BB,$BB,$BB,$BB
|
||||||
|
.byte $AA,$AA,$AB,$BB,$BB,$AB
|
||||||
|
|
||||||
|
finger_right_sprite:
|
||||||
|
.byte 6,4
|
||||||
|
.byte $AA,$BA,$AB,$AA,$AA,$AA
|
||||||
|
.byte $BB,$BB,$BB,$BB,$BB,$BB
|
||||||
|
.byte $BB,$BB,$BB,$BB,$AA,$AA
|
||||||
|
.byte $AB,$BB,$BB,$AB,$AA,$AA
|
||||||
|
|
||||||
;=========
|
;=========
|
||||||
; Enemies
|
; Enemies
|
||||||
;==========
|
;=========
|
||||||
|
|
||||||
killer_crab_sprite:
|
killer_crab_sprite:
|
||||||
.byte $9,$6
|
.byte $9,$6
|
||||||
|
|
|
@ -12,7 +12,7 @@ magic_attack:
|
||||||
lda #$15
|
lda #$15
|
||||||
sta DAMAGE_VAL
|
sta DAMAGE_VAL
|
||||||
|
|
||||||
lda MENU_POSITION
|
lda MAGIC_TYPE
|
||||||
cmp #MENU_MAGIC_HEAL
|
cmp #MENU_MAGIC_HEAL
|
||||||
beq do_magic_heal
|
beq do_magic_heal
|
||||||
cmp #MENU_MAGIC_FIRE
|
cmp #MENU_MAGIC_FIRE
|
||||||
|
@ -75,9 +75,6 @@ done_magic_setup:
|
||||||
|
|
||||||
cast_the_magic:
|
cast_the_magic:
|
||||||
|
|
||||||
lda MENU_POSITION
|
|
||||||
sta MAGIC_TYPE
|
|
||||||
|
|
||||||
lda #10
|
lda #10
|
||||||
sta ANIMATE_LOOP
|
sta ANIMATE_LOOP
|
||||||
|
|
||||||
|
|
|
@ -55,7 +55,9 @@ draw_battle_bottom:
|
||||||
|
|
||||||
; set up jump table fakery
|
; set up jump table fakery
|
||||||
handle_special:
|
handle_special:
|
||||||
ldy MENU_STATE
|
lda MENU_STATE
|
||||||
|
and #$7f ; mask off Finger state
|
||||||
|
tay
|
||||||
lda battle_menu_jump_table_h,Y
|
lda battle_menu_jump_table_h,Y
|
||||||
pha
|
pha
|
||||||
lda battle_menu_jump_table_l,Y
|
lda battle_menu_jump_table_l,Y
|
||||||
|
@ -393,6 +395,44 @@ print_menu_zap:
|
||||||
|
|
||||||
done_draw_battle_menu:
|
done_draw_battle_menu:
|
||||||
|
|
||||||
|
;==============================
|
||||||
|
; draw finger (when applicable)
|
||||||
|
|
||||||
|
lda MENU_STATE ; MENU finger is top bit
|
||||||
|
bpl done_draw_finger
|
||||||
|
|
||||||
|
lda FINGER_DIRECTION
|
||||||
|
bne draw_finger_left
|
||||||
|
|
||||||
|
draw_finger_right:
|
||||||
|
|
||||||
|
lda #20
|
||||||
|
sta XPOS
|
||||||
|
lda #20
|
||||||
|
sta YPOS
|
||||||
|
|
||||||
|
lda #<finger_right_sprite
|
||||||
|
sta INL
|
||||||
|
lda #>finger_right_sprite
|
||||||
|
sta INH
|
||||||
|
jsr put_sprite_crop
|
||||||
|
|
||||||
|
jmp done_draw_finger
|
||||||
|
draw_finger_left:
|
||||||
|
|
||||||
|
lda #12
|
||||||
|
sta XPOS
|
||||||
|
lda #20
|
||||||
|
sta YPOS
|
||||||
|
|
||||||
|
lda #<finger_left_sprite
|
||||||
|
sta INL
|
||||||
|
lda #>finger_left_sprite
|
||||||
|
sta INH
|
||||||
|
jsr put_sprite_crop
|
||||||
|
|
||||||
|
done_draw_finger:
|
||||||
|
|
||||||
;========================
|
;========================
|
||||||
; Draw inverse separator
|
; Draw inverse separator
|
||||||
|
|
||||||
|
@ -461,12 +501,96 @@ done_bar:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
;=========================
|
||||||
;=========================
|
;=========================
|
||||||
; battle menu keypress
|
; battle menu keypress
|
||||||
;=========================
|
;=========================
|
||||||
|
;=========================
|
||||||
; FIXME: help, toggle-sound?
|
; FIXME: help, toggle-sound?
|
||||||
|
|
||||||
battle_menu_keypress:
|
battle_menu_keypress:
|
||||||
|
lda MENU_STATE
|
||||||
|
bpl battle_menu_nofinger_keypress
|
||||||
|
|
||||||
|
battle_menu_finger_keypress:
|
||||||
|
lda LAST_KEY
|
||||||
|
cmp #27
|
||||||
|
beq finger_escape
|
||||||
|
cmp #' '
|
||||||
|
beq finger_action
|
||||||
|
cmp #13
|
||||||
|
beq finger_action
|
||||||
|
cmp #'A'
|
||||||
|
beq finger_left
|
||||||
|
cmp #'D'
|
||||||
|
beq finger_right
|
||||||
|
; jmp to common routines for others?
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
||||||
|
finger_escape:
|
||||||
|
lda MENU_STATE
|
||||||
|
and #$7f
|
||||||
|
sta MENU_STATE
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
||||||
|
finger_left:
|
||||||
|
lda #1
|
||||||
|
sta FINGER_DIRECTION
|
||||||
|
rts
|
||||||
|
|
||||||
|
finger_right:
|
||||||
|
lda #0h
|
||||||
|
sta FINGER_DIRECTION
|
||||||
|
rts
|
||||||
|
|
||||||
|
finger_action:
|
||||||
|
lda MENU_SUBMENU
|
||||||
|
|
||||||
|
cmp #MENU_MAIN_ATTACK
|
||||||
|
beq finger_attack_action
|
||||||
|
cmp #MENU_MAIN_MAGIC
|
||||||
|
beq finger_magic_action
|
||||||
|
cmp #MENU_MAIN_LIMIT
|
||||||
|
beq finger_limit_action
|
||||||
|
cmp #MENU_MAIN_SUMMON
|
||||||
|
beq finger_summon_action
|
||||||
|
brk
|
||||||
|
|
||||||
|
finger_attack_action:
|
||||||
|
lda #0
|
||||||
|
sta MENU_STATE
|
||||||
|
|
||||||
|
; attack and decrement HP
|
||||||
|
jsr attack
|
||||||
|
jsr done_attack
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
||||||
|
finger_magic_action:
|
||||||
|
lda #0
|
||||||
|
sta MENU_STATE
|
||||||
|
jsr magic_attack
|
||||||
|
jsr done_attack
|
||||||
|
rts
|
||||||
|
|
||||||
|
finger_limit_action:
|
||||||
|
lda #0
|
||||||
|
sta MENU_STATE
|
||||||
|
jsr limit_break
|
||||||
|
jsr done_attack
|
||||||
|
rts
|
||||||
|
|
||||||
|
finger_summon_action:
|
||||||
|
lda #0
|
||||||
|
sta MENU_STATE
|
||||||
|
jsr summon
|
||||||
|
jsr done_attack
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
||||||
|
battle_menu_nofinger_keypress:
|
||||||
|
|
||||||
lda LAST_KEY
|
lda LAST_KEY
|
||||||
cmp #27
|
cmp #27
|
||||||
|
@ -568,7 +692,6 @@ keypress_action:
|
||||||
cmp #MENU_SUMMON
|
cmp #MENU_SUMMON
|
||||||
beq keypress_summon_action
|
beq keypress_summon_action
|
||||||
|
|
||||||
|
|
||||||
;============================
|
;============================
|
||||||
; handle action on main menu
|
; handle action on main menu
|
||||||
keypress_main_action:
|
keypress_main_action:
|
||||||
|
@ -586,11 +709,16 @@ keypress_main_action:
|
||||||
cmp #MENU_MAIN_ESCAPE
|
cmp #MENU_MAIN_ESCAPE
|
||||||
beq keypress_main_escape
|
beq keypress_main_escape
|
||||||
|
|
||||||
|
|
||||||
keypress_main_attack:
|
keypress_main_attack:
|
||||||
; attack and decrement HP
|
; move to finger mode
|
||||||
jsr attack
|
; pointing left
|
||||||
jsr done_attack
|
|
||||||
rts
|
; MENU_MAIN_ATTACK should be in A
|
||||||
|
sta MENU_SUBMENU
|
||||||
|
|
||||||
|
jmp keypress_activate_finger_left
|
||||||
|
|
||||||
|
|
||||||
keypress_main_skip:
|
keypress_main_skip:
|
||||||
jsr done_attack
|
jsr done_attack
|
||||||
|
@ -625,24 +753,53 @@ keypress_main_escape:
|
||||||
jsr done_attack
|
jsr done_attack
|
||||||
rts
|
rts
|
||||||
|
|
||||||
keypress_magic_action:
|
keypress_summon_action:
|
||||||
jsr magic_attack
|
lda #MENU_MAIN_SUMMON
|
||||||
jsr done_attack
|
sta MENU_SUBMENU
|
||||||
rts
|
lda MENU_POSITION
|
||||||
|
sta MAGIC_TYPE
|
||||||
|
jmp keypress_activate_finger_left
|
||||||
|
|
||||||
keypress_limit_action:
|
keypress_limit_action:
|
||||||
jsr limit_break
|
lda #MENU_MAIN_LIMIT
|
||||||
jsr done_attack
|
sta MENU_SUBMENU
|
||||||
rts
|
lda MENU_POSITION
|
||||||
|
sta MAGIC_TYPE
|
||||||
|
jmp keypress_activate_finger_left
|
||||||
|
|
||||||
|
keypress_magic_action:
|
||||||
|
lda #MENU_MAIN_MAGIC
|
||||||
|
sta MENU_SUBMENU
|
||||||
|
|
||||||
|
lda MENU_POSITION
|
||||||
|
sta MAGIC_TYPE
|
||||||
|
cmp #MENU_MAGIC_HEAL
|
||||||
|
bne keypress_magic_action_noheal
|
||||||
|
jmp keypress_activate_finger_right
|
||||||
|
keypress_magic_action_noheal:
|
||||||
|
jmp keypress_activate_finger_left
|
||||||
|
|
||||||
|
|
||||||
|
keypress_activate_finger_right:
|
||||||
|
lda #0
|
||||||
|
beq keypress_activate_finger
|
||||||
|
keypress_activate_finger_left:
|
||||||
|
; move to finger mode
|
||||||
|
; pointing left
|
||||||
|
|
||||||
|
lda #1
|
||||||
|
keypress_activate_finger:
|
||||||
|
sta FINGER_DIRECTION
|
||||||
|
|
||||||
|
lda MENU_STATE
|
||||||
|
ora #MENU_FINGER
|
||||||
|
sta MENU_STATE
|
||||||
|
|
||||||
|
|
||||||
keypress_summon_action:
|
|
||||||
jsr summon
|
|
||||||
jsr done_attack
|
|
||||||
|
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;=============================
|
;=============================
|
||||||
; done attack
|
; done attack
|
||||||
;=============================
|
;=============================
|
||||||
|
@ -721,26 +878,33 @@ battle_menu_limit:
|
||||||
.byte 24,21,"SLICE",0 ; 0
|
.byte 24,21,"SLICE",0 ; 0
|
||||||
.byte 24,22,"DROP",0 ; 2
|
.byte 24,22,"DROP",0 ; 2
|
||||||
.byte 31,21,"ZAP",0 ; 1
|
.byte 31,21,"ZAP",0 ; 1
|
||||||
;
|
|
||||||
; ATTACK SKIP
|
|
||||||
; MAGIC LIMIT
|
; Main Menu
|
||||||
; SUMMON ESCAPE
|
; ATTACK SKIP
|
||||||
;
|
; MAGIC ESCAPE
|
||||||
; SUMMONS -> METROCAT VORTEXCN
|
; SUMMON LIMIT
|
||||||
; MAGIC -> HEAL FIRE
|
|
||||||
; ICE MALAISE
|
; Magic Menu
|
||||||
; BOLT
|
; HEAL FIRE
|
||||||
; LIMIT -> SLICE ZAP
|
; ICE MALAISE
|
||||||
; DROP
|
; BOLT
|
||||||
;
|
|
||||||
|
; Summon Menu
|
||||||
|
; METROCAT
|
||||||
|
; VORTEXCN
|
||||||
|
|
||||||
|
; Limit Menu
|
||||||
|
; SLICE ZAP
|
||||||
|
; DROP
|
||||||
|
|
||||||
; State Machine
|
; State Machine
|
||||||
;
|
;
|
||||||
; time
|
; time
|
||||||
; BOTTOM -------> MAIN_MENU ----->ATTACK
|
; BOTTOM -------> MAIN_MENU ----->ATTACK--------------->FINGER
|
||||||
; ------->SKIP
|
; ------->SKIP
|
||||||
; ------->MAGIC_MENU
|
; ------->MAGIC->MAGIC_MENU---->FINGER
|
||||||
; ------->LIMIT_MENU
|
; ------->LIMIT->LIMIT_MENU---->FINGER
|
||||||
; ------->SUMMON_MENU
|
; ------->SUMMON->SUMMON_MENU-->FINGER
|
||||||
; ------->ESCAPE
|
; ------->ESCAPE
|
||||||
;
|
|
||||||
;
|
|
||||||
|
|
|
@ -117,20 +117,23 @@ ENEMY_TYPE = $B4 ; used in battle
|
||||||
ENEMY_HP = $B5 ; enemy hitpoints
|
ENEMY_HP = $B5 ; enemy hitpoints
|
||||||
ENEMY_X = $B6 ; enemy X position
|
ENEMY_X = $B6 ; enemy X position
|
||||||
ENEMY_COUNT = $B7 ; enemy countdown to attack
|
ENEMY_COUNT = $B7 ; enemy countdown to attack
|
||||||
MENU_STATE = $B8 ; battle menu state
|
MENU_POSITION = $B8
|
||||||
|
MENU_STATE = $B9 ; battle menu state
|
||||||
MENU_NONE = 0
|
MENU_NONE = 0
|
||||||
MENU_MAIN = 1
|
MENU_MAIN = 1
|
||||||
MENU_MAGIC = 2
|
MENU_MAGIC = 2
|
||||||
MENU_SUMMON = 3
|
MENU_SUMMON = 3
|
||||||
MENU_LIMIT = 4
|
MENU_LIMIT = 4
|
||||||
MENU_POSITION = $B9
|
MENU_FINGER = $80
|
||||||
|
MENU_SUBMENU = $BA
|
||||||
MENU_MAIN_ATTACK = 0
|
MENU_MAIN_ATTACK = 0
|
||||||
MENU_MAIN_SKIP = 1
|
MENU_MAIN_SKIP = 1
|
||||||
MENU_MAIN_MAGIC = 2
|
MENU_MAIN_MAGIC = 2
|
||||||
MENU_MAIN_ESCAPE = 3
|
MENU_MAIN_ESCAPE = 3
|
||||||
MENU_MAIN_SUMMON = 4
|
MENU_MAIN_SUMMON = 4
|
||||||
MENU_MAIN_LIMIT = 5
|
MENU_MAIN_LIMIT = 5
|
||||||
|
MAGIC_TYPE = $BB ; same as below
|
||||||
|
MENU_TYPE = $BB ; same as above
|
||||||
MENU_SUMMON_METROCAT = 0
|
MENU_SUMMON_METROCAT = 0
|
||||||
MENU_SUMMON_VORTEX = 1
|
MENU_SUMMON_VORTEX = 1
|
||||||
|
|
||||||
|
@ -144,11 +147,11 @@ MENU_POSITION = $B9
|
||||||
MENU_LIMIT_ZAP = 1
|
MENU_LIMIT_ZAP = 1
|
||||||
MENU_LIMIT_DROP = 2
|
MENU_LIMIT_DROP = 2
|
||||||
|
|
||||||
LAST_KEY = $BA
|
LAST_KEY = $BC
|
||||||
DAMAGE_VAL = $BB
|
DAMAGE_VAL = $BD
|
||||||
MAGIC_X = $BC
|
MAGIC_X = $BE
|
||||||
MAGIC_Y = $BD
|
MAGIC_Y = $BF
|
||||||
MAGIC_TYPE = $BE
|
FINGER_DIRECTION= $C0
|
||||||
|
|
||||||
COLOR1 = $E0
|
COLOR1 = $E0
|
||||||
COLOR2 = $E1
|
COLOR2 = $E1
|
||||||
|
|
Loading…
Reference in New Issue