mirror of
https://github.com/deater/dos33fsprogs.git
synced 2025-02-24 11:29:18 +00:00
peasant: make trogdor lair code closer to the other levels
This commit is contained in:
parent
86a88e0e12
commit
1ebfddbfbc
@ -393,12 +393,14 @@ TROGDOR: trogdor.o
|
||||
trogdor.o: trogdor.s zp.inc \
|
||||
graphics_trogdor/trogdor_graphics.inc sprites/trogdor_sprites.inc \
|
||||
sprites/inventory_sprites.inc \
|
||||
DIALOG_TROGDOR.LZSA dialog_trogdor.inc \
|
||||
ssi263_simple_speech.s \
|
||||
draw_box.s hgr_rectangle.s hgr_font.s hgr_input.s \
|
||||
hgr_1x28_sprite_mask.s hgr_1x5_sprite.s hgr_save_restore.s \
|
||||
wait_a_bit.s draw_peasant.s hgr_text_box.s \
|
||||
keyboard.s new_map_location.s \
|
||||
peasant_move.s score.s inventory.s
|
||||
peasant_move.s score.s inventory.s \
|
||||
trogdor_actions.s
|
||||
|
||||
ca65 -o trogdor.o trogdor.s -l trogdor.lst
|
||||
|
||||
@ -501,6 +503,7 @@ parse_input.inc: generate_common parse_input
|
||||
./generate_common -a 0xee00 -s load_custom_verb_table parse_input.lst >> parse_input.inc
|
||||
./generate_common -a 0xee00 -s partial_message_step parse_input.lst >> parse_input.inc
|
||||
./generate_common -a 0xee00 -s finish_parse_message parse_input.lst >> parse_input.inc
|
||||
./generate_common -a 0xee00 -s finish_parse_message_nowait parse_input.lst >> parse_input.inc
|
||||
./generate_common -a 0xee00 -s parse_common_talk parse_input.lst >> parse_input.inc
|
||||
./generate_common -a 0xee00 -s parse_common_haldo parse_input.lst >> parse_input.inc
|
||||
./generate_common -a 0xee00 -s parse_common_give parse_input.lst >> parse_input.inc
|
||||
@ -641,6 +644,23 @@ dialog_cliff.inc: generate_all_symbols dialog_cliff
|
||||
|
||||
####
|
||||
|
||||
DIALOG_TROGDOR.LZSA: dialog_trogdor
|
||||
$(LZSA) -r -f2 dialog_trogdor DIALOG_TROGDOR.LZSA
|
||||
|
||||
dialog_trogdor: dialog_trogdor.o
|
||||
ld65 -o dialog_trogdor dialog_trogdor.o -C ../../linker_scripts/apple2_d000.inc
|
||||
|
||||
dialog_trogdor.o: dialog_trogdor.s text/cliff.inc
|
||||
ca65 -o dialog_trogdor.o dialog_trogdor.s -l dialog_trogdor.lst
|
||||
|
||||
###
|
||||
|
||||
dialog_trogdor.inc: generate_all_symbols dialog_trogdor
|
||||
./generate_all_symbols -a 0xd000 dialog_trogdor.lst > dialog_trogdor.inc
|
||||
|
||||
|
||||
####
|
||||
|
||||
dialog_test: dialog_test.o
|
||||
ld65 -o dialog_test dialog_test.o -C ../../linker_scripts/apple2_d000.inc
|
||||
|
||||
|
2
games/peasant/dialog_trogdor.s
Normal file
2
games/peasant/dialog_trogdor.s
Normal file
@ -0,0 +1,2 @@
|
||||
.include "text/lookup.inc"
|
||||
.include "text/trogdor.inc.lookup"
|
@ -5,18 +5,21 @@ PNG2HGR = ../../../utils/hgr-utils/png2hgr
|
||||
LZSA = ~/research/lzsa/lzsa/lzsa
|
||||
B2D = ../../../utils/bmp2dhr/b2d
|
||||
|
||||
all: trogdor_graphics.inc
|
||||
all: trogdor_graphics.inc \
|
||||
priority_trogdor.inc
|
||||
|
||||
|
||||
trogdor_graphics.inc: \
|
||||
trogdor_cave.lzsa \
|
||||
trogdor_open.lzsa \
|
||||
trogdor_flame1.lzsa \
|
||||
trogdor_flame2.lzsa
|
||||
trogdor_flame2.lzsa \
|
||||
trogdor_sleep.lzsa
|
||||
echo "trogdor_cave_lzsa: .incbin \"trogdor_cave.lzsa\"" > trogdor_graphics.inc
|
||||
echo "trogdor_open_lzsa: .incbin \"trogdor_open.lzsa\"" >> trogdor_graphics.inc
|
||||
echo "trogdor_flame1_lzsa: .incbin \"trogdor_flame1.lzsa\"" >> trogdor_graphics.inc
|
||||
echo "trogdor_flame2_lzsa: .incbin \"trogdor_flame2.lzsa\"" >> trogdor_graphics.inc
|
||||
echo "trogdor_sleep_lzsa: .incbin \"trogdor_sleep.lzsa\"" >> trogdor_graphics.inc
|
||||
|
||||
###
|
||||
|
||||
@ -50,10 +53,31 @@ trogdor_flame2.lzsa: trogdor_flame2.hgr
|
||||
trogdor_flame2.hgr: trogdor_flame2.png
|
||||
$(PNG2HGR) trogdor_flame2.png > trogdor_flame2.hgr
|
||||
|
||||
|
||||
###
|
||||
|
||||
trogdor_sleep.lzsa: trogdor_sleep.hgr
|
||||
$(LZSA) -r -f2 trogdor_sleep.hgr trogdor_sleep.lzsa
|
||||
|
||||
trogdor_sleep.hgr: trogdor_sleep.png
|
||||
$(PNG2HGR) trogdor_sleep.png > trogdor_sleep.hgr
|
||||
|
||||
####
|
||||
|
||||
priority_trogdor.inc: \
|
||||
trogdor_priority.lzsa
|
||||
echo "trogdor_priority_lzsa: .incbin \"trogdor_priority.lzsa\"" > priority_trogdor.inc
|
||||
|
||||
####
|
||||
|
||||
trogdor_priority.lzsa: trogdor_priority.gr
|
||||
$(LZSA) -r -f2 trogdor_priority.gr trogdor_priority.lzsa
|
||||
|
||||
trogdor_priority.gr: trogdor_priority.png
|
||||
$(PNG2GR) trogdor_priority.png trogdor_priority.gr
|
||||
|
||||
####
|
||||
|
||||
|
||||
clean:
|
||||
rm -f *~ trogdor_graphics.inc *.lzsa *.gr *.hgr
|
||||
rm -f *~ trogdor_graphics.inc priority_trogdor.inc *.lzsa *.gr *.hgr
|
||||
|
||||
|
BIN
games/peasant/graphics_trogdor/trogdor_priority.png
Normal file
BIN
games/peasant/graphics_trogdor/trogdor_priority.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 886 B |
BIN
games/peasant/graphics_trogdor/trogdor_sleep.png
Normal file
BIN
games/peasant/graphics_trogdor/trogdor_sleep.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 16 KiB |
@ -701,9 +701,11 @@ parse_common_why:
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
finish_parse_message_nowait:
|
||||
stx OUTL
|
||||
sty OUTH
|
||||
jsr print_text_message
|
||||
rts
|
||||
|
||||
finish_parse_message:
|
||||
stx OUTL
|
||||
|
@ -117,14 +117,17 @@
|
||||
.byte "or something in honor of",13
|
||||
.byte "you somewheres.",0 ; [sic] no end quote
|
||||
|
||||
trogdor_honestly_message:
|
||||
.byte 34,"I can honestly say it'll",13
|
||||
.byte "be a pleasure and an honor",13
|
||||
.byte "to burninate you, Rather",13
|
||||
.byte "Dashing.",34,0
|
||||
|
||||
trogdor_honestly_message2:
|
||||
.byte "Aw that sure was nice of",13
|
||||
.byte "him!",0
|
||||
|
||||
trogdor_honestly_message3:
|
||||
.byte "Congratulations! You've",13
|
||||
.byte "won! No one can kill",13
|
||||
.byte "Trogdor but you came closer",13
|
||||
|
@ -8,6 +8,10 @@
|
||||
.include "zp.inc"
|
||||
|
||||
.include "qload.inc"
|
||||
.include "inventory.inc"
|
||||
.include "parse_input.inc"
|
||||
|
||||
LOCATION_BASE = LOCATION_TROGDOR_LAIR ; 23
|
||||
|
||||
trogdor:
|
||||
lda #0
|
||||
@ -15,270 +19,118 @@ trogdor:
|
||||
sta FRAME
|
||||
|
||||
jsr hgr_make_tables ; needed?
|
||||
|
||||
jsr hgr2 ; needed?
|
||||
|
||||
; decompress dialog to $D000
|
||||
|
||||
lda #<trogdor_text_lzsa
|
||||
sta getsrc_smc+1
|
||||
lda #>trogdor_text_lzsa
|
||||
sta getsrc_smc+2
|
||||
|
||||
lda #$d0
|
||||
jsr decompress_lzsa2_fast
|
||||
|
||||
; update score
|
||||
|
||||
jsr update_score
|
||||
|
||||
trogdor_cave:
|
||||
|
||||
lda #<trogdor_cave_lzsa
|
||||
sta getsrc_smc+1
|
||||
lda #>trogdor_cave_lzsa
|
||||
sta getsrc_smc+2
|
||||
;=============================
|
||||
;=============================
|
||||
; new screen location
|
||||
;=============================
|
||||
;=============================
|
||||
|
||||
lda #$40
|
||||
new_location:
|
||||
lda #0
|
||||
sta LEVEL_OVER
|
||||
|
||||
jsr decompress_lzsa2_fast
|
||||
;==========================
|
||||
; load updated verb table
|
||||
|
||||
;======================
|
||||
; draw rather dashing
|
||||
; setup default verb table
|
||||
|
||||
lda #12
|
||||
sta CURSOR_X
|
||||
lda #142
|
||||
sta CURSOR_Y
|
||||
jsr setup_default_verb_table
|
||||
|
||||
lda #<dashing0_sprite
|
||||
; local verb table
|
||||
|
||||
lda MAP_LOCATION
|
||||
sec
|
||||
sbc #LOCATION_BASE
|
||||
tax
|
||||
|
||||
lda verb_tables_low,X
|
||||
sta INL
|
||||
lda #>dashing0_sprite
|
||||
lda verb_tables_hi,X
|
||||
sta INH
|
||||
|
||||
jsr hgr_draw_sprite
|
||||
|
||||
|
||||
jsr update_top
|
||||
|
||||
jsr wait_until_keypress
|
||||
|
||||
;==============================
|
||||
;==============================
|
||||
; print honestly say message
|
||||
;==============================
|
||||
;==============================
|
||||
|
||||
lda #<trogdor_string
|
||||
sta OUTL
|
||||
lda #>trogdor_string
|
||||
sta OUTH
|
||||
jsr hgr_text_box
|
||||
|
||||
;==================================
|
||||
; text to speech, where available!
|
||||
|
||||
lda SOUND_STATUS
|
||||
and #SOUND_SSI263
|
||||
beq skip_speech
|
||||
|
||||
speech_loop:
|
||||
|
||||
; trogdor
|
||||
|
||||
lda #4 ; assume slot #4 for now
|
||||
jsr ssi263_speech_init
|
||||
|
||||
lda #<trogdor_honestly
|
||||
sta SPEECH_PTRL
|
||||
lda #>trogdor_honestly
|
||||
sta SPEECH_PTRH
|
||||
|
||||
jsr ssi263_speak
|
||||
|
||||
wait_for_speech:
|
||||
lda speech_busy
|
||||
bmi wait_for_speech
|
||||
bpl done_speech
|
||||
|
||||
skip_speech:
|
||||
jsr wait_until_keypress
|
||||
|
||||
done_speech:
|
||||
jsr hgr_partial_restore
|
||||
|
||||
|
||||
;==============================
|
||||
;==============================
|
||||
; print nice of him message
|
||||
;==============================
|
||||
;==============================
|
||||
|
||||
lda #<trogdor_string2
|
||||
sta OUTL
|
||||
lda #>trogdor_string2
|
||||
sta OUTH
|
||||
jsr hgr_text_box
|
||||
|
||||
jsr wait_until_keypress
|
||||
|
||||
jsr hgr_partial_restore
|
||||
|
||||
|
||||
; UPDATE SCORE
|
||||
|
||||
lda #$10 ; it's BCD
|
||||
jsr score_points
|
||||
|
||||
trogdor_open:
|
||||
|
||||
lda #<trogdor_open_lzsa
|
||||
sta getsrc_smc+1
|
||||
lda #>trogdor_open_lzsa
|
||||
sta getsrc_smc+2
|
||||
|
||||
lda #$40
|
||||
|
||||
jsr decompress_lzsa2_fast
|
||||
|
||||
;======================
|
||||
; draw rather dashing
|
||||
|
||||
lda #12
|
||||
sta CURSOR_X
|
||||
lda #142
|
||||
sta CURSOR_Y
|
||||
|
||||
lda #<dashing0_sprite
|
||||
sta INL
|
||||
lda #>dashing0_sprite
|
||||
sta INH
|
||||
|
||||
jsr hgr_draw_sprite
|
||||
|
||||
jsr update_top
|
||||
|
||||
; jsr wait_until_keypress
|
||||
|
||||
|
||||
trogdor_flame1:
|
||||
|
||||
lda #<trogdor_flame1_lzsa
|
||||
sta getsrc_smc+1
|
||||
lda #>trogdor_flame1_lzsa
|
||||
sta getsrc_smc+2
|
||||
|
||||
lda #$40
|
||||
|
||||
jsr decompress_lzsa2_fast
|
||||
|
||||
trogdor_flame2:
|
||||
|
||||
lda #<trogdor_flame2_lzsa
|
||||
sta getsrc_smc+1
|
||||
lda #>trogdor_flame2_lzsa
|
||||
sta getsrc_smc+2
|
||||
|
||||
lda #$20
|
||||
|
||||
jsr decompress_lzsa2_fast
|
||||
|
||||
|
||||
ldx #32
|
||||
stx BABY_COUNT
|
||||
|
||||
burninate_loop:
|
||||
bit PAGE1
|
||||
|
||||
lda #16
|
||||
sta speaker_duration
|
||||
lda #NOTE_C3
|
||||
sta speaker_frequency
|
||||
jsr speaker_beep
|
||||
|
||||
; jsr wait_until_keypress
|
||||
|
||||
bit PAGE2
|
||||
|
||||
lda #16
|
||||
sta speaker_duration
|
||||
lda #NOTE_D3
|
||||
sta speaker_frequency
|
||||
jsr speaker_beep
|
||||
|
||||
; jsr wait_until_keypress
|
||||
|
||||
dec BABY_COUNT
|
||||
bne burninate_loop
|
||||
|
||||
jsr load_custom_verb_table
|
||||
|
||||
;=====================
|
||||
;=====================
|
||||
; stop fire
|
||||
; open mount
|
||||
; charred
|
||||
; smoke
|
||||
; load bg
|
||||
|
||||
lda #<trogdor_cave_lzsa
|
||||
lda MAP_LOCATION
|
||||
sec
|
||||
sbc #LOCATION_BASE
|
||||
tax
|
||||
|
||||
lda map_backgrounds_low,X
|
||||
sta getsrc_smc+1
|
||||
lda #>trogdor_cave_lzsa
|
||||
lda map_backgrounds_hi,X
|
||||
sta getsrc_smc+2
|
||||
|
||||
lda #$40
|
||||
|
||||
jsr decompress_lzsa2_fast
|
||||
|
||||
; load priority to $400
|
||||
; indirectly as we can't trash screen holes
|
||||
|
||||
lda MAP_LOCATION
|
||||
sec
|
||||
sbc #LOCATION_BASE
|
||||
tax
|
||||
|
||||
lda map_priority_low,X
|
||||
sta getsrc_smc+1
|
||||
lda map_priority_hi,X
|
||||
sta getsrc_smc+2
|
||||
|
||||
lda #$20 ; temporarily load to $2000
|
||||
|
||||
jsr decompress_lzsa2_fast
|
||||
|
||||
; copy to $400
|
||||
|
||||
jsr gr_copy_to_page1
|
||||
|
||||
; update name/score
|
||||
|
||||
jsr update_top
|
||||
|
||||
;======================
|
||||
; draw rather dashing
|
||||
|
||||
lda #12
|
||||
sta CURSOR_X
|
||||
lda #142
|
||||
sta CURSOR_Y
|
||||
game_loop:
|
||||
; jsr move_peasant
|
||||
|
||||
lda #1
|
||||
sta BABY_COUNT
|
||||
inc FRAME
|
||||
|
||||
dashing_loop:
|
||||
jsr check_keyboard
|
||||
|
||||
ldy BABY_COUNT
|
||||
lda dashing_progress_l,Y
|
||||
sta INL
|
||||
lda dashing_progress_h,Y
|
||||
sta INH
|
||||
lda LEVEL_OVER
|
||||
bmi oops_new_location
|
||||
bne level_over
|
||||
|
||||
jsr hgr_draw_sprite
|
||||
; delay
|
||||
|
||||
lda #220
|
||||
lda #200
|
||||
jsr wait
|
||||
|
||||
ldy BABY_COUNT
|
||||
cpy #7
|
||||
bne no_boom
|
||||
|
||||
lda #64
|
||||
sta speaker_duration
|
||||
lda #NOTE_C3
|
||||
sta speaker_frequency
|
||||
jsr speaker_beep
|
||||
|
||||
no_boom:
|
||||
|
||||
inc BABY_COUNT
|
||||
lda BABY_COUNT
|
||||
cmp #9
|
||||
bne dashing_loop
|
||||
|
||||
|
||||
; collapse with boom
|
||||
|
||||
;==================
|
||||
; message
|
||||
|
||||
lda #<trogdor_string3
|
||||
sta OUTL
|
||||
lda #>trogdor_string3
|
||||
sta OUTH
|
||||
jsr hgr_text_box
|
||||
|
||||
jsr wait_until_keypress
|
||||
|
||||
game_over:
|
||||
jmp game_loop
|
||||
|
||||
|
||||
oops_new_location:
|
||||
|
||||
level_over:
|
||||
|
||||
; go to end credits
|
||||
|
||||
@ -291,19 +143,13 @@ game_over:
|
||||
|
||||
;.include "decompress_fast_v2.s"
|
||||
;.include "wait_keypress.s"
|
||||
|
||||
|
||||
|
||||
;.include "hgr_font.s"
|
||||
;.include "draw_box.s"
|
||||
;.include "hgr_rectangle.s"
|
||||
|
||||
;.include "hgr_1x5_sprite.s"
|
||||
|
||||
;.include "draw_peasant.s"
|
||||
;.include "hgr_7x28_sprite_mask.s"
|
||||
;.include "hgr_save_restore.s"
|
||||
|
||||
;.include "hgr_partial_save.s"
|
||||
;.include "hgr_input.s"
|
||||
;.include "hgr_tables.s"
|
||||
@ -315,6 +161,7 @@ game_over:
|
||||
|
||||
.include "gr_copy.s"
|
||||
|
||||
.include "keyboard.s"
|
||||
.include "wait.s"
|
||||
.include "wait_a_bit.s"
|
||||
|
||||
@ -329,30 +176,32 @@ game_over:
|
||||
|
||||
.include "graphics_trogdor/trogdor_graphics.inc"
|
||||
|
||||
.include "graphics_trogdor/priority_trogdor.inc"
|
||||
|
||||
.include "sprites/trogdor_sprites.inc"
|
||||
|
||||
trogdor_string:
|
||||
.byte 0,43,32, 0,253,82
|
||||
.byte 8,41
|
||||
.byte 34,"I can honestly say it'll",13
|
||||
.byte "be a pleasure and an honor",13
|
||||
.byte "to burninate you, Rather",13
|
||||
.byte "Dashing.",34,0
|
||||
;trogdor_string:
|
||||
; .byte 0,43,32, 0,253,82
|
||||
; .byte 8,41
|
||||
; .byte 34,"I can honestly say it'll",13
|
||||
; .byte "be a pleasure and an honor",13
|
||||
; .byte "to burninate you, Rather",13
|
||||
; .byte "Dashing.",34,0
|
||||
|
||||
trogdor_string2:
|
||||
.byte 0,43,32, 0,253,66
|
||||
.byte 8,41
|
||||
.byte "Aw that sure was nice of",13
|
||||
.byte "him!",0
|
||||
;trogdor_string2:
|
||||
; .byte 0,43,32, 0,253,66
|
||||
; .byte 8,41
|
||||
; .byte "Aw that sure was nice of",13
|
||||
; .byte "him!",0
|
||||
|
||||
trogdor_string3:
|
||||
.byte 0,43,32, 0,253,90
|
||||
.byte 8,41
|
||||
.byte "Congratulations! You've",13
|
||||
.byte "won! No one can kill",13
|
||||
.byte "Trogdor but you came closer",13
|
||||
.byte "than anybody ever! Way to",13
|
||||
.byte "go!",0
|
||||
;trogdor_string3:
|
||||
; .byte 0,43,32, 0,253,90
|
||||
; .byte 8,41
|
||||
; .byte "Congratulations! You've",13
|
||||
; .byte "won! No one can kill",13
|
||||
; .byte "Trogdor but you came closer",13
|
||||
; .byte "than anybody ever! Way to",13
|
||||
; .byte "go!",0
|
||||
|
||||
|
||||
update_top:
|
||||
@ -372,14 +221,26 @@ update_top:
|
||||
rts
|
||||
|
||||
|
||||
dashing_progress_l:
|
||||
.byte <dashing0_sprite,<dashing1_sprite,<dashing2_sprite
|
||||
.byte <dashing3_sprite,<dashing4_sprite,<dashing5_sprite
|
||||
.byte <dashing6_sprite,<dashing7_sprite,<dashing8_sprite
|
||||
map_backgrounds_low:
|
||||
.byte <trogdor_sleep_lzsa
|
||||
|
||||
dashing_progress_h:
|
||||
.byte >dashing0_sprite,>dashing1_sprite,>dashing2_sprite
|
||||
.byte >dashing3_sprite,>dashing4_sprite,>dashing5_sprite
|
||||
.byte >dashing6_sprite,>dashing7_sprite,>dashing8_sprite
|
||||
map_backgrounds_hi:
|
||||
.byte >trogdor_sleep_lzsa
|
||||
|
||||
map_priority_low:
|
||||
.byte <trogdor_priority_lzsa
|
||||
|
||||
map_priority_hi:
|
||||
.byte >trogdor_priority_lzsa
|
||||
|
||||
verb_tables_low:
|
||||
.byte <trogdor_inner_verb_table
|
||||
|
||||
verb_tables_hi:
|
||||
.byte >trogdor_inner_verb_table
|
||||
|
||||
|
||||
trogdor_text_lzsa:
|
||||
.incbin "DIALOG_TROGDOR.LZSA"
|
||||
|
||||
.include "trogdor_actions.s"
|
||||
|
277
games/peasant/trogdor_actions.s
Normal file
277
games/peasant/trogdor_actions.s
Normal file
@ -0,0 +1,277 @@
|
||||
;=======================
|
||||
;=======================
|
||||
;=======================
|
||||
; trogdor inner
|
||||
;=======================
|
||||
;=======================
|
||||
;=======================
|
||||
|
||||
trogdor_inner_verb_table:
|
||||
; .byte VERB_LOOK
|
||||
; .word cliff_base_look-1
|
||||
.byte 0
|
||||
|
||||
|
||||
|
||||
trogdor_cave:
|
||||
|
||||
lda #<trogdor_cave_lzsa
|
||||
sta getsrc_smc+1
|
||||
lda #>trogdor_cave_lzsa
|
||||
sta getsrc_smc+2
|
||||
|
||||
lda #$40
|
||||
|
||||
jsr decompress_lzsa2_fast
|
||||
|
||||
;======================
|
||||
; draw rather dashing
|
||||
|
||||
lda #12
|
||||
sta CURSOR_X
|
||||
lda #142
|
||||
sta CURSOR_Y
|
||||
|
||||
lda #<dashing0_sprite
|
||||
sta INL
|
||||
lda #>dashing0_sprite
|
||||
sta INH
|
||||
|
||||
jsr hgr_draw_sprite
|
||||
|
||||
|
||||
jsr update_top
|
||||
|
||||
jsr wait_until_keypress
|
||||
|
||||
;==============================
|
||||
;==============================
|
||||
; print honestly say message
|
||||
;==============================
|
||||
;==============================
|
||||
|
||||
ldx #<trogdor_honestly_message
|
||||
ldy #>trogdor_honestly_message
|
||||
jsr finish_parse_message_nowait
|
||||
|
||||
;==================================
|
||||
; text to speech, where available!
|
||||
|
||||
lda SOUND_STATUS
|
||||
and #SOUND_SSI263
|
||||
beq skip_speech
|
||||
|
||||
speech_loop:
|
||||
|
||||
; trogdor
|
||||
|
||||
lda #4 ; assume slot #4 for now
|
||||
jsr ssi263_speech_init
|
||||
|
||||
lda #<trogdor_honestly
|
||||
sta SPEECH_PTRL
|
||||
lda #>trogdor_honestly
|
||||
sta SPEECH_PTRH
|
||||
|
||||
jsr ssi263_speak
|
||||
|
||||
wait_for_speech:
|
||||
lda speech_busy
|
||||
bmi wait_for_speech
|
||||
bpl done_speech
|
||||
|
||||
skip_speech:
|
||||
jsr wait_until_keypress
|
||||
|
||||
done_speech:
|
||||
jsr hgr_partial_restore
|
||||
|
||||
|
||||
;==============================
|
||||
;==============================
|
||||
; print nice of him message
|
||||
;==============================
|
||||
;==============================
|
||||
|
||||
ldx #<trogdor_honestly_message2
|
||||
ldy #>trogdor_honestly_message2
|
||||
jsr finish_parse_message
|
||||
|
||||
|
||||
; UPDATE SCORE
|
||||
|
||||
lda #$10 ; it's BCD
|
||||
jsr score_points
|
||||
|
||||
trogdor_open:
|
||||
|
||||
lda #<trogdor_open_lzsa
|
||||
sta getsrc_smc+1
|
||||
lda #>trogdor_open_lzsa
|
||||
sta getsrc_smc+2
|
||||
|
||||
lda #$40
|
||||
|
||||
jsr decompress_lzsa2_fast
|
||||
|
||||
;======================
|
||||
; draw rather dashing
|
||||
|
||||
lda #12
|
||||
sta CURSOR_X
|
||||
lda #142
|
||||
sta CURSOR_Y
|
||||
|
||||
lda #<dashing0_sprite
|
||||
sta INL
|
||||
lda #>dashing0_sprite
|
||||
sta INH
|
||||
|
||||
jsr hgr_draw_sprite
|
||||
|
||||
jsr update_top
|
||||
|
||||
; jsr wait_until_keypress
|
||||
|
||||
|
||||
trogdor_flame1:
|
||||
|
||||
lda #<trogdor_flame1_lzsa
|
||||
sta getsrc_smc+1
|
||||
lda #>trogdor_flame1_lzsa
|
||||
sta getsrc_smc+2
|
||||
|
||||
lda #$40
|
||||
|
||||
jsr decompress_lzsa2_fast
|
||||
|
||||
trogdor_flame2:
|
||||
|
||||
lda #<trogdor_flame2_lzsa
|
||||
sta getsrc_smc+1
|
||||
lda #>trogdor_flame2_lzsa
|
||||
sta getsrc_smc+2
|
||||
|
||||
lda #$20
|
||||
|
||||
jsr decompress_lzsa2_fast
|
||||
|
||||
|
||||
ldx #32
|
||||
stx BABY_COUNT
|
||||
|
||||
burninate_loop:
|
||||
bit PAGE1
|
||||
|
||||
lda #16
|
||||
sta speaker_duration
|
||||
lda #NOTE_C3
|
||||
sta speaker_frequency
|
||||
jsr speaker_beep
|
||||
|
||||
; jsr wait_until_keypress
|
||||
|
||||
bit PAGE2
|
||||
|
||||
lda #16
|
||||
sta speaker_duration
|
||||
lda #NOTE_D3
|
||||
sta speaker_frequency
|
||||
jsr speaker_beep
|
||||
|
||||
; jsr wait_until_keypress
|
||||
|
||||
dec BABY_COUNT
|
||||
bne burninate_loop
|
||||
|
||||
|
||||
;=====================
|
||||
;=====================
|
||||
; stop fire
|
||||
; open mouth
|
||||
; charred
|
||||
; smoke
|
||||
|
||||
lda #<trogdor_cave_lzsa
|
||||
sta getsrc_smc+1
|
||||
lda #>trogdor_cave_lzsa
|
||||
sta getsrc_smc+2
|
||||
|
||||
lda #$40
|
||||
|
||||
jsr decompress_lzsa2_fast
|
||||
|
||||
jsr update_top
|
||||
|
||||
;======================
|
||||
; draw rather dashing
|
||||
|
||||
lda #12
|
||||
sta CURSOR_X
|
||||
lda #142
|
||||
sta CURSOR_Y
|
||||
|
||||
lda #1
|
||||
sta BABY_COUNT
|
||||
|
||||
dashing_loop:
|
||||
|
||||
ldy BABY_COUNT
|
||||
lda dashing_progress_l,Y
|
||||
sta INL
|
||||
lda dashing_progress_h,Y
|
||||
sta INH
|
||||
|
||||
jsr hgr_draw_sprite
|
||||
|
||||
lda #220
|
||||
jsr wait
|
||||
|
||||
ldy BABY_COUNT
|
||||
cpy #7
|
||||
bne no_boom
|
||||
|
||||
lda #64
|
||||
sta speaker_duration
|
||||
lda #NOTE_C3
|
||||
sta speaker_frequency
|
||||
jsr speaker_beep
|
||||
|
||||
no_boom:
|
||||
|
||||
inc BABY_COUNT
|
||||
lda BABY_COUNT
|
||||
cmp #9
|
||||
bne dashing_loop
|
||||
|
||||
|
||||
; collapse with boom
|
||||
|
||||
;==================
|
||||
; message
|
||||
|
||||
ldx #<trogdor_honestly_message3
|
||||
ldy #>trogdor_honestly_message3
|
||||
jsr finish_parse_message
|
||||
|
||||
game_over:
|
||||
|
||||
; go to end credits
|
||||
|
||||
lda #LOAD_ENDING
|
||||
sta WHICH_LOAD
|
||||
|
||||
rts
|
||||
|
||||
dashing_progress_l:
|
||||
.byte <dashing0_sprite,<dashing1_sprite,<dashing2_sprite
|
||||
.byte <dashing3_sprite,<dashing4_sprite,<dashing5_sprite
|
||||
.byte <dashing6_sprite,<dashing7_sprite,<dashing8_sprite
|
||||
|
||||
dashing_progress_h:
|
||||
.byte >dashing0_sprite,>dashing1_sprite,>dashing2_sprite
|
||||
.byte >dashing3_sprite,>dashing4_sprite,>dashing5_sprite
|
||||
.byte >dashing6_sprite,>dashing7_sprite,>dashing8_sprite
|
||||
|
||||
|
||||
.include "dialog_trogdor.inc"
|
Loading…
x
Reference in New Issue
Block a user