tfv: split off hero drawing code
This commit is contained in:
parent
403cd5a3b4
commit
a7725fd35b
|
@ -75,9 +75,10 @@ TFV_WORLD: tfv_world.o
|
||||||
ld65 -o TFV_WORLD tfv_world.o -C ../../linker_scripts/apple2_2000.inc
|
ld65 -o TFV_WORLD tfv_world.o -C ../../linker_scripts/apple2_2000.inc
|
||||||
|
|
||||||
tfv_world.o: tfv_world.s zp.inc \
|
tfv_world.o: tfv_world.s zp.inc \
|
||||||
|
long_wait.s \
|
||||||
tfv_overworld.s tfv_drawmap.s \
|
tfv_overworld.s tfv_drawmap.s \
|
||||||
tfv_battle.s tfv_battle_menu.s tfv_battle_limit.s tfv_battle_summons.s \
|
tfv_battle.s tfv_battle_menu.s tfv_battle_limit.s tfv_battle_summons.s \
|
||||||
tfv_battle_magic.s tfv_battle_enemy.s \
|
tfv_battle_magic.s tfv_battle_enemy.s tfv_battle_draw_hero.s \
|
||||||
tfv_battle_boss.s \
|
tfv_battle_boss.s \
|
||||||
help_overworld.s rotate_intro.s \
|
help_overworld.s rotate_intro.s \
|
||||||
sound_effects.s speaker_tone.s \
|
sound_effects.s speaker_tone.s \
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
;=====================
|
||||||
|
;=====================
|
||||||
|
; long(er) wait
|
||||||
|
; waits approximately 10ms * X
|
||||||
|
;=====================
|
||||||
|
;=====================
|
||||||
|
long_wait:
|
||||||
|
lda #64
|
||||||
|
jsr WAIT ; delay 1/2(26+27A+5A^2) us, 11,117
|
||||||
|
dex
|
||||||
|
bne long_wait
|
||||||
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -47,6 +47,27 @@ done_menu_error_noise:
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
;======================
|
||||||
|
; noise when battle counter ready
|
||||||
|
menu_ready_noise:
|
||||||
|
|
||||||
|
lda SOUND_STATUS
|
||||||
|
bmi done_menu_ready_noise
|
||||||
|
|
||||||
|
lda #NOTE_A4
|
||||||
|
sta speaker_frequency
|
||||||
|
lda #5
|
||||||
|
sta speaker_duration
|
||||||
|
jsr speaker_tone
|
||||||
|
|
||||||
|
lda #NOTE_A5
|
||||||
|
sta speaker_frequency
|
||||||
|
lda #5
|
||||||
|
sta speaker_duration
|
||||||
|
jsr speaker_tone
|
||||||
|
|
||||||
|
done_menu_ready_noise:
|
||||||
|
rts
|
||||||
|
|
||||||
|
|
||||||
;======================
|
;======================
|
||||||
|
|
|
@ -1,3 +1,7 @@
|
||||||
|
;
|
||||||
|
; handle battles
|
||||||
|
;
|
||||||
|
|
||||||
;================================
|
;================================
|
||||||
; do battle
|
; do battle
|
||||||
;================================
|
;================================
|
||||||
|
@ -6,6 +10,8 @@ do_battle:
|
||||||
|
|
||||||
lda #34
|
lda #34
|
||||||
sta HERO_X
|
sta HERO_X
|
||||||
|
lda #20
|
||||||
|
sta HERO_Y
|
||||||
|
|
||||||
lda #0
|
lda #0
|
||||||
sta HERO_STATE
|
sta HERO_STATE
|
||||||
|
@ -15,15 +21,22 @@ do_battle:
|
||||||
lda #3
|
lda #3
|
||||||
sta HERO_LIMIT
|
sta HERO_LIMIT
|
||||||
|
|
||||||
jsr rotate_intro
|
|
||||||
|
|
||||||
lda #20
|
lda #20
|
||||||
sta BATTLE_COUNT
|
sta BATTLE_COUNT
|
||||||
|
|
||||||
|
|
||||||
|
;========================
|
||||||
|
; rotate intro
|
||||||
|
|
||||||
|
jsr rotate_intro
|
||||||
|
|
||||||
|
;========================
|
||||||
|
; zoom to battlefield
|
||||||
|
|
||||||
|
; jsr zoom_battlefield
|
||||||
|
|
||||||
;=============================
|
;=============================
|
||||||
; Init Enemy
|
; Init Enemy
|
||||||
;=============================
|
|
||||||
|
|
||||||
jsr init_enemy
|
jsr init_enemy
|
||||||
|
|
||||||
|
@ -84,13 +97,20 @@ battle_ground_inner:
|
||||||
; update bottom of screen
|
; update bottom of screen
|
||||||
jsr draw_battle_bottom
|
jsr draw_battle_bottom
|
||||||
|
|
||||||
|
|
||||||
|
;========================================
|
||||||
|
; main battle loop
|
||||||
|
;========================================
|
||||||
|
|
||||||
main_battle_loop:
|
main_battle_loop:
|
||||||
|
|
||||||
|
;============================
|
||||||
|
; copy background into place
|
||||||
|
|
||||||
jsr gr_copy_to_current
|
jsr gr_copy_to_current
|
||||||
|
|
||||||
;========================================
|
;========================================
|
||||||
; draw our hero
|
; draw our hero
|
||||||
;========================================
|
|
||||||
|
|
||||||
lda HERO_HP
|
lda HERO_HP
|
||||||
beq battle_draw_hero_down
|
beq battle_draw_hero_down
|
||||||
|
@ -102,20 +122,8 @@ main_battle_loop:
|
||||||
jmp battle_draw_normal_hero
|
jmp battle_draw_normal_hero
|
||||||
|
|
||||||
battle_draw_hero_down:
|
battle_draw_hero_down:
|
||||||
; grsim_put_sprite(tfv_defeat,ax-2,24);
|
|
||||||
|
|
||||||
lda HERO_X
|
jsr draw_hero_down
|
||||||
sec
|
|
||||||
sbc #2
|
|
||||||
sta XPOS
|
|
||||||
lda #24
|
|
||||||
sta YPOS
|
|
||||||
|
|
||||||
lda #<tfv_defeat_sprite
|
|
||||||
sta INL
|
|
||||||
lda #>tfv_defeat_sprite
|
|
||||||
sta INH
|
|
||||||
jsr put_sprite_crop
|
|
||||||
jmp battle_done_draw_hero
|
jmp battle_done_draw_hero
|
||||||
|
|
||||||
battle_draw_hero_running:
|
battle_draw_hero_running:
|
||||||
|
@ -160,7 +168,6 @@ battle_done_draw_hero:
|
||||||
|
|
||||||
;===========================
|
;===========================
|
||||||
; draw enemy
|
; draw enemy
|
||||||
;===========================
|
|
||||||
battle_draw_enemy:
|
battle_draw_enemy:
|
||||||
|
|
||||||
; grsim_put_sprite(enemies[enemy_type].sprite,enemy_x,20);
|
; grsim_put_sprite(enemies[enemy_type].sprite,enemy_x,20);
|
||||||
|
@ -184,15 +191,20 @@ battle_done_draw_enemy:
|
||||||
|
|
||||||
jsr page_flip
|
jsr page_flip
|
||||||
|
|
||||||
; pause if dead
|
;=======================================
|
||||||
|
; handle if dead
|
||||||
|
|
||||||
; if (hp==0) {
|
lda HERO_HP
|
||||||
; for(i=0;i<15;i++) usleep(100000);
|
bne done_battle_handle_dead
|
||||||
; break;
|
|
||||||
; }
|
; pause for 1.5s
|
||||||
|
ldx #15
|
||||||
|
jsr long_wait
|
||||||
|
|
||||||
|
jsr battle_game_over
|
||||||
|
|
||||||
|
done_battle_handle_dead:
|
||||||
|
|
||||||
; delay for framerate
|
|
||||||
; usleep(100000);
|
|
||||||
|
|
||||||
;=======================
|
;=======================
|
||||||
; handle keypresses
|
; handle keypresses
|
||||||
|
@ -202,6 +214,14 @@ battle_done_draw_enemy:
|
||||||
cmp #'Q'
|
cmp #'Q'
|
||||||
beq done_battle
|
beq done_battle
|
||||||
|
|
||||||
|
;========================================
|
||||||
|
; delay for framerate
|
||||||
|
|
||||||
|
; lda #10
|
||||||
|
; jsr WAIT
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;========================
|
;========================
|
||||||
; handle enemy attacks
|
; handle enemy attacks
|
||||||
|
|
||||||
|
@ -239,17 +259,19 @@ update_battle_counter:
|
||||||
; battle timer expired, take action
|
; battle timer expired, take action
|
||||||
|
|
||||||
; If running, escape
|
; If running, escape
|
||||||
; TODO: randomly fail at running? */
|
; TODO: randomly fail at running?
|
||||||
|
|
||||||
lda HERO_STATE
|
lda HERO_STATE
|
||||||
and #HERO_STATE_RUNNING
|
and #HERO_STATE_RUNNING
|
||||||
beq battle_no_escape
|
beq battle_open_menu
|
||||||
|
|
||||||
; we bravely ran away
|
; we bravely ran away
|
||||||
jmp done_battle
|
jmp done_battle
|
||||||
|
|
||||||
battle_no_escape:
|
|
||||||
|
|
||||||
|
;======================
|
||||||
; activate menu
|
; activate menu
|
||||||
|
battle_open_menu:
|
||||||
|
|
||||||
lda MENU_STATE
|
lda MENU_STATE
|
||||||
cmp #MENU_NONE
|
cmp #MENU_NONE
|
||||||
|
@ -258,6 +280,7 @@ battle_no_escape:
|
||||||
; move to main menu
|
; move to main menu
|
||||||
lda #MENU_MAIN
|
lda #MENU_MAIN
|
||||||
sta MENU_STATE
|
sta MENU_STATE
|
||||||
|
jsr menu_ready_noise
|
||||||
|
|
||||||
menu_activated:
|
menu_activated:
|
||||||
|
|
||||||
|
@ -288,10 +311,12 @@ done_battle:
|
||||||
|
|
||||||
jsr clear_bottoms
|
jsr clear_bottoms
|
||||||
|
|
||||||
; running=0; ?
|
|
||||||
|
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
battle_game_over:
|
||||||
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;****** ** **** **** ** ** ****** **** ****** ****** ******
|
;****** ** **** **** ** ** ****** **** ****** ****** ******
|
||||||
;** ** **** ** ** ** ** ** ** ** ** ** ** **
|
;** ** **** ** ** ** ** ** ** ** ** ** ** **
|
||||||
|
@ -362,51 +387,6 @@ gr_put_num_ones:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;===================
|
|
||||||
; heal self
|
|
||||||
;===================
|
|
||||||
; heal amount in DAMAGE_VAL (yes, I know)
|
|
||||||
|
|
||||||
heal_self:
|
|
||||||
clc
|
|
||||||
lda HERO_HP
|
|
||||||
adc DAMAGE_VAL
|
|
||||||
|
|
||||||
; check if HP went down, if so we wrapped
|
|
||||||
|
|
||||||
cmp HERO_HP
|
|
||||||
bcc heal_self_max ; blt
|
|
||||||
bcs heal_self_update
|
|
||||||
|
|
||||||
heal_self_max:
|
|
||||||
lda HERO_HP_MAX
|
|
||||||
|
|
||||||
heal_self_update:
|
|
||||||
sta HERO_HP
|
|
||||||
|
|
||||||
rts
|
|
||||||
|
|
||||||
;========================
|
|
||||||
; damage TFV
|
|
||||||
;========================
|
|
||||||
; value in DAMAGE_VAL
|
|
||||||
damage_tfv:
|
|
||||||
lda DAMAGE_VAL
|
|
||||||
cmp HERO_HP
|
|
||||||
bcs damage_hero_too_much ; bge
|
|
||||||
|
|
||||||
sec
|
|
||||||
lda HERO_HP
|
|
||||||
sbc DAMAGE_VAL
|
|
||||||
jmp damage_hero_update
|
|
||||||
|
|
||||||
damage_hero_too_much:
|
|
||||||
lda #0
|
|
||||||
|
|
||||||
damage_hero_update:
|
|
||||||
sta HERO_HP
|
|
||||||
|
|
||||||
rts
|
|
||||||
|
|
||||||
|
|
||||||
;=========================
|
;=========================
|
||||||
|
@ -591,105 +571,3 @@ victory_draw_done:
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
|
||||||
;=============================
|
|
||||||
; done attack
|
|
||||||
;=============================
|
|
||||||
|
|
||||||
done_attack:
|
|
||||||
lda #0
|
|
||||||
sta BATTLE_COUNT
|
|
||||||
|
|
||||||
lda #MENU_NONE
|
|
||||||
sta MENU_STATE
|
|
||||||
|
|
||||||
rts
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;============================
|
|
||||||
; draw hero victory
|
|
||||||
;============================
|
|
||||||
; draws at HERO_X,HERO_Y
|
|
||||||
|
|
||||||
draw_hero_victory:
|
|
||||||
lda HERO_X
|
|
||||||
sta XPOS
|
|
||||||
lda HERO_Y
|
|
||||||
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
|
|
||||||
sta INH
|
|
||||||
jsr put_sprite_crop
|
|
||||||
|
|
||||||
rts
|
|
||||||
|
|
||||||
|
|
||||||
;============================
|
|
||||||
; draw hero and sword
|
|
||||||
;============================
|
|
||||||
; draws at HERO_X,HERO_Y
|
|
||||||
|
|
||||||
draw_hero_and_sword:
|
|
||||||
|
|
||||||
lda HERO_X
|
|
||||||
sta XPOS
|
|
||||||
lda HERO_Y
|
|
||||||
sta YPOS
|
|
||||||
|
|
||||||
lda #<tfv_stand_left_sprite
|
|
||||||
sta INL
|
|
||||||
lda #>tfv_stand_left_sprite
|
|
||||||
sta INH
|
|
||||||
|
|
||||||
jsr put_sprite_crop
|
|
||||||
|
|
||||||
; grsim_put_sprite(tfv_led_sword,ax-5,20);
|
|
||||||
lda HERO_X
|
|
||||||
sec
|
|
||||||
sbc #5
|
|
||||||
sta XPOS
|
|
||||||
lda HERO_Y
|
|
||||||
sta YPOS
|
|
||||||
|
|
||||||
lda #<tfv_led_sword_sprite
|
|
||||||
sta INL
|
|
||||||
lda #>tfv_led_sword_sprite
|
|
||||||
sta INH
|
|
||||||
jsr put_sprite_crop
|
|
||||||
|
|
||||||
rts
|
|
||||||
|
|
||||||
|
|
||||||
;=====================
|
|
||||||
;=====================
|
|
||||||
; long(er) wait
|
|
||||||
; waits approximately 10ms * X
|
|
||||||
;=====================
|
|
||||||
;=====================
|
|
||||||
long_wait:
|
|
||||||
lda #64
|
|
||||||
jsr WAIT ; delay 1/2(26+27A+5A^2) us, 11,117
|
|
||||||
dex
|
|
||||||
bne long_wait
|
|
||||||
rts
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,141 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
;============================
|
||||||
|
; draw hero victory
|
||||||
|
;============================
|
||||||
|
; draws at HERO_X,HERO_Y
|
||||||
|
|
||||||
|
draw_hero_victory:
|
||||||
|
lda HERO_X
|
||||||
|
sta XPOS
|
||||||
|
lda HERO_Y
|
||||||
|
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
|
||||||
|
sta INH
|
||||||
|
jmp put_sprite_crop ; tail call
|
||||||
|
|
||||||
|
|
||||||
|
;============================
|
||||||
|
; draw hero down
|
||||||
|
;============================
|
||||||
|
; draws at HERO_X-2,24
|
||||||
|
|
||||||
|
draw_hero_down:
|
||||||
|
|
||||||
|
; grsim_put_sprite(tfv_defeat,ax-2,24);
|
||||||
|
|
||||||
|
lda HERO_X
|
||||||
|
sec
|
||||||
|
sbc #2
|
||||||
|
sta XPOS
|
||||||
|
lda #24
|
||||||
|
sta YPOS
|
||||||
|
|
||||||
|
lda #<tfv_defeat_sprite
|
||||||
|
sta INL
|
||||||
|
lda #>tfv_defeat_sprite
|
||||||
|
sta INH
|
||||||
|
|
||||||
|
jmp put_sprite_crop ; tail call
|
||||||
|
|
||||||
|
|
||||||
|
;============================
|
||||||
|
; draw hero and sword
|
||||||
|
;============================
|
||||||
|
; draws at HERO_X,HERO_Y
|
||||||
|
|
||||||
|
draw_hero_and_sword:
|
||||||
|
|
||||||
|
lda HERO_X
|
||||||
|
sta XPOS
|
||||||
|
lda HERO_Y
|
||||||
|
sta YPOS
|
||||||
|
|
||||||
|
lda #<tfv_stand_left_sprite
|
||||||
|
sta INL
|
||||||
|
lda #>tfv_stand_left_sprite
|
||||||
|
sta INH
|
||||||
|
|
||||||
|
jsr put_sprite_crop
|
||||||
|
|
||||||
|
; grsim_put_sprite(tfv_led_sword,ax-5,20);
|
||||||
|
lda HERO_X
|
||||||
|
sec
|
||||||
|
sbc #5
|
||||||
|
sta XPOS
|
||||||
|
lda HERO_Y
|
||||||
|
sta YPOS
|
||||||
|
|
||||||
|
lda #<tfv_led_sword_sprite
|
||||||
|
sta INL
|
||||||
|
lda #>tfv_led_sword_sprite
|
||||||
|
sta INH
|
||||||
|
|
||||||
|
jmp put_sprite_crop ; tail call
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
;===================
|
||||||
|
; heal hero
|
||||||
|
;===================
|
||||||
|
; heal amount in DAMAGE_VAL (yes, I know)
|
||||||
|
|
||||||
|
heal_hero:
|
||||||
|
clc
|
||||||
|
lda HERO_HP
|
||||||
|
adc DAMAGE_VAL
|
||||||
|
|
||||||
|
; check if HP went down, if so we wrapped
|
||||||
|
|
||||||
|
cmp HERO_HP
|
||||||
|
bcc heal_self_max ; blt
|
||||||
|
bcs heal_self_update
|
||||||
|
|
||||||
|
heal_self_max:
|
||||||
|
lda HERO_HP_MAX
|
||||||
|
|
||||||
|
heal_self_update:
|
||||||
|
sta HERO_HP
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
||||||
|
;========================
|
||||||
|
; damage hero
|
||||||
|
;========================
|
||||||
|
; value in DAMAGE_VAL
|
||||||
|
damage_hero:
|
||||||
|
lda DAMAGE_VAL
|
||||||
|
cmp HERO_HP
|
||||||
|
bcs damage_hero_too_much ; bge
|
||||||
|
|
||||||
|
sec
|
||||||
|
lda HERO_HP
|
||||||
|
sbc DAMAGE_VAL
|
||||||
|
jmp damage_hero_update
|
||||||
|
|
||||||
|
damage_hero_too_much:
|
||||||
|
lda #0
|
||||||
|
|
||||||
|
damage_hero_update:
|
||||||
|
sta HERO_HP
|
||||||
|
|
||||||
|
rts
|
|
@ -208,7 +208,7 @@ magic_happens_loop:
|
||||||
jmp done_magic_damage
|
jmp done_magic_damage
|
||||||
|
|
||||||
was_heal_magic:
|
was_heal_magic:
|
||||||
jsr heal_self
|
jsr heal_hero
|
||||||
done_magic_damage:
|
done_magic_damage:
|
||||||
|
|
||||||
jsr draw_battle_bottom
|
jsr draw_battle_bottom
|
||||||
|
|
|
@ -1,44 +1,56 @@
|
||||||
|
;
|
||||||
|
; draw the bottom status/battle bar
|
||||||
|
; and associated menus
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
;========================
|
;========================
|
||||||
; draw_battle_bottom
|
; draw_battle_bottom
|
||||||
;========================
|
;========================
|
||||||
|
|
||||||
; static int draw_battle_bottom(int enemy_type) {
|
|
||||||
draw_battle_bottom:
|
draw_battle_bottom:
|
||||||
|
|
||||||
jsr clear_bottom
|
jsr clear_bottom
|
||||||
|
|
||||||
jsr normal_text
|
jsr normal_text
|
||||||
|
|
||||||
; print(enemies[enemy_type].name);
|
;=========================
|
||||||
|
; print current enemy name
|
||||||
|
|
||||||
lda #<battle_enemy_string
|
lda #<battle_enemy_string
|
||||||
sta OUTL
|
sta OUTL
|
||||||
lda #>battle_enemy_string
|
lda #>battle_enemy_string
|
||||||
sta OUTH
|
sta OUTH
|
||||||
jsr move_and_print
|
jsr move_and_print
|
||||||
|
|
||||||
|
;===========================
|
||||||
|
; print current enemy attack
|
||||||
|
; only if attacking
|
||||||
|
|
||||||
; if (enemy_attacking) {
|
; if (enemy_attacking) {
|
||||||
; print_inverse(enemies[enemy_type].attack_name);
|
; print_inverse(enemies[enemy_type].attack_name);
|
||||||
; }
|
; }
|
||||||
|
|
||||||
; print name string
|
;=======================
|
||||||
|
; print hero name string
|
||||||
|
|
||||||
lda #<battle_name_string
|
lda #<battle_name_string
|
||||||
sta OUTL
|
sta OUTL
|
||||||
lda #>battle_name_string
|
lda #>battle_name_string
|
||||||
sta OUTH
|
sta OUTH
|
||||||
jsr move_and_print
|
jsr move_and_print
|
||||||
|
|
||||||
; if (susie_out) {
|
;=============================
|
||||||
; vtab(23);
|
; print susie name if in party
|
||||||
; htab(15);
|
|
||||||
; move_cursor();
|
; if (susie_out) {
|
||||||
; print("SUSIE");
|
; vtab(23);
|
||||||
; }
|
; htab(15);
|
||||||
|
; move_cursor();
|
||||||
|
; print("SUSIE");
|
||||||
|
|
||||||
|
|
||||||
|
;========================
|
||||||
; jump to current menu
|
; jump to current menu
|
||||||
|
|
||||||
; set up jump table fakery
|
; set up jump table fakery
|
||||||
|
@ -65,6 +77,9 @@ battle_menu_jump_table_h:
|
||||||
.byte >(draw_battle_menu_limit-1)
|
.byte >(draw_battle_menu_limit-1)
|
||||||
|
|
||||||
|
|
||||||
|
;=============================
|
||||||
|
; just draw stats, not menu
|
||||||
|
;=============================
|
||||||
draw_battle_menu_none:
|
draw_battle_menu_none:
|
||||||
;======================
|
;======================
|
||||||
; TFV Stats
|
; TFV Stats
|
||||||
|
@ -122,37 +137,29 @@ plain_limit:
|
||||||
|
|
||||||
jsr draw_bargraph
|
jsr draw_bargraph
|
||||||
|
|
||||||
; ; Susie Stats
|
;========================
|
||||||
; if (susie_out) {
|
; draw susie stats if in party
|
||||||
; vtab(23);
|
|
||||||
; htab(24);
|
; Susie Stats
|
||||||
; move_cursor();
|
;if (susie_out) {
|
||||||
; print_byte(255);
|
; vtab(23);
|
||||||
;
|
; htab(24);
|
||||||
; vtab(23);
|
; move_cursor();
|
||||||
; htab(27);
|
; print_byte(255);
|
||||||
; move_cursor();
|
; vtab(23);
|
||||||
; print_byte(0);
|
; htab(27);
|
||||||
;
|
; move_cursor();
|
||||||
; ; Draw Time bargraph
|
; print_byte(0);
|
||||||
; ram[COLOR]=0xa0;
|
;
|
||||||
; hlin_double(ram[DRAW_PAGE],30,34,42);
|
; Draw Time bargraph
|
||||||
; ram[COLOR]=0x20;
|
; Draw Limit break bargraph
|
||||||
; if (battle_bar) {
|
|
||||||
; hlin_double(ram[DRAW_PAGE],30,30+(battle_bar-1),42);
|
|
||||||
; }
|
|
||||||
;
|
|
||||||
; ; Draw Limit break bargraph
|
|
||||||
; ram[COLOR]=0xa0;
|
|
||||||
; hlin_double(ram[DRAW_PAGE],35,39,42);
|
|
||||||
;
|
|
||||||
; ram[COLOR]=0x20;
|
|
||||||
; if (limit) hlin_double(ram[DRAW_PAGE],35,35+limit,42);
|
|
||||||
|
|
||||||
jmp done_draw_battle_menu
|
jmp done_draw_battle_menu
|
||||||
|
|
||||||
|
|
||||||
;======================
|
;======================
|
||||||
; draw main battle menu
|
; draw main battle menu
|
||||||
|
;======================
|
||||||
draw_battle_menu_main:
|
draw_battle_menu_main:
|
||||||
|
|
||||||
; wrap location
|
; wrap location
|
||||||
|
@ -235,12 +242,14 @@ print_menu_limit:
|
||||||
jsr move_and_print
|
jsr move_and_print
|
||||||
jsr normal_text
|
jsr normal_text
|
||||||
|
|
||||||
|
|
||||||
done_battle_draw_menu_main:
|
done_battle_draw_menu_main:
|
||||||
jmp done_draw_battle_menu
|
jmp done_draw_battle_menu
|
||||||
|
|
||||||
|
|
||||||
;=========================
|
;=========================
|
||||||
; menu summon
|
; draw summon menu
|
||||||
|
;=========================
|
||||||
|
|
||||||
draw_battle_menu_summon:
|
draw_battle_menu_summon:
|
||||||
|
|
||||||
lda #<battle_menu_summons
|
lda #<battle_menu_summons
|
||||||
|
@ -274,8 +283,10 @@ print_menu_vortex:
|
||||||
|
|
||||||
jmp done_draw_battle_menu
|
jmp done_draw_battle_menu
|
||||||
|
|
||||||
|
|
||||||
|
;=======================
|
||||||
|
; draw magic menu
|
||||||
;=======================
|
;=======================
|
||||||
; menu magic
|
|
||||||
draw_battle_menu_magic:
|
draw_battle_menu_magic:
|
||||||
|
|
||||||
lda #<battle_menu_magic
|
lda #<battle_menu_magic
|
||||||
|
@ -331,8 +342,10 @@ print_menu_malaise:
|
||||||
|
|
||||||
jmp done_draw_battle_menu
|
jmp done_draw_battle_menu
|
||||||
|
|
||||||
|
|
||||||
|
;===============================
|
||||||
|
; draw limit break menu
|
||||||
;===============================
|
;===============================
|
||||||
; menu limit
|
|
||||||
|
|
||||||
draw_battle_menu_limit:
|
draw_battle_menu_limit:
|
||||||
|
|
||||||
|
@ -374,6 +387,9 @@ print_menu_zap:
|
||||||
jsr normal_text
|
jsr normal_text
|
||||||
|
|
||||||
|
|
||||||
|
;============================
|
||||||
|
; tidy up after drawing menu
|
||||||
|
;============================
|
||||||
|
|
||||||
done_draw_battle_menu:
|
done_draw_battle_menu:
|
||||||
|
|
||||||
|
@ -403,6 +419,7 @@ done_draw_separator:
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;===========================
|
;===========================
|
||||||
; draw bargraph
|
; draw bargraph
|
||||||
;===========================
|
;===========================
|
||||||
|
@ -447,6 +464,7 @@ done_bar:
|
||||||
;=========================
|
;=========================
|
||||||
; battle menu keypress
|
; battle menu keypress
|
||||||
;=========================
|
;=========================
|
||||||
|
; FIXME: help, toggle-sound?
|
||||||
|
|
||||||
battle_menu_keypress:
|
battle_menu_keypress:
|
||||||
|
|
||||||
|
@ -464,11 +482,14 @@ battle_menu_keypress:
|
||||||
|
|
||||||
cmp #' '
|
cmp #' '
|
||||||
beq keypress_action
|
beq keypress_action
|
||||||
cmp #13
|
cmp #13 ; return key
|
||||||
beq keypress_action
|
beq keypress_action
|
||||||
|
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
;=====================
|
||||||
|
; pressed escape
|
||||||
|
|
||||||
keypress_escape:
|
keypress_escape:
|
||||||
lda #MENU_MAIN
|
lda #MENU_MAIN
|
||||||
sta MENU_STATE
|
sta MENU_STATE
|
||||||
|
@ -528,10 +549,15 @@ done_keypress_left:
|
||||||
jsr menu_move_noise
|
jsr menu_move_noise
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
;===================
|
||||||
|
; pressed action key
|
||||||
|
|
||||||
keypress_action:
|
keypress_action:
|
||||||
|
|
||||||
jsr menu_move_noise
|
jsr menu_move_noise
|
||||||
|
|
||||||
|
; handle action based on current menu
|
||||||
|
|
||||||
lda MENU_STATE
|
lda MENU_STATE
|
||||||
cmp #MENU_MAIN
|
cmp #MENU_MAIN
|
||||||
beq keypress_main_action
|
beq keypress_main_action
|
||||||
|
@ -542,6 +568,9 @@ keypress_action:
|
||||||
cmp #MENU_SUMMON
|
cmp #MENU_SUMMON
|
||||||
beq keypress_summon_action
|
beq keypress_summon_action
|
||||||
|
|
||||||
|
|
||||||
|
;============================
|
||||||
|
; handle action on main menu
|
||||||
keypress_main_action:
|
keypress_main_action:
|
||||||
lda MENU_POSITION
|
lda MENU_POSITION
|
||||||
cmp #MENU_MAIN_ATTACK
|
cmp #MENU_MAIN_ATTACK
|
||||||
|
@ -613,6 +642,23 @@ keypress_summon_action:
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
;=============================
|
||||||
|
; done attack
|
||||||
|
;=============================
|
||||||
|
|
||||||
|
done_attack:
|
||||||
|
lda #0
|
||||||
|
sta BATTLE_COUNT
|
||||||
|
|
||||||
|
lda #MENU_NONE
|
||||||
|
sta MENU_STATE
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;=========================
|
;=========================
|
||||||
; menu strings
|
; menu strings
|
||||||
;=========================
|
;=========================
|
||||||
|
|
|
@ -45,13 +45,13 @@
|
||||||
.include "gr_pageflip.s"
|
.include "gr_pageflip.s"
|
||||||
.include "keyboard.s"
|
.include "keyboard.s"
|
||||||
.include "joystick.s"
|
.include "joystick.s"
|
||||||
;.include "gr_putsprite.s"
|
|
||||||
.include "gr_putsprite_crop.s"
|
.include "gr_putsprite_crop.s"
|
||||||
.include "text_print.s"
|
.include "text_print.s"
|
||||||
.include "gr_copy.s"
|
.include "gr_copy.s"
|
||||||
.include "decompress_fast_v2.s"
|
.include "decompress_fast_v2.s"
|
||||||
.include "gr_offsets.s"
|
.include "gr_offsets.s"
|
||||||
.include "wait_keypressed.s"
|
.include "wait_keypressed.s"
|
||||||
|
.include "long_wait.s"
|
||||||
|
|
||||||
;===============================================
|
;===============================================
|
||||||
; Battle
|
; Battle
|
||||||
|
@ -64,6 +64,7 @@
|
||||||
.include "tfv_battle_limit.s"
|
.include "tfv_battle_limit.s"
|
||||||
.include "tfv_battle_summons.s"
|
.include "tfv_battle_summons.s"
|
||||||
.include "tfv_battle_boss.s"
|
.include "tfv_battle_boss.s"
|
||||||
|
.include "tfv_battle_draw_hero.s"
|
||||||
|
|
||||||
.include "rotate_intro.s"
|
.include "rotate_intro.s"
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue