scroll left and right work in stdef and hidef adds octo test roms adds schip fonts to memory
4011 lines
147 KiB
Plaintext
4011 lines
147 KiB
Plaintext
###########################################
|
|
#
|
|
# An Evening to Die For
|
|
#
|
|
# It is a dark and stormy night.
|
|
# A murer has been committed.
|
|
# Track down a murder weapon and identify
|
|
# the killer to bring them to justice!
|
|
#
|
|
# Arrow keys/ASWD move and change selections,
|
|
# Space/E advance dialog, confirm selections,
|
|
# and search the surrounding area for clues.
|
|
#
|
|
# An entry in the 2019 Octojam 6
|
|
# by John Earnest
|
|
#
|
|
###########################################
|
|
|
|
:calc CODE_POS { 0x200 }
|
|
:calc DATA_POS { 0x1000 }
|
|
:macro to-code { :calc DATA_POS { HERE } :org { CODE_POS } }
|
|
:macro to-data { :calc CODE_POS { HERE } :org { DATA_POS } }
|
|
|
|
:macro unpack16 ADDR {
|
|
:calc hi { 0xFF & ADDR >> 8 } v0 := hi
|
|
:calc lo { 0xFF & ADDR } v1 := lo
|
|
}
|
|
:macro pointer ADDR {
|
|
:byte { 0xFF & ADDR >> 8 }
|
|
:byte { 0xFF & ADDR }
|
|
}
|
|
:macro indirect LABEL {
|
|
0xF0 0x00 : LABEL 0x00 0x00 # i := long NNNN
|
|
}
|
|
|
|
:macro mirror-byte X {
|
|
:byte { ( 1 & X >> 7 ) | ( 2 & X >> 5 ) | ( 4 & X >> 3 ) | ( 8 & X >> 1 ) |
|
|
( 128 & X << 7 ) | ( 64 & X << 5 ) | ( 32 & X << 3 ) | ( 16 & X << 1 ) }
|
|
}
|
|
:macro mirror-8x15-row {
|
|
:calc val { @ base + index }
|
|
mirror-byte val
|
|
:calc index { index + 1 }
|
|
}
|
|
:macro mirror-8x15 ADDR {
|
|
:calc base { ADDR }
|
|
:calc index { 0 }
|
|
mirror-8x15-row
|
|
mirror-8x15-row
|
|
mirror-8x15-row
|
|
mirror-8x15-row
|
|
mirror-8x15-row
|
|
mirror-8x15-row
|
|
mirror-8x15-row
|
|
mirror-8x15-row
|
|
mirror-8x15-row
|
|
mirror-8x15-row
|
|
mirror-8x15-row
|
|
mirror-8x15-row
|
|
mirror-8x15-row
|
|
mirror-8x15-row
|
|
mirror-8x15-row
|
|
}
|
|
|
|
: sync
|
|
vf := 5
|
|
: sync-custom
|
|
delay := vf
|
|
loop
|
|
vf := delay
|
|
if vf != 0 then
|
|
again
|
|
;
|
|
:macro wait TIME {
|
|
vf := TIME
|
|
sync-custom
|
|
}
|
|
|
|
: full-screen-blit #lrtb
|
|
v0 := 0
|
|
v1 := 0
|
|
v2 := 16
|
|
v3 := 32
|
|
v4 := 48
|
|
loop
|
|
sprite v0 v1 0 i += v3
|
|
sprite v0 v2 0 i += v3
|
|
sprite v0 v3 0 i += v3
|
|
sprite v0 v4 0 i += v3
|
|
v0 += 16
|
|
if v0 != 128 then
|
|
again
|
|
;
|
|
|
|
###########################################
|
|
#
|
|
# Global State
|
|
#
|
|
###########################################
|
|
|
|
# v0-v4 and ve are currently reserved for temporaries
|
|
:const GAME_OVER 0xFA # set current-room to this to bail out.
|
|
:alias current-room vd
|
|
:alias suspicion-level vc # 0-255
|
|
:alias has-spyglass vb # 0/1
|
|
:alias has-weapon va # 0/1
|
|
|
|
# used during room exploration mode:
|
|
:alias prev-x v5
|
|
:alias prev-y v6
|
|
:alias player-face v7
|
|
:alias player-x v8
|
|
:alias player-y v9
|
|
|
|
# used during endgame:
|
|
:alias accused-npc v9
|
|
:alias guilty-npc v8
|
|
:alias guilty-weapon v7
|
|
|
|
# how much does various actions advanced the game?
|
|
:const SUSPICION_TALK_NPC 2
|
|
:const SUSPICION_TALK_MURDERER 5
|
|
:const SUSPICION_EXAMINE_DECO 1
|
|
:const SUSPICION_EXAMINE_ITEM 2
|
|
:const SUSPICION_ENTER_ROOM 1
|
|
:const SUSPICION_TAKE_WEAPON 5
|
|
:const SUSPICION_TAKE_SPYGLASS 5
|
|
|
|
: thicken-plot-sub
|
|
suspicion-level += ve
|
|
if vf != 0 then suspicion-level := 0xFF
|
|
;
|
|
:macro thicken-plot CONST {
|
|
ve := CONST
|
|
thicken-plot-sub
|
|
}
|
|
|
|
to-data
|
|
|
|
: has-body-room 0x00 # 0-9
|
|
: has-passage-room 0x00 # 0-9, replaces desc 1
|
|
: has-secret-room 0x00 # 0-9, replaces desc 2
|
|
: murder-weapon 0x00 # 0-7
|
|
|
|
: initial-item-positions
|
|
0 1 2 3 4 5 6 7 8 -1 -1
|
|
: item-positions
|
|
0 0 0 0 0 0 0 0 0 0 0
|
|
|
|
: npc-positions
|
|
0 1 # room 0, [slot 1, slot 2] ...
|
|
2 3 # room 1
|
|
4 5 # room 2
|
|
6 7 # room 3
|
|
-1 -1 # room 4
|
|
-1 -1 # room 5
|
|
-1 -1 # room 6
|
|
-1 -1 # room 7
|
|
-1 -1 # room 8
|
|
-1 -1 # room 9
|
|
-1 -1 # room 10
|
|
|
|
: npc-alibis
|
|
: npc-alibi-p1 0 1 # first pair
|
|
: npc-alibi-p2 2 3 # second pair
|
|
: npc-alibi-p3 4 5 # third pair
|
|
: npc-alone 6 # by themselves
|
|
: npc-murderer 7 # what it says on the tin
|
|
|
|
: npc-quip-index
|
|
: npc-quip-1 0 1
|
|
: npc-quip-2 2 3
|
|
4 5 6 7
|
|
|
|
: npc-scoff-index
|
|
0 1 2 3 4 5 6 7
|
|
|
|
: npc-alibi-rooms
|
|
: npc-alibi-r1 0
|
|
: npc-alibi-r2 1
|
|
: npc-alibi-r3 2
|
|
: npc-alibi-r4 3
|
|
: npc-alibi-r5 4
|
|
5 6 7 8 9 # and the rest aren't occupied
|
|
|
|
to-code
|
|
|
|
: random-upto-v1
|
|
loop
|
|
v0 := random 0xF
|
|
if v0 > v1 then
|
|
again
|
|
;
|
|
|
|
: shuffle-base i := long 0 ; # SMC
|
|
: shuffle-array
|
|
loop
|
|
v1 := v4
|
|
random-upto-v1
|
|
v3 := v0
|
|
|
|
if v3 != v4 begin
|
|
# swap a[v4] / a[v3]...
|
|
shuffle-base
|
|
i += v3
|
|
load v1 - v1 # has a[v3]
|
|
shuffle-base
|
|
i += v4
|
|
load v2 - v2 # has a[v4]
|
|
save v1 - v1
|
|
shuffle-base
|
|
i += v3
|
|
save v2 - v2
|
|
end
|
|
|
|
v4 += -1
|
|
if v4 != 2 then
|
|
again
|
|
;
|
|
|
|
:macro random-scalar MAX ADDR {
|
|
v1 := MAX
|
|
random-upto-v1
|
|
i := long ADDR
|
|
save v0
|
|
}
|
|
:macro shuffle LEN ADDR {
|
|
:calc target { shuffle-base + 2 }
|
|
i := target
|
|
unpack16 ADDR
|
|
save v1
|
|
:calc maxindex { LEN - 1 }
|
|
v4 := maxindex
|
|
shuffle-array
|
|
}
|
|
|
|
:macro plot-a-murder {
|
|
# gotta re-initialize this,
|
|
# as items can be removed during gameplay:
|
|
i := long initial-item-positions
|
|
load vA
|
|
i := long item-positions
|
|
save vA
|
|
|
|
# generate randomized scenario
|
|
random-scalar 9 has-body-room
|
|
random-scalar 9 has-passage-room
|
|
random-scalar 9 has-secret-room
|
|
random-scalar 7 murder-weapon
|
|
shuffle 11 item-positions
|
|
shuffle 18 npc-positions
|
|
shuffle 8 npc-alibis
|
|
shuffle 8 npc-quip-index
|
|
shuffle 8 npc-scoff-index
|
|
shuffle 10 npc-alibi-rooms
|
|
|
|
# re-init global game state
|
|
suspicion-level := 0
|
|
has-spyglass := 0
|
|
has-weapon := 0
|
|
current-room := 5
|
|
}
|
|
|
|
###########################################
|
|
#
|
|
# Text rendering routines
|
|
#
|
|
# These generic routines can draw pre-wrapped
|
|
# bytecoded strings with 2 colors, 2 font sizes,
|
|
# and 2 inlineable text fragment slots,
|
|
# as created by EZ-Writer:
|
|
#
|
|
# http://beyondloom.com/tools/ezwriter.html
|
|
#
|
|
# Pointers are "passed" to these routines
|
|
# by rewriting immediate i-loads,
|
|
# and macros help make the process more compact.
|
|
#
|
|
# Note that fragments should NOT contain STR_POS
|
|
# or recursive fragment references!
|
|
#
|
|
###########################################
|
|
|
|
:const STR_END 0xFF
|
|
:const STR_POS 0xFE
|
|
:const STR_COLOR 0xFD
|
|
:const STR_SIZE 0xFC
|
|
:const STR_SLOT_0 0xFB
|
|
:const STR_SLOT_1 0xFA
|
|
:const STR_SPACE 0xF9
|
|
|
|
:const CHAR_WIDTH_SMALL 6
|
|
:const CHAR_WIDTH_LARGE 8
|
|
:calc CHAR_WIDTH_DIFF { CHAR_WIDTH_LARGE - CHAR_WIDTH_SMALL }
|
|
|
|
:alias fragment-offset v3
|
|
:alias string-offset v4
|
|
:alias cursor-x v5
|
|
:alias cursor-y v6
|
|
:alias font-size v7
|
|
:alias font-color v8
|
|
:alias bit-flip v9
|
|
|
|
: print-char
|
|
if v0 == STR_POS begin
|
|
string-offset += 2
|
|
cursor-x := v1
|
|
cursor-y := v2
|
|
return
|
|
end
|
|
if v0 == STR_SPACE begin
|
|
cursor-x += CHAR_WIDTH_SMALL
|
|
if font-size != 0 then cursor-x += CHAR_WIDTH_DIFF
|
|
return
|
|
end
|
|
if v0 == STR_COLOR begin
|
|
font-color ^= bit-flip
|
|
return
|
|
end
|
|
if v0 == STR_SIZE begin
|
|
font-size ^= bit-flip
|
|
return
|
|
end
|
|
if v0 == STR_SLOT_0 begin
|
|
fragment-offset := 0
|
|
loop
|
|
indirect print-string0-read
|
|
i += fragment-offset
|
|
load v0
|
|
if v0 == STR_END then return
|
|
fragment-offset += 1
|
|
print-char
|
|
again
|
|
end
|
|
if v0 == STR_SLOT_1 begin
|
|
fragment-offset := 0
|
|
loop
|
|
indirect print-string1-read
|
|
i += fragment-offset
|
|
load v0
|
|
if v0 == STR_END then return
|
|
fragment-offset += 1
|
|
print-char
|
|
again
|
|
end
|
|
# draw a plain character
|
|
if font-size == 0 begin
|
|
i := long font
|
|
i += v0 # add v0 * 9
|
|
v0 += v0
|
|
i += v0
|
|
i += v0
|
|
i += v0
|
|
i += v0
|
|
sprite cursor-x cursor-y 9
|
|
if font-color != 0 begin
|
|
plane 2
|
|
sprite cursor-x cursor-y 9
|
|
plane 1
|
|
end
|
|
cursor-x += CHAR_WIDTH_SMALL
|
|
else
|
|
i := long bigfont
|
|
v0 += v0 # add v0 * 14
|
|
i += v0
|
|
i += v0
|
|
i += v0
|
|
i += v0
|
|
i += v0
|
|
i += v0
|
|
i += v0
|
|
sprite cursor-x cursor-y 14
|
|
if font-color != 0 begin
|
|
plane 2
|
|
sprite cursor-x cursor-y 14
|
|
plane 1
|
|
end
|
|
cursor-x += CHAR_WIDTH_LARGE
|
|
end
|
|
;
|
|
: print-text
|
|
i := print-string-read
|
|
save v1
|
|
i := long string-stash
|
|
save vf
|
|
i := long print-text-registers
|
|
load string-offset - bit-flip
|
|
loop
|
|
indirect print-string-read
|
|
i += string-offset
|
|
load v2
|
|
while v0 != STR_END
|
|
string-offset += 1
|
|
print-char
|
|
again
|
|
i := long string-stash
|
|
load vf
|
|
;
|
|
|
|
:macro print ADDR { unpack16 ADDR print-text }
|
|
|
|
to-data
|
|
|
|
: print-text-registers
|
|
0 0 0 0 0 1
|
|
: string-stash
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
|
|
: font
|
|
0x1C 0x22 0x22 0x3E 0x22 0x22 0x22 0x00 0x00 # A
|
|
0x3C 0x22 0x22 0x3C 0x22 0x22 0x3C 0x00 0x00 # B
|
|
0x1C 0x22 0x20 0x20 0x20 0x22 0x1C 0x00 0x00 # C
|
|
0x3C 0x22 0x22 0x22 0x22 0x22 0x3C 0x00 0x00 # D
|
|
0x3E 0x20 0x20 0x3C 0x20 0x20 0x3E 0x00 0x00 # E
|
|
0x3E 0x20 0x20 0x3C 0x20 0x20 0x20 0x00 0x00 # F
|
|
0x1C 0x22 0x20 0x26 0x22 0x22 0x1C 0x00 0x00 # G
|
|
0x22 0x22 0x22 0x3E 0x22 0x22 0x22 0x00 0x00 # H
|
|
0x08 0x08 0x08 0x08 0x08 0x08 0x08 0x00 0x00 # I
|
|
0x02 0x02 0x02 0x02 0x22 0x22 0x1C 0x00 0x00 # J
|
|
0x22 0x24 0x28 0x30 0x28 0x24 0x22 0x00 0x00 # K
|
|
0x20 0x20 0x20 0x20 0x20 0x20 0x3E 0x00 0x00 # L
|
|
0x22 0x36 0x2A 0x22 0x22 0x22 0x22 0x00 0x00 # M
|
|
0x22 0x32 0x2A 0x26 0x22 0x22 0x22 0x00 0x00 # N
|
|
0x1C 0x22 0x22 0x22 0x22 0x22 0x1C 0x00 0x00 # O
|
|
0x3C 0x22 0x22 0x3C 0x20 0x20 0x20 0x00 0x00 # P
|
|
0x1C 0x22 0x22 0x22 0x22 0x22 0x1C 0x02 0x00 # Q
|
|
0x3C 0x22 0x22 0x3C 0x22 0x22 0x22 0x00 0x00 # R
|
|
0x1C 0x22 0x20 0x1C 0x02 0x22 0x1C 0x00 0x00 # S
|
|
0x3E 0x08 0x08 0x08 0x08 0x08 0x08 0x00 0x00 # T
|
|
0x22 0x22 0x22 0x22 0x22 0x22 0x1C 0x00 0x00 # U
|
|
0x22 0x22 0x22 0x14 0x14 0x08 0x08 0x00 0x00 # V
|
|
0x22 0x22 0x22 0x22 0x2A 0x36 0x22 0x00 0x00 # W
|
|
0x22 0x14 0x08 0x08 0x08 0x14 0x22 0x00 0x00 # X
|
|
0x22 0x22 0x22 0x14 0x08 0x08 0x08 0x00 0x00 # Y
|
|
0x3E 0x02 0x04 0x08 0x10 0x20 0x3E 0x00 0x00 # Z
|
|
0x00 0x00 0x1E 0x22 0x22 0x26 0x1A 0x00 0x00 # a
|
|
0x20 0x20 0x3C 0x22 0x22 0x22 0x3C 0x00 0x00 # b
|
|
0x00 0x00 0x1C 0x22 0x20 0x20 0x1E 0x00 0x00 # c
|
|
0x02 0x02 0x1E 0x22 0x22 0x22 0x1E 0x00 0x00 # d
|
|
0x00 0x00 0x1C 0x22 0x3E 0x20 0x1E 0x00 0x00 # e
|
|
0x06 0x08 0x1C 0x08 0x08 0x08 0x08 0x00 0x00 # f
|
|
0x00 0x00 0x1E 0x22 0x22 0x22 0x1E 0x02 0x1C # g
|
|
0x20 0x20 0x3C 0x22 0x22 0x22 0x22 0x00 0x00 # h
|
|
0x08 0x00 0x08 0x08 0x08 0x08 0x08 0x00 0x00 # i
|
|
0x08 0x00 0x08 0x08 0x08 0x08 0x08 0x08 0x30 # j
|
|
0x20 0x20 0x24 0x28 0x38 0x24 0x22 0x00 0x00 # k
|
|
0x08 0x08 0x08 0x08 0x08 0x08 0x0C 0x00 0x00 # l
|
|
0x00 0x00 0x3C 0x2A 0x2A 0x2A 0x2A 0x00 0x00 # m
|
|
0x00 0x00 0x2C 0x32 0x22 0x22 0x22 0x00 0x00 # n
|
|
0x00 0x00 0x1C 0x22 0x22 0x22 0x1C 0x00 0x00 # o
|
|
0x00 0x00 0x3C 0x22 0x22 0x22 0x3C 0x20 0x20 # p
|
|
0x00 0x00 0x1E 0x22 0x22 0x22 0x1E 0x02 0x02 # q
|
|
0x00 0x00 0x2C 0x32 0x20 0x20 0x20 0x00 0x00 # r
|
|
0x00 0x00 0x1E 0x20 0x1C 0x02 0x3C 0x00 0x00 # s
|
|
0x08 0x08 0x1E 0x08 0x08 0x08 0x06 0x00 0x00 # t
|
|
0x00 0x00 0x22 0x22 0x22 0x26 0x1A 0x00 0x00 # u
|
|
0x00 0x00 0x22 0x22 0x14 0x14 0x08 0x00 0x00 # v
|
|
0x00 0x00 0x2A 0x2A 0x2A 0x2A 0x14 0x00 0x00 # w
|
|
0x00 0x00 0x22 0x14 0x08 0x14 0x22 0x00 0x00 # x
|
|
0x00 0x00 0x22 0x22 0x22 0x22 0x1E 0x02 0x1C # y
|
|
0x00 0x00 0x3E 0x04 0x08 0x10 0x3E 0x00 0x00 # z
|
|
0x1C 0x22 0x26 0x2A 0x32 0x22 0x1C 0x00 0x00 # 0
|
|
0x08 0x18 0x08 0x08 0x08 0x08 0x08 0x00 0x00 # 1
|
|
0x1C 0x22 0x02 0x04 0x08 0x10 0x3E 0x00 0x00 # 2
|
|
0x1C 0x22 0x02 0x0C 0x02 0x22 0x1C 0x00 0x00 # 3
|
|
0x04 0x0C 0x14 0x24 0x3E 0x04 0x04 0x00 0x00 # 4
|
|
0x3E 0x20 0x3C 0x02 0x02 0x22 0x1C 0x00 0x00 # 5
|
|
0x1C 0x20 0x3C 0x22 0x22 0x22 0x1C 0x00 0x00 # 6
|
|
0x3E 0x02 0x02 0x04 0x08 0x08 0x08 0x00 0x00 # 7
|
|
0x1C 0x22 0x22 0x1C 0x22 0x22 0x1C 0x00 0x00 # 8
|
|
0x1C 0x22 0x22 0x22 0x1E 0x02 0x1C 0x00 0x00 # 9
|
|
0x00 0x00 0x00 0x00 0x00 0x0C 0x0C 0x00 0x00 # .
|
|
0x08 0x08 0x08 0x08 0x08 0x00 0x08 0x00 0x00 # !
|
|
0x1C 0x22 0x02 0x04 0x08 0x00 0x08 0x00 0x00 # ?
|
|
0x00 0x00 0x00 0x00 0x00 0x18 0x18 0x08 0x10 # ,
|
|
0x08 0x08 0x00 0x00 0x00 0x00 0x00 0x00 0x00 # '
|
|
0x00 0x00 0x00 0x3E 0x00 0x00 0x00 0x00 0x00 # -
|
|
0x14 0x14 0x14 0x00 0x00 0x00 0x00 0x00 0x00 # "
|
|
|
|
: bigfont
|
|
0x38 0x7C 0x6C 0x6C 0xC6 0xC6 0xFE 0xFE 0xC6 0xC6 0xC6 0xC6 0x00 0x00 # A
|
|
0xF8 0xFC 0xCC 0xCC 0xF8 0xFC 0xC6 0xC6 0xC6 0xC6 0xFE 0xFC 0x00 0x00 # B
|
|
0x7C 0xFE 0xC6 0xC0 0xC0 0xC0 0xC0 0xC0 0xC0 0xC6 0xFE 0x7C 0x00 0x00 # C
|
|
0xF8 0xFC 0xCE 0xC6 0xC6 0xC6 0xC6 0xC6 0xC6 0xCE 0xFC 0xF8 0x00 0x00 # D
|
|
0xFE 0xFE 0xC0 0xC0 0xC0 0xF8 0xF8 0xC0 0xC0 0xC0 0xFE 0xFE 0x00 0x00 # E
|
|
0xFE 0xFE 0xC0 0xC0 0xC0 0xF8 0xF8 0xC0 0xC0 0xC0 0xC0 0xC0 0x00 0x00 # F
|
|
0x7C 0xFE 0xC6 0xC6 0xC0 0xDE 0xDE 0xC6 0xC6 0xE6 0x7E 0x3E 0x00 0x00 # G
|
|
0xC6 0xC6 0xC6 0xC6 0xC6 0xFE 0xFE 0xC6 0xC6 0xC6 0xC6 0xC6 0x00 0x00 # H
|
|
0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x00 0x00 # I
|
|
0x0C 0x0C 0x0C 0x0C 0x0C 0x0C 0xCC 0xCC 0xCC 0xCC 0xFC 0x78 0x00 0x00 # J
|
|
0xC6 0xCE 0xDC 0xF8 0xF0 0xF0 0xF8 0xD8 0xCC 0xCC 0xC6 0xC6 0x00 0x00 # K
|
|
0xC0 0xC0 0xC0 0xC0 0xC0 0xC0 0xC0 0xC0 0xC0 0xC0 0xFE 0xFE 0x00 0x00 # L
|
|
0xEC 0xFE 0xFE 0xD6 0xD6 0xD6 0xD6 0xC6 0xC6 0xC6 0xC6 0xC6 0x00 0x00 # M
|
|
0xF8 0xFC 0xCC 0xCE 0xC6 0xC6 0xC6 0xC6 0xC6 0xC6 0xC6 0xC6 0x00 0x00 # N
|
|
0x7C 0xFE 0xC6 0xC6 0xC6 0xC6 0xC6 0xC6 0xC6 0xC6 0xFE 0x7C 0x00 0x00 # O
|
|
0xFC 0xFE 0xC6 0xC6 0xC6 0xFE 0xFC 0xC0 0xC0 0xC0 0xC0 0xC0 0x00 0x00 # P
|
|
0x7C 0xFE 0xC6 0xC6 0xC6 0xC6 0xD6 0xDE 0xDC 0xCE 0xF6 0x76 0x00 0x00 # Q
|
|
0xFC 0xFE 0xC6 0xC6 0xC6 0xFE 0xFC 0xD8 0xCC 0xCC 0xC6 0xC6 0x00 0x00 # R
|
|
0x7C 0xFE 0xC6 0xC0 0xC0 0xFC 0x7E 0x06 0x06 0xC6 0xFE 0x7C 0x00 0x00 # S
|
|
0xFE 0xFE 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x38 0x18 0x00 0x00 # T
|
|
0xC6 0xC6 0xC6 0xC6 0xC6 0xC6 0xC6 0xC6 0xC6 0xC6 0xFE 0x7C 0x00 0x00 # U
|
|
0xC6 0xC6 0xC6 0xC6 0xC6 0xC6 0xE6 0x66 0x76 0x3E 0x1E 0x0E 0x00 0x00 # V
|
|
0xC6 0xC6 0xC6 0xC6 0xC6 0xC6 0xD6 0xD6 0xD6 0xD6 0xFE 0xEC 0x00 0x00 # W
|
|
0xC6 0xC6 0xEE 0x6C 0x7C 0x38 0x7C 0x6C 0x6C 0xC6 0xC6 0xC6 0x00 0x00 # X
|
|
0xC6 0xC6 0xC6 0xE6 0x7E 0x3E 0x06 0x06 0x06 0xC6 0xFE 0x7C 0x00 0x00 # Y
|
|
0xFE 0xFE 0x0C 0x0C 0x18 0x18 0x30 0x30 0x60 0x60 0xFE 0xFE 0x00 0x00 # Z
|
|
0x00 0x00 0x00 0x00 0x76 0xFE 0xCE 0xC6 0xC6 0xC6 0xFE 0x7E 0x00 0x00 # a
|
|
0xC0 0xC0 0xC0 0xC0 0xDC 0xFE 0xE6 0xC6 0xC6 0xC6 0xFE 0xFC 0x00 0x00 # b
|
|
0x00 0x00 0x00 0x00 0x7C 0xFE 0xC6 0xC0 0xC0 0xC6 0xFE 0x7C 0x00 0x00 # c
|
|
0x06 0x06 0x06 0x06 0x76 0xFE 0xCE 0xC6 0xC6 0xC6 0xFE 0x7E 0x00 0x00 # d
|
|
0x00 0x00 0x00 0x00 0x7C 0xFE 0xC6 0xFE 0xF8 0xC6 0xFE 0x7C 0x00 0x00 # e
|
|
0x00 0x1E 0x3E 0x30 0xFE 0xFE 0x30 0x30 0x30 0x30 0x70 0x60 0x00 0x00 # f
|
|
0x00 0x00 0x00 0x00 0x7C 0xFE 0xC6 0xC6 0xC6 0xFE 0x7E 0x06 0xFE 0xFC # g
|
|
0xC0 0xC0 0xC0 0xC0 0xDC 0xFE 0xE6 0xC6 0xC6 0xC6 0xC6 0xC6 0x00 0x00 # h
|
|
0x00 0x18 0x18 0x00 0x18 0x18 0x18 0x18 0x18 0x18 0x1C 0x1C 0x00 0x00 # i
|
|
0x00 0x18 0x18 0x00 0x18 0x18 0x18 0x18 0x18 0x18 0x18 0xD8 0xF8 0x70 # j
|
|
0xC0 0xC0 0xC0 0xC6 0xCE 0xDC 0xF8 0xF0 0xF8 0xDC 0xCE 0xC6 0x00 0x00 # k
|
|
0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x3C 0x3C 0x00 0x00 # l
|
|
0x00 0x00 0x00 0x00 0xEC 0xFE 0xFE 0xD6 0xD6 0xC6 0xC6 0xC6 0x00 0x00 # m
|
|
0x00 0x00 0x00 0x00 0xBC 0xFE 0xE6 0xC6 0xC6 0xC6 0xC6 0xC6 0x00 0x00 # n
|
|
0x00 0x00 0x00 0x00 0x7C 0xFE 0xC6 0xC6 0xC6 0xC6 0xFE 0x7C 0x00 0x00 # o
|
|
0x00 0x00 0x00 0x00 0xBC 0xFE 0xC6 0xC6 0xC6 0xC6 0xFE 0xFC 0xC0 0xC0 # p
|
|
0x00 0x00 0x00 0x00 0x76 0xFE 0xCE 0xC6 0xC6 0xC6 0xFE 0x7E 0x06 0x06 # q
|
|
0x00 0x00 0x00 0x00 0xDC 0xFE 0xE6 0xC6 0xC0 0xC0 0xC0 0xC0 0x00 0x00 # r
|
|
0x00 0x00 0x00 0x00 0x7E 0xFE 0xC0 0xFC 0x7E 0x06 0xFE 0xFC 0x00 0x00 # s
|
|
0x00 0x30 0x30 0x30 0xFE 0xFE 0x30 0x30 0x30 0x30 0x3C 0x1C 0x00 0x00 # t
|
|
0x00 0x00 0x00 0x00 0xC6 0xC6 0xC6 0xC6 0xC6 0xCE 0xFE 0x7A 0x00 0x00 # u
|
|
0x00 0x00 0x00 0x00 0xC6 0xC6 0xEE 0x6C 0x7C 0x38 0x38 0x10 0x00 0x00 # v
|
|
0x00 0x00 0x00 0x00 0xC6 0xC6 0xD6 0xD6 0xD6 0xFE 0xFE 0xEC 0x00 0x00 # w
|
|
0x00 0x00 0x00 0x00 0xC6 0xEE 0x6C 0x38 0x7C 0xEE 0xC6 0xC6 0x00 0x00 # x
|
|
0x00 0x00 0x00 0x00 0xC6 0xC6 0xC6 0xC6 0xFE 0x7E 0x06 0x06 0xFE 0xFC # y
|
|
0x00 0x00 0x00 0x00 0xFE 0xFE 0x0E 0x1C 0x38 0x70 0xFE 0xFE 0x00 0x00 # z
|
|
0x7C 0xFE 0xC6 0xD6 0xD6 0xD6 0xD6 0xD6 0xD6 0xC6 0xFE 0x7C 0x00 0x00 # 0
|
|
0x18 0x38 0x78 0x18 0x18 0x18 0x18 0x18 0x18 0x18 0x7E 0x7E 0x00 0x00 # 1
|
|
0x7C 0xFE 0xC6 0x06 0x3E 0x7C 0xE0 0xC0 0xC0 0xC0 0xFE 0xFE 0x00 0x00 # 2
|
|
0x7C 0xFE 0xC6 0x06 0x1E 0x1C 0x06 0xC6 0xC6 0xC6 0xFE 0x7C 0x00 0x00 # 3
|
|
0x0C 0x1C 0x3C 0x6C 0xFE 0xFE 0x0C 0x0C 0x0C 0x0C 0x0C 0x0C 0x00 0x00 # 4
|
|
0xFE 0xFE 0xC0 0xC0 0xFC 0xFE 0x06 0x06 0x06 0xC6 0xFE 0x7C 0x00 0x00 # 5
|
|
0x7C 0xFE 0xC6 0xC0 0xFC 0xFE 0xC6 0xC6 0xC6 0xC6 0xFE 0x7C 0x00 0x00 # 6
|
|
0xFE 0xFE 0x06 0x0E 0x1C 0x18 0xFE 0xFE 0x30 0x30 0x30 0x30 0x00 0x00 # 7
|
|
0x7C 0xFE 0xC6 0xC6 0x7C 0xFE 0xC6 0xC6 0xC6 0xC6 0xFE 0x7C 0x00 0x00 # 8
|
|
0x7C 0xFE 0xC6 0xC6 0xFE 0x7E 0x06 0x06 0xC6 0xC6 0xFE 0x7C 0x00 0x00 # 9
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x18 0x18 0x18 0x00 0x00 # .
|
|
0x18 0x18 0x18 0x18 0x18 0x18 0x18 0x18 0x00 0x18 0x18 0x18 0x00 0x00 # !
|
|
0x7C 0xFE 0xC6 0xC6 0xDE 0x1C 0x18 0x18 0x00 0x18 0x18 0x18 0x00 0x00 # ?
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x18 0x18 0x18 0x08 0x10 # ,
|
|
0x18 0x18 0x18 0x08 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 # '
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x3C 0x3C 0x00 0x00 0x00 0x00 0x00 0x00 # -
|
|
0x6C 0x6C 0x6C 0x24 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 # "
|
|
|
|
: fill-stash
|
|
0x00 0x00 0x00 0x00 0x00
|
|
: fill-sprite
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
|
|
: string-yes-no
|
|
0xFE 0x1E 0x34 0x18 0x1E 0x2C 0xF9 0xFE 0x50 0x34 0x0D 0x28 0xFF
|
|
: mask-yes-no
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
|
|
to-code
|
|
|
|
: dialog-fill-screen
|
|
plane 3
|
|
clear
|
|
plane 1
|
|
i := long fill-stash
|
|
save v0 - v4
|
|
i := long fill-sprite
|
|
full-screen-blit
|
|
i := long fill-stash
|
|
load v0 - v4
|
|
;
|
|
|
|
: dialog-pause
|
|
# debounced key input, to prevent
|
|
# missing out on dialog.
|
|
vf := OCTO_KEY_E
|
|
loop if vf key then again # wait for release,
|
|
loop if vf -key then again # wait for press,
|
|
loop if vf key then again # wait for release...
|
|
wait 2 # ...plus a minimum time delay.
|
|
plane 3
|
|
clear
|
|
plane 1
|
|
;
|
|
|
|
: dialog-draw-answer
|
|
v0 := 24
|
|
if v2 == 0 then v0 += 48
|
|
v1 := 50
|
|
i := long mask-yes-no
|
|
sprite v0 v1 0
|
|
v0 += 16
|
|
sprite v0 v1 0
|
|
;
|
|
|
|
: dialog-yes-no
|
|
# returns 0/1 in v2
|
|
print string-yes-no
|
|
ve := OCTO_KEY_E
|
|
loop if ve key then again # wait for release
|
|
wait 2 # ...plus a minimum time delay.
|
|
v2 := 1
|
|
loop
|
|
dialog-draw-answer
|
|
ve := key
|
|
dialog-draw-answer
|
|
while ve != OCTO_KEY_E
|
|
if ve == OCTO_KEY_A then v2 := 1
|
|
if ve == OCTO_KEY_D then v2 := 0
|
|
again
|
|
ve := OCTO_KEY_E
|
|
loop if ve key then again # wait for release
|
|
clear
|
|
;
|
|
|
|
:macro print-from-table REG TABLE {
|
|
i := long TABLE
|
|
i += REG
|
|
i += REG
|
|
load v1
|
|
print-text
|
|
}
|
|
|
|
:macro fmt-from-table REG TABLE DEST {
|
|
i := long TABLE
|
|
i += REG
|
|
i += REG
|
|
load v3 - v4
|
|
i := DEST
|
|
save v3 - v4
|
|
}
|
|
|
|
###########################################
|
|
#
|
|
# Prelude
|
|
#
|
|
###########################################
|
|
|
|
to-data
|
|
|
|
: cake 0x08 0x22 0x08 0x2A 0x54 0xDD 0x7E 0x81 0xFF 0x7E 0x81 0xFF 0x7E
|
|
|
|
: prelude-placing
|
|
32 8
|
|
80 10
|
|
98 15
|
|
22 13
|
|
80 30
|
|
90 35
|
|
30 24
|
|
18 35
|
|
|
|
: prelude-0
|
|
0xFE 0x24 0x11 0x44 0x16 0x21 0x1A 0x2D 0xF9 0x1A 0xFE 0x24 0x1B 0x2C 0x29 0x25
|
|
0x1E 0x27 0x1D 0x22 0x1D 0xFE 0x24 0x25 0x29 0x1A 0x2B 0x2D 0x32 0x3F 0x44 0xFF
|
|
: prelude-1
|
|
0xFE 0x12 0x0F 0x44 0x08 0x27 0x1D 0x1E 0x1E 0x1D 0x3E 0xFE 0x12 0x19 0x07 0x1A
|
|
0x29 0x29 0x32 0xF9 0x1B 0x22 0x2B 0x2D 0x21 0x1D 0x1A 0x32 0x41 0xFE 0x12 0x23
|
|
0x02 0x25 0x1A 0x22 0x2B 0x1E 0x3F 0x44 0xFF
|
|
: prelude-2
|
|
0xFE 0x08 0x0D 0x44 0x0F 0x1E 0x2B 0x21 0x1A 0x29 0x2C 0xF9 0x30 0x1E 0xF9 0x2C
|
|
0x21 0x28 0x2E 0x25 0x1D 0xFE 0x08 0x17 0x2E 0x2C 0x1E 0xF9 0x28 0x2E 0x2B 0xF9
|
|
0x1E 0x2C 0x2D 0x1E 0x1E 0x26 0x1E 0x1D 0xFE 0x08 0x21 0x1C 0x28 0x25 0x25 0x1E
|
|
0x1A 0x20 0x2E 0x1E 0x42 0x2C 0xF9 0x27 0x1E 0x30 0xFE 0x08 0x2B 0x2D 0x22 0x2D
|
|
0x25 0x1E 0x40 0x44 0xFF
|
|
: prelude-3
|
|
0xFE 0x03 0x0B 0x44 0x10 0x2E 0x22 0x2D 0x1E 0xF9 0x2B 0x22 0x20 0x21 0x2D 0x3E
|
|
0xFE 0x03 0x15 0x00 0xF9 0x1F 0x22 0x27 0x1E 0xF9 0x1B 0x22 0x2B 0x2D 0x21 0x1D
|
|
0x1A 0x32 0xFE 0x03 0x1F 0x2D 0x28 0xF9 0x32 0x28 0x2E 0x41 0xFE 0x03 0x29 0x08
|
|
0x27 0x2C 0x29 0x1E 0x1C 0x2D 0x28 0x2B 0xF9 0x01 0x25 0x1E 0x1C 0x21 0x26 0x1A
|
|
0x27 0x3F 0x44 0xFF
|
|
: prelude-4
|
|
0xFE 0x03 0x0B 0x44 0x16 0x1E 0xF9 0x30 0x22 0x25 0x25 0xF9 0x1A 0x25 0x25 0xF9
|
|
0x26 0x28 0x2C 0x2D 0xFE 0x03 0x15 0x1A 0x2C 0x2C 0x2E 0x2B 0x1E 0x1D 0x25 0x32
|
|
0xF9 0x1F 0x1E 0x1E 0x25 0xF9 0x2C 0x1A 0x1F 0x1E 0x2B 0xFE 0x03 0x1F 0x30 0x22
|
|
0x2D 0x21 0xF9 0x32 0x28 0x2E 0xF9 0x28 0x27 0xF9 0x2D 0x21 0x1E 0xF9 0x23 0x28
|
|
0x1B 0x41 0xFE 0x03 0x29 0x1D 0x1E 0x1A 0x2B 0x3E 0x44 0xFF
|
|
: prelude-5
|
|
0xFE 0x05 0x0C 0x44 0x0D 0x28 0x2D 0xF9 0x2D 0x28 0xF9 0x2C 0x29 0x28 0x22 0x25
|
|
0xF9 0x2D 0x21 0x1E 0xFE 0x05 0x16 0x26 0x28 0x28 0x1D 0x41 0xF9 0x1B 0x2E 0x2D
|
|
0xF9 0x08 0xF9 0x1C 0x1A 0x27 0x42 0x2D 0xFE 0x05 0x20 0x21 0x1E 0x25 0x29 0xF9
|
|
0x1B 0x2E 0x2D 0xF9 0x28 0x1B 0x2C 0x1E 0x2B 0x2F 0x1E 0xF9 0x1A 0x27 0xFE 0x05
|
|
0x2A 0x1A 0x1B 0x2C 0x1E 0x27 0x1C 0x1E 0x3E 0x3E 0x3E 0x44 0xFF
|
|
: prelude-6
|
|
0xFE 0x02 0x08 0x44 0x06 0x28 0x28 0x1D 0xF9 0x29 0x28 0x22 0x27 0x2D 0x3E 0xFE
|
|
0x02 0x12 0x00 0x1F 0x2D 0x1E 0x2B 0xF9 0x1A 0x25 0x25 0xF9 0x2D 0x21 0x1E 0xF9
|
|
0x1E 0x1F 0x1F 0x28 0x2B 0x2D 0xFE 0x02 0x1C 0x2D 0x28 0xF9 0x2D 0x21 0x2B 0x28
|
|
0x30 0xF9 0x2D 0x21 0x22 0x2C 0xF9 0x29 0x1A 0x2B 0x2D 0x32 0x41 0xFE 0x02 0x26
|
|
0x30 0x21 0x1E 0x2B 0x1E 0xF9 0x1C 0x28 0x2E 0x25 0x1D 0xF9 0x28 0x2E 0x2B 0xFE
|
|
0x02 0x30 0x21 0x28 0x2C 0x2D 0xF9 0x1B 0x1E 0x40 0x44 0xFF
|
|
: prelude-7
|
|
0xFE 0x02 0x08 0x44 0x08 0x2D 0x42 0x2C 0xF9 0x1B 0x1E 0x1E 0x27 0xF9 0x2A 0x2E
|
|
0x22 0x2D 0x1E 0xF9 0x1A 0xFE 0x02 0x12 0x30 0x21 0x22 0x25 0x1E 0x41 0xF9 0x22
|
|
0x27 0xF9 0x1F 0x1A 0x1C 0x2D 0x3E 0xFE 0x02 0x1C 0x0F 0x1E 0x2B 0x21 0x1A 0x29
|
|
0x2C 0xF9 0x30 0x1E 0xF9 0x2C 0x21 0x28 0x2E 0x25 0x1D 0xF9 0x20 0x28 0xFE 0x02
|
|
0x26 0x25 0x28 0x28 0x24 0x22 0x27 0x20 0xF9 0x1F 0x28 0x2B 0xF9 0x2D 0x21 0x1E
|
|
0xFE 0x02 0x30 0x28 0x25 0x1D 0xF9 0x1B 0x1E 0x1A 0x27 0x40 0x44 0xFF
|
|
|
|
: prelude-dialog-table
|
|
pointer prelude-0
|
|
pointer prelude-1
|
|
pointer prelude-2
|
|
pointer prelude-3
|
|
pointer prelude-4
|
|
pointer prelude-5
|
|
pointer prelude-6
|
|
pointer prelude-7
|
|
|
|
to-code
|
|
|
|
: prelude
|
|
dialog-fill-screen
|
|
wait 60
|
|
|
|
current-room := 11
|
|
clear
|
|
draw-room
|
|
player-face := 1
|
|
i := long room-stash-start
|
|
load player-x - player-y
|
|
ve := 0
|
|
draw-player
|
|
i := long cake
|
|
v0 := 60
|
|
v1 := 20
|
|
sprite v0 v1 13
|
|
|
|
v2 := 0
|
|
v3 := 0
|
|
loop
|
|
i := long prelude-placing
|
|
i += v2
|
|
i += v2
|
|
load v1
|
|
i := long npc-sprites
|
|
i += v3
|
|
sprite v0 v1 15
|
|
v3 += 16
|
|
v2 += 1
|
|
if v2 != 8 then
|
|
again
|
|
dialog-pause
|
|
|
|
v2 := 0
|
|
loop
|
|
introduce-npc
|
|
print-from-table v2 prelude-dialog-table
|
|
dialog-pause
|
|
v2 += 1
|
|
if v2 != 8 then
|
|
again
|
|
|
|
dialog-fill-screen
|
|
wait 60
|
|
jump intro-sequence
|
|
|
|
###########################################
|
|
#
|
|
# Introduction
|
|
#
|
|
###########################################
|
|
|
|
to-data
|
|
|
|
: title-screen
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x69 0x01 0xFB
|
|
0x01 0x9B 0x03 0x1B 0x03 0x3B 0x03 0xFB
|
|
0x01 0xEA 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x80 0x00
|
|
0xF8 0x00 0xDC 0x00 0xDF 0x00 0xEF 0x00
|
|
0xEF 0x00 0xED 0x90 0xFD 0xB0 0xFD 0xF8
|
|
0xFA 0xFC 0xFF 0xEC 0xEF 0xEF 0xEF 0x6F
|
|
0xDB 0xEB 0xFF 0xFA 0xFB 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xDF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFE
|
|
0xFF 0xF8 0xFF 0xF1 0xFF 0x87 0xFF 0x3F
|
|
0xF8 0xFF 0xF7 0xFE 0xEF 0xFF 0xFF 0xFF
|
|
0xDF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0xE0 0x79 0xF0 0xFD
|
|
0xB0 0xCD 0x30 0xF9 0x70 0xE1 0x60 0xFD
|
|
0x70 0x79 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x08 0x00 0x0C 0x00 0x7F 0x3C
|
|
0x7F 0x7E 0x1C 0x66 0x18 0x66 0x1A 0x6C
|
|
0x1E 0x7C 0x0C 0x38 0x00 0x00 0x00 0x00
|
|
0x60 0x00 0x60 0x00 0xE0 0x00 0xF0 0x00
|
|
0xF0 0x00 0xF0 0x00 0xF0 0xC0 0xF1 0xD8
|
|
0xF1 0xFC 0xF3 0xFC 0xD3 0xFC 0xDB 0xBD
|
|
0xFF 0xBC 0xFF 0x9E 0xFF 0xFF 0xFF 0xFB
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFE 0xFF 0xF0
|
|
0xFF 0x80 0xFE 0x01 0xE0 0x03 0x00 0x07
|
|
0x01 0xFF 0xFD 0xFF 0xE3 0xFF 0xDF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x13 0xC7 0xB7 0xEF
|
|
0xB6 0x6E 0xB7 0xCC 0xE7 0x0D 0xC7 0xAD
|
|
0x83 0xC9 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x3F 0xFF 0x1F 0xFF
|
|
0x1F 0xFF 0x1F 0xFF 0x1F 0xFF 0x1F 0xFF
|
|
0x1F 0xE0 0x1F 0xE0 0x1F 0xE0 0x1F 0xC0
|
|
0x3F 0xC0 0x3F 0xC0 0x3F 0xC0 0x3F 0xC0
|
|
0x7F 0x80 0x7F 0x81 0x7F 0xFF 0x7F 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0x00 0x00 0x00 0x00 0xC0 0x00 0xFC 0x00
|
|
0xFF 0xC0 0xFC 0x39 0x03 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFD 0xFF 0xFB
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xDF 0xFF 0xFF
|
|
0xFF 0xBF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x89 0xE3 0xDB 0xF7
|
|
0xC3 0xB4 0xDB 0x36 0xDB 0x77 0x9B 0x67
|
|
0xD2 0x71 0x00 0x03 0x00 0x0F 0x00 0x06
|
|
0x00 0x00 0x00 0x00 0xF0 0x00 0xFC 0x07
|
|
0xFE 0x1F 0xFF 0x3F 0xFF 0x26 0xFF 0xA6
|
|
0x7F 0xBF 0x1F 0x9D 0x0F 0xCF 0x0F 0xCA
|
|
0x0F 0xC0 0x0F 0xDF 0x0F 0xCF 0x1F 0xCF
|
|
0x7F 0xCF 0xFF 0x9F 0xFF 0x9F 0xFF 0x9F
|
|
0xFF 0x1F 0xFE 0x1F 0xFC 0x3F 0xF0 0x3F
|
|
0x00 0x00 0x00 0x00 0x00 0x01 0x00 0x07
|
|
0x0F 0xF7 0xFB 0xFF 0xF7 0xDF 0xCF 0xBF
|
|
0x3F 0x7F 0xFF 0xFF 0xF9 0xFF 0xF7 0xFF
|
|
0xFF 0xFF 0xDF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x80 0x00 0xC0 0x00
|
|
0xC0 0x00 0xC0 0x00 0xC0 0x00 0xC0 0x00
|
|
0x80 0x00 0x80 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x3F 0x80 0xFF
|
|
0xC1 0xFF 0xE3 0xFF 0x67 0xFF 0x67 0xF8
|
|
0xCF 0xF0 0xCF 0xE0 0x8F 0xFF 0x9F 0xFF
|
|
0x1F 0xFF 0xDF 0xFF 0x9F 0xC0 0xBF 0xC0
|
|
0xBF 0xC0 0xBF 0xE1 0xBF 0xFF 0x9F 0xFF
|
|
0x1F 0xFF 0x0F 0xFF 0x07 0xFF 0x81 0xFF
|
|
0x0E 0x00 0x3F 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0xE0 0x00 0xFE 0x00
|
|
0xFE 0x00 0xFF 0x00 0xFF 0x00 0x3F 0x80
|
|
0x1F 0x83 0x1F 0xDF 0xFF 0xDF 0xFF 0xDF
|
|
0xFF 0xDF 0xFF 0xDF 0x00 0x1F 0x00 0x3F
|
|
0xFF 0xBF 0xFF 0xBF 0xFF 0x7F 0xFF 0x7F
|
|
0xFE 0xFF 0xFD 0xF8 0xFB 0xF0 0xE7 0xF3
|
|
0x1F 0xC0 0xFF 0xE0 0xFF 0xF3 0xFF 0xC3
|
|
0xFF 0xE7 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFC 0xFF 0xF8
|
|
0x00 0x00 0x00 0x0C 0x00 0x0C 0x00 0x1E
|
|
0x00 0x1E 0x00 0x3F 0x00 0x3F 0x00 0x3F
|
|
0x00 0x7F 0x00 0x7F 0x00 0x7F 0x00 0x0F
|
|
0x00 0x0E 0x00 0x0E 0x00 0x0F 0x00 0x0F
|
|
0x00 0x0F 0x00 0x0F 0x00 0x0F 0x03 0xC0
|
|
0x07 0xFF 0x1F 0xFF 0x7F 0xFE 0xFF 0xF0
|
|
0xFF 0x87 0xFE 0x1F 0xFD 0xFF 0xF0 0xFF
|
|
0xF3 0xFF 0xF0 0x7F 0xF8 0x7F 0xFC 0x03
|
|
0xFF 0x00 0xFF 0xE0 0xFF 0xF8 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0x43 0x43 0x81 0x01
|
|
0x99 0x91 0x99 0x13 0x91 0x27 0x81 0x21
|
|
0xC3 0x21 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xF8 0xFF 0xC4 0xFF 0x00 0xF2 0x00
|
|
0xD0 0x00 0x00 0x00 0x00 0x04 0x00 0x01
|
|
0x00 0x00 0x0F 0xFF 0x3F 0xFF 0x3F 0xFF
|
|
0x0F 0xBD 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xF7 0xBF 0xF7 0xBF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0x03 0xE0
|
|
0xFF 0x3F 0xF3 0xFF 0x0F 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0x7F 0xFF 0x0F 0xFF 0x01 0xFF 0x00 0x7F
|
|
0xC0 0x1F 0xE0 0x07 0xF8 0x01 0xFD 0x00
|
|
0xFE 0x01 0xFF 0x00 0xFF 0x80 0xFF 0xA0
|
|
0xFF 0xC0 0xFF 0xC0 0xFF 0xF0 0xFF 0xE0
|
|
0xFF 0xF0 0xFF 0xE0 0xFF 0xE0 0xFF 0xE0
|
|
0xFF 0xC0 0xFF 0x80 0xF8 0x01 0xA0 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x02 0x00 0x40
|
|
0x01 0x13 0x10 0x3F 0x0D 0xFF 0x3F 0xFF
|
|
|
|
# a little 3x5 semifont
|
|
: tiny-dash 0x00 0x00 0xE0 0x00 0x00
|
|
: tiny-space 0x00 0x00 0x00 0x00 0x00
|
|
: tiny-P 0xC0 0xA0 0xC0 0x80 0x80
|
|
: tiny-R 0xC0 0xA0 0xC0 0xA0 0xA0
|
|
: tiny-E 0xE0 0x80 0xC0 0x80 0xE0
|
|
: tiny-S 0x60 0x80 0x40 0x20 0xC0
|
|
: tiny-A 0x40 0xA0 0xE0 0xA0 0xA0
|
|
: tiny-C 0x40 0xA0 0x80 0xA0 0x40
|
|
: tiny-table
|
|
pointer tiny-dash
|
|
pointer tiny-P
|
|
pointer tiny-R
|
|
pointer tiny-E
|
|
pointer tiny-S
|
|
pointer tiny-S
|
|
pointer tiny-space
|
|
pointer tiny-S
|
|
pointer tiny-P
|
|
pointer tiny-A
|
|
pointer tiny-C
|
|
pointer tiny-E
|
|
pointer tiny-dash
|
|
: tiny-table-end
|
|
: wiggle-table 0 0 1 1 2 1 1 0 0 -1 -1 -2 -1 -1 0 0
|
|
|
|
: lightning-right
|
|
0x00 0x04 0x00 0x08 0x00 0x70 0x00 0x88 0x01 0x08 0x1E 0x00 0x28 0x00 0x08 0x00
|
|
0x04 0x00 0x03 0x00 0x01 0x00 0x03 0x00 0x24 0x80 0x58 0x80 0x81 0x00 0x80 0x00
|
|
: lightning-left
|
|
0x78 0x00 0x1C 0x00 0x0C 0x00 0x0C 0x00 0x0E 0x00 0x0B 0x00 0x18 0xC0 0x10 0x60
|
|
0x20 0x20 0x20 0x20 0x20 0x1C 0x60 0x12 0x90 0x09 0x88 0x00 0x04 0x00 0x04 0x00
|
|
: rain # (padded to 8x16)
|
|
0x80 0x00 0x00 0x80 0x80 0x00 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x00
|
|
0x80 0x00 0x80 0x80 0x80 0x80 0x80 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x00 0x00 0x00 0x00
|
|
0x80 0x80 0x80 0x80 0x00 0x00 0x00 0x00 0x00 0x08 0x08 0x08 0x08 0x00 0x00 0x00
|
|
: dark-and-stormy # "It is a dark and stormy night."
|
|
0xFE 0x0B 0x15 0x08 0x2D 0xF9 0x22 0x2C 0xF9 0x1A 0xF9 0x1D 0x1A 0x2B 0x24 0xFE
|
|
0x0B 0x1F 0x1A 0x27 0x1D 0xF9 0x2C 0x2D 0x28 0x2B 0x26 0x32 0xF9 0x27 0x22 0x20
|
|
0x21 0x2D 0x3E 0xFF
|
|
: a-murder-has-been-committed
|
|
0xFE 0x0B 0x15 0xFD 0x00 0xF9 0x26 0x2E 0x2B 0x1D 0x1E 0x2B 0xF9 0x21 0x1A 0x2C
|
|
0xF9 0x1B 0x1E 0x1E 0x27 0xF9 0xFE 0x0B 0x1F 0x1C 0x28 0x26 0x26 0x22 0x2D 0x2D
|
|
0x1E 0x1D 0x3E 0x3E 0x3E 0xFF
|
|
|
|
: a-shocking-end
|
|
0xFE 0x00 0x12 0x08 0x2D 0xF9 0x2C 0x1E 0x1E 0x26 0x2C 0xF9 0x2D 0x21 0x1E 0xF9
|
|
0x27 0x22 0x20 0x21 0x2D 0x42 0x2C 0xFE 0x00 0x1C 0x1F 0x1E 0x2C 0x2D 0x22 0x2F
|
|
0x22 0x2D 0x22 0x1E 0x2C 0xF9 0x21 0x1A 0x2F 0x1E 0xF9 0x1C 0x28 0x26 0x1E 0xFE
|
|
0x00 0x26 0x2D 0x28 0xF9 0x1A 0xF9 0x2C 0x21 0x28 0x1C 0x24 0x22 0x27 0x20 0xF9
|
|
0x1E 0x27 0x1D 0x3E 0xFF
|
|
: a-pool-of-blood
|
|
0xFE 0x02 0x0D 0x0E 0x2E 0x2B 0xF9 0x25 0x1A 0x2D 0x1E 0xF9 0x21 0x28 0x2C 0x2D
|
|
0x42 0x2C 0xF9 0x1B 0x28 0x1D 0x32 0xFE 0x02 0x17 0x30 0x1A 0x2C 0xF9 0x23 0x2E
|
|
0x2C 0x2D 0xF9 0x1D 0x22 0x2C 0x1C 0x28 0x2F 0x1E 0x2B 0x1E 0x1D 0xFE 0x02 0x21
|
|
0x1F 0x1A 0x1C 0x1E 0x43 0x1D 0x28 0x30 0x27 0xF9 0x22 0x27 0xF9 0x1A 0xF9 0x29
|
|
0x28 0x28 0x25 0xFE 0x02 0x2B 0x28 0x1F 0xF9 0x21 0x22 0x2C 0xF9 0x28 0x30 0x27
|
|
0xF9 0x1B 0x25 0x28 0x28 0x1D 0x3E 0x3E 0x3E 0xFF
|
|
: get-to-the-bottom-of-it
|
|
0xFE 0x00 0x0C 0x08 0xF9 0x26 0x2E 0x2C 0x2D 0xF9 0x20 0x1E 0x2D 0xF9 0x2D 0x28
|
|
0xF9 0x2D 0x21 0x1E 0xFE 0x00 0x16 0x1B 0x28 0x2D 0x2D 0x28 0x26 0xF9 0x28 0x1F
|
|
0xF9 0x2D 0x21 0x22 0x2C 0xF9 0x1A 0x2D 0xFE 0x00 0x20 0x28 0x27 0x1C 0x1E 0x43
|
|
0xF9 0x1B 0x1E 0x1F 0x28 0x2B 0x1E 0xF9 0x28 0x2E 0x2B 0xFE 0x00 0x2A 0x24 0x22
|
|
0x25 0x25 0x1E 0x2B 0xF9 0x2C 0x2D 0x2B 0x22 0x24 0x1E 0x2C 0xF9 0x1A 0x20 0x1A
|
|
0x22 0x27 0x3F 0xFF
|
|
|
|
: intro-1-quip-0 # "Good grief, he's dead!"
|
|
0xFE 0x1A 0x14 0x44 0x06 0x28 0x28 0x1D 0xF9 0x20 0x2B 0x22 0x1E 0x1F 0x41 0xFE
|
|
0x1A 0x1E 0x21 0x1E 0x42 0x2C 0xF9 0x1D 0x1E 0x1A 0x1D 0x3F 0x44 0xFF
|
|
: intro-1-quip-1 # "Hmm. No sign of a pulse."
|
|
0xFE 0x03 0x14 0x44 0x07 0x26 0x26 0x3E 0xFE 0x03 0x1E 0x0D 0x28 0xF9 0x2C 0x22
|
|
0x20 0x27 0xF9 0x28 0x1F 0xF9 0x1A 0xF9 0x29 0x2E 0x25 0x2C 0x1E 0x3E 0x44 0xFF
|
|
: intro-1-quip-2 # "I can't believe it! Murdered in his own home?"
|
|
0xFE 0x03 0x11 0x44 0x08 0xF9 0x1C 0x1A 0x27 0x42 0x2D 0xF9 0x1B 0x1E 0x25 0x22
|
|
0x1E 0x2F 0x1E 0xF9 0x22 0x2D 0x3F 0xFE 0x03 0x1B 0x0C 0x2E 0x2B 0x1D 0x1E 0x2B
|
|
0x1E 0x1D 0xF9 0x22 0x27 0xF9 0x21 0x22 0x2C 0xFE 0x03 0x25 0x28 0x30 0x27 0xF9
|
|
0x21 0x28 0x26 0x1E 0x40 0x44 0xFF
|
|
: intro-1-quip-3 # "He's Dead? When could this have happened?"
|
|
0xFE 0x10 0x10 0x44 0x07 0x1E 0x42 0x2C 0xF9 0x03 0x1E 0x1A 0x1D 0x40 0xFE 0x10
|
|
0x1A 0x16 0x21 0x1E 0x27 0xF9 0x1C 0x28 0x2E 0x25 0x1D 0xF9 0x2D 0x21 0x22 0x2C
|
|
0xFE 0x10 0x24 0x21 0x1A 0x2F 0x1E 0xF9 0x21 0x1A 0x29 0x29 0x1E 0x27 0x1E 0x1D
|
|
0x40 0x44 0xFF
|
|
: intro-1-quip-4 # "Doesn't take a coroner to classify this one, I'm afraid."
|
|
0xFE 0x02 0x11 0x44 0x03 0x28 0x1E 0x2C 0x27 0x42 0x2D 0xF9 0x2D 0x1A 0x24 0x1E
|
|
0xF9 0x1A 0xFE 0x02 0x1B 0x1C 0x28 0x2B 0x28 0x27 0x1E 0x2B 0xF9 0x2D 0x28 0xF9
|
|
0x1C 0x1A 0x25 0x25 0xF9 0x2D 0x21 0x22 0x2C 0xFE 0x02 0x25 0x28 0x27 0x1E 0x41
|
|
0xF9 0x08 0x42 0x26 0xF9 0x1A 0x1F 0x2B 0x1A 0x22 0x1D 0x3E 0x44 0xFF
|
|
: intro-1-quip-5 # "Stone dead. What a mess!"
|
|
0xFE 0x1A 0x18 0x44 0x12 0x2D 0x28 0x27 0x1E 0xF9 0x1D 0x1E 0x1A 0x1D 0x3E 0xFE
|
|
0x1A 0x22 0x16 0x21 0x1A 0x2D 0xF9 0x1A 0xF9 0x26 0x1E 0x2C 0x2C 0x3F 0x44 0xFF
|
|
: intro-1-quip-6 # "Oh dear. The carpet is simply ruined."
|
|
0xFE 0x14 0x11 0x44 0x0E 0x21 0xF9 0x1D 0x1E 0x1A 0x2B 0x3E 0xFE 0x14 0x1B 0x13
|
|
0x21 0x1E 0xF9 0x1C 0x1A 0x2B 0x29 0x1E 0x2D 0xF9 0x22 0x2C 0xFE 0x14 0x25 0x2C
|
|
0x22 0x26 0x29 0x25 0x32 0xF9 0x2B 0x2E 0x22 0x27 0x1E 0x1D 0x3E 0x44 0xFF
|
|
: intro-1-quip-7 # "I can't imagine he'll pull through..."
|
|
0xFE 0x02 0x16 0x44 0x02 0x1A 0x27 0x42 0x2D 0xF9 0x22 0x26 0x1A 0x20 0x22 0x27
|
|
0x1E 0xF9 0x21 0x1E 0x42 0x25 0x25 0xFE 0x02 0x20 0x29 0x2E 0x25 0x25 0xF9 0x2D
|
|
0x21 0x2B 0x28 0x2E 0x20 0x21 0x3E 0x3E 0x3E 0x44 0xFF
|
|
|
|
: intro-2-quip-0 # "Who could have done such a thing?"
|
|
0xFE 0x02 0x16 0x44 0x16 0x21 0x28 0xF9 0x1C 0x28 0x2E 0x25 0x1D 0xF9 0x21 0x1A
|
|
0x2F 0x1E 0xF9 0x1D 0x28 0x27 0x1E 0xFE 0x02 0x20 0x2C 0x2E 0x1C 0x21 0xF9 0x1A
|
|
0xF9 0x2D 0x21 0x22 0x27 0x20 0x40 0x44 0xFF
|
|
: intro-2-quip-1 # "I think I'm going to be sick!"
|
|
0xFE 0x07 0x16 0x44 0x08 0xF9 0x2D 0x21 0x22 0x27 0x24 0xF9 0x08 0x42 0x26 0xF9
|
|
0x20 0x28 0x22 0x27 0x20 0xFE 0x07 0x20 0x2D 0x28 0xF9 0x1B 0x1E 0xF9 0x2C 0x22
|
|
0x1C 0x24 0x3F 0x44 0xFF
|
|
: intro-2-quip-2 # "I simply can't bear the signt of blood..."
|
|
0xFE 0x0F 0x12 0x44 0x08 0xF9 0x2C 0x22 0x26 0x29 0x25 0x32 0xF9 0x1C 0x1A 0x27
|
|
0x42 0x2D 0xFE 0x0F 0x1C 0x1B 0x1E 0x1A 0x2B 0xF9 0x2D 0x21 0x1E 0xF9 0x2C 0x22
|
|
0x20 0x21 0x2D 0xFE 0x0F 0x26 0x28 0x1F 0xF9 0x1B 0x25 0x28 0x28 0x1D 0x3E 0x3E
|
|
0x3E 0x44 0xFF
|
|
: intro-2-quip-3 # "Farewell, old chum. Such a way to go!"
|
|
0xFE 0x02 0x16 0x44 0x05 0x1A 0x2B 0x1E 0x30 0x1E 0x25 0x25 0x41 0xF9 0x28 0x25
|
|
0x1D 0xF9 0x1C 0x21 0x2E 0x26 0x3E 0xFE 0x02 0x20 0x12 0x2E 0x1C 0x21 0xF9 0x1A
|
|
0xF9 0x30 0x1A 0x32 0xF9 0x2D 0x28 0xF9 0x20 0x28 0x3F 0x44 0xFF
|
|
: intro-2-quip-4 # "How simply dreadful!"
|
|
0xFE 0x1A 0x16 0x44 0x07 0x28 0x30 0xF9 0x2C 0x22 0x26 0x29 0x25 0x32 0xFE 0x1A
|
|
0x20 0x1D 0x2B 0x1E 0x1A 0x1D 0x1F 0x2E 0x25 0x3F 0x44 0xFF
|
|
: intro-2-quip-5 # "I think I'm going to need a few stiff drinks..."
|
|
0xFE 0x05 0x11 0x44 0x08 0xF9 0x2D 0x21 0x22 0x27 0x24 0xF9 0x08 0x42 0x26 0xF9
|
|
0x20 0x28 0x22 0x27 0x20 0xFE 0x05 0x1B 0x2D 0x28 0xF9 0x27 0x1E 0x1E 0x1D 0xF9
|
|
0x1A 0xF9 0x1F 0x1E 0x30 0xF9 0x2C 0x2D 0x22 0x1F 0x1F 0xFE 0x05 0x25 0x1D 0x2B
|
|
0x22 0x27 0x24 0x2C 0x3E 0x3E 0x3E 0x44 0xFF
|
|
: intro-2-quip-6 # "There's... so much blood..."
|
|
0xFE 0x0C 0x16 0x44 0x13 0x21 0x1E 0x2B 0x1E 0x42 0x2C 0x3E 0x3E 0x3E 0xFE 0x0C
|
|
0x20 0x2C 0x28 0xF9 0x26 0x2E 0x1C 0x21 0xF9 0x1B 0x25 0x28 0x28 0x1D 0x3E 0x3E
|
|
0x3E 0x44 0xFF
|
|
: intro-2-quip-7 # "The old man always did know how to make an exit, I suppose."
|
|
0xFE 0x02 0x11 0x44 0x13 0x21 0x1E 0xF9 0x28 0x25 0x1D 0xF9 0x26 0x1A 0x27 0xF9
|
|
0x1A 0x25 0x30 0x1A 0x32 0x2C 0xFE 0x02 0x1B 0x1D 0x22 0x1D 0xF9 0x24 0x27 0x28
|
|
0x30 0xF9 0x21 0x28 0x30 0xF9 0x2D 0x28 0xF9 0x26 0x1A 0x24 0x1E 0xFE 0x02 0x25
|
|
0x1A 0x27 0xF9 0x1E 0x31 0x22 0x2D 0x41 0xF9 0x08 0xF9 0x2C 0x2E 0x29 0x29 0x28
|
|
0x2C 0x1E 0x3E 0x44 0xFF
|
|
|
|
: intro-table-1
|
|
pointer intro-1-quip-0
|
|
pointer intro-1-quip-1
|
|
pointer intro-1-quip-2
|
|
pointer intro-1-quip-3
|
|
pointer intro-1-quip-4
|
|
pointer intro-1-quip-5
|
|
pointer intro-1-quip-6
|
|
pointer intro-1-quip-7
|
|
: intro-table-2
|
|
pointer intro-2-quip-0
|
|
pointer intro-2-quip-1
|
|
pointer intro-2-quip-2
|
|
pointer intro-2-quip-3
|
|
pointer intro-2-quip-4
|
|
pointer intro-2-quip-5
|
|
pointer intro-2-quip-6
|
|
pointer intro-2-quip-7
|
|
: intro-sequence-registers
|
|
0 # ve: animation index
|
|
0 # vd: space key latch
|
|
0 # vc: 1 key latch
|
|
0xF # vb: constant index mask
|
|
|
|
to-code
|
|
|
|
: draw-lightning
|
|
clear
|
|
vf := random 0b1
|
|
v1 := 0
|
|
if vf == 0 begin
|
|
i := long lightning-right
|
|
v0 := 75
|
|
else
|
|
i := long lightning-left
|
|
v0 := 25
|
|
end
|
|
v2 := 10
|
|
loop
|
|
sprite v0 v1 0
|
|
sync
|
|
vf := 5
|
|
buzzer := vf
|
|
v2 += -1
|
|
if v2 != 0 then
|
|
again
|
|
clear
|
|
;
|
|
|
|
: draw-rain
|
|
loop
|
|
dialog-fill-screen
|
|
v2 := 20 # rain density
|
|
loop
|
|
i := long rain
|
|
vf := random 0b110000 # 0,16,32,48
|
|
i += vf
|
|
v0 := random 0xFF
|
|
v1 := random 0xFF
|
|
sprite v0 v1 15
|
|
|
|
v2 += -1
|
|
if v2 != 0 then
|
|
again
|
|
sync
|
|
|
|
v3 += -1
|
|
if v3 != 0 then
|
|
again
|
|
clear
|
|
;
|
|
|
|
: draw-wiggle-prompt
|
|
# -PRESS SPACE-
|
|
:calc prompt-length { 0xFF & ( tiny-table-end - tiny-table ) / 2 }
|
|
:calc prompt-offset-x { 0xFF & 64 - ( prompt-length * 4 ) / 2 }
|
|
v0 := prompt-offset-x
|
|
v1 := 58
|
|
v2 := 0
|
|
va := ve
|
|
loop
|
|
i := long tiny-table
|
|
i += v2
|
|
i += v2
|
|
load v3 - v4
|
|
i := long prompt-pointer
|
|
save v3 - v4
|
|
|
|
i := long wiggle-table
|
|
i += va
|
|
load v1 - v1
|
|
v1 += 57
|
|
|
|
indirect prompt-pointer
|
|
sprite v0 v1 5
|
|
|
|
v0 += 4
|
|
v2 += 1
|
|
va += 1
|
|
va &= vb
|
|
if v2 != prompt-length then
|
|
again
|
|
;
|
|
|
|
:macro latch-key KEY LATCH {
|
|
vf := KEY
|
|
if LATCH == 0 begin
|
|
if vf key then LATCH := 1
|
|
else
|
|
while vf key
|
|
end
|
|
}
|
|
|
|
: test-fight
|
|
fencing-minigame
|
|
jump intro-sequence
|
|
|
|
: intro-sequence
|
|
clear
|
|
i := long title-screen
|
|
full-screen-blit
|
|
|
|
i := long intro-sequence-registers
|
|
load ve - vb
|
|
draw-wiggle-prompt
|
|
loop
|
|
draw-wiggle-prompt
|
|
ve += 1
|
|
ve &= vb
|
|
draw-wiggle-prompt
|
|
latch-key OCTO_KEY_E vd
|
|
latch-key OCTO_KEY_1 vc
|
|
vf := OCTO_KEY_2
|
|
if vf key then jump test-fight
|
|
wait 2
|
|
again
|
|
|
|
plane 3
|
|
clear
|
|
plane 1
|
|
if vc == 1 then jump prelude
|
|
|
|
v3 := 30 # rain duration
|
|
draw-rain
|
|
dialog-fill-screen
|
|
print dark-and-stormy
|
|
plot-a-murder # do this here to hide the delay
|
|
wait 120
|
|
|
|
draw-lightning
|
|
v3 := 10
|
|
draw-rain
|
|
draw-lightning
|
|
v3 := 10
|
|
draw-rain
|
|
draw-lightning
|
|
v3 := 40
|
|
draw-rain
|
|
|
|
dialog-fill-screen
|
|
print a-murder-has-been-committed
|
|
wait 120
|
|
dialog-fill-screen
|
|
wait 60
|
|
|
|
clear
|
|
print a-shocking-end
|
|
dialog-pause
|
|
print a-pool-of-blood
|
|
dialog-pause
|
|
|
|
i := long npc-quip-1
|
|
load v2 - v3
|
|
introduce-npc
|
|
print-from-table v3 intro-table-1
|
|
dialog-pause
|
|
|
|
i := long npc-quip-2
|
|
load v2 - v3
|
|
introduce-npc
|
|
print-from-table v3 intro-table-1
|
|
dialog-pause
|
|
|
|
print get-to-the-bottom-of-it
|
|
dialog-pause
|
|
;
|
|
|
|
###########################################
|
|
#
|
|
# Inventory Items
|
|
#
|
|
###########################################
|
|
|
|
to-data
|
|
|
|
: no-time-for-that
|
|
0xFE 0x0B 0x12 0x0D 0x28 0xF9 0x2D 0x22 0x26 0x1E 0xF9 0x1F 0x28 0x2B 0xF9 0x2D
|
|
0x21 0x1A 0x2D 0x43 0xFE 0x0B 0x1C 0x2D 0x21 0x1E 0x2B 0x1E 0x42 0x2C 0xF9 0x1A
|
|
0xF9 0x26 0x2E 0x2B 0x1D 0x1E 0x2B 0xFE 0x0B 0x26 0x2D 0x28 0xF9 0x1B 0x1E 0xF9
|
|
0x2C 0x28 0x25 0x2F 0x1E 0x1D 0x3F 0xFF
|
|
: upon-closer-inspection
|
|
0xFE 0x0F 0x12 0x18 0x28 0x2E 0xF9 0x1E 0x31 0x1A 0x26 0x22 0x27 0x1E 0xF9 0x22
|
|
0x2D 0xFE 0x0F 0x1C 0x1C 0x1A 0x2B 0x1E 0x1F 0x2E 0x25 0x25 0x32 0xF9 0x30 0x22
|
|
0x2D 0x21 0xFE 0x0F 0x26 0x2D 0x21 0x1E 0xF9 0x2C 0x29 0x32 0x20 0x25 0x1A 0x2C
|
|
0x2C 0x3E 0x3E 0x3E 0xFF
|
|
: nothing-unusual
|
|
0xFE 0x0B 0x16 0x18 0x28 0x2E 0xF9 0x1F 0x22 0x27 0x1D 0xF9 0x27 0x28 0x2D 0x21
|
|
0x22 0x27 0x20 0xFE 0x0B 0x20 0x2E 0x27 0x2E 0x2C 0x2E 0x1A 0x25 0xF9 0x1A 0x1B
|
|
0x28 0x2E 0x2D 0xF9 0x22 0x2D 0x3E 0xFF
|
|
: traces-of-blood
|
|
0xFE 0x0C 0x16 0xFD 0x13 0x21 0x1E 0x2B 0x1E 0xF9 0x1A 0x2B 0x1E 0xF9 0x2D 0x2B
|
|
0x1A 0x1C 0x1E 0x2C 0xF9 0xFE 0x10 0x20 0x28 0x1F 0xF9 0x1B 0x25 0x28 0x28 0x1D
|
|
0xF9 0x28 0x27 0xF9 0x22 0x2D 0x3F 0xFF
|
|
: take-murder-weapon
|
|
0xFE 0x0E 0x12 0x13 0x1A 0x24 0x1E 0xF9 0x2D 0x21 0x1E 0xF9 0x26 0x2E 0x2B 0x1D
|
|
0x1E 0x2B 0xFE 0x0E 0x1C 0x30 0x1E 0x1A 0x29 0x28 0x27 0xF9 0x30 0x22 0x2D 0x21
|
|
0xF9 0x32 0x28 0x2E 0x40 0xFF
|
|
|
|
: item-lead-pipe # "Seems a bit dangerous."
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0xFE 0xE1 0x7D 0xDD 0x83 0x22 0xFE 0x19 0x86
|
|
0x0C 0x06 0x0E 0x0A 0x07 0x56 0x03 0xFC 0x01 0xF8 0x00 0x00 0x00 0x00 0x00 0x00
|
|
: item-bullet # "An ordinary household bullet."
|
|
0x01 0x80 0x03 0x40 0x03 0x40 0x07 0xA0 0x07 0xA0 0x07 0xE0 0x0B 0xD0 0x08 0x30
|
|
0x0A 0xF0 0x0A 0xF0 0x0A 0xF0 0x0A 0xF0 0x1A 0xF8 0x17 0xE8 0x08 0x10 0x07 0xE0
|
|
: item-pewter-vase # "Tacky, but quite heavy."
|
|
0x01 0x80 0x1E 0x78 0x21 0x84 0x1C 0x38 0x1F 0xF8 0x37 0xEC 0x24 0x24 0x44 0x22
|
|
0x49 0x92 0x4A 0x92 0x49 0x12 0x6C 0xB6 0x6C 0x36 0x36 0x6C 0x1F 0xF8 0x07 0xE0
|
|
: item-jar-of-caviar # "Fish eggs, Fish eggs. Eat them up, yum."
|
|
0x00 0x00 0x7F 0xFE 0x5F 0xFA 0x40 0x02 0x40 0x02 0x3F 0xFC 0x5C 0x9A 0x57 0x62
|
|
0x5B 0xAA 0x5C 0xDA 0x5B 0x3A 0x51 0x2A 0x6F 0xF6 0x30 0x0C 0x1F 0xF8 0x00 0x00
|
|
: item-jade-skull # "Supposedly stolen from a famous rapper."
|
|
0x07 0xF0 0x18 0x0C 0x20 0x02 0x20 0x41 0x6F 0x21 0x67 0x81 0x47 0x83 0x62 0x3B
|
|
0xF0 0x73 0xB3 0xE6 0x81 0xFE 0x55 0xBC 0x2B 0x78 0x57 0xC0 0x7F 0xC0 0x3F 0x80
|
|
: item-brandy-snifter # "I'm not in the mood for a drink."
|
|
0x07 0xE0 0x0B 0xD0 0x08 0x10 0x10 0x08 0x10 0x08 0x24 0x24 0x30 0x0C 0x2A 0x54
|
|
0x3C 0x3C 0x1B 0xD8 0x0E 0x70 0x03 0xC0 0x01 0x80 0x07 0xE0 0x0F 0xF0 0x03 0xC0
|
|
: item-glass-orb # "It catches the light from every angle..."
|
|
0x03 0xC0 0x0C 0x30 0x11 0x08 0x2A 0x64 0x5A 0x6A 0x59 0x02 0xB4 0xF1 0xA4 0x09
|
|
0xBA 0x65 0xB3 0xF5 0x5F 0xB2 0x56 0xFA 0x2F 0xF4 0x13 0xC8 0x0C 0x30 0x03 0xC0
|
|
: item-fire-poker # "I prefer Texas Hold-em."
|
|
0x00 0x03 0x00 0x05 0x00 0x0A 0x00 0x16 0x00 0x2C 0x00 0x58 0x00 0xB0 0x01 0xE0
|
|
0x03 0xC0 0x77 0x00 0xFC 0x00 0xB8 0x00 0x30 0x00 0x60 0x00 0xC0 0x00 0x80 0x00
|
|
: item-spyglass # "Ah, my spyglass! I can examine things more closely now."
|
|
0x0F 0x80 0x10 0x40 0x2F 0xA0 0x50 0x50 0xA3 0x28 0xE3 0x28 0xA0 0xA8 0xE8 0x28
|
|
0x70 0x70 0x3F 0xD0 0x1F 0xF8 0x0F 0xB4 0x00 0x1A 0x00 0x0F 0x00 0x07 0x00 0x02
|
|
|
|
: item-title-pipe 0xFE 0x1C 0x2D 0xFC 0x0B 0x1E 0x1A 0x1D 0xF9 0x0F 0x22 0x29 0x1E 0xFF
|
|
: item-title-bullet 0xFE 0x2A 0x2D 0xFC 0x01 0x2E 0x25 0x25 0x1E 0x2D 0xFF
|
|
: item-title-vase 0xFE 0x15 0x2D 0xFC 0x0F 0x1E 0x30 0x2D 0x1E 0x2B 0xF9 0x15 0x1A 0x2C 0x1E 0xFF
|
|
: item-title-caviar 0xFE 0x0D 0x2D 0xFC 0x09 0x1A 0x2B 0xF9 0x28 0x1F 0xF9 0x02 0x1A 0x2F 0x22 0x1A 0x2B 0xFF
|
|
: item-title-skull 0xFE 0x1A 0x2D 0xFC 0x09 0x1A 0x1D 0x1E 0xF9 0x12 0x24 0x2E 0x25 0x25 0xFF
|
|
: item-title-snifter 0xFE 0x09 0x2D 0xFC 0x01 0x2B 0x1A 0x27 0x1D 0x32 0xF9 0x12 0x27 0x22 0x1F 0x2D 0x1E 0x2B 0xFF
|
|
: item-title-orb 0xFE 0x1D 0x2D 0xFC 0x06 0x25 0x1A 0x2C 0x2C 0xF9 0x0E 0x2B 0x1B 0xFF
|
|
: item-title-poker 0xFE 0x1A 0x2D 0xFC 0x05 0x22 0x2B 0x1E 0xF9 0x0F 0x28 0x24 0x1E 0x2B 0xFF
|
|
: item-title-spyglass 0xFE 0x21 0x2D 0xFC 0x12 0x29 0x32 0x20 0x25 0x1A 0x2C 0x2C 0xFF
|
|
|
|
: item-desc-pipe 0xFE 0x18 0x12 0x12 0x1E 0x1E 0x26 0x2C 0xF9 0x1A 0xF9 0x1B 0x22 0x2D 0xFE
|
|
0x18 0x1C 0x1D 0x1A 0x27 0x20 0x1E 0x2B 0x28 0x2E 0x2C 0xF9 0x2D 0x28 0xF9
|
|
0xFE 0x18 0x26 0x2C 0x26 0x28 0x24 0x1E 0x3E 0x3E 0x3E 0xFF
|
|
: item-desc-bullet 0xFE 0x0A 0x16 0x00 0x27 0xF9 0x28 0x2B 0x1D 0x22 0x27 0x1A 0x2B 0x32 0xFE
|
|
0x0A 0x20 0x21 0x28 0x2E 0x2C 0x1E 0x21 0x28 0x25 0x1D 0xF9 0x1B 0x2E 0x25
|
|
0x25 0x1E 0x2D 0x3E 0xFF
|
|
: item-desc-vase 0xFE 0x10 0x14 0x13 0x1A 0x1C 0x24 0x32 0x41 0xF9 0x1B 0x2E 0x2D 0xF9 0x1A
|
|
0x25 0x2C 0x28 0xFE 0x10 0x1E 0x2A 0x2E 0x22 0x2D 0x1E 0xF9 0x21 0x1E 0x1A
|
|
0x2F 0x32 0x3E 0x3E 0x3E 0xFF
|
|
: item-desc-caviar 0xFE 0x0B 0x12 0x05 0x22 0x2C 0x21 0xF9 0x1E 0x20 0x20 0x2C 0x41 0xF9 0xFE
|
|
0x0B 0x1C 0x05 0x22 0x2C 0x21 0xF9 0x1E 0x20 0x20 0x2C 0x41 0xF9 0xFE 0x0B
|
|
0x26 0x04 0x1A 0x2D 0xF9 0x2D 0x21 0x1E 0x26 0xF9 0x2E 0x29 0x43 0xF9 0x32
|
|
0x2E 0x26 0x3E 0xFF
|
|
: item-desc-skull 0xFE 0x00 0x12 0x12 0x2E 0x29 0x29 0x28 0x2C 0x1E 0x1D 0x25 0x32 0xF9 0x2C
|
|
0x2D 0x28 0x25 0x1E 0x27 0xFE 0x00 0x1C 0x1F 0x2B 0x28 0x26 0xF9 0x1A 0xF9
|
|
0x1F 0x1A 0x26 0x28 0x2E 0x2C 0xFE 0x00 0x26 0x2B 0x1A 0x29 0x29 0x1E 0x2B
|
|
0xF9 0x1A 0x27 0x1D 0xF9 0x26 0x1E 0x2B 0x1C 0x1E 0x27 0x1A 0x2B 0x32 0x3E
|
|
0xFF
|
|
: item-desc-snifter 0xFE 0x0A 0x10 0x08 0x42 0x2F 0x1E 0xF9 0x21 0x1A 0x1D 0xF9 0x2A 0x2E 0x22
|
|
0x2D 0x1E 0xFE 0x0A 0x1A 0x1E 0x27 0x28 0x2E 0x20 0x21 0xF9 0x2D 0x28 0xF9
|
|
0x1D 0x2B 0x22 0x27 0x24 0xFE 0x0A 0x24 0x1A 0x25 0x2B 0x1E 0x1A 0x1D 0x32
|
|
0x41 0xF9 0x08 0xF9 0x30 0x1A 0x20 0x1E 0x2B 0x3E 0xFF
|
|
: item-desc-orb 0xFE 0x01 0x16 0x08 0x2D 0xF9 0x1C 0x1A 0x2D 0x1C 0x21 0x1E 0x2C 0xF9 0x2D
|
|
0x21 0x1E 0xF9 0x25 0x22 0x20 0x21 0x2D 0xFE 0x01 0x20 0x1F 0x2B 0x28 0x26
|
|
0xF9 0x1E 0x2F 0x1E 0x2B 0x32 0xF9 0x1A 0x27 0x20 0x25 0x1E 0x3E 0x3E 0x3E
|
|
0xFF
|
|
: item-desc-poker 0xFE 0x06 0x16 0x08 0xF9 0x1F 0x1A 0x2B 0xF9 0x29 0x2B 0x1E 0x1F 0x1E 0x2B
|
|
0xF9 0x13 0x1E 0x31 0x1A 0x2C 0xF9 0xFE 0x06 0x20 0x21 0x28 0x25 0x1D 0x43
|
|
0x1E 0x26 0x41 0xF9 0x00 0x1C 0x1E 0x2C 0xF9 0x30 0x22 0x25 0x1D 0x3E 0xFF
|
|
: item-desc-spyglass 0xFE 0x03 0x12 0x00 0x21 0x1A 0x41 0xF9 0x1A 0xF9 0x2C 0x29 0x32 0x20 0x25
|
|
0x1A 0x2C 0x2C 0x3F 0xFE 0x03 0x1C 0x08 0xF9 0x1C 0x1A 0x27 0xF9 0x1E 0x31
|
|
0x1A 0x26 0x22 0x27 0x1E 0xF9 0x2D 0x21 0x22 0x27 0x20 0x2C 0xFE 0x03 0x26
|
|
0x26 0x28 0x2B 0x1E 0xF9 0x1C 0x25 0x28 0x2C 0x1E 0x25 0x32 0xF9 0x27 0x28
|
|
0x30 0x3E 0xFF
|
|
|
|
: item-icon-table
|
|
pointer item-lead-pipe
|
|
pointer item-bullet
|
|
pointer item-pewter-vase
|
|
pointer item-jar-of-caviar
|
|
pointer item-jade-skull
|
|
pointer item-brandy-snifter
|
|
pointer item-glass-orb
|
|
pointer item-fire-poker
|
|
pointer item-spyglass
|
|
|
|
: item-title-table
|
|
pointer item-title-pipe
|
|
pointer item-title-bullet
|
|
pointer item-title-vase
|
|
pointer item-title-caviar
|
|
pointer item-title-skull
|
|
pointer item-title-snifter
|
|
pointer item-title-orb
|
|
pointer item-title-poker
|
|
pointer item-title-spyglass
|
|
|
|
: item-desc-table
|
|
pointer item-desc-pipe
|
|
pointer item-desc-bullet
|
|
pointer item-desc-vase
|
|
pointer item-desc-caviar
|
|
pointer item-desc-skull
|
|
pointer item-desc-snifter
|
|
pointer item-desc-orb
|
|
pointer item-desc-poker
|
|
pointer item-desc-spyglass
|
|
|
|
to-code
|
|
|
|
: take-item
|
|
i := long item-positions
|
|
i += current-room
|
|
v0 := -1
|
|
save v0
|
|
;
|
|
|
|
: portrait
|
|
i += v2
|
|
i += v2
|
|
load v1
|
|
i := icon-indirection
|
|
save v1
|
|
indirect icon-indirection
|
|
v0 := 56
|
|
v1 := 20
|
|
sprite v0 v1 0
|
|
;
|
|
|
|
: describe-item
|
|
# (pass the item index in v2...)
|
|
thicken-plot SUSPICION_EXAMINE_ITEM
|
|
clear
|
|
|
|
if has-weapon == 1 begin
|
|
print no-time-for-that
|
|
jump dialog-pause
|
|
end
|
|
|
|
i := long item-icon-table
|
|
portrait
|
|
|
|
print-from-table v2 item-title-table
|
|
dialog-pause
|
|
|
|
print-from-table v2 item-desc-table
|
|
dialog-pause
|
|
|
|
if v2 == 8 begin
|
|
thicken-plot SUSPICION_TAKE_SPYGLASS
|
|
has-spyglass := 1
|
|
jump take-item
|
|
end
|
|
|
|
if has-spyglass != 1 then return
|
|
|
|
print upon-closer-inspection
|
|
dialog-pause
|
|
|
|
i := long murder-weapon
|
|
load v0
|
|
if v0 == v2 begin
|
|
print traces-of-blood
|
|
dialog-pause
|
|
print take-murder-weapon
|
|
dialog-yes-no
|
|
if v2 == 0 then return
|
|
thicken-plot SUSPICION_TAKE_WEAPON
|
|
has-weapon := 1
|
|
jump take-item
|
|
end
|
|
|
|
print nothing-unusual
|
|
dialog-pause
|
|
;
|
|
|
|
###########################################
|
|
#
|
|
# The Body
|
|
#
|
|
###########################################
|
|
|
|
to-data
|
|
|
|
: body-sprite # 16x16
|
|
0x70 0x00 0x89 0xF0 0x86 0x0C 0x40 0x62 0x30 0xDC 0x20 0x20 0x40 0x10 0x48 0x08
|
|
0x54 0x64 0x54 0x52 0x52 0x29 0x51 0x29 0x20 0x95 0x00 0x4A 0x00 0x48 0x00 0x30
|
|
: cycle-left 0x08 0x18 0x38 0x7F 0xFF 0x7F 0x38 0x18 0x08
|
|
: cycle-right 0x10 0x18 0x1C 0xFE 0xFF 0xFE 0x1C 0x18 0x10
|
|
: gather-npcs
|
|
0xFE 0x02 0x0A 0x00 0x26 0xF9 0x08 0xF9 0x2B 0x1E 0x1A 0x1D 0x32 0xF9 0x2D 0x28
|
|
0xF9 0x20 0x1A 0x2D 0x21 0x1E 0x2B 0xFE 0x02 0x14 0x2D 0x21 0x1E 0xF9 0x29 0x1A
|
|
0x2B 0x2D 0x32 0xF9 0x20 0x2E 0x1E 0x2C 0x2D 0x2C 0xF9 0x1A 0x27 0x1D 0xFE 0x02
|
|
0x1E 0x1E 0x31 0x29 0x28 0x2C 0x1E 0xF9 0x2D 0x21 0x1E 0xF9 0x24 0x22 0x25 0x25
|
|
0x1E 0x2B 0x40 0xFF
|
|
: who-dunnit
|
|
0xFE 0x08 0x04 0x16 0x21 0x28 0xF9 0x22 0x2C 0xF9 0x2D 0x21 0x1E 0xF9 0x24 0x22
|
|
0x25 0x25 0x1E 0x2B 0x40 0xFF
|
|
: make-your-case
|
|
0xFE 0x00 0x0C 0x13 0x21 0x1E 0xF9 0x20 0x2E 0x1E 0x2C 0x2D 0x2C 0xF9 0x20 0x1A
|
|
0x2D 0x21 0x1E 0x2B 0x1E 0x1D 0x41 0xFE 0x00 0x16 0x32 0x28 0x2E 0xF9 0x25 0x1A
|
|
0x32 0xF9 0x28 0x2E 0x2D 0xF9 0x32 0x28 0x2E 0x2B 0xF9 0x1C 0x1A 0x2C 0x1E 0xFE
|
|
0x00 0x20 0x1A 0x27 0x1D 0xF9 0x29 0x2B 0x1E 0x29 0x1A 0x2B 0x1E 0xF9 0x2D 0x28
|
|
0xF9 0x1C 0x1A 0x25 0x25 0xFE 0x00 0x2A 0x2D 0x21 0x1E 0xF9 0x29 0x28 0x25 0x22
|
|
0x1C 0x1E 0x3E 0x3E 0x3E 0xFF
|
|
: no-weapon-part-1 # $0 is murderer...
|
|
0xFE 0x00 0x03 0xFB 0xFE 0x00 0x0D 0x1B 0x2E 0x2B 0x2C 0x2D 0x2C 0xF9 0x28 0x2E
|
|
0x2D 0xF9 0x25 0x1A 0x2E 0x20 0x21 0x22 0x27 0x20 0x3E 0xFE 0x00 0x17 0xFE 0x00
|
|
0x21 0x44 0x18 0x28 0x2E 0x2B 0xF9 0x1E 0x2F 0x22 0x1D 0x1E 0x27 0x1C 0x1E 0xF9
|
|
0x22 0x2C 0xFE 0x00 0x2B 0xF9 0x27 0x28 0x2D 0x21 0x22 0x27 0x20 0xF9 0x1B 0x2E
|
|
0x2D 0xF9 0x21 0x1E 0x1A 0x2B 0x2C 0x1A 0x32 0x3F 0xFE 0x00 0x35 0xF9 0x16 0x21
|
|
0x1A 0x2D 0xF9 0x1A 0xF9 0x1F 0x28 0x28 0x25 0x3F 0x44 0xFF
|
|
: no-weapon-part-2
|
|
0xFE 0x00 0x03 0x16 0x22 0x2D 0x21 0x28 0x2E 0x2D 0xF9 0x1A 0xF9 0x30 0x1E 0x1A
|
|
0x29 0x28 0x27 0x41 0xFE 0x00 0x0D 0x2D 0x21 0x1E 0xF9 0x29 0x28 0x25 0x22 0x1C
|
|
0x1E 0xF9 0x1A 0x2B 0x1E 0x27 0x42 0x2D 0xFE 0x00 0x17 0x1C 0x28 0x27 0x2F 0x22
|
|
0x27 0x1C 0x1E 0x1D 0x41 0xF9 0x1E 0x22 0x2D 0x21 0x1E 0x2B 0x3E 0xFE 0x00 0x21
|
|
0xFE 0x00 0x2B 0x13 0x21 0x1E 0x32 0x42 0x2B 0x1E 0xF9 0x1F 0x28 0x2B 0x1C 0x1E
|
|
0x1D 0xF9 0x2D 0x28 0xF9 0x25 0x1E 0x2D 0xFE 0x00 0x35 0x32 0x28 0x2E 0xF9 0x1A
|
|
0x25 0x25 0xF9 0x20 0x28 0x41 0xF9 0x1F 0x28 0x2B 0xF9 0x27 0x28 0x30 0x3E 0xFF
|
|
: killer-goes-free
|
|
0xFE 0x02 0x0A 0x12 0x28 0x26 0x1E 0x30 0x21 0x1E 0x2B 0x1E 0x41 0xF9 0x1A 0xF9
|
|
0x24 0x22 0x25 0x25 0x1E 0x2B 0xF9 0xF9 0xFE 0x02 0x14 0x30 0x1A 0x25 0x24 0x2C
|
|
0xF9 0x1F 0x2B 0x1E 0x1E 0xF9 0x1A 0x26 0x28 0x27 0x20 0xF9 0x2E 0x2C 0x3E 0xF9
|
|
0xF9 0xFE 0x23 0x28 0x13 0x07 0x04 0xF9 0x04 0x0D 0x03 0x3E 0xFF
|
|
: wrong-culprit-part-1
|
|
0xFE 0x00 0x10 0xFB 0xFE 0x00 0x1A 0x2C 0x29 0x2E 0x2D 0x2D 0x1E 0x2B 0x2C 0xF9
|
|
0x22 0x27 0xF9 0x1D 0x22 0x2C 0x1B 0x1E 0x25 0x22 0x1E 0x1F 0xFE 0x00 0x24 0x1A
|
|
0x2D 0xF9 0x32 0x28 0x2E 0x2B 0xF9 0x1A 0x1C 0x1C 0x2E 0x2C 0x1A 0x2D 0x22 0x28
|
|
0x27 0x3F 0xFF
|
|
: wrong-culprit-part-2
|
|
0xFE 0x00 0x03 0x13 0x21 0x1E 0xF9 0x28 0x2D 0x21 0x1E 0x2B 0xF9 0x20 0x2E 0x1E
|
|
0x2C 0x2D 0x2C 0xF9 0xFE 0x00 0x0D 0x26 0x2E 0x2B 0x26 0x2E 0x2B 0xF9 0x2D 0x28
|
|
0xF9 0x28 0x27 0x1E 0xF9 0xFE 0x00 0x17 0x1A 0x27 0x28 0x2D 0x21 0x1E 0x2B 0xF9
|
|
0x30 0x1A 0x2B 0x22 0x25 0x32 0x3E 0xF9 0xFE 0x00 0x2B 0x13 0x21 0x1E 0xF9 0x29
|
|
0x28 0x25 0x22 0x1C 0x1E 0xF9 0xFE 0x00 0x35 0x2C 0x1E 0x1E 0x26 0xF9 0x1D 0x2E
|
|
0x1B 0x22 0x28 0x2E 0x2C 0x3E 0xFF
|
|
: wrong-culprit-part-3
|
|
0xFE 0x00 0x03 0x08 0x27 0xF9 0x1C 0x28 0x2E 0x2B 0x2D 0x41 0xF9 0xFE 0x00 0x0D
|
|
0xFB 0xF9 0x22 0x2C 0xF9 0xFE 0x00 0x17 0x1F 0x28 0x2E 0x27 0x1D 0xF9 0x22 0x27
|
|
0x27 0x28 0x1C 0x1E 0x27 0x2D 0x3E 0xF9 0xFE 0x00 0x2B 0x18 0x28 0x2E 0xF9 0x26
|
|
0x2E 0x2C 0x2D 0xF9 0x21 0x1A 0x2F 0x1E 0xF9 0x26 0x22 0x2C 0x2C 0x1E 0x1D 0xF9
|
|
0xFE 0x00 0x35 0x2C 0x28 0x26 0x1E 0x2D 0x21 0x22 0x27 0x20 0x3E 0x3E 0x3E 0xFF
|
|
: good-end-1
|
|
0xFE 0x07 0x08 0xFB 0x42 0x2C 0xF9 0xFE 0x07 0x12 0x1F 0x1A 0x1C 0x1E 0xF9 0x1C
|
|
0x28 0x27 0x2D 0x28 0x2B 0x2D 0x2C 0xF9 0x30 0x22 0x2D 0x21 0xF9 0xFE 0x07 0x1C
|
|
0x2B 0x1A 0x20 0x1E 0x3E 0xF9 0xFE 0x07 0x30 0x44 0x07 0x28 0x30 0xF9 0x1D 0x22
|
|
0x1D 0xF9 0x32 0x28 0x2E 0x3E 0x3E 0x3E 0x40 0x44 0xFF
|
|
: good-end-2
|
|
0xFE 0x05 0x10 0x13 0x21 0x1E 0xF9 0x29 0x28 0x25 0x22 0x1C 0x1E 0xF9 0x2C 0x28
|
|
0x28 0x27 0xFE 0x05 0x1A 0x1A 0x2B 0x2B 0x22 0x2F 0x1E 0xF9 0x2D 0x28 0xF9 0x2D
|
|
0x1A 0x24 0x1E 0xF9 0x2D 0x21 0x1E 0x26 0xFE 0x05 0x24 0x22 0x27 0x2D 0x28 0xF9
|
|
0x1C 0x2E 0x2C 0x2D 0x28 0x1D 0x32 0x3E 0xFF
|
|
: good-end-3
|
|
0xFE 0x05 0x04 0x00 0x27 0x28 0x2D 0x21 0x1E 0x2B 0xF9 0x2C 0x2E 0x1C 0x1C 0x1E
|
|
0x2C 0x2C 0x1F 0x2E 0x25 0xFE 0x05 0x0E 0x1C 0x1A 0x2C 0x1E 0x3E 0xF9 0x18 0x28
|
|
0x2E 0xF9 0x1C 0x1A 0x27 0xF9 0x2B 0x1E 0x2C 0x2D 0xFE 0x05 0x18 0x1E 0x1A 0x2C
|
|
0x32 0xF9 0x1A 0x2D 0xF9 0x27 0x22 0x20 0x21 0x2D 0x41 0xFE 0x05 0x22 0x1F 0x28
|
|
0x2B 0xF9 0x27 0x28 0x30 0x3E 0x3E 0x3E 0xF9 0xFE 0x23 0x32 0x13 0x07 0x04 0xF9
|
|
0x04 0x0D 0x03 0x3E 0xFF
|
|
: murder-dialog-1 # "Well, if it isn't our friend the detective."
|
|
0xFE 0x09 0x11 0x44 0x16 0x1E 0x25 0x25 0x41 0xF9 0x22 0x1F 0xF9 0x22 0x2D 0xF9
|
|
0x22 0x2C 0x27 0x42 0x2D 0xFE 0x09 0x1B 0x28 0x2E 0x2B 0xF9 0x1F 0x2B 0x22 0x1E
|
|
0x27 0x1D 0xF9 0x2D 0x21 0x1E 0xFE 0x09 0x25 0x1D 0x1E 0x2D 0x1E 0x1C 0x2D 0x22
|
|
0x2F 0x1E 0x3E 0x44 0xFF
|
|
: murder-dialog-2 # "I can't afford to risk this charade any longer. Game over, old chum."
|
|
0xFE 0x06 0x08 0x44 0x08 0xF9 0x1C 0x1A 0x27 0x42 0x2D 0xF9 0x1A 0x1F 0x1F 0x28
|
|
0x2B 0x1D 0xF9 0x2D 0x28 0xF9 0xF9 0xFE 0x06 0x12 0x2B 0x22 0x2C 0x24 0xF9 0x2D
|
|
0x21 0x22 0x2C 0xF9 0x1C 0x21 0x1A 0x2B 0x1A 0x1D 0x1E 0xF9 0xF9 0xFE 0x06 0x1C
|
|
0x1A 0x27 0x32 0xF9 0x25 0x28 0x27 0x20 0x1E 0x2B 0x3E 0xF9 0xFE 0x00 0x30 0xFD
|
|
0x06 0x1A 0x26 0x1E 0xF9 0x28 0x2F 0x1E 0x2B 0x41 0xF9 0x28 0x25 0x1D 0xF9 0x1C
|
|
0x21 0x2E 0x26 0x3E 0x44 0xFF
|
|
: terrible-fate
|
|
0xFE 0x0A 0x0E 0xFD 0x18 0x28 0x2E 0xF9 0x21 0x1A 0x2F 0x1E 0xF9 0x26 0x1E 0x2D
|
|
0xF9 0x30 0x22 0x2D 0x21 0xFE 0x0A 0x18 0x1A 0xF9 0x2D 0x1E 0x2B 0x2B 0x22 0x1B
|
|
0x25 0x1E 0xF9 0x1F 0x1A 0x2D 0x1E 0x3E 0xF9 0xF9 0xFE 0x23 0x32 0x13 0x07 0x04
|
|
0xF9 0x04 0x0D 0x03 0x3E 0xFF
|
|
|
|
: final-rank 0xFE 0x1D 0x0C 0x05 0x22 0x27 0x1A 0x25 0xF9 0x11 0x1A 0x27 0x24 0xFF
|
|
|
|
: rank-0 0xFE 0x09 0x1E 0xFC 0x01 0x25 0x28 0x28 0x1D 0x32 0xF9 0x02 0x21 0x1E 0x1A 0x2D 0x1E 0x2B 0xFF
|
|
: rank-1 0xFE 0x27 0x1E 0xFC 0x12 0x25 0x1E 0x2E 0x2D 0x21 0xFF
|
|
: rank-2 0xFE 0x1B 0x1E 0xFC 0x03 0x1E 0x2D 0x1E 0x1C 0x2D 0x22 0x2F 0x1E 0xFF
|
|
: rank-3 0xFE 0x23 0x1E 0xFC 0x06 0x2E 0x26 0x2C 0x21 0x28 0x1E 0xFF
|
|
: rank-4 0xFE 0x1F 0x1E 0xFC 0x02 0x25 0x2E 0x1E 0x25 0x1E 0x2C 0x2C 0xFF
|
|
|
|
: rank-thresholds
|
|
20 60 90 150 255
|
|
: rank-table
|
|
pointer rank-0
|
|
pointer rank-1
|
|
pointer rank-2
|
|
pointer rank-3
|
|
pointer rank-4
|
|
|
|
to-code
|
|
|
|
: murder-player
|
|
wait 60
|
|
i := long npc-murderer
|
|
load v2 - v2
|
|
introduce-npc
|
|
|
|
print murder-dialog-1
|
|
dialog-pause
|
|
print murder-dialog-2
|
|
dialog-pause
|
|
|
|
dialog-fill-screen
|
|
wait 60
|
|
print terrible-fate
|
|
jump show-rank
|
|
|
|
: describe-body
|
|
clear
|
|
print gather-npcs # confirm gathering...
|
|
dialog-yes-no
|
|
if v2 == 0 then return
|
|
|
|
# accuse!
|
|
v2 := random 0b111
|
|
loop
|
|
print who-dunnit
|
|
i := long npc-portrait-table
|
|
portrait
|
|
v1 := 25
|
|
v0 := 40
|
|
i := long cycle-left
|
|
sprite v0 v1 9
|
|
v0 := 80
|
|
i := long cycle-right
|
|
sprite v0 v1 9
|
|
print-from-table v2 npc-title-table
|
|
vf := key
|
|
clear
|
|
if vf == OCTO_KEY_D then v2 += 1
|
|
if vf == OCTO_KEY_A then v2 += -1
|
|
v0 := 0b111
|
|
v2 &= v0
|
|
if vf != OCTO_KEY_E then
|
|
again
|
|
accused-npc := v2
|
|
|
|
# the truth, and nothing but the truth:
|
|
i := long npc-murderer
|
|
load guilty-npc - guilty-npc
|
|
i := long murder-weapon
|
|
load guilty-weapon - guilty-weapon
|
|
|
|
print make-your-case
|
|
dialog-pause
|
|
|
|
if has-weapon == 0 begin
|
|
fmt-from-table guilty-npc npc-name-table print-string0-read
|
|
print no-weapon-part-1
|
|
dialog-pause
|
|
print no-weapon-part-2
|
|
dialog-pause
|
|
print killer-goes-free
|
|
suspicion-level := 255
|
|
jump show-rank
|
|
end
|
|
|
|
fmt-from-table accused-npc npc-name-table print-string0-read
|
|
|
|
if guilty-npc != accused-npc begin
|
|
print wrong-culprit-part-1
|
|
dialog-pause
|
|
print wrong-culprit-part-2
|
|
dialog-pause
|
|
print wrong-culprit-part-3
|
|
dialog-pause
|
|
print killer-goes-free
|
|
:calc bad-score { @ rank-thresholds + 3 }
|
|
suspicion-level := bad-score
|
|
jump show-rank
|
|
end
|
|
|
|
print good-end-1
|
|
dialog-pause
|
|
jump fencing-minigame
|
|
|
|
: show-rank
|
|
dialog-pause
|
|
v2 := 0
|
|
loop
|
|
i := long rank-thresholds
|
|
i += v2
|
|
load v0
|
|
while suspicion-level > v0
|
|
v2 += 1
|
|
again
|
|
print final-rank
|
|
print-from-table v2 rank-table
|
|
dialog-pause
|
|
current-room := GAME_OVER
|
|
;
|
|
|
|
###########################################
|
|
#
|
|
# NPCs
|
|
#
|
|
###########################################
|
|
|
|
to-data
|
|
|
|
# 8x15 overworld sprites padded to 8x16
|
|
: npc-sprites
|
|
: npc-0 0x3E 0x7C 0x76 0x66 0x7C 0x38 0x5C 0x5C 0x5C 0x64 0x7E 0x7E 0x7E 0x28 0x3C 0x00
|
|
: npc-1 0x78 0xFC 0x4C 0x58 0x78 0x7E 0x3E 0x3E 0x7A 0x78 0x3E 0x3E 0x36 0x36 0x7E 0x00
|
|
: npc-2 0x3C 0x3C 0x7A 0x24 0x1C 0x3E 0x7E 0x7E 0x7D 0x7D 0x34 0x34 0x38 0x38 0x1E 0x00
|
|
: npc-3 0x38 0x7C 0x72 0x24 0x34 0x7E 0x62 0x7E 0x3E 0x7F 0x77 0x36 0x36 0x3A 0x1D 0x00
|
|
: npc-4 0x78 0x58 0x4C 0x4C 0x7E 0x6E 0x3F 0x3F 0x1D 0x3F 0x3F 0x3F 0x3F 0x3F 0x12 0x00
|
|
: npc-5 0x7C 0x3A 0x34 0x64 0x24 0x3C 0x42 0x6A 0x5A 0x7E 0x7E 0x7E 0x7E 0x34 0x34 0x00
|
|
: npc-6 0x38 0x7C 0x44 0x6C 0x6C 0x7C 0x38 0x7C 0xFE 0xFE 0xFE 0x6C 0x28 0x28 0x6C 0x00
|
|
: npc-7 0x18 0x3C 0x24 0x7E 0xC3 0xEF 0xEF 0xEF 0xAF 0xC3 0xFD 0x7E 0x3C 0x3C 0x7E 0x00
|
|
|
|
# 16x16 portraits
|
|
: portrait-0
|
|
0x0F 0xFE 0x1F 0xBF 0x3F 0x9C 0x7F 0x0C 0x7F 0xDE 0x7E 0x06 0xFD 0x9E 0xFC 0x8E
|
|
0xF8 0x06 0xF8 0x26 0xD8 0x06 0x5C 0xF7 0x3C 0x0E 0x19 0xF8 0x2D 0xDE 0x76 0x3F
|
|
: portrait-1
|
|
0x1F 0x7C 0x7F 0xF8 0xFF 0xF8 0xF0 0xDC 0xB0 0x1E 0x39 0xDE 0x39 0xFC 0x3C 0x96
|
|
0x1C 0x16 0x2C 0x36 0x2E 0x7E 0x30 0x7E 0x3F 0x7C 0x1C 0xF6 0x3F 0xEF 0x6F 0xFF
|
|
: portrait-2
|
|
0x0F 0xF0 0x38 0x7C 0x30 0x1E 0x30 0x1E 0x30 0x1E 0x3F 0x1E 0xFF 0xEE 0xFF 0xFE
|
|
0x37 0xBD 0x1F 0xF9 0x1F 0x19 0x1B 0x06 0x18 0x06 0x0F 0x8C 0x0E 0x3E 0x1F 0xFE
|
|
: portrait-3
|
|
0x1F 0xE0 0x3F 0xF0 0x7E 0x08 0x78 0x76 0x78 0xE1 0x3C 0x61 0x66 0x1F 0x47 0x0E
|
|
0x41 0x86 0x2C 0x1C 0x3E 0x3C 0x1F 0x8C 0x33 0xCC 0x7C 0xF8 0xFE 0x34 0xFF 0x8E
|
|
: portrait-4
|
|
0x3F 0xC0 0x7F 0xF0 0x7F 0xF8 0xF6 0xEC 0xE3 0x74 0xF6 0x74 0xF7 0xB6 0xD2 0x3A
|
|
0xC0 0x1A 0xD8 0x5B 0xCC 0x7D 0xE0 0x5D 0xEE 0xDF 0xF1 0xFE 0x7F 0xBE 0x78 0x7A
|
|
: portrait-5
|
|
0x3F 0xC0 0xFF 0xF8 0x7F 0xE8 0x3F 0x34 0x34 0x2C 0x3B 0xA8 0x1B 0xDC 0x62 0x38
|
|
0x40 0x7C 0x78 0x3C 0x18 0x7C 0x17 0x7E 0x17 0xFF 0x0F 0xDF 0x1C 0x3F 0x3B 0xCF
|
|
: portrait-6
|
|
0x1F 0xF8 0x1F 0xF4 0x2F 0xFA 0x77 0xFE 0x70 0xFF 0xF0 0x3F 0xFE 0xFF 0xD4 0x57
|
|
0xD1 0x17 0xF9 0x3F 0xF9 0x3F 0xE8 0x2F 0x7B 0xBE 0x38 0x3C 0x4F 0xF2 0xFB 0x9F
|
|
: portrait-7
|
|
0x1F 0xF0 0x2F 0xE8 0x23 0x8C 0x5C 0x74 0x54 0x66 0x48 0x4A 0x6F 0xD6 0x47 0x8E
|
|
0x2F 0xEC 0x30 0x1F 0x7F 0xFB 0x5F 0xF3 0xCF 0xCF 0xE0 0x1D 0xBC 0xFB 0xFC 0xFF
|
|
|
|
: npc-title-0 # "Mme. Genta"
|
|
0xFE 0x17 0x2D 0xFC 0x0C 0x26 0x1E 0x3E 0xF9 0x06 0x1E 0x27 0x2D 0x1A 0xFF
|
|
: npc-title-1 # "Mr. Carmine"
|
|
0xFE 0x14 0x2D 0xFC 0x0C 0x2B 0x3E 0xF9 0x02 0x1A 0x2B 0x26 0x22 0x27 0x1E 0xFF
|
|
: npc-title-2 # "Sir Feldgrau"
|
|
0xFE 0x11 0x2D 0xFC 0x12 0x22 0x2B 0xF9 0x05 0x1E 0x25 0x1D 0x20 0x2B 0x1A 0x2E 0xFF
|
|
: npc-title-3 # "Prof. Puce"
|
|
0xFE 0x16 0x2D 0xFC 0x0F 0x2B 0x28 0x1F 0x3E 0xF9 0x0F 0x2E 0x1C 0x1E 0xFF
|
|
: npc-title-4 # "Lady Veridian"
|
|
0xFE 0x0D 0x2D 0xFC 0x0B 0x1A 0x1D 0x32 0xF9 0x15 0x1E 0x2B 0x22 0x1D 0x22 0x1A 0x27 0xFF
|
|
: npc-title-5 # "Cmdr. Coriander" (longest)
|
|
0xFE 0x05 0x2D 0xFC 0x02 0x26 0x1D 0x2B 0x3E 0xF9 0x02 0x28 0x2B 0x22 0x1A 0x27 0x1D 0x1E 0x2B 0xFF
|
|
: npc-title-6 # "Dr. Coquelicot"
|
|
0xFE 0x08 0x2D 0xFC 0x03 0x2B 0x3E 0xF9 0x02 0x28 0x2A 0x2E 0x1E 0x25 0x22 0x1C 0x28 0x2D 0xFF
|
|
: npc-title-7 # "Lord Zaffre"
|
|
0xFE 0x11 0x2D 0xFC 0x0B 0x28 0x2B 0x1D 0xF9 0xF9 0x19 0x1A 0x1F 0x1F 0x2B 0x1E 0xFF
|
|
|
|
: npc-name-0 0x0C 0x26 0x1E 0x3E 0xF9 0x06 0x1E 0x27 0x2D 0x1A 0xFF
|
|
: npc-name-1 0x0C 0x2B 0x3E 0xF9 0x02 0x1A 0x2B 0x26 0x22 0x27 0x1E 0xFF
|
|
: npc-name-2 0x12 0x22 0x2B 0xF9 0x05 0x1E 0x25 0x1D 0x20 0x2B 0x1A 0x2E 0xFF
|
|
: npc-name-3 0x0F 0x2B 0x28 0x1F 0x3E 0xF9 0x0F 0x2E 0x1C 0x1E 0xFF
|
|
: npc-name-4 0x0B 0x1A 0x1D 0x32 0xF9 0x15 0x1E 0x2B 0x22 0x1D 0x22 0x1A 0x27 0xFF
|
|
: npc-name-5 0x02 0x26 0x1D 0x2B 0x3E 0xF9 0x02 0x28 0x2B 0x22 0x1A 0x27 0x1D 0x1E 0x2B 0xFF
|
|
: npc-name-6 0x03 0x2B 0x3E 0xF9 0x02 0x28 0x2A 0x2E 0x1E 0x25 0x22 0x1C 0x28 0x2D 0xFF
|
|
: npc-name-7 0x0B 0x28 0x2B 0x1D 0xF9 0xF9 0x19 0x1A 0x1F 0x1F 0x2B 0x1E 0xFF
|
|
|
|
: npc-scoff-0 # "Still snooping about, I see? What was I doing?"
|
|
0xFE 0x00 0x0D 0x44 0x12 0x2D 0x22 0x25 0x25 0xF9 0x2C 0x27 0x28 0x28 0x29 0x22
|
|
0x27 0x20 0xF9 0x1A 0x1B 0x28 0x2E 0x2D 0xF9 0xFE 0x00 0x17 0x08 0xF9 0x2C 0x1E
|
|
0x1E 0x40 0xF9 0x06 0x28 0x28 0x1D 0xF9 0x25 0x2E 0x1C 0x24 0x3E 0xF9 0xF9 0xFE
|
|
0x00 0x2B 0x3E 0x3E 0x3E 0x16 0x21 0x1A 0x2D 0xF9 0x30 0x1A 0x2C 0xF9 0x08 0xF9
|
|
0x1D 0x28 0x22 0x27 0x20 0x40 0x44 0xFF
|
|
: npc-scoff-1 # "I suppose you want to know my wereabouts this evening?"
|
|
0xFE 0x00 0x0F 0x44 0x08 0xF9 0x2C 0x2E 0x29 0x29 0x28 0x2C 0x1E 0xF9 0x32 0x28
|
|
0x2E 0xF9 0x30 0x1A 0x27 0x2D 0xF9 0xFE 0x00 0x19 0x2D 0x28 0xF9 0x24 0x27 0x28
|
|
0x30 0xF9 0x26 0x32 0xF9 0x30 0x1E 0x2B 0x1E 0x1A 0x1B 0x28 0x2E 0x2D 0x2C 0xF9
|
|
0xFE 0x00 0x23 0x2D 0x21 0x22 0x2C 0xF9 0x1E 0x2F 0x1E 0x27 0x22 0x27 0x20 0x40
|
|
0x44 0xFF
|
|
: npc-scoff-2 # "Oh, come now. You can't believe I was responsible for this?"
|
|
0xFE 0x04 0x0C 0x44 0x0E 0x21 0x41 0xF9 0x1C 0x28 0x26 0x1E 0xF9 0x27 0x28 0x30
|
|
0x3F 0xF9 0xFE 0x04 0x16 0x18 0x28 0x2E 0xF9 0x1C 0x1A 0x27 0x42 0x2D 0xF9 0x1B
|
|
0x1E 0x25 0x22 0x1E 0x2F 0x1E 0xF9 0x08 0xF9 0xFE 0x04 0x20 0x30 0x1A 0x2C 0xF9
|
|
0x2B 0x1E 0x2C 0x29 0x28 0x27 0x2C 0x22 0x1B 0x25 0x1E 0xF9 0x1F 0x28 0x2B 0xF9
|
|
0xFE 0x04 0x2A 0x1A 0x27 0x32 0xF9 0x28 0x1F 0xF9 0x2D 0x21 0x22 0x2C 0x40 0x44
|
|
0xFF
|
|
: npc-scoff-3 # "I'll have you know I was quite occupied during this vile business."
|
|
0xFE 0x01 0x0C 0x44 0x08 0x42 0x25 0x25 0xF9 0x21 0x1A 0x2F 0x1E 0xF9 0x32 0x28
|
|
0x2E 0xF9 0x24 0x27 0x28 0x30 0x41 0xF9 0xFE 0x01 0x16 0x08 0xF9 0x30 0x1A 0x2C
|
|
0xF9 0x2A 0x2E 0x22 0x2D 0x1E 0xF9 0x28 0x1C 0x1C 0x2E 0x29 0x22 0x1E 0x1D 0xF9
|
|
0xFE 0x01 0x20 0x1D 0x2E 0x2B 0x22 0x27 0x20 0xF9 0x1A 0x25 0x25 0xF9 0x28 0x1F
|
|
0xF9 0x2D 0x21 0x22 0x2C 0xF9 0xFE 0x01 0x2A 0x2F 0x22 0x25 0x1E 0xF9 0x1B 0x2E
|
|
0x2C 0x22 0x27 0x1E 0x2C 0x2C 0x3F 0x44 0xFF
|
|
: npc-scoff-4 # "Regarding tonight, I assure you I have nothing to hide."
|
|
0xFE 0x05 0x11 0x44 0x11 0x1E 0x20 0x1A 0x2B 0x1D 0x22 0x27 0x20 0xF9 0x2D 0x28
|
|
0x27 0x22 0x20 0x21 0x2D 0x41 0xF9 0xFE 0x05 0x1B 0x08 0xF9 0x1A 0x2C 0x2C 0x2E
|
|
0x2B 0x1E 0xF9 0x32 0x28 0x2E 0xF9 0x08 0xF9 0x21 0x1A 0x2F 0x1E 0xF9 0xFE 0x05
|
|
0x25 0x27 0x28 0x2D 0x21 0x22 0x27 0x20 0xF9 0x2D 0x28 0xF9 0x21 0x22 0x1D 0x1E
|
|
0x3F 0x44 0xFF
|
|
: npc-scoff-5 # "Where was I all evening? Hrm. Fine, I'll tell you."
|
|
0xFE 0x00 0x0A 0x44 0x16 0x21 0x1E 0x2B 0x1E 0xF9 0x30 0x1A 0x2C 0xF9 0x08 0xF9
|
|
0x1A 0x25 0x25 0xF9 0xFE 0x00 0x14 0x1E 0x2F 0x1E 0x27 0x22 0x27 0x20 0x40 0xF9
|
|
0x07 0x2E 0x26 0x29 0x21 0x3E 0xF9 0xFE 0x00 0x28 0x05 0x22 0x27 0x1E 0x41 0xF9
|
|
0x08 0x42 0x25 0x25 0xF9 0x2D 0x1E 0x25 0x25 0xF9 0x32 0x28 0x2E 0x3E 0x44 0xFF
|
|
: npc-scoff-6 # "No beating around the bush, then? I think I know what you want to hear."
|
|
0xFE 0x04 0x0A 0x44 0x0D 0x28 0xF9 0x1B 0x1E 0x1A 0x2D 0x22 0x27 0x20 0xF9 0x1A
|
|
0x2B 0x28 0x2E 0x27 0x1D 0xFE 0x04 0x14 0x2D 0x21 0x1E 0xF9 0x1B 0x2E 0x2C 0x21
|
|
0x41 0xF9 0x2D 0x21 0x1E 0x27 0x40 0xFE 0x04 0x1E 0x08 0xF9 0x2D 0x21 0x22 0x27
|
|
0x24 0xF9 0x08 0xF9 0x24 0x27 0x28 0x30 0xF9 0x30 0x21 0x1A 0x2D 0xFE 0x04 0x28
|
|
0x32 0x28 0x2E 0xF9 0x30 0x1A 0x27 0x2D 0xF9 0x2D 0x28 0xF9 0x21 0x1E 0x1A 0x2B
|
|
0x3E 0x44 0xFF
|
|
: npc-scoff-7 # "I dearly hope you can solve this, old chum. As for myself, well..."
|
|
0xFE 0x08 0x03 0x44 0x08 0xF9 0x1D 0x1E 0x1A 0x2B 0x25 0x32 0xF9 0x21 0x28 0x29
|
|
0x1E 0xF9 0x32 0x28 0x2E 0xF9 0xFE 0x08 0x0D 0x1C 0x1A 0x27 0xF9 0x2C 0x28 0x25
|
|
0x2F 0x1E 0xF9 0x2D 0x21 0x22 0x2C 0x41 0xF9 0xFE 0x08 0x17 0x28 0x25 0x1D 0xF9
|
|
0x1C 0x21 0x2E 0x26 0x3E 0xF9 0xFE 0x08 0x2B 0x00 0x2C 0xF9 0x1F 0x28 0x2B 0xF9
|
|
0x26 0x32 0x2C 0x1E 0x25 0x1F 0x41 0xF9 0xFE 0x08 0x35 0x30 0x1E 0x25 0x25 0x3E
|
|
0x3E 0x3E 0x44 0xFF
|
|
: npc-scoff-8 # "Hm? Did you want something? Oh, of course, of course."
|
|
0xFE 0x0D 0x08 0x44 0x07 0x26 0x40 0xF9 0x03 0x22 0x1D 0xF9 0x32 0x28 0x2E 0xF9
|
|
0x30 0x1A 0x27 0x2D 0xFE 0x0D 0x12 0x2C 0x28 0x26 0x1E 0x2D 0x21 0x22 0x27 0x20
|
|
0x40 0xFE 0x0D 0x1C 0xFE 0x0D 0x26 0x0E 0x21 0x41 0xF9 0x28 0x1F 0xF9 0x1C 0x28
|
|
0x2E 0x2B 0x2C 0x1E 0x41 0xFE 0x0D 0x30 0x28 0x1F 0xF9 0x1C 0x28 0x2E 0x2B 0x2C
|
|
0x1E 0x3E 0x44 0xFF
|
|
|
|
: room-name-0 0x25 0x22 0x1B 0x2B 0x1A 0x2B 0x32 0xFF
|
|
: room-name-1 0x1B 0x1A 0x2D 0x21 0x2B 0x28 0x28 0x26 0xFF
|
|
: room-name-2 0x1B 0x1E 0x1D 0x2B 0x28 0x28 0x26 0xFF
|
|
: room-name-3 0x1D 0x2B 0x1A 0x30 0x22 0x27 0x20 0xF9 0x2B 0x28 0x28 0x26 0xFF
|
|
: room-name-4 0x29 0x1A 0x2B 0x25 0x28 0x2B 0xFF
|
|
: room-name-5 0x1D 0x22 0x27 0x22 0x27 0x20 0xF9 0x2B 0x28 0x28 0x26 0xFF
|
|
: room-name-6 0x2C 0x2D 0x2E 0x1D 0x32 0xFF
|
|
: room-name-7 0x1C 0x28 0x27 0x2C 0x1E 0x2B 0x2F 0x1A 0x2D 0x28 0x2B 0x32 0xFF
|
|
: room-name-8 0x24 0x22 0x2D 0x1C 0x21 0x1E 0x27 0xFF
|
|
: room-name-9 0x29 0x1A 0x27 0x2D 0x2B 0x32 0xFF
|
|
|
|
: npc-was-alone # $1 is location.
|
|
0xFE 0x0E 0x10 0x44 0x08 0xF9 0x30 0x1A 0x2C 0xF9 0x1A 0x25 0x28 0x27 0x1E 0xF9 0x1A
|
|
0x25 0x25 0xF9 0xFE 0x0E 0x1A 0x1E 0x2F 0x1E 0x27 0x22 0x27 0x20 0x41 0xF9 0x22 0x27
|
|
0xF9 0x2D 0x21 0x1E 0xF9 0xFE 0x0E 0x24 0xFA 0x3E 0x44 0xFF
|
|
|
|
: npc-was-with-in # $0 is partner, $1 is location.
|
|
0xFE 0x00 0x11 0x44 0x08 0xF9 0x30 0x1A 0x2C 0xF9 0x30 0x22 0x2D 0x21 0xF9 0xFE 0x00
|
|
0x1B 0xFB 0x41 0xF9 0xFE 0x00 0x25 0x22 0x27 0xF9 0x2D 0x21 0x1E 0xF9 0xFA 0x3E 0x44
|
|
0xFF
|
|
|
|
: npc-portrait-table
|
|
pointer portrait-0
|
|
pointer portrait-1
|
|
pointer portrait-2
|
|
pointer portrait-3
|
|
pointer portrait-4
|
|
pointer portrait-5
|
|
pointer portrait-6
|
|
pointer portrait-7
|
|
|
|
: npc-title-table
|
|
pointer npc-title-0
|
|
pointer npc-title-1
|
|
pointer npc-title-2
|
|
pointer npc-title-3
|
|
pointer npc-title-4
|
|
pointer npc-title-5
|
|
pointer npc-title-6
|
|
pointer npc-title-7
|
|
|
|
: npc-name-table
|
|
pointer npc-name-0
|
|
pointer npc-name-1
|
|
pointer npc-name-2
|
|
pointer npc-name-3
|
|
pointer npc-name-4
|
|
pointer npc-name-5
|
|
pointer npc-name-6
|
|
pointer npc-name-7
|
|
|
|
: npc-scoff-table
|
|
pointer npc-scoff-0
|
|
pointer npc-scoff-1
|
|
pointer npc-scoff-2
|
|
pointer npc-scoff-3
|
|
pointer npc-scoff-4
|
|
pointer npc-scoff-5
|
|
pointer npc-scoff-6
|
|
pointer npc-scoff-7
|
|
|
|
: room-name-table
|
|
pointer room-name-0
|
|
pointer room-name-1
|
|
pointer room-name-2
|
|
pointer room-name-3
|
|
pointer room-name-4
|
|
pointer room-name-5
|
|
pointer room-name-6
|
|
pointer room-name-7
|
|
pointer room-name-8
|
|
pointer room-name-9
|
|
|
|
to-code
|
|
|
|
: introduce-npc
|
|
# (pass the npc index in v2...)
|
|
clear
|
|
i := long npc-portrait-table
|
|
portrait
|
|
print-from-table v2 npc-title-table
|
|
dialog-pause
|
|
;
|
|
|
|
: describe-npc
|
|
thicken-plot SUSPICION_TALK_NPC
|
|
introduce-npc
|
|
|
|
i := long npc-scoff-index
|
|
i += v2
|
|
load v0
|
|
print-from-table v0 npc-scoff-table
|
|
dialog-pause
|
|
|
|
# find alibi slot w/ our npc
|
|
v0 := 0
|
|
loop
|
|
i := long npc-alibis
|
|
i += v0
|
|
load v1 - v1
|
|
while v1 != v2
|
|
v0 += 1
|
|
again
|
|
|
|
if v0 == 6 begin
|
|
# lone NPC
|
|
i := long npc-alibi-r4
|
|
load v0
|
|
fmt-from-table v0 room-name-table print-string1-read
|
|
print npc-was-alone
|
|
jump dialog-pause
|
|
end
|
|
|
|
if v0 == 7 begin
|
|
thicken-plot SUSPICION_TALK_MURDERER
|
|
# murderer
|
|
i := long npc-alibi-r5
|
|
load v0
|
|
fmt-from-table v0 room-name-table print-string1-read
|
|
i := long npc-alibis
|
|
load v0
|
|
else
|
|
# normal alibi
|
|
v1 := v0
|
|
vf := 0b110
|
|
v1 &= vf # v1 is now the base [0,2,4] alibi slot index.
|
|
i := long npc-alibi-rooms
|
|
v1 >>= v1 # v1 is now an alibi room index
|
|
i += v1
|
|
load v1 - v1 # v1 is now the alibi room for the current slot.
|
|
fmt-from-table v1 room-name-table print-string1-read
|
|
|
|
i := long npc-alibis
|
|
vf := 1
|
|
v0 ^= vf # v0 is now the slot index of the partner NPC.
|
|
i += v0
|
|
load v0 # v0 is now the id of the partner NPC.
|
|
end
|
|
fmt-from-table v0 npc-name-table print-string0-read
|
|
print npc-was-with-in
|
|
jump dialog-pause
|
|
|
|
###########################################
|
|
#
|
|
# Decorations and Passages
|
|
#
|
|
###########################################
|
|
|
|
to-data
|
|
|
|
: d1-library # "Countless volumes on the history of the Orient. Fascinating."
|
|
0xFE 0x0A 0x08 0x02 0x28 0x2E 0x27 0x2D 0x25 0x1E 0x2C 0x2C 0xF9 0x2F 0x28 0x25
|
|
0x2E 0x26 0x1E 0x2C 0xF9 0xFE 0x0A 0x12 0x28 0x27 0xF9 0x2D 0x21 0x1E 0xF9 0x21
|
|
0x22 0x2C 0x2D 0x28 0x2B 0x32 0xF9 0x28 0x1F 0xF9 0xFE 0x0A 0x1C 0x2D 0x21 0x1E
|
|
0xF9 0x0E 0x2B 0x22 0x1E 0x27 0x2D 0x3E 0xF9 0xFE 0x0A 0x2E 0x05 0x1A 0x2C 0x1C
|
|
0x22 0x27 0x1A 0x2D 0x22 0x27 0x20 0x3E 0xFF
|
|
: d2-library # "Philosophy, Logic, Game theory... Mosaic tiling? How Curious."
|
|
0xFE 0x0A 0x08 0x0F 0x21 0x22 0x25 0x28 0x2C 0x28 0x29 0x21 0x32 0x41 0xF9 0x0B
|
|
0x28 0x20 0x22 0x1C 0x41 0xF9 0xFE 0x0A 0x12 0x06 0x1A 0x26 0x1E 0xF9 0x2D 0x21
|
|
0x1E 0x28 0x2B 0x32 0x3E 0x3E 0x3E 0xF9 0xFE 0x0A 0x1C 0x0C 0x28 0x2C 0x1A 0x22
|
|
0x1C 0xF9 0x2D 0x22 0x25 0x22 0x27 0x20 0x40 0xF9 0xFE 0x0A 0x2E 0x07 0x28 0x30
|
|
0xF9 0x02 0x2E 0x2B 0x22 0x28 0x2E 0x2C 0x3E 0xFF
|
|
|
|
: d1-bathroom # "Spare towels, dirty clothes. Nothing terribly out of the ordinary."
|
|
0xFE 0x04 0x0C 0x12 0x29 0x1A 0x2B 0x1E 0xF9 0x2D 0x28 0x30 0x1E 0x25 0x2C 0x41
|
|
0xFE 0x04 0x16 0x1D 0x22 0x2B 0x2D 0x32 0xF9 0x1C 0x25 0x28 0x2D 0x21 0x1E 0x2C
|
|
0x3E 0xFE 0x04 0x20 0x0D 0x28 0x2D 0x21 0x22 0x27 0x20 0xF9 0x2D 0x1E 0x2B 0x2B
|
|
0x22 0x1B 0x25 0x32 0xFE 0x04 0x2A 0x28 0x2E 0x2D 0xF9 0x28 0x1F 0xF9 0x2D 0x21
|
|
0x1E 0xF9 0x28 0x2B 0x1D 0x22 0x27 0x1A 0x2B 0x32 0x3E 0xFF
|
|
: d2-bathroom # "The bathmat feels damp to the touch. Someone has showered here recently."
|
|
0xFE 0x02 0x0C 0x13 0x21 0x1E 0xF9 0x1B 0x1A 0x2D 0x21 0x26 0x1A 0x2D 0xF9 0x1F
|
|
0x1E 0x1E 0x25 0x2C 0xFE 0x02 0x16 0x1D 0x1A 0x26 0x29 0xF9 0x2D 0x28 0xF9 0x2D
|
|
0x21 0x1E 0xF9 0x2D 0x28 0x2E 0x1C 0x21 0x3E 0xFE 0x02 0x20 0x12 0x28 0x26 0x1E
|
|
0x28 0x27 0x1E 0xF9 0x21 0x1A 0x2C 0xF9 0x2C 0x21 0x28 0x30 0x1E 0x2B 0x1E 0x1D
|
|
0xFE 0x02 0x2A 0x21 0x1E 0x2B 0x1E 0xF9 0x2B 0x1E 0x1C 0x1E 0x27 0x2D 0x25 0x32
|
|
0x3E 0x3E 0x3E 0xFF
|
|
|
|
: d1-bedroom # "The covers are warm to the touch. How scandalous!"
|
|
0xFE 0x02 0x0A 0x13 0x21 0x1E 0xF9 0x1C 0x28 0x2F 0x1E 0x2B 0x2C 0xF9 0x1A 0x2B
|
|
0x1E 0xF9 0x2C 0x2D 0x22 0x25 0x25 0xF9 0xFE 0x02 0x14 0x30 0x1A 0x2B 0x26 0xF9
|
|
0x2D 0x28 0xF9 0x2D 0x21 0x1E 0xF9 0x2D 0x28 0x2E 0x1C 0x21 0x3E 0xF9 0xFE 0x02
|
|
0x23 0x08 0x2D 0xF9 0x2C 0x1E 0x1E 0x26 0x2C 0xF9 0x2D 0x21 0x1E 0xF9 0x20 0x2E
|
|
0x1E 0x2C 0x2D 0x2C 0xF9 0xFE 0x02 0x2D 0x21 0x1A 0x2F 0x1E 0xF9 0x1B 0x1E 0x1E
|
|
0x27 0x3E 0x3E 0x3E 0xF9 0x1B 0x2E 0x2C 0x32 0x3E 0x3E 0x3E 0xFF
|
|
: d2-bedroom # "On the desk is an open decanter of a particularly peaty scotch."
|
|
0xFE 0x05 0x08 0x0E 0x27 0xF9 0x2D 0x21 0x1E 0xF9 0x1D 0x1E 0x2C 0x24 0xF9 0x22
|
|
0x2C 0xF9 0x1A 0x27 0xFE 0x05 0x12 0x28 0x29 0x1E 0x27 0xF9 0x1D 0x1E 0x1C 0x1A
|
|
0x27 0x2D 0x1E 0x2B 0xF9 0x28 0x1F 0xF9 0x1A 0xFE 0x05 0x1C 0x29 0x1A 0x2B 0x2D
|
|
0x22 0x1C 0x2E 0x25 0x1A 0x2B 0x25 0x32 0xF9 0x29 0x1E 0x1A 0x2D 0x32 0xFE 0x05
|
|
0x26 0x2C 0x1C 0x28 0x2D 0x1C 0x21 0x3E 0xF9 0x03 0x28 0x27 0x42 0x2D 0xF9 0x26
|
|
0x22 0x27 0x1D 0xFE 0x05 0x30 0x22 0x1F 0xF9 0x08 0xF9 0x1D 0x28 0x3E 0x3E 0x3E
|
|
0xFF
|
|
|
|
: d1-drawing-room # "A crude sketch of a naked woman. The eyes have been carefully cut out. Most unsettling."
|
|
0xFE 0x06 0x02 0x00 0xF9 0x1C 0x2B 0x2E 0x1D 0x1E 0xF9 0x2C 0x24 0x1E 0x2D 0x1C
|
|
0x21 0xF9 0x28 0x1F 0xF9 0x1A 0xF9 0xFE 0x06 0x0C 0x27 0x1A 0x24 0x1E 0x1D 0xF9
|
|
0x30 0x28 0x26 0x1A 0x27 0x3E 0xF9 0xFE 0x06 0x16 0x13 0x21 0x1E 0xF9 0x1E 0x32
|
|
0x1E 0x2C 0xF9 0x21 0x1A 0x2F 0x1E 0xF9 0x1B 0x1E 0x1E 0x27 0xF9 0xFE 0x06 0x20
|
|
0x1C 0x1A 0x2B 0x1E 0x1F 0x2E 0x25 0x25 0x32 0xF9 0x1C 0x2E 0x2D 0xF9 0x28 0x2E
|
|
0x2D 0x3E 0xF9 0xFE 0x06 0x34 0x0C 0x28 0x2C 0x2D 0xF9 0x2E 0x27 0x2C 0x1E 0x2D
|
|
0x2D 0x25 0x22 0x27 0x20 0x3E 0xFF
|
|
: d2-drawing-room # "A sketch of a featureless black cube. Quite modern."
|
|
0xFE 0x16 0x06 0x00 0xF9 0x2C 0x24 0x1E 0x2D 0x1C 0x21 0xF9 0x28 0x1F 0xF9 0x1A
|
|
0xF9 0xFE 0x16 0x10 0x1F 0x1E 0x1A 0x2D 0x2E 0x2B 0x1E 0x25 0x1E 0x2C 0x2C 0xF9
|
|
0xFE 0x16 0x1A 0x1B 0x25 0x1A 0x1C 0x24 0xF9 0x1C 0x2E 0x1B 0x1E 0x3E 0xF9 0xFE
|
|
0x16 0x2E 0x10 0x2E 0x22 0x2D 0x1E 0xF9 0x26 0x28 0x1D 0x1E 0x2B 0x27 0x3E 0xFF
|
|
|
|
# editor's note: yes, I know that a "drawing room" is not typically
|
|
# dedicated to literal drawings and sketches. It's a joke!
|
|
|
|
: d1-parlor # "A half-written party invitation. The recipient is hastily scratched out."
|
|
0xFE 0x00 0x04 0x00 0xF9 0x21 0x1A 0x25 0x1F 0x43 0x30 0x2B 0x22 0x2D 0x2D 0x1E
|
|
0x27 0xF9 0x29 0x1A 0x2B 0x2D 0x32 0xF9 0xF9 0xFE 0x00 0x0E 0x22 0x27 0x2F 0x22
|
|
0x2D 0x1A 0x2D 0x22 0x28 0x27 0x3E 0xF9 0xF9 0xFE 0x00 0x1C 0x13 0x21 0x1E 0xF9
|
|
0x2B 0x1E 0x1C 0x22 0x29 0x22 0x1E 0x27 0x2D 0x42 0x2C 0xF9 0xF9 0xFE 0x00 0x26
|
|
0x27 0x1A 0x26 0x1E 0xF9 0x21 0x1A 0x2C 0xF9 0x1B 0x1E 0x1E 0x27 0xF9 0x21 0x1A
|
|
0x2C 0x2D 0x22 0x25 0x32 0xF9 0xF9 0xFE 0x00 0x30 0x2C 0x1C 0x2B 0x1A 0x2D 0x1C
|
|
0x21 0x1E 0x1D 0xF9 0x28 0x2E 0x2D 0x3E 0x3E 0x3E 0xFF
|
|
: d2-parlor # "Well-worn armchairs of the finest mink leather. A tad ostentatious."
|
|
0xFE 0x05 0x0C 0x16 0x1E 0x25 0x25 0x43 0x30 0x28 0x2B 0x27 0xF9 0x1A 0x2B 0x26
|
|
0x1C 0x21 0x1A 0x22 0x2B 0x2C 0xFE 0x05 0x16 0x28 0x1F 0xF9 0x2D 0x21 0x1E 0xF9
|
|
0x1F 0x22 0x27 0x1E 0x2C 0x2D 0xF9 0x26 0x22 0x27 0x24 0xFE 0x05 0x20 0x25 0x1E
|
|
0x1A 0x2D 0x21 0x1E 0x2B 0x3E 0xF9 0x00 0xF9 0x2D 0x1A 0x1D 0xFE 0x05 0x2A 0x28
|
|
0x2C 0x2D 0x1E 0x27 0x2D 0x1A 0x2D 0x22 0x28 0x2E 0x2C 0x41 0xF9 0x27 0x28 0x40
|
|
0xFF
|
|
|
|
: d1-dining-room # "What remains of dinner. I daresay I've lost my appetite."
|
|
0xFE 0x04 0x08 0x16 0x21 0x1A 0x2D 0xF9 0x2B 0x1E 0x26 0x1A 0x22 0x27 0x2C 0xF9
|
|
0xF9 0xFE 0x04 0x12 0x28 0x1F 0xF9 0x1D 0x22 0x27 0x27 0x1E 0x2B 0x3E 0xF9 0xF9
|
|
0xFE 0x04 0x26 0x08 0xF9 0x1D 0x1A 0x2B 0x1E 0x2C 0x1A 0x32 0xF9 0x08 0x42 0x2F
|
|
0x1E 0xF9 0x25 0x28 0x2C 0x2D 0xF9 0xF9 0xFE 0x04 0x30 0x26 0x32 0xF9 0x1A 0x29
|
|
0x29 0x1E 0x2D 0x22 0x2D 0x1E 0x3E 0xFF
|
|
: d2-dining-room # "A sterling silver tea set. Someone seems to have made off with the sugar."
|
|
0xFE 0x08 0x02 0x00 0xF9 0x2C 0x2D 0x1E 0x2B 0x25 0x22 0x27 0x20 0xF9 0x2C 0x22
|
|
0x25 0x2F 0x1E 0x2B 0xF9 0xFE 0x08 0x0C 0x2D 0x1E 0x1A 0xF9 0x2C 0x1E 0x2D 0x3E
|
|
0xF9 0xFE 0x08 0x20 0x12 0x28 0x26 0x1E 0x28 0x27 0x1E 0xF9 0x2C 0x1E 0x1E 0x26
|
|
0x2C 0xF9 0x2D 0x28 0xF9 0xFE 0x08 0x2A 0x21 0x1A 0x2F 0x1E 0xF9 0x26 0x1A 0x1D
|
|
0x1E 0xF9 0x28 0x1F 0x1F 0xF9 0x30 0x22 0x2D 0x21 0xF9 0xFE 0x08 0x34 0x2D 0x21
|
|
0x1E 0xF9 0x2C 0x2E 0x20 0x1A 0x2B 0x3E 0xFF
|
|
|
|
: d1-study # "A leatherbound volume describing ancient torture techniques. Ghastly stuff."
|
|
0xFE 0x00 0x0A 0x00 0xF9 0x25 0x1E 0x1A 0x2D 0x21 0x1E 0x2B 0x1B 0x28 0x2E 0x27
|
|
0x1D 0xF9 0x2F 0x28 0x25 0x2E 0x26 0x1E 0xFE 0x00 0x14 0x1D 0x1E 0x2C 0x1C 0x2B
|
|
0x22 0x1B 0x22 0x27 0x20 0xF9 0x1A 0x27 0x1C 0x22 0x1E 0x27 0x2D 0xFE 0x00 0x1E
|
|
0x2D 0x28 0x2B 0x2D 0x2E 0x2B 0x1E 0xF9 0x2D 0x1E 0x1C 0x21 0x27 0x22 0x2A 0x2E
|
|
0x1E 0x2C 0x3E 0xFE 0x00 0x28 0x06 0x21 0x1A 0x2C 0x2D 0x25 0x32 0xF9 0x2C 0x2D
|
|
0x2E 0x1F 0x1F 0x3E 0xFF
|
|
: d2-study # "Our host's beloved collection of mystery novels. Darkly ironic, given tonight's festivities."
|
|
0xFE 0x00 0x03 0x0E 0x2E 0x2B 0xF9 0x21 0x28 0x2C 0x2D 0x42 0x2C 0xF9 0x1B 0x1E
|
|
0x25 0x28 0x2F 0x1E 0x1D 0xFE 0x00 0x0D 0x1C 0x28 0x25 0x25 0x1E 0x1C 0x2D 0x22
|
|
0x28 0x27 0xF9 0x28 0x1F 0xF9 0x26 0x32 0x2C 0x2D 0x1E 0x2B 0x32 0xFE 0x00 0x17
|
|
0x27 0x28 0x2F 0x1E 0x25 0x2C 0x3E 0xFE 0x00 0x21 0x03 0x1A 0x2B 0x24 0x25 0x32
|
|
0xF9 0x22 0x2B 0x28 0x27 0x22 0x1C 0x41 0xF9 0x20 0x22 0x2F 0x1E 0x27 0xFE 0x00
|
|
0x2B 0x2D 0x21 0x1E 0xF9 0x1E 0x2F 0x1E 0x27 0x22 0x27 0x20 0x42 0x2C 0xFE 0x00
|
|
0x35 0x44 0x1F 0x1E 0x2C 0x2D 0x22 0x2F 0x22 0x2D 0x22 0x1E 0x2C 0x44 0x3E 0xFF
|
|
|
|
: d1-conservatory # "Rain patters against the dark windowpanes."
|
|
0xFE 0x00 0x07 0x11 0x1A 0x22 0x27 0xF9 0x29 0x1A 0x2D 0x2D 0x1E 0x2B 0x2C 0xF9
|
|
0x1A 0x20 0x1A 0x22 0x27 0x2C 0x2D 0xF9 0xFE 0x00 0x11 0x2D 0x21 0x1E 0xF9 0x1D
|
|
0x1A 0x2B 0x24 0xF9 0x30 0x22 0x27 0x1D 0x28 0x30 0x29 0x1A 0x27 0x1E 0x2C 0x3E
|
|
0xF9 0xFE 0x00 0x25 0x08 0x2D 0x42 0x2C 0xF9 0x2C 0x2D 0x22 0x25 0x25 0xF9 0x2C
|
|
0x2D 0x28 0x2B 0x26 0x22 0x27 0x20 0xF9 0xFE 0x00 0x2F 0x21 0x1A 0x2B 0x1D 0xF9
|
|
0x28 0x2E 0x2D 0x2C 0x22 0x1D 0x1E 0x3E 0xFF
|
|
: d2-conservatory # "The loose soil in this pot suggests recent excavation."
|
|
0xFE 0x03 0x11 0x13 0x21 0x1E 0xF9 0x25 0x28 0x28 0x2C 0x1E 0xF9 0x2C 0x28 0x22
|
|
0x25 0xF9 0x22 0x27 0xFE 0x03 0x1B 0x2D 0x21 0x22 0x2C 0xF9 0x29 0x28 0x2D 0xF9
|
|
0x2C 0x2E 0x20 0x20 0x1E 0x2C 0x2D 0x2C 0xFE 0x03 0x25 0x2B 0x1E 0x1C 0x1E 0x27
|
|
0x2D 0xF9 0x1E 0x31 0x1C 0x1A 0x2F 0x1A 0x2D 0x22 0x28 0x27 0x3E 0x3E 0x3E 0xFF
|
|
|
|
: d1-kitchen # "A slew of recipe books. The master of the house was quite the gourmand."
|
|
0xFE 0x03 0x0C 0x00 0xF9 0x2C 0x25 0x1E 0x30 0xF9 0x28 0x1F 0xF9 0x2B 0x1E 0x1C
|
|
0x22 0x29 0x1E 0xFE 0x03 0x16 0x1B 0x28 0x28 0x24 0x2C 0x3E 0xF9 0x13 0x21 0x1E
|
|
0xF9 0x26 0x1A 0x2C 0x2D 0x1E 0x2B 0xF9 0x28 0x1F 0xFE 0x03 0x20 0x2D 0x21 0x1E
|
|
0xF9 0x21 0x28 0x2E 0x2C 0x1E 0xF9 0x30 0x1A 0x2C 0xF9 0x2A 0x2E 0x22 0x2D 0x1E
|
|
0xFE 0x03 0x2A 0x2D 0x21 0x1E 0xF9 0x20 0x28 0x2E 0x2B 0x26 0x1A 0x27 0x1D 0x3E
|
|
0x3E 0x3E 0xFF
|
|
: d2-kitchen # "The washbasin's faucet has a slow drip, which echoes through the room."
|
|
0xFE 0x06 0x0C 0x13 0x21 0x1E 0xF9 0x30 0x1A 0x2C 0x21 0x1B 0x1A 0x2C 0x22 0x27
|
|
0x42 0x2C 0xFE 0x06 0x16 0x1F 0x1A 0x2E 0x1C 0x1E 0x2D 0xF9 0x21 0x1A 0x2C 0xF9
|
|
0x1A 0xF9 0x2C 0x25 0x28 0x30 0xFE 0x06 0x20 0x1D 0x2B 0x22 0x29 0x41 0xF9 0x30
|
|
0x21 0x22 0x1C 0x21 0xF9 0x1E 0x1C 0x21 0x28 0x1E 0x2C 0xFE 0x06 0x2A 0x2D 0x21
|
|
0x2B 0x28 0x2E 0x20 0x21 0xF9 0x2D 0x21 0x1E 0xF9 0x2B 0x28 0x28 0x26 0x3E 0xFF
|
|
|
|
: d1-pantry # "There are enough tinned provisions on these shelves to feed a small army."
|
|
0xFE 0x02 0x0C 0x13 0x21 0x1E 0x2B 0x1E 0xF9 0x1A 0x2B 0x1E 0xF9 0x1E 0x27 0x28
|
|
0x2E 0x20 0x21 0xFE 0x02 0x16 0x2D 0x22 0x27 0x27 0x1E 0x1D 0xF9 0x29 0x2B 0x28
|
|
0x2F 0x22 0x2C 0x22 0x28 0x27 0x2C 0xF9 0x28 0x27 0xFE 0x02 0x20 0x2D 0x21 0x1E
|
|
0x2C 0x1E 0xF9 0x2C 0x21 0x1E 0x25 0x2F 0x1E 0x2C 0xF9 0x2D 0x28 0xFE 0x02 0x2A
|
|
0x1F 0x1E 0x1E 0x1D 0xF9 0x1A 0xF9 0x2C 0x26 0x1A 0x25 0x25 0xF9 0x1A 0x2B 0x26
|
|
0x32 0x3E 0xFF
|
|
: d2-pantry # "Judging by color and odor, whatever is in these jars should stay there."
|
|
0xFE 0x08 0x07 0x09 0x2E 0x1D 0x20 0x22 0x27 0x20 0xF9 0x1B 0x32 0xF9 0x1C 0x28
|
|
0x25 0x28 0x2B 0xF9 0xFE 0x08 0x11 0x1A 0x27 0x1D 0xF9 0x28 0x1D 0x28 0x2B 0x41
|
|
0xF9 0x30 0x21 0x1A 0x2D 0x1E 0x2F 0x1E 0x2B 0xF9 0xFE 0x08 0x1B 0x22 0x2C 0xF9
|
|
0x22 0x27 0xF9 0x2D 0x21 0x1E 0x2C 0x1E 0xF9 0x23 0x1A 0x2B 0x2C 0xF9 0xFE 0x08
|
|
0x25 0x2C 0x21 0x28 0x2E 0x25 0x1D 0xF9 0x2C 0x2D 0x1A 0x32 0xF9 0x2D 0x21 0x1E
|
|
0x2B 0x1E 0xF9 0xFE 0x08 0x2F 0x22 0x27 0x1D 0x1E 0x1F 0x22 0x27 0x22 0x2D 0x1E
|
|
0x25 0x32 0x3E 0xFF
|
|
|
|
: d1-secret # "Cobwebbed boxes full of knick-knacks and bric-a-brac."
|
|
0xFE 0x00 0x07 0x02 0x28 0x1B 0x30 0x1E 0x1B 0x1B 0x1E 0x1D 0xF9 0x1B 0x28 0x31
|
|
0x1E 0x2C 0xF9 0x1F 0x2E 0x25 0x25 0xFE 0x00 0x11 0x28 0x1F 0xF9 0x24 0x27 0x22
|
|
0x1C 0x24 0x43 0x24 0x27 0x1A 0x1C 0x24 0x2C 0x41 0xF9 0xFE 0x00 0x1B 0x1C 0x2E
|
|
0x2B 0x22 0x28 0x2C 0x41 0xF9 0x28 0x1B 0x23 0x1E 0x2D 0xF9 0x1D 0x42 0x1A 0x2B
|
|
0x2D 0x41 0xFE 0x00 0x25 0x1B 0x1A 0x2E 0x1B 0x25 0x1E 0x2C 0x41 0xF9 0x1C 0x2E
|
|
0x2B 0x22 0x28 0x2C 0x22 0x2D 0x22 0x1E 0x2C 0x41 0xFE 0x00 0x2F 0x1A 0x27 0x1D
|
|
0xF9 0x1B 0x2B 0x22 0x1C 0x43 0x1A 0x43 0x1B 0x2B 0x1A 0x1C 0x3E 0xFF
|
|
: d2-secret # "Scrapes in the dust suggest these boxes have been moved recently."
|
|
0xFE 0x04 0x0C 0x12 0x1C 0x2B 0x1A 0x29 0x1E 0x2C 0xF9 0x22 0x27 0xF9 0x2D 0x21
|
|
0x1E 0xF9 0x1D 0x2E 0x2C 0x2D 0xFE 0x04 0x16 0x2C 0x2E 0x20 0x20 0x1E 0x2C 0x2D
|
|
0xF9 0x2D 0x21 0x1E 0x2C 0x1E 0xF9 0x1B 0x28 0x31 0x1E 0x2C 0xFE 0x04 0x20 0x21
|
|
0x1A 0x2F 0x1E 0xF9 0x1B 0x1E 0x1E 0x27 0xF9 0x26 0x28 0x2F 0x1E 0x1D 0xFE 0x04
|
|
0x2A 0x2B 0x1E 0x1C 0x1E 0x27 0x2D 0x25 0x32 0x3E 0x3E 0x3E 0xFF
|
|
|
|
: secret-passage-entrance
|
|
0xFE 0x04 0x02 0x16 0x21 0x1A 0x2D 0x42 0x2C 0xF9 0x2D 0x21 0x22 0x2C 0x40 0xFE
|
|
0x04 0x0C 0x00 0xF9 0x1C 0x28 0x27 0x1C 0x1E 0x1A 0x25 0x1E 0x1D 0xF9 0x1D 0x28
|
|
0x28 0x2B 0xF9 0x22 0x2C 0xFE 0x04 0x16 0x2C 0x25 0x22 0x20 0x21 0x2D 0x25 0x32
|
|
0xF9 0x1A 0x23 0x1A 0x2B 0x3F 0xFE 0x04 0x20 0x12 0x2D 0x1E 0x29 0xF9 0x22 0x27
|
|
0x2C 0x22 0x1D 0x1E 0x40 0xFF
|
|
: secret-room-entrance
|
|
0xFE 0x00 0x02 0x04 0x2E 0x2B 0x1E 0x24 0x1A 0x3F 0xF9 0x00 0xF9 0x2D 0x2B 0x1A
|
|
0x29 0xF9 0x1D 0x28 0x28 0x2B 0xFE 0x00 0x0C 0x22 0x2C 0xF9 0x21 0x22 0x1D 0x1D
|
|
0x1E 0x27 0xF9 0x22 0x27 0xF9 0x2D 0x21 0x1E 0xFE 0x00 0x16 0x1F 0x25 0x28 0x28
|
|
0x2B 0xF9 0x21 0x1E 0x2B 0x1E 0x3F 0xFE 0x00 0x20 0x12 0x21 0x28 0x2E 0x25 0x1D
|
|
0xF9 0x08 0xF9 0x22 0x27 0x2F 0x1E 0x2C 0x2D 0x22 0x20 0x1A 0x2D 0x1E 0x40 0xFF
|
|
: how-did-i-get-here
|
|
0xFE 0x08 0x14 0x07 0x28 0x30 0xF9 0x28 0x27 0xF9 0x1E 0x1A 0x2B 0x2D 0x21 0xFE
|
|
0x08 0x1E 0x1D 0x22 0x1D 0xF9 0x08 0xF9 0x1E 0x27 0x1D 0xF9 0x2E 0x29 0xF9 0x21
|
|
0x1E 0x2B 0x1E 0x40 0xFF
|
|
|
|
: room-deco-table
|
|
pointer d1-library
|
|
pointer d2-library
|
|
pointer d1-bathroom
|
|
pointer d2-bathroom
|
|
pointer d1-bedroom
|
|
pointer d2-bedroom
|
|
pointer d1-drawing-room
|
|
pointer d2-drawing-room
|
|
pointer d1-parlor
|
|
pointer d2-parlor
|
|
pointer d1-dining-room
|
|
pointer d2-dining-room
|
|
pointer d1-study
|
|
pointer d2-study
|
|
pointer d1-conservatory
|
|
pointer d2-conservatory
|
|
pointer d1-kitchen
|
|
pointer d2-kitchen
|
|
pointer d1-pantry
|
|
pointer d2-pantry
|
|
pointer d1-secret
|
|
pointer d2-secret
|
|
|
|
: secret-room-player-pos-stash
|
|
0x00 0x00
|
|
|
|
to-code
|
|
|
|
: describe-deco
|
|
# pass the decoration index {0,1} in v2.
|
|
thicken-plot SUSPICION_EXAMINE_DECO
|
|
clear
|
|
if v2 == 0 begin
|
|
i := long has-passage-room
|
|
load v0
|
|
if v0 == current-room begin
|
|
print secret-passage-entrance
|
|
dialog-yes-no
|
|
if v2 == 0 then return
|
|
i := long has-body-room
|
|
load v0
|
|
current-room := v0
|
|
|
|
# gotta unpack the player's
|
|
# start position for the new room:
|
|
dialog-fill-screen
|
|
plane 0
|
|
draw-room
|
|
i := long room-stash-start
|
|
load player-x - player-y
|
|
plane 1
|
|
|
|
wait 60
|
|
clear
|
|
print how-did-i-get-here
|
|
dialog-pause
|
|
jump draw-room-title
|
|
end
|
|
else
|
|
i := long has-secret-room
|
|
load v0
|
|
if v0 == current-room begin
|
|
print secret-room-entrance
|
|
dialog-yes-no
|
|
if v2 == 0 then return
|
|
i := long secret-room-player-pos-stash
|
|
save player-x - player-y
|
|
current-room := 10
|
|
room
|
|
i := long has-secret-room
|
|
load v0
|
|
i := long secret-room-player-pos-stash
|
|
load player-x - player-y
|
|
current-room := v0
|
|
jump draw-room-title
|
|
end
|
|
end
|
|
i := long room-deco-table
|
|
v0 := current-room
|
|
v0 <<= v0
|
|
v0 <<= v0
|
|
v0 += v2
|
|
v0 += v2
|
|
i += v0
|
|
load v1
|
|
print-text
|
|
jump dialog-pause
|
|
|
|
###########################################
|
|
#
|
|
# Rooms
|
|
#
|
|
###########################################
|
|
|
|
:const TILE_EMPTY 0x00
|
|
:const TILE_SOLID 0x08
|
|
:const TILE_EXIT_UP 0xA0
|
|
:const TILE_EXIT_RT 0xA8
|
|
:const TILE_EXIT_DN 0xB0
|
|
:const TILE_EXIT_LF 0xB8
|
|
:const TILE_NPC_1 0xC0
|
|
:const TILE_NPC_2 0xC8
|
|
:const TILE_DECO_1 0xD0
|
|
:const TILE_DECO_2 0xD8
|
|
:const TILE_START 0xE0
|
|
:const TILE_BODY 0xE8
|
|
:const TILE_ITEM 0xF0
|
|
:const TILE_QUESTION 0xF8
|
|
|
|
to-data
|
|
|
|
: player-left-0 0x38 0x7C 0x3C 0x3C 0x1E 0x3C 0x3C 0x1C 0x18 0x3C 0x3C 0x3C 0x1C 0x08 0x08
|
|
: player-left-1 0x00 0x38 0x7C 0x3C 0x3C 0x1E 0x3C 0x3C 0x1C 0x38 0x3C 0x3C 0x1E 0x24 0x24
|
|
: player-right-0 mirror-8x15 player-left-0
|
|
: player-right-1 mirror-8x15 player-left-1
|
|
|
|
: tileset # 8x8 tiles
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0x95 0x95 0x95 0xFF 0x51 0x51 0xFF 0xFF
|
|
0x00 0x7E 0x00 0x7A 0x7A 0x7E 0x00 0x00
|
|
0xD5 0x00 0xDD 0x10 0xC0 0x10 0xC0 0x00
|
|
0x55 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x56 0x00 0x06 0x00 0x06 0x00 0x06 0x00
|
|
0x00 0x44 0x50 0x14 0x42 0x54 0x3C 0x08
|
|
0xC0 0x00 0xC0 0x00 0xC0 0x00 0xD5 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x55 0x00
|
|
0x06 0x00 0x06 0x10 0x36 0x00 0x56 0x00
|
|
0xFF 0xFF 0x81 0x00 0x00 0x81 0xFF 0xDB
|
|
0xFF 0xFF 0x80 0xBF 0xA0 0xA0 0xE0 0x00
|
|
0xFF 0xFF 0x01 0xFD 0x05 0x05 0x07 0x00
|
|
0xE0 0xE0 0xE0 0xE0 0xFE 0xFE 0xFE 0x00
|
|
0x07 0x07 0x07 0x07 0x7F 0x7F 0x7F 0x00
|
|
0x7E 0x7E 0x42 0x42 0x42 0x00 0x00 0x00
|
|
0xFF 0xFF 0x00 0xFF 0x00 0x00 0x00 0x00
|
|
0xFF 0x83 0xBB 0xB9 0xB9 0x81 0xE1 0xFF
|
|
0x40 0x08 0x00 0x88 0x02 0x00 0x10 0x00
|
|
0x00 0x18 0x3C 0x7E 0x18 0x18 0x18 0x00
|
|
0x00 0x08 0x0C 0x7E 0x7E 0x0C 0x08 0x00
|
|
0x00 0x18 0x18 0x18 0x7E 0x3C 0x18 0x00
|
|
0x00 0x10 0x30 0x7E 0x7E 0x30 0x10 0x00
|
|
0x00 0x74 0x54 0x54 0x74 0x44 0x44 0x00
|
|
0x00 0x76 0x52 0x56 0x74 0x44 0x46 0x00
|
|
0x00 0x64 0x54 0x54 0x54 0x54 0x64 0x00
|
|
0x00 0x66 0x52 0x56 0x54 0x54 0x66 0x00
|
|
0x00 0x3E 0x40 0x7E 0x02 0x02 0x7C 0x00
|
|
0x00 0x7C 0x42 0x7C 0x42 0x42 0x7C 0x00
|
|
0x00 0x7E 0x08 0x08 0x08 0x08 0x7E 0x00
|
|
0x3C 0x7E 0x66 0x0E 0x1C 0x18 0x00 0x18
|
|
|
|
: map-library
|
|
0x08 0x38 0x00 0x00 0x00 0x00 0x98 0x00
|
|
0x08 0x00 0x00 0x98 0x00 0x38 0x00 0x00
|
|
0x08 0x38 0x00 0x00 0x00 0x00 0x98 0x00
|
|
0x08 0x38 0x38 0x38 0x00 0x38 0x38 0x38
|
|
0x08 0x08 0x08 0x08 0x08 0x08 0x08 0x08
|
|
0x08 0x10 0x00 0x00 0x00 0x00 0x10 0x08
|
|
0x08 0x10 0xF0 0x00 0x00 0xD0 0x10 0x08
|
|
0x08 0x10 0x00 0x00 0x00 0x00 0x10 0x08
|
|
0x08 0xC8 0x00 0x00 0x00 0x00 0x00 0x08
|
|
0x08 0x00 0x00 0x00 0x00 0x00 0x00 0x08
|
|
0x08 0x10 0x00 0x00 0x00 0x00 0x10 0x08
|
|
0x08 0x10 0xE8 0x00 0x00 0xD8 0x10 0x08
|
|
0x08 0x10 0x00 0x00 0x00 0x00 0x10 0x08
|
|
0x08 0x10 0x00 0x00 0xE0 0x00 0x10 0x08
|
|
0x08 0xC0 0x00 0x00 0x00 0x00 0x00 0x08
|
|
0x08 0x08 0x08 0x08 0x08 0xA8 0x08 0x08
|
|
|
|
: map-bathroom
|
|
0x08 0x08 0x08 0x08 0x08 0x08 0x08 0x08
|
|
0x08 0x08 0x08 0x08 0x08 0x08 0x08 0x08
|
|
0x08 0x98 0x98 0x98 0x98 0x98 0x20 0x08
|
|
0x08 0x98 0x98 0x98 0x98 0x98 0x30 0x08
|
|
0x08 0x00 0xD8 0x20 0x40 0x00 0x00 0x08
|
|
0x08 0x00 0x00 0x30 0x50 0x00 0x00 0x08
|
|
0x08 0x00 0x00 0x00 0x00 0xC0 0x00 0x08
|
|
0x08 0x08 0x00 0x00 0x00 0x00 0x00 0x08
|
|
0x08 0x58 0xF0 0x00 0x00 0x00 0x00 0x08
|
|
0x08 0x08 0x00 0x00 0x00 0xE8 0x00 0x08
|
|
0x08 0xC8 0x00 0x00 0x00 0x00 0x00 0x08
|
|
0x08 0x00 0x00 0x00 0x00 0x00 0x00 0x08
|
|
0x08 0x00 0x00 0x00 0x00 0x00 0x00 0x08
|
|
0x08 0x00 0x00 0xE0 0x00 0x00 0xD0 0x08
|
|
0x08 0x00 0x00 0x00 0x00 0x00 0x18 0x08
|
|
0x08 0x08 0x08 0xA8 0x08 0x08 0x08 0x08
|
|
|
|
: map-bedroom
|
|
0x08 0x08 0x08 0xB8 0x08 0x08 0x08 0x08
|
|
0x08 0x00 0x00 0x00 0x00 0x70 0x80 0x08
|
|
0x08 0xC0 0x00 0x00 0x00 0xF0 0x00 0x08
|
|
0x08 0x90 0x60 0xD8 0x00 0x00 0x00 0x08
|
|
0x08 0x08 0x68 0x00 0x00 0xC8 0x00 0x08
|
|
0x08 0x00 0x00 0x00 0x00 0x00 0x00 0x08
|
|
0x08 0x00 0x00 0x00 0x00 0x00 0x00 0x08
|
|
0x08 0x00 0x00 0x00 0x00 0x00 0x00 0x08
|
|
0x08 0x00 0x00 0x00 0x00 0xE0 0x00 0xB0
|
|
0x08 0x00 0x00 0x00 0x00 0x00 0x00 0x08
|
|
0x08 0x00 0xD0 0x00 0x00 0x00 0x00 0x08
|
|
0x08 0x08 0x20 0x20 0x60 0x00 0x00 0x08
|
|
0x08 0x08 0x28 0x28 0x88 0x00 0x00 0x08
|
|
0x08 0x08 0x50 0x30 0x68 0xE8 0x00 0x08
|
|
0x08 0x00 0x00 0x00 0x00 0x00 0x00 0x08
|
|
0x08 0x08 0x08 0x08 0x08 0x08 0x08 0x08
|
|
|
|
: map-drawing-room
|
|
0x08 0x08 0x08 0x08 0x08 0x08 0x08 0x08
|
|
0x08 0x00 0x70 0x80 0x00 0xE8 0x00 0x08
|
|
0x08 0xC0 0x00 0x00 0x00 0x00 0x00 0x08
|
|
0x08 0x08 0x60 0x00 0x00 0x00 0x90 0x08
|
|
0x08 0x90 0x88 0xD0 0x00 0x00 0x08 0x08
|
|
0x08 0x08 0x68 0x00 0x00 0x00 0x08 0x08
|
|
0x08 0x00 0x00 0x00 0x00 0x00 0x00 0x08
|
|
0x08 0x00 0x00 0x00 0x00 0x00 0x00 0x08
|
|
0x08 0x00 0x00 0x00 0x00 0xE0 0x00 0xB0
|
|
0x08 0x90 0x60 0x00 0x00 0x00 0x00 0x08
|
|
0x08 0x90 0x88 0xF0 0x00 0x00 0x00 0x08
|
|
0x08 0x08 0x68 0x00 0x00 0x00 0x00 0x08
|
|
0x08 0x00 0x00 0x00 0x00 0x00 0x00 0x08
|
|
0x08 0x00 0x00 0xD8 0x00 0xC8 0x00 0x08
|
|
0x08 0x00 0x08 0x90 0x60 0x78 0x80 0x08
|
|
0x08 0x08 0x08 0x08 0x08 0x08 0x08 0x08
|
|
|
|
: map-parlor
|
|
0x00 0x38 0x00 0x00 0x00 0x98 0x00 0x38
|
|
0x00 0x00 0x00 0x00 0x38 0x00 0x00 0x00
|
|
0x00 0x98 0x00 0x00 0x00 0x00 0x00 0x98
|
|
0x38 0x38 0x38 0x00 0x98 0x38 0x38 0x38
|
|
0x08 0x08 0x08 0x08 0x08 0x08 0x08 0x08
|
|
0x08 0x70 0x80 0xC0 0x00 0x00 0x00 0x08
|
|
0x08 0xD8 0x00 0x00 0x00 0x00 0xD0 0x08
|
|
0x08 0x78 0x80 0x00 0x00 0x90 0x60 0x08
|
|
0x08 0x00 0x00 0x00 0x00 0x08 0x68 0x08
|
|
0x08 0x00 0x00 0x00 0x00 0x00 0xF0 0x08
|
|
0x08 0x00 0xE8 0x00 0x00 0x00 0x00 0x08
|
|
0x08 0x00 0x00 0x00 0x00 0x00 0x00 0x08
|
|
0x08 0x00 0x00 0x00 0x00 0x00 0x00 0x08
|
|
0x08 0x00 0xE0 0x00 0x00 0xC8 0x00 0x08
|
|
0x08 0x00 0x00 0x00 0x00 0x00 0x00 0x08
|
|
0x08 0x08 0xA8 0x08 0x08 0x08 0x08 0x08
|
|
|
|
: map-dining-room
|
|
0x08 0xB8 0x08 0x08 0x08 0x08 0x08 0x08
|
|
0x08 0x00 0x00 0x00 0x00 0x70 0x80 0x08
|
|
0x08 0x00 0xE0 0x00 0x00 0x00 0xF0 0x08
|
|
0x08 0x00 0x00 0x00 0x00 0x00 0x00 0x08
|
|
0x08 0x00 0x00 0x00 0x00 0x00 0x00 0x08
|
|
0x08 0xC8 0x00 0xD0 0x00 0x00 0x00 0x08
|
|
0x08 0x00 0x70 0x70 0x70 0x80 0x00 0x08
|
|
0x08 0x00 0x58 0x08 0x08 0x60 0x00 0x08
|
|
0x08 0x00 0x08 0x08 0x58 0x68 0x00 0x08
|
|
0x08 0x00 0x78 0x78 0x78 0x80 0x00 0x08
|
|
0x08 0x00 0x00 0xC0 0x00 0x00 0x00 0x08
|
|
0x08 0xE8 0x00 0x00 0x00 0x00 0x00 0x08
|
|
0x08 0x00 0x00 0x00 0x00 0x00 0x00 0x08
|
|
0x08 0x00 0x00 0xD8 0x00 0x00 0x00 0x08
|
|
0x08 0x00 0x08 0x58 0x60 0x00 0x00 0x08
|
|
0x08 0x08 0x08 0x08 0x08 0x08 0xA8 0x08
|
|
|
|
: map-study
|
|
0x08 0x08 0x08 0x08 0x08 0x08 0x08 0x08
|
|
0x08 0x08 0x08 0x08 0x08 0x08 0x08 0x08
|
|
0x08 0x10 0x00 0x10 0x10 0x10 0x10 0x08
|
|
0x08 0x10 0xC0 0x00 0xD0 0x00 0x00 0x08
|
|
0x08 0x10 0x00 0x00 0x00 0x00 0x00 0x08
|
|
0x08 0x10 0x00 0x00 0x70 0x80 0x00 0x08
|
|
0x08 0x00 0x00 0x00 0x00 0x00 0x00 0x08
|
|
0xA0 0x00 0x00 0xE0 0x00 0x00 0x20 0x08
|
|
0x08 0xE8 0x00 0x00 0x00 0xF0 0x30 0x08
|
|
0x08 0x00 0x00 0x00 0x00 0x00 0x00 0x08
|
|
0x08 0x10 0x00 0x00 0x78 0x80 0x00 0x08
|
|
0x08 0x10 0xD8 0x00 0x00 0x00 0x00 0x08
|
|
0x08 0x10 0x00 0x00 0x00 0xC8 0x00 0x08
|
|
0x08 0x10 0x00 0x10 0x10 0x10 0x10 0x08
|
|
0x08 0x08 0x08 0x08 0x08 0x08 0x08 0x08
|
|
0x08 0x08 0x08 0x08 0x08 0x08 0x08 0x08
|
|
|
|
: map-conservatory
|
|
0x08 0x08 0x08 0x08 0xB8 0x08 0x08 0x08
|
|
0x08 0xC0 0x00 0x00 0x00 0x00 0x00 0x08
|
|
0x08 0x00 0x00 0x00 0xE0 0x00 0x00 0x08
|
|
0x88 0x00 0x38 0x18 0x00 0x38 0x18 0x08
|
|
0x88 0x00 0x38 0x18 0x00 0x00 0x00 0x08
|
|
0x88 0xD0 0x00 0x00 0x00 0x00 0x00 0x08
|
|
0x88 0x00 0x00 0x00 0x00 0x38 0x18 0x08
|
|
0x08 0x00 0x38 0x18 0x00 0xD8 0x18 0x08
|
|
0x08 0x00 0x38 0x18 0x00 0x00 0x00 0x08
|
|
0x88 0xE8 0x00 0x00 0x00 0x38 0x18 0x08
|
|
0x88 0x00 0x00 0x00 0x00 0x38 0x18 0x08
|
|
0x88 0x00 0x00 0x98 0x00 0x00 0x00 0x08
|
|
0x88 0x00 0xF0 0x18 0x00 0xC8 0x00 0x08
|
|
0x08 0x00 0x38 0x18 0x00 0x38 0x18 0x08
|
|
0x08 0x00 0x00 0x00 0x00 0x00 0x00 0x08
|
|
0x08 0x08 0x08 0x08 0x08 0x08 0x08 0x08
|
|
|
|
: map-kitchen
|
|
0x08 0x08 0x08 0x08 0xB8 0x08 0x08 0x08
|
|
0x08 0x10 0x00 0x00 0x00 0x00 0x10 0x08
|
|
0x08 0x10 0xD0 0x00 0xE0 0x00 0x10 0x08
|
|
0x08 0x08 0x60 0x00 0x00 0x00 0x00 0x08
|
|
0x08 0x08 0x88 0x00 0x00 0xE8 0x00 0x08
|
|
0x08 0x08 0x88 0x00 0x00 0x00 0x00 0x08
|
|
0x08 0x08 0x68 0x00 0x00 0x00 0x00 0x08
|
|
0x08 0x00 0xC0 0x00 0x00 0x00 0x00 0x08
|
|
0x08 0x08 0x60 0x00 0x00 0xC8 0x00 0x08
|
|
0x08 0x58 0x88 0x00 0x00 0x00 0x00 0x08
|
|
0x08 0x58 0x88 0xD8 0x00 0x00 0x00 0xB0
|
|
0x08 0x08 0x68 0x00 0x00 0x00 0x00 0x08
|
|
0x08 0x10 0x08 0x00 0x00 0x00 0x00 0x08
|
|
0x08 0x10 0x08 0x00 0x00 0x00 0x38 0x08
|
|
0x08 0x10 0x10 0x60 0x00 0xF0 0x38 0x08
|
|
0x08 0x08 0x08 0x08 0x08 0x08 0x08 0x08
|
|
|
|
: map-pantry
|
|
0x08 0x08 0x08 0x08 0x08 0x08 0x08 0x08
|
|
0x08 0x00 0x00 0xC0 0x00 0x00 0x18 0x08
|
|
0x08 0x00 0x00 0x00 0x00 0x00 0xF0 0x08
|
|
0x08 0x18 0x18 0x00 0x00 0x00 0x00 0x08
|
|
0x08 0x90 0x08 0x80 0x00 0x08 0x90 0x08
|
|
0x08 0x00 0xD0 0x00 0x00 0x00 0x00 0x08
|
|
0x08 0x00 0x00 0x00 0x00 0x00 0x00 0x08
|
|
0x08 0x00 0x00 0x00 0x00 0x00 0x00 0x08
|
|
0x08 0x08 0x80 0x00 0x00 0x08 0x08 0x08
|
|
0x08 0x00 0x00 0x00 0x00 0xC8 0x00 0x08
|
|
0xA0 0x00 0xE0 0x00 0x00 0x00 0x00 0x08
|
|
0x08 0x00 0x00 0x00 0x00 0x00 0x00 0x08
|
|
0x08 0x00 0x00 0x00 0x00 0x00 0x00 0x08
|
|
0x08 0xE8 0x00 0x08 0x80 0xD8 0x18 0x08
|
|
0x08 0x00 0x00 0x08 0x80 0x00 0x18 0x08
|
|
0x08 0x08 0x08 0x08 0x08 0x08 0x08 0x08
|
|
|
|
: map-secret
|
|
# note: no NPCs or body!
|
|
0x08 0x08 0x08 0x08 0x08 0x08 0x08 0x08
|
|
0x08 0x08 0x08 0x08 0x08 0x08 0x08 0x08
|
|
0x08 0x18 0x00 0x00 0x00 0x00 0x00 0x08
|
|
0x08 0x18 0xD0 0x00 0x00 0x00 0x00 0x08
|
|
0x08 0x98 0x00 0x00 0x00 0xE0 0x00 0xB0
|
|
0x08 0x18 0x00 0x00 0x00 0x00 0x00 0x08
|
|
0x08 0x00 0x00 0x00 0x00 0x00 0x00 0x08
|
|
0x08 0x00 0x00 0x00 0x00 0x00 0x00 0x08
|
|
0x08 0x00 0x00 0x00 0x00 0x00 0x98 0x08
|
|
0x08 0x00 0x00 0x00 0x00 0x00 0x00 0x08
|
|
0x08 0x00 0x00 0x00 0x00 0x00 0x00 0x08
|
|
0x08 0x00 0x00 0x00 0x00 0x00 0x98 0x08
|
|
0x08 0x98 0xF0 0x00 0x00 0xD8 0x18 0x08
|
|
0x08 0x98 0x98 0x00 0x98 0x18 0x18 0x08
|
|
0x08 0x08 0x08 0x08 0x08 0x08 0x08 0x08
|
|
0x08 0x08 0x08 0x08 0x08 0x08 0x08 0x08
|
|
|
|
: map-dining-room-alt
|
|
# no NPCs or special tiles except start.
|
|
0x08 0xB8 0x08 0x08 0x08 0x08 0x08 0x08
|
|
0x08 0x00 0x00 0x00 0x00 0x70 0x80 0x08
|
|
0x08 0x00 0x00 0x00 0x00 0x00 0x00 0x08
|
|
0x08 0x00 0x00 0x00 0x00 0x00 0x00 0x08
|
|
0x08 0x00 0x00 0x00 0x00 0x00 0x00 0x08
|
|
0x08 0x00 0x00 0x00 0x00 0xE0 0x00 0x08
|
|
0x08 0x00 0x70 0x70 0x70 0x80 0x00 0x08
|
|
0x08 0x00 0x08 0x08 0x08 0x60 0x00 0x08
|
|
0x08 0x00 0x08 0x08 0x08 0x68 0x00 0x08
|
|
0x08 0x00 0x78 0x78 0x78 0x80 0x00 0x08
|
|
0x08 0x00 0x00 0x00 0x00 0x00 0x00 0x08
|
|
0x08 0x00 0x00 0x00 0x00 0x00 0x00 0x08
|
|
0x08 0x00 0x00 0x00 0x00 0x00 0x00 0x08
|
|
0x08 0x00 0x00 0x00 0x00 0x00 0x00 0x08
|
|
0x08 0x00 0x08 0x58 0x60 0x00 0x00 0x08
|
|
0x08 0x08 0x08 0x08 0x08 0x08 0xA8 0x08
|
|
|
|
: room-map-table
|
|
pointer map-library
|
|
pointer map-bathroom
|
|
pointer map-bedroom
|
|
pointer map-drawing-room
|
|
pointer map-parlor
|
|
pointer map-dining-room
|
|
pointer map-study
|
|
pointer map-conservatory
|
|
pointer map-kitchen
|
|
pointer map-pantry
|
|
pointer map-secret
|
|
pointer map-dining-room-alt
|
|
|
|
: title-library 0xFE 0x24 0x18 0xFC 0x0B 0x22 0x1B 0x2B 0x1A 0x2B 0x32 0xFF
|
|
: title-bathroom 0xFE 0x21 0x18 0xFC 0x01 0x1A 0x2D 0x21 0x2B 0x28 0x28 0x26 0xFF
|
|
: title-bedroom 0xFE 0x25 0x18 0xFC 0x01 0x1E 0x1D 0x2B 0x28 0x28 0x26 0xFF
|
|
: title-drawing-room 0xFE 0x12 0x18 0xFC 0x03 0x2B 0x1A 0x30 0x22 0x27 0x20 0xF9 0x11 0x28 0x28 0x26 0xFF
|
|
: title-parlor 0xFE 0x29 0x18 0xFC 0x0F 0x1A 0x2B 0x25 0x28 0x2B 0xFF
|
|
: title-dining-room 0xFE 0x15 0x18 0xFC 0x03 0x22 0x27 0x22 0x27 0x20 0xF9 0x11 0x28 0x28 0x26 0xFF
|
|
: title-study 0xFE 0x2B 0x18 0xFC 0x12 0x2D 0x2E 0x1D 0x32 0xFF
|
|
: title-conservatory 0xFE 0x11 0x18 0xFC 0x02 0x28 0x27 0x2C 0x1E 0x2B 0x2F 0x1A 0x2D 0x28 0x2B 0x32 0xFF
|
|
: title-kitchen 0xFE 0x25 0x18 0xFC 0x0A 0x22 0x2D 0x1C 0x21 0x1E 0x27 0xFF
|
|
: title-pantry 0xFE 0x28 0x18 0xFC 0x0F 0x1A 0x27 0x2D 0x2B 0x32 0xFF
|
|
: title-secret-room 0xFE 0x14 0x18 0xFC 0x12 0x1E 0x1C 0x2B 0x1E 0x2D 0xF9 0x11 0x28 0x28 0x26 0xFF
|
|
: title-secret-passage 0xFE 0x08 0x18 0xFC 0x12 0x1E 0x1C 0x2B 0x1E 0x2D 0xF9 0x0F 0x1A 0x2C 0x2C 0x1A 0x20 0x1E 0xFF
|
|
|
|
: room-title-table
|
|
pointer title-library
|
|
pointer title-bathroom
|
|
pointer title-bedroom
|
|
pointer title-drawing-room
|
|
pointer title-parlor
|
|
pointer title-dining-room
|
|
pointer title-study
|
|
pointer title-conservatory
|
|
pointer title-kitchen
|
|
pointer title-pantry
|
|
pointer title-secret-room
|
|
pointer title-secret-passage
|
|
|
|
: special-room-exits
|
|
# -1 just dumps you to the main map
|
|
# UP, RT, DN, LF to match TILE_EXIT indices
|
|
-1 -1 -1 -1 # 0 library
|
|
-1 2 -1 -1 # 1 bathroom
|
|
-1 -1 -1 1 # 2 bedroom
|
|
-1 -1 -1 -1 # 3 drawing-room
|
|
-1 -1 -1 -1 # 4 parlor
|
|
-1 -1 -1 -1 # 5 dining-room 5
|
|
-1 -1 -1 -1 # 6 study
|
|
-1 -1 -1 -1 # 7 conservatory
|
|
-1 -1 9 -1 # 8 kitchen
|
|
8 -1 -1 -1 # 9 pantry
|
|
-1 -1 -1 -1 # 10 secret-room
|
|
|
|
: room-stash
|
|
0 0 # exit-N
|
|
0 0 # exit E
|
|
0 0 # exit S
|
|
0 0 # exit W
|
|
: room-stash-points-of-interest
|
|
0 0 # npc 1
|
|
0 0 # npc 2
|
|
0 0 # deco 1
|
|
0 0 # deco 2
|
|
: room-stash-start 0 0 # start
|
|
0 0 # body
|
|
0 0 # item
|
|
|
|
: blink-masks
|
|
: blink-npc 0x7E 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0x7E
|
|
: blink-item 0x92 0x44 0x00 0x82 0x00 0x44 0x92 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
: blink-body 0x00 0x70 0x78 0x38 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
: blink-table 0 0 15 15 -1 30 15
|
|
|
|
to-code
|
|
|
|
:macro abs-diff A B RESULT {
|
|
if A < B begin
|
|
RESULT := B
|
|
RESULT -= A
|
|
else
|
|
RESULT := A
|
|
RESULT -= B
|
|
end
|
|
}
|
|
|
|
: room-poi-find
|
|
# grab coords of the current object:
|
|
i := long room-stash-points-of-interest
|
|
i += v4
|
|
i += v4
|
|
load v1
|
|
|
|
# calculate ABS of manhattan distance to object:
|
|
prev-x := player-x
|
|
prev-y := player-y
|
|
if v4 >= 2 begin
|
|
# adjust player hitbox to the feet
|
|
# for anything but NPC positions:
|
|
prev-x += 4
|
|
prev-y += 8
|
|
end
|
|
abs-diff v0 prev-x v2
|
|
abs-diff v1 prev-y v3
|
|
v3 += v2
|
|
|
|
# ignore NPCs that aren't in the room.
|
|
i := long npc-positions
|
|
i += current-room
|
|
i += current-room
|
|
i += v4
|
|
load v2 - v2
|
|
if v4 == 0 begin
|
|
if v2 == -1 then v3 := 0xFF
|
|
end
|
|
if v4 == 1 begin
|
|
if v2 == -1 then v3 := 0xFF
|
|
end
|
|
|
|
# ignore body if it's not in this room.
|
|
if v4 == 5 begin
|
|
i := long has-body-room
|
|
load v2 - v2
|
|
if v2 != current-room then v3 := 0xFF
|
|
end
|
|
|
|
# ignore item if it's not here.
|
|
if v4 == 6 begin
|
|
i := long item-positions
|
|
i += current-room
|
|
load v2 - v2
|
|
if v2 == -1 then v3 := 0xFF
|
|
end
|
|
;
|
|
|
|
: room-poi-walk
|
|
# first pass: if objects are close enough,
|
|
# just activate them directly.
|
|
v4 := 0
|
|
loop
|
|
room-poi-find
|
|
|
|
if v3 < 10 begin
|
|
if v4 == 0 begin
|
|
i := long npc-positions
|
|
: room-npc
|
|
i += current-room
|
|
i += current-room
|
|
load v2 - v2
|
|
describe-npc
|
|
jump poi-done
|
|
end
|
|
if v4 == 1 begin
|
|
:calc npc-slot-2 { npc-positions + 1 }
|
|
i := long npc-slot-2
|
|
jump room-npc
|
|
end
|
|
if v4 == 2 begin v2 := 0 describe-deco jump poi-done end
|
|
if v4 == 3 begin v2 := 1 describe-deco jump poi-done end
|
|
if v4 == 5 begin describe-body jump poi-done end
|
|
if v4 == 6 begin
|
|
i := long item-positions
|
|
i += current-room
|
|
load v2 - v2
|
|
describe-item
|
|
end
|
|
: poi-done
|
|
if current-room == GAME_OVER then return
|
|
draw-room
|
|
ve := 0
|
|
jump draw-player
|
|
end
|
|
|
|
v4 += 1
|
|
if v4 == 4 then v4 += 1 # skip over start position
|
|
if v4 != 7 then
|
|
again
|
|
|
|
# second pass: if objects are near-ish,
|
|
# blink them.
|
|
v4 := 0
|
|
loop
|
|
room-poi-find
|
|
|
|
# if the object is further, blink it.
|
|
if v3 < 40 begin
|
|
i := long blink-table
|
|
i += v4
|
|
load v2 - v2
|
|
i := long blink-masks
|
|
i += v2
|
|
v2 := 6
|
|
loop
|
|
sprite v0 v1 15
|
|
wait 5
|
|
v2 += -1
|
|
if v2 != 0 then
|
|
again
|
|
end
|
|
|
|
v4 += 1
|
|
if v4 == 4 then v4 += 1 # skip over start position
|
|
if v4 != 7 then
|
|
again
|
|
;
|
|
|
|
: room-load indirect room-write ;
|
|
|
|
: room-draw-npc
|
|
i += current-room
|
|
i += current-room
|
|
load v4 - v4
|
|
if v4 == -1 then return # no npc here
|
|
i := long npc-sprites
|
|
v4 <<= v4 # * 2
|
|
v4 <<= v4 # * 4
|
|
v4 <<= v4 # * 8
|
|
v4 <<= v4 # * 16
|
|
i += v4
|
|
sprite v1 v2 15
|
|
;
|
|
|
|
: room-unpack
|
|
if v0 == TILE_BODY begin
|
|
i := long has-body-room
|
|
load v4 - v4
|
|
if v4 == current-room begin
|
|
i := long body-sprite
|
|
sprite v1 v2 0
|
|
end
|
|
end
|
|
if v0 == TILE_NPC_1 begin
|
|
i := long npc-positions
|
|
room-draw-npc
|
|
end
|
|
if v0 == TILE_NPC_2 begin
|
|
:calc second-slot { npc-positions + 1 }
|
|
i := long second-slot
|
|
room-draw-npc
|
|
end
|
|
|
|
# in the general case, all we want to do
|
|
# is store the x/y coords of the item
|
|
# in a convenient lookup table for later:
|
|
i := long room-stash
|
|
:calc special-tile-offset { 0xFF & - TILE_EXIT_UP }
|
|
v0 += special-tile-offset
|
|
v0 >>= v0 # v0 had stride 8...
|
|
v0 >>= v0 # v0 now has stride 2
|
|
i += v0
|
|
save v1 - v2
|
|
v0 := TILE_EMPTY
|
|
;
|
|
|
|
: draw-player
|
|
# pass frame offset { 0, 15 } in ve...
|
|
i := long player-left-0
|
|
if player-face == 1 then i := long player-right-0
|
|
i += ve
|
|
sprite player-x player-y 15
|
|
;
|
|
|
|
: draw-room-title
|
|
dialog-fill-screen
|
|
print-from-table current-room room-title-table
|
|
wait 60
|
|
clear
|
|
;
|
|
|
|
: draw-room
|
|
i := long room-map-table
|
|
i += current-room
|
|
i += current-room
|
|
load v1
|
|
i := room-write
|
|
save v1
|
|
|
|
v1 := 0 # x
|
|
v2 := 0 # y
|
|
v3 := 0 # index
|
|
loop
|
|
room-load
|
|
i += v3
|
|
load v0
|
|
|
|
if v0 >= TILE_NPC_1 then room-unpack
|
|
i := long tileset
|
|
i += v0
|
|
sprite v1 v2 8
|
|
|
|
v3 += 1
|
|
v2 += 8
|
|
if v2 == 64 then v1 += 8
|
|
if v2 == 64 then v2 := 0
|
|
if v1 != 128 then
|
|
again
|
|
;
|
|
|
|
: room
|
|
draw-room-title
|
|
draw-room
|
|
|
|
# the murderer is stalking the player!
|
|
i := long interstitial-progress
|
|
load v0
|
|
if v0 == 2 begin
|
|
i := long npc-positions
|
|
i += current-room
|
|
i += current-room
|
|
load v1
|
|
i := long npc-murderer
|
|
load v2 - v2
|
|
# kill the player if they're alone
|
|
# with a stalker murderer...
|
|
if v2 == v0 begin
|
|
if v1 == -1 then murder-player
|
|
if current-room == GAME_OVER then return
|
|
end
|
|
if v2 == v1 begin
|
|
if v1 == -1 then murder-player
|
|
if current-room == GAME_OVER then return
|
|
end
|
|
end
|
|
|
|
# walk/explore mode:
|
|
player-face := 0
|
|
i := long room-stash-start
|
|
load player-x - player-y
|
|
ve := 0
|
|
draw-player
|
|
|
|
loop
|
|
ve := 0
|
|
draw-player
|
|
prev-x := player-x
|
|
prev-y := player-y
|
|
vf := OCTO_KEY_D if vf key begin player-x += 4 player-face := 1 end
|
|
vf := OCTO_KEY_A if vf key begin player-x += -4 player-face := 0 end
|
|
vf := OCTO_KEY_S if vf key then player-y += 4
|
|
vf := OCTO_KEY_W if vf key then player-y += -4
|
|
|
|
room-load
|
|
# index at feet is:
|
|
# (py+8)/8 + (px/8)*8
|
|
v0 := player-y
|
|
v0 += 8
|
|
v0 >>= v0
|
|
v0 >>= v0
|
|
v0 >>= v0
|
|
i += v0
|
|
v0 := player-x
|
|
vf := 0b11111000
|
|
v0 &= vf
|
|
i += v0
|
|
load v0
|
|
|
|
if v0 == 0x88 then v0 := TILE_SOLID # (conservatory north windows)
|
|
if v0 == TILE_SOLID begin
|
|
player-x := prev-x
|
|
player-y := prev-y
|
|
end
|
|
|
|
while v0 != TILE_EXIT_UP
|
|
while v0 != TILE_EXIT_DN
|
|
while v0 != TILE_EXIT_LF
|
|
while v0 != TILE_EXIT_RT
|
|
|
|
if player-x != prev-x begin
|
|
# step animation:
|
|
player-x := prev-x
|
|
if player-face == 1 then player-x += 2
|
|
if player-face == 0 then player-x += -2
|
|
ve := 15
|
|
draw-player
|
|
wait 2
|
|
draw-player
|
|
if player-face == 1 then player-x += 2
|
|
if player-face == 0 then player-x += -2
|
|
end
|
|
|
|
ve := 0
|
|
draw-player
|
|
|
|
vf := OCTO_KEY_E if vf key then room-poi-walk
|
|
if current-room == GAME_OVER then return
|
|
|
|
sync
|
|
again
|
|
clear
|
|
|
|
i := long special-room-exits
|
|
i += current-room # stride 4...
|
|
i += current-room
|
|
i += current-room
|
|
i += current-room
|
|
:calc exit-offset { 0xFF & - TILE_EXIT_UP }
|
|
v0 += exit-offset
|
|
v0 >>= v0 # stride 8 -> stride 4
|
|
v0 >>= v0 # stride 4 -> stride 2
|
|
v0 >>= v0 # stride 2 -> stride 1
|
|
i += v0
|
|
load v0
|
|
if v0 != -1 begin
|
|
current-room := v0
|
|
jump room
|
|
end
|
|
|
|
# a brief pause before returning
|
|
# to the main map helps debounce
|
|
# held down keypresses:
|
|
wait 10
|
|
;
|
|
|
|
###########################################
|
|
#
|
|
# Interstitials
|
|
#
|
|
###########################################
|
|
|
|
to-data
|
|
|
|
: growing-suspicious
|
|
0xFE 0x00 0x11 0xFD 0x13 0x21 0x1E 0xF9 0x26 0x2E 0x2B 0x1D 0x1E 0x2B 0x1E 0x2B
|
|
0xF9 0x22 0x2C 0xFE 0x00 0x1B 0x20 0x2B 0x28 0x30 0x22 0x27 0x20 0xF9 0x2C 0x2E
|
|
0x2C 0x29 0x22 0x1C 0x22 0x28 0x2E 0x2C 0xFE 0x00 0x25 0x28 0x1F 0xF9 0x2D 0x21
|
|
0x1E 0xF9 0x22 0x27 0x2F 0x1E 0x2C 0x2D 0x22 0x20 0x1A 0x2D 0x22 0x28 0x27 0x3E
|
|
0xFF
|
|
: begun-stalking
|
|
0xFE 0x06 0x17 0xFD 0x13 0x21 0x1E 0xF9 0x26 0x2E 0x2B 0x1D 0x1E 0x2B 0x1E 0x2B
|
|
0xF9 0x21 0x1A 0x2C 0xFE 0x06 0x21 0x1B 0x1E 0x20 0x2E 0x27 0xF9 0x2C 0x2D 0x1A
|
|
0x25 0x24 0x22 0x27 0x20 0xF9 0x32 0x28 0x2E 0x3F 0xFF
|
|
: footsteps-in-distance
|
|
0xFE 0x07 0x10 0x18 0x28 0x2E 0xF9 0x21 0x1E 0x1A 0x2B 0xF9 0x1F 0x28 0x28 0x2D
|
|
0x2C 0x2D 0x1E 0x29 0x2C 0xFE 0x07 0x1A 0x2C 0x28 0x26 0x1E 0x30 0x21 0x1E 0x2B
|
|
0x1E 0xF9 0x22 0x27 0xF9 0x2D 0x21 0x1E 0xFE 0x07 0x24 0x1D 0x22 0x2C 0x2D 0x1A
|
|
0x27 0x1C 0x1E 0x3E 0x3E 0x3E 0xFF
|
|
|
|
: notice-0 # Thunder rumbles in the distance.
|
|
0xFE 0x06 0x17 0x13 0x21 0x2E 0x27 0x1D 0x1E 0x2B 0xF9 0x2B 0x2E 0x26 0x1B 0x25
|
|
0x1E 0x2C 0xF9 0x22 0x27 0xFE 0x06 0x21 0x2D 0x21 0x1E 0xF9 0x1D 0x22 0x2C 0x2D
|
|
0x1A 0x27 0x1C 0x1E 0x3E 0x3E 0x3E 0xFF
|
|
: notice-1 # You feel as though you're being watched.
|
|
0xFE 0x14 0x13 0x18 0x28 0x2E 0xF9 0x1F 0x1E 0x1E 0x25 0xF9 0x1A 0x2C 0xFE 0x14
|
|
0x1D 0x2D 0x21 0x28 0x2E 0x20 0x21 0xF9 0x32 0x28 0x2E 0x42 0x2B 0x1E 0xFE 0x14
|
|
0x27 0x1B 0x1E 0x22 0x27 0x20 0xF9 0x30 0x1A 0x2D 0x1C 0x21 0x1E 0x1D 0x3E 0xFF
|
|
: notice-2 # You feel a sudden chill.
|
|
0xFE 0x17 0x16 0x18 0x28 0x2E 0xF9 0x1F 0x1E 0x1E 0x25 0xF9 0x1A 0xFE 0x17 0x20
|
|
0x2C 0x2E 0x1D 0x1D 0x1E 0x27 0xF9 0x1C 0x21 0x22 0x25 0x25 0x3E 0xFF
|
|
: notice-3 # The door slams loudly behind you.
|
|
0xFE 0x08 0x16 0x13 0x21 0x1E 0xF9 0x1D 0x28 0x28 0x2B 0xF9 0x2C 0x25 0x1A 0x26
|
|
0x2C 0xFE 0x08 0x20 0x25 0x28 0x2E 0x1D 0x25 0x32 0xF9 0x1B 0x1E 0x21 0x22 0x27
|
|
0x1D 0xF9 0x32 0x28 0x2E 0x3E 0xFF
|
|
: notice-4 # The lights overhead flicker momentarily.
|
|
0xFE 0x03 0x18 0x13 0x21 0x1E 0xF9 0x25 0x22 0x20 0x21 0x2D 0x2C 0xF9 0x28 0x2F
|
|
0x1E 0x2B 0x21 0x1E 0x1A 0x1D 0xFE 0x03 0x22 0x1F 0x25 0x22 0x1C 0x24 0x1E 0x2B
|
|
0xF9 0x26 0x28 0x26 0x1E 0x27 0x2D 0x1A 0x2B 0x22 0x25 0x32 0x3E 0xFF
|
|
: notice-5 # You shakily wipe a bead of sweat from your brow. This case is getting to you.
|
|
0xFE 0x03 0x0D 0x18 0x28 0x2E 0xF9 0x2C 0x21 0x1A 0x24 0x22 0x25 0x32 0xF9 0x30
|
|
0x22 0x29 0x1E 0xF9 0x1A 0xFE 0x03 0x17 0x1B 0x1E 0x1A 0x1D 0xF9 0x28 0x1F 0xF9
|
|
0x2C 0x30 0x1E 0x1A 0x2D 0xF9 0x1F 0x2B 0x28 0x26 0xFE 0x03 0x21 0x32 0x28 0x2E
|
|
0x2B 0xF9 0x1B 0x2B 0x28 0x30 0x3E 0xF9 0x13 0x21 0x22 0x2C 0xF9 0x1C 0x1A 0x2C
|
|
0x1E 0xFE 0x03 0x2B 0x22 0x2C 0xF9 0x20 0x1E 0x2D 0x2D 0x22 0x27 0x20 0xF9 0x2D
|
|
0x28 0xF9 0x32 0x28 0x2E 0x3E 0xFF
|
|
: notice-6 # Lightning cracks, flooding the nearby windows with light.
|
|
0xFE 0x05 0x11 0x0B 0x22 0x20 0x21 0x2D 0x27 0x22 0x27 0x20 0xF9 0x1C 0x2B 0x1A
|
|
0x1C 0x24 0x2C 0x41 0xFE 0x05 0x1B 0x1F 0x25 0x28 0x28 0x1D 0x22 0x27 0x20 0xF9
|
|
0x2D 0x21 0x1E 0xF9 0x27 0x1E 0x1A 0x2B 0x1B 0x32 0xFE 0x05 0x25 0x30 0x22 0x27
|
|
0x1D 0x28 0x30 0x2C 0xF9 0x30 0x22 0x2D 0x21 0xF9 0x25 0x22 0x20 0x21 0x2D 0x3E
|
|
0xFF
|
|
: notice-7 # The floorboards creak loudly under your feet.
|
|
0xFE 0x09 0x13 0x13 0x21 0x1E 0xF9 0x1F 0x25 0x28 0x28 0x2B 0x1B 0x28 0x1A 0x2B
|
|
0x1D 0x2C 0xFE 0x09 0x1D 0x1C 0x2B 0x1E 0x1A 0x24 0xF9 0x25 0x28 0x2E 0x1D 0x25
|
|
0x32 0xF9 0x2E 0x27 0x1D 0x1E 0x2B 0xFE 0x09 0x27 0x32 0x28 0x2E 0x2B 0xF9 0x1F
|
|
0x1E 0x1E 0x2D 0x3E 0xFF
|
|
|
|
: interstitial-notice-table
|
|
pointer notice-0
|
|
pointer notice-1
|
|
pointer notice-2
|
|
pointer notice-3
|
|
pointer notice-4
|
|
pointer notice-5
|
|
pointer notice-6
|
|
pointer notice-7
|
|
|
|
: interstitial-progress 0x00
|
|
|
|
to-code
|
|
|
|
: move-npcs
|
|
v1 := 9 random-upto-v1 # source room in v0.
|
|
v1 := random 1 # source slot in v1.
|
|
|
|
# make sure we have a source NPC.
|
|
i := long npc-positions
|
|
i += v0
|
|
i += v0
|
|
i += v1
|
|
load v2 - v2
|
|
if v2 == -1 then return
|
|
|
|
# find an adjacent, distinct room.
|
|
i := long room-nav
|
|
i += v0
|
|
i += v0
|
|
i += v0
|
|
i += v0
|
|
v2 := random 0b11
|
|
i += v2
|
|
load v2 - v2
|
|
if v2 == v0 then return # dest room in v2.
|
|
|
|
# make sure we have an empty destination.
|
|
v3 := 0
|
|
i := long npc-positions
|
|
i += v2
|
|
i += v2
|
|
load v4 - v4
|
|
if v4 != -1 then v3 := 1
|
|
i += v3
|
|
load v4 - v4
|
|
if v4 != -1 then return
|
|
# dest slot is in v3.
|
|
|
|
# remove NPC from source slot
|
|
i := long npc-positions
|
|
i += v0
|
|
i += v0
|
|
i += v1
|
|
load v4 - v4 # npc id is in v4.
|
|
vf := -1
|
|
save vf - vf
|
|
|
|
# place NPC in destination slot
|
|
i := long npc-positions
|
|
i += v2
|
|
i += v2
|
|
i += v3
|
|
save v4 - v4
|
|
|
|
dialog-fill-screen
|
|
print footsteps-in-distance
|
|
jump dialog-pause
|
|
|
|
: describe-ambience
|
|
i := long interstitial-progress
|
|
load v0
|
|
if v0 == 0 begin
|
|
if suspicion-level > 40 begin
|
|
i := long interstitial-progress
|
|
v0 := 1
|
|
save v0
|
|
dialog-fill-screen
|
|
print growing-suspicious
|
|
jump dialog-pause
|
|
end
|
|
end
|
|
if v0 == 1 begin
|
|
if suspicion-level > 100 begin
|
|
i := long interstitial-progress
|
|
v0 := 2
|
|
save v0
|
|
dialog-fill-screen
|
|
print begun-stalking
|
|
jump dialog-pause
|
|
end
|
|
end
|
|
|
|
move-npcs
|
|
|
|
v0 := random 0xFF
|
|
if v0 > 128 then return
|
|
v2 := random 0b111
|
|
dialog-fill-screen
|
|
print-from-table v2 interstitial-notice-table
|
|
jump dialog-pause
|
|
|
|
###########################################
|
|
#
|
|
# Fencing
|
|
#
|
|
###########################################
|
|
|
|
to-data
|
|
|
|
: fencing-background
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0x33 0x18 0x33 0x18 0x33 0x18 0x33 0x18 0x33 0x18
|
|
0x33 0x18 0x33 0x38 0x33 0x38 0x33 0x30 0x27 0x30 0x27 0x30 0x66 0x60 0x6E 0x60
|
|
0x4C 0xC0 0x4C 0xC0 0x99 0x80 0x1B 0x00 0x36 0x00 0x6C 0x00 0xF8 0x00 0xE0 0x00
|
|
0xE0 0x00 0x70 0x00 0x70 0x00 0x70 0x00 0x78 0x00 0x78 0x00 0x78 0x00 0x5C 0x00
|
|
0x5C 0x00 0x5C 0x00 0x5C 0x00 0x5E 0x00 0x5E 0x00 0x5A 0x00 0x5B 0x00 0x5B 0x00
|
|
0x5B 0x00 0x5B 0x00 0x5B 0x00 0x5B 0x00 0x5B 0x00 0x5B 0x00 0x5B 0x00 0x5B 0x00
|
|
0x5B 0x00 0x5B 0x00 0x5B 0x00 0x5B 0x00 0x5B 0x00 0x5B 0x00 0x5B 0x00 0xFF 0xFF
|
|
0xFF 0xFF 0xF2 0x72 0xE1 0x21 0xE0 0x20 0xF0 0x70 0xF8 0xF8 0xFD 0xFD 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0xFF 0xFF
|
|
0xFF 0xFF 0x72 0x7F 0x21 0x3F 0x20 0x3F 0x70 0x7F 0xF8 0xFF 0xFD 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0x02 0x10 0x0A 0x14 0x2A 0x94 0x2A 0x94 0x08 0x84
|
|
0x72 0x25 0x1F 0x9B 0x07 0xFF 0x01 0xFF 0x02 0x2F 0x00 0x22 0x00 0x02 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0x08 0x40 0x28 0x50 0x29 0x54 0x29 0x54 0x21 0x10
|
|
0xA4 0x4E 0xD9 0xF8 0xFF 0xE0 0xFF 0x80 0xF4 0x40 0x44 0x00 0x40 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0xFF 0xFF
|
|
0xFF 0xFF 0xFE 0x4E 0xFC 0x24 0xFC 0x04 0xFE 0x0E 0xFF 0x1F 0xFF 0xBF 0xFF 0xFF
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0x18 0xCC 0x18 0xCC 0x18 0xCC 0x18 0xCC 0x18 0xCC
|
|
0x18 0xCC 0x1C 0xCC 0x1C 0xCC 0x0C 0xCC 0x0C 0xE4 0x0C 0xE4 0x06 0x66 0x06 0x76
|
|
0x03 0x32 0x03 0x32 0x01 0x99 0x00 0xD8 0x00 0x6C 0x00 0x36 0x00 0x1F 0x00 0x07
|
|
0x00 0x07 0x00 0x0E 0x00 0x0E 0x00 0x0E 0x00 0x1E 0x00 0x1E 0x00 0x1E 0x00 0x3A
|
|
0x00 0x3A 0x00 0x3A 0x00 0x3A 0x00 0x7A 0x00 0x7A 0x00 0x5A 0x00 0xDA 0x00 0xDA
|
|
0x00 0xDA 0x00 0xDA 0x00 0xDA 0x00 0xDA 0x00 0xDA 0x00 0xDA 0x00 0xDA 0x00 0xDA
|
|
0x00 0xDA 0x00 0xDA 0x00 0xDA 0x00 0xDA 0x00 0xDA 0x00 0xDA 0x00 0xDA 0xFF 0xFF
|
|
0xFF 0xFF 0x4E 0x4F 0x24 0x27 0x04 0x07 0x0E 0x0F 0x1F 0x1F 0xBF 0xBF 0xFF 0xFF
|
|
|
|
: fencing-heart
|
|
0xC8 0xF8 0x70 0x20
|
|
|
|
: player-sword
|
|
0xFF 0xF8 0xC0 0x08 0xFF 0xF0 0x80 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
: enemy-sword
|
|
0x1F 0xFF 0x10 0x03 0x0F 0xFF 0x00 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
|
|
: player-top-neutral
|
|
0x03 0xE0 0x07 0xF0 0x07 0xE8 0x07 0xA0 0x07 0xA0 0x0F 0xE0 0x3F 0xE0 0x1D 0xC0
|
|
0x01 0x80 0x0F 0xE0 0x13 0xF0 0x13 0xF8 0x27 0xEE 0x27 0xFF 0x11 0x03 0x08 0xFC
|
|
: player-top-stagger
|
|
0x07 0xD0 0x4F 0xE0 0x0F 0xC0 0x2E 0x40 0x1F 0xC0 0x7F 0xC0 0x3F 0xC0 0x97 0x80
|
|
0x03 0x00 0x1F 0xF0 0x27 0xFC 0x27 0xFF 0x4F 0xC7 0x4F 0xF8 0x22 0x06 0x11 0xF8
|
|
: player-top-attack
|
|
0x03 0xE0 0x07 0xF8 0x07 0xE0 0x07 0xA0 0x0F 0xA0 0x3F 0xE0 0x1F 0xE0 0x0D 0xC0
|
|
0x01 0x83 0x03 0xFD 0x04 0x03 0x1C 0x1C 0x3F 0xE0 0x7F 0xE0 0x77 0xE0 0x37 0xE0
|
|
: player-top-block
|
|
0x03 0xE0 0x07 0xF8 0x07 0xE2 0x07 0xA2 0x0F 0xA5 0x3F 0xE5 0x1F 0xE5 0x0D 0xC5
|
|
0x01 0x85 0x03 0xCA 0x04 0x6E 0x04 0x72 0x06 0x36 0x07 0x04 0x03 0xC8 0x07 0xF0
|
|
: player-bottom-neutral
|
|
0x0F 0xF0 0x0F 0xF0 0x1F 0xF8 0x1F 0xF8 0x3F 0xF8 0x3F 0xFC 0x7F 0xFC 0x1F 0xF8
|
|
0x0E 0x70 0x0E 0x70 0x0C 0x60 0x18 0x60 0x18 0xC0 0x18 0xC0 0x1E 0xF0 0x00 0x00
|
|
: player-bottom-step
|
|
0x0F 0xF0 0x0F 0xF8 0x0F 0xFC 0x1F 0xFC 0x7F 0xFC 0x3F 0xFE 0x1F 0xFE 0x0F 0xFC
|
|
0x0E 0x38 0x1C 0x18 0x38 0x1C 0x70 0x1C 0xE0 0x0C 0x60 0x0C 0x30 0x0F 0x00 0x00
|
|
: player-bottom-stagger
|
|
0x0F 0xF0 0x0F 0xF0 0x1F 0xF8 0x3F 0xF8 0x3F 0xF8 0xFF 0xF8 0x7F 0xF8 0x1F 0xF0
|
|
0x0E 0x70 0x0E 0x78 0x07 0x38 0x03 0x19 0x03 0xFF 0x03 0xCE 0x01 0x84 0x00 0x00
|
|
|
|
: enemy-0-top-neutral
|
|
0x07 0xC0 0x0F 0xE0 0x1F 0xE0 0x06 0xF0 0x05 0xF0 0x07 0xF0 0x07 0xF0 0x03 0xA0
|
|
0x01 0x80 0x07 0xF0 0x0F 0xC8 0x1F 0xC8 0x77 0xE4 0xFF 0xE4 0xC0 0x88 0x3F 0x10
|
|
: enemy-0-top-tell
|
|
0x07 0xC0 0x0F 0xE0 0x1F 0xE0 0x04 0xF0 0x05 0xF0 0x07 0xF0 0x07 0xF0 0x03 0xA0
|
|
0x01 0x80 0x07 0xF0 0x0F 0xC8 0x1F 0xE4 0x37 0xF2 0x7F 0xF2 0x20 0x44 0x1F 0x98
|
|
: enemy-0-top-stagger
|
|
0x03 0xE4 0x07 0xF0 0x0F 0xF8 0x02 0x7A 0x02 0x78 0x03 0xF8 0x03 0xF8 0x01 0xD2
|
|
0x00 0xC0 0x0F 0xF8 0x3F 0xE4 0xFF 0xE4 0xE3 0xF2 0x1F 0xF2 0x60 0x44 0x1F 0x8C
|
|
: enemy-0-top-attack
|
|
0x07 0xC0 0x0F 0xE0 0x1F 0xF0 0x06 0xF0 0x05 0xF0 0x07 0xF0 0x07 0xF0 0x03 0xA0
|
|
0xC1 0x80 0xBF 0xC0 0xC0 0x20 0x38 0x38 0x07 0xFC 0x07 0xFE 0x07 0xEE 0x07 0xEC
|
|
: enemy-0-top-block
|
|
0x07 0xC0 0x0F 0xE0 0x5F 0xF0 0x45 0xF0 0xA5 0xF0 0xA7 0xF0 0xA7 0xF0 0xA3 0xA0
|
|
0xA1 0x80 0x53 0xC0 0x76 0x20 0x4E 0x20 0x6C 0x60 0x20 0xE0 0x13 0xC0 0x0F 0xE0
|
|
: enemy-0-bottom-neutral
|
|
0x07 0xE0 0x0F 0xE0 0x0F 0xF0 0x0F 0xF0 0x0F 0xF0 0x1F 0xF0 0x1F 0xF8 0x1F 0xF8
|
|
0x1F 0xF8 0x1F 0xFC 0x1F 0xFC 0x06 0x18 0x03 0x18 0x03 0x18 0x0F 0x78 0x00 0x00
|
|
: enemy-0-bottom-step
|
|
0x07 0xE0 0x07 0xE0 0x0F 0xF0 0x0F 0xF0 0x1F 0xF0 0x1F 0xF8 0x1F 0xFC 0x1F 0xFE
|
|
0x1F 0xFC 0x1F 0xFC 0x3F 0x9C 0x38 0x0E 0x30 0x07 0x30 0x06 0xF0 0x0C 0x00 0x00
|
|
: enemy-0-bottom-stagger
|
|
0x01 0xF8 0x03 0xF8 0x03 0xF8 0x03 0xF8 0x07 0xF8 0x0F 0xF8 0x1F 0xF8 0x7F 0xF8
|
|
0x3F 0xF8 0x1F 0xF0 0x1F 0xF0 0x98 0xF0 0xFF 0xC0 0x73 0xC0 0x21 0x80 0x00 0x00
|
|
|
|
: enemy-1-top-neutral
|
|
0x07 0xD0 0x0F 0xF0 0x0F 0xF0 0x06 0xF0 0x05 0xF0 0x0F 0xF0 0x0F 0xF0 0x07 0xE0
|
|
0x01 0xC0 0x07 0xF0 0x0F 0xC8 0x1F 0xC8 0x77 0xE4 0xFF 0xE4 0xC0 0x88 0x3F 0x10
|
|
: enemy-1-top-tell
|
|
0x07 0xD0 0x0F 0xF0 0x0F 0xF0 0x04 0xF0 0x05 0xF0 0x0F 0xF0 0x0F 0xF0 0x07 0xE0
|
|
0x01 0xC0 0x07 0xF0 0x0F 0xC8 0x1F 0xE4 0x37 0xF2 0x7F 0xF2 0x20 0x44 0x1F 0x98
|
|
: enemy-1-top-stagger
|
|
0x03 0xEA 0x07 0xF8 0x07 0xF8 0x02 0x78 0x02 0x7B 0x07 0xF8 0x07 0xF8 0x03 0xF2
|
|
0x00 0xE0 0x0F 0xF8 0x3F 0xE4 0xFF 0xE4 0xE3 0xF2 0x1F 0xF2 0x60 0x44 0x1F 0x8C
|
|
: enemy-1-top-attack
|
|
0x07 0xD0 0x0F 0xF0 0x0F 0xF0 0x06 0xF0 0x05 0xF0 0x0F 0xF0 0x0F 0xF0 0x07 0xE0
|
|
0xF1 0xC0 0x8F 0xC0 0xC0 0x20 0x20 0x38 0x1F 0xFC 0x07 0xFE 0x07 0xFE 0x07 0xF4
|
|
: enemy-1-top-block
|
|
0x07 0xD0 0x0F 0xF0 0x4F 0xF0 0x45 0xF0 0xA5 0xF0 0xAF 0xF0 0xAF 0xF0 0xA7 0xE0
|
|
0xA1 0xC0 0x53 0xC0 0x76 0x20 0x4C 0x20 0x68 0x20 0x20 0x60 0x11 0xC0 0x0F 0xE0
|
|
: enemy-1-bottom-neutral
|
|
0x0F 0xF0 0x0F 0xF0 0x0F 0xF0 0x0F 0xF0 0x0F 0xF0 0x0F 0xF8 0x0F 0xF8 0x0F 0x78
|
|
0x0F 0x78 0x0F 0x78 0x07 0x38 0x07 0x9C 0x03 0x9C 0x03 0x9C 0x0F 0xFC 0x00 0x00
|
|
: enemy-1-bottom-step
|
|
0x07 0xF0 0x07 0xF0 0x0F 0xF0 0x0F 0xE0 0x1F 0xE0 0x1F 0xF0 0x1F 0xF0 0x1E 0xF8
|
|
0x1E 0x7C 0x1C 0x3E 0x3C 0x1E 0x3C 0x0F 0x38 0x07 0x38 0x06 0xF8 0x0C 0x00 0x00
|
|
: enemy-1-bottom-stagger
|
|
0x03 0xFC 0x03 0xFC 0x03 0xFC 0x03 0xFC 0x07 0xFC 0x07 0xFC 0x07 0xFC 0x0F 0xFC
|
|
0x0F 0x78 0x1F 0x78 0x1C 0xF0 0x9C 0xE0 0xFF 0xE0 0x73 0xC0 0x21 0x80 0x00 0x00
|
|
|
|
: enemy-2-top-neutral
|
|
0x07 0xC0 0x07 0xE0 0x07 0xE0 0x1F 0xE0 0x05 0xE0 0x07 0xE0 0x07 0xC0 0x03 0x80
|
|
0x01 0x80 0x07 0xF0 0x0F 0xC8 0x1F 0xC8 0x77 0xE4 0xFF 0xE4 0xC0 0x88 0x3F 0x10
|
|
: enemy-2-top-tell
|
|
0x07 0xC0 0x07 0xE0 0x07 0xE0 0x1F 0xE0 0x05 0xE0 0x07 0xE0 0x07 0xC0 0x03 0x80
|
|
0x01 0x80 0x07 0xF0 0x0F 0xC8 0x1F 0xE4 0x37 0xF2 0x7F 0xF2 0x20 0x44 0x1F 0x98
|
|
: enemy-2-top-stagger
|
|
0x03 0xE4 0x03 0xF0 0x03 0xF0 0x0F 0xF6 0x02 0xF0 0x03 0xF0 0x03 0xE4 0x01 0xC0
|
|
0x00 0xC0 0x0F 0xF8 0x3F 0xE4 0xFF 0xE4 0xE3 0xF2 0x1F 0xF2 0x60 0x44 0x1F 0x8C
|
|
: enemy-2-top-attack
|
|
0x07 0xC0 0x07 0xE0 0x07 0xE0 0x1F 0xE0 0x07 0xE0 0x07 0xE0 0x07 0xC0 0x03 0x80
|
|
0xC1 0x80 0xBF 0xC0 0xC0 0x20 0x38 0x38 0x07 0xFC 0x07 0xFE 0x07 0xEE 0x07 0xEC
|
|
: enemy-2-top-block
|
|
0x07 0xC0 0x07 0xE0 0x47 0xE0 0x5F 0xE0 0xA5 0xE0 0xA7 0xE0 0xA7 0xC0 0xA3 0x80
|
|
0xA1 0x80 0x53 0xC0 0x76 0x20 0x4E 0x20 0x6C 0x60 0x20 0xE0 0x13 0xC0 0x0F 0xE0
|
|
: enemy-2-bottom-neutral
|
|
0x0F 0xF0 0x0F 0xF0 0x0F 0xF0 0x0F 0xF0 0x0F 0xF0 0x0F 0xF0 0x0E 0xF0 0x0E 0x70
|
|
0x0E 0x70 0x0E 0x70 0x06 0x30 0x06 0x18 0x03 0x18 0x03 0x18 0x0F 0x78 0x00 0x00
|
|
: enemy-2-bottom-step
|
|
0x07 0xE0 0x07 0xE0 0x0F 0xE0 0x0F 0xE0 0x1F 0xF0 0x1F 0xF0 0x1E 0xF0 0x1C 0xF0
|
|
0x1C 0x78 0x18 0x38 0x38 0x1C 0x38 0x0E 0x30 0x07 0x30 0x06 0xF0 0x0C 0x00 0x00
|
|
: enemy-2-bottom-stagger
|
|
0x03 0xFC 0x03 0xFC 0x03 0xF8 0x03 0xF8 0x07 0xF8 0x07 0xF8 0x07 0x78 0x0F 0x78
|
|
0x0E 0x70 0x1E 0x70 0x1C 0xE0 0x98 0xC0 0xFF 0xC0 0x73 0xC0 0x21 0x80 0x00 0x00
|
|
|
|
: enemy-3-top-neutral
|
|
0x07 0xC0 0x07 0xE0 0x0F 0xE0 0x1C 0xE0 0x1F 0xE0 0x07 0xE0 0x07 0xC0 0x03 0xE0
|
|
0x01 0xE0 0x07 0xF0 0x0F 0xC8 0x1F 0xC8 0x77 0xE4 0xFF 0xE4 0xC0 0x88 0x3F 0x10
|
|
: enemy-3-top-tell
|
|
0x07 0xC0 0x07 0xE0 0x0F 0xE0 0x1C 0xE0 0x1F 0xE0 0x07 0xE0 0x07 0xC0 0x03 0xE0
|
|
0x01 0xE0 0x07 0xF0 0x0F 0xC8 0x1F 0xE4 0x37 0xF2 0x7F 0xF2 0x20 0x44 0x1F 0x98
|
|
: enemy-3-top-stagger
|
|
0x03 0xE4 0x03 0xF0 0x07 0xF0 0x0E 0x76 0x0F 0xF0 0x03 0xF0 0x03 0xE4 0x01 0xF0
|
|
0x00 0xF0 0x0F 0xF8 0x3F 0xE4 0xFF 0xE4 0xE3 0xF2 0x1F 0xF2 0x60 0x44 0x1F 0x8C
|
|
: enemy-3-top-attack
|
|
0x07 0xC0 0x07 0xE0 0x0F 0xE0 0x1C 0xE0 0x1F 0xE0 0x07 0xE0 0x07 0xC0 0x03 0xE0
|
|
0xC1 0xE0 0xBF 0xE0 0xC0 0x20 0x38 0x38 0x07 0xFC 0x07 0xFE 0x07 0xEE 0x07 0xEC
|
|
: enemy-3-top-block
|
|
0x07 0xC0 0x07 0xE0 0x4F 0xE0 0x5C 0xE0 0xBF 0xE0 0xA7 0xE0 0xA7 0xC0 0xA3 0xE0
|
|
0xA1 0xE0 0x53 0xE0 0x76 0x20 0x4E 0x20 0x6C 0x60 0x20 0xE0 0x13 0xC0 0x0F 0xE0
|
|
: enemy-3-bottom-neutral
|
|
0x0F 0xF0 0x0F 0xF0 0x0F 0xF0 0x0F 0xF0 0x0F 0xF0 0x0F 0xF0 0x0E 0xF0 0x0E 0x70
|
|
0x0E 0x70 0x0E 0x70 0x06 0x30 0x06 0x18 0x03 0x18 0x03 0x18 0x0F 0x78 0x00 0x00
|
|
: enemy-3-bottom-step
|
|
0x07 0xE0 0x07 0xE0 0x0F 0xE0 0x0F 0xE0 0x1F 0xF0 0x1F 0xF0 0x1E 0xF0 0x1C 0xF0
|
|
0x1C 0x78 0x18 0x38 0x38 0x1C 0x38 0x0E 0x30 0x07 0x30 0x06 0xF0 0x0C 0x00 0x00
|
|
: enemy-3-bottom-stagger
|
|
0x03 0xFC 0x03 0xFC 0x03 0xF8 0x03 0xF8 0x07 0xF8 0x07 0xF8 0x07 0x78 0x0F 0x78
|
|
0x0E 0x70 0x1E 0x70 0x1C 0xE0 0x98 0xC0 0xFF 0xC0 0x73 0xC0 0x21 0x80 0x00 0x00
|
|
|
|
: enemy-4-top-neutral
|
|
0x07 0xC0 0x0F 0xE0 0x0F 0xE0 0x0E 0xF0 0x0D 0xF0 0x1F 0xF8 0x1F 0xF8 0x1B 0xF8
|
|
0x01 0x80 0x07 0xF0 0x0F 0xC8 0x1F 0xC8 0x77 0xE4 0xFF 0xE4 0xC0 0x88 0x3F 0x10
|
|
: enemy-4-top-tell
|
|
0x07 0xC0 0x0F 0xE0 0x0F 0xE0 0x0C 0xF0 0x0D 0xF0 0x1F 0xF8 0x1F 0xF8 0x1B 0xF8
|
|
0x01 0x80 0x07 0xF0 0x0F 0xC8 0x1F 0xE4 0x37 0xF2 0x7F 0xF2 0x20 0x44 0x1F 0x98
|
|
: enemy-4-top-stagger
|
|
0x03 0xE4 0x07 0xF0 0x07 0xF0 0x06 0x79 0x06 0x78 0x0F 0xFC 0x0F 0xFD 0x0D 0xFC
|
|
0x00 0xC0 0x0F 0xF8 0x3F 0xE4 0xFF 0xE4 0xE3 0xF2 0x1F 0xF2 0x60 0x44 0x1F 0x8C
|
|
: enemy-4-top-attack
|
|
0x07 0xC0 0x0F 0xE0 0x0F 0xE0 0x0E 0xF0 0x0D 0xF0 0x1F 0xF8 0x1F 0xF8 0x1B 0xF8
|
|
0xC1 0x80 0xBF 0xC0 0xC0 0x20 0x38 0x38 0x07 0xFC 0x07 0xFE 0x07 0xEE 0x07 0xEC
|
|
: enemy-4-top-block
|
|
0x07 0xC0 0x0F 0xE0 0x4F 0xE0 0x4E 0xF0 0xAD 0xF0 0xBF 0xF8 0xBF 0xF8 0xBB 0xF8
|
|
0xA1 0x80 0x53 0xC0 0x76 0x20 0x4E 0x20 0x6C 0x60 0x20 0xE0 0x13 0xC0 0x0F 0xE0
|
|
: enemy-4-bottom-neutral
|
|
0x07 0xF0 0x07 0xF0 0x0F 0xF0 0x0F 0xF0 0x0F 0xF0 0x0F 0xF0 0x0F 0xF0 0x0F 0xF8
|
|
0x0F 0xF8 0x0F 0xF8 0x0F 0xF8 0x0F 0xFC 0x0F 0xFE 0x03 0x18 0x0F 0x78 0x00 0x00
|
|
: enemy-4-bottom-step
|
|
0x07 0xE0 0x07 0xE0 0x0F 0xE0 0x0F 0xE0 0x1F 0xF0 0x1F 0xF0 0x1F 0xF8 0x1F 0xF8
|
|
0x1F 0xFC 0x1F 0xFE 0x3F 0xFE 0x3F 0xFE 0x3F 0xFF 0x30 0x06 0xF0 0x0C 0x00 0x00
|
|
: enemy-4-bottom-stagger
|
|
0x03 0xFC 0x03 0xFC 0x03 0xF8 0x03 0xF8 0x07 0xF8 0x07 0xF8 0x0F 0xF8 0x0F 0xF8
|
|
0x1F 0xF8 0x7F 0xF8 0x3F 0xF8 0x98 0xF0 0xFF 0xD0 0x73 0xC0 0x21 0x80 0x00 0x00
|
|
|
|
: enemy-5-top-neutral
|
|
0x1F 0xC0 0x0F 0xE0 0x0F 0xE0 0x06 0xE0 0x0D 0xE0 0x0F 0xE0 0x07 0xE0 0x07 0xC0
|
|
0x01 0xC0 0x07 0xF0 0x0F 0xC8 0x1F 0xC8 0x77 0xE4 0xFF 0xE4 0xC0 0x88 0x3F 0x10
|
|
: enemy-5-top-tell
|
|
0x1F 0xC0 0x0F 0xE0 0x0F 0xE0 0x04 0xE0 0x0D 0xE0 0x0F 0xE0 0x07 0xE0 0x07 0xC0
|
|
0x01 0xC0 0x07 0xF0 0x0F 0xC8 0x1F 0xE4 0x37 0xF2 0x7F 0xF2 0x20 0x44 0x1F 0x98
|
|
: enemy-5-top-stagger
|
|
0x0F 0xE4 0x07 0xF0 0x07 0xF0 0x02 0x70 0x06 0x76 0x07 0xF0 0x03 0xF0 0x03 0xE4
|
|
0x00 0xE0 0x0F 0xF8 0x3F 0xE4 0xFF 0xE4 0xE3 0xF2 0x1F 0xF2 0x60 0x44 0x1F 0x8C
|
|
: enemy-5-top-attack
|
|
0x1F 0xC0 0x0F 0xE0 0x07 0xE0 0x06 0xE0 0x0D 0xE0 0x0F 0xE0 0x07 0xE0 0x07 0xC0
|
|
0xF1 0xC0 0x8F 0xC0 0xC0 0x20 0x20 0x38 0x1F 0xFC 0x07 0xFE 0x07 0xFE 0x07 0xF4
|
|
: enemy-5-top-block
|
|
0x1F 0xC0 0x0F 0xE0 0x4F 0xE0 0x45 0xE0 0xAD 0xE0 0xAF 0xE0 0xA7 0xE0 0xA7 0xC0
|
|
0xA1 0xC0 0x53 0xC0 0x76 0x20 0x4C 0x20 0x68 0x20 0x20 0x60 0x11 0xC0 0x0F 0xE0
|
|
: enemy-5-bottom-neutral
|
|
0x0F 0xF0 0x0F 0xF0 0x0F 0xF0 0x0F 0xF0 0x0F 0xF0 0x0F 0xF8 0x0F 0xF8 0x0F 0x78
|
|
0x0F 0x78 0x0F 0x78 0x07 0x38 0x07 0x9C 0x03 0x9C 0x03 0x9C 0x0F 0xFC 0x00 0x00
|
|
: enemy-5-bottom-step
|
|
0x07 0xF0 0x07 0xF0 0x0F 0xF0 0x0F 0xE0 0x1F 0xE0 0x1F 0xF0 0x1F 0xF0 0x1E 0xF8
|
|
0x1E 0x7C 0x1C 0x3E 0x3C 0x1E 0x3C 0x0F 0x38 0x07 0x38 0x06 0xF8 0x0C 0x00 0x00
|
|
: enemy-5-bottom-stagger
|
|
0x03 0xFC 0x03 0xFC 0x03 0xFC 0x03 0xFC 0x07 0xFC 0x07 0xFC 0x07 0xFC 0x0F 0xFC
|
|
0x0F 0x78 0x1F 0x78 0x1C 0xF0 0x9C 0xE0 0xFF 0xE0 0x73 0xC0 0x21 0x80 0x00 0x00
|
|
|
|
: enemy-6-top-neutral
|
|
0x07 0xC0 0x0F 0xE0 0x0F 0xE0 0x06 0xF0 0x05 0xF0 0x07 0xF0 0x07 0xF0 0x03 0xF0
|
|
0x01 0x80 0x07 0xF0 0x0F 0xC8 0x1F 0xC8 0x77 0xE4 0xFF 0xE4 0xC0 0x88 0x3F 0x10
|
|
: enemy-6-top-tell
|
|
0x07 0xC0 0x0F 0xE0 0x0F 0xE0 0x04 0xF0 0x05 0xF0 0x07 0xF0 0x07 0xF0 0x03 0xF0
|
|
0x01 0x80 0x07 0xF0 0x0F 0xC8 0x1F 0xE4 0x37 0xF2 0x7F 0xF2 0x20 0x44 0x1F 0x98
|
|
: enemy-6-top-stagger
|
|
0x03 0xE2 0x07 0xF0 0x07 0xF8 0x02 0x7B 0x02 0x78 0x03 0xF8 0x03 0xFA 0x01 0xF8
|
|
0x00 0xC0 0x0F 0xF8 0x3F 0xE4 0xFF 0xE4 0xE3 0xF2 0x1F 0xF2 0x60 0x44 0x1F 0x8C
|
|
: enemy-6-top-attack
|
|
0x07 0xC0 0x0F 0xE0 0x0F 0xE0 0x06 0xF0 0x05 0xF0 0x07 0xF0 0x07 0xF0 0x03 0xF0
|
|
0xC1 0x80 0xBF 0xC0 0xC0 0x20 0x38 0x38 0x07 0xFC 0x07 0xFE 0x07 0xEE 0x07 0xEC
|
|
: enemy-6-top-block
|
|
0x07 0xC0 0x0F 0xE0 0x47 0xE0 0x45 0xF0 0xA5 0xF0 0xA7 0xF0 0xA7 0xF0 0xA3 0xF0
|
|
0xA1 0x80 0x53 0xC0 0x76 0x20 0x4E 0x20 0x6C 0x60 0x20 0xE0 0x13 0xC0 0x0F 0xE0
|
|
: enemy-6-bottom-neutral
|
|
0x0F 0xF0 0x0F 0xF0 0x0F 0xF8 0x1F 0xF8 0x1F 0xFC 0x0F 0xF0 0x0E 0x70 0x06 0x70
|
|
0x06 0x70 0x06 0x30 0x02 0x10 0x02 0x18 0x03 0x18 0x03 0x18 0x0F 0x78 0x00 0x00
|
|
: enemy-6-bottom-step
|
|
0x0F 0xE0 0x1F 0xF0 0x1F 0xF0 0x3F 0xF0 0x3F 0xF8 0x0F 0xE0 0x1C 0xE0 0x1C 0x70
|
|
0x18 0x38 0x18 0x18 0x30 0x0C 0x30 0x06 0x30 0x07 0x30 0x06 0xF0 0x0C 0x00 0x00
|
|
: enemy-6-bottom-stagger
|
|
0x07 0xFC 0x1F 0xFC 0x3F 0xF8 0x0F 0xF8 0x03 0xF8 0x07 0xF8 0x07 0x70 0x06 0x30
|
|
0x0E 0x30 0x0C 0x60 0x18 0x60 0x90 0xC0 0xFF 0xC0 0x73 0xC0 0x21 0x80 0x00 0x00
|
|
|
|
: enemy-7-top-neutral
|
|
0x03 0xC0 0x07 0xE0 0x07 0xE0 0x06 0xE0 0x0D 0xE0 0x0F 0xE0 0x07 0xE0 0x03 0xE0
|
|
0x07 0xF0 0x0F 0x88 0x1F 0x84 0x3F 0xC4 0x77 0xE2 0xFF 0xE2 0xC0 0x84 0x3F 0x08
|
|
: enemy-7-top-tell
|
|
0x03 0xC0 0x07 0xE0 0x07 0xE0 0x04 0xE0 0x0D 0xE0 0x0F 0xE0 0x07 0xE0 0x03 0xE0
|
|
0x03 0xF8 0x07 0xC4 0x0F 0xC2 0x1F 0xE2 0x3F 0xF1 0x7F 0xE1 0x20 0x42 0x1F 0x8C
|
|
: enemy-7-top-stagger
|
|
0x01 0xE4 0x03 0xF0 0x03 0xF0 0x06 0x76 0x06 0x70 0x03 0xF0 0x03 0xF4 0x01 0xF0
|
|
0x01 0xF8 0x0F 0xC4 0x3F 0xC4 0xFF 0xC4 0xE3 0xE2 0x1F 0xE2 0x60 0x44 0x1F 0x8C
|
|
: enemy-7-top-attack
|
|
0x03 0xC0 0x07 0xE0 0x07 0xE0 0x06 0xE0 0x0D 0xE0 0x0F 0xE0 0x07 0xE0 0x03 0xE0
|
|
0xC1 0xF0 0xBF 0xF0 0x80 0x38 0x40 0x3C 0x38 0x3E 0x07 0xFF 0x07 0xFF 0x07 0xEE
|
|
: enemy-7-top-block
|
|
0x03 0xC0 0x07 0xE0 0x47 0xE0 0x45 0xE0 0xAD 0xE0 0xAF 0xE0 0xA7 0xE0 0xA3 0xE0
|
|
0xA1 0xE0 0x53 0x30 0x76 0x10 0x4E 0x10 0x64 0x30 0x20 0x60 0x10 0xE0 0x0F 0xE0
|
|
: enemy-7-bottom-neutral
|
|
0x0F 0xF0 0x0F 0xF8 0x0F 0xF8 0x0F 0xF8 0x0F 0xF8 0x0F 0xF8 0x0F 0xF8 0x0F 0x7C
|
|
0x0F 0x7C 0x0F 0xFC 0x07 0xBC 0x07 0x9E 0x03 0xDE 0x03 0xDE 0x0F 0xFE 0x00 0x00
|
|
: enemy-7-bottom-step
|
|
0x07 0xF0 0x07 0xF0 0x0F 0xF0 0x0F 0xF8 0x1F 0xF8 0x1F 0xF8 0x1F 0xF8 0x1F 0xFC
|
|
0x1E 0x7C 0x1E 0x3E 0x3C 0x1F 0x3C 0x0F 0x3C 0x07 0x3C 0x06 0xFC 0x0C 0x00 0x00
|
|
: enemy-7-bottom-stagger
|
|
0x03 0xFE 0x03 0xFE 0x03 0xFE 0x03 0xFE 0x07 0xFE 0x07 0xFC 0x07 0xFC 0x0F 0xFC
|
|
0x0F 0x78 0x1F 0x78 0x1E 0xF0 0xBC 0xF0 0xFF 0xF0 0x73 0xE0 0x21 0xC0 0x00 0x00
|
|
|
|
to-code
|
|
|
|
:const MODE_NEUTRAL 0
|
|
:const MODE_WALK_RT 1
|
|
:const MODE_WALK_LF 2
|
|
:const MODE_BLOCK 3
|
|
:const MODE_TELL 4
|
|
:const MODE_ATTACK 5
|
|
:const MODE_STAGGER 6
|
|
|
|
#note: can't touch vc as it contains suspicion level. everything else is fair game.
|
|
:alias player-health vb # 20, 12, 4 (-8 per step)
|
|
:alias enemy-health va # 103, 111, 119 (+8 per step)
|
|
:alias player-fence-x v9
|
|
:alias enemy-fence-x v8
|
|
:alias player-mode v7
|
|
:alias player-timer v6
|
|
:alias enemy-mode v5
|
|
:alias enemy-timer v4
|
|
|
|
: draw-player-and-enemy
|
|
# top halves
|
|
v0 := 24
|
|
i := long player-top-neutral
|
|
if player-mode == MODE_ATTACK then i := long player-top-attack
|
|
if player-mode == MODE_STAGGER then i := long player-top-stagger
|
|
if player-mode == MODE_BLOCK then i := long player-top-block
|
|
sprite player-fence-x v0 0
|
|
if player-mode == MODE_ATTACK begin
|
|
v1 := 31
|
|
v2 := player-fence-x
|
|
v2 += 16
|
|
i := long player-sword
|
|
sprite v2 v1 0
|
|
end
|
|
|
|
indirect enemy-top-neutral-slot
|
|
if enemy-mode == MODE_ATTACK then indirect enemy-top-attack-slot
|
|
if enemy-mode == MODE_STAGGER then indirect enemy-top-stagger-slot
|
|
if enemy-mode == MODE_TELL then indirect enemy-top-tell-slot
|
|
if enemy-mode == MODE_BLOCK then indirect enemy-top-block-slot
|
|
sprite enemy-fence-x v0 0
|
|
if enemy-mode == MODE_ATTACK begin
|
|
v1 := 32
|
|
v2 := enemy-fence-x
|
|
v2 += -16
|
|
i := long enemy-sword
|
|
sprite v2 v1 0
|
|
end
|
|
|
|
# bottom halves
|
|
v0 += 16
|
|
i := long player-bottom-neutral
|
|
vf := 0
|
|
if player-mode == MODE_WALK_LF then vf := 1
|
|
if player-mode == MODE_WALK_RT then vf := 1
|
|
vf &= player-timer
|
|
if vf != 0 then i := long player-bottom-step
|
|
if player-mode == MODE_STAGGER then i := long player-bottom-stagger
|
|
sprite player-fence-x v0 0
|
|
indirect enemy-bottom-neutral-slot
|
|
vf := 0
|
|
if enemy-mode == MODE_WALK_LF then vf := 1
|
|
if enemy-mode == MODE_WALK_RT then vf := 1
|
|
vf &= enemy-timer
|
|
if vf != 0 then indirect enemy-bottom-step-slot
|
|
if enemy-mode == MODE_STAGGER then indirect enemy-bottom-stagger-slot
|
|
sprite enemy-fence-x v0 0
|
|
;
|
|
|
|
to-data
|
|
|
|
: fencing-enemy-0 # { target-pointer, patch-ptr }
|
|
pointer enemy-top-neutral-slot pointer enemy-0-top-neutral
|
|
pointer enemy-top-tell-slot pointer enemy-0-top-tell
|
|
pointer enemy-top-stagger-slot pointer enemy-0-top-stagger
|
|
pointer enemy-top-attack-slot pointer enemy-0-top-attack
|
|
pointer enemy-top-block-slot pointer enemy-0-top-block
|
|
pointer enemy-bottom-neutral-slot pointer enemy-0-bottom-neutral
|
|
pointer enemy-bottom-step-slot pointer enemy-0-bottom-step
|
|
pointer enemy-bottom-stagger-slot pointer enemy-0-bottom-stagger
|
|
: fencing-enemy-1
|
|
pointer enemy-top-neutral-slot pointer enemy-1-top-neutral
|
|
pointer enemy-top-tell-slot pointer enemy-1-top-tell
|
|
pointer enemy-top-stagger-slot pointer enemy-1-top-stagger
|
|
pointer enemy-top-attack-slot pointer enemy-1-top-attack
|
|
pointer enemy-top-block-slot pointer enemy-1-top-block
|
|
pointer enemy-bottom-neutral-slot pointer enemy-1-bottom-neutral
|
|
pointer enemy-bottom-step-slot pointer enemy-1-bottom-step
|
|
pointer enemy-bottom-stagger-slot pointer enemy-1-bottom-stagger
|
|
: fencing-enemy-2
|
|
pointer enemy-top-neutral-slot pointer enemy-2-top-neutral
|
|
pointer enemy-top-tell-slot pointer enemy-2-top-tell
|
|
pointer enemy-top-stagger-slot pointer enemy-2-top-stagger
|
|
pointer enemy-top-attack-slot pointer enemy-2-top-attack
|
|
pointer enemy-top-block-slot pointer enemy-2-top-block
|
|
pointer enemy-bottom-neutral-slot pointer enemy-2-bottom-neutral
|
|
pointer enemy-bottom-step-slot pointer enemy-2-bottom-step
|
|
pointer enemy-bottom-stagger-slot pointer enemy-2-bottom-stagger
|
|
: fencing-enemy-3
|
|
pointer enemy-top-neutral-slot pointer enemy-3-top-neutral
|
|
pointer enemy-top-tell-slot pointer enemy-3-top-tell
|
|
pointer enemy-top-stagger-slot pointer enemy-3-top-stagger
|
|
pointer enemy-top-attack-slot pointer enemy-3-top-attack
|
|
pointer enemy-top-block-slot pointer enemy-3-top-block
|
|
pointer enemy-bottom-neutral-slot pointer enemy-3-bottom-neutral
|
|
pointer enemy-bottom-step-slot pointer enemy-3-bottom-step
|
|
pointer enemy-bottom-stagger-slot pointer enemy-3-bottom-stagger
|
|
: fencing-enemy-4
|
|
pointer enemy-top-neutral-slot pointer enemy-4-top-neutral
|
|
pointer enemy-top-tell-slot pointer enemy-4-top-tell
|
|
pointer enemy-top-stagger-slot pointer enemy-4-top-stagger
|
|
pointer enemy-top-attack-slot pointer enemy-4-top-attack
|
|
pointer enemy-top-block-slot pointer enemy-4-top-block
|
|
pointer enemy-bottom-neutral-slot pointer enemy-4-bottom-neutral
|
|
pointer enemy-bottom-step-slot pointer enemy-4-bottom-step
|
|
pointer enemy-bottom-stagger-slot pointer enemy-4-bottom-stagger
|
|
: fencing-enemy-5
|
|
pointer enemy-top-neutral-slot pointer enemy-5-top-neutral
|
|
pointer enemy-top-tell-slot pointer enemy-5-top-tell
|
|
pointer enemy-top-stagger-slot pointer enemy-5-top-stagger
|
|
pointer enemy-top-attack-slot pointer enemy-5-top-attack
|
|
pointer enemy-top-block-slot pointer enemy-5-top-block
|
|
pointer enemy-bottom-neutral-slot pointer enemy-5-bottom-neutral
|
|
pointer enemy-bottom-step-slot pointer enemy-5-bottom-step
|
|
pointer enemy-bottom-stagger-slot pointer enemy-5-bottom-stagger
|
|
: fencing-enemy-6
|
|
pointer enemy-top-neutral-slot pointer enemy-6-top-neutral
|
|
pointer enemy-top-tell-slot pointer enemy-6-top-tell
|
|
pointer enemy-top-stagger-slot pointer enemy-6-top-stagger
|
|
pointer enemy-top-attack-slot pointer enemy-6-top-attack
|
|
pointer enemy-top-block-slot pointer enemy-6-top-block
|
|
pointer enemy-bottom-neutral-slot pointer enemy-6-bottom-neutral
|
|
pointer enemy-bottom-step-slot pointer enemy-6-bottom-step
|
|
pointer enemy-bottom-stagger-slot pointer enemy-6-bottom-stagger
|
|
: fencing-enemy-7
|
|
pointer enemy-top-neutral-slot pointer enemy-7-top-neutral
|
|
pointer enemy-top-tell-slot pointer enemy-7-top-tell
|
|
pointer enemy-top-stagger-slot pointer enemy-7-top-stagger
|
|
pointer enemy-top-attack-slot pointer enemy-7-top-attack
|
|
pointer enemy-top-block-slot pointer enemy-7-top-block
|
|
pointer enemy-bottom-neutral-slot pointer enemy-7-bottom-neutral
|
|
pointer enemy-bottom-step-slot pointer enemy-7-bottom-step
|
|
pointer enemy-bottom-stagger-slot pointer enemy-7-bottom-stagger
|
|
|
|
: fencing-enemy-table
|
|
pointer fencing-enemy-0
|
|
pointer fencing-enemy-1
|
|
pointer fencing-enemy-2
|
|
pointer fencing-enemy-3
|
|
pointer fencing-enemy-4
|
|
pointer fencing-enemy-5
|
|
pointer fencing-enemy-6
|
|
pointer fencing-enemy-7
|
|
|
|
: engarde
|
|
0xFE 0x1C 0x19 0xFC 0x04 0x27 0xF9 0x06 0x1A 0x2B 0x1D 0x1E 0x3F 0xFF
|
|
|
|
: fight-start-1 # The fiend grabs a sword from the wall. They intend to go down fighting!
|
|
0xFE 0x03 0x08 0x13 0x21 0x1E 0xF9 0x1F 0x22 0x1E 0x27 0x1D 0xF9 0x20 0x2B 0x1A
|
|
0x1B 0x2C 0xF9 0x1A 0xF9 0xF9 0xFE 0x03 0x12 0x2C 0x30 0x28 0x2B 0x1D 0xF9 0x1F
|
|
0x2B 0x28 0x26 0xF9 0x2D 0x21 0x1E 0xF9 0x30 0x1A 0x25 0x25 0x3E 0xF9 0xF9 0xFE
|
|
0x03 0x26 0x13 0x21 0x1E 0x32 0xF9 0x22 0x27 0x2D 0x1E 0x27 0x1D 0xF9 0x2D 0x28
|
|
0xF9 0x20 0x28 0xF9 0xF9 0xFE 0x03 0x30 0x1D 0x28 0x30 0x27 0xF9 0x1F 0x22 0x20
|
|
0x21 0x2D 0x22 0x27 0x20 0x3F 0xFF
|
|
: fight-start-2 # I pray those fencing lessons won't have gone to waste...
|
|
0xFE 0x01 0x11 0x08 0xF9 0x29 0x2B 0x1A 0x32 0xF9 0x2D 0x21 0x28 0x2C 0x1E 0xF9
|
|
0x1F 0x1E 0x27 0x1C 0x22 0x27 0x20 0xFE 0x01 0x1B 0x25 0x1E 0x2C 0x2C 0x28 0x27
|
|
0x2C 0xF9 0x30 0x28 0x27 0x42 0x2D 0xF9 0x21 0x1A 0x2F 0x1E 0xFE 0x01 0x25 0x20
|
|
0x28 0x27 0x1E 0xF9 0x2D 0x28 0xF9 0x30 0x1A 0x2C 0x2D 0x1E 0x3E 0x3E 0x3E 0xFF
|
|
: dispatched # With a few deft blows, the villain is soundly trounced.
|
|
0xFE 0x03 0x11 0x16 0x22 0x2D 0x21 0xF9 0x1A 0xF9 0x1F 0x1E 0x30 0xF9 0x1D 0x1E
|
|
0x1F 0x2D 0xFE 0x03 0x1B 0x1B 0x25 0x28 0x30 0x2C 0x41 0xF9 0x2D 0x21 0x1E 0xF9
|
|
0x2F 0x22 0x25 0x25 0x1A 0x22 0x27 0xFE 0x03 0x25 0x22 0x2C 0xF9 0x2C 0x28 0x2E
|
|
0x27 0x1D 0x25 0x32 0xF9 0x2D 0x2B 0x28 0x2E 0x27 0x1C 0x1E 0x1D 0x3E 0xFF
|
|
: failed-fight-1 # Blast, the villain got the best of me and made their escape!
|
|
0xFE 0x25 0x07 0xFC 0x01 0x25 0x1A 0x2C 0x2D 0x3F 0xF9 0xFE 0x05 0x1B 0xFC 0x13
|
|
0x21 0x1E 0xF9 0x2F 0x22 0x25 0x25 0x1A 0x22 0x27 0xF9 0x20 0x28 0x2D 0xF9 0x2D
|
|
0x21 0x1E 0xF9 0xFE 0x05 0x25 0x1B 0x1E 0x2C 0x2D 0xF9 0x28 0x1F 0xF9 0x26 0x1E
|
|
0xF9 0x1A 0x27 0x1D 0xF9 0x26 0x1A 0x1D 0x1E 0xF9 0xFE 0x05 0x2F 0x2D 0x21 0x1E
|
|
0x22 0x2B 0xF9 0x1E 0x2C 0x1C 0x1A 0x29 0x1E 0x3F 0xFF
|
|
: failed-fight-2 # Jolly good showing, anyway. I can hear the hounds calling for them already...
|
|
0xFE 0x05 0x05 0x09 0x28 0x25 0x25 0x32 0xF9 0x20 0x28 0x28 0x1D 0xF9 0x2C 0x21
|
|
0x28 0x30 0x22 0x27 0x20 0x41 0xF9 0xFE 0x05 0x0F 0x1A 0x27 0x32 0x30 0x1A 0x32
|
|
0x3E 0xF9 0x08 0xF9 0x1C 0x1A 0x27 0xF9 0x21 0x1E 0x1A 0x2B 0xF9 0xFE 0x05 0x19
|
|
0x2D 0x21 0x1E 0xF9 0x21 0x28 0x2E 0x27 0x1D 0x2C 0xF9 0x1C 0x1A 0x25 0x25 0x22
|
|
0x27 0x20 0xF9 0xFE 0x05 0x23 0x1F 0x28 0x2B 0xF9 0x2D 0x21 0x1E 0x26 0xF9 0x1A
|
|
0x25 0x2B 0x1E 0x1A 0x1D 0x32 0x3E 0x3E 0x3E 0xF9 0xFE 0x24 0x31 0x13 0x07 0x04
|
|
0xF9 0x04 0x0D 0x03 0xFF
|
|
|
|
: fencing-registers
|
|
20 103
|
|
: fencing-registers-round
|
|
32 80 0 0 0 0
|
|
|
|
: fencing-ai # 8 entries { mode, timer }
|
|
:byte MODE_WALK_LF 10
|
|
:byte MODE_WALK_LF 10
|
|
:byte MODE_WALK_LF 10
|
|
:byte MODE_WALK_LF 10
|
|
:byte MODE_WALK_RT 6
|
|
:byte MODE_WALK_RT 6
|
|
:byte MODE_BLOCK 4
|
|
:byte MODE_BLOCK 4
|
|
:byte MODE_BLOCK 4
|
|
|
|
to-code
|
|
|
|
: fencing-minigame
|
|
clear
|
|
print fight-start-1
|
|
dialog-pause
|
|
print fight-start-2
|
|
dialog-pause
|
|
|
|
# rewrite all the enemy graphics based
|
|
# on who is currently the villain...
|
|
i := long npc-murderer
|
|
load v0
|
|
i := long fencing-enemy-table
|
|
i += v0
|
|
i += v0
|
|
load v1
|
|
i := fencing-graphics-rewrite
|
|
save v1
|
|
v4 := 0
|
|
loop
|
|
indirect fencing-graphics-rewrite
|
|
i += v4
|
|
i += v4
|
|
i += v4
|
|
i += v4
|
|
load v3
|
|
i := fencing-graphics-dest
|
|
save v0 - v1
|
|
indirect fencing-graphics-dest
|
|
save v2 - v3
|
|
v4 += 1
|
|
if v4 != 8 then
|
|
again
|
|
|
|
i := long fencing-registers
|
|
load vb - v4
|
|
i := long fencing-background
|
|
full-screen-blit
|
|
print engarde
|
|
wait 60
|
|
print engarde
|
|
|
|
draw-player-and-enemy
|
|
loop
|
|
draw-player-and-enemy
|
|
|
|
# player controls and state machine
|
|
if player-mode == MODE_NEUTRAL begin
|
|
vf := OCTO_KEY_A
|
|
if vf key begin
|
|
player-mode := MODE_WALK_LF
|
|
player-timer := 3
|
|
end
|
|
vf := OCTO_KEY_D
|
|
if vf key begin
|
|
player-mode := MODE_WALK_RT
|
|
player-timer := 3
|
|
end
|
|
vf := OCTO_KEY_W
|
|
if vf key begin
|
|
player-mode := MODE_BLOCK
|
|
player-timer := 10
|
|
end
|
|
vf := OCTO_KEY_E
|
|
if vf key begin
|
|
player-mode := MODE_ATTACK
|
|
player-timer := 6
|
|
# did the player hit the enemy?
|
|
if enemy-mode != MODE_BLOCK begin
|
|
v0 := enemy-fence-x
|
|
v0 -= player-fence-x
|
|
if v0 < 24 begin
|
|
enemy-mode := MODE_STAGGER
|
|
enemy-timer := 30
|
|
player-timer := 31
|
|
end
|
|
end
|
|
end
|
|
end
|
|
if player-fence-x > 0 begin
|
|
if player-mode == MODE_WALK_LF then player-fence-x += -1
|
|
end
|
|
if player-fence-x < 112 begin
|
|
if player-mode == MODE_WALK_RT then player-fence-x += 1
|
|
end
|
|
if player-mode != MODE_NEUTRAL begin
|
|
player-timer += -1
|
|
if player-timer == 0 begin
|
|
if player-mode == MODE_STAGGER begin
|
|
# done staggering, subtract health.
|
|
i := long fencing-heart
|
|
v0 := 58
|
|
sprite player-health v0 4
|
|
player-health += -8
|
|
if player-health == -4 then jump fencing-lose
|
|
i := long fencing-registers-round
|
|
load player-fence-x - enemy-timer
|
|
else
|
|
player-mode := MODE_NEUTRAL
|
|
end
|
|
end
|
|
end
|
|
|
|
# enemy AI
|
|
if enemy-mode == MODE_NEUTRAL begin
|
|
v0 := enemy-fence-x
|
|
v0 -= player-fence-x
|
|
if v0 < 26 begin
|
|
# if player is close, attack!
|
|
enemy-mode := MODE_TELL
|
|
enemy-timer := 4
|
|
else
|
|
# otherwise, pick randomly
|
|
i := long fencing-ai
|
|
v0 := random 0b1110
|
|
i += v0
|
|
load enemy-mode - enemy-timer
|
|
end
|
|
else
|
|
enemy-timer += -1
|
|
if enemy-timer == 0 begin
|
|
if enemy-mode == MODE_STAGGER begin
|
|
# done staggering, subtract health.
|
|
i := long fencing-heart
|
|
v0 := 58
|
|
sprite enemy-health v0 4
|
|
enemy-health += 8
|
|
if enemy-health == 127 then jump fencing-win
|
|
i := long fencing-registers-round
|
|
load player-fence-x - enemy-timer
|
|
end
|
|
if enemy-mode == MODE_TELL begin
|
|
enemy-mode := MODE_ATTACK
|
|
enemy-timer := 6
|
|
# did the enemy hit the player?
|
|
if player-mode != MODE_BLOCK begin
|
|
v0 := enemy-fence-x
|
|
v0 -= player-fence-x
|
|
if v0 < 24 begin
|
|
player-mode := MODE_STAGGER
|
|
player-timer := 30
|
|
enemy-timer := 31
|
|
end
|
|
end
|
|
else
|
|
enemy-mode := MODE_NEUTRAL
|
|
end
|
|
end
|
|
end
|
|
if enemy-fence-x > 0 begin
|
|
if enemy-mode == MODE_WALK_LF then enemy-fence-x += -1
|
|
end
|
|
if enemy-fence-x < 112 begin
|
|
if enemy-mode == MODE_WALK_RT then enemy-fence-x += 1
|
|
end
|
|
|
|
draw-player-and-enemy
|
|
wait 3
|
|
again
|
|
|
|
: fencing-win
|
|
clear
|
|
print dispatched
|
|
dialog-pause
|
|
print good-end-2
|
|
dialog-pause
|
|
print good-end-3
|
|
jump show-rank
|
|
|
|
: fencing-lose
|
|
clear
|
|
print failed-fight-1
|
|
dialog-pause
|
|
print failed-fight-2
|
|
jump show-rank
|
|
|
|
###########################################
|
|
#
|
|
# Main Map
|
|
#
|
|
###########################################
|
|
|
|
to-data
|
|
|
|
:const FLOORPLAN_X 16
|
|
:const FLOORPLAN_Y 2
|
|
:calc FLOORPLAN_END_X { FLOORPLAN_X + 16 * 6 }
|
|
:calc FLOORPLAN_END_Y { FLOORPLAN_Y + 16 * 3 }
|
|
|
|
: empty-floorplan # 6x3 16x16 sprites, tblr
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x7F 0xFF 0x40 0x00 0x40 0x00 0x40 0x00 0x40 0x00 0x40 0x00 0x40 0x00 0x40 0x00
|
|
0x0F 0xFF 0x08 0x00 0x08 0x00 0x08 0x00 0x08 0x00 0x08 0x00 0x08 0x00 0x08 0x00
|
|
0xF8 0x00 0x08 0x00 0x08 0x00 0x08 0x00 0x08 0x00 0x08 0x00 0x08 0x00 0x08 0x00
|
|
0xFF 0xFF 0x04 0x00 0x04 0x00 0x04 0x00 0x04 0x00 0x04 0x00 0x04 0x00 0x04 0x00
|
|
0x04 0x00 0x1C 0x00 0x20 0x00 0x10 0x00 0x08 0x00 0x04 0x00 0x04 0x00 0x04 0x00
|
|
0xFF 0xFF 0x08 0x00 0x08 0x00 0x08 0x00 0x08 0x00 0x08 0x00 0x08 0x00 0x08 0x00
|
|
0x08 0x00 0x08 0x00 0x08 0x00 0x08 0x00 0x08 0x00 0x08 0x00 0x08 0x00 0x08 0x00
|
|
0xF7 0x7F 0x10 0x40 0x10 0x40 0x10 0x40 0x10 0x40 0x10 0x40 0x10 0x70 0x10 0x08
|
|
0x10 0x10 0x10 0x20 0x10 0x40 0x10 0x40 0x10 0x40 0x10 0x40 0x10 0x40 0x10 0x40
|
|
0xFF 0xFE 0x00 0x02 0x00 0x02 0x00 0x02 0x00 0x02 0x00 0x02 0x00 0x02 0x00 0x02
|
|
0x00 0x02 0x00 0x02 0x00 0x02 0x00 0x02 0x00 0x02 0x00 0x02 0x00 0x02 0x00 0x02
|
|
0x40 0x00 0x40 0x00 0x40 0x00 0x40 0x00 0x40 0x00 0x40 0x00 0x40 0x00 0x40 0x00
|
|
0x40 0x00 0x40 0x00 0x40 0x00 0x40 0x00 0x40 0x00 0x7F 0xFF 0x40 0x00 0x40 0x00
|
|
0x08 0x00 0x08 0x00 0x08 0x00 0x0F 0xFF 0x08 0x00 0x08 0x00 0x10 0x00 0x20 0x00
|
|
0x40 0x7F 0x38 0x40 0x08 0x40 0x08 0x20 0x08 0x10 0xF8 0x08 0x08 0x70 0x08 0x40
|
|
0x04 0x08 0x04 0x14 0x04 0x24 0xFF 0xC7 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0xFF 0xFF 0x00 0x04 0x00 0x04 0x00 0x04 0x00 0x04 0x00 0x04 0x00 0x04 0x00 0x04
|
|
0x08 0x10 0x08 0x28 0x08 0x48 0xFF 0x8F 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0xC7 0xFF 0x24 0x04 0x14 0x04 0x08 0x04 0x00 0x04 0x00 0x07 0x00 0x04 0x00 0x07
|
|
0x10 0x7F 0x10 0x40 0x10 0x40 0xF0 0x40 0x00 0x40 0x00 0x40 0x00 0x70 0x00 0x08
|
|
0xF0 0x10 0x10 0x20 0x10 0x40 0x10 0x40 0x10 0x40 0xF0 0x40 0x10 0x40 0xF0 0x40
|
|
0xFF 0xFE 0x00 0x02 0x00 0x02 0x00 0x02 0x00 0x02 0x00 0x02 0x00 0x02 0x00 0x02
|
|
0x00 0x02 0x00 0x02 0x00 0x02 0x00 0x02 0x00 0x02 0x00 0x02 0x00 0x02 0x00 0x02
|
|
0x40 0x00 0x40 0x00 0x40 0x00 0x40 0x00 0x40 0x00 0x40 0x00 0x40 0x00 0x40 0x00
|
|
0x40 0x00 0x40 0x00 0x40 0x00 0x40 0x00 0x40 0x00 0x40 0x00 0x40 0x00 0x7F 0xFF
|
|
0x08 0x40 0x08 0x40 0x08 0x40 0x10 0x40 0x20 0x40 0x40 0x40 0x38 0x40 0x08 0x40
|
|
0x08 0x40 0x08 0x40 0x08 0x40 0x08 0x40 0x08 0x40 0x08 0x7F 0x08 0x40 0xFB 0x40
|
|
0x00 0x04 0x00 0x04 0x00 0x04 0x00 0x04 0x00 0x04 0x00 0x07 0x00 0x04 0x00 0x04
|
|
0x00 0x08 0x00 0x10 0x00 0x20 0x00 0x1C 0x00 0x04 0xFF 0xFF 0x00 0x00 0x00 0x00
|
|
0x00 0x04 0x00 0x07 0x00 0x04 0x00 0x07 0x00 0x04 0xFF 0xFD 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0xFF 0xFF 0x00 0x00 0x00 0x00
|
|
0x10 0x7F 0xF0 0x40 0x10 0x40 0xF0 0x40 0x10 0x40 0xD0 0x40 0x00 0x40 0x00 0x40
|
|
0x00 0x40 0x00 0x40 0x00 0x40 0x00 0x40 0x00 0x40 0xFF 0xC0 0x00 0x40 0x00 0x7F
|
|
0xF1 0xFE 0x09 0x02 0x05 0x02 0x02 0x02 0x00 0x02 0x00 0x02 0x00 0x02 0x00 0x02
|
|
0x00 0x02 0x00 0x02 0x00 0x02 0x00 0x02 0x00 0x02 0x00 0x02 0x00 0x02 0xFF 0xFE
|
|
|
|
: room-masks # 16x16 sprites
|
|
0xFF 0xFC 0xFF 0xFC 0xFF 0xFC 0xFF 0xFC 0xFF 0xFC 0xFF 0xFC 0xFF 0xFC 0xFF 0xFC # library
|
|
0xFF 0xFC 0xFF 0xF8 0xFF 0xF0 0xFF 0xE0 0xFF 0xC0 0xFF 0xC0 0xFF 0xC0 0xFF 0xE0
|
|
0xFF 0xF0 0xFF 0xF0 0xFF 0xF0 0xFF 0xF0 0xFF 0xE0 0xFF 0xC0 0xFF 0x80 0xFF 0x80 # bathroom
|
|
0xFF 0x80 0xFF 0xC0 0xFF 0xE0 0xFF 0xF0 0xFF 0xF0 0xFF 0xF0 0x00 0x00 0x00 0x00
|
|
0xFF 0xC0 0xFF 0xC0 0xFF 0xC0 0xFF 0xC0 0xFF 0xC0 0xFF 0xC0 0xFF 0xC0 0xFF 0xC0 # bedroom
|
|
0xFF 0xC0 0xFF 0xC0 0xFF 0xC0 0xE3 0xC0 0xC1 0xC0 0x80 0xC0 0x00 0x00 0x00 0x00
|
|
0xFF 0xC0 0xFF 0xC0 0xFF 0xC0 0xFF 0xC0 0xFF 0xC0 0xFF 0xC0 0xFF 0xC0 0xFF 0xC0 # drawing room (same as bedroom)
|
|
0xFF 0xC0 0xFF 0xC0 0xFF 0xC0 0xE3 0xC0 0xC1 0xC0 0x80 0xC0 0x00 0x00 0x00 0x00
|
|
0xFF 0xFC 0xFF 0xFC 0xFF 0xF8 0xFF 0xF0 0xFF 0xE0 0xFF 0xE0 0xFF 0xE0 0xFF 0xF0 # parlor
|
|
0xFF 0xF8 0xFF 0xFC 0xFF 0xFC 0xFF 0xFC 0xFF 0xFC 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x3F 0xFE 0x1F 0xFE 0x0F 0xFE 0x0F 0xFE 0x1F 0xFE 0x3F 0xFE 0x7F 0xFE 0xFF 0xFE # dining room
|
|
0xFF 0xFE 0xFF 0xFE 0xFF 0xFE 0xFF 0xFE 0xFF 0xFC 0xFF 0xF8 0xFF 0xF0 0xFF 0xE0
|
|
0x80 0xE0 0xC0 0xE0 0xE1 0xE0 0xFF 0xE0 0xFF 0xE0 0xFF 0xE0 0xFF 0xE0 0xFF 0xE0 # study
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0xFF 0xFF 0x7F 0xFF 0x3F 0xFF 0x1F 0xFF 0x1F 0xFF 0x1F 0xFF 0x3F 0xFF 0x7F 0xFF # conservatory
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0xFF 0xFF 0x7F 0xFF 0x3F 0xFF 0x1F 0xFF 0x1F 0xFF 0x1F 0xFF 0x3F 0xFF 0x7F 0xFF # kitchen (same as conservatory)
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0xFE 0x03 0xFF 0x03 0xFF 0x87 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF # pantry
|
|
0xFF 0xFF 0xFF 0xFF 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
|
|
: mask-positions # [x,y]
|
|
20 13 # 0 - library
|
|
39 5 # 1 - bathroom
|
|
56 5 # 2 - bedroom
|
|
71 5 # 3 - drawing room
|
|
20 34 # 4 - parlor
|
|
44 29 # 5 - dining room
|
|
64 29 # 6 - study
|
|
92 5 # 7 - conservatory
|
|
92 21 # 8 - kitchen
|
|
92 37 # 9 - pantry
|
|
|
|
: room-nav # [n,e,s,w]
|
|
1 1 4 0 # 0
|
|
1 2 5 0 # 1
|
|
2 3 5 1 # 2
|
|
3 7 6 2 # 3
|
|
0 5 4 4 # 4
|
|
2 6 5 4 # 5
|
|
3 9 6 5 # 6
|
|
7 7 8 3 # 7
|
|
7 8 9 6 # 8
|
|
8 9 9 6 # 9
|
|
10 10 10 10 # 10 (secret room)
|
|
|
|
: label-library 0xFE 0x28 0x35 0x0B 0x22 0x1B 0x2B 0x1A 0x2B 0x32 0xFF
|
|
: label-bathroom 0xFE 0x26 0x35 0x01 0x1A 0x2D 0x21 0x2B 0x28 0x28 0x26 0xFF
|
|
: label-bedroom 0xFE 0x26 0x35 0x01 0x1E 0x1D 0x2B 0x28 0x28 0x26 0xFF
|
|
: label-drawing-room 0xFE 0x1B 0x35 0x03 0x2B 0x1A 0x30 0x22 0x27 0x20 0xF9 0x11 0x28 0x28 0x26 0xFF
|
|
: label-parlor 0xFE 0x2D 0x35 0x0F 0x1A 0x2B 0x25 0x28 0x2B 0xFF
|
|
: label-dining-room 0xFE 0x1E 0x35 0x03 0x22 0x27 0x22 0x27 0x20 0xF9 0x11 0x28 0x28 0x26 0xFF
|
|
: label-study 0xFE 0x2F 0x35 0x12 0x2D 0x2E 0x1D 0x32 0xFF
|
|
: label-conservatory 0xFE 0x1B 0x35 0x02 0x28 0x27 0x2C 0x1E 0x2B 0x2F 0x1A 0x2D 0x28 0x2B 0x32 0xFF
|
|
: label-kitchen 0xFE 0x29 0x35 0x0A 0x22 0x2D 0x1C 0x21 0x1E 0x27 0xFF
|
|
: label-pantry 0xFE 0x2C 0x35 0x0F 0x1A 0x27 0x2D 0x2B 0x32 0xFF
|
|
|
|
: room-label-table
|
|
pointer label-library
|
|
pointer label-bathroom
|
|
pointer label-bedroom
|
|
pointer label-drawing-room
|
|
pointer label-parlor
|
|
pointer label-dining-room
|
|
pointer label-study
|
|
pointer label-conservatory
|
|
pointer label-kitchen
|
|
pointer label-pantry
|
|
|
|
to-code
|
|
|
|
: draw-map-label
|
|
i := long room-label-table
|
|
i += current-room
|
|
i += current-room
|
|
load v1
|
|
jump print-text # TCO
|
|
|
|
:macro main-map {
|
|
# draw the building's floorplan
|
|
clear
|
|
i := long empty-floorplan
|
|
v0 := FLOORPLAN_X
|
|
v1 := FLOORPLAN_Y
|
|
v2 := 32
|
|
loop
|
|
sprite v0 v1 0
|
|
i += v2
|
|
v0 += 16
|
|
if v0 == FLOORPLAN_END_X then v1 += 16
|
|
if v0 == FLOORPLAN_END_X then v0 := FLOORPLAN_X
|
|
if v1 != FLOORPLAN_END_Y then
|
|
again
|
|
|
|
# choose a new room
|
|
loop
|
|
draw-map-label
|
|
|
|
i := long mask-positions
|
|
i += current-room
|
|
i += current-room
|
|
load v1 - v2
|
|
|
|
i := long room-masks
|
|
v0 := current-room
|
|
vf := 32
|
|
loop
|
|
while v0 != 0
|
|
v0 += -1
|
|
i += vf
|
|
again
|
|
sprite v1 v2 0
|
|
|
|
v4 := key
|
|
sprite v1 v2 0
|
|
draw-map-label
|
|
|
|
i := long room-nav
|
|
i += current-room
|
|
i += current-room
|
|
i += current-room
|
|
i += current-room
|
|
load v3
|
|
|
|
if v4 == OCTO_KEY_W then current-room := v0
|
|
if v4 == OCTO_KEY_D then current-room := v1
|
|
if v4 == OCTO_KEY_S then current-room := v2
|
|
if v4 == OCTO_KEY_A then current-room := v3
|
|
|
|
if v4 != OCTO_KEY_E then
|
|
again
|
|
}
|
|
|
|
###########################################
|
|
#
|
|
# Entrypoint
|
|
#
|
|
###########################################
|
|
|
|
: main
|
|
hires
|
|
loop
|
|
intro-sequence
|
|
loop
|
|
main-map
|
|
thicken-plot SUSPICION_ENTER_ROOM
|
|
room
|
|
while current-room != GAME_OVER
|
|
describe-ambience
|
|
again
|
|
again
|