mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-11-19 12:32:35 +00:00
tfv: split off limit break and menu code to own file
This commit is contained in:
parent
d4ef15dcaa
commit
777614c801
@ -76,7 +76,7 @@ TFV_WORLD: tfv_world.o
|
|||||||
|
|
||||||
tfv_world.o: tfv_world.s zp.inc \
|
tfv_world.o: tfv_world.s zp.inc \
|
||||||
tfv_overworld.s tfv_drawmap.s \
|
tfv_overworld.s tfv_drawmap.s \
|
||||||
tfv_battle.s tfv_battle_menu.s \
|
tfv_battle.s tfv_battle_menu.s tfv_battle_limit.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 \
|
||||||
graphics_map/tfv_backgrounds.inc \
|
graphics_map/tfv_backgrounds.inc \
|
||||||
|
@ -1,19 +1,53 @@
|
|||||||
;======================
|
;======================
|
||||||
; noise when move menu
|
; noise when move menu
|
||||||
menu_noise:
|
menu_move_noise:
|
||||||
|
|
||||||
lda SOUND_STATUS
|
lda SOUND_STATUS
|
||||||
bmi done_menu_noise
|
bmi done_menu_move_noise
|
||||||
|
|
||||||
lda #NOTE_C4
|
lda #NOTE_C4
|
||||||
sta speaker_frequency
|
sta speaker_frequency
|
||||||
lda #25
|
lda #10
|
||||||
sta speaker_duration
|
sta speaker_duration
|
||||||
jsr speaker_tone
|
jsr speaker_tone
|
||||||
|
|
||||||
done_menu_noise:
|
done_menu_move_noise:
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
;======================
|
||||||
|
; noise when hit escape in menu
|
||||||
|
menu_escape_noise:
|
||||||
|
|
||||||
|
lda SOUND_STATUS
|
||||||
|
bmi done_menu_escape_noise
|
||||||
|
|
||||||
|
lda #NOTE_C5
|
||||||
|
sta speaker_frequency
|
||||||
|
lda #10
|
||||||
|
sta speaker_duration
|
||||||
|
jsr speaker_tone
|
||||||
|
|
||||||
|
done_menu_escape_noise:
|
||||||
|
rts
|
||||||
|
|
||||||
|
;======================
|
||||||
|
; noise when error in menu
|
||||||
|
menu_error_noise:
|
||||||
|
|
||||||
|
lda SOUND_STATUS
|
||||||
|
bmi done_menu_error_noise
|
||||||
|
|
||||||
|
lda #NOTE_D3
|
||||||
|
sta speaker_frequency
|
||||||
|
lda #10
|
||||||
|
sta speaker_duration
|
||||||
|
jsr speaker_tone
|
||||||
|
|
||||||
|
done_menu_error_noise:
|
||||||
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;======================
|
;======================
|
||||||
; noise when cast heal
|
; noise when cast heal
|
||||||
|
@ -1097,496 +1097,6 @@ done_magic_damage:
|
|||||||
rts
|
rts
|
||||||
|
|
||||||
|
|
||||||
;======================
|
|
||||||
;======================
|
|
||||||
; Limit Break "Drop"
|
|
||||||
; Jump into sky, drop down and slice enemy in half
|
|
||||||
;======================
|
|
||||||
;======================
|
|
||||||
|
|
||||||
limit_break_drop:
|
|
||||||
|
|
||||||
lda #$99
|
|
||||||
sta DAMAGE_VAL
|
|
||||||
|
|
||||||
lda #34
|
|
||||||
sta HERO_X
|
|
||||||
lda #20
|
|
||||||
sta HERO_Y
|
|
||||||
|
|
||||||
drop_jump_loop:
|
|
||||||
|
|
||||||
; while(ay>0) {
|
|
||||||
|
|
||||||
jsr gr_copy_to_current
|
|
||||||
|
|
||||||
jsr draw_hero_and_sword
|
|
||||||
|
|
||||||
; draw enemy
|
|
||||||
lda ENEMY_X
|
|
||||||
sta XPOS
|
|
||||||
lda #20
|
|
||||||
sta YPOS
|
|
||||||
jsr draw_enemy
|
|
||||||
|
|
||||||
jsr draw_battle_bottom
|
|
||||||
|
|
||||||
jsr page_flip
|
|
||||||
|
|
||||||
lda #75
|
|
||||||
jsr WAIT
|
|
||||||
|
|
||||||
; must be even
|
|
||||||
dec HERO_Y
|
|
||||||
dec HERO_Y
|
|
||||||
|
|
||||||
lda HERO_Y
|
|
||||||
cmp #$f6
|
|
||||||
bne drop_jump_loop
|
|
||||||
|
|
||||||
|
|
||||||
lda #10
|
|
||||||
sta HERO_X
|
|
||||||
|
|
||||||
;===============
|
|
||||||
; Falling
|
|
||||||
|
|
||||||
drop_falling_loop:
|
|
||||||
; while(ay<=20) {
|
|
||||||
|
|
||||||
jsr gr_copy_to_current
|
|
||||||
|
|
||||||
; draw enemy
|
|
||||||
lda ENEMY_X
|
|
||||||
sta XPOS
|
|
||||||
lda #20
|
|
||||||
sta YPOS
|
|
||||||
jsr draw_enemy
|
|
||||||
|
|
||||||
jsr draw_hero_and_sword
|
|
||||||
|
|
||||||
jsr draw_battle_bottom
|
|
||||||
|
|
||||||
; draw line
|
|
||||||
; only if HERO_Y>0
|
|
||||||
lda #$dd ; yellow
|
|
||||||
sta COLOR
|
|
||||||
|
|
||||||
ldx HERO_Y
|
|
||||||
bmi done_drop_vlin
|
|
||||||
stx V2
|
|
||||||
ldx #0
|
|
||||||
|
|
||||||
lda HERO_X
|
|
||||||
sec
|
|
||||||
sbc #5
|
|
||||||
tay
|
|
||||||
|
|
||||||
jsr vlin ; X,V2 at Y vlin(0,ay,ax-5);
|
|
||||||
|
|
||||||
done_drop_vlin:
|
|
||||||
|
|
||||||
jsr page_flip
|
|
||||||
|
|
||||||
lda #100
|
|
||||||
jsr WAIT
|
|
||||||
|
|
||||||
inc HERO_Y
|
|
||||||
inc HERO_Y
|
|
||||||
lda HERO_Y
|
|
||||||
cmp #20
|
|
||||||
bne drop_falling_loop
|
|
||||||
|
|
||||||
|
|
||||||
lda #0
|
|
||||||
sta ANIMATE_LOOP
|
|
||||||
|
|
||||||
more_drop_loop:
|
|
||||||
|
|
||||||
jsr gr_copy_to_current
|
|
||||||
|
|
||||||
; draw enemy
|
|
||||||
lda ENEMY_X
|
|
||||||
sta XPOS
|
|
||||||
lda #20
|
|
||||||
sta YPOS
|
|
||||||
jsr draw_enemy
|
|
||||||
|
|
||||||
jsr draw_hero_and_sword
|
|
||||||
|
|
||||||
jsr draw_battle_bottom
|
|
||||||
|
|
||||||
; draw cut line
|
|
||||||
lda #$CC
|
|
||||||
sta COLOR
|
|
||||||
|
|
||||||
lda HERO_Y
|
|
||||||
clc
|
|
||||||
adc ANIMATE_LOOP
|
|
||||||
sta V2
|
|
||||||
|
|
||||||
ldx HERO_Y
|
|
||||||
|
|
||||||
lda HERO_X
|
|
||||||
sec
|
|
||||||
sbc #5
|
|
||||||
tay
|
|
||||||
|
|
||||||
jsr vlin ; x,v2 at Y vlin(ay,ay+i,ax-5);
|
|
||||||
|
|
||||||
jsr page_flip
|
|
||||||
|
|
||||||
lda #75
|
|
||||||
jsr WAIT
|
|
||||||
|
|
||||||
inc ANIMATE_LOOP
|
|
||||||
lda ANIMATE_LOOP
|
|
||||||
cmp #13
|
|
||||||
bne more_drop_loop
|
|
||||||
|
|
||||||
|
|
||||||
jsr gr_copy_to_current
|
|
||||||
|
|
||||||
; draw enemy
|
|
||||||
lda ENEMY_X
|
|
||||||
sta XPOS
|
|
||||||
lda #20
|
|
||||||
sta YPOS
|
|
||||||
jsr draw_enemy
|
|
||||||
|
|
||||||
; draw hero
|
|
||||||
|
|
||||||
jsr draw_hero_and_sword
|
|
||||||
|
|
||||||
jsr draw_battle_bottom
|
|
||||||
|
|
||||||
; slice
|
|
||||||
; FIXME: should this be ground color?
|
|
||||||
|
|
||||||
lda #$cc ; lightgreen
|
|
||||||
sta COLOR
|
|
||||||
|
|
||||||
ldx #33
|
|
||||||
stx V2
|
|
||||||
ldx #20
|
|
||||||
lda #5
|
|
||||||
tay
|
|
||||||
|
|
||||||
jsr vlin ; x,v2 at Y
|
|
||||||
|
|
||||||
jsr damage_enemy
|
|
||||||
|
|
||||||
lda #2
|
|
||||||
sta XPOS
|
|
||||||
lda #10
|
|
||||||
sta YPOS
|
|
||||||
jsr gr_put_num
|
|
||||||
|
|
||||||
jsr page_flip
|
|
||||||
|
|
||||||
; wait 2s
|
|
||||||
ldx #200
|
|
||||||
jsr long_wait
|
|
||||||
|
|
||||||
rts
|
|
||||||
|
|
||||||
;=========================
|
|
||||||
;=========================
|
|
||||||
; Limit Break "Slice"
|
|
||||||
; Run up and slap a bunch with sword
|
|
||||||
; TODO: cause damage value to bounce around more?
|
|
||||||
; TODO: run up to slice, not slide in
|
|
||||||
;=========================
|
|
||||||
;=========================
|
|
||||||
|
|
||||||
limit_break_slice:
|
|
||||||
|
|
||||||
lda #34
|
|
||||||
sta HERO_X
|
|
||||||
lda #20
|
|
||||||
sta HERO_Y
|
|
||||||
|
|
||||||
lda #5
|
|
||||||
sta DAMAGE_VAL
|
|
||||||
|
|
||||||
slice_run_loop:
|
|
||||||
|
|
||||||
jsr gr_copy_to_current
|
|
||||||
|
|
||||||
jsr draw_hero_and_sword
|
|
||||||
|
|
||||||
; draw enemy
|
|
||||||
lda ENEMY_X
|
|
||||||
sta XPOS
|
|
||||||
lda #20
|
|
||||||
sta YPOS
|
|
||||||
jsr draw_enemy
|
|
||||||
|
|
||||||
jsr draw_battle_bottom
|
|
||||||
|
|
||||||
jsr page_flip
|
|
||||||
|
|
||||||
lda #50
|
|
||||||
jsr WAIT
|
|
||||||
|
|
||||||
dec HERO_X
|
|
||||||
lda HERO_X
|
|
||||||
cmp #10
|
|
||||||
bcs slice_run_loop ; bge
|
|
||||||
|
|
||||||
;==================
|
|
||||||
; Slicing
|
|
||||||
|
|
||||||
lda #20
|
|
||||||
sta ANIMATE_LOOP
|
|
||||||
slicing_loop:
|
|
||||||
|
|
||||||
jsr gr_copy_to_current
|
|
||||||
|
|
||||||
; draw enemy
|
|
||||||
lda ENEMY_X
|
|
||||||
sta XPOS
|
|
||||||
lda #20
|
|
||||||
sta YPOS
|
|
||||||
jsr draw_enemy
|
|
||||||
|
|
||||||
lda ANIMATE_LOOP
|
|
||||||
and #1
|
|
||||||
bne slice_raised
|
|
||||||
|
|
||||||
slice_down:
|
|
||||||
jsr draw_hero_and_sword
|
|
||||||
|
|
||||||
jmp done_slice_down
|
|
||||||
|
|
||||||
slice_raised:
|
|
||||||
|
|
||||||
jsr draw_hero_victory
|
|
||||||
|
|
||||||
done_slice_down:
|
|
||||||
|
|
||||||
jsr damage_enemy
|
|
||||||
|
|
||||||
; gr_put_num(2+(i%2),10+((i%2)*2),damage);
|
|
||||||
lda ANIMATE_LOOP
|
|
||||||
and #$1
|
|
||||||
clc
|
|
||||||
adc #2
|
|
||||||
sta XPOS
|
|
||||||
|
|
||||||
lda ANIMATE_LOOP
|
|
||||||
and #$1
|
|
||||||
asl
|
|
||||||
clc
|
|
||||||
adc #10
|
|
||||||
sta YPOS
|
|
||||||
|
|
||||||
jsr gr_put_num
|
|
||||||
|
|
||||||
jsr draw_battle_bottom
|
|
||||||
|
|
||||||
jsr page_flip
|
|
||||||
|
|
||||||
lda #150
|
|
||||||
jsr WAIT
|
|
||||||
|
|
||||||
dec ANIMATE_LOOP
|
|
||||||
bne slicing_loop
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
lda #34
|
|
||||||
sta HERO_X
|
|
||||||
lda #20
|
|
||||||
sta HERO_Y
|
|
||||||
|
|
||||||
jsr gr_copy_to_current
|
|
||||||
|
|
||||||
; draw enemy
|
|
||||||
lda ENEMY_X
|
|
||||||
sta XPOS
|
|
||||||
lda #20
|
|
||||||
sta YPOS
|
|
||||||
jsr draw_enemy
|
|
||||||
|
|
||||||
; draw hero
|
|
||||||
|
|
||||||
jsr draw_hero_and_sword
|
|
||||||
|
|
||||||
jsr draw_battle_bottom
|
|
||||||
|
|
||||||
jsr page_flip
|
|
||||||
|
|
||||||
; wait 2s
|
|
||||||
ldx #20
|
|
||||||
jsr long_wait
|
|
||||||
|
|
||||||
rts
|
|
||||||
|
|
||||||
;=========================
|
|
||||||
;========================
|
|
||||||
; Limit Break "Zap"
|
|
||||||
; Zap with a laser out of the LED sword */
|
|
||||||
;=========================
|
|
||||||
;=========================
|
|
||||||
|
|
||||||
limit_break_zap:
|
|
||||||
|
|
||||||
|
|
||||||
lda #34
|
|
||||||
sta HERO_X
|
|
||||||
lda #20
|
|
||||||
sta HERO_Y
|
|
||||||
|
|
||||||
lda #$55
|
|
||||||
sta DAMAGE_VAL
|
|
||||||
|
|
||||||
jsr gr_copy_to_current
|
|
||||||
|
|
||||||
; Draw crossed line
|
|
||||||
|
|
||||||
; color_equals(COLOR_AQUA);
|
|
||||||
lda #$ee
|
|
||||||
sta COLOR
|
|
||||||
|
|
||||||
; vlin(12,24,34);
|
|
||||||
|
|
||||||
ldx #12
|
|
||||||
lda #24
|
|
||||||
sta V2
|
|
||||||
ldy #34
|
|
||||||
|
|
||||||
jsr vlin ; X, V2 at Y
|
|
||||||
|
|
||||||
; hlin_double(ram[DRAW_PAGE],28,38,18);
|
|
||||||
|
|
||||||
lda #38
|
|
||||||
sta V2
|
|
||||||
lda #18
|
|
||||||
ldy #28
|
|
||||||
jsr hlin_double ; Y, V2 AT A
|
|
||||||
|
|
||||||
; Sword in air
|
|
||||||
jsr draw_hero_victory
|
|
||||||
|
|
||||||
; draw enemy
|
|
||||||
lda ENEMY_X
|
|
||||||
sta XPOS
|
|
||||||
lda #20
|
|
||||||
sta YPOS
|
|
||||||
jsr draw_enemy
|
|
||||||
|
|
||||||
jsr draw_battle_bottom
|
|
||||||
|
|
||||||
jsr page_flip
|
|
||||||
|
|
||||||
; pause 0.5s
|
|
||||||
ldx #50
|
|
||||||
jsr long_wait
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
lda #32
|
|
||||||
sta ANIMATE_LOOP
|
|
||||||
|
|
||||||
zap_loop:
|
|
||||||
jsr gr_copy_to_current
|
|
||||||
|
|
||||||
; draw enemy
|
|
||||||
lda ENEMY_X
|
|
||||||
sta XPOS
|
|
||||||
lda #20
|
|
||||||
sta YPOS
|
|
||||||
jsr draw_enemy
|
|
||||||
|
|
||||||
; rotate color
|
|
||||||
; color_equals(i%16);
|
|
||||||
; hlin_double(ram[DRAW_PAGE],5,30,22);
|
|
||||||
|
|
||||||
lda ANIMATE_LOOP
|
|
||||||
jsr SETCOL ; set color masked * 17
|
|
||||||
|
|
||||||
lda #30
|
|
||||||
sta V2
|
|
||||||
lda #22
|
|
||||||
ldy #5
|
|
||||||
jsr hlin_double ; Y, V2 AT A
|
|
||||||
|
|
||||||
jsr draw_hero_and_sword
|
|
||||||
|
|
||||||
jsr draw_battle_bottom
|
|
||||||
|
|
||||||
jsr page_flip
|
|
||||||
|
|
||||||
lda #75
|
|
||||||
jsr WAIT
|
|
||||||
|
|
||||||
dec ANIMATE_LOOP
|
|
||||||
bne zap_loop
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
jsr gr_copy_to_current
|
|
||||||
|
|
||||||
; grsim_put_sprite(enemies[enemy_type].sprite,enemy_x,20);
|
|
||||||
; draw enemy
|
|
||||||
lda ENEMY_X
|
|
||||||
sta XPOS
|
|
||||||
lda #20
|
|
||||||
sta YPOS
|
|
||||||
jsr draw_enemy
|
|
||||||
|
|
||||||
|
|
||||||
; draw hero
|
|
||||||
|
|
||||||
jsr draw_hero_and_sword
|
|
||||||
|
|
||||||
jsr draw_battle_bottom
|
|
||||||
|
|
||||||
jsr damage_enemy
|
|
||||||
|
|
||||||
lda #2
|
|
||||||
sta XPOS
|
|
||||||
lda #10
|
|
||||||
sta YPOS
|
|
||||||
jsr gr_put_num
|
|
||||||
|
|
||||||
jsr page_flip
|
|
||||||
|
|
||||||
; wait 2s
|
|
||||||
ldx #200
|
|
||||||
jsr long_wait
|
|
||||||
|
|
||||||
rts
|
|
||||||
|
|
||||||
;==========================
|
|
||||||
; limit break
|
|
||||||
;==========================
|
|
||||||
limit_break:
|
|
||||||
|
|
||||||
; reset limit counter
|
|
||||||
lda #0
|
|
||||||
sta HERO_LIMIT
|
|
||||||
|
|
||||||
; TODO: replace with jump table?
|
|
||||||
|
|
||||||
lda MENU_POSITION
|
|
||||||
cmp #MENU_LIMIT_DROP
|
|
||||||
beq do_limit_drop
|
|
||||||
cmp #MENU_LIMIT_SLICE
|
|
||||||
beq do_limit_slice
|
|
||||||
cmp #MENU_LIMIT_ZAP
|
|
||||||
beq do_limit_zap
|
|
||||||
|
|
||||||
do_limit_drop:
|
|
||||||
jmp limit_break_drop
|
|
||||||
do_limit_slice:
|
|
||||||
jmp limit_break_slice
|
|
||||||
do_limit_zap:
|
|
||||||
jmp limit_break_zap
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;========================
|
;========================
|
||||||
; summon metrocat
|
; summon metrocat
|
||||||
|
491
games/tfv/tfv_battle_limit.s
Normal file
491
games/tfv/tfv_battle_limit.s
Normal file
@ -0,0 +1,491 @@
|
|||||||
|
|
||||||
|
|
||||||
|
;======================
|
||||||
|
;======================
|
||||||
|
; Limit Break "Drop"
|
||||||
|
; Jump into sky, drop down and slice enemy in half
|
||||||
|
;======================
|
||||||
|
;======================
|
||||||
|
|
||||||
|
limit_break_drop:
|
||||||
|
|
||||||
|
lda #$99
|
||||||
|
sta DAMAGE_VAL
|
||||||
|
|
||||||
|
lda #34
|
||||||
|
sta HERO_X
|
||||||
|
lda #20
|
||||||
|
sta HERO_Y
|
||||||
|
|
||||||
|
drop_jump_loop:
|
||||||
|
|
||||||
|
; while(ay>0) {
|
||||||
|
|
||||||
|
jsr gr_copy_to_current
|
||||||
|
|
||||||
|
jsr draw_hero_and_sword
|
||||||
|
|
||||||
|
; draw enemy
|
||||||
|
lda ENEMY_X
|
||||||
|
sta XPOS
|
||||||
|
lda #20
|
||||||
|
sta YPOS
|
||||||
|
jsr draw_enemy
|
||||||
|
|
||||||
|
jsr draw_battle_bottom
|
||||||
|
|
||||||
|
jsr page_flip
|
||||||
|
|
||||||
|
lda #75
|
||||||
|
jsr WAIT
|
||||||
|
|
||||||
|
; must be even
|
||||||
|
dec HERO_Y
|
||||||
|
dec HERO_Y
|
||||||
|
|
||||||
|
lda HERO_Y
|
||||||
|
cmp #$f6
|
||||||
|
bne drop_jump_loop
|
||||||
|
|
||||||
|
|
||||||
|
lda #10
|
||||||
|
sta HERO_X
|
||||||
|
|
||||||
|
;===============
|
||||||
|
; Falling
|
||||||
|
|
||||||
|
drop_falling_loop:
|
||||||
|
; while(ay<=20) {
|
||||||
|
|
||||||
|
jsr gr_copy_to_current
|
||||||
|
|
||||||
|
; draw enemy
|
||||||
|
lda ENEMY_X
|
||||||
|
sta XPOS
|
||||||
|
lda #20
|
||||||
|
sta YPOS
|
||||||
|
jsr draw_enemy
|
||||||
|
|
||||||
|
jsr draw_hero_and_sword
|
||||||
|
|
||||||
|
jsr draw_battle_bottom
|
||||||
|
|
||||||
|
; draw line
|
||||||
|
; only if HERO_Y>0
|
||||||
|
lda #$dd ; yellow
|
||||||
|
sta COLOR
|
||||||
|
|
||||||
|
ldx HERO_Y
|
||||||
|
bmi done_drop_vlin
|
||||||
|
stx V2
|
||||||
|
ldx #0
|
||||||
|
|
||||||
|
lda HERO_X
|
||||||
|
sec
|
||||||
|
sbc #5
|
||||||
|
tay
|
||||||
|
|
||||||
|
jsr vlin ; X,V2 at Y vlin(0,ay,ax-5);
|
||||||
|
|
||||||
|
done_drop_vlin:
|
||||||
|
|
||||||
|
jsr page_flip
|
||||||
|
|
||||||
|
lda #100
|
||||||
|
jsr WAIT
|
||||||
|
|
||||||
|
inc HERO_Y
|
||||||
|
inc HERO_Y
|
||||||
|
lda HERO_Y
|
||||||
|
cmp #20
|
||||||
|
bne drop_falling_loop
|
||||||
|
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
sta ANIMATE_LOOP
|
||||||
|
|
||||||
|
more_drop_loop:
|
||||||
|
|
||||||
|
jsr gr_copy_to_current
|
||||||
|
|
||||||
|
; draw enemy
|
||||||
|
lda ENEMY_X
|
||||||
|
sta XPOS
|
||||||
|
lda #20
|
||||||
|
sta YPOS
|
||||||
|
jsr draw_enemy
|
||||||
|
|
||||||
|
jsr draw_hero_and_sword
|
||||||
|
|
||||||
|
jsr draw_battle_bottom
|
||||||
|
|
||||||
|
; draw cut line
|
||||||
|
lda #$CC
|
||||||
|
sta COLOR
|
||||||
|
|
||||||
|
lda HERO_Y
|
||||||
|
clc
|
||||||
|
adc ANIMATE_LOOP
|
||||||
|
sta V2
|
||||||
|
|
||||||
|
ldx HERO_Y
|
||||||
|
|
||||||
|
lda HERO_X
|
||||||
|
sec
|
||||||
|
sbc #5
|
||||||
|
tay
|
||||||
|
|
||||||
|
jsr vlin ; x,v2 at Y vlin(ay,ay+i,ax-5);
|
||||||
|
|
||||||
|
jsr page_flip
|
||||||
|
|
||||||
|
lda #75
|
||||||
|
jsr WAIT
|
||||||
|
|
||||||
|
inc ANIMATE_LOOP
|
||||||
|
lda ANIMATE_LOOP
|
||||||
|
cmp #13
|
||||||
|
bne more_drop_loop
|
||||||
|
|
||||||
|
|
||||||
|
jsr gr_copy_to_current
|
||||||
|
|
||||||
|
; draw enemy
|
||||||
|
lda ENEMY_X
|
||||||
|
sta XPOS
|
||||||
|
lda #20
|
||||||
|
sta YPOS
|
||||||
|
jsr draw_enemy
|
||||||
|
|
||||||
|
; draw hero
|
||||||
|
|
||||||
|
jsr draw_hero_and_sword
|
||||||
|
|
||||||
|
jsr draw_battle_bottom
|
||||||
|
|
||||||
|
; slice
|
||||||
|
; FIXME: should this be ground color?
|
||||||
|
|
||||||
|
lda #$cc ; lightgreen
|
||||||
|
sta COLOR
|
||||||
|
|
||||||
|
ldx #33
|
||||||
|
stx V2
|
||||||
|
ldx #20
|
||||||
|
lda #5
|
||||||
|
tay
|
||||||
|
|
||||||
|
jsr vlin ; x,v2 at Y
|
||||||
|
|
||||||
|
jsr damage_enemy
|
||||||
|
|
||||||
|
lda #2
|
||||||
|
sta XPOS
|
||||||
|
lda #10
|
||||||
|
sta YPOS
|
||||||
|
jsr gr_put_num
|
||||||
|
|
||||||
|
jsr page_flip
|
||||||
|
|
||||||
|
; wait 2s
|
||||||
|
ldx #200
|
||||||
|
jsr long_wait
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
||||||
|
;=========================
|
||||||
|
;=========================
|
||||||
|
; Limit Break "Slice"
|
||||||
|
; Run up and slap a bunch with sword
|
||||||
|
; TODO: cause damage value to bounce around more?
|
||||||
|
; TODO: run up to slice, not slide in
|
||||||
|
;=========================
|
||||||
|
;=========================
|
||||||
|
|
||||||
|
limit_break_slice:
|
||||||
|
|
||||||
|
lda #34
|
||||||
|
sta HERO_X
|
||||||
|
lda #20
|
||||||
|
sta HERO_Y
|
||||||
|
|
||||||
|
lda #5
|
||||||
|
sta DAMAGE_VAL
|
||||||
|
|
||||||
|
slice_run_loop:
|
||||||
|
|
||||||
|
jsr gr_copy_to_current
|
||||||
|
|
||||||
|
jsr draw_hero_and_sword
|
||||||
|
|
||||||
|
; draw enemy
|
||||||
|
lda ENEMY_X
|
||||||
|
sta XPOS
|
||||||
|
lda #20
|
||||||
|
sta YPOS
|
||||||
|
jsr draw_enemy
|
||||||
|
|
||||||
|
jsr draw_battle_bottom
|
||||||
|
|
||||||
|
jsr page_flip
|
||||||
|
|
||||||
|
lda #50
|
||||||
|
jsr WAIT
|
||||||
|
|
||||||
|
dec HERO_X
|
||||||
|
lda HERO_X
|
||||||
|
cmp #10
|
||||||
|
bcs slice_run_loop ; bge
|
||||||
|
|
||||||
|
;==================
|
||||||
|
; Slicing
|
||||||
|
|
||||||
|
lda #20
|
||||||
|
sta ANIMATE_LOOP
|
||||||
|
slicing_loop:
|
||||||
|
|
||||||
|
jsr gr_copy_to_current
|
||||||
|
|
||||||
|
; draw enemy
|
||||||
|
lda ENEMY_X
|
||||||
|
sta XPOS
|
||||||
|
lda #20
|
||||||
|
sta YPOS
|
||||||
|
jsr draw_enemy
|
||||||
|
|
||||||
|
lda ANIMATE_LOOP
|
||||||
|
and #1
|
||||||
|
bne slice_raised
|
||||||
|
|
||||||
|
slice_down:
|
||||||
|
jsr draw_hero_and_sword
|
||||||
|
|
||||||
|
jmp done_slice_down
|
||||||
|
|
||||||
|
slice_raised:
|
||||||
|
|
||||||
|
jsr draw_hero_victory
|
||||||
|
|
||||||
|
done_slice_down:
|
||||||
|
|
||||||
|
jsr damage_enemy
|
||||||
|
|
||||||
|
; gr_put_num(2+(i%2),10+((i%2)*2),damage);
|
||||||
|
lda ANIMATE_LOOP
|
||||||
|
and #$1
|
||||||
|
clc
|
||||||
|
adc #2
|
||||||
|
sta XPOS
|
||||||
|
|
||||||
|
lda ANIMATE_LOOP
|
||||||
|
and #$1
|
||||||
|
asl
|
||||||
|
clc
|
||||||
|
adc #10
|
||||||
|
sta YPOS
|
||||||
|
|
||||||
|
jsr gr_put_num
|
||||||
|
|
||||||
|
jsr draw_battle_bottom
|
||||||
|
|
||||||
|
jsr page_flip
|
||||||
|
|
||||||
|
lda #150
|
||||||
|
jsr WAIT
|
||||||
|
|
||||||
|
dec ANIMATE_LOOP
|
||||||
|
bne slicing_loop
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
lda #34
|
||||||
|
sta HERO_X
|
||||||
|
lda #20
|
||||||
|
sta HERO_Y
|
||||||
|
|
||||||
|
jsr gr_copy_to_current
|
||||||
|
|
||||||
|
; draw enemy
|
||||||
|
lda ENEMY_X
|
||||||
|
sta XPOS
|
||||||
|
lda #20
|
||||||
|
sta YPOS
|
||||||
|
jsr draw_enemy
|
||||||
|
|
||||||
|
; draw hero
|
||||||
|
|
||||||
|
jsr draw_hero_and_sword
|
||||||
|
|
||||||
|
jsr draw_battle_bottom
|
||||||
|
|
||||||
|
jsr page_flip
|
||||||
|
|
||||||
|
; wait 2s
|
||||||
|
ldx #20
|
||||||
|
jsr long_wait
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
||||||
|
;=========================
|
||||||
|
;========================
|
||||||
|
; Limit Break "Zap"
|
||||||
|
; Zap with a laser out of the LED sword */
|
||||||
|
;=========================
|
||||||
|
;=========================
|
||||||
|
|
||||||
|
limit_break_zap:
|
||||||
|
|
||||||
|
|
||||||
|
lda #34
|
||||||
|
sta HERO_X
|
||||||
|
lda #20
|
||||||
|
sta HERO_Y
|
||||||
|
|
||||||
|
lda #$55
|
||||||
|
sta DAMAGE_VAL
|
||||||
|
|
||||||
|
jsr gr_copy_to_current
|
||||||
|
|
||||||
|
; Draw crossed line
|
||||||
|
|
||||||
|
; color_equals(COLOR_AQUA);
|
||||||
|
lda #$ee
|
||||||
|
sta COLOR
|
||||||
|
|
||||||
|
; vlin(12,24,34);
|
||||||
|
|
||||||
|
ldx #12
|
||||||
|
lda #24
|
||||||
|
sta V2
|
||||||
|
ldy #34
|
||||||
|
|
||||||
|
jsr vlin ; X, V2 at Y
|
||||||
|
|
||||||
|
; hlin_double(ram[DRAW_PAGE],28,38,18);
|
||||||
|
|
||||||
|
lda #38
|
||||||
|
sta V2
|
||||||
|
lda #18
|
||||||
|
ldy #28
|
||||||
|
jsr hlin_double ; Y, V2 AT A
|
||||||
|
|
||||||
|
; Sword in air
|
||||||
|
jsr draw_hero_victory
|
||||||
|
|
||||||
|
; draw enemy
|
||||||
|
lda ENEMY_X
|
||||||
|
sta XPOS
|
||||||
|
lda #20
|
||||||
|
sta YPOS
|
||||||
|
jsr draw_enemy
|
||||||
|
|
||||||
|
jsr draw_battle_bottom
|
||||||
|
|
||||||
|
jsr page_flip
|
||||||
|
|
||||||
|
; pause 0.5s
|
||||||
|
ldx #50
|
||||||
|
jsr long_wait
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
lda #32
|
||||||
|
sta ANIMATE_LOOP
|
||||||
|
|
||||||
|
zap_loop:
|
||||||
|
jsr gr_copy_to_current
|
||||||
|
|
||||||
|
; draw enemy
|
||||||
|
lda ENEMY_X
|
||||||
|
sta XPOS
|
||||||
|
lda #20
|
||||||
|
sta YPOS
|
||||||
|
jsr draw_enemy
|
||||||
|
|
||||||
|
; rotate color
|
||||||
|
; color_equals(i%16);
|
||||||
|
; hlin_double(ram[DRAW_PAGE],5,30,22);
|
||||||
|
|
||||||
|
lda ANIMATE_LOOP
|
||||||
|
jsr SETCOL ; set color masked * 17
|
||||||
|
|
||||||
|
lda #30
|
||||||
|
sta V2
|
||||||
|
lda #22
|
||||||
|
ldy #5
|
||||||
|
jsr hlin_double ; Y, V2 AT A
|
||||||
|
|
||||||
|
jsr draw_hero_and_sword
|
||||||
|
|
||||||
|
jsr draw_battle_bottom
|
||||||
|
|
||||||
|
jsr page_flip
|
||||||
|
|
||||||
|
lda #75
|
||||||
|
jsr WAIT
|
||||||
|
|
||||||
|
dec ANIMATE_LOOP
|
||||||
|
bne zap_loop
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
jsr gr_copy_to_current
|
||||||
|
|
||||||
|
; grsim_put_sprite(enemies[enemy_type].sprite,enemy_x,20);
|
||||||
|
; draw enemy
|
||||||
|
lda ENEMY_X
|
||||||
|
sta XPOS
|
||||||
|
lda #20
|
||||||
|
sta YPOS
|
||||||
|
jsr draw_enemy
|
||||||
|
|
||||||
|
|
||||||
|
; draw hero
|
||||||
|
|
||||||
|
jsr draw_hero_and_sword
|
||||||
|
|
||||||
|
jsr draw_battle_bottom
|
||||||
|
|
||||||
|
jsr damage_enemy
|
||||||
|
|
||||||
|
lda #2
|
||||||
|
sta XPOS
|
||||||
|
lda #10
|
||||||
|
sta YPOS
|
||||||
|
jsr gr_put_num
|
||||||
|
|
||||||
|
jsr page_flip
|
||||||
|
|
||||||
|
; wait 2s
|
||||||
|
ldx #200
|
||||||
|
jsr long_wait
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
||||||
|
;==========================
|
||||||
|
; limit break
|
||||||
|
;==========================
|
||||||
|
limit_break:
|
||||||
|
|
||||||
|
; reset limit counter
|
||||||
|
lda #0
|
||||||
|
sta HERO_LIMIT
|
||||||
|
|
||||||
|
; TODO: replace with jump table?
|
||||||
|
|
||||||
|
lda MENU_POSITION
|
||||||
|
cmp #MENU_LIMIT_DROP
|
||||||
|
beq do_limit_drop
|
||||||
|
cmp #MENU_LIMIT_SLICE
|
||||||
|
beq do_limit_slice
|
||||||
|
cmp #MENU_LIMIT_ZAP
|
||||||
|
beq do_limit_zap
|
||||||
|
|
||||||
|
do_limit_drop:
|
||||||
|
jmp limit_break_drop
|
||||||
|
do_limit_slice:
|
||||||
|
jmp limit_break_slice
|
||||||
|
do_limit_zap:
|
||||||
|
jmp limit_break_zap
|
||||||
|
|
||||||
|
|
@ -1,49 +1,5 @@
|
|||||||
|
|
||||||
battle_enemy_string:
|
|
||||||
.byte 0,21,"KILLER CRAB",0
|
|
||||||
battle_enemy_attack_string:
|
|
||||||
.byte 1,23,"PINCHING",0
|
|
||||||
|
|
||||||
battle_name_string:
|
|
||||||
.byte 14,21,"DEATER",0
|
|
||||||
|
|
||||||
battle_menu_none:
|
|
||||||
.byte 24,20,"HP",0
|
|
||||||
.byte 27,20,"MP",0
|
|
||||||
.byte 30,20,"TIME",0
|
|
||||||
.byte 35,20,"LIMIT",0
|
|
||||||
hp_string:
|
|
||||||
.byte 23,21,"100",0
|
|
||||||
mp_string:
|
|
||||||
.byte 26,21," 50",0
|
|
||||||
|
|
||||||
|
|
||||||
battle_menu_main:
|
|
||||||
.byte 23,20,"ATTACK",0
|
|
||||||
.byte 23,21,"MAGIC",0
|
|
||||||
.byte 23,22,"SUMMON",0
|
|
||||||
.byte 31,20,"SKIP",0
|
|
||||||
.byte 31,21,"ESCAPE",0
|
|
||||||
.byte 31,22,"LIMIT",0
|
|
||||||
|
|
||||||
battle_menu_summons:
|
|
||||||
.byte 23,20,"SUMMONS:",0
|
|
||||||
.byte 24,21,"METROCAT",0 ; 0
|
|
||||||
.byte 24,22,"VORTEXCN",0 ; 1
|
|
||||||
|
|
||||||
battle_menu_magic:
|
|
||||||
.byte 23,20,"MAGIC:",0
|
|
||||||
.byte 24,21,"HEAL",0 ; 0
|
|
||||||
.byte 24,22,"ICE",0 ; 2
|
|
||||||
.byte 24,23,"BOLT",0 ; 4
|
|
||||||
.byte 31,21,"FIRE",0 ; 1
|
|
||||||
.byte 31,22,"MALAISE",0 ; 3
|
|
||||||
|
|
||||||
battle_menu_limit:
|
|
||||||
.byte 23,20,"LIMIT BREAKS:",0
|
|
||||||
.byte 24,21,"SLICE",0 ; 0
|
|
||||||
.byte 24,22,"DROP",0 ; 2
|
|
||||||
.byte 31,21,"ZAP",0 ; 1
|
|
||||||
|
|
||||||
;========================
|
;========================
|
||||||
; draw_battle_bottom
|
; draw_battle_bottom
|
||||||
@ -518,8 +474,14 @@ keypress_escape:
|
|||||||
sta MENU_STATE
|
sta MENU_STATE
|
||||||
lda #0
|
lda #0
|
||||||
sta MENU_POSITION
|
sta MENU_POSITION
|
||||||
|
|
||||||
|
jsr menu_escape_noise
|
||||||
|
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
;==================
|
||||||
|
; pressed up
|
||||||
|
|
||||||
keypress_up:
|
keypress_up:
|
||||||
lda MENU_STATE
|
lda MENU_STATE
|
||||||
cmp #MENU_SUMMON
|
cmp #MENU_SUMMON
|
||||||
@ -538,26 +500,38 @@ up_the_rest:
|
|||||||
up_dec_menu:
|
up_dec_menu:
|
||||||
dec MENU_POSITION
|
dec MENU_POSITION
|
||||||
done_keypress_up:
|
done_keypress_up:
|
||||||
|
jsr menu_move_noise
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
;=============
|
||||||
|
; pressed down
|
||||||
keypress_down:
|
keypress_down:
|
||||||
inc MENU_POSITION
|
inc MENU_POSITION
|
||||||
inc MENU_POSITION
|
inc MENU_POSITION
|
||||||
|
jsr menu_move_noise
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
;=============
|
||||||
|
; pressed right
|
||||||
keypress_right:
|
keypress_right:
|
||||||
inc MENU_POSITION
|
inc MENU_POSITION
|
||||||
|
jsr menu_move_noise
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
;=============
|
||||||
|
; pressed left
|
||||||
keypress_left:
|
keypress_left:
|
||||||
lda MENU_POSITION
|
lda MENU_POSITION
|
||||||
beq done_keypress_left
|
beq done_keypress_left
|
||||||
dec MENU_POSITION
|
dec MENU_POSITION
|
||||||
done_keypress_left:
|
done_keypress_left:
|
||||||
|
jsr menu_move_noise
|
||||||
rts
|
rts
|
||||||
|
|
||||||
keypress_action:
|
keypress_action:
|
||||||
|
|
||||||
|
jsr menu_move_noise
|
||||||
|
|
||||||
lda MENU_STATE
|
lda MENU_STATE
|
||||||
cmp #MENU_MAIN
|
cmp #MENU_MAIN
|
||||||
beq keypress_main_action
|
beq keypress_main_action
|
||||||
@ -638,3 +612,66 @@ keypress_summon_action:
|
|||||||
|
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
;=========================
|
||||||
|
; menu strings
|
||||||
|
;=========================
|
||||||
|
|
||||||
|
; current enemy name to print
|
||||||
|
|
||||||
|
battle_enemy_string:
|
||||||
|
.byte 0,21,"KILLER CRAB",0
|
||||||
|
battle_enemy_attack_string:
|
||||||
|
.byte 1,23,"PINCHING",0
|
||||||
|
|
||||||
|
; current hero name to print
|
||||||
|
|
||||||
|
battle_name_string:
|
||||||
|
.byte 14,21,"DEATER",0
|
||||||
|
|
||||||
|
; menu status strings
|
||||||
|
|
||||||
|
battle_menu_none:
|
||||||
|
.byte 24,20,"HP",0
|
||||||
|
.byte 27,20,"MP",0
|
||||||
|
.byte 30,20,"TIME",0
|
||||||
|
.byte 35,20,"LIMIT",0
|
||||||
|
hp_string:
|
||||||
|
.byte 23,21,"100",0
|
||||||
|
mp_string:
|
||||||
|
.byte 26,21," 50",0
|
||||||
|
|
||||||
|
; main menu strings
|
||||||
|
|
||||||
|
battle_menu_main:
|
||||||
|
.byte 23,20,"ATTACK",0
|
||||||
|
.byte 23,21,"MAGIC",0
|
||||||
|
.byte 23,22,"SUMMON",0
|
||||||
|
.byte 31,20,"SKIP",0
|
||||||
|
.byte 31,21,"ESCAPE",0
|
||||||
|
.byte 31,22,"LIMIT",0
|
||||||
|
|
||||||
|
; summons menu strings
|
||||||
|
|
||||||
|
battle_menu_summons:
|
||||||
|
.byte 23,20,"SUMMONS:",0
|
||||||
|
.byte 24,21,"METROCAT",0 ; 0
|
||||||
|
.byte 24,22,"VORTEXCN",0 ; 1
|
||||||
|
|
||||||
|
; magic menu strings
|
||||||
|
|
||||||
|
battle_menu_magic:
|
||||||
|
.byte 23,20,"MAGIC:",0
|
||||||
|
.byte 24,21,"HEAL",0 ; 0
|
||||||
|
.byte 24,22,"ICE",0 ; 2
|
||||||
|
.byte 24,23,"BOLT",0 ; 4
|
||||||
|
.byte 31,21,"FIRE",0 ; 1
|
||||||
|
.byte 31,22,"MALAISE",0 ; 3
|
||||||
|
|
||||||
|
; limit menu strings
|
||||||
|
|
||||||
|
battle_menu_limit:
|
||||||
|
.byte 23,20,"LIMIT BREAKS:",0
|
||||||
|
.byte 24,21,"SLICE",0 ; 0
|
||||||
|
.byte 24,22,"DROP",0 ; 2
|
||||||
|
.byte 31,21,"ZAP",0 ; 1
|
||||||
|
@ -59,6 +59,7 @@
|
|||||||
|
|
||||||
.include "tfv_battle.s"
|
.include "tfv_battle.s"
|
||||||
.include "tfv_battle_menu.s"
|
.include "tfv_battle_menu.s"
|
||||||
|
.include "tfv_battle_limit.s"
|
||||||
.include "rotate_intro.s"
|
.include "rotate_intro.s"
|
||||||
|
|
||||||
;===============================================
|
;===============================================
|
||||||
|
Loading…
Reference in New Issue
Block a user