peasant: hook up the new "next level" code

this was in preparation to getting the going-inside-buildings code
working

that still doesn't work for unknown reasons
This commit is contained in:
Vince Weaver 2021-10-27 15:20:58 -04:00
parent 99558c2ac9
commit b4b5650fd6
21 changed files with 954 additions and 215 deletions

View File

@ -31,11 +31,13 @@ peasant.dsk: QBOOT QLOAD VID_LOGO TITLE INTRO \
$(DOS33_RAW) peasant.dsk 25 0 PEASANT3 0 0 $(DOS33_RAW) peasant.dsk 25 0 PEASANT3 0 0
$(DOS33_RAW) peasant.dsk 30 0 PEASANT4 0 0 $(DOS33_RAW) peasant.dsk 30 0 PEASANT4 0 0
peasant_side2.dsk: WBOOT2 COPY_CHECK TROGDOR ENDING CLIFF GAME_OVER peasant_side2.dsk: WBOOT2 COPY_CHECK TROGDOR ENDING CLIFF GAME_OVER INSIDE
cp $(EMPTY_DISK)/empty.dsk peasant_side2.dsk cp $(EMPTY_DISK)/empty.dsk peasant_side2.dsk
$(DOS33_RAW) peasant_side2.dsk 0 0 WBOOT2 0 1 $(DOS33_RAW) peasant_side2.dsk 0 0 WBOOT2 0 1
$(DOS33_RAW) peasant_side2.dsk 1 0 COPY_CHECK 0 0 $(DOS33_RAW) peasant_side2.dsk 1 0 COPY_CHECK 0 0
$(DOS33_RAW) peasant_side2.dsk 3 0 GAME_OVER 0 0 $(DOS33_RAW) peasant_side2.dsk 3 0 GAME_OVER 0 0
# $(DOS33_RAW) peasant_side2.dsk 4 0 MAP 0 0
$(DOS33_RAW) peasant_side2.dsk 5 0 INSIDE 0 0
$(DOS33_RAW) peasant_side2.dsk 19 0 TROGDOR 0 0 $(DOS33_RAW) peasant_side2.dsk 19 0 TROGDOR 0 0
$(DOS33_RAW) peasant_side2.dsk 24 0 ENDING 0 0 $(DOS33_RAW) peasant_side2.dsk 24 0 ENDING 0 0
$(DOS33_RAW) peasant_side2.dsk 29 0 CLIFF 0 0 $(DOS33_RAW) peasant_side2.dsk 29 0 CLIFF 0 0
@ -376,6 +378,24 @@ copy_check.o: copy_check.s graphics_copy/copy_graphics.inc \
copy_check.s copy_check.s
ca65 -o copy_check.o copy_check.s -l copy_check.lst ca65 -o copy_check.o copy_check.s -l copy_check.lst
###
INSIDE: inside.o
ld65 -o INSIDE inside.o -C $(LINKER_SCRIPTS)/apple2_6000.inc
inside.o: inside.s zp.inc inventory.inc \
parse_input.inc \
inside_actions.s DIALOG_INSIDE.LZSA dialog_inside.inc \
graphics_inside/graphics_inside.inc sprites/peasant_sprites.inc \
graphics_inside/priority_inside.inc \
sprites/inventory_sprites.inc \
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 loadsave_menu.s
ca65 -o inside.o inside.s -l inside.lst
### ###
@ -405,7 +425,7 @@ save3.o: save3.s
parse_input.inc: generate_common parse_input parse_input.inc: generate_common parse_input
./generate_common -a 0xee00 -s parse_input parse_input.lst > parse_input.inc ./generate_common -a 0xee00 -s parse_input parse_input.lst > parse_input.inc
./generate_common -a 0xee00 -s setup_verb_table parse_input.lst >> parse_input.inc ./generate_common -a 0xee00 -s setup_default_verb_table parse_input.lst >> parse_input.inc
./generate_common -a 0xee00 -s load_custom_verb_table parse_input.lst >> parse_input.inc ./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 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 parse_input.lst >> parse_input.inc
@ -505,6 +525,11 @@ dialog_inside: dialog_inside.o
dialog_inside.o: dialog_inside.s text/inside.inc dialog_inside.o: dialog_inside.s text/inside.inc
ca65 -o dialog_inside.o dialog_inside.s -l dialog_inside.lst ca65 -o dialog_inside.o dialog_inside.s -l dialog_inside.lst
###
dialog_inside.inc: generate_all_symbols dialog_inside
./generate_all_symbols -a 0xd000 dialog_inside.lst > dialog_inside.inc
#### ####
DIALOG_INN.LZSA: dialog_inn DIALOG_INN.LZSA: dialog_inn

View File

@ -2,8 +2,6 @@
; Cliff Base ; Cliff Base
WHICH_PEASANTRY=0
; by Vince `deater` Weaver vince@deater.net ; by Vince `deater` Weaver vince@deater.net
.include "hardware.inc" .include "hardware.inc"
@ -15,7 +13,7 @@ WHICH_PEASANTRY=0
cliff_base: cliff_base:
lda #0 lda #0
sta GAME_OVER sta LEVEL_OVER
sta FRAME sta FRAME
jsr hgr_make_tables jsr hgr_make_tables
@ -40,7 +38,7 @@ cliff_base:
new_location: new_location:
lda #0 lda #0
sta GAME_OVER sta LEVEL_OVER
;===================== ;=====================
; load bg ; load bg
@ -115,7 +113,7 @@ game_loop:
jsr check_keyboard jsr check_keyboard
lda GAME_OVER lda LEVEL_OVER
bmi oops_new_location bmi oops_new_location
bne game_over bne game_over

View File

@ -12,7 +12,7 @@
game_over: game_over:
lda #0 lda #0
sta GAME_OVER sta LEVEL_OVER
sta FRAME sta FRAME
jsr hgr_make_tables jsr hgr_make_tables

View File

@ -5,16 +5,16 @@ PNG2HGR = ../../../utils/hgr-utils/png2hgr
LZSA = ~/research/lzsa/lzsa/lzsa LZSA = ~/research/lzsa/lzsa/lzsa
B2D = ../../../utils/bmp2dhr/b2d B2D = ../../../utils/bmp2dhr/b2d
all: inside_graphics.inc \ all: graphics_inside.inc \
priority_inside.inc priority_inside.inc
### ###
inside_graphics.inc: \ graphics_inside.inc: \
hidden_glen.lzsa inside_cottage.lzsa inside_nn.lzsa hidden_glen.lzsa inside_cottage.lzsa inside_nn.lzsa
echo "hidden_glen_lzsa: .incbin \"hidden_glen.lzsa\"" > inside_graphics.inc echo "hidden_glen_lzsa: .incbin \"hidden_glen.lzsa\"" > graphics_inside.inc
echo "inside_cottage_lzsa: .incbin \"inside_cottage.lzsa\"" >> inside_graphics.inc echo "inside_cottage_lzsa: .incbin \"inside_cottage.lzsa\"" >> graphics_inside.inc
echo "inside_nn_lzsa: .incbin \"inside_nn.lzsa\"" >> inside_graphics.inc echo "inside_nn_lzsa: .incbin \"inside_nn.lzsa\"" >> graphics_inside.inc
### ###
@ -73,5 +73,5 @@ hidden_glen_priority.gr: hidden_glen_priority.png
clean: clean:
rm -f *~ inside_graphics.inc priority_inside.inc *.lzsa *.gr *.hgr rm -f *~ graphics_inside.inc priority_inside.inc *.lzsa *.gr *.hgr

285
games/peasant/inside.s Normal file
View File

@ -0,0 +1,285 @@
; Peasant's Quest
; Inside Graphics
; inside lady cottage, inside ned cottage, hidden glen
; by Vince `deater` Weaver vince@deater.net
; with apologies to everyone
.include "hardware.inc"
.include "zp.inc"
.include "qload.inc"
.include "inventory.inc"
.include "parse_input.inc"
LOCATION_BASE = LOCATION_HIDDEN_GLEN ; index starts here (24)
inside:
lda #0
sta LEVEL_OVER
sta FRAME
jsr hgr_make_tables ; necessary?
jsr hgr2 ; necessary?
; decompress dialog to $D000
lda #<inside_text_lzsa
sta getsrc_smc+1
lda #>inside_text_lzsa
sta getsrc_smc+2
lda #$D0
jsr decompress_lzsa2_fast
; update map location
jsr update_map_location
; update score
jsr update_score
;=============================
;=============================
; new screen location
;=============================
;=============================
new_location:
lda #0
sta LEVEL_OVER
;==========================
; load updated verb table
; we are INSIDE so locations 24...26 map to 0...2
lda MAP_LOCATION
sec
sbc #LOCATION_BASE
tax
lda verb_tables_low,X
sta INL
lda verb_tables_hi,X
sta INH
jsr load_custom_verb_table
;=====================
; load bg
; we are INSIDE so locations 24...26 map to 0...2
lda MAP_LOCATION
sec
sbc #LOCATION_BASE
tax
lda map_backgrounds_low,X
sta getsrc_smc+1
; sta last_bg_l
lda map_backgrounds_hi,X
sta getsrc_smc+2
; sta last_bg_h
lda #$40
jsr decompress_lzsa2_fast
; we are INSIDE so locations 24...26 map to 0...2
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
jsr decompress_lzsa2_fast
jsr gr_copy_to_page1
; put peasant text
lda #<peasant_text
sta OUTL
lda #>peasant_text
sta OUTH
jsr hgr_put_string
; put score
jsr print_score
;====================
; save background
lda PEASANT_X
sta CURSOR_X
lda PEASANT_Y
sta CURSOR_Y
;=======================
; draw initial peasant
jsr save_bg_1x28
jsr draw_peasant
game_loop:
jsr move_peasant
inc FRAME
jsr check_keyboard
lda LEVEL_OVER
bmi oops_new_location
bne level_over
; delay
lda #200
jsr wait
jmp game_loop
oops_new_location:
jmp new_location
;========================
; exit level
;========================
level_over:
lda MAP_LOCATION
cmp #LOCATION_OUTSIDE_INN
bne really_level_over
; be sure we're in range
lda PEASANT_X
cmp #6
bcc really_level_over ; fine
cmp #18
bcc to_left
cmp #30
bcc to_right
really_level_over:
rts
to_right:
lda #31
sta PEASANT_X
rts
to_left:
lda #5
sta PEASANT_X
rts
.include "draw_peasant.s"
.include "gr_copy.s"
.include "new_map_location.s"
.include "peasant_move.s"
.include "score.s"
;.include "parse_input.s"
.include "keyboard.s"
.include "wait.s"
.include "wait_a_bit.s"
.include "graphics_inside/graphics_inside.inc"
.include "graphics_inside/priority_inside.inc"
.include "version.inc"
;.include "inventory.s"
; moved to QLOAD
;.include "decompress_fast_v2.s"
;.include "hgr_font.s"
;.include "draw_box.s"
;.include "hgr_rectangle.s"
;.include "hgr_1x28_sprite_mask.s"
;.include "hgr_1x5_sprite.s"
;.include "hgr_partial_save.s"
;.include "hgr_input.s"
;.include "hgr_tables.s"
;.include "hgr_text_box.s"
;.include "clear_bottom.s"
;.include "hgr_hgr2.s"
;.include "wait_keypress.s"
;.include "loadsave_menu.s"
map_backgrounds_low:
.byte <hidden_glen_lzsa ; 24 -- hidden glen
.byte <inside_cottage_lzsa ; 25 -- inside lady cottage
.byte <inside_nn_lzsa ; 26 -- inside ned cottage
map_backgrounds_hi:
.byte >hidden_glen_lzsa ; 24 -- hidden glen
.byte >inside_cottage_lzsa ; 25 -- inside lady cottage
.byte >inside_nn_lzsa ; 26 -- inside ned cottage
map_priority_low:
.byte <hidden_glen_priority_lzsa ; 24 -- hidden glen
.byte <inside_cottage_priority_lzsa ; 25 -- inside lady cottage
.byte <inside_nn_priority_lzsa ; 26 -- inside ned cottage
map_priority_hi:
.byte >hidden_glen_priority_lzsa ; 24 -- hidden glen
.byte >inside_cottage_priority_lzsa ; 25 -- inside lady cottage
.byte >inside_nn_priority_lzsa ; 26 -- inside ned cottage
verb_tables_low:
.byte <hidden_glen_verb_table ; 24 -- hidden glen
.byte <inside_cottage_verb_table ; 25 -- inside lady cottage
.byte <inside_nn_verb_table ; 26 -- inside ned cottage
verb_tables_hi:
.byte >hidden_glen_verb_table ; 24 -- hidden glen
.byte >inside_cottage_verb_table ; 25 -- inside lady cottage
.byte >inside_nn_verb_table ; 26 -- inside ned cottage
inside_text_lzsa:
.incbin "DIALOG_INSIDE.LZSA"
.include "inside_actions.s"

View File

@ -0,0 +1,440 @@
.include "tokens.inc"
;=======================
;=======================
;=======================
; Hidden Glen
;=======================
;=======================
;=======================
hidden_glen_verb_table:
.if 0
.byte VERB_ENTER
.word hay_bale_enter-1
.byte VERB_GET
.word hay_bale_get-1
.byte VERB_JUMP
.word hay_bale_jump-1
.byte VERB_HIDE
.word hay_bale_hide-1
.byte VERB_HUG
.word hay_bale_hug-1
.byte VERB_LOOK
.word hay_bale_look-1
.byte VERB_STEAL
.word hay_bale_steal-1
.byte VERB_TAKE
.word hay_bale_take-1
.endif
.byte 0
.if 0
;================
; get
;================
hay_bale_get:
hay_bale_steal:
hay_bale_take:
lda CURRENT_NOUN
cmp #NOUN_HAY
beq hay_get_hay
; else "probably wish" message
jmp parse_common_get
hay_get_hay:
ldx #<hay_get_hay_message
ldy #>hay_get_hay_message
jmp finish_parse_message
;=================
; look
;=================
hay_bale_look:
lda CURRENT_NOUN
cmp #NOUN_HAY
beq hay_look_at_hay
cmp #NOUN_IN_HAY
beq hay_look_in_hay
cmp #NOUN_TREE
beq hay_look_at_tree
cmp #NOUN_FENCE
beq hay_look_at_fence
cmp #NOUN_NONE
beq hay_look_at
jmp parse_common_look
hay_look_at:
ldx #<hay_look_message
ldy #>hay_look_message
jmp finish_parse_message
hay_look_at_hay:
ldx #<hay_look_at_hay_message
ldy #>hay_look_at_hay_message
jmp finish_parse_message
hay_look_in_hay:
ldx #<hay_look_in_hay_message
ldy #>hay_look_in_hay_message
jmp finish_parse_message
hay_look_at_tree:
ldx #<hay_look_at_tree_message
ldy #>hay_look_at_tree_message
jmp finish_parse_message
hay_look_at_fence:
ldx #<hay_look_at_fence_message
ldy #>hay_look_at_fence_message
jmp finish_parse_message
;===================
; enter hay
;===================
hay_bale_enter:
hay_bale_jump:
hay_bale_hide:
lda CURRENT_NOUN
cmp #NOUN_HAY
beq enter_hay
jmp parse_common_unknown
enter_hay:
ldx #<hay_enter_hay_clean_message
ldy #>hay_enter_hay_clean_message
jmp finish_parse_message
;===================
; hug tree
;===================
hay_bale_hug:
lda CURRENT_NOUN
cmp #NOUN_TREE
beq hug_tree
jmp parse_common_unknown
hug_tree:
ldx #<hay_hug_tree_message
ldy #>hay_hug_tree_message
jmp finish_parse_message
.endif
;=======================
;=======================
;=======================
; Inside Lady Cottage
;=======================
;=======================
;=======================
inside_cottage_verb_table:
.if 0
.byte VERB_GET
.word puddle_get-1
.byte VERB_TAKE
.word puddle_take-1
.byte VERB_STEAL
.word puddle_steal-1
.byte VERB_LOOK
.word puddle_look-1
.endif
.byte 0
.if 0
;================
; get
;================
puddle_get:
puddle_steal:
puddle_take:
lda CURRENT_NOUN
cmp #NOUN_ROCK
beq puddle_get_rock
cmp #NOUN_STONE
beq puddle_get_rock
; else "probably wish" message
jmp parse_common_get
puddle_get_rock:
ldx #<puddle_get_rock_message
ldy #>puddle_get_rock_message
jmp finish_parse_message
;=================
; look
;=================
puddle_look:
lda CURRENT_NOUN
cmp #NOUN_ROCK
beq puddle_look_at_rock
cmp #NOUN_STONE
beq puddle_look_at_rock
cmp #NOUN_MUD
beq puddle_look_at_mud
cmp #NOUN_PUDDLE
beq puddle_look_at_mud
cmp #NOUN_NONE
beq puddle_look_at
jmp parse_common_look
puddle_look_at:
ldx #<puddle_look_at_message
ldy #>puddle_look_at_message
jmp finish_parse_message
puddle_look_at_mud:
ldx #<puddle_look_mud_message
ldy #>puddle_look_mud_message
jmp finish_parse_message
puddle_look_at_rock:
ldx #<puddle_get_rock_message
ldy #>puddle_get_rock_message
jmp finish_parse_message
.endif
;=======================
;=======================
;=======================
; Inside Ned Cottage
;=======================
;=======================
;=======================
inside_nn_verb_table:
.if 0
.byte VERB_ASK
.word archery_ask-1
.byte VERB_GET
.word archery_get-1
.byte VERB_GIVE
.word archery_give-1
.byte VERB_HALDO
.word archery_haldo-1
.byte VERB_LOOK
.word archery_look-1
.byte VERB_PLAY
.word archery_play-1
.byte VERB_STEAL
.word archery_steal-1
.byte VERB_TALK
.word archery_talk-1
.byte VERB_TAKE
.word archery_take-1
.endif
.byte 0
.if 0
;================
; ask
;================
archery_ask:
; TODO
jmp parse_common_ask
;================
; get
;================
archery_get:
archery_steal:
archery_take:
lda CURRENT_NOUN
cmp #NOUN_TARGET
beq archery_get_target
cmp #NOUN_ARROW
beq archery_get_arrow
; else "probably wish" message
jmp parse_common_get
archery_get_target:
ldx #<archery_get_target_message
ldy #>archery_get_target_message
jmp finish_parse_message
archery_get_arrow:
ldx #<archery_get_arrow_message
ldy #>archery_get_arrow_message
jmp finish_parse_message
;================
; give
;================
archery_give:
; TODO
jmp parse_common_give
;================
; haldo
;================
archery_haldo:
; TODO
jmp parse_common_haldo
;=================
; look
;=================
archery_look:
lda CURRENT_NOUN
cmp #NOUN_DESK
beq archery_look_at_desk
cmp #NOUN_TARGET
beq archery_look_at_target
cmp #NOUN_ARCHER
beq archery_look_at_archer
cmp #NOUN_NONE
beq archery_look_at
jmp parse_common_look
archery_look_at:
ldx #<archery_look_message
ldy #>archery_look_message
jmp finish_parse_message
archery_look_at_archer:
ldx #<archery_look_at_archer_message
ldy #>archery_look_at_archer_message
jmp finish_parse_message
archery_look_at_target:
ldx #<archery_look_at_target_message
ldy #>archery_look_at_target_message
jmp finish_parse_message
archery_look_at_desk:
ldx #<archery_look_at_desk_message
ldy #>archery_look_at_desk_message
jmp finish_parse_message
;================
; play
;================
archery_play:
lda CURRENT_NOUN
cmp #NOUN_GAME
beq archery_play_game
jmp parse_common_unknown
archery_play_game:
ldx #<archery_play_game_message
ldy #>archery_play_game_message
jmp finish_parse_message
;================
; talk
;================
archery_talk:
; only talk if close
lda PEASANT_X
cmp #23
bcc archery_talk_too_far
; check Y too?
; probably less than $7D?
; actual game will walk you in if close
; will it work from beind?
lda CURRENT_NOUN
cmp #NOUN_MAN
beq archery_talk_mendelev
cmp #NOUN_GUY
beq archery_talk_mendelev
cmp #NOUN_DUDE
beq archery_talk_mendelev
cmp #NOUN_MENDELEV
beq archery_talk_mendelev
cmp #NOUN_ARCHER
beq archery_talk_mendelev
jmp parse_common_unknown
archery_talk_mendelev:
ldx #<archery_talk_mendelev_message
ldy #>archery_talk_mendelev_message
jsr partial_message_step
ldx #<archery_talk_mendelev2_message
ldy #>archery_talk_mendelev2_message
jsr partial_message_step
ldx #<archery_talk_mendelev3_message
ldy #>archery_talk_mendelev3_message
jsr finish_parse_message
; add 1 point to score if don't have mask or trinket
; add 2 points otherwise
lda INVENTORY_2
and #INV2_TRINKET
bne archer_2_points
lda INVENTORY_1
and #INV1_MONSTER_MASK
bne archer_2_points
archer_1_point:
lda #1
bne archer_score_points ; bra
archer_2_points:
lda #2
archer_score_points:
jsr score_points
rts
archery_talk_too_far:
ldx #<archery_talk_far_message
ldy #>archery_talk_far_message
jmp finish_parse_message
.endif
.include "dialog_inside.inc"

View File

@ -487,8 +487,8 @@ load_loop:
cpx #(END_OF_SAVE-WHICH_LOAD+1) cpx #(END_OF_SAVE-WHICH_LOAD+1)
bne load_loop bne load_loop
lda #$1 ; 1 means exit to loader? lda #NEW_FROM_DISK ; load whole level from disk
sta GAME_OVER sta LEVEL_OVER
done_load: done_load:
@ -565,8 +565,8 @@ copy_loop:
jsr driveoff jsr driveoff
done_save: done_save:
lda #$FF ; reload level as we scrawled on $2000 lda #NEW_LOCATION ; reload level as we scrawled on $2000
sta GAME_OVER sta LEVEL_OVER
rts rts
@ -758,15 +758,16 @@ lname_kerrek_2: .byte "Kerrek Tracks 2",0 ; C4 LOCATION_KERREK_2
lname_outside_lady: .byte "Outside Baby Lady Cottage",0 ; D4 LOCATION_OUTSIDE_LADY lname_outside_lady: .byte "Outside Baby Lady Cottage",0 ; D4 LOCATION_OUTSIDE_LADY
lname_burn_tree: .byte "Burninated Trees",0 ; E4 LOCATION_BURN_TREES lname_burn_tree: .byte "Burninated Trees",0 ; E4 LOCATION_BURN_TREES
lname_hidden_glen: .byte "Hidden Glen",0 ; LOCATION_HIDDEN_GLEN
lname_cliff_base: .byte "Cliff Base",0 ; LOCATION_CLIFF_BASE lname_cliff_base: .byte "Cliff Base",0 ; LOCATION_CLIFF_BASE
lname_cliffland_heights:.byte "Cliffland Heights",0 ; LOCATION_CLIFF_HEIGHTS lname_cliffland_heights:.byte "Cliffland Heights",0 ; LOCATION_CLIFF_HEIGHTS
lname_trogdor_outer: .byte "Trogdor's Outer Sanctum",0 ; LOCATION_TROGDOR_OUTER lname_trogdor_outer: .byte "Trogdor's Outer Sanctum",0 ; LOCATION_TROGDOR_OUTER
lname_trogdor_posh: .byte "Trogdor's Posh Lair",0 ; LOCATION_TROGDOR_LAIR lname_trogdor_posh: .byte "Trogdor's Posh Lair",0 ; LOCATION_TROGDOR_LAIR
lname_hidden_glen: .byte "Hidden Glen",0 ; LOCATION_HIDDEN_GLEN
lname_inside_lady: .byte "Inside Baby Lady Cottage",0 ; LOCATION_INSIDE_LADY lname_inside_lady: .byte "Inside Baby Lady Cottage",0 ; LOCATION_INSIDE_LADY
lname_inside_inn: .byte "Inside Giant Inn",0 ; LOCATION_INSIDE_INN
lname_inside_nn: .byte "Inside Mysterious Cottage",0 ; LOCATION_INSIDE_NN lname_inside_nn: .byte "Inside Mysterious Cottage",0 ; LOCATION_INSIDE_NN
lname_inside_inn: .byte "Inside Giant Inn",0 ; LOCATION_INSIDE_INN
lname_empty: .byte "Empty",0 lname_empty: .byte "Empty",0
location_names_end: location_names_end:

View File

@ -84,10 +84,13 @@ start_new_game:
; map location ; map location
lda #4 lda #LOCATION_MOUNTAIN_PASS
sta MAP_X sta MAP_LOCATION
lda #1
sta MAP_Y ; lda #4
; sta MAP_X
; lda #1
; sta MAP_Y
; inventory is only t-shirt ; inventory is only t-shirt

View File

@ -1,89 +1,75 @@
;===================== ;=====================
; new map location ; update map location
;===================== ;=====================
; new location is in A
new_map_location:
lda #NEW_LOCATION
sta GAME_OVER
; fall through
update_map_location: update_map_location:
;================== ; get disk location of old location
; setup verb table ; we do this because the disk load code will over-write WHICH_LOAD
jsr setup_verb_table ldx MAP_LOCATION
ldy location_to_file,X
sty WHICH_LOAD
; save new location
;==================
; update map
; on main map, it's (MAP_Y*5)+MAP_X
; put in map
map_wrap_x:
; wrap X (0..4)
lda MAP_X
bmi map_x_went_negative
cmp #5
bcc map_wrap_y ; blt
lda #NEW_FROM_DISK
sta GAME_OVER
lda #LOAD_CLIFF
sta WHICH_LOAD
rts
map_x_went_negative:
lda #0 ; don't wrap anymore
update_map_x:
sta MAP_X
map_wrap_y:
; wrap Y (0..3)
lda MAP_Y
and #$3
sta MAP_Y
clc
lda MAP_Y
asl
asl
adc MAP_Y
adc MAP_X
sta MAP_LOCATION sta MAP_LOCATION
; see if we need to change disk ;==============================
; check if need to switch disk
lda MAP_Y tax
cmp #WHICH_PEASANTRY lda location_to_file,X
cmp WHICH_LOAD
beq same_disk
new_disk:
sta WHICH_LOAD ; point to new file
lda #NEW_FROM_DISK ; indicate we need to load
sta LEVEL_OVER
rts
beq were_good same_disk:
lda #NEW_LOCATION
must_load_from_disk: sta LEVEL_OVER
lda #NEW_FROM_DISK
sta GAME_OVER
lda MAP_Y
clc
adc #LOAD_PEASANT1
sta WHICH_LOAD
were_good:
rts rts
;=========================
; Move Map NORTH
;=========================
move_map_north:
lda MAP_LOCATION
tax
lda exits_north,X
jmp update_map_location
;=========================
; Move Map SOUTH
;=========================
move_map_south:
lda MAP_LOCATION
tax
lda exits_south,X
jmp update_map_location
;=========================
; Move Map EAST
;=========================
move_map_east:
lda MAP_LOCATION
tax
lda exits_east,X
jmp update_map_location
;=========================
; Move Map WEST
;=========================
move_map_west:
lda MAP_LOCATION
tax
lda exits_west,X
jmp update_map_location
exits_north: exits_north:
.byte LOCATION_OUTSIDE_NN ; LOCATION_POOR_GARY = 0 .byte LOCATION_OUTSIDE_NN ; LOCATION_POOR_GARY = 0
@ -110,14 +96,15 @@ exits_north:
.byte LOCATION_LAKE_EAST ; LOCATION_OUTSIDE_LADY = 18 .byte LOCATION_LAKE_EAST ; LOCATION_OUTSIDE_LADY = 18
.byte LOCATION_OUTSIDE_INN ; LOCATION_BURN_TREES = 19 .byte LOCATION_OUTSIDE_INN ; LOCATION_BURN_TREES = 19
.byte LOCATION_EMPTY ; LOCATION_HIDDEN_GLEN = 20 .byte LOCATION_CLIFF_HEIGHTS ; LOCATION_CLIFF_BASE = 20
.byte LOCATION_CLIFF_HEIGHTS ; LOCATION_CLIFF_BASE = 21 .byte LOCATION_EMPTY ; LOCATION_CLIFF_HEIGHTS= 21
.byte LOCATION_EMPTY ; LOCATION_CLIFF_HEIGHTS= 22 .byte LOCATION_EMPTY ; LOCATION_TROGDOR_OUTER= 22
.byte LOCATION_EMPTY ; LOCATION_TROGDOR_OUTER= 23 .byte LOCATION_EMPTY ; LOCATION_TROGDOR_LAIR = 23
.byte LOCATION_EMPTY ; LOCATION_TROGDOR_LAIR = 24
.byte LOCATION_EMPTY ; LOCATION_HIDDEN_GLEN = 24
.byte LOCATION_EMPTY ; LOCATION_INSIDE_LADY = 25 .byte LOCATION_EMPTY ; LOCATION_INSIDE_LADY = 25
.byte LOCATION_EMPTY ; LOCATION_INSIDE_INN = 26 .byte LOCATION_EMPTY ; LOCATION_INSIDE_NN = 26
.byte LOCATION_EMPTY ; LOCATION_INSIDE_NN = 27 .byte LOCATION_EMPTY ; LOCATION_INSIDE_INN = 27
.byte LOCATION_EMPTY ; LOCATION_EMPTY = 28 .byte LOCATION_EMPTY ; LOCATION_EMPTY = 28
exits_south: exits_south:
@ -145,14 +132,15 @@ exits_south:
.byte LOCATION_YELLOW_TREE ; LOCATION_OUTSIDE_LADY = 18 .byte LOCATION_YELLOW_TREE ; LOCATION_OUTSIDE_LADY = 18
.byte LOCATION_WATERFALL ; LOCATION_BURN_TREES = 19 .byte LOCATION_WATERFALL ; LOCATION_BURN_TREES = 19
.byte LOCATION_EMPTY ; LOCATION_HIDDEN_GLEN = 20 .byte LOCATION_EMPTY ; LOCATION_CLIFF_BASE = 20
.byte LOCATION_EMPTY ; LOCATION_CLIFF_BASE = 21 .byte LOCATION_EMPTY ; LOCATION_CLIFF_HEIGHTS= 21
.byte LOCATION_EMPTY ; LOCATION_CLIFF_HEIGHTS= 22 .byte LOCATION_EMPTY ; LOCATION_TROGDOR_OUTER= 22
.byte LOCATION_EMPTY ; LOCATION_TROGDOR_OUTER= 23 .byte LOCATION_EMPTY ; LOCATION_TROGDOR_LAIR = 23
.byte LOCATION_EMPTY ; LOCATION_TROGDOR_LAIR = 24
.byte LOCATION_EMPTY ; LOCATION_HIDDEN_GLEN = 24
.byte LOCATION_OUTSIDE_LADY ; LOCATION_INSIDE_LADY = 25 .byte LOCATION_OUTSIDE_LADY ; LOCATION_INSIDE_LADY = 25
.byte LOCATION_OUTSIDE_INN ; LOCATION_INSIDE_INN = 26 .byte LOCATION_OUTSIDE_NN ; LOCATION_INSIDE_NN = 26
.byte LOCATION_OUTSIDE_NN ; LOCATION_INSIDE_NN = 27 .byte LOCATION_OUTSIDE_INN ; LOCATION_INSIDE_INN = 27
.byte LOCATION_EMPTY ; LOCATION_EMPTY = 28 .byte LOCATION_EMPTY ; LOCATION_EMPTY = 28
exits_east: exits_east:
@ -180,14 +168,15 @@ exits_east:
.byte LOCATION_BURN_TREES ; LOCATION_OUTSIDE_LADY = 18 .byte LOCATION_BURN_TREES ; LOCATION_OUTSIDE_LADY = 18
.byte LOCATION_EMPTY ; LOCATION_BURN_TREES = 19 .byte LOCATION_EMPTY ; LOCATION_BURN_TREES = 19
.byte LOCATION_POOR_GARY ; LOCATION_HIDDEN_GLEN = 20 .byte LOCATION_EMPTY ; LOCATION_CLIFF_BASE = 20
.byte LOCATION_EMPTY ; LOCATION_CLIFF_BASE = 21 .byte LOCATION_TROGDOR_OUTER ; LOCATION_CLIFF_HEIGHTS= 21
.byte LOCATION_TROGDOR_OUTER ; LOCATION_CLIFF_HEIGHTS= 22 .byte LOCATION_TROGDOR_LAIR ; LOCATION_TROGDOR_OUTER= 22
.byte LOCATION_TROGDOR_LAIR ; LOCATION_TROGDOR_OUTER= 23 .byte LOCATION_EMPTY ; LOCATION_TROGDOR_LAIR = 23
.byte LOCATION_EMPTY ; LOCATION_TROGDOR_LAIR = 24
.byte LOCATION_POOR_GARY ; LOCATION_HIDDEN_GLEN = 24
.byte LOCATION_EMPTY ; LOCATION_INSIDE_LADY = 25 .byte LOCATION_EMPTY ; LOCATION_INSIDE_LADY = 25
.byte LOCATION_EMPTY ; LOCATION_INSIDE_INN = 26 .byte LOCATION_EMPTY ; LOCATION_INSIDE_NN = 26
.byte LOCATION_EMPTY ; LOCATION_INSIDE_NN = 27 .byte LOCATION_EMPTY ; LOCATION_INSIDE_INN = 27
.byte LOCATION_EMPTY ; LOCATION_EMPTY = 28 .byte LOCATION_EMPTY ; LOCATION_EMPTY = 28
exits_west: exits_west:
@ -215,14 +204,15 @@ exits_west:
.byte LOCATION_KERREK_2 ; LOCATION_OUTSIDE_LADY = 18 .byte LOCATION_KERREK_2 ; LOCATION_OUTSIDE_LADY = 18
.byte LOCATION_OUTSIDE_LADY ; LOCATION_BURN_TREES = 19 .byte LOCATION_OUTSIDE_LADY ; LOCATION_BURN_TREES = 19
.byte LOCATION_EMPTY ; LOCATION_HIDDEN_GLEN = 20 .byte LOCATION_EMPTY ; LOCATION_CLIFF_BASE = 20
.byte LOCATION_EMPTY ; LOCATION_CLIFF_BASE = 21 .byte LOCATION_EMPTY ; LOCATION_CLIFF_HEIGHTS= 21
.byte LOCATION_EMPTY ; LOCATION_CLIFF_HEIGHTS= 22 .byte LOCATION_EMPTY ; LOCATION_TROGDOR_OUTER= 22
.byte LOCATION_EMPTY ; LOCATION_TROGDOR_OUTER= 23 .byte LOCATION_EMPTY ; LOCATION_TROGDOR_LAIR = 23
.byte LOCATION_EMPTY ; LOCATION_TROGDOR_LAIR = 24
.byte LOCATION_EMPTY ; LOCATION_HIDDEN_GLEN = 24
.byte LOCATION_EMPTY ; LOCATION_INSIDE_LADY = 25 .byte LOCATION_EMPTY ; LOCATION_INSIDE_LADY = 25
.byte LOCATION_EMPTY ; LOCATION_INSIDE_INN = 26 .byte LOCATION_EMPTY ; LOCATION_INSIDE_NN = 26
.byte LOCATION_EMPTY ; LOCATION_INSIDE_NN = 27 .byte LOCATION_EMPTY ; LOCATION_INSIDE_INN = 27
.byte LOCATION_EMPTY ; LOCATION_EMPTY = 28 .byte LOCATION_EMPTY ; LOCATION_EMPTY = 28
location_to_file: location_to_file:
@ -250,14 +240,14 @@ location_to_file:
.byte LOAD_PEASANT4 ; LOCATION_OUTSIDE_LADY = 18 .byte LOAD_PEASANT4 ; LOCATION_OUTSIDE_LADY = 18
.byte LOAD_PEASANT4 ; LOCATION_BURN_TREES = 19 .byte LOAD_PEASANT4 ; LOCATION_BURN_TREES = 19
.byte LOAD_INSIDE ; LOCATION_HIDDEN_GLEN = 20 .byte LOAD_CLIFF ; LOCATION_CLIFF_BASE = 20
.byte LOAD_CLIFF ; LOCATION_CLIFF_BASE = 21 .byte LOAD_CLIFF ; LOCATION_CLIFF_HEIGHTS= 21
.byte LOAD_CLIFF ; LOCATION_CLIFF_HEIGHTS= 22 .byte LOAD_CLIFF ; LOCATION_TROGDOR_OUTER= 22
.byte LOAD_CLIFF ; LOCATION_TROGDOR_OUTER= 23 .byte LOAD_TROGDOR ; LOCATION_TROGDOR_LAIR = 23
.byte LOAD_TROGDOR ; LOCATION_TROGDOR_LAIR = 24
.byte LOAD_INSIDE ; LOCATION_HIDDEN_GLEN = 24
.byte LOAD_INSIDE ; LOCATION_INSIDE_LADY = 25 .byte LOAD_INSIDE ; LOCATION_INSIDE_LADY = 25
.byte LOAD_INN ; LOCATION_INSIDE_INN = 26 .byte LOAD_INSIDE ; LOCATION_INSIDE_NN = 26
.byte LOAD_INSIDE ; LOCATION_INSIDE_NN = 27 .byte LOAD_INN ; LOCATION_INSIDE_INN = 27
.byte LOCATION_EMPTY ; LOCATION_EMPTY = 28 .byte LOCATION_EMPTY ; LOCATION_EMPTY = 28

View File

@ -127,7 +127,7 @@ parse_common_copy:
; want copy ; want copy
lda #NEW_FROM_DISK lda #NEW_FROM_DISK
sta GAME_OVER sta LEVEL_OVER
lda #LOAD_COPY_CHECK lda #LOAD_COPY_CHECK
sta WHICH_LOAD sta WHICH_LOAD
@ -161,8 +161,8 @@ parse_common_die:
lda #LOAD_GAME_OVER lda #LOAD_GAME_OVER
sta WHICH_LOAD sta WHICH_LOAD
lda #1 lda #NEW_FROM_DISK
sta GAME_OVER sta LEVEL_OVER
ldx #<die_message ldx #<die_message
ldy #>die_message ldy #>die_message
@ -1033,10 +1033,10 @@ verb_table = $BF00
;========================= ;=========================
;========================= ;=========================
; setup verb table ; setup default verb table
;========================= ;=========================
;========================= ;=========================
setup_verb_table: setup_default_verb_table:
;=========================== ;===========================
; first make it all unknown ; first make it all unknown
@ -1060,11 +1060,8 @@ unknown_loop:
lda #>common_verb_table lda #>common_verb_table
sta INH sta INH
; jsr load_custom_verb_table ; fallthrough
; rts
; Fallthrough
;========================= ;=========================
;========================= ;=========================

View File

@ -4,8 +4,6 @@
; Gary, Kerrek 1, Well, Yellow Tree, Waterfall ; Gary, Kerrek 1, Well, Yellow Tree, Waterfall
WHICH_PEASANTRY = 0
; by Vince `deater` Weaver vince@deater.net ; by Vince `deater` Weaver vince@deater.net
; with apologies to everyone ; with apologies to everyone
@ -17,10 +15,12 @@ WHICH_PEASANTRY = 0
.include "inventory.inc" .include "inventory.inc"
.include "parse_input.inc" .include "parse_input.inc"
LOCATION_BASE = LOCATION_POOR_GARY ; index starts here (0)
peasantry1: peasantry1:
lda #0 lda #0
sta GAME_OVER sta LEVEL_OVER
sta FRAME sta FRAME
jsr hgr_make_tables ; necessary? jsr hgr_make_tables ; necessary?
@ -39,7 +39,7 @@ peasantry1:
; update map location ; update map location
jsr update_map_location ; jsr update_map_location
; update score ; update score
@ -53,7 +53,7 @@ peasantry1:
new_location: new_location:
lda #0 lda #0
sta GAME_OVER sta LEVEL_OVER
;========================== ;==========================
; load updated verb table ; load updated verb table
@ -142,7 +142,7 @@ game_loop:
jsr check_keyboard jsr check_keyboard
lda GAME_OVER lda LEVEL_OVER
bmi oops_new_location bmi oops_new_location
bne game_over bne game_over

View File

@ -4,8 +4,6 @@
; haystack, puddle, archery, river, knight (pass) ; haystack, puddle, archery, river, knight (pass)
WHICH_PEASANTRY = 1
; by Vince `deater` Weaver vince@deater.net ; by Vince `deater` Weaver vince@deater.net
; with apologies to everyone ; with apologies to everyone
@ -17,10 +15,13 @@ WHICH_PEASANTRY = 1
.include "inventory.inc" .include "inventory.inc"
.include "parse_input.inc" .include "parse_input.inc"
LOCATION_BASE = LOCATION_HAY_BALE ; index starts here (5)
peasantry2: peasantry2:
lda #0 lda #0
sta GAME_OVER sta LEVEL_OVER
sta FRAME sta FRAME
jsr hgr_make_tables ; necessary? jsr hgr_make_tables ; necessary?
@ -39,8 +40,7 @@ peasantry2:
; update map location ; update map location
; jsr update_map_location
jsr update_map_location
; update score ; update score
@ -55,16 +55,20 @@ peasantry2:
new_location: new_location:
lda #0 lda #0
sta GAME_OVER sta LEVEL_OVER
;========================== ;==========================
; load updated verb table ; load updated verb table
; setup default verb table
jsr setup_default_verb_table
; we are PEASANT2 so locations 5...9 map to 0...4 ; we are PEASANT2 so locations 5...9 map to 0...4
lda MAP_LOCATION lda MAP_LOCATION
sec sec
sbc #5 sbc #LOCATION_BASE
tax tax
lda verb_tables_low,X lda verb_tables_low,X
@ -81,7 +85,7 @@ new_location:
lda MAP_LOCATION lda MAP_LOCATION
sec sec
sbc #5 sbc #LOCATION_BASE
tax tax
lda map_backgrounds_low,X lda map_backgrounds_low,X
@ -100,7 +104,7 @@ new_location:
lda MAP_LOCATION lda MAP_LOCATION
sec sec
sbc #5 sbc #LOCATION_BASE
tax tax
lda map_priority_low,X lda map_priority_low,X
@ -150,7 +154,7 @@ game_loop:
jsr check_keyboard jsr check_keyboard
lda GAME_OVER lda LEVEL_OVER
bmi oops_new_location bmi oops_new_location
bne level_over bne level_over

View File

@ -4,8 +4,6 @@
; Jhonka, your cottage, w lake, e lake, inn ; Jhonka, your cottage, w lake, e lake, inn
WHICH_PEASANTRY = 2
; by Vince `deater` Weaver vince@deater.net ; by Vince `deater` Weaver vince@deater.net
; with apologies to everyone ; with apologies to everyone
@ -17,10 +15,12 @@ WHICH_PEASANTRY = 2
.include "inventory.inc" .include "inventory.inc"
.include "parse_input.inc" .include "parse_input.inc"
LOCATION_BASE = LOCATION_JHONKA_CAVE ; index starts here (10)
peasantry3: peasantry3:
lda #0 lda #0
sta GAME_OVER sta LEVEL_OVER
sta FRAME sta FRAME
jsr hgr_make_tables ; necessary? jsr hgr_make_tables ; necessary?
@ -40,7 +40,7 @@ peasantry3:
; update map location ; update map location
jsr update_map_location ; jsr update_map_location
; update score ; update score
@ -54,7 +54,7 @@ peasantry3:
new_location: new_location:
lda #0 lda #0
sta GAME_OVER sta LEVEL_OVER
;========================== ;==========================
@ -64,7 +64,7 @@ new_location:
lda MAP_LOCATION lda MAP_LOCATION
sec sec
sbc #10 sbc #LOCATION_BASE
tax tax
lda verb_tables_low,X lda verb_tables_low,X
@ -80,7 +80,7 @@ new_location:
lda MAP_LOCATION lda MAP_LOCATION
sec sec
sbc #10 sbc #LOCATION_BASE
tax tax
lda map_backgrounds_low,X lda map_backgrounds_low,X
@ -96,7 +96,7 @@ new_location:
lda MAP_LOCATION lda MAP_LOCATION
sec sec
sbc #10 sbc #LOCATION_BASE
tax tax
lda map_priority_low,X lda map_priority_low,X
@ -146,7 +146,7 @@ game_loop:
jsr check_keyboard jsr check_keyboard
lda GAME_OVER lda LEVEL_OVER
bmi oops_new_location bmi oops_new_location
bne game_over bne game_over

View File

@ -4,8 +4,6 @@
; ned cottage, wavy tree, kerrek 2, lady cottage, burninated tree ; ned cottage, wavy tree, kerrek 2, lady cottage, burninated tree
WHICH_PEASANTRY = 3
; by Vince `deater` Weaver vince@deater.net ; by Vince `deater` Weaver vince@deater.net
; with apologies to everyone ; with apologies to everyone
@ -17,10 +15,12 @@ WHICH_PEASANTRY = 3
.include "inventory.inc" .include "inventory.inc"
.include "parse_input.inc" .include "parse_input.inc"
LOCATION_BASE = LOCATION_OUTSIDE_NN ; index starts here (15)
peasantry4: peasantry4:
lda #0 lda #0
sta GAME_OVER sta LEVEL_OVER
sta FRAME sta FRAME
jsr hgr_make_tables ; necessary? jsr hgr_make_tables ; necessary?
@ -40,7 +40,7 @@ peasantry4:
; update map location ; update map location
jsr update_map_location ; jsr update_map_location
; update score ; update score
@ -54,7 +54,7 @@ peasantry4:
new_location: new_location:
lda #0 lda #0
sta GAME_OVER sta LEVEL_OVER
;========================== ;==========================
; load updated verb table ; load updated verb table
@ -63,7 +63,7 @@ new_location:
lda MAP_LOCATION lda MAP_LOCATION
sec sec
sbc #15 sbc #LOCATION_BASE
tax tax
lda verb_tables_low,X lda verb_tables_low,X
@ -79,7 +79,7 @@ new_location:
lda MAP_LOCATION lda MAP_LOCATION
sec sec
sbc #15 sbc #LOCATION_BASE
tax tax
lda map_backgrounds_low,X lda map_backgrounds_low,X
@ -125,7 +125,7 @@ not_necessary_cottage:
lda MAP_LOCATION lda MAP_LOCATION
sec sec
sbc #15 sbc #LOCATION_BASE
tax tax
lda map_priority_low,X lda map_priority_low,X
@ -175,7 +175,7 @@ game_loop:
jsr check_keyboard jsr check_keyboard
lda GAME_OVER lda LEVEL_OVER
bmi oops_new_location bmi oops_new_location
bne game_over bne game_over

View File

@ -288,8 +288,8 @@ ned_cottage_try:
lda #LOAD_GAME_OVER lda #LOAD_GAME_OVER
sta WHICH_LOAD sta WHICH_LOAD
lda #1 lda #NEW_FROM_DISK
sta GAME_OVER sta LEVEL_OVER
ldx #<ned_cottage_try_message ldx #<ned_cottage_try_message
ldy #>ned_cottage_try_message ldy #>ned_cottage_try_message

View File

@ -52,9 +52,7 @@ really_move_peasant:
;============================ ;============================
peasant_x_toobig: peasant_x_toobig:
inc MAP_X jsr move_map_east
jsr new_map_location
lda #0 ; new X location lda #0 ; new X location
@ -63,9 +61,7 @@ peasant_x_toobig:
;============================ ;============================
peasant_x_negative: peasant_x_negative:
dec MAP_X jsr move_map_west
jsr new_map_location
lda #39 ; new X location lda #39 ; new X location
@ -110,9 +106,7 @@ done_movex:
;============================ ;============================
peasant_y_toobig: peasant_y_toobig:
inc MAP_Y jsr move_map_south
jsr new_map_location
lda #45 ; new X location lda #45 ; new X location
@ -122,9 +116,7 @@ peasant_y_toobig:
;============================ ;============================
peasant_y_negative: peasant_y_negative:
dec MAP_Y jsr move_map_north
jsr new_map_location
lda #160 ; new X location lda #160 ; new X location
@ -136,7 +128,7 @@ done_movey:
; if we moved off screen, don't re-draw peasant ; if we moved off screen, don't re-draw peasant
lda GAME_OVER lda LEVEL_OVER
bne peasant_the_same bne peasant_the_same
; save behind new position ; save behind new position

View File

@ -196,17 +196,18 @@ which_disk_array:
.byte 1,1,1,2 ; VID_LOGO, TITLE, INTRO. COPY_CHECK .byte 1,1,1,2 ; VID_LOGO, TITLE, INTRO. COPY_CHECK
.byte 1,1,1,1 ; PEASANT1, PEASANT2, PEASANT3, PEASANT4 .byte 1,1,1,1 ; PEASANT1, PEASANT2, PEASANT3, PEASANT4
.byte 2,2,1,2 ; TROGDOR, ENDING, MUSIC, CLIFF .byte 2,2,1,2 ; TROGDOR, ENDING, MUSIC, CLIFF
.byte 2,1,1,1 ; GAME_OVER, INVENTORY, PARSE_INPUT .byte 2,1,1,2 ; GAME_OVER, INVENTORY, PARSE_INPUT, INN
.byte 1 ; .byte 2 ; INSIDE
.byte 1,1,1,1,1 ; SAVE1, SAVE2, SAVE3 .byte 1,1,1,1 ; SAVE1, SAVE2, SAVE3
.byte 1
.byte $f ; disk detect .byte $f ; disk detect
load_address_array: load_address_array:
.byte $60,$60,$60,$60 ; VID_LOGO, TITLE, INTRO, COPY_CHECK .byte $60,$60,$60,$60 ; VID_LOGO, TITLE, INTRO, COPY_CHECK
.byte $60,$60,$60,$60 ; PEASANT1, PEASANT2, PEASANT3, PEASANT4 .byte $60,$60,$60,$60 ; PEASANT1, PEASANT2, PEASANT3, PEASANT4
.byte $60,$60,$D0,$60 ; TROGDOR, ENDING, MUSIC, CLIFF .byte $60,$60,$D0,$60 ; TROGDOR, ENDING, MUSIC, CLIFF
.byte $60,$D0,$20,$40 ; GAME_OVER, INVENTORY, PARSE_INPUT .byte $60,$D0,$20,$60 ; GAME_OVER, INVENTORY, PARSE_INPUT, INN
.byte $08 ; .byte $60 ; INSIDE
.byte $BC,$BC,$BC,$0A ; SAVE1, SAVE2, SAVE3 .byte $BC,$BC,$BC,$0A ; SAVE1, SAVE2, SAVE3
.byte $0A ; .byte $0A ;
.byte $BC ; disk detect .byte $BC ; disk detect
@ -215,8 +216,8 @@ track_array:
.byte 4, 6, 9,1 ; VID_LOGO, TITLE, INTRO, COPY_CHECK .byte 4, 6, 9,1 ; VID_LOGO, TITLE, INTRO, COPY_CHECK
.byte 15,20,25,30 ; PEASANT1, PEASANT2, PEASANT3, PEASANT4 .byte 15,20,25,30 ; PEASANT1, PEASANT2, PEASANT3, PEASANT4
.byte 19,24, 3,29 ; TROGDOR, ENDING, MUSIC, CLIFF .byte 19,24, 3,29 ; TROGDOR, ENDING, MUSIC, CLIFF
.byte 3,14,13,30 ; GAME_OVER, INVENTORY, PARSE_INPUT .byte 3,14,13,30 ; GAME_OVER, INVENTORY, PARSE_INPUT, INN
.byte 0 ; .byte 5 ; INSIDE
.byte 0, 0, 0, 0, 0 ; SAVE1, SAVE2, SAVE3 .byte 0, 0, 0, 0, 0 ; SAVE1, SAVE2, SAVE3
.byte 0 ; disk detect .byte 0 ; disk detect
@ -224,8 +225,8 @@ sector_array:
.byte 0, 0, 0, 0 ; VID_LOGO, TITLE, INTRO, COPY_CHECK .byte 0, 0, 0, 0 ; VID_LOGO, TITLE, INTRO, COPY_CHECK
.byte 0, 0, 0, 0 ; PEASANT1, PEASANT2, PEASANT3, PEASANT4 .byte 0, 0, 0, 0 ; PEASANT1, PEASANT2, PEASANT3, PEASANT4
.byte 0, 0, 0, 0 ; TROGDOR, ENDING, MUSIC, CLIFF .byte 0, 0, 0, 0 ; TROGDOR, ENDING, MUSIC, CLIFF
.byte 0, 0, 0, 1 ; GAME_OVER, INVENTORY, PARSE_INPUT .byte 0, 0, 0, 0 ; GAME_OVER, INVENTORY, PARSE_INPUT, INN
.byte 6 ; .byte 0 ; INSIDE
.byte 11,12,13,14,15 ; SAVE1, SAVE2, SAVE3 .byte 11,12,13,14,15 ; SAVE1, SAVE2, SAVE3
.byte 0 ; disk detect .byte 0 ; disk detect
@ -233,8 +234,8 @@ length_array:
.byte 32, 50, 60, 20 ; VID_LOGO, TITLE, INTRO, COPY_CHECK .byte 32, 50, 60, 20 ; VID_LOGO, TITLE, INTRO, COPY_CHECK
.byte 80, 88, 88, 80 ; PEASANT1, PEASANT2, PEASANT3, PEASANT4 .byte 80, 88, 88, 80 ; PEASANT1, PEASANT2, PEASANT3, PEASANT4
.byte 80, 80, 16, 80 ; TROGDOR, ENDING, MUSIC, CLIFF .byte 80, 80, 16, 80 ; TROGDOR, ENDING, MUSIC, CLIFF
.byte 16, 16, 18, 78 ; GAME_OVER, INVENTORY, PARSE_INPUT .byte 16, 16, 18, 80 ; GAME_OVER, INVENTORY, PARSE_INPUT, INN
.byte 3 ; .byte 80 ; INSIDE
.byte 1,1,1,1,1 ; SAVE1, SAVE2, SAVE3 .byte 1,1,1,1,1 ; SAVE1, SAVE2, SAVE3
.byte 1 ; disk detect .byte 1 ; disk detect

View File

@ -5,13 +5,13 @@
; want to load this to address $90 ; want to load this to address $90
; ;
.byte LOAD_PEASANT4 ; WHICH_LOAD = $90 .byte LOAD_INSIDE ; WHICH_LOAD = $90
.byte 15 ; PEASANT_X = $91 .byte 15 ; PEASANT_X = $91
.byte 128 ; PEASANT_Y = $92 .byte 128 ; PEASANT_Y = $92
.byte PEASANT_DIR_UP ; PEASANT_DIR = $93 .byte PEASANT_DIR_UP ; PEASANT_DIR = $93
.byte 1 ; MAP_X = $94 .byte 0 ; MAP_X = $94
.byte 3 ; MAP_Y = $95 .byte 0 ; MAP_Y = $95
.byte LOCATION_WAVY_TREE; MAP_LOCATION = $96 .byte LOCATION_INSIDE_LADY; MAP_LOCATION = $96
.byte $ff ; GAME_STATE_0 = $97 .byte $ff ; GAME_STATE_0 = $97
.byte $00 ; GAME_STATE_1 = $98 .byte $00 ; GAME_STATE_1 = $98
.byte $00 ; GAME_STATE_2 = $99 .byte $00 ; GAME_STATE_2 = $99

View File

@ -2,6 +2,8 @@
; Hidden Glen ; Hidden Glen
;================ ;================
blah:
; (Walk in the path of Dongolev's arrows) ; (Walk in the path of Dongolev's arrows)
.byte "Hopefully this guy will have some sense and not shoot you.",0 .byte "Hopefully this guy will have some sense and not shoot you.",0
; {Dongolev shoots you in the head} ; {Dongolev shoots you in the head}

View File

@ -11,7 +11,7 @@
trogdor: trogdor:
lda #0 lda #0
sta GAME_OVER sta LEVEL_OVER
sta FRAME sta FRAME
jsr hgr_make_tables ; needed? jsr hgr_make_tables ; needed?

View File

@ -56,7 +56,7 @@ ALTH = $68
SAVED_X = $69 SAVED_X = $69
PEASANT_XADD = $6A PEASANT_XADD = $6A
PEASANT_YADD = $6B PEASANT_YADD = $6B
GAME_OVER = $6C LEVEL_OVER = $6C
NEW_LOCATION = $FF NEW_LOCATION = $FF
NEW_FROM_DISK = $01 NEW_FROM_DISK = $01
@ -111,8 +111,8 @@ PEASANT_DIR = $93
PEASANT_DIR_RIGHT = 1 PEASANT_DIR_RIGHT = 1
PEASANT_DIR_LEFT = 2 PEASANT_DIR_LEFT = 2
PEASANT_DIR_DOWN = 3 PEASANT_DIR_DOWN = 3
MAP_X = $94 ;MAP_X = $94
MAP_Y = $95 ;MAP_Y = $95
MAP_LOCATION = $96 MAP_LOCATION = $96
GAME_STATE_0 = $97 GAME_STATE_0 = $97
@ -275,13 +275,14 @@ LOCATION_WAVY_TREE = 16
LOCATION_KERREK_2 = 17 LOCATION_KERREK_2 = 17
LOCATION_OUTSIDE_LADY = 18 LOCATION_OUTSIDE_LADY = 18
LOCATION_BURN_TREES = 19 LOCATION_BURN_TREES = 19
LOCATION_HIDDEN_GLEN = 20 LOCATION_CLIFF_BASE = 20
LOCATION_CLIFF_BASE = 21 LOCATION_CLIFF_HEIGHTS = 21
LOCATION_CLIFF_HEIGHTS = 22 LOCATION_TROGDOR_OUTER = 22
LOCATION_TROGDOR_OUTER = 23 LOCATION_TROGDOR_LAIR = 23
LOCATION_TROGDOR_LAIR = 24 LOCATION_HIDDEN_GLEN = 24
LOCATION_INSIDE_LADY = 25 LOCATION_INSIDE_LADY = 25
LOCATION_INSIDE_INN = 26 LOCATION_INSIDE_NN = 26
LOCATION_INSIDE_NN = 27 LOCATION_INSIDE_INN = 27
LOCATION_EMPTY = 28 LOCATION_EMPTY = 28