Add Templeng.
This commit is contained in:
parent
107c10ef83
commit
fdaf782eca
|
@ -1,19 +0,0 @@
|
||||||
TEMPLE
|
|
||||||
======
|
|
||||||
|
|
||||||
TEMPLE is an assembly port for EttinOS of the web-based text adventure
|
|
||||||
game In the Temple by nortti. Its original readme is reproduced here:
|
|
||||||
|
|
||||||
A small game about a visit to a temple and the reasons for doing so.
|
|
||||||
|
|
||||||
Can be played online at https://ahti.space/~nortti/in-the-temple/ or at
|
|
||||||
https://nortti.itch.io/in-the-temple
|
|
||||||
|
|
||||||
The game is distributed under the Creative Commons Zero 1.0 Universal
|
|
||||||
license.
|
|
||||||
|
|
||||||
***
|
|
||||||
|
|
||||||
This package is part of EttinOS-extra, a collection of programs for
|
|
||||||
EttinOS, the git repository of which can be found at
|
|
||||||
https://ahti.space/git/crazyettin/EttinOS-extra.
|
|
|
@ -1,530 +0,0 @@
|
||||||
cpu 8086
|
|
||||||
org 0x3000
|
|
||||||
|
|
||||||
;Intro
|
|
||||||
;Print the intro
|
|
||||||
intro:
|
|
||||||
mov si, introtxt
|
|
||||||
mov ah, 0x2
|
|
||||||
int 0x21
|
|
||||||
;Read any key to start
|
|
||||||
mov ah, 0x0
|
|
||||||
int 0x16
|
|
||||||
call readquit
|
|
||||||
|
|
||||||
;Start
|
|
||||||
;Print the text
|
|
||||||
mov si, startxt
|
|
||||||
mov ah, 0x2
|
|
||||||
int 0x21
|
|
||||||
;Read the player choice
|
|
||||||
readstart:
|
|
||||||
mov ah, 0x0
|
|
||||||
int 0x16
|
|
||||||
cmp al, "1"
|
|
||||||
je give
|
|
||||||
cmp al, "2"
|
|
||||||
je take
|
|
||||||
cmp al, "3"
|
|
||||||
je do
|
|
||||||
call readquit
|
|
||||||
jmp readstart
|
|
||||||
|
|
||||||
;Giving
|
|
||||||
;Print the text
|
|
||||||
give:
|
|
||||||
mov si, givetxt
|
|
||||||
mov ah, 0x2
|
|
||||||
int 0x21
|
|
||||||
;Read the player choice
|
|
||||||
readgive:
|
|
||||||
mov ah, 0x0
|
|
||||||
int 0x16
|
|
||||||
cmp al, "1"
|
|
||||||
je comb
|
|
||||||
cmp al, "2"
|
|
||||||
je coin
|
|
||||||
call readquit
|
|
||||||
jmp readgive
|
|
||||||
|
|
||||||
;Giving a Comb
|
|
||||||
;Print the text
|
|
||||||
comb:
|
|
||||||
mov si, combtxt
|
|
||||||
mov ah, 0x2
|
|
||||||
int 0x21
|
|
||||||
;Read any key to return back to the beginning
|
|
||||||
mov ah, 0x0
|
|
||||||
int 0x16
|
|
||||||
call readquit
|
|
||||||
mov si, crlf
|
|
||||||
mov ah, 0x0
|
|
||||||
int 0x21
|
|
||||||
jmp intro
|
|
||||||
|
|
||||||
;Giving a Coin
|
|
||||||
;Print the text
|
|
||||||
coin:
|
|
||||||
mov si, cointxt
|
|
||||||
mov ah, 0x2
|
|
||||||
int 0x21
|
|
||||||
;Read any key to return back to the beginning
|
|
||||||
mov ah, 0x0
|
|
||||||
int 0x16
|
|
||||||
call readquit
|
|
||||||
mov si, crlf
|
|
||||||
mov ah, 0x0
|
|
||||||
int 0x21
|
|
||||||
jmp intro
|
|
||||||
|
|
||||||
;Taking
|
|
||||||
;Print the text
|
|
||||||
take:
|
|
||||||
mov si, taketxt
|
|
||||||
mov ah, 0x2
|
|
||||||
int 0x21
|
|
||||||
;Read the player choice
|
|
||||||
readtake:
|
|
||||||
mov ah, 0x0
|
|
||||||
int 0x16
|
|
||||||
cmp al, "1"
|
|
||||||
je bowl
|
|
||||||
cmp al, "2"
|
|
||||||
je knife
|
|
||||||
cmp al, "3"
|
|
||||||
je idol
|
|
||||||
call readquit
|
|
||||||
jmp readtake
|
|
||||||
|
|
||||||
;Taking the Bowl
|
|
||||||
;Print the text
|
|
||||||
bowl:
|
|
||||||
mov si, bowltxt
|
|
||||||
mov ah, 0x2
|
|
||||||
int 0x21
|
|
||||||
;Read any key to return back to the beginning
|
|
||||||
mov ah, 0x0
|
|
||||||
int 0x16
|
|
||||||
call readquit
|
|
||||||
mov si, crlf
|
|
||||||
mov ah, 0x0
|
|
||||||
int 0x21
|
|
||||||
jmp intro
|
|
||||||
|
|
||||||
;Taking the Knife
|
|
||||||
;Print the text
|
|
||||||
knife:
|
|
||||||
mov si, knifetxt
|
|
||||||
mov ah, 0x2
|
|
||||||
int 0x21
|
|
||||||
;Read any key to return back to the beginning
|
|
||||||
mov ah, 0x0
|
|
||||||
int 0x16
|
|
||||||
call readquit
|
|
||||||
mov si, crlf
|
|
||||||
mov ah, 0x0
|
|
||||||
int 0x21
|
|
||||||
jmp intro
|
|
||||||
|
|
||||||
;Taking the Idol
|
|
||||||
;Print the text
|
|
||||||
idol:
|
|
||||||
mov si, idoltxt
|
|
||||||
mov ah, 0x2
|
|
||||||
int 0x21
|
|
||||||
;Read any key to return back to the beginning
|
|
||||||
mov ah, 0x0
|
|
||||||
int 0x16
|
|
||||||
call readquit
|
|
||||||
mov si, crlf
|
|
||||||
mov ah, 0x0
|
|
||||||
int 0x21
|
|
||||||
jmp intro
|
|
||||||
|
|
||||||
;Doing
|
|
||||||
;Print the text
|
|
||||||
do:
|
|
||||||
mov si, dotxt
|
|
||||||
mov ah, 0x2
|
|
||||||
int 0x21
|
|
||||||
;Read the player choice
|
|
||||||
reado:
|
|
||||||
mov ah, 0x0
|
|
||||||
int 0x16
|
|
||||||
cmp al, "1"
|
|
||||||
je sacrifice
|
|
||||||
cmp al, "2"
|
|
||||||
je iconoclasm
|
|
||||||
cmp al, "3"
|
|
||||||
je prayer
|
|
||||||
call readquit
|
|
||||||
jmp reado
|
|
||||||
|
|
||||||
;Making a Sacrifice
|
|
||||||
;Print the text
|
|
||||||
sacrifice:
|
|
||||||
mov si, sacrificetxt
|
|
||||||
mov ah, 0x2
|
|
||||||
int 0x21
|
|
||||||
;Read the player choice
|
|
||||||
readsacrifice:
|
|
||||||
mov ah, 0x0
|
|
||||||
int 0x16
|
|
||||||
cmp al, "1"
|
|
||||||
je bread
|
|
||||||
cmp al, "2"
|
|
||||||
je blood
|
|
||||||
call readquit
|
|
||||||
jmp readsacrifice
|
|
||||||
|
|
||||||
;A Sacrifice of Bread
|
|
||||||
;Print the text
|
|
||||||
bread:
|
|
||||||
mov si, breadtxt
|
|
||||||
mov ah, 0x2
|
|
||||||
int 0x21
|
|
||||||
;Read any key to return back to the beginning
|
|
||||||
mov ah, 0x0
|
|
||||||
int 0x16
|
|
||||||
call readquit
|
|
||||||
mov si, crlf
|
|
||||||
mov ah, 0x0
|
|
||||||
int 0x21
|
|
||||||
jmp intro
|
|
||||||
|
|
||||||
;A Sacrifice of Blood
|
|
||||||
;Print the text
|
|
||||||
blood:
|
|
||||||
mov si, bloodtxt
|
|
||||||
mov ah, 0x2
|
|
||||||
int 0x21
|
|
||||||
;Read any key to return back to the beginning
|
|
||||||
mov ah, 0x0
|
|
||||||
int 0x16
|
|
||||||
call readquit
|
|
||||||
mov si, crlf
|
|
||||||
mov ah, 0x0
|
|
||||||
int 0x21
|
|
||||||
jmp intro
|
|
||||||
|
|
||||||
;Iconoclasm
|
|
||||||
;Print the text
|
|
||||||
iconoclasm:
|
|
||||||
mov si, iconoclasmtxt
|
|
||||||
mov ah, 0x2
|
|
||||||
int 0x21
|
|
||||||
;Read any key to return back to the beginning
|
|
||||||
mov ah, 0x0
|
|
||||||
int 0x16
|
|
||||||
call readquit
|
|
||||||
mov si, crlf
|
|
||||||
mov ah, 0x0
|
|
||||||
int 0x21
|
|
||||||
jmp intro
|
|
||||||
|
|
||||||
;Prayer
|
|
||||||
;Print the text
|
|
||||||
prayer:
|
|
||||||
mov si, prayertxt
|
|
||||||
mov ah, 0x2
|
|
||||||
int 0x21
|
|
||||||
;Read any key to return back to the beginning
|
|
||||||
mov ah, 0x0
|
|
||||||
int 0x16
|
|
||||||
call readquit
|
|
||||||
mov si, crlf
|
|
||||||
mov ah, 0x0
|
|
||||||
int 0x21
|
|
||||||
jmp intro
|
|
||||||
|
|
||||||
;Return
|
|
||||||
done:
|
|
||||||
int 0x20
|
|
||||||
|
|
||||||
;Data
|
|
||||||
introtxt db "In the Temple", 0xd, 0xa,\
|
|
||||||
"=============", 0xd, 0xa,\
|
|
||||||
0xd, 0xa,\
|
|
||||||
"This is a story of your visit to the temple of ",\
|
|
||||||
"Arattavesh.",\
|
|
||||||
0xd, 0xa,\
|
|
||||||
0xd, 0xa,\
|
|
||||||
"Press the corresponding number to choose an option or ",\
|
|
||||||
"escape to quit the", 0xd, 0xa,\
|
|
||||||
"game.", 0xd, 0xa,\
|
|
||||||
0xd, 0xa,\
|
|
||||||
"Press any key to start.", 0x0
|
|
||||||
startxt db 0xd, 0xa,\
|
|
||||||
"Before the Idol", 0xd, 0xa,\
|
|
||||||
"---------------", 0xd, 0xa,\
|
|
||||||
0xd, 0xa,\
|
|
||||||
"You are in the back of the temple, before the idol of ",\
|
|
||||||
"Arattavesh. It is", 0xd, 0xa,\
|
|
||||||
"a well made wooden statue painted with gold and blue.",\
|
|
||||||
0xd, 0xa,\
|
|
||||||
0xd, 0xa,\
|
|
||||||
"In front of the statue there is an ornate knife and a ",\
|
|
||||||
"plain wooden bowl.", 0xd, 0xa,\
|
|
||||||
0xd, 0xa,\
|
|
||||||
"You have come here to the sanctum to...", 0xd, 0xa,\
|
|
||||||
" 1. give something.", 0xd, 0xa,\
|
|
||||||
" 2. take something.", 0xd, 0xa,\
|
|
||||||
" 3. do something.", 0x0
|
|
||||||
givetxt db 0xd, 0xa,\
|
|
||||||
"Giving", 0xd, 0xa,\
|
|
||||||
"------", 0xd, 0xa,\
|
|
||||||
0xd, 0xa,\
|
|
||||||
"You have arrived to deposit a votive offering to ",\
|
|
||||||
"Arattavesh for healing", 0xd, 0xa,\
|
|
||||||
"your sickness over the winter. You intend to give...",\
|
|
||||||
0xd, 0xa,\
|
|
||||||
" 1. a wooden comb.", 0xd, 0xa,\
|
|
||||||
" 2. a silver coin.", 0x0
|
|
||||||
combtxt db 0xd, 0xa,\
|
|
||||||
"Giving a Comb", 0xd, 0xa,\
|
|
||||||
"-------------", 0xd, 0xa,\
|
|
||||||
0xd, 0xa,\
|
|
||||||
"You hold a finely carved wooden comb in your hands. ",\
|
|
||||||
"It is a comb you", 0xd, 0xa,\
|
|
||||||
"have made yourself, the masterpiece that gave you ",\
|
|
||||||
"full rights in the", 0xd, 0xa,\
|
|
||||||
"guild. You are sacrificing not only its monetary ",\
|
|
||||||
"value, but its value to", 0xd, 0xa,\
|
|
||||||
"you personally.", 0xd, 0xa,\
|
|
||||||
0xd, 0xa,\
|
|
||||||
"You place the comb next to the knife, say a few words ",\
|
|
||||||
"asking Arattavesh", 0xd, 0xa,\
|
|
||||||
"to accept your payment, and walk back to the door to ",\
|
|
||||||
"the sanctum. A", 0xd, 0xa,\
|
|
||||||
"priest sprinkles water on you, and closes the heavy ",\
|
|
||||||
"door after you step", 0xd, 0xa,\
|
|
||||||
"outside.", 0xd, 0xa,\
|
|
||||||
0xd, 0xa,\
|
|
||||||
"Press any key to return back to the beginning.", 0x0
|
|
||||||
cointxt db 0xd, 0xa,\
|
|
||||||
"Giving a Coin", 0xd, 0xa,\
|
|
||||||
"-------------", 0xd, 0xa,\
|
|
||||||
0xd, 0xa,\
|
|
||||||
"You take out a silver coin from the pouch hanging ",\
|
|
||||||
"from your belt. It", 0xd, 0xa,\
|
|
||||||
"represents the work of several weeks as a cobbler.",\
|
|
||||||
0xd, 0xa,\
|
|
||||||
0xd, 0xa,\
|
|
||||||
"You take the coin and throw it to the fountain that ",\
|
|
||||||
"is behind the idol,", 0xd, 0xa,\
|
|
||||||
"where you hear it clink against other coins that have ",\
|
|
||||||
"been deposited", 0xd, 0xa,\
|
|
||||||
"previously.", 0xd, 0xa,\
|
|
||||||
0xd, 0xa,\
|
|
||||||
"You turn back and walk through the curtains to the ",\
|
|
||||||
"common side of the", 0xd, 0xa,\
|
|
||||||
"temple, where other devout are waiting for their turn ",\
|
|
||||||
"to enter the", 0xd, 0xa,\
|
|
||||||
"sanctum.", 0xd, 0xa,\
|
|
||||||
0xd, 0xa,\
|
|
||||||
"Press any key to return back to the beginning.", 0x0
|
|
||||||
taketxt db 0xd, 0xa,\
|
|
||||||
"Taking", 0xd, 0xa,\
|
|
||||||
"------", 0xd, 0xa,\
|
|
||||||
0xd, 0xa,\
|
|
||||||
"There it is. Right before you. You steal a glance ",\
|
|
||||||
"behing you hoping to", 0xd, 0xa,\
|
|
||||||
"make sure that nobody spots you in the darkness as ",\
|
|
||||||
"you reach out and", 0xd, 0xa,\
|
|
||||||
"grab...", 0xd, 0xa,\
|
|
||||||
" 1. the bowl.", 0xd, 0xa,\
|
|
||||||
" 2. the knife.", 0xd, 0xa,\
|
|
||||||
" 3. the idol.", 0x0
|
|
||||||
bowltxt db 0xd, 0xa,\
|
|
||||||
"Taking the Bowl", 0xd, 0xa,\
|
|
||||||
"---------------", 0xd, 0xa,\
|
|
||||||
0xd, 0xa,\
|
|
||||||
"The bowl you had offered just a week before is still ",\
|
|
||||||
"here. You had left", 0xd, 0xa,\
|
|
||||||
"it as a thanks of your husband's recovery, but now ",\
|
|
||||||
"your husband is gone,", 0xd, 0xa,\
|
|
||||||
"your fields are destroyed, and all this is the name ",\
|
|
||||||
"of Arattavesh.", 0xd, 0xa,\
|
|
||||||
0xd, 0xa,\
|
|
||||||
"If the gods shall curse you for breaching the ",\
|
|
||||||
"holiness of the sanctum", 0xd, 0xa,\
|
|
||||||
"let them, for you curse the gods too. You take that ",\
|
|
||||||
"which you dedicated", 0xd, 0xa,\
|
|
||||||
'to Arattavesh and quietly state "You have taken back ',\
|
|
||||||
"your gift and so I", 0xd, 0xa,\
|
|
||||||
'shall take back mine" before slipping back into the ',\
|
|
||||||
"night.", 0xd, 0xa,\
|
|
||||||
0xd, 0xa,\
|
|
||||||
"Press any key to return back to the beginning.", 0x0
|
|
||||||
knifetxt db 0xd, 0xa,\
|
|
||||||
"Taking the Knife", 0xd, 0xa,\
|
|
||||||
"----------------", 0xd, 0xa,\
|
|
||||||
0xd, 0xa,\
|
|
||||||
"The knife is very nicely made. You admire it for a ",\
|
|
||||||
"small while, before", 0xd, 0xa,\
|
|
||||||
"slipping it into the bag you carry around your ",\
|
|
||||||
"shoulders.", 0xd, 0xa,\
|
|
||||||
0xd, 0xa,\
|
|
||||||
"You aren't committing a sin, or if you are it's not a ",\
|
|
||||||
"great one. The", 0xd, 0xa,\
|
|
||||||
"chanter who lives in the main city has not yet come ",\
|
|
||||||
"and completed the", 0xd, 0xa,\
|
|
||||||
"dedication. The one who's knelt before the idol and ",\
|
|
||||||
"left it here has", 0xd, 0xa,\
|
|
||||||
"merely announced an intention to give it to their god ",\
|
|
||||||
"so it's still", 0xd, 0xa,\
|
|
||||||
"theirs, and they will not miss it.", 0xd, 0xa,\
|
|
||||||
0xd, 0xa,\
|
|
||||||
"If Nagiri holds up his end of the bargain your debt ",\
|
|
||||||
"shall be gone come", 0xd, 0xa,\
|
|
||||||
"tomorrow and you can leave the land you work but do ",\
|
|
||||||
"not own. You get", 0xd, 0xa,\
|
|
||||||
"excited, but then try to calm down. It is not over ",\
|
|
||||||
"yet.", 0xd, 0xa,\
|
|
||||||
0xd, 0xa,\
|
|
||||||
"You walk out into the evening crowd still in the ",\
|
|
||||||
"market before the", 0xd, 0xa,\
|
|
||||||
"sanctum. There are so many people here nobody will ",\
|
|
||||||
"remember and be able", 0xd, 0xa,\
|
|
||||||
"to speak against you.", 0xd, 0xa,\
|
|
||||||
0xd, 0xa,\
|
|
||||||
"Press any key to return back to the beginning.", 0x0
|
|
||||||
idoltxt db 0xd, 0xa,\
|
|
||||||
"Taking the Idol", 0xd, 0xa,\
|
|
||||||
"---------------", 0xd, 0xa,\
|
|
||||||
0xd, 0xa,\
|
|
||||||
"Here it is. The protector god of your village, taken ",\
|
|
||||||
"by force when you", 0xd, 0xa,\
|
|
||||||
"were but a small child.", 0xd, 0xa,\
|
|
||||||
0xd, 0xa,\
|
|
||||||
"They call her Arattavesh, after the river, but you ",\
|
|
||||||
"know better. As you", 0xd, 0xa,\
|
|
||||||
'lift the idol you whisper: "Panglya, you shall be ',\
|
|
||||||
'home soon."', 0xd, 0xa,\
|
|
||||||
0xd, 0xa,\
|
|
||||||
"Press any key to return back to the beginning.", 0x0
|
|
||||||
dotxt db 0xd, 0xa,\
|
|
||||||
"Doing", 0xd, 0xa,\
|
|
||||||
"-----", 0xd, 0xa,\
|
|
||||||
0xd, 0xa,\
|
|
||||||
"Yes, it is finally time. You make sure that ",\
|
|
||||||
"everything is just right,", 0xd, 0xa,\
|
|
||||||
"and...", 0xd, 0xa,\
|
|
||||||
" 1. take the knife.", 0xd, 0xa,\
|
|
||||||
" 2. raise your axe.", 0xd, 0xa,\
|
|
||||||
" 3. kneel before the idol.", 0x0
|
|
||||||
sacrificetxt db 0xd, 0xa,\
|
|
||||||
"Making a Sacrifice", 0xd, 0xa,\
|
|
||||||
"------------------", 0xd, 0xa,\
|
|
||||||
0xd, 0xa,\
|
|
||||||
"You take the blade, and think of the long nights ",\
|
|
||||||
"spent replaying the", 0xd, 0xa,\
|
|
||||||
"formula of the sacrifice in your head. You've seen ",\
|
|
||||||
"ones before, but", 0xd, 0xa,\
|
|
||||||
"never this one, for it is one that a priest must do ",\
|
|
||||||
"alone.", 0xd, 0xa,\
|
|
||||||
0xd, 0xa,\
|
|
||||||
"You say the words, and cut...", 0xd, 0xa,\
|
|
||||||
" 1. a loaf of bread.", 0xd, 0xa,\
|
|
||||||
" 2. your finger.", 0x0
|
|
||||||
breadtxt db 0xd, 0xa,\
|
|
||||||
"A Sacrifice of Bread", 0xd, 0xa,\
|
|
||||||
"--------------------", 0xd, 0xa,\
|
|
||||||
0xd, 0xa,\
|
|
||||||
"As Arattavesh gives you grain, you shall give her ",\
|
|
||||||
"back. A slice of every", 0xd, 0xa,\
|
|
||||||
"loaf made before the next new moon shall be hers, and ",\
|
|
||||||
"the bakers will be", 0xd, 0xa,\
|
|
||||||
"giving their share starting tomorrow. But this loaf ",\
|
|
||||||
"is special, the", 0xd, 0xa,\
|
|
||||||
"first loaf baked from new grain, and it is reserved ",\
|
|
||||||
"for the junior", 0xd, 0xa,\
|
|
||||||
"priest of the temple. Which is you.", 0xd, 0xa,\
|
|
||||||
0xd, 0xa,\
|
|
||||||
"You know that you shall not be too stingy and cut ",\
|
|
||||||
"only the skin. You", 0xd, 0xa,\
|
|
||||||
"also know you have to be exact and not cut a too big ",\
|
|
||||||
"of a slice off. But", 0xd, 0xa,\
|
|
||||||
"that is no issue. You end up with a slice that is ",\
|
|
||||||
"just right, and place", 0xd, 0xa,\
|
|
||||||
"it in the bowl before the idol.", 0xd, 0xa,\
|
|
||||||
0xd, 0xa,\
|
|
||||||
"After this is done, you lay the knife back down, and ",\
|
|
||||||
"recite one of the", 0xd, 0xa,\
|
|
||||||
"old hymns, too old for people to understand anymore. ",\
|
|
||||||
"You feel that", 0xd, 0xa,\
|
|
||||||
"Arattavesh is pleased in you as you walk up to the ",\
|
|
||||||
"roof of the temple", 0xd, 0xa,\
|
|
||||||
"house and then across to the end of the block.", 0xd,\
|
|
||||||
0xa,\
|
|
||||||
0xd, 0xa,\
|
|
||||||
"Press any key to return back to the beginning.", 0x0
|
|
||||||
bloodtxt db 0xd, 0xa,\
|
|
||||||
"A Sacrifice of Blood", 0xd, 0xa,\
|
|
||||||
"--------------------", 0xd, 0xa,\
|
|
||||||
0xd, 0xa,\
|
|
||||||
"It hurts a little but you do not care, as you let the ",\
|
|
||||||
"droplets of blood", 0xd, 0xa,\
|
|
||||||
"drip into the bowl. Just like mixing your blood with ",\
|
|
||||||
"that of your sworn", 0xd, 0xa,\
|
|
||||||
"sister cements your bond, so does giving it to your ",\
|
|
||||||
"god.", 0xd, 0xa,\
|
|
||||||
0xd, 0xa,\
|
|
||||||
"You are a fully fledged priest of Arattavesh, the one ",\
|
|
||||||
"who rules behind", 0xd, 0xa,\
|
|
||||||
"the waves and in the dark caverns of earth. You hurry ",\
|
|
||||||
"to your new family", 0xd, 0xa,\
|
|
||||||
"who are waiting at the foot of the mountain.", 0xd, 0xa,\
|
|
||||||
0xd, 0xa,\
|
|
||||||
"Press any key to return back to the beginning.", 0x0
|
|
||||||
iconoclasmtxt db 0xd, 0xa,\
|
|
||||||
"Iconoclasm", 0xd, 0xa,\
|
|
||||||
"----------", 0xd, 0xa,\
|
|
||||||
0xd, 0xa,\
|
|
||||||
"There is but one abomination in the eyes of gods bad ",\
|
|
||||||
"enough to warrant a", 0xd, 0xa,\
|
|
||||||
"death in the marshes. And that is the worship of ",\
|
|
||||||
"earthly images in their", 0xd, 0xa,\
|
|
||||||
"stead.", 0xd, 0xa,\
|
|
||||||
0xd, 0xa,\
|
|
||||||
"You raise your axe and let it fall onto the head of ",\
|
|
||||||
"the idol. There is a", 0xd, 0xa,\
|
|
||||||
"crunching sound and you see the wood split, maggots ",\
|
|
||||||
"crawling out of it.", 0xd, 0xa,\
|
|
||||||
"Of course, of course. The idol is as rotten as the ",\
|
|
||||||
"act of worshiping it.", 0xd, 0xa,\
|
|
||||||
0xd, 0xa,\
|
|
||||||
"The heathen ways are over again, and the temple shall ",\
|
|
||||||
"be cleansed. You", 0xd, 0xa,\
|
|
||||||
"raise your arms and shout as loud as you can: ",\
|
|
||||||
'"Witness me Arattavesh,', 0xd, 0xa,\
|
|
||||||
"for I will cleanse your house of the ways of the ",\
|
|
||||||
"Eluwing, and enact", 0xd, 0xa,\
|
|
||||||
'revenge on those who have it thus defiled!"', 0xd, 0xa,\
|
|
||||||
0xd, 0xa,\
|
|
||||||
"Press any key to return back to the beginning.", 0x0
|
|
||||||
prayertxt db 0xd, 0xa,\
|
|
||||||
"Prayer", 0xd, 0xa,\
|
|
||||||
"------", 0xd, 0xa,\
|
|
||||||
0xd, 0xa,\
|
|
||||||
'"You who will remain when I am gone', 0xd, 0xa,\
|
|
||||||
"To help my family in time of need", 0xd, 0xa,\
|
|
||||||
"To shield the eastern flank of this city", 0xd, 0xa,\
|
|
||||||
"To leave the graves of our ancestors safe", 0xd, 0xa,\
|
|
||||||
"To bring the flood as you have brought", 0xd, 0xa,\
|
|
||||||
'I ask you"', 0xd, 0xa,\
|
|
||||||
0xd, 0xa,\
|
|
||||||
"Press any key to return back to the beginning.", 0x0
|
|
||||||
crlf db 0xd, 0xa, 0x0
|
|
||||||
|
|
||||||
;***
|
|
||||||
|
|
||||||
;Quit the game
|
|
||||||
readquit:
|
|
||||||
|
|
||||||
;Check for keypress Q
|
|
||||||
cmp al, 0x1b
|
|
||||||
je done
|
|
||||||
|
|
||||||
;Return
|
|
||||||
ret
|
|
|
@ -0,0 +1,47 @@
|
||||||
|
TEMPLENG
|
||||||
|
========
|
||||||
|
|
||||||
|
TEMPLENG is a text adventure game engine based on my earlier, standalone
|
||||||
|
EttinOS port of In the Temple.
|
||||||
|
|
||||||
|
Syntax: TEMPLENG DATAFILE.DAT
|
||||||
|
|
||||||
|
Press any key other than escape to start the game or to return back to
|
||||||
|
the beginning after an ending, the corresponding number to choose an
|
||||||
|
option in a non-ending scene, or escape to quit the game.
|
||||||
|
|
||||||
|
TEMPLE
|
||||||
|
------
|
||||||
|
|
||||||
|
Included in the package is TEMPLE, a TEMPLENG port of the web-based text
|
||||||
|
adventure game In the Temple by nortti. Its original readme is
|
||||||
|
reproduced here:
|
||||||
|
|
||||||
|
> A small game about a visit to a temple and the reasons for doing so.
|
||||||
|
>
|
||||||
|
> Can be played online at https://ahti.space/~nortti/in-the-temple/ or
|
||||||
|
> at https://nortti.itch.io/in-the-temple
|
||||||
|
>
|
||||||
|
> The game is distributed under the Creative Commons Zero 1.0 Universal
|
||||||
|
> license.
|
||||||
|
|
||||||
|
The data files
|
||||||
|
--------------
|
||||||
|
|
||||||
|
A data file consists of an intro text ending in a null followed by any
|
||||||
|
number of scenes. See the included TEMPLE.DAT for an example.
|
||||||
|
|
||||||
|
A scene begins with a start of heading (0x1) and consists of its ID, the
|
||||||
|
number of options it has, and the scene text, all ending in a null. The
|
||||||
|
ID of a scene consists of a string of numbers representing the choices
|
||||||
|
that lead to it, and can be between 2 and 255 characters long including
|
||||||
|
the null. The ID of the first scene is 0. The number of options can be
|
||||||
|
anything between 0 and 9, 0 indicating an ending. The options of a scene
|
||||||
|
must point to scenes placed after it in the data file. The scene text
|
||||||
|
should not exceed 24 lines or all of it won't fit on the screen at once.
|
||||||
|
|
||||||
|
***
|
||||||
|
|
||||||
|
This package is part of EttinOS-extra, a collection of programs for
|
||||||
|
EttinOS, the git repository of which can be found at
|
||||||
|
https://ahti.space/git/crazyettin/EttinOS-extra.
|
Binary file not shown.
|
@ -0,0 +1,179 @@
|
||||||
|
cpu 8086
|
||||||
|
org 0x3000
|
||||||
|
|
||||||
|
;Set the stack
|
||||||
|
cli
|
||||||
|
mov sp, stack + 0x100
|
||||||
|
sti
|
||||||
|
|
||||||
|
;Check for an empty tail
|
||||||
|
;Check
|
||||||
|
cmp byte [si], 0x0
|
||||||
|
jne extract
|
||||||
|
;Print an error message and abort if the tail is empty
|
||||||
|
mov si, errormsg
|
||||||
|
mov ah, 0x2
|
||||||
|
int 0x21
|
||||||
|
je done
|
||||||
|
|
||||||
|
;Find the end of the data file name and add a null if needed
|
||||||
|
;Set DI at the tail
|
||||||
|
extract:
|
||||||
|
mov di, si
|
||||||
|
findend:
|
||||||
|
;Check for the string end
|
||||||
|
cmp byte [di], 0x0
|
||||||
|
je load
|
||||||
|
;Check for a space
|
||||||
|
cmp byte [di], 0x20
|
||||||
|
je addnull
|
||||||
|
inc di
|
||||||
|
jmp findend
|
||||||
|
;Add a null
|
||||||
|
addnull:
|
||||||
|
mov al, 0x0
|
||||||
|
stosb
|
||||||
|
|
||||||
|
;Load the data file
|
||||||
|
;Load
|
||||||
|
load:
|
||||||
|
mov bx, stack + 0x100
|
||||||
|
mov ah, 0x0
|
||||||
|
int 0x22
|
||||||
|
;Check for errors
|
||||||
|
cmp al, 0x0
|
||||||
|
jne done
|
||||||
|
|
||||||
|
;Setup
|
||||||
|
start:
|
||||||
|
;Set SI to the beginning of the data file
|
||||||
|
mov si, stack + 0x100
|
||||||
|
;Initialise the scene ID with zeroes and set DI at its beginning
|
||||||
|
mov di, sceneid
|
||||||
|
mov cx, 0xff
|
||||||
|
mov al, 0x0
|
||||||
|
rep stosb
|
||||||
|
mov di, sceneid
|
||||||
|
|
||||||
|
;Intro
|
||||||
|
;Print the intro
|
||||||
|
mov ah, 0x0
|
||||||
|
int 0x21
|
||||||
|
;Read any key to start
|
||||||
|
mov ah, 0x0
|
||||||
|
int 0x16
|
||||||
|
call readquit
|
||||||
|
;Set the ID of the first scene
|
||||||
|
mov al, "0"
|
||||||
|
stosb
|
||||||
|
|
||||||
|
;Search for the current scene
|
||||||
|
searchscene:
|
||||||
|
lodsb
|
||||||
|
cmp al, 0x1
|
||||||
|
je checkscene
|
||||||
|
jmp searchscene
|
||||||
|
|
||||||
|
;Check for the current scene
|
||||||
|
;Set DI to the current scene id
|
||||||
|
checkscene:
|
||||||
|
mov di, sceneid
|
||||||
|
;Load the current characters
|
||||||
|
checkloop:
|
||||||
|
mov al, [si]
|
||||||
|
mov bl, [di]
|
||||||
|
;Compare the characters
|
||||||
|
cmp al, bl
|
||||||
|
jne searchscene
|
||||||
|
;Check for the string end
|
||||||
|
cmp al, 0x0
|
||||||
|
je loadoptions
|
||||||
|
;Compare the next characters
|
||||||
|
inc si
|
||||||
|
inc di
|
||||||
|
jmp checkloop
|
||||||
|
|
||||||
|
;Load the number of options to BL
|
||||||
|
loadoptions:
|
||||||
|
inc si
|
||||||
|
lodsb
|
||||||
|
mov bl, al
|
||||||
|
|
||||||
|
;Print the scene
|
||||||
|
;Move SI to the beginning of the scene text
|
||||||
|
inc si
|
||||||
|
;Print the scene
|
||||||
|
mov ah, 0x0
|
||||||
|
int 0x21
|
||||||
|
|
||||||
|
;Read the player choice
|
||||||
|
;Set DI at the options key
|
||||||
|
readchoice:
|
||||||
|
mov di, options
|
||||||
|
;Set the maximum number of options
|
||||||
|
mov cx, 0x9
|
||||||
|
;Read a keypress
|
||||||
|
mov ah, 0x0
|
||||||
|
int 0x16
|
||||||
|
;Check for quitting
|
||||||
|
call readquit
|
||||||
|
;Check for an ending scene
|
||||||
|
cmp bl, "0"
|
||||||
|
je ending
|
||||||
|
;Compare the keypress to the key
|
||||||
|
cmpchoice:
|
||||||
|
cmp al, [di]
|
||||||
|
je setscene
|
||||||
|
cmp bl, [di]
|
||||||
|
je readchoice
|
||||||
|
inc di
|
||||||
|
loop cmpchoice
|
||||||
|
jmp readchoice
|
||||||
|
|
||||||
|
;Set the next scene
|
||||||
|
;Find the end of the current scene id
|
||||||
|
setscene:
|
||||||
|
mov di, sceneid
|
||||||
|
findidend:
|
||||||
|
cmp byte [di], 0x0
|
||||||
|
je addoption
|
||||||
|
inc di
|
||||||
|
jmp findidend
|
||||||
|
;Add the chosen option
|
||||||
|
addoption:
|
||||||
|
stosb
|
||||||
|
;Go to the next scene
|
||||||
|
jmp searchscene
|
||||||
|
|
||||||
|
ending:
|
||||||
|
mov si, crlf
|
||||||
|
mov ah, 0x0
|
||||||
|
int 0x21
|
||||||
|
jmp start
|
||||||
|
|
||||||
|
;Return to the system
|
||||||
|
done:
|
||||||
|
int 0x20
|
||||||
|
|
||||||
|
;Data
|
||||||
|
errormsg db "File not found", 0x0
|
||||||
|
sceneid times 0xff db 0x0
|
||||||
|
options db "123456789"
|
||||||
|
crlf db 0xd, 0xa, 0x0
|
||||||
|
|
||||||
|
;***
|
||||||
|
|
||||||
|
;Quit the game
|
||||||
|
readquit:
|
||||||
|
|
||||||
|
;Check for keypress escape
|
||||||
|
cmp al, 0x1b
|
||||||
|
je done
|
||||||
|
|
||||||
|
;Return
|
||||||
|
ret
|
||||||
|
|
||||||
|
;***
|
||||||
|
|
||||||
|
;Stack
|
||||||
|
stack:
|
8
make.sh
8
make.sh
|
@ -19,8 +19,8 @@ zip -r ROT13.ZIP ROT13.BIN ROT13.ASM README.MD CC0 1>/dev/null
|
||||||
mv ROT13.ZIP ..
|
mv ROT13.ZIP ..
|
||||||
cd ..
|
cd ..
|
||||||
|
|
||||||
cd TEMPLE/
|
cd TEMPLENG/
|
||||||
nasm TEMPLE.ASM -f bin -o TEMPLE.BIN
|
nasm TEMPLENG.ASM -f bin -o TEMPLENG.BIN
|
||||||
zip -r TEMPLE.ZIP TEMPLE.BIN TEMPLE.ASM README.MD LICENSE.MD 1>/dev/null
|
zip -r TEMPLENG.ZIP TEMPLENG.BIN TEMPLENG.ASM README.MD LICENSE.MD TEMPLE.DAT 1>/dev/null
|
||||||
mv TEMPLE.ZIP ..
|
mv TEMPLENG.ZIP ..
|
||||||
cd ..
|
cd ..
|
||||||
|
|
Loading…
Reference in New Issue