mirror of
https://github.com/deater/dos33fsprogs.git
synced 2025-02-05 21:34:30 +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_overworld.s tfv_drawmap.s \
|
||||
tfv_battle.s tfv_battle_menu.s tfv_battle_limit.s tfv_battle_summons.s \
|
||||
tfv_battle_magic.s \
|
||||
tfv_battle_boss.s \
|
||||
help_overworld.s rotate_intro.s \
|
||||
sound_effects.s speaker_tone.s \
|
||||
|
@ -875,229 +875,6 @@ victory_draw_done:
|
||||
|
||||
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
|
||||
|
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_menu.s"
|
||||
.include "tfv_battle_magic.s"
|
||||
.include "tfv_battle_limit.s"
|
||||
.include "tfv_battle_summons.s"
|
||||
.include "tfv_battle_boss.s"
|
||||
|
Loading…
x
Reference in New Issue
Block a user