mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-09-28 17:55:04 +00:00
tfv: split off magic code
This commit is contained in:
parent
614778e999
commit
21ead6d010
@ -77,6 +77,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_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_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 \
|
||||||
|
@ -875,229 +875,6 @@ victory_draw_done:
|
|||||||
|
|
||||||
rts
|
rts
|
||||||
|
|
||||||
;===========================
|
|
||||||
; magic attack
|
|
||||||
;===========================
|
|
||||||
|
|
||||||
magic_attack:
|
|
||||||
|
|
||||||
lda #34
|
|
||||||
sta HERO_X
|
|
||||||
|
|
||||||
lda #$15
|
|
||||||
sta DAMAGE_VAL
|
|
||||||
|
|
||||||
lda MENU_POSITION
|
|
||||||
cmp #MENU_MAGIC_HEAL
|
|
||||||
beq do_magic_heal
|
|
||||||
cmp #MENU_MAGIC_FIRE
|
|
||||||
beq do_magic_fire
|
|
||||||
cmp #MENU_MAGIC_ICE
|
|
||||||
beq do_magic_ice
|
|
||||||
cmp #MENU_MAGIC_BOLT
|
|
||||||
beq do_magic_bolt
|
|
||||||
cmp #MENU_MAGIC_MALAISE
|
|
||||||
beq do_magic_malaise
|
|
||||||
|
|
||||||
do_magic_heal: ; MENU_MAGIC_HEAL
|
|
||||||
lda #33
|
|
||||||
sta MAGIC_X
|
|
||||||
lda #20
|
|
||||||
sta MAGIC_Y
|
|
||||||
|
|
||||||
jmp done_magic_setup
|
|
||||||
|
|
||||||
do_magic_fire: ; MENU_MAGIC_FIRE
|
|
||||||
lda #2
|
|
||||||
sta MAGIC_X
|
|
||||||
lda #20
|
|
||||||
sta MAGIC_Y
|
|
||||||
|
|
||||||
jmp done_magic_setup
|
|
||||||
|
|
||||||
do_magic_ice: ; MENU_MAGIC_ICE
|
|
||||||
lda #2
|
|
||||||
sta MAGIC_X
|
|
||||||
lda #20
|
|
||||||
sta MAGIC_Y
|
|
||||||
|
|
||||||
jmp done_magic_setup
|
|
||||||
|
|
||||||
do_magic_bolt: ; MENU_MAGIC_BOLT
|
|
||||||
lda #2
|
|
||||||
sta MAGIC_X
|
|
||||||
lda #20
|
|
||||||
sta MAGIC_Y
|
|
||||||
|
|
||||||
jmp done_magic_setup
|
|
||||||
|
|
||||||
do_magic_malaise: ; MENU_MAGIC_MALAISE
|
|
||||||
lda #2
|
|
||||||
sta MAGIC_X
|
|
||||||
lda #20
|
|
||||||
sta MAGIC_Y
|
|
||||||
|
|
||||||
jmp done_magic_setup
|
|
||||||
|
|
||||||
done_magic_setup:
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;=========================================
|
|
||||||
; cast the magic
|
|
||||||
; FIXME: damage based on weakness of enemy
|
|
||||||
; FIXME: disallow if not enough MP
|
|
||||||
|
|
||||||
cast_the_magic:
|
|
||||||
|
|
||||||
lda MENU_POSITION
|
|
||||||
sta MAGIC_TYPE
|
|
||||||
|
|
||||||
lda #10
|
|
||||||
sta ANIMATE_LOOP
|
|
||||||
|
|
||||||
cast_magic_loop:
|
|
||||||
jsr gr_copy_to_current
|
|
||||||
|
|
||||||
; sprite with hands up
|
|
||||||
|
|
||||||
lda HERO_X
|
|
||||||
sta XPOS
|
|
||||||
lda #20
|
|
||||||
sta YPOS
|
|
||||||
|
|
||||||
lda #<tfv_victory_sprite
|
|
||||||
sta INL
|
|
||||||
lda #>tfv_victory_sprite
|
|
||||||
sta INH
|
|
||||||
|
|
||||||
jsr put_sprite_crop
|
|
||||||
|
|
||||||
; draw enemy
|
|
||||||
lda ENEMY_X
|
|
||||||
sta XPOS
|
|
||||||
lda #20
|
|
||||||
sta YPOS
|
|
||||||
jsr draw_enemy
|
|
||||||
|
|
||||||
|
|
||||||
jsr draw_battle_bottom
|
|
||||||
|
|
||||||
jsr page_flip
|
|
||||||
|
|
||||||
; delay a bit
|
|
||||||
lda #50
|
|
||||||
jsr WAIT
|
|
||||||
|
|
||||||
dec ANIMATE_LOOP
|
|
||||||
bne cast_magic_loop
|
|
||||||
|
|
||||||
|
|
||||||
;========================
|
|
||||||
; Actually do the magic
|
|
||||||
|
|
||||||
lda #20
|
|
||||||
sta ANIMATE_LOOP
|
|
||||||
magic_happens_loop:
|
|
||||||
|
|
||||||
jsr gr_copy_to_current
|
|
||||||
|
|
||||||
; draw enemy
|
|
||||||
lda ENEMY_X
|
|
||||||
sta XPOS
|
|
||||||
lda #20
|
|
||||||
sta YPOS
|
|
||||||
jsr draw_enemy
|
|
||||||
|
|
||||||
; draw hero
|
|
||||||
lda #34
|
|
||||||
sta HERO_X
|
|
||||||
lda #20
|
|
||||||
sta HERO_Y
|
|
||||||
jsr draw_hero_and_sword
|
|
||||||
|
|
||||||
lda ANIMATE_LOOP
|
|
||||||
and #$1
|
|
||||||
clc
|
|
||||||
adc MAGIC_X
|
|
||||||
sta XPOS
|
|
||||||
|
|
||||||
lda MAGIC_Y
|
|
||||||
sta YPOS
|
|
||||||
|
|
||||||
lda MAGIC_TYPE
|
|
||||||
asl
|
|
||||||
tay
|
|
||||||
lda magic_sprites,Y
|
|
||||||
sta INL
|
|
||||||
lda magic_sprites+1,Y
|
|
||||||
sta INH
|
|
||||||
|
|
||||||
jsr put_sprite_crop
|
|
||||||
|
|
||||||
jsr draw_battle_bottom
|
|
||||||
|
|
||||||
jsr page_flip
|
|
||||||
|
|
||||||
; delay a bit
|
|
||||||
lda #50
|
|
||||||
jsr WAIT
|
|
||||||
|
|
||||||
dec ANIMATE_LOOP
|
|
||||||
bne magic_happens_loop
|
|
||||||
|
|
||||||
|
|
||||||
;=============================
|
|
||||||
|
|
||||||
|
|
||||||
; decrease magic points
|
|
||||||
; mp-=5;
|
|
||||||
|
|
||||||
jsr gr_copy_to_current
|
|
||||||
|
|
||||||
|
|
||||||
; draw hero
|
|
||||||
lda #34
|
|
||||||
sta HERO_X
|
|
||||||
lda #20
|
|
||||||
sta HERO_Y
|
|
||||||
jsr draw_hero_and_sword
|
|
||||||
|
|
||||||
; draw enemy
|
|
||||||
lda ENEMY_X
|
|
||||||
sta XPOS
|
|
||||||
lda #20
|
|
||||||
sta YPOS
|
|
||||||
jsr draw_enemy
|
|
||||||
|
|
||||||
lda MAGIC_TYPE
|
|
||||||
cmp #MENU_MAGIC_HEAL
|
|
||||||
beq was_heal_magic
|
|
||||||
|
|
||||||
jsr damage_enemy
|
|
||||||
lda #2
|
|
||||||
sta XPOS
|
|
||||||
lda #10
|
|
||||||
sta YPOS
|
|
||||||
jsr gr_put_num
|
|
||||||
jmp done_magic_damage
|
|
||||||
|
|
||||||
was_heal_magic:
|
|
||||||
jsr heal_self
|
|
||||||
done_magic_damage:
|
|
||||||
|
|
||||||
jsr draw_battle_bottom
|
|
||||||
|
|
||||||
jsr page_flip
|
|
||||||
|
|
||||||
; wait 2s
|
|
||||||
ldx #200
|
|
||||||
jsr long_wait
|
|
||||||
|
|
||||||
rts
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;=============================
|
;=============================
|
||||||
; done attack
|
; done attack
|
||||||
|
224
games/tfv/tfv_battle_magic.s
Normal file
224
games/tfv/tfv_battle_magic.s
Normal file
@ -0,0 +1,224 @@
|
|||||||
|
|
||||||
|
|
||||||
|
;===========================
|
||||||
|
; magic attack
|
||||||
|
;===========================
|
||||||
|
|
||||||
|
magic_attack:
|
||||||
|
|
||||||
|
lda #34
|
||||||
|
sta HERO_X
|
||||||
|
|
||||||
|
lda #$15
|
||||||
|
sta DAMAGE_VAL
|
||||||
|
|
||||||
|
lda MENU_POSITION
|
||||||
|
cmp #MENU_MAGIC_HEAL
|
||||||
|
beq do_magic_heal
|
||||||
|
cmp #MENU_MAGIC_FIRE
|
||||||
|
beq do_magic_fire
|
||||||
|
cmp #MENU_MAGIC_ICE
|
||||||
|
beq do_magic_ice
|
||||||
|
cmp #MENU_MAGIC_BOLT
|
||||||
|
beq do_magic_bolt
|
||||||
|
cmp #MENU_MAGIC_MALAISE
|
||||||
|
beq do_magic_malaise
|
||||||
|
|
||||||
|
do_magic_heal: ; MENU_MAGIC_HEAL
|
||||||
|
lda #33
|
||||||
|
sta MAGIC_X
|
||||||
|
lda #20
|
||||||
|
sta MAGIC_Y
|
||||||
|
|
||||||
|
jmp done_magic_setup
|
||||||
|
|
||||||
|
do_magic_fire: ; MENU_MAGIC_FIRE
|
||||||
|
lda #2
|
||||||
|
sta MAGIC_X
|
||||||
|
lda #20
|
||||||
|
sta MAGIC_Y
|
||||||
|
|
||||||
|
jmp done_magic_setup
|
||||||
|
|
||||||
|
do_magic_ice: ; MENU_MAGIC_ICE
|
||||||
|
lda #2
|
||||||
|
sta MAGIC_X
|
||||||
|
lda #20
|
||||||
|
sta MAGIC_Y
|
||||||
|
|
||||||
|
jmp done_magic_setup
|
||||||
|
|
||||||
|
do_magic_bolt: ; MENU_MAGIC_BOLT
|
||||||
|
lda #2
|
||||||
|
sta MAGIC_X
|
||||||
|
lda #20
|
||||||
|
sta MAGIC_Y
|
||||||
|
|
||||||
|
jmp done_magic_setup
|
||||||
|
|
||||||
|
do_magic_malaise: ; MENU_MAGIC_MALAISE
|
||||||
|
lda #2
|
||||||
|
sta MAGIC_X
|
||||||
|
lda #20
|
||||||
|
sta MAGIC_Y
|
||||||
|
|
||||||
|
jmp done_magic_setup
|
||||||
|
|
||||||
|
done_magic_setup:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
;=========================================
|
||||||
|
; cast the magic
|
||||||
|
; FIXME: damage based on weakness of enemy
|
||||||
|
; FIXME: disallow if not enough MP
|
||||||
|
|
||||||
|
cast_the_magic:
|
||||||
|
|
||||||
|
lda MENU_POSITION
|
||||||
|
sta MAGIC_TYPE
|
||||||
|
|
||||||
|
lda #10
|
||||||
|
sta ANIMATE_LOOP
|
||||||
|
|
||||||
|
cast_magic_loop:
|
||||||
|
jsr gr_copy_to_current
|
||||||
|
|
||||||
|
; sprite with hands up
|
||||||
|
|
||||||
|
lda HERO_X
|
||||||
|
sta XPOS
|
||||||
|
lda #20
|
||||||
|
sta YPOS
|
||||||
|
|
||||||
|
lda #<tfv_victory_sprite
|
||||||
|
sta INL
|
||||||
|
lda #>tfv_victory_sprite
|
||||||
|
sta INH
|
||||||
|
|
||||||
|
jsr put_sprite_crop
|
||||||
|
|
||||||
|
; draw enemy
|
||||||
|
lda ENEMY_X
|
||||||
|
sta XPOS
|
||||||
|
lda #20
|
||||||
|
sta YPOS
|
||||||
|
jsr draw_enemy
|
||||||
|
|
||||||
|
|
||||||
|
jsr draw_battle_bottom
|
||||||
|
|
||||||
|
jsr page_flip
|
||||||
|
|
||||||
|
; delay a bit
|
||||||
|
lda #50
|
||||||
|
jsr WAIT
|
||||||
|
|
||||||
|
dec ANIMATE_LOOP
|
||||||
|
bne cast_magic_loop
|
||||||
|
|
||||||
|
|
||||||
|
;========================
|
||||||
|
; Actually do the magic
|
||||||
|
|
||||||
|
lda #20
|
||||||
|
sta ANIMATE_LOOP
|
||||||
|
magic_happens_loop:
|
||||||
|
|
||||||
|
jsr gr_copy_to_current
|
||||||
|
|
||||||
|
; draw enemy
|
||||||
|
lda ENEMY_X
|
||||||
|
sta XPOS
|
||||||
|
lda #20
|
||||||
|
sta YPOS
|
||||||
|
jsr draw_enemy
|
||||||
|
|
||||||
|
; draw hero
|
||||||
|
lda #34
|
||||||
|
sta HERO_X
|
||||||
|
lda #20
|
||||||
|
sta HERO_Y
|
||||||
|
jsr draw_hero_and_sword
|
||||||
|
|
||||||
|
lda ANIMATE_LOOP
|
||||||
|
and #$1
|
||||||
|
clc
|
||||||
|
adc MAGIC_X
|
||||||
|
sta XPOS
|
||||||
|
|
||||||
|
lda MAGIC_Y
|
||||||
|
sta YPOS
|
||||||
|
|
||||||
|
lda MAGIC_TYPE
|
||||||
|
asl
|
||||||
|
tay
|
||||||
|
lda magic_sprites,Y
|
||||||
|
sta INL
|
||||||
|
lda magic_sprites+1,Y
|
||||||
|
sta INH
|
||||||
|
|
||||||
|
jsr put_sprite_crop
|
||||||
|
|
||||||
|
jsr draw_battle_bottom
|
||||||
|
|
||||||
|
jsr page_flip
|
||||||
|
|
||||||
|
; delay a bit
|
||||||
|
lda #50
|
||||||
|
jsr WAIT
|
||||||
|
|
||||||
|
dec ANIMATE_LOOP
|
||||||
|
bne magic_happens_loop
|
||||||
|
|
||||||
|
|
||||||
|
;=============================
|
||||||
|
|
||||||
|
|
||||||
|
; decrease magic points
|
||||||
|
; mp-=5;
|
||||||
|
|
||||||
|
jsr gr_copy_to_current
|
||||||
|
|
||||||
|
|
||||||
|
; draw hero
|
||||||
|
lda #34
|
||||||
|
sta HERO_X
|
||||||
|
lda #20
|
||||||
|
sta HERO_Y
|
||||||
|
jsr draw_hero_and_sword
|
||||||
|
|
||||||
|
; draw enemy
|
||||||
|
lda ENEMY_X
|
||||||
|
sta XPOS
|
||||||
|
lda #20
|
||||||
|
sta YPOS
|
||||||
|
jsr draw_enemy
|
||||||
|
|
||||||
|
lda MAGIC_TYPE
|
||||||
|
cmp #MENU_MAGIC_HEAL
|
||||||
|
beq was_heal_magic
|
||||||
|
|
||||||
|
jsr damage_enemy
|
||||||
|
lda #2
|
||||||
|
sta XPOS
|
||||||
|
lda #10
|
||||||
|
sta YPOS
|
||||||
|
jsr gr_put_num
|
||||||
|
jmp done_magic_damage
|
||||||
|
|
||||||
|
was_heal_magic:
|
||||||
|
jsr heal_self
|
||||||
|
done_magic_damage:
|
||||||
|
|
||||||
|
jsr draw_battle_bottom
|
||||||
|
|
||||||
|
jsr page_flip
|
||||||
|
|
||||||
|
; wait 2s
|
||||||
|
ldx #200
|
||||||
|
jsr long_wait
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
||||||
|
|
@ -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_magic.s"
|
||||||
.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"
|
||||||
|
Loading…
Reference in New Issue
Block a user