peasant: split outer off from cliff_heights
was running out of room
@ -13,8 +13,7 @@
|
||||
.include "../inventory/inventory.inc"
|
||||
.include "../parse_input.inc"
|
||||
.include "../redbook_sound.inc"
|
||||
|
||||
collision_location = $bc00
|
||||
.include "../common_locations.inc"
|
||||
|
||||
LOCATION_BASE = LOCATION_CLIFF_HEIGHTS ; (21 = $15)
|
||||
|
||||
@ -228,50 +227,6 @@ level_good:
|
||||
jsr draw_lightning
|
||||
no_lightning:
|
||||
|
||||
;=====================
|
||||
; see if keeper triggered
|
||||
|
||||
lda MAP_LOCATION
|
||||
cmp #LOCATION_TROGDOR_OUTER
|
||||
bne done_check_keeper
|
||||
|
||||
lda IN_QUIZ
|
||||
bne done_check_keeper
|
||||
|
||||
check_keeper1:
|
||||
lda INVENTORY_2
|
||||
and #INV2_TROGSHIELD ; only if not have shield
|
||||
bne check_keeper2
|
||||
|
||||
lda PEASANT_X ; only if ourx > 9
|
||||
cmp #10
|
||||
bcc check_keeper2
|
||||
|
||||
jsr handle_keeper1
|
||||
|
||||
check_keeper2:
|
||||
|
||||
|
||||
|
||||
|
||||
done_check_keeper:
|
||||
|
||||
|
||||
;=================================
|
||||
; draw keeper if we need refresh
|
||||
|
||||
lda REFRESH_SCREEN
|
||||
beq no_draw_keeper
|
||||
|
||||
lda #0
|
||||
sta REFRESH_SCREEN
|
||||
|
||||
lda IN_QUIZ ; need to draw keeper if quizzing
|
||||
beq no_draw_keeper
|
||||
|
||||
jsr draw_standing_keeper
|
||||
|
||||
no_draw_keeper:
|
||||
|
||||
;=====================
|
||||
; always draw peasant
|
||||
@ -294,49 +249,19 @@ no_draw_keeper:
|
||||
; original code also waited approximately 100ms?
|
||||
; this led to keypressed being lost
|
||||
|
||||
lda PEASANT_DIR
|
||||
sta OLD_DIR
|
||||
|
||||
lda #13
|
||||
sta WAIT_LOOP
|
||||
wait_loop:
|
||||
|
||||
|
||||
lda IN_QUIZ
|
||||
cmp #2 ; means waiting for answer
|
||||
bne normal_keyboard_check
|
||||
|
||||
jsr check_keyboard_answer
|
||||
jmp done_keyboard_check
|
||||
|
||||
normal_keyboard_check:
|
||||
|
||||
jsr check_keyboard
|
||||
|
||||
done_keyboard_check:
|
||||
|
||||
lda #50 ; approx 7ms
|
||||
jsr wait
|
||||
|
||||
dec WAIT_LOOP
|
||||
bne wait_loop
|
||||
|
||||
;===================================
|
||||
; keep from moving if being quizzed
|
||||
;===================================
|
||||
|
||||
lda IN_QUIZ
|
||||
beq not_in_quiz
|
||||
|
||||
lda #0 ; keep from moving
|
||||
sta PEASANT_XADD
|
||||
sta PEASANT_YADD
|
||||
|
||||
lda OLD_DIR ; keep from changing dir
|
||||
sta PEASANT_DIR
|
||||
|
||||
not_in_quiz:
|
||||
|
||||
jsr wait_vblank
|
||||
|
||||
jmp game_loop
|
||||
@ -432,27 +357,21 @@ exiting_cliff:
|
||||
|
||||
map_backgrounds_low:
|
||||
.byte <cliff_heights_zx02
|
||||
.byte <outer_zx02
|
||||
|
||||
map_backgrounds_hi:
|
||||
.byte >cliff_heights_zx02
|
||||
.byte >outer_zx02
|
||||
|
||||
map_priority_low:
|
||||
.byte <cliff_heights_priority_zx02
|
||||
.byte <outer_priority_zx02
|
||||
|
||||
map_priority_hi:
|
||||
.byte >cliff_heights_priority_zx02
|
||||
.byte >outer_priority_zx02
|
||||
|
||||
verb_tables_low:
|
||||
.byte <cliff_heights_verb_table
|
||||
.byte <cave_outer_verb_table
|
||||
|
||||
verb_tables_hi:
|
||||
.byte >cliff_heights_verb_table
|
||||
.byte >cave_outer_verb_table
|
||||
|
||||
|
||||
|
||||
@ -463,522 +382,16 @@ cliff_text_zx02:
|
||||
|
||||
robe_sprite_data:
|
||||
.incbin "../sprites_peasant/robe_sprites.zx02"
|
||||
; .incbin "../sprites_peasant/robe_shield_sprites.zx02"
|
||||
|
||||
|
||||
.include "sprites_heights/ron_sprites.inc"
|
||||
;.include "sprites_heights/keeper1_sprites.inc"
|
||||
;.include "sprites_heights/ron_sprites.inc"
|
||||
;.include "sprites_heights/keeper2_sprites.inc"
|
||||
|
||||
.include "draw_lightning.s"
|
||||
|
||||
|
||||
;==========================================
|
||||
; first keeper ron
|
||||
|
||||
; flips peasant forward
|
||||
; 3 (4) (u shaped)
|
||||
; 5 (4) (up)
|
||||
; 6 (6) (up, up)
|
||||
; 7 (4) (up, down)
|
||||
; 6 (4)
|
||||
; 7 (4)
|
||||
; 6 (4)
|
||||
; 7 (4)
|
||||
; 6 (4)
|
||||
; 7 (4)
|
||||
; 6 (4)
|
||||
; 7 (4) 9? repeats, ending on down
|
||||
; ron transition happens
|
||||
; (8) switches to 5 part way through first frame?
|
||||
; 3 / ron next , to 1 part way through second (cloud frame)
|
||||
; 5 ron (gap)
|
||||
; 10 ron (tiny smoke)
|
||||
; 10 full ron
|
||||
|
||||
ron_which_keeper_sprite:
|
||||
.byte 3, 5, 6, 7
|
||||
.byte 6, 7, 6, 7
|
||||
.byte 6, 7, 6, 7
|
||||
|
||||
.byte 7, 5, 5, 1, 1, 1, 1, 1, 1, 1, 1
|
||||
|
||||
ron_which_ron_sprite:
|
||||
.byte 0, 0, 0, 0
|
||||
.byte 0, 0, 0, 0
|
||||
.byte 0, 0, 0, 0
|
||||
|
||||
.byte 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 4
|
||||
|
||||
|
||||
;===============================
|
||||
; ron transform
|
||||
;===============================
|
||||
ron_transform:
|
||||
|
||||
lda #0
|
||||
sta KEEPER_COUNT
|
||||
|
||||
; look down for this
|
||||
|
||||
lda #PEASANT_DIR_DOWN
|
||||
sta PEASANT_DIR
|
||||
|
||||
ron1_loop:
|
||||
|
||||
; play sound if needed, 2.. 12
|
||||
|
||||
lda KEEPER_COUNT
|
||||
cmp #2
|
||||
bcc skip_ron_sound
|
||||
cmp #12
|
||||
bcs skip_ron_sound
|
||||
|
||||
and #1
|
||||
beq ron_other_note
|
||||
|
||||
lda #NOTE_F6
|
||||
beq ron_common_note ; bra
|
||||
ron_other_note:
|
||||
lda #NOTE_E6
|
||||
|
||||
ron_common_note:
|
||||
sta speaker_frequency
|
||||
lda #8
|
||||
sta speaker_duration
|
||||
jsr speaker_tone
|
||||
|
||||
skip_ron_sound:
|
||||
|
||||
; erase prev keeper
|
||||
|
||||
ldy #3 ; erase slot 3?
|
||||
jsr hgr_partial_restore_by_num
|
||||
|
||||
inc KEEPER_COUNT
|
||||
ldx KEEPER_COUNT
|
||||
|
||||
lda #10
|
||||
sta SPRITE_X
|
||||
lda #60
|
||||
sta SPRITE_Y
|
||||
|
||||
; get offset for graphics
|
||||
|
||||
ldx KEEPER_COUNT
|
||||
lda ron_which_keeper_sprite,X
|
||||
clc
|
||||
adc #5 ; skip ron
|
||||
tax
|
||||
|
||||
ldy #3 ; ? slot
|
||||
|
||||
jsr hgr_draw_sprite_save
|
||||
|
||||
;=======================
|
||||
; see if done animation
|
||||
|
||||
lda KEEPER_COUNT
|
||||
cmp #21 ;
|
||||
beq ron_done
|
||||
|
||||
cmp #12
|
||||
bcc ron_peasant ; normal peasant first 12 frames
|
||||
|
||||
; erase prev peasant
|
||||
|
||||
ldy #4 ; erase slot 4?
|
||||
jsr hgr_partial_restore_by_num
|
||||
|
||||
ldx KEEPER_COUNT
|
||||
|
||||
lda PEASANT_X
|
||||
sta SPRITE_X
|
||||
lda PEASANT_Y
|
||||
sta SPRITE_Y
|
||||
|
||||
; get offset for graphics
|
||||
|
||||
; ldx KEEPER_COUNT
|
||||
lda ron_which_ron_sprite,X
|
||||
tax
|
||||
|
||||
ldy #4 ; ? slot
|
||||
|
||||
jsr hgr_draw_sprite_save
|
||||
|
||||
jmp done_ron_peasant
|
||||
|
||||
ron_peasant:
|
||||
;========================
|
||||
; draw peasant
|
||||
|
||||
jsr draw_peasant
|
||||
|
||||
|
||||
;========================
|
||||
; increment flame
|
||||
|
||||
jsr increment_flame
|
||||
done_ron_peasant:
|
||||
|
||||
;=========================
|
||||
; delay
|
||||
|
||||
lda #200
|
||||
jsr wait
|
||||
|
||||
jsr wait_vblank
|
||||
|
||||
jmp ron1_loop
|
||||
|
||||
ron_done:
|
||||
|
||||
;===========================
|
||||
; weep sound
|
||||
|
||||
lda #32
|
||||
sta speaker_duration
|
||||
lda #NOTE_E5
|
||||
sta speaker_frequency
|
||||
jsr speaker_tone
|
||||
lda #64
|
||||
sta speaker_duration
|
||||
lda #NOTE_F5
|
||||
sta speaker_frequency
|
||||
jsr speaker_tone
|
||||
|
||||
jsr wait_until_keypress
|
||||
|
||||
rts
|
||||
|
||||
;==========================================
|
||||
; first keeper info
|
||||
;
|
||||
; seems to trigger at approx peasant_x = 70 (10)
|
||||
;
|
||||
|
||||
; 0 (4), move down/r
|
||||
; 0 (4), move down/r
|
||||
; 1 (4), no move
|
||||
; 1 (5), move down/r
|
||||
|
||||
; 1 (5), move down/r
|
||||
; 1 (5), move down/r
|
||||
; 1 (5), move down/r
|
||||
; 1 (5), move down/r
|
||||
|
||||
; 2 (5)
|
||||
; 3 (4)
|
||||
; 4 (10)
|
||||
; 3 (10)
|
||||
|
||||
; 4 (15)
|
||||
; 3 (5)
|
||||
; 2 (5)
|
||||
; 1 (11) ; starts talking
|
||||
|
||||
|
||||
|
||||
keeper_x:
|
||||
.byte 9, 9,10,10
|
||||
.byte 10,10,10,10
|
||||
.byte 10,10,10,10, 10,10
|
||||
.byte 10,10,10,10,10,10,10
|
||||
|
||||
keeper_y:
|
||||
.byte 51,52,53,54
|
||||
.byte 56,58,59,60
|
||||
.byte 60,60,60,60, 60,60
|
||||
.byte 60,60,60,60, 60,60,60
|
||||
|
||||
which_keeper_sprite:
|
||||
.byte 0, 0, 1, 1
|
||||
.byte 1, 1, 1, 1
|
||||
.byte 2, 3, 4, 4, 3, 3
|
||||
|
||||
.byte 4, 4, 4, 3, 2, 1, 1
|
||||
|
||||
|
||||
;===============================
|
||||
; handle keeper1
|
||||
;===============================
|
||||
; handle keeper1
|
||||
; stop walking
|
||||
; have keeper come out to talk
|
||||
; special limited handling
|
||||
; can't walk unless win
|
||||
handle_keeper1:
|
||||
|
||||
lda #0 ; stop walking
|
||||
sta PEASANT_XADD
|
||||
sta PEASANT_YADD
|
||||
|
||||
;===========================
|
||||
; animate keeper coming out
|
||||
|
||||
|
||||
keeper1_loop:
|
||||
|
||||
; erase prev keeper
|
||||
|
||||
ldy #3 ; erase slot 3?
|
||||
jsr hgr_partial_restore_by_num
|
||||
|
||||
inc KEEPER_COUNT
|
||||
ldx KEEPER_COUNT
|
||||
|
||||
lda keeper_x,X
|
||||
sta SPRITE_X
|
||||
lda keeper_y,X
|
||||
sta SPRITE_Y
|
||||
|
||||
; get offset for graphics
|
||||
|
||||
ldx KEEPER_COUNT
|
||||
lda which_keeper_sprite,X
|
||||
clc
|
||||
adc #5 ; skip ron
|
||||
tax
|
||||
|
||||
ldy #3 ; ? slot
|
||||
|
||||
jsr hgr_draw_sprite_save
|
||||
|
||||
;=======================
|
||||
; see if done animation
|
||||
|
||||
lda KEEPER_COUNT
|
||||
cmp #20 ;
|
||||
beq keeper_talk1
|
||||
|
||||
|
||||
|
||||
;========================
|
||||
; increment flame
|
||||
|
||||
jsr draw_peasant
|
||||
|
||||
;========================
|
||||
; increment flame
|
||||
|
||||
jsr increment_flame
|
||||
|
||||
;=========================
|
||||
; delay
|
||||
|
||||
lda #200
|
||||
jsr wait
|
||||
|
||||
jsr wait_vblank
|
||||
|
||||
jmp keeper1_loop
|
||||
|
||||
rts
|
||||
|
||||
|
||||
;====================
|
||||
; increment flame
|
||||
;====================
|
||||
increment_flame:
|
||||
inc FLAME_COUNT
|
||||
lda FLAME_COUNT
|
||||
cmp #3
|
||||
bne flame_good
|
||||
|
||||
lda #0
|
||||
sta FLAME_COUNT
|
||||
|
||||
flame_good:
|
||||
rts
|
||||
|
||||
keeper_talk1:
|
||||
; print the message
|
||||
|
||||
ldx #<cave_outer_keeper1_message1
|
||||
ldy #>cave_outer_keeper1_message1
|
||||
jsr finish_parse_message
|
||||
|
||||
jsr draw_standing_keeper
|
||||
|
||||
ldx #<cave_outer_keeper1_message2
|
||||
ldy #>cave_outer_keeper1_message2
|
||||
jsr finish_parse_message
|
||||
|
||||
jsr draw_standing_keeper
|
||||
|
||||
ldx #<cave_outer_keeper1_message3
|
||||
ldy #>cave_outer_keeper1_message3
|
||||
jsr finish_parse_message
|
||||
|
||||
jsr draw_standing_keeper
|
||||
|
||||
ldx #<cave_outer_keeper1_message4
|
||||
ldy #>cave_outer_keeper1_message4
|
||||
jsr finish_parse_message
|
||||
|
||||
jsr draw_standing_keeper
|
||||
|
||||
;===============================================
|
||||
; if have sub print5, otherwise skip ahead
|
||||
|
||||
lda INVENTORY_2
|
||||
and #INV2_MEATBALL_SUB
|
||||
beq dont_have_sub
|
||||
|
||||
ldx #<cave_outer_keeper1_message5
|
||||
ldy #>cave_outer_keeper1_message5
|
||||
jsr finish_parse_message
|
||||
|
||||
jsr draw_standing_keeper
|
||||
|
||||
dont_have_sub:
|
||||
|
||||
; now we need to re-draw keeper
|
||||
; also we're in quiz mode
|
||||
; so we can't move and can only take quiz or give sub
|
||||
|
||||
lda #1
|
||||
sta IN_QUIZ
|
||||
|
||||
; custom common verb table the essentially does nothing
|
||||
jsr setup_quiz_verb_table
|
||||
|
||||
; respond only to take quiz and give sub
|
||||
lda #<keeper1_verb_table
|
||||
sta INL
|
||||
lda #>keeper1_verb_table
|
||||
sta INH
|
||||
jsr load_custom_verb_table
|
||||
|
||||
jmp game_loop
|
||||
|
||||
|
||||
;==============================
|
||||
; check_keyboard_answer
|
||||
;==============================
|
||||
; for when in quiz
|
||||
; looking for just A, B, or C
|
||||
|
||||
check_keyboard_answer:
|
||||
|
||||
lda KEYPRESS
|
||||
bpl no_answer
|
||||
|
||||
bit KEYRESET
|
||||
|
||||
pha
|
||||
jsr restore_parse_message
|
||||
|
||||
lda #0
|
||||
sta REFRESH_SCREEN ; don't refresh or we draw keeper on top
|
||||
|
||||
pla
|
||||
|
||||
and #$7f ; strip high bit
|
||||
and #$df ; convert to lowercase $61 -> $41 0110 -> 0100
|
||||
|
||||
cmp #'A'
|
||||
bcc invalid_answer ; blt
|
||||
cmp #'D'
|
||||
bcs invalid_answer ; bge
|
||||
|
||||
ldx WHICH_QUIZ
|
||||
|
||||
cmp quiz1_answers,X
|
||||
beq right_answer
|
||||
bne wrong_answer
|
||||
|
||||
no_answer:
|
||||
rts
|
||||
|
||||
;======================
|
||||
; quiz1 invalid answer
|
||||
;======================
|
||||
|
||||
invalid_answer:
|
||||
bit KEYRESET ; clear the keyboard buffer
|
||||
|
||||
lda WHICH_QUIZ
|
||||
cmp #2 ; off by 1
|
||||
beq resay_quiz3
|
||||
cmp #1
|
||||
beq resay_quiz2
|
||||
|
||||
resay_quiz1:
|
||||
ldx #<cave_outer_quiz1_1again
|
||||
ldy #>cave_outer_quiz1_1again
|
||||
jmp finish_parse_message_nowait
|
||||
resay_quiz2:
|
||||
ldx #<cave_outer_quiz1_2again
|
||||
ldy #>cave_outer_quiz1_2again
|
||||
jmp finish_parse_message_nowait
|
||||
resay_quiz3:
|
||||
ldx #<cave_outer_quiz1_3again
|
||||
ldy #>cave_outer_quiz1_3again
|
||||
jmp finish_parse_message_nowait
|
||||
|
||||
|
||||
;======================
|
||||
; quiz1 wrong answer
|
||||
;======================
|
||||
|
||||
wrong_answer:
|
||||
bit KEYRESET ; clear the keyboard buffer
|
||||
|
||||
ldx #<cave_outer_quiz1_wrong
|
||||
ldy #>cave_outer_quiz1_wrong
|
||||
jsr finish_parse_message
|
||||
|
||||
jsr draw_standing_keeper
|
||||
|
||||
ldx #<cave_outer_quiz1_wrong_part2
|
||||
ldy #>cave_outer_quiz1_wrong_part2
|
||||
jsr finish_parse_message
|
||||
|
||||
jsr draw_standing_keeper
|
||||
|
||||
ldx #<cave_outer_quiz1_wrong_part3
|
||||
ldy #>cave_outer_quiz1_wrong_part3
|
||||
jsr finish_parse_message
|
||||
|
||||
; transform to ron
|
||||
|
||||
jsr ron_transform
|
||||
|
||||
ldx #<cave_outer_quiz1_wrong_part4
|
||||
ldy #>cave_outer_quiz1_wrong_part4
|
||||
jsr finish_parse_message
|
||||
|
||||
lda #0
|
||||
sta IN_QUIZ
|
||||
|
||||
; game over
|
||||
|
||||
lda #LOAD_GAME_OVER
|
||||
sta WHICH_LOAD
|
||||
|
||||
lda #NEW_FROM_DISK
|
||||
sta LEVEL_OVER
|
||||
|
||||
rts
|
||||
|
||||
;======================
|
||||
; quiz1 correct answer
|
||||
;======================
|
||||
|
||||
right_answer:
|
||||
bit KEYRESET ; clear the keyboard buffer
|
||||
ldx #<cave_outer_quiz1_correct
|
||||
ldy #>cave_outer_quiz1_correct
|
||||
jsr finish_parse_message
|
||||
|
||||
jsr cave_outer_get_shield
|
||||
|
||||
; FIXME: animate keeper backing off
|
||||
|
||||
rts
|
||||
|
||||
quiz1_answers:
|
||||
.byte 'B','A','C'
|
||||
|
||||
;============================
|
||||
; setup heights verb table
|
||||
;============================
|
||||
@ -1005,65 +418,18 @@ setup_heights_verb_table:
|
||||
rts
|
||||
|
||||
|
||||
;==========================
|
||||
; draw standing keeper
|
||||
;==========================
|
||||
draw_standing_keeper:
|
||||
;====================
|
||||
; increment flame
|
||||
;====================
|
||||
increment_flame:
|
||||
inc FLAME_COUNT
|
||||
lda FLAME_COUNT
|
||||
cmp #3
|
||||
bne flame_good
|
||||
|
||||
; erase prev keeper
|
||||
|
||||
ldy #3 ; erase slot 3?
|
||||
jsr hgr_partial_restore_by_num
|
||||
|
||||
ldx #19
|
||||
|
||||
lda keeper_x,X
|
||||
sta SPRITE_X
|
||||
lda keeper_y,X
|
||||
sta SPRITE_Y
|
||||
|
||||
; get offset for graphics
|
||||
|
||||
ldx #19
|
||||
lda which_keeper_sprite,X
|
||||
clc
|
||||
adc #5 ; skip ron
|
||||
tax
|
||||
|
||||
ldy #3 ; ? slot
|
||||
|
||||
jsr hgr_draw_sprite_save
|
||||
lda #0
|
||||
sta FLAME_COUNT
|
||||
|
||||
flame_good:
|
||||
rts
|
||||
|
||||
sprites_xsize:
|
||||
.byte 2, 2, 2, 2, 2 ; ron 0..4
|
||||
.byte 2, 2, 3, 3, 3, 3, 3, 3 ; keeper 0..7
|
||||
|
||||
sprites_ysize:
|
||||
.byte 29,30,30,30,30 ; ron 0..4
|
||||
.byte 28,28,28,28,28,28,28,28 ; keeper 0..7
|
||||
|
||||
sprites_data_l:
|
||||
.byte <ron0,<ron1,<ron2,<ron3,<ron4
|
||||
.byte <keeper0,<keeper1,<keeper2,<keeper3
|
||||
.byte <keeper4,<keeper5,<keeper6,<keeper7
|
||||
|
||||
sprites_data_h:
|
||||
.byte >ron0,>ron1,>ron2,>ron3,>ron4
|
||||
.byte >keeper0,>keeper1,>keeper2,>keeper3
|
||||
.byte >keeper4,>keeper5,>keeper6,>keeper7
|
||||
|
||||
|
||||
sprites_mask_l:
|
||||
.byte <ron0_mask,<ron1_mask,<ron2_mask,<ron3_mask,<ron4_mask
|
||||
.byte <keeper0_mask,<keeper1_mask,<keeper2_mask,<keeper3_mask
|
||||
.byte <keeper4_mask,<keeper5_mask,<keeper6_mask,<keeper7_mask
|
||||
|
||||
|
||||
sprites_mask_h:
|
||||
.byte >ron0_mask,>ron1_mask,>ron2_mask,>ron3_mask,>ron4_mask
|
||||
.byte >keeper0_mask,>keeper1_mask,>keeper2_mask,>keeper3_mask
|
||||
.byte >keeper4_mask,>keeper5_mask,>keeper6_mask,>keeper7_mask
|
||||
|
||||
.include "../hgr_sprite_save.s"
|
||||
|
@ -9,17 +9,15 @@ all: cliff_heights_graphics.inc \
|
||||
###
|
||||
|
||||
cliff_heights_graphics.inc: \
|
||||
cliff_heights.zx02 outer.zx02
|
||||
cliff_heights.zx02
|
||||
echo "cliff_heights_zx02: .incbin \"cliff_heights.zx02\"" >> cliff_heights_graphics.inc
|
||||
echo "outer_zx02: .incbin \"outer.zx02\"" >> cliff_heights_graphics.inc
|
||||
|
||||
|
||||
###
|
||||
|
||||
priority_cliff_heights.inc: \
|
||||
cliff_heights_priority.zx02 \
|
||||
outer_priority.zx02
|
||||
cliff_heights_priority.zx02
|
||||
echo "cliff_heights_priority_zx02: .incbin \"cliff_heights_priority.zx02\"" >> priority_cliff_heights.inc
|
||||
echo "outer_priority_zx02: .incbin \"outer_priority.zx02\"" >> priority_cliff_heights.inc
|
||||
|
||||
###
|
||||
|
||||
@ -29,13 +27,6 @@ cliff_heights.zx02: cliff_heights.hgr
|
||||
cliff_heights.hgr: cliff_heights.png
|
||||
$(PNG2HGR) cliff_heights.png > cliff_heights.hgr
|
||||
|
||||
###
|
||||
|
||||
outer.zx02: outer.hgr
|
||||
$(ZX02) -f outer.hgr outer.zx02
|
||||
|
||||
outer.hgr: outer.png
|
||||
$(PNG2HGR) outer.png > outer.hgr
|
||||
|
||||
####
|
||||
|
||||
@ -54,22 +45,8 @@ cliff_heights_collision.bin: cliff_heights_collision.png
|
||||
|
||||
####
|
||||
|
||||
outer_priority.zx02: outer_priority.combined
|
||||
$(ZX02) -f outer_priority.combined outer_priority.zx02
|
||||
|
||||
outer_priority.combined: outer_priority.gr outer_collision.bin
|
||||
cat outer_priority.gr > outer_priority.combined
|
||||
cat outer_collision.bin >> outer_priority.combined
|
||||
|
||||
outer_priority.gr: outer_priority.png
|
||||
$(PNG2GR) outer_priority.png outer_priority.gr
|
||||
|
||||
outer_collision.bin: outer_collision.png
|
||||
$(PNG2COLLISION) outer_collision.png outer_collision.bin
|
||||
|
||||
####
|
||||
|
||||
|
||||
clean:
|
||||
rm -f *~ cliff_heights_graphics.inc priority_cliff_heights.inc *.zx02 *.gr *.hgr
|
||||
rm -f *~ cliff_heights_graphics.inc priority_cliff_heights.inc \
|
||||
*.zx02 *.gr *.hgr *.bin *.combined
|
||||
|
||||
|
@ -109,234 +109,4 @@ cliff_heights_look_at_lightning:
|
||||
jmp finish_parse_message
|
||||
|
||||
|
||||
;=======================
|
||||
;=======================
|
||||
;=======================
|
||||
; Trogdor Cave Outer
|
||||
;=======================
|
||||
;=======================
|
||||
;=======================
|
||||
|
||||
cave_outer_verb_table:
|
||||
.byte VERB_CLIMB
|
||||
.word cave_outer_climb-1
|
||||
.byte VERB_LOOK
|
||||
.word cave_outer_look-1
|
||||
.byte 0
|
||||
|
||||
;=================
|
||||
; look
|
||||
;=================
|
||||
|
||||
cave_outer_look:
|
||||
|
||||
lda CURRENT_NOUN
|
||||
|
||||
cmp #NOUN_BEADS
|
||||
beq cave_outer_look_at_curtain
|
||||
cmp #NOUN_CURTAIN
|
||||
beq cave_outer_look_at_curtain
|
||||
cmp #NOUN_DOOR
|
||||
beq cave_outer_look_at_door
|
||||
cmp #NOUN_SKELETON
|
||||
beq cave_outer_look_at_skeleton
|
||||
cmp #NOUN_OPENINGS
|
||||
beq cave_outer_look_at_openings
|
||||
cmp #NOUN_NONE
|
||||
beq cave_outer_look_at
|
||||
|
||||
jmp parse_common_look
|
||||
|
||||
cave_outer_look_at:
|
||||
ldx #<cave_outer_look_message
|
||||
ldy #>cave_outer_look_message
|
||||
jmp finish_parse_message
|
||||
|
||||
cave_outer_look_at_curtain:
|
||||
ldx #<cave_outer_look_curtain_message
|
||||
ldy #>cave_outer_look_curtain_message
|
||||
jmp finish_parse_message
|
||||
|
||||
cave_outer_look_at_door:
|
||||
ldx #<cave_outer_look_door_message
|
||||
ldy #>cave_outer_look_door_message
|
||||
jmp finish_parse_message
|
||||
|
||||
cave_outer_look_at_openings:
|
||||
ldx #<cave_outer_look_openings_message
|
||||
ldy #>cave_outer_look_openings_message
|
||||
jmp finish_parse_message
|
||||
|
||||
cave_outer_look_at_skeleton:
|
||||
ldx #<cave_outer_look_skeleton_message
|
||||
ldy #>cave_outer_look_skeleton_message
|
||||
jmp finish_parse_message
|
||||
|
||||
|
||||
;================
|
||||
; climb
|
||||
;================
|
||||
cave_outer_climb:
|
||||
|
||||
lda CURRENT_NOUN
|
||||
|
||||
cmp #NOUN_CLIFF
|
||||
beq cave_outer_do_climb
|
||||
cmp #NOUN_NONE
|
||||
beq cave_outer_do_climb
|
||||
|
||||
jmp parse_common_unknown
|
||||
|
||||
cave_outer_do_climb:
|
||||
ldx #<cave_outer_climb_message
|
||||
ldy #>cave_outer_climb_message
|
||||
jmp finish_parse_message
|
||||
|
||||
|
||||
;=======================
|
||||
;=======================
|
||||
;=======================
|
||||
; Trogdor Cave Outer -- Keeper 1
|
||||
;=======================
|
||||
;=======================
|
||||
;=======================
|
||||
|
||||
keeper1_verb_table:
|
||||
.byte VERB_TAKE
|
||||
.word keeper1_take-1
|
||||
.byte VERB_GIVE
|
||||
.word keeper1_give-1
|
||||
.byte 0
|
||||
|
||||
;=============================
|
||||
; take
|
||||
;=============================
|
||||
; can only take quiz
|
||||
;
|
||||
|
||||
keeper1_take:
|
||||
; lda IN_QUIZ
|
||||
; bne actual_quiz
|
||||
; ; it not being quizzed, can't try to take it??
|
||||
; jmp parse_common_get ; is this the right path
|
||||
|
||||
actual_quiz:
|
||||
|
||||
lda CURRENT_NOUN
|
||||
|
||||
cmp #NOUN_QUIZ
|
||||
beq cave_outer_take_quiz
|
||||
|
||||
; if not say quiz, give hint
|
||||
|
||||
cave_outer_hint:
|
||||
ldx #<cave_outer_keeper_wants_message
|
||||
ldy #>cave_outer_keeper_wants_message
|
||||
jmp finish_parse_message
|
||||
|
||||
cave_outer_take_quiz:
|
||||
inc IN_QUIZ ; make it 2 which means wait for answer
|
||||
|
||||
jsr random8
|
||||
cmp #85
|
||||
bcc keeper1_quiz3
|
||||
cmp #170
|
||||
bcc keeper1_quiz2
|
||||
keeper1_quiz1:
|
||||
lda #0
|
||||
ldx #<cave_outer_quiz1_1
|
||||
ldy #>cave_outer_quiz1_1
|
||||
jmp keeper1_quiz_common
|
||||
|
||||
keeper1_quiz2:
|
||||
lda #1
|
||||
ldx #<cave_outer_quiz1_2
|
||||
ldy #>cave_outer_quiz1_2
|
||||
jmp keeper1_quiz_common
|
||||
|
||||
keeper1_quiz3:
|
||||
lda #2
|
||||
ldx #<cave_outer_quiz1_3
|
||||
ldy #>cave_outer_quiz1_3
|
||||
keeper1_quiz_common:
|
||||
sta WHICH_QUIZ
|
||||
jmp finish_parse_message_nowait
|
||||
|
||||
|
||||
;=============================
|
||||
; give
|
||||
;=============================
|
||||
; can only give sub/sandwich
|
||||
|
||||
keeper1_give:
|
||||
|
||||
lda CURRENT_NOUN
|
||||
|
||||
cmp #NOUN_SUB
|
||||
beq cave_outer_give_sub
|
||||
cmp #NOUN_SANDWICH
|
||||
beq cave_outer_give_sandwich
|
||||
|
||||
cave_outer_give_sub:
|
||||
cave_outer_give_sandwich:
|
||||
|
||||
ldx #<cave_outer_give_sub_message
|
||||
ldy #>cave_outer_give_sub_message
|
||||
jsr finish_parse_message
|
||||
|
||||
jsr cave_outer_get_shield
|
||||
|
||||
; FIXME: back out the keeper
|
||||
|
||||
rts
|
||||
|
||||
parse_quiz_unknown:
|
||||
ldx #<cave_outer_keeper_wants_message
|
||||
ldy #>cave_outer_keeper_wants_message
|
||||
jmp finish_parse_message
|
||||
|
||||
verb_table = $BF00
|
||||
|
||||
|
||||
setup_quiz_verb_table:
|
||||
ldx #0
|
||||
unknown_loop:
|
||||
lda #<(parse_quiz_unknown-1)
|
||||
sta verb_table,X
|
||||
lda #>(parse_quiz_unknown-1)
|
||||
sta verb_table+1,X
|
||||
inx
|
||||
inx
|
||||
cpx #(VERB_ALL_DONE*2)
|
||||
bne unknown_loop
|
||||
|
||||
rts
|
||||
|
||||
;=============================
|
||||
; you got the shield somehow
|
||||
;=============================
|
||||
cave_outer_get_shield:
|
||||
|
||||
lda #0
|
||||
sta IN_QUIZ
|
||||
|
||||
; re-set up the verb table
|
||||
|
||||
jsr setup_heights_verb_table
|
||||
|
||||
; actually get the shield
|
||||
|
||||
lda INVENTORY_2
|
||||
ora #INV2_TROGSHIELD ; get the shield
|
||||
sta INVENTORY_2
|
||||
|
||||
; score points
|
||||
lda #5
|
||||
jsr score_points
|
||||
|
||||
; FIXME: load new peasant sprite with shield
|
||||
|
||||
rts
|
||||
|
||||
|
||||
.include "../text/dialog_cliff_heights.inc"
|
||||
|
@ -1,6 +1,7 @@
|
||||
|
||||
HGR_SPRITE = ../../../../utils/hgr-utils/hgr_make_sprite
|
||||
|
||||
all: lightning_sprites.inc ron_sprites.inc
|
||||
all: lightning_sprites.inc
|
||||
|
||||
lightning_sprites.inc: lightning.png
|
||||
$(HGR_SPRITE) -s -l small_lightning1 lightning.png 14 3 27 14 > lightning_sprites.inc
|
||||
@ -12,34 +13,7 @@ lightning_sprites.inc: lightning.png
|
||||
$(HGR_SPRITE) -s -l big_lightning3 lightning.png 112 51 167 118 >> lightning_sprites.inc
|
||||
$(HGR_SPRITE) -s -l big_lightning0 lightning.png 182 51 237 118 >> lightning_sprites.inc
|
||||
|
||||
ron_sprites.inc: keeper1_sprites.png
|
||||
$(HGR_SPRITE) -l ron0 keeper1_sprites.png 14 32 27 61 > ron_sprites.inc
|
||||
$(HGR_SPRITE) -l ron1 keeper1_sprites.png 42 32 55 62 >> ron_sprites.inc
|
||||
$(HGR_SPRITE) -l ron2 keeper1_sprites.png 70 32 83 62 >> ron_sprites.inc
|
||||
$(HGR_SPRITE) -l ron3 keeper1_sprites.png 98 32 111 62 >> ron_sprites.inc
|
||||
$(HGR_SPRITE) -l ron4 keeper1_sprites.png 126 32 139 62 >> ron_sprites.inc
|
||||
$(HGR_SPRITE) -l ron0_mask keeper1_sprites.png 14 63 27 93 >> ron_sprites.inc
|
||||
$(HGR_SPRITE) -l ron1_mask keeper1_sprites.png 42 63 55 93 >> ron_sprites.inc
|
||||
$(HGR_SPRITE) -l ron2_mask keeper1_sprites.png 70 63 83 93 >> ron_sprites.inc
|
||||
$(HGR_SPRITE) -l ron3_mask keeper1_sprites.png 98 63 111 93 >> ron_sprites.inc
|
||||
$(HGR_SPRITE) -l ron4_mask keeper1_sprites.png 126 63 139 93 >> ron_sprites.inc
|
||||
$(HGR_SPRITE) -l keeper0 keeper1_sprites.png 14 128 27 156 >> ron_sprites.inc
|
||||
$(HGR_SPRITE) -l keeper1 keeper1_sprites.png 42 128 55 156 >> ron_sprites.inc
|
||||
$(HGR_SPRITE) -l keeper2 keeper1_sprites.png 70 128 90 156 >> ron_sprites.inc
|
||||
$(HGR_SPRITE) -l keeper3 keeper1_sprites.png 98 128 118 156 >> ron_sprites.inc
|
||||
$(HGR_SPRITE) -l keeper4 keeper1_sprites.png 126 128 146 156 >> ron_sprites.inc
|
||||
$(HGR_SPRITE) -l keeper5 keeper1_sprites.png 154 128 174 156 >> ron_sprites.inc
|
||||
$(HGR_SPRITE) -l keeper6 keeper1_sprites.png 182 128 202 156 >> ron_sprites.inc
|
||||
$(HGR_SPRITE) -l keeper7 keeper1_sprites.png 210 128 230 156 >> ron_sprites.inc
|
||||
$(HGR_SPRITE) -l keeper0_mask keeper1_sprites.png 14 159 27 187 >> ron_sprites.inc
|
||||
$(HGR_SPRITE) -l keeper1_mask keeper1_sprites.png 42 159 55 187 >> ron_sprites.inc
|
||||
$(HGR_SPRITE) -l keeper2_mask keeper1_sprites.png 70 159 90 187 >> ron_sprites.inc
|
||||
$(HGR_SPRITE) -l keeper3_mask keeper1_sprites.png 98 159 118 187 >> ron_sprites.inc
|
||||
$(HGR_SPRITE) -l keeper4_mask keeper1_sprites.png 126 159 146 187 >> ron_sprites.inc
|
||||
$(HGR_SPRITE) -l keeper5_mask keeper1_sprites.png 154 159 174 187 >> ron_sprites.inc
|
||||
$(HGR_SPRITE) -l keeper6_mask keeper1_sprites.png 182 159 202 187 >> ron_sprites.inc
|
||||
$(HGR_SPRITE) -l keeper7_mask keeper1_sprites.png 210 159 230 187 >> ron_sprites.inc
|
||||
|
||||
|
||||
clean:
|
||||
rm -f *~ lightning_sprites.inc ron_sprites.inc
|
||||
rm -f *~ lightning_sprites.inc \
|
||||
keeper1_sprites.inc ron_sprites.inc \
|
||||
keeper2_sprites.inc
|
||||
|
2
games/peasant/common_defines.inc
Normal file
@ -0,0 +1,2 @@
|
||||
|
||||
collision_location = $bc00 ; FIXME: how big? somewhere else?
|
@ -29,11 +29,20 @@ T 1 = MAP 2556 bytes 2T (8192) 6k free
|
||||
T 3 = ARCHERY 2016 bytes 4T (16384) 14k free
|
||||
T 7 = INSIDE 13457 bytes 4T (16384) 3k free
|
||||
T 11 = INN 8935 bytes 4T (16384) 7k free
|
||||
|
||||
Disk4 Map (disk has 35 tracks, each 4k in size)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
T 0 = WBOOT4
|
||||
T 1 = CLIFF_BASE 6071 bytes 2T (8192) 2k free
|
||||
T 3 = CLIMB 12448 bytes 4T (16384) 4k free
|
||||
T 7 = HEIGHTS 14948 bytes 4T (16384) 1k free
|
||||
T 11 = OUTER 14948 bytes 4T (16384) 1k free
|
||||
T 15 = TROGDOR 14771 bytes 4T (16384) 3k free
|
||||
T 19 = ENDING 17037 bytes 5T (20480) 3k free
|
||||
T 24 = CLIFF_BASE 6071 bytes 2T (8192) 2k free
|
||||
T 26 = CLIMB 12448 bytes 4T (16384) 4k free
|
||||
T 30 = HEIGHTS 14948 bytes 4T (16384) 1k free
|
||||
SECOND COPY OF MUSIC TO AVOID DISK SWAP? PEASANT SPRITES?
|
||||
S.A.M. CODE?
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
51
games/peasant/outer/Makefile
Normal file
@ -0,0 +1,51 @@
|
||||
include ../../../Makefile.inc
|
||||
|
||||
LINKER_SCRIPTS = ../../../linker_scripts
|
||||
|
||||
all: OUTER
|
||||
|
||||
####
|
||||
|
||||
OUTER: outer.o
|
||||
ld65 -o OUTER outer.o -C $(LINKER_SCRIPTS)/apple2_6000.inc
|
||||
|
||||
outer.o: outer.s \
|
||||
../zp.inc ../hardware.inc ../qload.inc ../version.inc \
|
||||
../inventory/inventory.inc \
|
||||
../parse_input.inc ../common_defines.inc \
|
||||
outer_actions.s \
|
||||
../text/DIALOG_OUTER.ZX02 ../text/dialog_outer.inc \
|
||||
graphics_outer/outer_graphics.inc \
|
||||
graphics_outer/outer_priority.inc \
|
||||
sprites_outer/ron_sprites.inc \
|
||||
sprites_outer/keeper1_sprites.inc \
|
||||
sprites_outer/keeper2_sprites.inc \
|
||||
../sprites_peasant/robe_sprites.zx02 \
|
||||
../draw_peasant.s ../move_peasant.s \
|
||||
../gr_copy.s ../hgr_copy.s \
|
||||
../new_map_location.s \
|
||||
../keyboard.s \
|
||||
../wait.s ../wait_a_bit.s
|
||||
ca65 -o outer.o outer.s -l outer.lst
|
||||
|
||||
###
|
||||
|
||||
graphics_outer/outer_graphics.inc:
|
||||
cd graphics_outer && make
|
||||
|
||||
###
|
||||
|
||||
sprites_outer/ron_sprites.inc:
|
||||
cd sprites_outer && make
|
||||
|
||||
###
|
||||
|
||||
distclean:
|
||||
make clean
|
||||
cd graphics_outer && make clean
|
||||
cd sprites_outer && make clean
|
||||
|
||||
###
|
||||
|
||||
clean:
|
||||
rm -f *~ *.o *.lst OUTER
|
50
games/peasant/outer/graphics_outer/Makefile
Normal file
@ -0,0 +1,50 @@
|
||||
PNG2GR = ../../../../utils/gr-utils/png2gr
|
||||
PNG2HGR = ../../../../utils/hgr-utils/png2hgr
|
||||
ZX02 = ~/research/6502_compression/zx02.git/build/zx02
|
||||
PNG2COLLISION = ../../../../utils/gr-utils/png2collision
|
||||
|
||||
all: outer_graphics.inc \
|
||||
outer_priority.inc
|
||||
|
||||
###
|
||||
|
||||
outer_graphics.inc: \
|
||||
outer.zx02
|
||||
echo "outer_zx02: .incbin \"outer.zx02\"" > outer_graphics.inc
|
||||
|
||||
###
|
||||
|
||||
outer_priority.inc: \
|
||||
outer_priority.zx02
|
||||
echo "outer_priority_zx02: .incbin \"outer_priority.zx02\"" > outer_priority.inc
|
||||
|
||||
###
|
||||
|
||||
outer.zx02: outer.hgr
|
||||
$(ZX02) -f outer.hgr outer.zx02
|
||||
|
||||
outer.hgr: outer.png
|
||||
$(PNG2HGR) outer.png > outer.hgr
|
||||
|
||||
####
|
||||
|
||||
outer_priority.zx02: outer_priority.combined
|
||||
$(ZX02) -f outer_priority.combined outer_priority.zx02
|
||||
|
||||
outer_priority.combined: outer_priority.gr outer_collision.bin
|
||||
cat outer_priority.gr > outer_priority.combined
|
||||
cat outer_collision.bin >> outer_priority.combined
|
||||
|
||||
outer_priority.gr: outer_priority.png
|
||||
$(PNG2GR) outer_priority.png outer_priority.gr
|
||||
|
||||
outer_collision.bin: outer_collision.png
|
||||
$(PNG2COLLISION) outer_collision.png outer_collision.bin
|
||||
|
||||
####
|
||||
|
||||
|
||||
clean:
|
||||
rm -f *~ outer_graphics.inc outer_priority.inc \
|
||||
*.bin *.combined *.zx02 *.gr *.hgr
|
||||
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 3.0 KiB |
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 7.4 KiB After Width: | Height: | Size: 7.4 KiB |
1024
games/peasant/outer/outer.s
Normal file
233
games/peasant/outer/outer_actions.s
Normal file
@ -0,0 +1,233 @@
|
||||
.include "../tokens.inc"
|
||||
|
||||
;=======================
|
||||
;=======================
|
||||
;=======================
|
||||
; Trogdor Cave Outer
|
||||
;=======================
|
||||
;=======================
|
||||
;=======================
|
||||
|
||||
cave_outer_verb_table:
|
||||
.byte VERB_CLIMB
|
||||
.word cave_outer_climb-1
|
||||
.byte VERB_LOOK
|
||||
.word cave_outer_look-1
|
||||
.byte 0
|
||||
|
||||
;=================
|
||||
; look
|
||||
;=================
|
||||
|
||||
cave_outer_look:
|
||||
|
||||
lda CURRENT_NOUN
|
||||
|
||||
cmp #NOUN_BEADS
|
||||
beq cave_outer_look_at_curtain
|
||||
cmp #NOUN_CURTAIN
|
||||
beq cave_outer_look_at_curtain
|
||||
cmp #NOUN_DOOR
|
||||
beq cave_outer_look_at_door
|
||||
cmp #NOUN_SKELETON
|
||||
beq cave_outer_look_at_skeleton
|
||||
cmp #NOUN_OPENINGS
|
||||
beq cave_outer_look_at_openings
|
||||
cmp #NOUN_NONE
|
||||
beq cave_outer_look_at
|
||||
|
||||
jmp parse_common_look
|
||||
|
||||
cave_outer_look_at:
|
||||
ldx #<cave_outer_look_message
|
||||
ldy #>cave_outer_look_message
|
||||
jmp finish_parse_message
|
||||
|
||||
cave_outer_look_at_curtain:
|
||||
ldx #<cave_outer_look_curtain_message
|
||||
ldy #>cave_outer_look_curtain_message
|
||||
jmp finish_parse_message
|
||||
|
||||
cave_outer_look_at_door:
|
||||
ldx #<cave_outer_look_door_message
|
||||
ldy #>cave_outer_look_door_message
|
||||
jmp finish_parse_message
|
||||
|
||||
cave_outer_look_at_openings:
|
||||
ldx #<cave_outer_look_openings_message
|
||||
ldy #>cave_outer_look_openings_message
|
||||
jmp finish_parse_message
|
||||
|
||||
cave_outer_look_at_skeleton:
|
||||
ldx #<cave_outer_look_skeleton_message
|
||||
ldy #>cave_outer_look_skeleton_message
|
||||
jmp finish_parse_message
|
||||
|
||||
|
||||
;================
|
||||
; climb
|
||||
;================
|
||||
cave_outer_climb:
|
||||
|
||||
lda CURRENT_NOUN
|
||||
|
||||
cmp #NOUN_CLIFF
|
||||
beq cave_outer_do_climb
|
||||
cmp #NOUN_NONE
|
||||
beq cave_outer_do_climb
|
||||
|
||||
jmp parse_common_unknown
|
||||
|
||||
cave_outer_do_climb:
|
||||
ldx #<cave_outer_climb_message
|
||||
ldy #>cave_outer_climb_message
|
||||
jmp finish_parse_message
|
||||
|
||||
|
||||
;=======================
|
||||
;=======================
|
||||
;=======================
|
||||
; Trogdor Cave Outer -- Keeper 1
|
||||
;=======================
|
||||
;=======================
|
||||
;=======================
|
||||
|
||||
keeper1_verb_table:
|
||||
.byte VERB_TAKE
|
||||
.word keeper1_take-1
|
||||
.byte VERB_GIVE
|
||||
.word keeper1_give-1
|
||||
.byte 0
|
||||
|
||||
;=============================
|
||||
; take
|
||||
;=============================
|
||||
; can only take quiz
|
||||
;
|
||||
|
||||
keeper1_take:
|
||||
; lda IN_QUIZ
|
||||
; bne actual_quiz
|
||||
; ; it not being quizzed, can't try to take it??
|
||||
; jmp parse_common_get ; is this the right path
|
||||
|
||||
actual_quiz:
|
||||
|
||||
lda CURRENT_NOUN
|
||||
|
||||
cmp #NOUN_QUIZ
|
||||
beq cave_outer_take_quiz
|
||||
|
||||
; if not say quiz, give hint
|
||||
|
||||
cave_outer_hint:
|
||||
ldx #<cave_outer_keeper_wants_message
|
||||
ldy #>cave_outer_keeper_wants_message
|
||||
jmp finish_parse_message
|
||||
|
||||
cave_outer_take_quiz:
|
||||
inc IN_QUIZ ; make it 2 which means wait for answer
|
||||
|
||||
jsr random8
|
||||
cmp #85
|
||||
bcc keeper1_quiz3
|
||||
cmp #170
|
||||
bcc keeper1_quiz2
|
||||
keeper1_quiz1:
|
||||
lda #0
|
||||
ldx #<cave_outer_quiz1_1
|
||||
ldy #>cave_outer_quiz1_1
|
||||
jmp keeper1_quiz_common
|
||||
|
||||
keeper1_quiz2:
|
||||
lda #1
|
||||
ldx #<cave_outer_quiz1_2
|
||||
ldy #>cave_outer_quiz1_2
|
||||
jmp keeper1_quiz_common
|
||||
|
||||
keeper1_quiz3:
|
||||
lda #2
|
||||
ldx #<cave_outer_quiz1_3
|
||||
ldy #>cave_outer_quiz1_3
|
||||
keeper1_quiz_common:
|
||||
sta WHICH_QUIZ
|
||||
jmp finish_parse_message_nowait
|
||||
|
||||
|
||||
;=============================
|
||||
; give
|
||||
;=============================
|
||||
; can only give sub/sandwich
|
||||
|
||||
keeper1_give:
|
||||
|
||||
lda CURRENT_NOUN
|
||||
|
||||
cmp #NOUN_SUB
|
||||
beq cave_outer_give_sub
|
||||
cmp #NOUN_SANDWICH
|
||||
beq cave_outer_give_sandwich
|
||||
|
||||
cave_outer_give_sub:
|
||||
cave_outer_give_sandwich:
|
||||
|
||||
ldx #<cave_outer_give_sub_message
|
||||
ldy #>cave_outer_give_sub_message
|
||||
jsr finish_parse_message
|
||||
|
||||
jsr cave_outer_get_shield
|
||||
|
||||
; FIXME: back out the keeper
|
||||
|
||||
rts
|
||||
|
||||
parse_quiz_unknown:
|
||||
ldx #<cave_outer_keeper_wants_message
|
||||
ldy #>cave_outer_keeper_wants_message
|
||||
jmp finish_parse_message
|
||||
|
||||
verb_table = $BF00
|
||||
|
||||
|
||||
setup_quiz_verb_table:
|
||||
ldx #0
|
||||
unknown_loop:
|
||||
lda #<(parse_quiz_unknown-1)
|
||||
sta verb_table,X
|
||||
lda #>(parse_quiz_unknown-1)
|
||||
sta verb_table+1,X
|
||||
inx
|
||||
inx
|
||||
cpx #(VERB_ALL_DONE*2)
|
||||
bne unknown_loop
|
||||
|
||||
rts
|
||||
|
||||
;=============================
|
||||
; you got the shield somehow
|
||||
;=============================
|
||||
cave_outer_get_shield:
|
||||
|
||||
lda #0
|
||||
sta IN_QUIZ
|
||||
|
||||
; re-set up the verb table
|
||||
|
||||
jsr setup_outer_verb_table
|
||||
|
||||
; actually get the shield
|
||||
|
||||
lda INVENTORY_2
|
||||
ora #INV2_TROGSHIELD ; get the shield
|
||||
sta INVENTORY_2
|
||||
|
||||
; score points
|
||||
lda #5
|
||||
jsr score_points
|
||||
|
||||
; FIXME: load new peasant sprite with shield
|
||||
|
||||
rts
|
||||
|
||||
|
||||
.include "../text/dialog_outer.inc"
|
59
games/peasant/outer/sprites_outer/Makefile
Normal file
@ -0,0 +1,59 @@
|
||||
|
||||
HGR_SPRITE = ../../../../utils/hgr-utils/hgr_make_sprite
|
||||
|
||||
all: keeper1_sprites.inc ron_sprites.inc \
|
||||
keeper2_sprites.inc
|
||||
|
||||
keeper1_sprites.inc: keeper1_sprites.png
|
||||
$(HGR_SPRITE) -l keeper_r0 keeper1_sprites.png 14 128 27 156 > keeper1_sprites.inc
|
||||
$(HGR_SPRITE) -l keeper_r1 keeper1_sprites.png 42 128 55 156 >> keeper1_sprites.inc
|
||||
$(HGR_SPRITE) -l keeper_r2 keeper1_sprites.png 70 128 90 156 >> keeper1_sprites.inc
|
||||
$(HGR_SPRITE) -l keeper_r3 keeper1_sprites.png 98 128 118 156 >> keeper1_sprites.inc
|
||||
$(HGR_SPRITE) -l keeper_r4 keeper1_sprites.png 126 128 146 156 >> keeper1_sprites.inc
|
||||
$(HGR_SPRITE) -l keeper_r5 keeper1_sprites.png 154 128 174 156 >> keeper1_sprites.inc
|
||||
$(HGR_SPRITE) -l keeper_r6 keeper1_sprites.png 182 128 202 156 >> keeper1_sprites.inc
|
||||
$(HGR_SPRITE) -l keeper_r7 keeper1_sprites.png 210 128 230 156 >> keeper1_sprites.inc
|
||||
$(HGR_SPRITE) -l keeper_r0_mask keeper1_sprites.png 14 159 27 187 >> keeper1_sprites.inc
|
||||
$(HGR_SPRITE) -l keeper_r1_mask keeper1_sprites.png 42 159 55 187 >> keeper1_sprites.inc
|
||||
$(HGR_SPRITE) -l keeper_r2_mask keeper1_sprites.png 70 159 90 187 >> keeper1_sprites.inc
|
||||
$(HGR_SPRITE) -l keeper_r3_mask keeper1_sprites.png 98 159 118 187 >> keeper1_sprites.inc
|
||||
$(HGR_SPRITE) -l keeper_r4_mask keeper1_sprites.png 126 159 146 187 >> keeper1_sprites.inc
|
||||
$(HGR_SPRITE) -l keeper_r5_mask keeper1_sprites.png 154 159 174 187 >> keeper1_sprites.inc
|
||||
$(HGR_SPRITE) -l keeper_r6_mask keeper1_sprites.png 182 159 202 187 >> keeper1_sprites.inc
|
||||
$(HGR_SPRITE) -l keeper_r7_mask keeper1_sprites.png 210 159 230 187 >> keeper1_sprites.inc
|
||||
|
||||
ron_sprites.inc: keeper1_sprites.png
|
||||
$(HGR_SPRITE) -l ron0 keeper1_sprites.png 14 32 27 61 > ron_sprites.inc
|
||||
$(HGR_SPRITE) -l ron1 keeper1_sprites.png 42 32 55 62 >> ron_sprites.inc
|
||||
$(HGR_SPRITE) -l ron2 keeper1_sprites.png 70 32 83 62 >> ron_sprites.inc
|
||||
$(HGR_SPRITE) -l ron3 keeper1_sprites.png 98 32 111 62 >> ron_sprites.inc
|
||||
$(HGR_SPRITE) -l ron4 keeper1_sprites.png 126 32 139 62 >> ron_sprites.inc
|
||||
$(HGR_SPRITE) -l ron0_mask keeper1_sprites.png 14 63 27 93 >> ron_sprites.inc
|
||||
$(HGR_SPRITE) -l ron1_mask keeper1_sprites.png 42 63 55 93 >> ron_sprites.inc
|
||||
$(HGR_SPRITE) -l ron2_mask keeper1_sprites.png 70 63 83 93 >> ron_sprites.inc
|
||||
$(HGR_SPRITE) -l ron3_mask keeper1_sprites.png 98 63 111 93 >> ron_sprites.inc
|
||||
$(HGR_SPRITE) -l ron4_mask keeper1_sprites.png 126 63 139 93 >> ron_sprites.inc
|
||||
|
||||
|
||||
keeper2_sprites.inc: keeper2_sprites.png
|
||||
$(HGR_SPRITE) -l keeper_l0 keeper2_sprites.png 14 128 27 156 > keeper2_sprites.inc
|
||||
$(HGR_SPRITE) -l keeper_l1 keeper2_sprites.png 42 128 55 156 >> keeper2_sprites.inc
|
||||
$(HGR_SPRITE) -l keeper_l2 keeper2_sprites.png 70 128 90 156 >> keeper2_sprites.inc
|
||||
$(HGR_SPRITE) -l keeper_l3 keeper2_sprites.png 98 128 118 156 >> keeper2_sprites.inc
|
||||
$(HGR_SPRITE) -l keeper_l4 keeper2_sprites.png 126 128 146 156 >> keeper2_sprites.inc
|
||||
$(HGR_SPRITE) -l keeper_l5 keeper2_sprites.png 154 128 174 156 >> keeper2_sprites.inc
|
||||
$(HGR_SPRITE) -l keeper_l6 keeper2_sprites.png 182 128 202 156 >> keeper2_sprites.inc
|
||||
$(HGR_SPRITE) -l keeper_l7 keeper2_sprites.png 210 128 230 156 >> keeper2_sprites.inc
|
||||
$(HGR_SPRITE) -l keeper_l0_mask keeper2_sprites.png 14 159 27 187 >> keeper2_sprites.inc
|
||||
$(HGR_SPRITE) -l keeper_l1_mask keeper2_sprites.png 42 159 55 187 >> keeper2_sprites.inc
|
||||
$(HGR_SPRITE) -l keeper_l2_mask keeper2_sprites.png 70 159 90 187 >> keeper2_sprites.inc
|
||||
$(HGR_SPRITE) -l keeper_l3_mask keeper2_sprites.png 98 159 118 187 >> keeper2_sprites.inc
|
||||
$(HGR_SPRITE) -l keeper_l4_mask keeper2_sprites.png 126 159 146 187 >> keeper2_sprites.inc
|
||||
$(HGR_SPRITE) -l keeper_l5_mask keeper2_sprites.png 154 159 174 187 >> keeper2_sprites.inc
|
||||
$(HGR_SPRITE) -l keeper_l6_mask keeper2_sprites.png 182 159 202 187 >> keeper2_sprites.inc
|
||||
$(HGR_SPRITE) -l keeper_l7_mask keeper2_sprites.png 210 159 230 187 >> keeper2_sprites.inc
|
||||
|
||||
clean:
|
||||
rm -f *~ \
|
||||
keeper1_sprites.inc ron_sprites.inc \
|
||||
keeper2_sprites.inc
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
@ -15,6 +15,7 @@ all: dump_text shrink_text \
|
||||
DIALOG_INN.ZX02 dialog_inn.inc \
|
||||
DIALOG_CLIFF_BASE.ZX02 dialog_cliff_base.inc \
|
||||
DIALOG_CLIFF_HEIGHTS.ZX02 dialog_cliff_heights.inc \
|
||||
DIALOG_OUTER.ZX02 dialog_outer.inc \
|
||||
DIALOG_TROGDOR.ZX02 dialog_trogdor.inc \
|
||||
DIALOG_CLIMB.ZX02 dialog_climb.inc \
|
||||
common.inc.lookup \
|
||||
@ -70,6 +71,23 @@ dialog_cliff_heights.o: dialog_cliff_heights.s \
|
||||
dialog_cliff_heights.inc: ../generate_all_symbols dialog_cliff_heights
|
||||
../generate_all_symbols -a 0xd000 dialog_cliff_heights.lst > dialog_cliff_heights.inc
|
||||
|
||||
###
|
||||
|
||||
DIALOG_OUTER.ZX02: dialog_outer
|
||||
$(ZX02) -f dialog_outer DIALOG_OUTER.ZX02
|
||||
|
||||
dialog_outer: dialog_outer.o
|
||||
ld65 -o dialog_outer dialog_outer.o -C $(LINKER_SCRIPTS)/apple2_d000.inc
|
||||
|
||||
dialog_outer.o: dialog_outer.s \
|
||||
outer.inc.lookup
|
||||
ca65 -o dialog_outer.o dialog_outer.s -l dialog_outer.lst
|
||||
|
||||
dialog_outer.inc: ../generate_all_symbols dialog_outer
|
||||
../generate_all_symbols -a 0xd000 dialog_outer.lst > dialog_outer.inc
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
###
|
||||
@ -258,6 +276,9 @@ mud.inc.lookup: mud.inc shrink_text
|
||||
ned_cottage.inc.lookup: ned_cottage.inc shrink_text
|
||||
./shrink_text < ned_cottage.inc > ned_cottage.inc.lookup
|
||||
|
||||
outer.inc.lookup: outer.inc shrink_text
|
||||
./shrink_text < outer.inc > outer.inc.lookup
|
||||
|
||||
outside_inn.inc.lookup: outside_inn.inc shrink_text
|
||||
./shrink_text < outside_inn.inc > outside_inn.inc.lookup
|
||||
|
||||
|
@ -48,399 +48,3 @@ cliff_heights_get_bone_message:
|
||||
.byte "Eww. No. Grody. You're",13
|
||||
.byte "grody. No. Eww.",0
|
||||
|
||||
|
||||
;======================================
|
||||
; Trogdor's Outer Sanctum / Outer Cave
|
||||
;======================================
|
||||
|
||||
; note: if you don't have the item, it doesn't give
|
||||
; you an option and launches directly into the quiz
|
||||
|
||||
; +5 POINTS (give sub or answer question)
|
||||
; +5 POINTS (give soda or answer question)
|
||||
; +5 POINTS (give pills or answer question)
|
||||
|
||||
; walk in, you can walk out again. once the keeper appears
|
||||
; you are stuck and have to talk
|
||||
; will only say the "I think he wants... text
|
||||
|
||||
; + look
|
||||
cave_outer_look_message:
|
||||
.byte "There are 3 openings with a",13
|
||||
.byte "little cliff in front of",13
|
||||
.byte "each. A beaded curtain",13
|
||||
.byte "hangs in a doorway on the",13
|
||||
.byte "far wall.",0
|
||||
|
||||
; + look curtain/beads
|
||||
cave_outer_look_curtain_message:
|
||||
.byte "That thing's awesome. You",13
|
||||
.byte "always wanted one for your",13
|
||||
.byte "dorm room but your roommate",13
|
||||
.byte "was a total drag and said",13
|
||||
.byte "no.",0
|
||||
|
||||
; + look door
|
||||
cave_outer_look_door_message:
|
||||
.byte "A wicked beaded curtain",13
|
||||
.byte "hangs in the doorway.",0
|
||||
|
||||
; + look openings
|
||||
cave_outer_look_openings_message:
|
||||
.byte "They're mysterious and out",13
|
||||
.byte "of reach. Like girls were",13
|
||||
.byte "to you in high school.",0
|
||||
|
||||
; + look skeleton
|
||||
cave_outer_look_skeleton_message:
|
||||
.byte "You can't be sure but you",13
|
||||
.byte "think those are dead person",13
|
||||
.byte "bones.",0
|
||||
|
||||
; + get bones
|
||||
cave_outer_get_bones_message:
|
||||
.byte "Eww. No. Grody. You're",13
|
||||
.byte "grody. No. Eww.",0
|
||||
|
||||
|
||||
|
||||
;=========================
|
||||
; First Keeper
|
||||
;=========================
|
||||
|
||||
; + (approached by first keeper)
|
||||
cave_outer_keeper1_message1:
|
||||
.byte "Foolish peasant! How dare",13
|
||||
.byte "you enter this fairly",13
|
||||
.byte "sacred chamber!",0
|
||||
|
||||
cave_outer_keeper1_message2:
|
||||
.byte "You explain that you're",13
|
||||
.byte "here to smote Trogdor and",13
|
||||
.byte "if he doesn't get outta",13
|
||||
.byte "your way, him too!",0
|
||||
|
||||
cave_outer_keeper1_message3:
|
||||
.byte "You cannot vanquish",13
|
||||
.byte "Trogdor! Only the Three",13
|
||||
.byte "Keepers of Trogdor hold the",13
|
||||
.byte "tools with which to destroy",13
|
||||
.byte "the Burninator. The",13
|
||||
.byte "Trog-Shield, the",13
|
||||
.byte "Trog-Helmet, and the",13
|
||||
.byte "Trog-Sword.",0
|
||||
|
||||
cave_outer_keeper1_message4:
|
||||
.byte "And the only way we'll give",13
|
||||
.byte "them up is if you answer",13
|
||||
.byte "the three Trog-Trivia",13
|
||||
.byte "questions correctly.",0
|
||||
|
||||
; only say this if have sub
|
||||
cave_outer_keeper1_message5:
|
||||
.byte "Unless you happen to have",13
|
||||
.byte "something to eat on ya.",13
|
||||
.byte "Then we could forego my",13
|
||||
.byte "question.",0
|
||||
|
||||
; can't leave or do anything except take quiz or give sub
|
||||
; prints a message saying so
|
||||
|
||||
; Type any command other than "take the quiz" or "give (requested item)"
|
||||
; after being apporached by a Keeper
|
||||
cave_outer_keeper_wants_message:
|
||||
.byte "I think he wants something",13
|
||||
.byte "from your inventory. Or you",13
|
||||
.byte "could just tell him ",34,"take",13
|
||||
.byte "the quiz",34,0
|
||||
|
||||
|
||||
; take quiz
|
||||
|
||||
cave_outer_keeper_take_quiz:
|
||||
.byte "Your shake off the Keeper of",13
|
||||
.byte "Trogdor's request.",13
|
||||
.byte "Seriously - this guy should",13
|
||||
.byte "get a job.",0
|
||||
|
||||
; if you say other than A/B/C then...
|
||||
; Peasant fool! Choose A, B,
|
||||
; or C!
|
||||
; followed by repeat of the question
|
||||
|
||||
cave_outer_quiz1_1:
|
||||
.byte "Okay here goes. What did",13
|
||||
.byte "you win from the Archery",13
|
||||
.byte "game?",13
|
||||
.byte "A. SuperBow FunTime TM",13
|
||||
.byte "B. SuperTime FunBow TM",13 ; correct
|
||||
.byte "C. SuperFun BowTime TM",0
|
||||
|
||||
cave_outer_quiz1_1again:
|
||||
.byte "Peasant fool! Choose A, B,",13
|
||||
.byte "or C!",13
|
||||
.byte "What did you win from the",13
|
||||
.byte "Archery game?",13
|
||||
.byte "A. SuperBow FunTime TM",13
|
||||
.byte "B. SuperTime FunBow TM",13 ; correct
|
||||
.byte "C. SuperFun BowTime TM",0
|
||||
|
||||
cave_outer_quiz1_2:
|
||||
.byte "Okay here goes. What does",13
|
||||
.byte "Mendelev have you tell",13
|
||||
.byte "Dongolev?",13
|
||||
.byte "A. Haldo",13 ; correct
|
||||
.byte "B. Hallo",13
|
||||
.byte "C. Allo",0
|
||||
|
||||
cave_outer_quiz1_2again:
|
||||
.byte "Peasant fool! Choose A, B,",13
|
||||
.byte "or C!",13
|
||||
.byte "What does Mendelev have you",13
|
||||
.byte "tell Dongolev?",13
|
||||
.byte "A. Haldo",13 ; correct
|
||||
.byte "B. Hallo",13
|
||||
.byte "C. Allo",0
|
||||
|
||||
cave_outer_quiz1_3:
|
||||
.byte "Okay here goes. What is the",13
|
||||
.byte "only creature the Jhonka",13
|
||||
.byte "fears?",13
|
||||
.byte "A. Poor Gary",13
|
||||
.byte "B. The Baby",13
|
||||
.byte "C. The Kerrek",0 ; correct
|
||||
|
||||
cave_outer_quiz1_3again:
|
||||
.byte "Peasant fool! Choose A, B,",13
|
||||
.byte "or C!",13
|
||||
.byte "What is the only creature",13
|
||||
.byte "the Jhonka fears?",13
|
||||
.byte "A. Poor Gary",13
|
||||
.byte "B. The Baby",13
|
||||
.byte "C. The Kerrek",0 ; correct
|
||||
|
||||
|
||||
; Response to Correct Answer
|
||||
; makes happy noise, then gives you +5 POINTS
|
||||
cave_outer_quiz1_correct:
|
||||
.byte 34,"Ah crap! You're right.",13
|
||||
.byte "Here, take this stupid",13
|
||||
.byte "Trog-Shield!",34,0
|
||||
|
||||
; Response to Incorrect Answer
|
||||
;
|
||||
|
||||
cave_outer_quiz1_wrong:
|
||||
.byte "Sorry peasant! You fail!",13
|
||||
.byte "And as punishment, you will",13
|
||||
.byte "be turned into... RON ",13
|
||||
.byte "CUMBERDALE!!",0
|
||||
|
||||
cave_outer_quiz1_wrong_part2:
|
||||
.byte "You ask who the crap Ron",13
|
||||
.byte "Cumberdale is.",0
|
||||
|
||||
cave_outer_quiz1_wrong_part3:
|
||||
.byte 34,"Just this kid from 4th",13
|
||||
.byte "grade that I really hated.",13
|
||||
.byte "But he was a BIG LOSER and",13
|
||||
.byte "HE SMELLED!",34,0
|
||||
|
||||
; wiggles hands, poof of smoke, turn into Ron
|
||||
; makes twinkly noise as wiggles hand, another noise (blrrp?) as poof of smoke
|
||||
cave_outer_quiz1_wrong_part4:
|
||||
.byte "Well, you not exactly dead.",13
|
||||
.byte "But there's no way you",13
|
||||
.byte "could defeat Trogdor as Ron",13
|
||||
.byte "Cumberdale. Your quest",13
|
||||
.byte "ends here. Thanks for",13
|
||||
.byte "playing.",0
|
||||
|
||||
|
||||
; + give sub, sandwich
|
||||
; slowly backs away, you suddenly have shield
|
||||
; +5 POINTS
|
||||
cave_outer_give_sub_message:
|
||||
cave_outer_give_sandwich_message:
|
||||
.byte "No way! I was just kidding",13
|
||||
.byte "but you've really got a",13
|
||||
.byte "meatball sub. This rules!",13
|
||||
.byte "Here, you can have the",13
|
||||
.byte "Trog-Shield.",0
|
||||
|
||||
; you now have the shield and can leave if you want
|
||||
; whole new walking animation
|
||||
|
||||
;=========================
|
||||
; Second Keeper
|
||||
;=========================
|
||||
|
||||
; + (approached by second keeper)
|
||||
; comes out and waggles his hands
|
||||
|
||||
.byte "Hold, peasant! You must",13
|
||||
.byte "answer the second dreaded",13
|
||||
.byte "Trog-Trivia question!",0
|
||||
|
||||
.byte "Or we could call it even if",13
|
||||
.byte "I had an ice cold drink",13
|
||||
.byte "right now.",0
|
||||
|
||||
; take quiz
|
||||
; + get a job again
|
||||
|
||||
|
||||
.byte "Listen careful now. Which",13
|
||||
.byte "one of these letters is the",13
|
||||
.byte "letter C?",13
|
||||
.byte "A. B",13
|
||||
.byte "B. C",13 ; correct
|
||||
.byte "C. A",0
|
||||
|
||||
.byte "Listen careful now. How",13
|
||||
.byte "many berry bushes are there",13
|
||||
.byte "in the whole kingdom of",13
|
||||
.byte "Peasantry?",13
|
||||
.byte "A. 4",13
|
||||
.byte "B. 5",13 ; [sic] correct?
|
||||
.byte "C. 6 ",0
|
||||
|
||||
.byte "Listen careful now. What",13
|
||||
.byte "was the Innkeeper's pantry",13
|
||||
.byte "full of?",13
|
||||
.byte "A. Epsom Salts",13
|
||||
.byte "B. Epson Printers",13
|
||||
.byte "C. Old Man Rub",0 ; correct
|
||||
|
||||
; Response to Correct Answer
|
||||
.byte 34,"That's right. Oh. This",13
|
||||
.byte "sucks. Guess I have to give",13
|
||||
.byte "you this Trog-Helmet.",13
|
||||
.byte "Dang.",0
|
||||
; backs out, you now have helm on, can leave
|
||||
|
||||
; Response to Incorrect Answer
|
||||
.byte 34,"WRONG! You are hereby",13
|
||||
.byte "cursed to write corny folk",13
|
||||
.byte "songs for the rest of",13
|
||||
.byte "eternity! The kind that",13
|
||||
.byte "only OLD PEOPLE LIKE!!",34,0
|
||||
|
||||
; waggles arms
|
||||
; you face forward, then play the guitar for like 5 seconds
|
||||
|
||||
.byte "Well, you not exactly dead.",13
|
||||
.byte "But you certainly can't",13
|
||||
.byte "face Trogdor after writing",13
|
||||
.byte "'Wheat Grows Sweet, But My",13
|
||||
.byte "Gal's Sweeter'. Your quest",13
|
||||
.byte "ends here. Thanks for",13
|
||||
.byte "playing.",0
|
||||
|
||||
; + give soda
|
||||
.byte "Sweet deal, peasant. I",13
|
||||
.byte "underestimated you. Wear",13
|
||||
.byte "this Trog-Helmet with",13
|
||||
.byte "style.",0
|
||||
|
||||
;=========================
|
||||
; Third Keeper
|
||||
;=========================
|
||||
|
||||
; + (approached by third keeper)
|
||||
.byte "Think you're pretty hot",13
|
||||
.byte "stuff, eh? Let's see you",13
|
||||
.byte "answer the deadly and",13
|
||||
.byte "pretty impossible THIRD",13
|
||||
.byte "TROG-TRIVIA QUESTION!",0
|
||||
|
||||
.byte "That is, unless you've got",13
|
||||
.byte "something for my lower",13
|
||||
.byte "back. Man, it's killin me!",0
|
||||
|
||||
; .take quiz
|
||||
; + get a job again
|
||||
|
||||
.byte "Riddle me this. To whom",13
|
||||
.byte "did the robe you're wearing",13
|
||||
.byte "originally belong?",13
|
||||
.byte "A. Nobleman Nicholas",13
|
||||
.byte "B. Nina Neverawesome",13
|
||||
.byte "C. Naked Ned",0 ; correct
|
||||
|
||||
|
||||
.byte "Riddle me this. What color",13
|
||||
.byte "are the leaves on the tree",13
|
||||
.byte "that grows by the well?",13
|
||||
.byte "A. Orange",13 ; correct
|
||||
.byte "B. Green",13
|
||||
.byte "C. Yellow",0
|
||||
|
||||
|
||||
.byte "Riddle me this. Which way",13
|
||||
.byte "does the river that runs",13
|
||||
.byte "through Peasantry flow?",13
|
||||
.byte "A. West to East",13
|
||||
.byte "B. Northwest to South",13
|
||||
.byte "C. Northeast to Southwest",0 ; correct
|
||||
|
||||
; Response to Correct Answer
|
||||
|
||||
.byte "Uh oh. You got it right.",13
|
||||
.byte "Trogdor's gonna kill me.",13
|
||||
.byte "Okay, you can have the",13
|
||||
.byte "Trog-Sword. Just promise",13
|
||||
.byte "not to kill any Trogdor's",13 ; [sic]
|
||||
.byte "with it, kay?",0
|
||||
|
||||
.byte "You just stare at the",13
|
||||
.byte "Keeper blankly.",0
|
||||
|
||||
.byte 34,"Okay fine! You can have",13
|
||||
.byte "the dumb thing anyways.",13
|
||||
.byte "Trogdor's through the",13
|
||||
.byte "beaded curtain over there.",34,0
|
||||
|
||||
; now print "fabled Trog-sword" below
|
||||
|
||||
; Response to Incorrect Answer
|
||||
|
||||
.byte "YES! I was hoping you'd get",13
|
||||
.byte "mine wrong. No Trog-Sword",13
|
||||
.byte "for you. In fact, no skin",13
|
||||
.byte "for you either!",0
|
||||
|
||||
; turns you into a skeleton
|
||||
.byte "Wow. You sure dead. You had",13
|
||||
.byte "a good run, though. Thanks",13
|
||||
.byte "for playin.",0
|
||||
|
||||
; Response if not A, B, or C
|
||||
; then print following followed by repeat of question
|
||||
.byte "Peasant fool! Choose A, B,",13
|
||||
.byte "or C!",0
|
||||
|
||||
|
||||
|
||||
; + give pills
|
||||
.byte "Whoa! Where'd you find this",13
|
||||
.byte "stuff? I don't think this",13
|
||||
.byte "is even legal anymore.",13
|
||||
.byte "These babies'll definitely",13
|
||||
.byte "smote LUMBAGO the, um,",13
|
||||
.byte "LOWER BACKINATOR!!",0
|
||||
|
||||
; lift sword and it gleams
|
||||
; bead curtain parts
|
||||
|
||||
.byte "The fabled Trog-Sword is",13
|
||||
.byte "yours. You now have the",13
|
||||
.byte "means to strike down",13
|
||||
.byte "Trogdor. Good luck,",13
|
||||
.byte "peasant.",0
|
||||
|
||||
; backs out, you raise the sword in the air animation
|
||||
|
||||
; + climb cliff
|
||||
cave_outer_climb_message:
|
||||
.byte "Nope. It's too sheer.",0
|
||||
|
2
games/peasant/text/dialog_outer.s
Normal file
@ -0,0 +1,2 @@
|
||||
.include "lookup.inc"
|
||||
.include "outer.inc.lookup"
|
395
games/peasant/text/outer.inc
Normal file
@ -0,0 +1,395 @@
|
||||
;======================================
|
||||
; Trogdor's Outer Sanctum / Outer Cave
|
||||
;======================================
|
||||
|
||||
; note: if you don't have the item, it doesn't give
|
||||
; you an option and launches directly into the quiz
|
||||
|
||||
; +5 POINTS (give sub or answer question)
|
||||
; +5 POINTS (give soda or answer question)
|
||||
; +5 POINTS (give pills or answer question)
|
||||
|
||||
; walk in, you can walk out again. once the keeper appears
|
||||
; you are stuck and have to talk
|
||||
; will only say the "I think he wants... text
|
||||
|
||||
; + look
|
||||
cave_outer_look_message:
|
||||
.byte "There are 3 openings with a",13
|
||||
.byte "little cliff in front of",13
|
||||
.byte "each. A beaded curtain",13
|
||||
.byte "hangs in a doorway on the",13
|
||||
.byte "far wall.",0
|
||||
|
||||
; + look curtain/beads
|
||||
cave_outer_look_curtain_message:
|
||||
.byte "That thing's awesome. You",13
|
||||
.byte "always wanted one for your",13
|
||||
.byte "dorm room but your roommate",13
|
||||
.byte "was a total drag and said",13
|
||||
.byte "no.",0
|
||||
|
||||
; + look door
|
||||
cave_outer_look_door_message:
|
||||
.byte "A wicked beaded curtain",13
|
||||
.byte "hangs in the doorway.",0
|
||||
|
||||
; + look openings
|
||||
cave_outer_look_openings_message:
|
||||
.byte "They're mysterious and out",13
|
||||
.byte "of reach. Like girls were",13
|
||||
.byte "to you in high school.",0
|
||||
|
||||
; + look skeleton
|
||||
cave_outer_look_skeleton_message:
|
||||
.byte "You can't be sure but you",13
|
||||
.byte "think those are dead person",13
|
||||
.byte "bones.",0
|
||||
|
||||
; + get bones
|
||||
cave_outer_get_bones_message:
|
||||
.byte "Eww. No. Grody. You're",13
|
||||
.byte "grody. No. Eww.",0
|
||||
|
||||
|
||||
|
||||
;=========================
|
||||
; First Keeper
|
||||
;=========================
|
||||
|
||||
; + (approached by first keeper)
|
||||
cave_outer_keeper1_message1:
|
||||
.byte "Foolish peasant! How dare",13
|
||||
.byte "you enter this fairly",13
|
||||
.byte "sacred chamber!",0
|
||||
|
||||
cave_outer_keeper1_message2:
|
||||
.byte "You explain that you're",13
|
||||
.byte "here to smote Trogdor and",13
|
||||
.byte "if he doesn't get outta",13
|
||||
.byte "your way, him too!",0
|
||||
|
||||
cave_outer_keeper1_message3:
|
||||
.byte "You cannot vanquish",13
|
||||
.byte "Trogdor! Only the Three",13
|
||||
.byte "Keepers of Trogdor hold the",13
|
||||
.byte "tools with which to destroy",13
|
||||
.byte "the Burninator. The",13
|
||||
.byte "Trog-Shield, the",13
|
||||
.byte "Trog-Helmet, and the",13
|
||||
.byte "Trog-Sword.",0
|
||||
|
||||
cave_outer_keeper1_message4:
|
||||
.byte "And the only way we'll give",13
|
||||
.byte "them up is if you answer",13
|
||||
.byte "the three Trog-Trivia",13
|
||||
.byte "questions correctly.",0
|
||||
|
||||
; only say this if have sub
|
||||
cave_outer_keeper1_message5:
|
||||
.byte "Unless you happen to have",13
|
||||
.byte "something to eat on ya.",13
|
||||
.byte "Then we could forego my",13
|
||||
.byte "question.",0
|
||||
|
||||
; can't leave or do anything except take quiz or give sub
|
||||
; prints a message saying so
|
||||
|
||||
; Type any command other than "take the quiz" or "give (requested item)"
|
||||
; after being apporached by a Keeper
|
||||
cave_outer_keeper_wants_message:
|
||||
.byte "I think he wants something",13
|
||||
.byte "from your inventory. Or you",13
|
||||
.byte "could just tell him ",34,"take",13
|
||||
.byte "the quiz",34,0
|
||||
|
||||
|
||||
; take quiz
|
||||
|
||||
cave_outer_keeper_take_quiz:
|
||||
.byte "Your shake off the Keeper of",13
|
||||
.byte "Trogdor's request.",13
|
||||
.byte "Seriously - this guy should",13
|
||||
.byte "get a job.",0
|
||||
|
||||
; if you say other than A/B/C then...
|
||||
; Peasant fool! Choose A, B,
|
||||
; or C!
|
||||
; followed by repeat of the question
|
||||
|
||||
cave_outer_quiz1_1:
|
||||
.byte "Okay here goes. What did",13
|
||||
.byte "you win from the Archery",13
|
||||
.byte "game?",13
|
||||
.byte "A. SuperBow FunTime TM",13
|
||||
.byte "B. SuperTime FunBow TM",13 ; correct
|
||||
.byte "C. SuperFun BowTime TM",0
|
||||
|
||||
cave_outer_quiz1_1again:
|
||||
.byte "Peasant fool! Choose A, B,",13
|
||||
.byte "or C!",13
|
||||
.byte "What did you win from the",13
|
||||
.byte "Archery game?",13
|
||||
.byte "A. SuperBow FunTime TM",13
|
||||
.byte "B. SuperTime FunBow TM",13 ; correct
|
||||
.byte "C. SuperFun BowTime TM",0
|
||||
|
||||
cave_outer_quiz1_2:
|
||||
.byte "Okay here goes. What does",13
|
||||
.byte "Mendelev have you tell",13
|
||||
.byte "Dongolev?",13
|
||||
.byte "A. Haldo",13 ; correct
|
||||
.byte "B. Hallo",13
|
||||
.byte "C. Allo",0
|
||||
|
||||
cave_outer_quiz1_2again:
|
||||
.byte "Peasant fool! Choose A, B,",13
|
||||
.byte "or C!",13
|
||||
.byte "What does Mendelev have you",13
|
||||
.byte "tell Dongolev?",13
|
||||
.byte "A. Haldo",13 ; correct
|
||||
.byte "B. Hallo",13
|
||||
.byte "C. Allo",0
|
||||
|
||||
cave_outer_quiz1_3:
|
||||
.byte "Okay here goes. What is the",13
|
||||
.byte "only creature the Jhonka",13
|
||||
.byte "fears?",13
|
||||
.byte "A. Poor Gary",13
|
||||
.byte "B. The Baby",13
|
||||
.byte "C. The Kerrek",0 ; correct
|
||||
|
||||
cave_outer_quiz1_3again:
|
||||
.byte "Peasant fool! Choose A, B,",13
|
||||
.byte "or C!",13
|
||||
.byte "What is the only creature",13
|
||||
.byte "the Jhonka fears?",13
|
||||
.byte "A. Poor Gary",13
|
||||
.byte "B. The Baby",13
|
||||
.byte "C. The Kerrek",0 ; correct
|
||||
|
||||
|
||||
; Response to Correct Answer
|
||||
; makes happy noise, then gives you +5 POINTS
|
||||
cave_outer_quiz1_correct:
|
||||
.byte 34,"Ah crap! You're right.",13
|
||||
.byte "Here, take this stupid",13
|
||||
.byte "Trog-Shield!",34,0
|
||||
|
||||
; Response to Incorrect Answer
|
||||
;
|
||||
|
||||
cave_outer_quiz1_wrong:
|
||||
.byte "Sorry peasant! You fail!",13
|
||||
.byte "And as punishment, you will",13
|
||||
.byte "be turned into... RON ",13
|
||||
.byte "CUMBERDALE!!",0
|
||||
|
||||
cave_outer_quiz1_wrong_part2:
|
||||
.byte "You ask who the crap Ron",13
|
||||
.byte "Cumberdale is.",0
|
||||
|
||||
cave_outer_quiz1_wrong_part3:
|
||||
.byte 34,"Just this kid from 4th",13
|
||||
.byte "grade that I really hated.",13
|
||||
.byte "But he was a BIG LOSER and",13
|
||||
.byte "HE SMELLED!",34,0
|
||||
|
||||
; wiggles hands, poof of smoke, turn into Ron
|
||||
; makes twinkly noise as wiggles hand, another noise (blrrp?) as poof of smoke
|
||||
cave_outer_quiz1_wrong_part4:
|
||||
.byte "Well, you not exactly dead.",13
|
||||
.byte "But there's no way you",13
|
||||
.byte "could defeat Trogdor as Ron",13
|
||||
.byte "Cumberdale. Your quest",13
|
||||
.byte "ends here. Thanks for",13
|
||||
.byte "playing.",0
|
||||
|
||||
|
||||
; + give sub, sandwich
|
||||
; slowly backs away, you suddenly have shield
|
||||
; +5 POINTS
|
||||
cave_outer_give_sub_message:
|
||||
cave_outer_give_sandwich_message:
|
||||
.byte "No way! I was just kidding",13
|
||||
.byte "but you've really got a",13
|
||||
.byte "meatball sub. This rules!",13
|
||||
.byte "Here, you can have the",13
|
||||
.byte "Trog-Shield.",0
|
||||
|
||||
; you now have the shield and can leave if you want
|
||||
; whole new walking animation
|
||||
|
||||
;=========================
|
||||
; Second Keeper
|
||||
;=========================
|
||||
|
||||
; + (approached by second keeper)
|
||||
; comes out and waggles his hands
|
||||
|
||||
.byte "Hold, peasant! You must",13
|
||||
.byte "answer the second dreaded",13
|
||||
.byte "Trog-Trivia question!",0
|
||||
|
||||
.byte "Or we could call it even if",13
|
||||
.byte "I had an ice cold drink",13
|
||||
.byte "right now.",0
|
||||
|
||||
; take quiz
|
||||
; + get a job again
|
||||
|
||||
|
||||
.byte "Listen careful now. Which",13
|
||||
.byte "one of these letters is the",13
|
||||
.byte "letter C?",13
|
||||
.byte "A. B",13
|
||||
.byte "B. C",13 ; correct
|
||||
.byte "C. A",0
|
||||
|
||||
.byte "Listen careful now. How",13
|
||||
.byte "many berry bushes are there",13
|
||||
.byte "in the whole kingdom of",13
|
||||
.byte "Peasantry?",13
|
||||
.byte "A. 4",13
|
||||
.byte "B. 5",13 ; [sic] correct?
|
||||
.byte "C. 6 ",0
|
||||
|
||||
.byte "Listen careful now. What",13
|
||||
.byte "was the Innkeeper's pantry",13
|
||||
.byte "full of?",13
|
||||
.byte "A. Epsom Salts",13
|
||||
.byte "B. Epson Printers",13
|
||||
.byte "C. Old Man Rub",0 ; correct
|
||||
|
||||
; Response to Correct Answer
|
||||
.byte 34,"That's right. Oh. This",13
|
||||
.byte "sucks. Guess I have to give",13
|
||||
.byte "you this Trog-Helmet.",13
|
||||
.byte "Dang.",0
|
||||
; backs out, you now have helm on, can leave
|
||||
|
||||
; Response to Incorrect Answer
|
||||
.byte 34,"WRONG! You are hereby",13
|
||||
.byte "cursed to write corny folk",13
|
||||
.byte "songs for the rest of",13
|
||||
.byte "eternity! The kind that",13
|
||||
.byte "only OLD PEOPLE LIKE!!",34,0
|
||||
|
||||
; waggles arms
|
||||
; you face forward, then play the guitar for like 5 seconds
|
||||
|
||||
.byte "Well, you not exactly dead.",13
|
||||
.byte "But you certainly can't",13
|
||||
.byte "face Trogdor after writing",13
|
||||
.byte "'Wheat Grows Sweet, But My",13
|
||||
.byte "Gal's Sweeter'. Your quest",13
|
||||
.byte "ends here. Thanks for",13
|
||||
.byte "playing.",0
|
||||
|
||||
; + give soda
|
||||
.byte "Sweet deal, peasant. I",13
|
||||
.byte "underestimated you. Wear",13
|
||||
.byte "this Trog-Helmet with",13
|
||||
.byte "style.",0
|
||||
|
||||
;=========================
|
||||
; Third Keeper
|
||||
;=========================
|
||||
|
||||
; + (approached by third keeper)
|
||||
.byte "Think you're pretty hot",13
|
||||
.byte "stuff, eh? Let's see you",13
|
||||
.byte "answer the deadly and",13
|
||||
.byte "pretty impossible THIRD",13
|
||||
.byte "TROG-TRIVIA QUESTION!",0
|
||||
|
||||
.byte "That is, unless you've got",13
|
||||
.byte "something for my lower",13
|
||||
.byte "back. Man, it's killin me!",0
|
||||
|
||||
; .take quiz
|
||||
; + get a job again
|
||||
|
||||
.byte "Riddle me this. To whom",13
|
||||
.byte "did the robe you're wearing",13
|
||||
.byte "originally belong?",13
|
||||
.byte "A. Nobleman Nicholas",13
|
||||
.byte "B. Nina Neverawesome",13
|
||||
.byte "C. Naked Ned",0 ; correct
|
||||
|
||||
|
||||
.byte "Riddle me this. What color",13
|
||||
.byte "are the leaves on the tree",13
|
||||
.byte "that grows by the well?",13
|
||||
.byte "A. Orange",13 ; correct
|
||||
.byte "B. Green",13
|
||||
.byte "C. Yellow",0
|
||||
|
||||
|
||||
.byte "Riddle me this. Which way",13
|
||||
.byte "does the river that runs",13
|
||||
.byte "through Peasantry flow?",13
|
||||
.byte "A. West to East",13
|
||||
.byte "B. Northwest to South",13
|
||||
.byte "C. Northeast to Southwest",0 ; correct
|
||||
|
||||
; Response to Correct Answer
|
||||
|
||||
.byte "Uh oh. You got it right.",13
|
||||
.byte "Trogdor's gonna kill me.",13
|
||||
.byte "Okay, you can have the",13
|
||||
.byte "Trog-Sword. Just promise",13
|
||||
.byte "not to kill any Trogdor's",13 ; [sic]
|
||||
.byte "with it, kay?",0
|
||||
|
||||
.byte "You just stare at the",13
|
||||
.byte "Keeper blankly.",0
|
||||
|
||||
.byte 34,"Okay fine! You can have",13
|
||||
.byte "the dumb thing anyways.",13
|
||||
.byte "Trogdor's through the",13
|
||||
.byte "beaded curtain over there.",34,0
|
||||
|
||||
; now print "fabled Trog-sword" below
|
||||
|
||||
; Response to Incorrect Answer
|
||||
|
||||
.byte "YES! I was hoping you'd get",13
|
||||
.byte "mine wrong. No Trog-Sword",13
|
||||
.byte "for you. In fact, no skin",13
|
||||
.byte "for you either!",0
|
||||
|
||||
; turns you into a skeleton
|
||||
.byte "Wow. You sure dead. You had",13
|
||||
.byte "a good run, though. Thanks",13
|
||||
.byte "for playin.",0
|
||||
|
||||
; Response if not A, B, or C
|
||||
; then print following followed by repeat of question
|
||||
.byte "Peasant fool! Choose A, B,",13
|
||||
.byte "or C!",0
|
||||
|
||||
|
||||
|
||||
; + give pills
|
||||
.byte "Whoa! Where'd you find this",13
|
||||
.byte "stuff? I don't think this",13
|
||||
.byte "is even legal anymore.",13
|
||||
.byte "These babies'll definitely",13
|
||||
.byte "smote LUMBAGO the, um,",13
|
||||
.byte "LOWER BACKINATOR!!",0
|
||||
|
||||
; lift sword and it gleams
|
||||
; bead curtain parts
|
||||
|
||||
.byte "The fabled Trog-Sword is",13
|
||||
.byte "yours. You now have the",13
|
||||
.byte "means to strike down",13
|
||||
.byte "Trogdor. Good luck,",13
|
||||
.byte "peasant.",0
|
||||
|
||||
; backs out, you raise the sword in the air animation
|
||||
|
||||
; + climb cliff
|
||||
cave_outer_climb_message:
|
||||
.byte "Nope. It's too sheer.",0
|