Pyramid (For TRS80 Level 1 ROM)
Start
Start: 4200: 31 5C 47 LD SP,$475C ; Stack ; ROM Level 2 of the game code clears the screen here 4203: 21 1F 47 LD HL,WelcomeMsg ; "WELCOME TO PYRAMID!!" 4206: CD CB 44 CALL PrintPlain ; Print the message 4209: CD E9 44 CALL WaitForKey ; Wait for a key 420C: 3E 01 LD A,$01 ; Starting room is ... 420E: 32 DC 4F LD (CurrentRoom),A ; ... room 1 4211: CD E2 51 CALL DescribeRoom ; Print room description GameLoop: 4214: 97 SUB A ; A=0 4215: 32 18 46 LD (noun),A ; Clear noun (object within reach) 4218: 32 19 46 LD (verb),A ; Clear verb (throw, north, rub, etc) 421B: 32 1A 46 LD (grammar),A ; Grammar type (verb, verb+nounInReach, verb+nounInPack) 421E: CD CA 42 CALL ParseUserInput ; Get user input line and parse 4221: 3A DC 4F LD A,(CurrentRoom) ; Room number 4224: 21 25 48 LD HL,RoomTable ; Room descriptors 4227: CD 66 42 CALL TableOffsetFourBytes; Get 4 bytes for room 422A: 23 INC HL ; Skip over ... 422B: 23 INC HL ; ... to room's script pointer 422C: 7E LD A,(HL) ; Script ... 422D: 23 INC HL ; ... pointer ... 422E: 66 LD H,(HL) ; ... to ... 422F: 6F LD L,A ; ... HL 4230: CD 78 42 CALL ProcessRoomScript ; Process the room script 4233: C2 45 42 JP NZ,$4245 ; ZF clear ... script was successful. Move on. 4236: 21 04 59 LD HL,GeneralScript ; General script 4239: CD 78 42 CALL ProcessRoomScript ; Process the script 423C: C2 45 42 JP NZ,$4245 ; Process the script 423F: 21 C5 73 LD HL,PS_7F ; General fail message (one of 4 that changes) 4242: CD A9 44 CALL PrintPacked ; Print message 4245: CD 76 50 CALL AfterEveryStep ; After every turn 4248: C3 14 42 JP GameLoop ; Back to get user input
Get Object Info
Every object has a room number. The object might be physically in the room. Or the object might be inside another object that is physically in the room -- or so on recursively.
This function traverses the containers to find out the room number this object and any containers are in.
GetObjectInfo: ; Recurse through carriers to find the room number of the requested object. ; Return HL points to the top level object entry. ; Return ZF is set if top level object room number matches E. 424B: 21 84 4F LD HL,ObjectData ; Information about all the objects 424E: CD 5C 42 CALL TableOffsetTwoBytes ; Room number to 2-byte table entry 4251: 7E LD A,(HL) ; Upper bit set means 2nd byte is object number 4252: E6 80 AND $80 ; Is this object being carried by another? 4254: 23 INC HL ; Second byte (S is not affected) 4255: 7E LD A,(HL) ; Get location (S is not affected) 4256: C2 4B 42 JP NZ,GetObjectInfo ; If this is being carried, recurse to the carrier 4259: 2B DEC HL ; Back to first entry for return 425A: BB CP E ; Room number matches E? 425B: C9 RET TableOffsetTwoBytes: ; HL = HL + (A-1)*2 425C: D5 PUSH DE ; Hold DE 425D: EB EX DE,HL ; HL to DE for later add 425E: 6F LD L,A ; LSB ... 425F: 2D DEC L ; ... minus one 4260: 26 00 LD H,$00 ; Upper byte is 0 4262: 29 ADD HL,HL ; Times 2 (2 byte entries) 4263: 19 ADD HL,DE ; Offset into table 4264: D1 POP DE ; Restore DE 4265: C9 RET ; HL = HL + (A-1)*2 TableOffsetFourBytes: ; HL = HL + (A-1)*4 4266: D5 PUSH DE ; Hold DE 4267: EB EX DE,HL ; HL to DE for later add 4268: 6F LD L,A ; LSB ... 4269: 2D DEC L ; ... minus one 426A: 26 00 LD H,$00 ; Upper byte is 0 426C: 29 ADD HL,HL ; Times 2 426D: 29 ADD HL,HL ; Times 4 (4 byte entries) 426E: 19 ADD HL,DE ; Offset into table 426F: D1 POP DE ; Restore DE 4270: C9 RET ; HL = HL + (A-1)*4 SetObjectLocation: ; Set object's location by recursing containers to the top ; level container and setting the room number. ; E is the new room number for the top level container 4271: CD 4B 42 CALL GetObjectInfo ; Find the parent container 4274: 23 INC HL ; Second entry is location 4275: 73 LD (HL),E ; Set the room number of the parent container 4276: 2B DEC HL ; Back to 1st entry 4277: C9 RET
Process Room Scripts
Each room is a collection of verb and the script commands that go with each verb. We look through the verb-map for the room and run the list of script commands for that verb.
As soon as an individual command fails, we stop the processing of the list. As long as the commands are passing, we continue to run them.
Interestingly, if a command list for a verb FAILS, we continue looking for verb matches in the collection. That allows for multiple command lists to be given for the same verb.
If the user verb matches the collection and all the commands pass, we return with NOT ZERO as a sign of success. If there is no match or if any of the commands fail, we return with ZERO as a sign of failure.
; Process the user input against the script for a room ProcessRoomScript: 4278: 7E LD A,(HL) ; Next byte from script 4279: A7 AND A ; Are we at the end? 427A: C8 RET Z ; Yes, we are done. Return ZERO as FAIL. ; 427B: 3A 19 46 LD A,(verb) ; User's input verb 427E: BE CP (HL) ; Does the input verb match the script verb? 427F: 23 INC HL ; Point to next byte 4280: CA 8A 42 JP Z,$428A ; Yes, dive into this script 4283: 4E LD C,(HL) ; No, get the length of this verb section 4284: 06 00 LD B,$00 ; No script section over 256 bytes! 4286: 09 ADD HL,BC ; Jump to next section 4287: C3 78 42 JP ProcessRoomScript ; Try next script verb ; 428A: CD 91 42 CALL RunScript ; Run the script 428D: C0 RET NZ ; All the commands passed. Return not ZERO as SUCCESS 428E: C3 78 42 JP ProcessRoomScript ; In case there are duplicate verbs -- others might succeed
Run Script
RunScript: 4291: E5 PUSH HL ; Hold the script pointer 4292: 4E LD C,(HL) ; Get the length 4293: 06 00 LD B,$00 ; Point to the end ... 4295: 09 ADD HL,BC ; ... of the script 4296: E3 EX (SP),HL ; Now the end of the script is on the stack 4297: 23 INC HL ; Next byte is the command ; RunScriptCommand: 4298: 7E LD A,(HL) ; Get the command number 4299: 23 INC HL ; Next in command 429A: E5 PUSH HL ; Hold our pointer 429B: 21 3C 50 LD HL,ScriptCommands ; Table of script commands 429E: CD 5C 42 CALL TableOffsetTwoBytes ; Offset into table 42A1: 7E LD A,(HL) ; Hold LSB from table 42A2: 23 INC HL ; Get the ... 42A3: 66 LD H,(HL) ; ... msb to H 42A4: 6F LD L,A ; HL now points to the routine to run 42A5: E9 JP (HL) ; Jump to the command
Script Command PASS
When an individual command succeeds, it comes here. If there are no more commands left in the script, we return with ZF cleared as a sign of success. If there are commands left, we continue running the next one.
ScriptCommandPASS: 42A6: E1 POP HL ; The current script pointer 42A7: D1 POP DE ; The calculated end of the script 42A8: 7C LD A,H ; Are we at the ... 42A9: BA CP D ; ... end of the script? 42AA: C2 B5 42 JP NZ,$42B5 ; No ... keep going 42AD: 7D LD A,L ; Are we at the ... 42AE: BB CP E ; ... end of the script? 42AF: C2 B5 42 JP NZ,$42B5 ; No ... keep going 42B2: F6 01 OR $01 ; Clear the ZERO flag for success 42B4: C9 RET ; Done ; 42B5: D5 PUSH DE ; Put the calculated end of script back on stack 42B6: C3 98 42 JP RunScriptCommand ; Run the next command
Script Command FAIL
When an individual command fails, it comes here. We return ZF set as a sign of failure. No more commands are run.
ScriptCommandFAIL:
42B9: E1 POP HL ; Pop the script pointer
42BA: E1 POP HL ; Pop the calculated end of the script
42BB: AF XOR A ; Set the ZERO flag meaning failure
42BC: C9 RET
COM_07_stop_if_pass()
Run the list of commands (a sub-script). We always return SUCCESS, but if the list completes successfully all the way to the end, we abort the outer script. If the sub-script fails, the we pass to the next command in the outer script.
This gives us the ability to code a line of if/else commands. We keep trying the sub-lists until one finishes completely.
COM_07_stop_if_pass: 42BD: E1 POP HL ; Pop the current pointer 42BE: CD 91 42 CALL RunScript ; Run the list of commands 42C1: E5 PUSH HL ; Current script position 42C2: CA A6 42 JP Z,ScriptCommandPASS ; The list failed ... treat that as a PASS ; The subscript failed. Bail out (with a PASS) 42C5: E1 POP HL ; Pop the current pointer 42C6: E1 POP HL ; Pop the calculated end of list 42C7: F6 01 OR $01 ; Return NOT ZERO ... a PASS 42C9: C9 RET
Parse User Input
ParseUserInput: 42CA: CD 98 45 CALL PromptAndReadLine ; Get the command line from the player 42CD: CD 9D 43 CALL ParseInputString ; Parse the input string 42D0: 2A A5 44 LD HL,(nounPointer) ; Pointer to the noun word 42D3: 3A A3 44 LD A,(numBytesWordData); Number of bytes ... 42D6: 47 LD B,A ; ... in word data 42D7: 3A 1A 46 LD A,(grammar) ; Verb grammar 42DA: FE 03 CP $03 ; Value 3 means stand alone verb 42DC: CA CA 42 JP Z,ParseUserInput ; We needed a noun before but didn't get one. Get it now. 42DF: 3A 18 46 LD A,(noun) ; Do we have .. 42E2: A7 AND A ; ... a noun? 42E3: C2 17 43 JP NZ,$4317 ; Yes, go check it 42E6: 3A 19 46 LD A,(verb) ; Otherwise, do we have ... 42E9: A7 AND A ; ... a verb? 42EA: C2 08 43 JP NZ,$4308 ; Yes, go handle it ; ; General error message ... didn't understand a thing 42ED: 3A 1B 46 LD A,(nextErrorString) ; Last general error message 42F0: 3C INC A ; Point to next 42F1: E6 03 AND $03 ; Roll around over 4 messages 42F3: 32 1B 46 LD (nextErrorString),A ; For next time 42F6: 21 1C 46 LD HL,ErrorString1 ; Table of general error messages 42F9: 07 RLCA ; Two bytes each 42FA: 4F LD C,A ; All ... 42FB: 06 00 LD B,$00 ; ... this ... 42FD: 09 ADD HL,BC ; ... to ... 42FE: 7E LD A,(HL) ; ... add ... 42FF: 23 INC HL ; ... C ... 4300: 66 LD H,(HL) ; ... to ... 4301: 6F LD L,A ; ... HL 4302: CD CB 44 CALL PrintPlain ; Print the error 4305: C3 CA 42 JP ParseUserInput ; Back for more ; 4308: 3A 1A 46 LD A,(grammar) ; Action word type 430B: FE C0 CP $C0 ; 11_000_000 means single word command 430D: C8 RET Z ; Input is just one word, we are done 430E: 21 9A 46 LD HL,unknownVerb ; Unknown verb 4311: CD CB 44 CALL PrintPlain ; Print "verb WHAT?" (was expecting an object) 4314: C3 CA 42 JP ParseUserInput ; Try again ; ; Validate noun 4317: 22 A5 44 LD (nounPointer),HL ; Save pointer to noun word data 431A: 3A 9C 43 LD A,(isLoneObject) ; Was the last input an object and ... 431D: A7 AND A ; ... we then asked for a verb? 431E: C2 89 43 JP NZ,$4389 ; Yes, skip checking the noun (use what we have) 4321: 7E LD A,(HL) ; Get the object number 4322: 23 INC HL ; Next word 4323: 22 A5 44 LD (nounPointer),HL ; Noun word data pointer 4326: 1E FF LD E,$FF ; Backpack location 4328: C5 PUSH BC ; Save BC 4329: CD 4B 42 CALL GetObjectInfo ; Look up the requested object 432C: C1 POP BC ; Restore BC 432D: CA 81 43 JP Z,$4381 ; Object is actually in pack ... go use it 4330: 3A 1A 46 LD A,(grammar) ; Grammar type 4333: FE 40 CP $40 ; 01_000_000 means noun-in-pack 4335: CA 49 43 JP Z,$4349 ; Yes, check the backpack 4338: 2A A5 44 LD HL,(nounPointer) ; Noun word pointer 433B: 2B DEC HL ; Back up the word pointer 433C: 3A DC 4F LD A,(CurrentRoom) ; Is ... 433F: 5F LD E,A ; ... this ... 4340: 7E LD A,(HL) ; ... object ... 4341: C5 PUSH BC ; ... in the ... 4342: CD 4B 42 CALL GetObjectInfo ; ... current room? 4345: C1 POP BC ; Restore BC 4346: CA 81 43 JP Z,$4381 ; Yes, go use it 4349: 2A A5 44 LD HL,(nounPointer) ; Restore word data pointer 434C: 05 DEC B ; All objects of this name tried? 434D: C2 21 43 JP NZ,$4321 ; No ... keep looking for matching object ; ; Object not found (either not in pack or not in room depending on verb requirements) 4350: 3A 1A 46 LD A,(grammar) ; Grammar type 4353: FE 40 CP $40 ; 01_000_000 means noun-in-pack 4355: C2 5E 43 JP NZ,$435E ; Error ... can't find noun in room 4358: 21 35 46 LD HL,MsgNotCarrying ; "YOU_AREN'T_CARRYING_IT." 435B: C3 77 43 JP $4377 ; Print error and back to try again 435E: 21 24 46 LD HL,MsgISeeNo ; "I_SEE_NO_" 4361: CD CB 44 CALL PrintPlain ; First fragment 4364: 3E 01 LD A,$01 ; Replace '?' with ... 4366: 32 98 46 LD (unknownNounPunct),A; ... no-CR terminator. 4369: 21 70 46 LD HL,unknownNoun ; Buffer for unknown word 436C: CD CB 44 CALL PrintPlain ; Print unknown word 436F: 3E 3F LD A,$3F ; Restore the ... 4371: 32 98 46 LD (unknownNounPunct),A; ... question mark character 4374: 21 2E 46 LD HL,MsgHere ; "_HERE." 4377: CD CB 44 CALL PrintPlain ; Print the last fragment of error 437A: 97 SUB A ; Clear ... 437B: 32 18 46 LD (noun),A ; ... the unknown noun 437E: C3 CA 42 JP ParseUserInput ; Back to try again ; ; Found object 4381: 2A A5 44 LD HL,(nounPointer) ; 4384: 2B DEC HL ; Back up to start 4385: 7E LD A,(HL) ; Get the object number 4386: 32 18 46 LD (noun),A ; Hold the noun 4389: 3A 19 46 LD A,(verb) ; Get the verb 438C: A7 AND A ; Noun and verb? 438D: C0 RET NZ ; Yes, done 438E: 21 4D 46 LD HL,MsgWhatDoWith ; "WHAT_DO_YOU_WANT_ME_TO_DO_WITH_THE_"+noun+"?" 4391: CD CB 44 CALL PrintPlain ; Print first fragment 4394: 3E 01 LD A,$01 ; Flag that we ... 4396: 32 9C 43 LD (isLoneObject),A ; ... are prompting for a verb only 4399: C3 CA 42 JP ParseUserInput ; Back to get user input isLoneObject: 439C: 00 ; 1 if there was a lone object given last input
Tokenize the input
Parse the input into words.
ParseInputString: 439D: 21 F7 45 LD HL,InputBuffer ; Start of user input buffer 43A0: 97 SUB A ; Clear the ... 43A1: 32 A4 44 LD (bufferHasSomething),A; ... buffer-has-something flag 43A4: 32 1A 46 LD (grammar),A ; ... and the grammar ; 43A7: 11 22 56 LD DE,WordTable ; Pointer to all the words we know 43AA: EB EX DE,HL ; Now HL=words we know, DE=where we are in the input 43AB: 22 16 47 LD (currentParsePtr),HL; Hold our current spot in the word table 43AE: EB EX DE,HL ; Now HL=where we are in input, DE=where we are in words ; ; Skip over blank spaces before next word 43AF: 7E LD A,(HL) ; Ignore ... 43B0: FE 20 CP $20 ; ... all ... 43B2: C2 B9 43 JP NZ,$43B9 ; ... leading ... 43B5: 23 INC HL ; ... blank ... 43B6: C3 AF 43 JP $43AF ; ... spaces 43B9: 22 18 47 LD (startOfWord),HL ; start of this word 43BC: A7 AND A ; Nothing but spaces? 43BD: CA 57 44 JP Z,$4457 ; Yes, we are done parsing ; 43C0: 3E 01 LD A,$01 ; There is SOMETHING ... 43C2: 32 A4 44 LD (bufferHasSomething),A; ... in the buffer 43C5: E5 PUSH HL ; Hold the pointer 43C6: 1A LD A,(DE) ; First byte of word table 43C7: A7 AND A ; Reached the end of the table? 43C8: CA 62 44 JP Z,$4462 ; Done tokenizing ... now have a look at the words 43CB: 32 1E 47 LD (wordBeingTested),A ; Hold 1st byte of word being tested 43CE: E6 07 AND $07 ; Number of bytes ... 43D0: 4F LD C,A ; ... in ... 43D1: 32 1A 47 LD (charsInWord),A ; ... current word text 43D4: 3A 1E 47 LD A,(wordBeingTested) ; We'll need that info byte several times 43D7: E6 38 AND $38 ; Number ... 43D9: 0F RRCA ; ... of ... 43DA: 0F RRCA ; ... bytes ... 43DB: 0F RRCA ; ... in ... 43DC: 47 LD B,A ; word data 43DD: EB EX DE,HL ; Save our current ... 43DE: 22 16 47 LD (currentParsePtr),HL; ... position in the input 43E1: EB EX DE,HL ; Shuffle our pointers back 43E2: 13 INC DE ; Get next from ... 43E3: 1A LD A,(DE) ; ... input buffer 43E4: BE CP (HL) ; Does it match the word we are testing? 43E5: C2 49 44 JP NZ,FindEndOfTestWord; No, try next word 43E8: 23 INC HL ; Next in input 43E9: 13 INC DE ; Next in word text 43EA: 0D DEC C ; All characters of word being tested? 43EB: C2 E3 43 JP NZ,$43E3 ; No, keep testing 43EE: 3A 1A 47 LD A,(charsInWord) ; Number of characters in the test word 43F1: FE 06 CP $06 ; Six is the max size EXCEPT FOR "SCEPTER" WHICH IS 7 -- BUG? 43F3: CA 00 44 JP Z,FindEndOfInputWord; Six matched ... ignore the rest of the input ; 43F6: 7E LD A,(HL) ; Not six ... is the next input ... 43F7: FE 20 CP $20 ; ... a space? 43F9: CA 0E 44 JP Z,$440E ; Yes ... we are ready for next word 43FC: A7 AND A ; Maybe the end of the input buffer? 43FD: C2 4E 44 JP NZ,FindEndOfTestData; No ... not a match ; FindEndOfInputWord: 4400: 7E LD A,(HL) ; Next in buffer is ... 4401: FE 20 CP $20 ; ... a space? 4403: CA 0E 44 JP Z,$440E ; Yes, end of word success 4406: A7 AND A ; End of input buffer? 4407: CA 0E 44 JP Z,$440E ; Yes, end of word success 440A: 23 INC HL ; Next character in input 440B: C3 00 44 JP FindEndOfInputWord ; Find end of word ; 440E: 3A 1E 47 LD A,(wordBeingTested) ; 4411: E6 C0 AND $C0 ; Is the word a noun? (anything else is a verb) 4413: CA 28 44 JP Z,$4428 ; Yes ... record the noun 4416: 32 1A 46 LD (grammar),A ; Hold the verb's grammar 4419: 1A LD A,(DE) ; Get the verb number ... 441A: 32 19 46 LD (verb),A ; ... from script (lots of words might map to same number) 441D: E5 PUSH HL ; Hold input pointer 441E: 21 9A 46 LD HL,unknownVerb ; Storage for unknownVerb 4421: CD 80 44 CALL CopyWord ; Copy input to the unknownVerb storage 4424: E1 POP HL ; Restore pointer 4425: C3 41 44 JP $4441 ; Skip spaces and next word ; 4428: 1A LD A,(DE) ; Store the ... 4429: 32 18 46 LD (noun),A ; ... noun number (several words might match) 442C: EB EX DE,HL ; Get HL into position 442D: 22 A5 44 LD (nounPointer),HL ; Store pointer to noun 4430: EB EX DE,HL ; Restore pointer positions 4431: 78 LD A,B ; Number of bytes ... 4432: 32 A3 44 LD (numBytesWordData),A; ... of data for this word 4435: 97 SUB A ; Clear the ... 4436: 32 9C 43 LD (isLoneObject),A ; ... isLoneObject flag (we have a verb) 4439: E5 PUSH HL ; Hold 443A: 21 70 46 LD HL,unknownNoun ; Copy the ... 443D: CD 80 44 CALL CopyWord ; ... input noun 4440: E1 POP HL ; Restore 4441: 7E LD A,(HL) ; From input 4442: FE 20 CP $20 ; Is it a space? 4444: D1 POP DE ; Restore 4445: CA A7 43 JP Z,$43A7 ; Yes ... decode the next word 4448: C9 RET ; Done ; FindEndOfTestWord: 4449: 13 INC DE ; Skip ... 444A: 0D DEC C ; ... all characters ... 444B: C2 49 44 JP NZ,FindEndOfTestWord; ... in test word ; FindEndOfTestData: 444E: 13 INC DE ; Next in word text data 444F: 05 DEC B ; Reached the end of the test word? 4450: C2 4E 44 JP NZ,FindEndOfTestData; No, move to the end ; 4453: E1 POP HL ; Restore pointer to input 4454: C3 AF 43 JP $43AF ; Skip blank spaces in input ; 4457: 3A A4 44 LD A,(bufferHasSomething); Is the buffer ... 445A: A7 AND A ; ... empty? 445B: C0 RET NZ ; YES, we are done ; 445C: 3E 03 LD A,$03 ; Stand alone ... 445E: 32 1A 46 LD (grammar),A ; ... verb 4461: C9 RET ; Done ; 4462: E1 POP HL ; Restore pointer to input 4463: 97 SUB A ; Zero the ... 4464: 32 19 46 LD (verb),A ; ... verb 4467: 32 18 46 LD (noun),A ; And the noun 446A: 7E LD A,(HL) ; Next input 446B: FE 20 CP $20 ; Is it a space? 446D: C2 74 44 JP NZ,SkipInputWord ; No, go process it 4470: 23 INC HL ; Skip ... 4471: C3 6A 44 JP $446A ; ... blank spaces ; SkipInputWord: 4474: 7E LD A,(HL) ; End of ... 4475: A7 AND A ; ... user input? 4476: C8 RET Z ; Yes, we are done 4477: FE 20 CP $20 ; Space? 4479: CA A7 43 JP Z,$43A7 ; Yes, go lookup any word that follows 447C: 23 INC HL ; Keep skipping ... 447D: C3 74 44 JP SkipInputWord ; ... input word CopyWord: 4480: EB EX DE,HL ; Now DE=storage 4481: 2A 18 47 LD HL,(startOfWord) ; 4484: 06 28 LD B,$28 ; 40 chars max in storage for word 4486: 7E LD A,(HL) ; From input buffer 4487: A7 AND A ; End of the buffer? 4488: CA 9A 44 JP Z,$449A ; Yes ... done 448B: FE 20 CP $20 ; Is it a space betwen words? 448D: CA 9A 44 JP Z,$449A ; Yes ... done 4490: 12 LD (DE),A ; Store input word char to storage 4491: 23 INC HL ; Next input 4492: 13 INC DE ; Next storage 4493: 05 DEC B ; Count down remaining storage 4494: 78 LD A,B ; Storage all ... 4495: FE 01 CP $01 ; ... full? 4497: C2 86 44 JP NZ,$4486 ; No ... keep copying 449A: 3E 40 LD A,$40 ; Fill ... 449C: 12 LD (DE),A ; ... remainder of ... 449D: 13 INC DE ; ... storage ... 449E: 05 DEC B ; ... with ... 449F: C2 9A 44 JP NZ,$449A ; ... the "@" character 44A2: C9 RET numBytesWordData: 44A3: 00 bufferHasSomething: 44A4: 00 ; 0 if the input buffer is empty or 1 if there is input nounPointer: 44A5: 00 00 ; unused 44A7: 00 00
Print Packed
PrintPacked: ; Unpack a message (or multiple packed messages) and print. ; HL is pointer to message 44A9: 7E LD A,(HL) ; Next byte of data 44AA: A7 AND A ; Return if we are ... 44AB: C8 RET Z ; ... at the end ; 44AC: 23 INC HL ; Next in string 44AD: 11 F7 45 LD DE,InputBuffer ; Destination buffer 44B0: CD 5F 47 CALL UnpackStringToScreen; Unpack the string 44B3: 7E LD A,(HL) ; Character from string 44B4: A7 AND A ; 0 means end with a carriage return? 44B5: CA E2 44 JP Z,PrintCarriageReturn; Yes, print carriage return and out 44B8: FE 01 CP $01 ; 1 means end with nothing? 44BA: C8 RET Z ; Yes, just return 44BB: 47 LD B,A ; Print ... 44BC: E5 PUSH HL ; ... the ... 44BD: CD 92 45 CALL PrintChar ; ... character 44C0: E1 POP HL ; Restore pointer to string 44C1: 7E LD A,(HL) ; Character we just printed 44C2: FE 0A CP $0A ; Line feed means start a new unpack/print? 44C4: 23 INC HL ; Point to next character 44C5: CA A9 44 JP Z,PrintPacked ; Yes, start a new unpack/print 44C8: C3 B3 44 JP $44B3 ; No, continue with current unpacked string PrintPlain: ; HL points to message terminated by ; - 0 : add a CR on the end and return ; - 1 : no CR on the end and return ; Return with B holding last character (if any) sent to ROM routine. ; 44CB: 7E LD A,(HL) ; Next character 44CC: A7 AND A ; 0 means end with a line feed? 44CD: CA E2 44 JP Z,PrintCarriageReturn; Yes, print line feed and out 44D0: FE 01 CP $01 ; 1 means end with nothing? 44D2: C8 RET Z ; Yes, just return 44D3: FE 40 CP $40 ; Character is 40 (ignore)? 44D5: CA DE 44 JP Z,$44DE ; Yes, just ingore the character 44D8: 47 LD B,A ; Print ... 44D9: E5 PUSH HL ; ... the ... 44DA: CD 92 45 CALL PrintChar ; ... character 44DD: E1 POP HL ; Restore pointer to string 44DE: 23 INC HL ; Next character in string 44DF: C3 CB 44 JP PrintPlain ; ; PrintCarriageReturn: 44E2: 06 0D LD B,$0D ; Print ... 44E4: 78 LD A,B ; ... carriage ... 44E5: CD 92 45 CALL PrintChar ; ... return 44E8: C9 RET
Wait for key
WaitForKey: 44E9: D5 PUSH DE ; ROM routine mangles this 44EA: 3A 11 47 LD A,(keyWaitCounter) ; Bump the ... 44ED: 3C INC A ; ... counter used for ... 44EE: 32 11 47 LD (keyWaitCounter),A ; ... random numbers 44F1: CD FA 44 CALL $44FA ; Call the ROM routine to scan the keyboard 44F4: A7 AND A ; Any key typed? 44F5: CA EA 44 JP Z,$44EA ; No, keep waiting 44F8: D1 POP DE ; Restore our DE 44F9: C9 RET ; Return key in A ; The LEVEL 2 ROM has a ROM function to read the keyboard (002B). The LEVEL 1 ; does not. This code simulates that ROM call. I wonder if the LEVEL 2 code ; was written first then back-ported to LEVEL 1. The fact that this routine ; appears after the above caller seems to suggest that. 44FA: E5 PUSH HL 44FB: D5 PUSH DE 44FC: C5 PUSH BC 44FD: CD 04 45 CALL $4504 ; 4500: C1 POP BC 4501: D1 POP DE 4502: E1 POP HL 4503: C9 RET 4504: 21 8B 45 LD HL,$458B 4507: 01 01 38 LD BC,$3801 450A: 16 00 LD D,$00 450C: 0A LD A,(BC) 450D: 5F LD E,A 450E: AE XOR (HL) 450F: 73 LD (HL),E 4510: A3 AND E 4511: C2 1D 45 JP NZ,$451D ; 4514: 14 INC D 4515: 2C INC L 4516: CB 01 RLC C 4518: F2 0C 45 JP P,$450C ; 451B: 97 SUB A 451C: C9 RET 451D: 5F LD E,A 451E: C5 PUSH BC 451F: 01 DC 05 LD BC,$05DC 4522: CD 7C 45 CALL $457C ; 4525: C1 POP BC 4526: 0A LD A,(BC) 4527: A3 AND E 4528: C8 RET Z 4529: 7A LD A,D 452A: 07 RLCA 452B: 07 RLCA 452C: 07 RLCA 452D: 57 LD D,A 452E: 0E 01 LD C,$01 4530: 79 LD A,C 4531: A3 AND E 4532: C2 3B 45 JP NZ,$453B ; 4535: 14 INC D 4536: CB 01 RLC C 4538: C3 30 45 JP $4530 ; 453B: 3A 80 38 LD A,($3880) 453E: 47 LD B,A 453F: 7A LD A,D 4540: C6 40 ADD $40 4542: FE 60 CP $60 4544: D2 51 45 JP NC,$4551 ; 4547: CB 08 RRC B 4549: D2 71 45 JP NC,$4571 ; 454C: C6 20 ADD $20 454E: C3 71 45 JP $4571 ; 4551: D6 70 SUB $70 4553: D2 69 45 JP NC,$4569 ; 4556: C6 40 ADD $40 4558: FE 3C CP $3C 455A: DA 5F 45 JP C,$455F ; 455D: EE 10 XOR $10 455F: CB 08 RRC B 4561: D2 71 45 JP NC,$4571 ; 4564: EE 10 XOR $10 4566: C3 71 45 JP $4571 ; 4569: 21 83 45 LD HL,$4583 456C: 4F LD C,A 456D: 06 00 LD B,$00 456F: 09 ADD HL,BC 4570: 7E LD A,(HL) 4571: 57 LD D,A 4572: 01 AC 0D LD BC,$0DAC 4575: CD 7C 45 CALL $457C ; 4578: 7A LD A,D 4579: FE 01 CP $01 457B: C9 RET 457C: 0B DEC BC 457D: 78 LD A,B 457E: B1 OR C 457F: C2 7C 45 JP NZ,$457C ; 4582: C9 RET 4583: 0D 1F 01 5B 0A 08 09 20 458B: 00 00 00 00 00 00 00
Print Char
PrintChar:
4592: D5 PUSH DE ; ROM routine mangles this
4593: CD 10 00 CALL $0010 ; Send character A to the screen
4596: D1 POP DE ; Restore our DE
4597: C9 RET
Prompt And Read Line
PromptAndReadLine: 4598: 06 3A LD B,$3A ; Colon ":" 459A: 78 LD A,B ; User starts typing after ... 459B: CD 92 45 CALL PrintChar ; ... the colon 459E: 21 F7 45 LD HL,InputBuffer ; Start of the input buffer 45A1: 0E 00 LD C,$00 ; Input character count (0 to start) ; 45A3: E5 PUSH HL ; Hold ... 45A4: C5 PUSH BC ; ... all ... 45A5: D5 PUSH DE ; ... our registers 45A6: CD E9 44 CALL WaitForKey ; 45A9: D1 POP DE ; Restore ... 45AA: C1 POP BC ; ... all ... 45AB: E1 POP HL ; ... our registers 45AC: 47 LD B,A ; Key from the user 45AD: FE 08 CP $08 ; Backspace? 45AF: CA D4 45 JP Z,BackSpace ; Yes, handle erasing a character 45B2: 77 LD (HL),A ; Store the key in the bufer 45B3: CD 92 45 CALL PrintChar ; Echo the key to the screen 45B6: FE 0D CP $0D ; Was it an ENTER? 45B8: CA F4 45 JP Z,InputDone ; Yes, we are done 45BB: 0C INC C ; Increment the character count 45BC: 23 INC HL ; Next in buffer 45BD: 11 17 46 LD DE,OnePastInput ; One past the end of the input buffer 45C0: 7C LD A,H ; Overflowed the ... 45C1: BA CP D ; ... buffer? 45C2: DA A3 45 JP C,$45A3 ; No, keep taking keys 45C5: 7D LD A,L ; Overflowed the ... 45C6: BB CP E ; ... buffer? 45C7: DA A3 45 JP C,$45A3 ; No, keep taking keys 45CA: 06 08 LD B,$08 ; Print ... 45CC: 78 LD A,B ; ... backspace to ... 45CD: CD 92 45 CALL PrintChar ; ... ignore input 45D0: 2B DEC HL ; Remove the input from the end of the buffer 45D1: C3 A3 45 JP $45A3 ; Back for more input BackSpace: 45D4: 2B DEC HL ; Back up the buffer pointer 45D5: 3E 45 LD A,$45 ; Underflowed the ... 45D7: BC CP H ; ... buffer? 45D8: DA E1 45 JP C,$45E1 ; No ... keep it 45DB: 7D LD A,L ; Underflowed the ... 45DC: FE F7 CP $F7 ; ... buffer? 45DE: DA 9E 45 JP C,$459E ; Yes ... set to start of buffer 45E1: 3E 08 LD A,$08 ; Remove the character ... 45E3: 47 LD B,A ; ... from the ... ; ; In the Level 2 ROM, this is where we print the backspace. It is a little different ; here, but the first two instructions of that remain above -- needlessly. ; ; Level 1 ROM code must maintain its own cursor. We use the minus "-", and we write ; it to the screen memory. ; 45E4: E5 PUSH HL ; Hold AL 45E5: 2A 68 40 LD HL,($4068) ; ROM's screen cursor 45E8: 36 20 LD (HL),$20 ; Replace last typed with a space 45EA: 2B DEC HL ; Back up the ... 45EB: 22 68 40 LD ($4068),HL ; ... screen pointer 45EE: 36 5F LD (HL),$5F ; Put a 5F cursor on the end 45F0: E1 POP HL ; Restore HL 45F1: C3 A3 45 JP $45A3 ; Back for more input InputDone: 45F4: 36 00 LD (HL),$00 ; Put the null terminator on the end of the input 45F6: C9 RET
Input Buffer
; 40 bytes of memory for input InputBuffer: ; UNINITIALIZED MEMORY 45F7: 20 20 43 41 4C 4C 20 31 46 38 48 0D ; " CALL 1F8H" 4603: 11 30 30 30 30 20 20 4A 4D 50 20 52 43 4F 4E 54 0D ; "0000 JMP RCONT" 4614: 08 30 30 ; "00" ... ; ; This is from the "Code.md" file at the end of "LoadTape" ; -- "---- CALL 1F8H" 0D ; Turn cassette off ; 11 "0000 JMP RCONT" 0D ; ; 08 "00----" -- ; Must have been a blank like OnePastInput: ; Really UNUSED, but having this makes a label reference above 4617: 00 ; Never written to noun: 4618: 00 verb: 4619: 00 grammar: 461A: 00 nextErrorString: 461B: 00 ; Which error string do we show next? 0, 1, 2, or 3 ErrorString1: 461C: C2 46 ; " WHAT?" ErrorString2: 461E: C9 46 ; "I DON'T KNOW THAT WORD." ErrorString3: 4620: E1 46 ; "I DON'T UNDERSTAND." ErrorString4: 4622: F5 46 ; "I DON'T KNOW WHAT YOUR MEAN." ; I_SEE_NO_ MsgISeeNo: 4624: 49 20 53 45 45 20 4E 4F 20 01 ; _HERE. MsgHere: 462E: 20 48 45 52 45 2E 00 ; YOU_AREN'T_CARRYING_IT. MsgNotCarrying: 4635: 59 4F 55 20 41 52 45 4E 27 54 20 43 41 52 52 59 49 4E 47 20 49 54 2E 00 ; WHAT_DO_YOU_WANT_ME_TO_DO_WITH_THE_ MsgWhatDoWith: 464D: 57 48 41 54 20 44 4F 20 59 4F 55 20 57 41 4E 54 20 4D 45 20 54 4F 20 44 4F 20 57 49 54 48 20 54 466D: 48 45 20 ; 40 byte buffer for unknown noun word unknownNoun: ; UNINITIALIZED MEMORY 4670: 2C 41 0D ; ... ",A",0D 4673: 12 30 30 30 30 20 20 4C 58 49 20 48 2C 52 41 4C 31 0D ; 12,"0000 LXI H,RAL1",0D 4685: 14 30 30 30 30 20 43 4E 41 4C 4C 20 4D 4F 56 20 41 2C 4D ; 14,"0000 CNALL MOV A,M",0D unknownNounPunct: ; "?" 4698: 3F 00 ; The code changes this depending on the sentence ; 40 byte buffer for unknown verb unknownVerb: ; UNINITIALIZED MEMORY 469A: 30 30 30 30 20 20 49 4E 58 20 48 0D ; "0000 INX H",0D 46A6: 0D 30 30 30 30 20 20 41 4E 41 20 41 0D ; 0D,"0000 ANA A",0D 46B3: 10 30 30 30 30 20 20 4A 5A 20 43 4E 41 4C 4C ; 10,"0000 JZ CNALL" ; Putting the two holes together, it matches the Z80 starting at 55ED: ; ; -- "-----------,A" 0D --> 55ED: 47 LD B,A ; To B ; 12 "0000 LXI H,RAL1" 0D --> 55EE: 21 69 49 LD HL,$4969 ; {+code.room_1} start of room scripts ; 14 "0000 CNALL MOV A,M" -- --> 55F1: 7E LD A,(HL) ; Get the verb number ; -- "0000 INX H" 0D --> 55F2: 23 INC HL ; Next byte ; 0D "0000 ANA A" 0D --> 55F3: A7 AND A ; End of the script for this room? ; 10 "0000 JZ CNALL" 0D --> 55F4: CA F1 55 JP Z,$55F1 ; {code.CNALL} Yes ... ignore the ... ErrorString1: ;" WHAT?" 46C2: 20 57 48 41 54 3F 00 ErrorString2: ; "I DON'T KNOW THAT WORD." 46C9: 49 20 44 4F 4E 27 54 20 4B 4E 4F 57 20 54 48 41 54 20 57 4F 52 44 2E 00 ErrorString3: ; "I DON'T UNDERSTAND." 46E1: 49 20 44 4F 4E 27 54 20 55 4E 44 45 52 53 54 41 4E 44 2E 00 ErrorString4: ; "I DON'T KNOW WHAT YOU MEAN." 46F5: 49 20 44 4F 4E 27 54 20 4B 4E 4F 57 20 57 48 41 54 20 59 4F 55 20 4D 45 41 4E 2E 00 keyWaitCounter: 4711: 00 ; Entropy for random numbers ; unused 4712: 00 00 00 00 currentParsePtr: 4716: 00 00 startOfWord: 4718: 00 00 ; Input buffer start of word we are tokenizing charsInWord: 471A: 00 ; Number of characters in the test word while tokenizing ; unused 471B: 00 00 00 wordBeingTested: 471E: 00 ; "WELCOME TO PYRAMID!!" WelcomeMsg: 471F: 57 45 4C 43 4F 4D 45 20 54 4F 20 50 59 52 41 4D 49 44 21 21 00 ; The stack pointer is initialized to 475C. The Z80 SP decrements-before-store. ; Thus stack is 40 bytes of uninitialized memory: ; UNINITIALIZED MEMORY 4734: 4E 41 4C 32 0D ; ... "NAL2" 4739: 0F 30 30 30 30 20 20 4D 56 49 20 41 2C 34 0D ; "0000 MVI A,4" 4748: 14 30 30 30 30 20 43 4E 41 4C 32 20 4D 4F 56 20 4D 2C 41 0D ; "0000 CNAL2 MOV M,A" ; Continuing from the original source above: ; ; -- "---------NAL2" 0D --> 5605: C2 0A 56 JP NZ,$560A ; {code.CNAL2} Are we in 1, ... ; 0F "0000 MVI A,4" 0D --> 5608: 3E 04 LD A,$04 ; We rolled around. 0 becomes 4. ; 14 "0000 CNAL2 MOV M,A" 0D --> 560A: 77 LD (HL),A ; New verb number TopOfStack: ; The Z80 stack decrements before write. The 40 bytes above are the uninitialized ; memory reserved for the statck. 475C: 00 EmptyString: 475D: 00 00 ; For objects that have no descriptions
Packed strings
By limiting a character to 40 possible values, we can pack three characters into 2 bytes:
40 x 40 x 40 = 64,000 (just shy of 65,536)
The 40 characters from CharTable: ?!2_"'<>/03ABCDEFGHIJKLMNOPQRSTUVWXYZ-,.
The first byte of a packed string is the number of words to unpack. Other printable characters may be listed after that with a 0 terminating the string.
For instance, PS_02:
; YOU_ARE_IN_THE_DESERT. 07 C7 DE 94 14 4B 5E 96 96 DB 72 F5 59 3E 62 2E 00
There are 7 words to unpack (14 bytes) followed by the "2E" period and the null terminator 0.
Each double word is listed LSB first. The first word to unpack is 0xDEC7.
val = 0x1494 c1 = val % 40 # 31 -> 'U' val //= 40 c2 = val % 40 # 25 -> 'O' val //= 40 c3 = val % 40 # 35 -> 'Y'
Which gives us 'YOU' (reversed order).
Next is 1419:
c1 = 28 -> 'R' c2 = 11 -> 'A' c3 = 3 -> '_' (really the space character)
Bringing us to "YOU_AR", and so on.
UnpackStringToScreen: 475F: 32 21 48 LD (unpackNumWords),A ; Number of words to unpack 4762: 3E 01 LD A,$01 ; We are unpacking to ... 4764: 32 24 48 LD (unpackFlagToScreen),A; ... the screen 4767: C3 71 47 JP $4771 ; Do the unpack ; UnpackStringToBuffer: ; Never used 476A: 32 21 48 LD (unpackNumWords),A ; Number of words to unpack 476D: 97 SUB A ; We are unpacking to ... 476E: 32 24 48 LD (unpackFlagToScreen),A; ... the buffer ; ; HL points to data to unpack ; DE points to unpack buffer (just 3 bytes if going to screen) 4771: E5 PUSH HL ; Hold the pointer to the words ; 4772: 06 03 LD B,$03 ; Three characters to extract from word 4774: E1 POP HL ; Get the ... 4775: 7E LD A,(HL) ; ... MSB of the word 4776: 23 INC HL ; Get the ... 4777: 4E LD C,(HL) ; ... LSB of the word 4778: 23 INC HL ; Update the pointer ... 4779: E5 PUSH HL ; ... to the words 477A: 61 LD H,C ; Data word ... 477B: 6F LD L,A ; ... to HL 477C: 13 INC DE ; Skip to end ... 477D: 13 INC DE ; ... we are storing in reverse 477E: EB EX DE,HL ; Now HL=buffer and DE=data 477F: E5 PUSH HL ; Hold pointer to the buffer 4780: C5 PUSH BC ; Hold our count to 3 ; 4781: 21 28 00 LD HL,$0028 ; The value of ... 4784: 22 22 48 LD (valueOfForty),HL ; ... 40 for division (repeated subtraction) 4787: 21 B7 47 LD HL,shiftCount ; We stop after ... 478A: 36 11 LD (HL),$11 ; ... 16 shifts (end + 1 = 17) 478C: 01 00 00 LD BC,$0000 ; Value we are extracting 478F: C5 PUSH BC ; Hold the value on the stack 4790: 7B LD A,E ; Shift ... 4791: 17 RLA ; ... DE ... 4792: 5F LD E,A ; ... left ... 4793: 7A LD A,D ; ... one ... 4794: 17 RLA ; ... bit ... 4795: 57 LD D,A ; ... bit goes to CF 4796: 35 DEC (HL) ; All shifts done? 4797: E1 POP HL ; Current extracted value from stack 4798: CA B8 47 JP Z,$47B8 ; Yes, store the extracted character 479B: 3E 00 LD A,$00 ; Left bit ... 479D: CE 00 ADC $00 ; ... to A 479F: 29 ADD HL,HL ; Value = value * 2 47A0: 44 LD B,H ; MSB 47A1: 85 ADD A,L ; 47A2: 2A 22 48 LD HL,(valueOfForty) ; 47A5: 95 SUB L ; 47A6: 4F LD C,A ; 47A7: 78 LD A,B ; TODO figure out the exact math here 47A8: 9C SBC H ; 47A9: 47 LD B,A ; 47AA: C5 PUSH BC ; 47AB: D2 B0 47 JP NC,$47B0 ; Less than 40 ... skip adding 47AE: 09 ADD HL,BC ; Greater or equal, add to the extracted value 47AF: E3 EX (SP),HL ; New value back to stack 47B0: 21 B7 47 LD HL,shiftCount ; 47B3: 3F CCF ; Clear carry for next math 47B4: C3 90 47 JP $4790 ; Do all bits shiftCount: 47B7: 00 ; Count of shifts during the unpack algorithm 47B8: 01 F9 47 LD BC,CharTable ; Offset to character table 47BB: 09 ADD HL,BC ; Offset to the character in the table 47BC: 7E LD A,(HL) ; Get the character 47BD: C1 POP BC ; Restore the count in B 47BE: E1 POP HL ; Restore the pointer to buffer 47BF: 77 LD (HL),A ; Store the character in the buffer 47C0: 2B DEC HL ; Working backwards in sets of 3 47C1: 05 DEC B ; All 3 values extracted? 47C2: C2 7F 47 JP NZ,$477F ; No, go get them all 47C5: 3A 24 48 LD A,(unpackFlagToScreen); Unpacking to ... 47C8: A7 AND A ; ... a buffer? 47C9: CA E1 47 JP Z,$47E1 ; Yes, skip screen printing ; 47CC: E5 PUSH HL ; Hold ... 47CD: C5 PUSH BC ; ... our ... 47CE: D5 PUSH DE ; ... progress ... 47CF: 1E 03 LD E,$03 ; Three characters to print 47D1: 23 INC HL ; Next to print 47D2: 46 LD B,(HL) ; Get the character 47D3: E5 PUSH HL ; Hold the buffer pointer 47D4: 78 LD A,B ; To B 47D5: CD 92 45 CALL PrintChar ; Print the unpacked character 47D8: E1 POP HL ; Restore buffer pointer 47D9: 23 INC HL ; Next in buffer 47DA: 1D DEC E ; All 3 printed? 47DB: C2 D2 47 JP NZ,$47D2 ; No, print the 3 we just unpacked 47DE: D1 POP DE ; Restore ... 47DF: C1 POP BC ; ... our ... 47E0: E1 POP HL ; ... progress ; 47E1: EB EX DE,HL ; Now HL=data and DE=buffer 47E2: 13 INC DE ; Will be next in buffer 47E3: 3A 24 48 LD A,(unpackFlagToScreen); Are we unpacking ... 47E6: A7 AND A ; ... to the screen? 47E7: C2 ED 47 JP NZ,$47ED ; Yes ... reuse this 3-byte buffer 47EA: 13 INC DE ; No, move to the ... 47EB: 13 INC DE ; ... next 3-byte slot ... 47EC: 13 INC DE ; ... in the buffer 47ED: 3A 21 48 LD A,(unpackNumWords) ; Count down ... 47F0: 3D DEC A ; ... number of ... 47F1: 32 21 48 LD (unpackNumWords),A ; ... words 47F4: C2 72 47 JP NZ,$4772 ; Go back for all the words 47F7: E1 POP HL ; Point to the next character after the words in the string 47F8: C9 RET
Character Table
; Character compression table CharTable: 47F9: 3F 21 32 20 22 27 3C 3E 2F 30 33 ; ?!2_"'<>/03 4804: 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 ; ABCDEFGHIJKLMNOP 4814: 51 52 53 54 55 56 57 58 59 5A 2D 2C 2E ; QRSTUVWXYZ-,. unpackNumWords: 4821: 00 valueOfForty: ; Used in dividing by 40 4822: 00 00 unpackFlagToScreen: 4824: 00 ; Set to 1 to print the characters or 0 to buffer unpack to the buffer
Room Table
Each entry is 4 bytes. The first word is the packed room description. The second word is the room's command script.
RoomTable:
; Descr Scrpt RoomName String
4825: 2F 5B 69 49 ; RM_01_BEFORE_ENTRANCE PS_00
4829: 64 5B 7E 49 ; RM_02_IN_ENTRANCE PS_01
482D: AB 5B 8F 49 ; RM_03_DESERT1 PS_02
4831: AB 5B A0 49 ; RM_04_DESERT2 PS_02
4835: AB 5B B1 49 ; RM_05_DESERT3 PS_02
4839: AB 5B C2 49 ; RM_06_DESERT4 PS_02
483D: BC 5B D3 49 ; RM_07_BENEATH_A_HOLE PS_03
4841: 36 5C E4 49 ; RM_08_CRAWLING_OVER_PEBBLES PS_04
4845: 7C 5C F5 49 ; RM_09_BROKEN_POTTERY PS_05
4849: D1 5C 06 4A ; RM_0A_AWKWARD_SLOPING PS_06
484D: F4 5C 1B 4A ; RM_0B_SPLENDID_CHAMBER PS_07
4851: 72 5D 24 4A ; RM_0C_SMALL_PIT_WHITE_MIST PS_08
4855: E2 5D 3A 4A ; RM_0D_STEPS_LEAD_UP_DOME PS_09
4859: BD 5E 65 4A ; RM_0E_LOW_ROOM_HIEROGLYPH PS_0A
485D: FF 5E 6E 4A ; RM_0F_EAST_BANK_BOTTOMLESS_PIT PS_0B
4861: 5C 5F AA 4A ; RM_10_PHARAOHS_CHAMBER PS_0C
4865: 90 5F E5 4A ; RM_11_SOUTH_SIDE_CHAMBER PS_0D
4869: A9 5F EE 4A ; RM_12_HALL_OF_GODS PS_0E
486D: D9 5F 2D 4B ; RM_13_LITTLE_PASSAGE_SIX_FEET PS_0F
4871: 45 60 46 4B ; RM_14_EAST_END_LONG_HALL PS_10
4875: B3 60 5B 4B ; RM_15_WEST_END_FEATURELESS_HALL PS_11
4879: 00 61 64 4B ; RM_16_CROSSOVER PS_12
487D: 2C 61 75 4B ; RM_17_DEAD_END1 PS_13
4881: 34 61 7E 4B ; RM_18_THRONE_CHAMBER PS_14
4885: 6C 61 8F 4B ; RM_19_LOW_NS_PASSAGE PS_15
4889: AC 61 A4 4B ; RM_1A_PANEL_NORTH_WALL PS_16
488D: 04 62 B1 4B ; RM_1B_CHAMBER_OF_ANUBIS PS_17
4891: 1C 62 BE 4B ; RM_1C_TWISTY_PASSAGES1 PS_18
4895: 1C 62 D3 4B ; RM_1D_TWISTY_PASSAGES2 PS_18
4899: 1C 62 E4 4B ; RM_1E_TWISTY_PASSAGES3 PS_18
489D: 1C 62 FD 4B ; RM_1F_TWISTY_PASSAGES4 PS_18
48A1: 1C 62 06 4C ; RM_20_TWISTY_PASSAGES5 PS_18
48A5: 1C 62 13 4C ; RM_21_TWISTY_PASSAGES6 PS_18
48A9: 1C 62 24 4C ; RM_22_TWISTY_PASSAGES7 PS_18
48AD: 1C 62 35 4C ; RM_23_TWISTY_PASSAGES8 PS_18
48B1: 1C 62 4E 4C ; RM_24_TWISTY_PASSAGES9 PS_18
48B5: 1C 62 5F 4C ; RM_25_TWISTY_PASSAGES10 PS_18
48B9: 1C 62 68 4C ; RM_26_TWISTY_PASSAGES11 PS_18
48BD: 1C 62 79 4C ; RM_27_TWISTY_PASSAGES12 PS_18
48C1: 1C 62 86 4C ; RM_28_TWISTY_PASSAGES13 PS_18
48C5: 1C 62 93 4C ; RM_29_TWISTY_PASSAGES14 PS_18
48C9: 2C 61 A0 4C ; RM_2A_DEAD_END2 PS_13
48CD: 2C 61 A5 4C ; RM_2B_DEAD_END3 PS_13
48D1: 2C 61 AA 4C ; RM_2C_DEAD_END4 PS_13
48D5: 2C 61 AF 4C ; RM_2D_DEAD_END5 PS_13
48D9: 2C 61 B4 4C ; RM_2E_DEAD_END6 PS_13
48DD: 2C 61 B9 4C ; RM_2F_DEAD_END7 PS_13
48E1: 2C 61 BE 4C ; RM_30_DEAD_END8 PS_13
48E5: 2C 61 C3 4C ; RM_31_DEAD_END9 PS_13
48E9: 2C 61 C8 4C ; RM_32_DEAD_END10 PS_13
48ED: 2C 61 CD 4C ; RM_33_DEAD_END11 PS_13
48F1: 3E 62 DE 4C ; RM_34_BRINK_OF_LARGE_PIT PS_19
48F5: 2C 61 F3 4C ; RM_35_DEAD_END12 PS_13
48F9: 9D 62 F8 4C ; RM_36_DIRTY_BROKEN_PASSAGE PS_1A
48FD: FA 62 05 4D ; RM_37_BRINK_OF_CLEAN_PIT PS_1B
4901: 2E 63 12 4D ; RM_38_PIT_LITTLE_STREAM PS_1C
4905: 73 63 30 4D ; RM_39_ROOM_OF_BES PS_1D
4909: CE 63 39 4D ; RM_3A_COMPLEX_JUNCTION PS_1E
490D: 5E 64 4E 4D ; RM_3B_ANTEROOM_OF_SEKER PS_1F
4911: F5 64 5B 4D ; RM_3C_LAND_OF_DEAD PS_20
4915: 29 65 A3 4D ; RM_3D_ANCIENT_DRAWINGS PS_21
4919: D6 65 BE 4D ; RM_3E_MOON_GOD PS_22
491D: 34 66 C7 4D ; RM_3F_RAGGED_WALLS PS_23
4921: 5B 66 D0 4D ; RM_40_CUL_DE_SAC PS_24
4925: 7D 66 D9 4D ; RM_41_CHAMBER_OF_HORUS PS_25
4929: DD 66 02 4E ; RM_42_FALLEN_SLAB PS_26
492D: 00 00 00 00 ;
4931: 26 6B D8 4E ; RM_44_CHAMBER_OF_NEKHEBET PS_31
4935: 00 00 00 00 ;
4939: 05 6B CF 4E ; RM_46_BLOCKED_FALLEN_BLOCK PS_30
493D: B0 6A C2 4E ; RM_47_CHAMBER_OF_OSIRIS PS_2F
4941: 79 67 0B 4E ; RM_48_PRIESTS_BEDROOM PS_27
4945: D6 67 14 4E ; RM_49_HIGH_PRIEST PS_28
4949: 00 00 00 00 ;
494D: 00 00 00 00 ;
4951: 4A 68 23 4E ; RM_4C_EERIE_GREEN_LIGHT PS_29
4955: 47 6A AB 4E ; RM_4D_PROFUSION_OF_LEAVES PS_2E
4959: 93 68 38 4E ; RM_4E_WEAST_END_TWOPIT PS_2A
495D: 75 69 45 4E ; RM_4F_BOTTOM_EASTERN_PIT PS_2B
4961: 9F 69 4E 4E ; RM_50_WEST_END_TWOPIT PS_2C
4965: F1 69 5B 4E ; RM_51_BOTTOM_WEST_PIT PS_2D
Room Scripts
RoomScripts: Script_RM_01_BEFORE_ENTRANCE: ; PS_00 ; YOU_ARE_STANDING_BEFORE_THE_ENTRANCE_OF_A_PYRAMID.__AROUND_YOU__ ; IS_A_DESERT. ; 4969: 01 03 ; N 496B: 01 02 ; move_look(RM_02_IN_ENTRANCE) 496D: 02 03 ; E 496F: 01 03 ; move_look(RM_03_DESERT1) 4971: 03 03 ; S 4973: 01 04 ; move_look(RM_04_DESERT2) 4975: 04 03 ; W 4977: 01 05 ; move_look(RM_05_DESERT3) 4979: 0B 03 ; IN 497B: 01 02 ; move_look(RM_02_IN_ENTRANCE) 497D: 00 ; Script_RM_02_IN_ENTRANCE: ; PS_01 ; YOU_ARE_IN_THE_ENTRANCE_TO_THE_PYRAMID.__A_HOLE_IN_THE_FLOOR____ ; LEADS_TO_A_PASSAGE_BENEATH_THE_SURFACE. ; 497E: 03 03 ; S 4980: 01 01 ; move_look(RM_01_BEFORE_ENTRANCE) 4982: 0A 03 ; D 4984: 01 07 ; move_look(RM_07_BENEATH_A_HOLE) 4986: 0C 03 ; OUT 4988: 01 01 ; move_look(RM_01_BEFORE_ENTRANCE) 498A: 12 03 ; PANEL 498C: 01 1A ; move_look(RM_1A_PANEL_NORTH_WALL) 498E: 00 ; Script_RM_03_DESERT1: ; PS_02 ; YOU_ARE_IN_THE_DESERT. ; 498F: 01 03 ; N 4991: 01 06 ; move_look(RM_06_DESERT4) 4993: 02 03 ; E 4995: 01 03 ; move_look(RM_03_DESERT1) 4997: 03 03 ; S 4999: 01 04 ; move_look(RM_04_DESERT2) 499B: 04 03 ; W 499D: 01 01 ; move_look(RM_01_BEFORE_ENTRANCE) 499F: 00 ; Script_RM_04_DESERT2: ; PS_02 ; YOU_ARE_IN_THE_DESERT. ; 49A0: 01 03 ; N 49A2: 01 01 ; move_look(RM_01_BEFORE_ENTRANCE) 49A4: 02 03 ; E 49A6: 01 03 ; move_look(RM_03_DESERT1) 49A8: 03 03 ; S 49AA: 01 04 ; move_look(RM_04_DESERT2) 49AC: 04 03 ; W 49AE: 01 05 ; move_look(RM_05_DESERT3) 49B0: 00 ; Script_RM_05_DESERT3: ; PS_02 ; YOU_ARE_IN_THE_DESERT. ; 49B1: 01 03 ; N 49B3: 01 06 ; move_look(RM_06_DESERT4) 49B5: 02 03 ; E 49B7: 01 01 ; move_look(RM_01_BEFORE_ENTRANCE) 49B9: 03 03 ; S 49BB: 01 04 ; move_look(RM_04_DESERT2) 49BD: 04 03 ; W 49BF: 01 05 ; move_look(RM_05_DESERT3) 49C1: 00 ; Script_RM_06_DESERT4: ; PS_02 ; YOU_ARE_IN_THE_DESERT. ; 49C2: 01 03 ; N 49C4: 01 06 ; move_look(RM_06_DESERT4) 49C6: 02 03 ; E 49C8: 01 03 ; move_look(RM_03_DESERT1) 49CA: 03 03 ; S 49CC: 01 01 ; move_look(RM_01_BEFORE_ENTRANCE) 49CE: 04 03 ; W 49D0: 01 05 ; move_look(RM_05_DESERT3) 49D2: 00 ; Script_RM_07_BENEATH_A_HOLE: ; PS_03 ; YOU_ARE_IN_A_SMALL_CHAMBER_BENEATH_A_HOLE_FROM_THE_SURFACE.__A__ ; LOW_CRAWL_LEADS_INWARD_TO_THE_WEST.__HIEROGLYPHICS_ON_THE_WALL__ ; TRANSLATE,_"CURSE_ALL_WHO_ENTER_THIS_SACRED_CRYPT." ; 49D3: 09 03 ; U 49D5: 01 02 ; move_look(RM_02_IN_ENTRANCE) 49D7: 0C 03 ; OUT 49D9: 01 02 ; move_look(RM_02_IN_ENTRANCE) 49DB: 04 03 ; W 49DD: 01 08 ; move_look(RM_08_CRAWLING_OVER_PEBBLES) 49DF: 0B 03 ; IN 49E1: 01 08 ; move_look(RM_08_CRAWLING_OVER_PEBBLES) 49E3: 00 ; Script_RM_08_CRAWLING_OVER_PEBBLES: ; PS_04 ; YOU_ARE_CRAWLING_OVER_PEBBLES_IN_A_LOW_PASSAGE.__THERE_IS_A_DIM_ ; LIGHT_AT_THE_EAST_END_OF_THE_PASSAGE. ; 49E4: 02 03 ; E 49E6: 01 07 ; move_look(RM_07_BENEATH_A_HOLE) 49E8: 0C 03 ; OUT 49EA: 01 07 ; move_look(RM_07_BENEATH_A_HOLE) 49EC: 04 03 ; W 49EE: 01 09 ; move_look(RM_09_BROKEN_POTTERY) 49F0: 0B 03 ; IN 49F2: 01 09 ; move_look(RM_09_BROKEN_POTTERY) 49F4: 00 ; Script_RM_09_BROKEN_POTTERY: ; PS_05 ; YOU_ARE_IN_A_ROOM_FILLED_WITH_BROKEN_POTTERY_SHARDS_OF_ANCIENT__ ; EGYPTIAN_CRAFTS.__AN_AWKWARD_CORRIDOR_LEADS_UPWARD_AND_WEST. ; 49F5: 02 03 ; E 49F7: 01 08 ; move_look(RM_08_CRAWLING_OVER_PEBBLES) 49F9: 0B 03 ; IN 49FB: 01 0A ; move_look(RM_0A_AWKWARD_SLOPING) 49FD: 09 03 ; U 49FF: 01 0A ; move_look(RM_0A_AWKWARD_SLOPING) 4A01: 04 03 ; W 4A03: 01 0A ; move_look(RM_0A_AWKWARD_SLOPING) 4A05: 00 ; Script_RM_0A_AWKWARD_SLOPING: ; PS_06 ; YOU_ARE_IN_AN_AWKWARD_SLOPING_EAST/WEST_CORRIDOR. ; 4A06: 0A 03 ; D 4A08: 01 09 ; move_look(RM_09_BROKEN_POTTERY) 4A0A: 02 03 ; E 4A0C: 01 09 ; move_look(RM_09_BROKEN_POTTERY) 4A0E: 0B 03 ; IN 4A10: 01 0B ; move_look(RM_0B_SPLENDID_CHAMBER) 4A12: 04 03 ; W 4A14: 01 0B ; move_look(RM_0B_SPLENDID_CHAMBER) 4A16: 09 03 ; U 4A18: 01 0B ; move_look(RM_0B_SPLENDID_CHAMBER) 4A1A: 00 ; Script_RM_0B_SPLENDID_CHAMBER: ; PS_07 ; YOU_ARE_IN_A_SPLENDID_CHAMBER_THIRTY_FEET_HIGH.__THE_WALLS_ARE__ ; FROZEN_RIVERS_OF_ORANGE_STONE.__AN_AWKWARD_CORRIDOR_AND_A_GOOD__ ; PASSAGE_EXIT_FROM_THE_EAST_AND_WEST_SIDES_OF_THE_CHAMBER. ; 4A1B: 02 03 ; E 4A1D: 01 0A ; move_look(RM_0A_AWKWARD_SLOPING) 4A1F: 04 03 ; W 4A21: 01 0C ; move_look(RM_0C_SMALL_PIT_WHITE_MIST) 4A23: 00 ; Script_RM_0C_SMALL_PIT_WHITE_MIST: ; PS_08 ; AT_YOUR_FEET_IS_A_SMALL_PIT_BREATHING_TRACES_OF_WHITE_MIST.__AN_ ; EAST_PASSAGE_ENDS_HERE_EXCEPT_FOR_A_SMALL_CRACK_LEADING_ON._____ ; ROUGH_STONE_STEPS_LEAD_DOWN_THE_PIT. ; 4A24: 02 03 ; E 4A26: 01 0B ; move_look(RM_0B_SPLENDID_CHAMBER) 4A28: 0A 0B ; D 4A2A: 07 07 ; stop_if_pass ... 4A2C: 02 25 ; is_in_pack(OBJ_25_GOLD) 4A2E: 04 C5 70 ; print(PS_6B) YOU_ARE_AT_THE_BOTTOM_OF_THE_PIT_WITH_A_BROKEN_NECK. 4A31: 05 ; death_and_resurrect() 4A32: 01 0D ; move_look(RM_0D_STEPS_LEAD_UP_DOME) 4A34: 04 04 ; W 4A36: 04 EA 70 ; print(PS_6C) THE_CRACK_IS_FAR_TOO_SMALL_FOR_YOU_TO_FOLLOW. 4A39: 00 ; Script_RM_0D_STEPS_LEAD_UP_DOME: ; PS_09 ; YOU_ARE_AT_ONE_END_OF_A_VAST_HALL_STRETCHING_FORWARD_OUT_OF_____ ; SIGHT_TO_THE_WEST.__THERE_ARE_OPENINGS_TO_EITHER_SIDE.__NEARBY,_ ; A_WIDE_STONE_STAIRCASE_LEADS_DOWNWARD.__THE_HALL_IS_VERY_MUSTY__ ; AND_A_COLD_WIND_BLOWS_UP_THE_STAIRCASE.__THERE_IS_A_PASSAGE_AT__ ; THE_TOP_OF_A_DOME_BEHIND_YOU.__ROUGH_STONE_STEPS_LEAD_UP_THE____ ; DOME. ; 4A3A: 03 03 ; S 4A3C: 01 0E ; move_look(RM_0E_LOW_ROOM_HIEROGLYPH) 4A3E: 04 03 ; W 4A40: 01 0F ; move_look(RM_0F_EAST_BANK_BOTTOMLESS_PIT) 4A42: 0A 03 ; D 4A44: 01 10 ; move_look(RM_10_PHARAOHS_CHAMBER) 4A46: 01 03 ; N 4A48: 01 10 ; move_look(RM_10_PHARAOHS_CHAMBER) 4A4A: 09 0A ; U 4A4C: 07 06 ; stop_if_pass ... 4A4E: 02 25 ; is_in_pack(OBJ_25_GOLD) 4A50: 04 0A 71 ; print(PS_6D) THE_DOME_IS_UNCLIMBABLE. 4A53: 01 0C ; move_look(RM_0C_SMALL_PIT_WHITE_MIST) 4A55: 02 0A ; E 4A57: 07 06 ; stop_if_pass ... 4A59: 02 25 ; is_in_pack(OBJ_25_GOLD) 4A5B: 04 0A 71 ; print(PS_6D) THE_DOME_IS_UNCLIMBABLE. 4A5E: 01 0C ; move_look(RM_0C_SMALL_PIT_WHITE_MIST) 4A60: 20 03 ; ??20?? 4A62: 01 1A ; move_look(RM_1A_PANEL_NORTH_WALL) 4A64: 00 ; Script_RM_0E_LOW_ROOM_HIEROGLYPH: ; PS_0A ; THIS_IS_A_LOW_ROOM_WITH_A_HIEROGLYPH_ON_THE_WALL.__IT_TRANSLATES ; "YOU_WON'T_GET_IT_UP_THE_STEPS". ; 4A65: 0C 03 ; OUT 4A67: 01 0D ; move_look(RM_0D_STEPS_LEAD_UP_DOME) 4A69: 01 03 ; N 4A6B: 01 0D ; move_look(RM_0D_STEPS_LEAD_UP_DOME) 4A6D: 00 ; Script_RM_0F_EAST_BANK_BOTTOMLESS_PIT: ; PS_0B ; YOU_ARE_ON_THE_EAST_BANK_OF_A_BOTTOMLESS_PIT_STRETCHING_ACROSS__ ; THE_HALL.__THE_MIST_IS_QUITE_THICK_HERE,_AND_THE_PIT_IS_TOO_WIDE ; TO_JUMP. ; 4A6E: 02 03 ; E 4A70: 01 0D ; move_look(RM_0D_STEPS_LEAD_UP_DOME) 4A72: 10 0C ; JUMP 4A74: 07 06 ; stop_if_pass ... 4A76: 03 01 ; is_in_pack_or_current_room(OBJ_01_BRIDGE_ROOM_0F) 4A78: 04 1C 71 ; print(PS_6E) I_RESPECTFULLY_SUGGEST_YOU_GO_ACROSS_THE_BRIDGE_INSTEAD_OF______ ; JUMPING. 4A7B: 04 4E 71 ; print(PS_6F) YOU_DIDN'T_MAKE_IT. 4A7E: 05 ; death_and_resurrect() 4A7F: 04 0A ; W 4A81: 07 05 ; stop_if_pass ... 4A83: 03 01 ; is_in_pack_or_current_room(OBJ_01_BRIDGE_ROOM_0F) 4A85: 01 12 ; move_look(RM_12_HALL_OF_GODS) 4A87: 04 5D 71 ; print(PS_70) THERE_IS_NO_WAY_ACROSS_THE_BOTTOMLESS_PIT. 4A8A: 0D 05 ; CROSS 4A8C: 03 01 ; is_in_pack_or_current_room(OBJ_01_BRIDGE_ROOM_0F) 4A8E: 01 12 ; move_look(RM_12_HALL_OF_GODS) 4A90: 23 18 ; WAVE 4A92: 11 11 ; is_object_user_input(OBJ_11_SCEPTER) 4A94: 07 0C ; stop_if_pass ... 4A96: 03 01 ; is_in_pack_or_current_room(OBJ_01_BRIDGE_ROOM_0F) 4A98: 15 01 00 ; move_object_to_room(OBJ_01_BRIDGE_ROOM_0F, RM_00_nowhere) 4A9B: 15 02 00 ; move_object_to_room(OBJ_02_BRIDGE_ROOM_12, RM_00_nowhere) 4A9E: 04 32 7B ; print(PS_AE) THE_STONE_BRIDGE_HAS_RETRACTED! 4AA1: 18 01 ; move_object_to_current_room(OBJ_01_BRIDGE_ROOM_0F) 4AA3: 15 02 12 ; move_object_to_room(OBJ_02_BRIDGE_ROOM_12, RM_12_HALL_OF_GODS) 4AA6: 04 49 7B ; print(PS_AF) A_STONE_BRIDGE_NOW_SPANS_THE_BOTTOMLESS_PIT. 4AA9: 00 ; Script_RM_10_PHARAOHS_CHAMBER: ; PS_0C ; YOU_ARE_IN_THE_PHARAOH'S_CHAMBER,_WITH_PASSAGES_OFF_IN_ALL______ ; DIRECTIONS. ; 4AAA: 09 03 ; U 4AAC: 01 0D ; move_look(RM_0D_STEPS_LEAD_UP_DOME) 4AAE: 02 03 ; E 4AB0: 01 0D ; move_look(RM_0D_STEPS_LEAD_UP_DOME) 4AB2: 03 0A ; S 4AB4: 07 06 ; stop_if_pass ... 4AB6: 03 0B ; is_in_pack_or_current_room(OBJ_0B_SERPENT) 4AB8: 04 7B 71 ; print(PS_71) YOU_CAN'T_GET_BY_THE_SERPENT. 4ABB: 01 11 ; move_look(RM_11_SOUTH_SIDE_CHAMBER) 4ABD: 01 0A ; N 4ABF: 07 06 ; stop_if_pass ... 4AC1: 03 0B ; is_in_pack_or_current_room(OBJ_0B_SERPENT) 4AC3: 04 7B 71 ; print(PS_71) YOU_CAN'T_GET_BY_THE_SERPENT. 4AC6: 01 19 ; move_look(RM_19_LOW_NS_PASSAGE) 4AC8: 04 0A ; W 4ACA: 07 06 ; stop_if_pass ... 4ACC: 03 0B ; is_in_pack_or_current_room(OBJ_0B_SERPENT) 4ACE: 04 7B 71 ; print(PS_71) YOU_CAN'T_GET_BY_THE_SERPENT. 4AD1: 01 18 ; move_look(RM_18_THRONE_CHAMBER) 4AD3: 26 10 ; THROW 4AD5: 11 14 ; is_object_user_input(OBJ_14_BIRD_IN_BOX) 4AD7: 03 0B ; is_in_pack_or_current_room(OBJ_0B_SERPENT) 4AD9: 15 0B 00 ; move_object_to_room(OBJ_0B_SERPENT, RM_00_nowhere) 4ADC: 18 13 ; move_object_to_current_room(OBJ_13_BIRD) 4ADE: 15 14 00 ; move_object_to_room(OBJ_14_BIRD_IN_BOX, RM_00_nowhere) 4AE1: 04 F5 7B ; print(PS_B4) THE_BIRD_STATUE_COMES_TO_LIFE_AND_ATTACKS_THE_SERPENT_AND_IN_AN_ ; ASTOUNDING_FLURRY,_DRIVES_THE_SERPENT_AWAY.__THE_BIRD_TURNS_BACK ; INTO_A_STATUE. 4AE4: 00 ; Script_RM_11_SOUTH_SIDE_CHAMBER: ; PS_0D ; YOU_ARE_IN_THE_SOUTH_SIDE_CHAMBER. ; 4AE5: 01 03 ; N 4AE7: 01 10 ; move_look(RM_10_PHARAOHS_CHAMBER) 4AE9: 0C 03 ; OUT 4AEB: 01 10 ; move_look(RM_10_PHARAOHS_CHAMBER) 4AED: 00 ; Script_RM_12_HALL_OF_GODS: ; PS_0E ; YOU_ARE_ON_THE_WEST_SIDE_OF_THE_BOTTOMLESS_PIT_IN_THE_HALL_OF___ ; GODS. ; 4AEE: 10 0C ; JUMP 4AF0: 07 06 ; stop_if_pass ... 4AF2: 03 02 ; is_in_pack_or_current_room(OBJ_02_BRIDGE_ROOM_12) 4AF4: 04 1C 71 ; print(PS_6E) I_RESPECTFULLY_SUGGEST_YOU_GO_ACROSS_THE_BRIDGE_INSTEAD_OF______ ; JUMPING. 4AF7: 04 4E 71 ; print(PS_6F) YOU_DIDN'T_MAKE_IT. 4AFA: 05 ; death_and_resurrect() 4AFB: 02 0A ; E 4AFD: 07 05 ; stop_if_pass ... 4AFF: 03 02 ; is_in_pack_or_current_room(OBJ_02_BRIDGE_ROOM_12) 4B01: 01 0F ; move_look(RM_0F_EAST_BANK_BOTTOMLESS_PIT) 4B03: 04 5D 71 ; print(PS_70) THERE_IS_NO_WAY_ACROSS_THE_BOTTOMLESS_PIT. 4B06: 01 06 ; N 4B08: 04 91 71 ; print(PS_72) YOU_HAVE_CRAWLED_THROUGH_A_VERY_LOW_WIDE_PASSAGE_PARALLEL_TO_AND ; NORTH_OF_THE_HALL_OF_GODS. 4B0B: 01 13 ; move_look(RM_13_LITTLE_PASSAGE_SIX_FEET) 4B0D: 0D 05 ; CROSS 4B0F: 03 02 ; is_in_pack_or_current_room(OBJ_02_BRIDGE_ROOM_12) 4B11: 01 0F ; move_look(RM_0F_EAST_BANK_BOTTOMLESS_PIT) 4B13: 23 18 ; WAVE 4B15: 11 11 ; is_object_user_input(OBJ_11_SCEPTER) 4B17: 07 0C ; stop_if_pass ... 4B19: 03 02 ; is_in_pack_or_current_room(OBJ_02_BRIDGE_ROOM_12) 4B1B: 15 02 00 ; move_object_to_room(OBJ_02_BRIDGE_ROOM_12, RM_00_nowhere) 4B1E: 15 01 00 ; move_object_to_room(OBJ_01_BRIDGE_ROOM_0F, RM_00_nowhere) 4B21: 04 32 7B ; print(PS_AE) THE_STONE_BRIDGE_HAS_RETRACTED! 4B24: 18 02 ; move_object_to_current_room(OBJ_02_BRIDGE_ROOM_12) 4B26: 15 01 0F ; move_object_to_room(OBJ_01_BRIDGE_ROOM_0F, RM_0F_EAST_BANK_BOTTOMLESS_PIT) 4B29: 04 49 7B ; print(PS_AF) A_STONE_BRIDGE_NOW_SPANS_THE_BOTTOMLESS_PIT. 4B2C: 00 ; Script_RM_13_LITTLE_PASSAGE_SIX_FEET: ; PS_0F ; YOU_ARE_AT_THE_WEST_END_OF_THE_HALL_OF_GODS.___A_LOW_WIDE_PASS__ ; CONTINUES_WEST_AND_ANOTHER_GOES_NORTH.__TO_THE_SOUTH_IS_A_LITTLE ; PASSAGE_SIX_FEET_OFF_THE_FLOOR. ; 4B2D: 03 03 ; S 4B2F: 01 1C ; move_look(RM_1C_TWISTY_PASSAGES1) 4B31: 09 03 ; U 4B33: 01 1C ; move_look(RM_1C_TWISTY_PASSAGES1) 4B35: 11 03 ; CLIMB 4B37: 01 1C ; move_look(RM_1C_TWISTY_PASSAGES1) 4B39: 02 03 ; E 4B3B: 01 12 ; move_look(RM_12_HALL_OF_GODS) 4B3D: 01 03 ; N 4B3F: 01 12 ; move_look(RM_12_HALL_OF_GODS) 4B41: 04 03 ; W 4B43: 01 14 ; move_look(RM_14_EAST_END_LONG_HALL) 4B45: 00 ; Script_RM_14_EAST_END_LONG_HALL: ; PS_10 ; YOU_ARE_AT_EAST_END_OF_A_VERY_LONG_HALL_APPARENTLY_WITHOUT_SIDE_ ; CHAMBERS.__TO_THE_EAST_A_LOW_WIDE_CRAWL_SLANTS_UP.__TO_THE_NORTH ; A_ROUND_TWO_FOOT_HOLE_SLANTS_DOWN. ; 4B46: 02 03 ; E 4B48: 01 13 ; move_look(RM_13_LITTLE_PASSAGE_SIX_FEET) 4B4A: 09 03 ; U 4B4C: 01 13 ; move_look(RM_13_LITTLE_PASSAGE_SIX_FEET) 4B4E: 04 03 ; W 4B50: 01 15 ; move_look(RM_15_WEST_END_FEATURELESS_HALL) 4B52: 01 03 ; N 4B54: 01 16 ; move_look(RM_16_CROSSOVER) 4B56: 0A 03 ; D 4B58: 01 16 ; move_look(RM_16_CROSSOVER) 4B5A: 00 ; Script_RM_15_WEST_END_FEATURELESS_HALL: ; PS_11 ; YOU_ARE_AT_THE_WEST_END_OF_A_VERY_LONG_FEATURELESS_HALL.__THE___ ; HALL_JOINS_; UP_WITH_A_NARROW_NORTH/SOUTH_PASSAGE. ; 4B5B: 02 03 ; E 4B5D: 01 14 ; move_look(RM_14_EAST_END_LONG_HALL) 4B5F: 01 03 ; N 4B61: 01 16 ; move_look(RM_16_CROSSOVER) 4B63: 00 ; Script_RM_16_CROSSOVER: ; PS_12 ; YOU_ARE_AT_A_CROSSOVER_OF_A_HIGH_N/S_PASSAGE_AND_A_LOW_E/W_ONE. ; 4B64: 04 03 ; W 4B66: 01 14 ; move_look(RM_14_EAST_END_LONG_HALL) 4B68: 01 03 ; N 4B6A: 01 17 ; move_look(RM_17_DEAD_END1) 4B6C: 02 03 ; E 4B6E: 01 18 ; move_look(RM_18_THRONE_CHAMBER) 4B70: 03 03 ; S 4B72: 01 15 ; move_look(RM_15_WEST_END_FEATURELESS_HALL) 4B74: 00 ; Script_RM_17_DEAD_END1: ; PS_13 ; DEAD_END. ; 4B75: 03 03 ; S 4B77: 01 16 ; move_look(RM_16_CROSSOVER) 4B79: 0C 03 ; OUT 4B7B: 01 16 ; move_look(RM_16_CROSSOVER) 4B7D: 00 ; Script_RM_18_THRONE_CHAMBER: ; PS_14 ; YOU_ARE_IN_THE_WEST_THRONE_CHAMBER.__A_PASSAGE_CONTINUES_WEST___ ; AND_UP_FROM_HERE. ; 4B7E: 02 03 ; E 4B80: 01 10 ; move_look(RM_10_PHARAOHS_CHAMBER) 4B82: 0C 03 ; OUT 4B84: 01 10 ; move_look(RM_10_PHARAOHS_CHAMBER) 4B86: 04 03 ; W 4B88: 01 16 ; move_look(RM_16_CROSSOVER) 4B8A: 09 03 ; U 4B8C: 01 16 ; move_look(RM_16_CROSSOVER) 4B8E: 00 ; Script_RM_19_LOW_NS_PASSAGE: ; PS_15 ; YOU_ARE_IN_A_LOW_N/S_PASSAGE_AT_A_HOLE_IN_THE_FLOOR.__THE_HOLE__ ; GOES_DOWN_TO_AN_E/W_PASSAGE. ; 4B8F: 0C 03 ; OUT 4B91: 01 10 ; move_look(RM_10_PHARAOHS_CHAMBER) 4B93: 03 03 ; S 4B95: 01 10 ; move_look(RM_10_PHARAOHS_CHAMBER) 4B97: 01 03 ; N 4B99: 01 1A ; move_look(RM_1A_PANEL_NORTH_WALL) 4B9B: 20 03 ; ??20?? 4B9D: 01 1A ; move_look(RM_1A_PANEL_NORTH_WALL) 4B9F: 0A 03 ; D 4BA1: 01 36 ; move_look(RM_36_DIRTY_BROKEN_PASSAGE) 4BA3: 00 ; Script_RM_1A_PANEL_NORTH_WALL: ; PS_16 ; YOU_ARE_IN_A_LARGE_ROOM,_WITH_A_PASSAGE_TO_THE_SOUTH,_AND_A_WALL ; OF_BROKEN_ROCK_TO_THE_EAST.__THERE_IS_A_PANEL_ON_THE_NORTH_WALL. ; 4BA4: 12 03 ; PANEL 4BA6: 01 02 ; move_look(RM_02_IN_ENTRANCE) 4BA8: 03 03 ; S 4BAA: 01 19 ; move_look(RM_19_LOW_NS_PASSAGE) 4BAC: 02 03 ; E 4BAE: 01 1B ; move_look(RM_1B_CHAMBER_OF_ANUBIS) 4BB0: 00 ; Script_RM_1B_CHAMBER_OF_ANUBIS: ; PS_17 ; YOU_ARE_IN_THE_CHAMBER_OF_ANUBIS. ; 4BB1: 0A 03 ; D 4BB3: 01 1A ; move_look(RM_1A_PANEL_NORTH_WALL) 4BB5: 20 03 ; ??20?? 4BB7: 01 1A ; move_look(RM_1A_PANEL_NORTH_WALL) 4BB9: 09 03 ; U 4BBB: 01 0D ; move_look(RM_0D_STEPS_LEAD_UP_DOME) 4BBD: 00 ; Script_RM_1C_TWISTY_PASSAGES1: ; PS_18 ; YOU_ARE_IN_A_MAZE_OF_TWISTY_PASSAGES,_ALL_ALIKE. ; 4BBE: 01 03 ; N 4BC0: 01 1C ; move_look(RM_1C_TWISTY_PASSAGES1) 4BC2: 02 03 ; E 4BC4: 01 20 ; move_look(RM_20_TWISTY_PASSAGES5) 4BC6: 03 03 ; S 4BC8: 01 1E ; move_look(RM_1E_TWISTY_PASSAGES3) 4BCA: 04 03 ; W 4BCC: 01 1D ; move_look(RM_1D_TWISTY_PASSAGES2) 4BCE: 09 03 ; U 4BD0: 01 13 ; move_look(RM_13_LITTLE_PASSAGE_SIX_FEET) 4BD2: 00 ; Script_RM_1D_TWISTY_PASSAGES2: ; PS_18 ; YOU_ARE_IN_A_MAZE_OF_TWISTY_PASSAGES,_ALL_ALIKE. ; 4BD3: 01 03 ; N 4BD5: 01 1C ; move_look(RM_1C_TWISTY_PASSAGES1) 4BD7: 02 03 ; E 4BD9: 01 33 ; move_look(RM_33_DEAD_END11) 4BDB: 03 03 ; S 4BDD: 01 1D ; move_look(RM_1D_TWISTY_PASSAGES2) 4BDF: 04 03 ; W 4BE1: 01 1D ; move_look(RM_1D_TWISTY_PASSAGES2) 4BE3: 00 ; Script_RM_1E_TWISTY_PASSAGES3: ; PS_18 ; YOU_ARE_IN_A_MAZE_OF_TWISTY_PASSAGES,_ALL_ALIKE. ; 4BE4: 01 03 ; N 4BE6: 01 20 ; move_look(RM_20_TWISTY_PASSAGES5) 4BE8: 02 03 ; E 4BEA: 01 2A ; move_look(RM_2A_DEAD_END2) 4BEC: 03 03 ; S 4BEE: 01 2B ; move_look(RM_2B_DEAD_END3) 4BF0: 04 03 ; W 4BF2: 01 1C ; move_look(RM_1C_TWISTY_PASSAGES1) 4BF4: 09 03 ; U 4BF6: 01 1F ; move_look(RM_1F_TWISTY_PASSAGES4) 4BF8: 0A 03 ; D 4BFA: 01 1F ; move_look(RM_1F_TWISTY_PASSAGES4) 4BFC: 00 ; Script_RM_1F_TWISTY_PASSAGES4: ; PS_18 ; YOU_ARE_IN_A_MAZE_OF_TWISTY_PASSAGES,_ALL_ALIKE. ; 4BFD: 09 03 ; U 4BFF: 01 1E ; move_look(RM_1E_TWISTY_PASSAGES3) 4C01: 0A 03 ; D 4C03: 01 1E ; move_look(RM_1E_TWISTY_PASSAGES3) 4C05: 00 ; Script_RM_20_TWISTY_PASSAGES5: ; PS_18 ; YOU_ARE_IN_A_MAZE_OF_TWISTY_PASSAGES,_ALL_ALIKE. ; 4C06: 02 03 ; E 4C08: 01 1E ; move_look(RM_1E_TWISTY_PASSAGES3) 4C0A: 03 03 ; S 4C0C: 01 21 ; move_look(RM_21_TWISTY_PASSAGES6) 4C0E: 04 03 ; W 4C10: 01 1C ; move_look(RM_1C_TWISTY_PASSAGES1) 4C12: 00 ; Script_RM_21_TWISTY_PASSAGES6: ; PS_18 ; YOU_ARE_IN_A_MAZE_OF_TWISTY_PASSAGES,_ALL_ALIKE. ; 4C13: 01 03 ; N 4C15: 01 2C ; move_look(RM_2C_DEAD_END4) 4C17: 02 03 ; E 4C19: 01 20 ; move_look(RM_20_TWISTY_PASSAGES5) 4C1B: 03 03 ; S 4C1D: 01 22 ; move_look(RM_22_TWISTY_PASSAGES7) 4C1F: 0A 03 ; D 4C21: 01 2D ; move_look(RM_2D_DEAD_END5) 4C23: 00 ; Script_RM_22_TWISTY_PASSAGES7: ; PS_18 ; YOU_ARE_IN_A_MAZE_OF_TWISTY_PASSAGES,_ALL_ALIKE. ; 4C24: 02 03 ; E 4C26: 01 21 ; move_look(RM_21_TWISTY_PASSAGES6) 4C28: 03 03 ; S 4C2A: 01 23 ; move_look(RM_23_TWISTY_PASSAGES8) 4C2C: 04 03 ; W 4C2E: 01 25 ; move_look(RM_25_TWISTY_PASSAGES10) 4C30: 0A 03 ; D 4C32: 01 26 ; move_look(RM_26_TWISTY_PASSAGES11) 4C34: 00 ; Script_RM_23_TWISTY_PASSAGES8: ; PS_18 ; YOU_ARE_IN_A_MAZE_OF_TWISTY_PASSAGES,_ALL_ALIKE. ; 4C35: 01 03 ; N 4C37: 01 24 ; move_look(RM_24_TWISTY_PASSAGES9) 4C39: 02 03 ; E 4C3B: 01 26 ; move_look(RM_26_TWISTY_PASSAGES11) 4C3D: 03 03 ; S 4C3F: 01 23 ; move_look(RM_23_TWISTY_PASSAGES8) 4C41: 04 03 ; W 4C43: 01 22 ; move_look(RM_22_TWISTY_PASSAGES7) 4C45: 09 03 ; U 4C47: 01 27 ; move_look(RM_27_TWISTY_PASSAGES12) 4C49: 0A 03 ; D 4C4B: 01 2F ; move_look(RM_2F_DEAD_END7) 4C4D: 00 ; Script_RM_24_TWISTY_PASSAGES9: ; PS_18 ; YOU_ARE_IN_A_MAZE_OF_TWISTY_PASSAGES,_ALL_ALIKE. ; 4C4E: 01 03 ; N 4C50: 01 24 ; move_look(RM_24_TWISTY_PASSAGES9) 4C52: 02 03 ; E 4C54: 01 34 ; move_look(RM_34_BRINK_OF_LARGE_PIT) 4C56: 04 03 ; W 4C58: 01 23 ; move_look(RM_23_TWISTY_PASSAGES8) 4C5A: 0A 03 ; D 4C5C: 01 30 ; move_look(RM_30_DEAD_END8) 4C5E: 00 ; Script_RM_25_TWISTY_PASSAGES10: ; PS_18 ; YOU_ARE_IN_A_MAZE_OF_TWISTY_PASSAGES,_ALL_ALIKE. ; 4C5F: 02 03 ; E 4C61: 01 22 ; move_look(RM_22_TWISTY_PASSAGES7) 4C63: 04 03 ; W 4C65: 01 26 ; move_look(RM_26_TWISTY_PASSAGES11) 4C67: 00 ; Script_RM_26_TWISTY_PASSAGES11: ; PS_18 ; YOU_ARE_IN_A_MAZE_OF_TWISTY_PASSAGES,_ALL_ALIKE. ; 4C68: 02 03 ; E 4C6A: 01 23 ; move_look(RM_23_TWISTY_PASSAGES8) 4C6C: 03 03 ; S 4C6E: 01 27 ; move_look(RM_27_TWISTY_PASSAGES12) 4C70: 04 03 ; W 4C72: 01 25 ; move_look(RM_25_TWISTY_PASSAGES10) 4C74: 09 03 ; U 4C76: 01 22 ; move_look(RM_22_TWISTY_PASSAGES7) 4C78: 00 ; Script_RM_27_TWISTY_PASSAGES12: ; PS_18 ; YOU_ARE_IN_A_MAZE_OF_TWISTY_PASSAGES,_ALL_ALIKE. ; 4C79: 01 03 ; N 4C7B: 01 23 ; move_look(RM_23_TWISTY_PASSAGES8) 4C7D: 03 03 ; S 4C7F: 01 2E ; move_look(RM_2E_DEAD_END6) 4C81: 04 03 ; W 4C83: 01 26 ; move_look(RM_26_TWISTY_PASSAGES11) 4C85: 00 ; Script_RM_28_TWISTY_PASSAGES13: ; PS_18 ; YOU_ARE_IN_A_MAZE_OF_TWISTY_PASSAGES,_ALL_ALIKE. ; 4C86: 01 03 ; N 4C88: 01 34 ; move_look(RM_34_BRINK_OF_LARGE_PIT) 4C8A: 04 03 ; W 4C8C: 01 29 ; move_look(RM_29_TWISTY_PASSAGES14) 4C8E: 08 03 ; NW 4C90: 01 35 ; move_look(RM_35_DEAD_END12) 4C92: 00 ; Script_RM_29_TWISTY_PASSAGES14: ; PS_18 ; YOU_ARE_IN_A_MAZE_OF_TWISTY_PASSAGES,_ALL_ALIKE. ; 4C93: 02 03 ; E 4C95: 01 28 ; move_look(RM_28_TWISTY_PASSAGES13) 4C97: 03 03 ; S 4C99: 01 34 ; move_look(RM_34_BRINK_OF_LARGE_PIT) 4C9B: 04 03 ; W 4C9D: 01 32 ; move_look(RM_32_DEAD_END10) 4C9F: 00 ; Script_RM_2A_DEAD_END2: ; PS_13 ; DEAD_END. ; 4CA0: 04 03 ; W 4CA2: 01 1E ; move_look(RM_1E_TWISTY_PASSAGES3) 4CA4: 00 ; Script_RM_2B_DEAD_END3: ; PS_13 ; DEAD_END. ; 4CA5: 02 03 ; E 4CA7: 01 1E ; move_look(RM_1E_TWISTY_PASSAGES3) 4CA9: 00 ; Script_RM_2C_DEAD_END4: ; PS_13 ; DEAD_END. ; 4CAA: 03 03 ; S 4CAC: 01 21 ; move_look(RM_21_TWISTY_PASSAGES6) 4CAE: 00 ; Script_RM_2D_DEAD_END5: ; PS_13 ; DEAD_END. ; 4CAF: 09 03 ; U 4CB1: 01 21 ; move_look(RM_21_TWISTY_PASSAGES6) 4CB3: 00 ; Script_RM_2E_DEAD_END6: ; PS_13 ; DEAD_END. ; 4CB4: 04 03 ; W 4CB6: 01 27 ; move_look(RM_27_TWISTY_PASSAGES12) 4CB8: 00 ; Script_RM_2F_DEAD_END7: ; PS_13 ; DEAD_END. ; 4CB9: 09 03 ; U 4CBB: 01 23 ; move_look(RM_23_TWISTY_PASSAGES8) 4CBD: 00 ; Script_RM_30_DEAD_END8: ; PS_13 ; DEAD_END. ; 4CBE: 09 03 ; U 4CC0: 01 24 ; move_look(RM_24_TWISTY_PASSAGES9) 4CC2: 00 ; Script_RM_31_DEAD_END9: ; PS_13 ; DEAD_END. ; 4CC3: 02 03 ; E 4CC5: 01 34 ; move_look(RM_34_BRINK_OF_LARGE_PIT) 4CC7: 00 ; Script_RM_32_DEAD_END10: ; PS_13 ; DEAD_END. ; 4CC8: 02 03 ; E 4CCA: 01 29 ; move_look(RM_29_TWISTY_PASSAGES14) 4CCC: 00 ; Script_RM_33_DEAD_END11: ; PS_13 ; DEAD_END. ; 4CCD: 04 03 ; W 4CCF: 01 1D ; move_look(RM_1D_TWISTY_PASSAGES2) 4CD1: 21 0B ; DROP 4CD3: 11 29 ; is_object_user_input(OBJ_29_COINS) 4CD5: 15 29 00 ; move_object_to_room(OBJ_29_COINS, RM_00_nowhere) 4CD8: 18 23 ; move_object_to_current_room(OBJ_23_BATTERIES_FRESH) 4CDA: 04 AC 7B ; print(PS_B2) THERE_ARE_NOW_SOME_FRESH_BATTERIES_HERE. 4CDD: 00 ; Script_RM_34_BRINK_OF_LARGE_PIT: ; PS_19 ; YOU_ARE_ON_THE_BRINK_OF_A_LARGE_PIT.__YOU_COULD_CLIMB_DOWN,_BUT_ ; YOU_WOULD_NOT_BE_ABLE_TO_CLIMB_BACK_UP.__THE_MAZE_CONTINUES_ON__ ; THIS_LEVEL. ; 4CDE: 01 03 ; N 4CE0: 01 29 ; move_look(RM_29_TWISTY_PASSAGES14) 4CE2: 02 03 ; E 4CE4: 01 28 ; move_look(RM_28_TWISTY_PASSAGES13) 4CE6: 03 03 ; S 4CE8: 01 31 ; move_look(RM_31_DEAD_END9) 4CEA: 04 03 ; W 4CEC: 01 24 ; move_look(RM_24_TWISTY_PASSAGES9) 4CEE: 0A 03 ; D 4CF0: 01 0B ; move_look(RM_0B_SPLENDID_CHAMBER) 4CF2: 00 ; Script_RM_35_DEAD_END12: ; PS_13 ; DEAD_END. ; 4CF3: 06 03 ; SE 4CF5: 01 28 ; move_look(RM_28_TWISTY_PASSAGES13) 4CF7: 00 ; Script_RM_36_DIRTY_BROKEN_PASSAGE: ; PS_1A ; YOU_ARE_IN_A_DIRTY_BROKEN_PASSAGE.__TO_THE_EAST_IS_A_CRAWL.__TO_ ; THE_WEST_IS_A_LARGE_PASSAGE.__ABOVE_YOU_IS_A_HOLE_TO_ANOTHER____ ; PASSAGE. ; 4CF8: 02 03 ; E 4CFA: 01 37 ; move_look(RM_37_BRINK_OF_CLEAN_PIT) 4CFC: 04 03 ; W 4CFE: 01 39 ; move_look(RM_39_ROOM_OF_BES) 4D00: 09 03 ; U 4D02: 01 19 ; move_look(RM_19_LOW_NS_PASSAGE) 4D04: 00 ; Script_RM_37_BRINK_OF_CLEAN_PIT: ; PS_1B ; YOU_ARE_ON_THE_BRINK_OF_A_SMALL_CLEAN_CLIMBABLE_PIT.__A_CRAWL___ ; LEADS_WEST. ; 4D05: 04 03 ; W 4D07: 01 36 ; move_look(RM_36_DIRTY_BROKEN_PASSAGE) 4D09: 0A 03 ; D 4D0B: 01 38 ; move_look(RM_38_PIT_LITTLE_STREAM) 4D0D: 11 03 ; CLIMB 4D0F: 01 38 ; move_look(RM_38_PIT_LITTLE_STREAM) 4D11: 00 ; Script_RM_38_PIT_LITTLE_STREAM: ; PS_1C ; YOU_ARE_IN_THE_BOTTOM_OF_A_SMALL_PIT_WITH_A_LITTLE_STREAM,_WHICH ; ENTERS_AND_EXITS_THROUGH_TINY_SLITS. ; 4D12: 09 03 ; U 4D14: 01 37 ; move_look(RM_37_BRINK_OF_CLEAN_PIT) 4D16: 0C 03 ; OUT 4D18: 01 37 ; move_look(RM_37_BRINK_OF_CLEAN_PIT) 4D1A: 11 03 ; CLIMB 4D1C: 01 37 ; move_look(RM_37_BRINK_OF_CLEAN_PIT) 4D1E: 0A 04 ; D 4D20: 04 CF 71 ; print(PS_73) YOU_DON'T_FIT_THROUGH_TWO-INCH_SLIT! 4D23: 27 0B ; FILL 4D25: 07 06 ; stop_if_pass ... 4D27: 02 1C ; is_in_pack(OBJ_1C_WATER) 4D29: 04 8B 7A ; print(PS_AC) YOUR_BOTTLE_IS_ALREADY_FULL. 4D2C: 19 1C 1B ; put_object_in_container_print_ok(OBJ_1C_WATER, OBJ_1B_BOTTLE) 4D2F: 00 ; Script_RM_39_ROOM_OF_BES: ; PS_1D ; YOU_ARE_IN_A_THE_ROOM_OF_BES,_WHOSE_PICTURE_IS_ON_THE_WALL._____ ; THERE_IS_A_BIG_HOLE_IN_THE_FLOOR.__THERE_IS_A_PASSAGE_LEADING___ ; EAST. ; 4D30: 02 03 ; E 4D32: 01 36 ; move_look(RM_36_DIRTY_BROKEN_PASSAGE) 4D34: 0A 03 ; D 4D36: 01 3A ; move_look(RM_3A_COMPLEX_JUNCTION) 4D38: 00 ; Script_RM_3A_COMPLEX_JUNCTION: ; PS_1E ; YOU_ARE_AT_A_COMPLEX_JUNCTION.__A_LOW_HANDS_AND_KNEES_PASSAGE___ ; FROM_THE_NORTH_JOINS_A_HIGHER_CRAWL_FROM_THE_EAST_TO_MAKE_A_____ ; WALKING_PASSAGE_GOING_WEST.__THERE_IS_ALSO_A_LARGE_ROOM_ABOVE.__ ; THE_AIR_IS_DAMP_HERE. ; 4D39: 01 03 ; N 4D3B: 01 3D ; move_look(RM_3D_ANCIENT_DRAWINGS) 4D3D: 02 03 ; E 4D3F: 01 3B ; move_look(RM_3B_ANTEROOM_OF_SEKER) 4D41: 04 03 ; W 4D43: 01 41 ; move_look(RM_41_CHAMBER_OF_HORUS) 4D45: 09 03 ; U 4D47: 01 39 ; move_look(RM_39_ROOM_OF_BES) 4D49: 11 03 ; CLIMB 4D4B: 01 39 ; move_look(RM_39_ROOM_OF_BES) 4D4D: 00 ; Script_RM_3B_ANTEROOM_OF_SEKER: ; PS_1F ; YOU_ARE_IN_THE_UNDERWORLD_ANTEROOM_OF_SEKER.__PASSAGES_GO_EAST,_ ; WEST,_AND_UP.__HUMAN_BONES_ARE_STREWN_ABOUT_ON_THE_FLOOR._______ ; HIEROGLYPHICS_ON_THE_WALL_ROUGHLY_TRANSLATE_TO_"THOSE_WHO_______ ; PROCEED_EAST_MAY_NEVER_RETURN." ; 4D4E: 02 03 ; E 4D50: 01 3C ; move_look(RM_3C_LAND_OF_DEAD) 4D52: 04 03 ; W 4D54: 01 41 ; move_look(RM_41_CHAMBER_OF_HORUS) 4D56: 09 03 ; U 4D58: 01 3A ; move_look(RM_3A_COMPLEX_JUNCTION) 4D5A: 00 ; Script_RM_3C_LAND_OF_DEAD: ; PS_20 ; YOU_ARE_AT_THE_LAND_OF_DEAD.__PASSAGES_LEAD_OFF_IN_>ALL<________ ; DIRECTIONS. ; 4D5B: 01 07 ; N 4D5D: 07 03 ; stop_if_pass ... 4D5F: 0A F0 ; pyramid_crawl_move_random(0xF0) 4D61: 01 3B ; move_look(RM_3B_ANTEROOM_OF_SEKER) 4D63: 02 07 ; E 4D65: 07 03 ; stop_if_pass ... 4D67: 0A F0 ; pyramid_crawl_move_random(0xF0) 4D69: 01 3B ; move_look(RM_3B_ANTEROOM_OF_SEKER) 4D6B: 03 07 ; S 4D6D: 07 03 ; stop_if_pass ... 4D6F: 0A F0 ; pyramid_crawl_move_random(0xF0) 4D71: 01 3B ; move_look(RM_3B_ANTEROOM_OF_SEKER) 4D73: 05 07 ; NE 4D75: 07 03 ; stop_if_pass ... 4D77: 0A F0 ; pyramid_crawl_move_random(0xF0) 4D79: 01 3B ; move_look(RM_3B_ANTEROOM_OF_SEKER) 4D7B: 06 07 ; SE 4D7D: 07 03 ; stop_if_pass ... 4D7F: 0A F0 ; pyramid_crawl_move_random(0xF0) 4D81: 01 3B ; move_look(RM_3B_ANTEROOM_OF_SEKER) 4D83: 07 07 ; SW 4D85: 07 03 ; stop_if_pass ... 4D87: 0A F0 ; pyramid_crawl_move_random(0xF0) 4D89: 01 3B ; move_look(RM_3B_ANTEROOM_OF_SEKER) 4D8B: 08 07 ; NW 4D8D: 07 03 ; stop_if_pass ... 4D8F: 0A F0 ; pyramid_crawl_move_random(0xF0) 4D91: 01 3B ; move_look(RM_3B_ANTEROOM_OF_SEKER) 4D93: 09 07 ; U 4D95: 07 03 ; stop_if_pass ... 4D97: 0A F0 ; pyramid_crawl_move_random(0xF0) 4D99: 01 3B ; move_look(RM_3B_ANTEROOM_OF_SEKER) 4D9B: 04 06 ; W 4D9D: 04 23 72 ; print(PS_75) YOU_HAVE_CRAWLED_AROUND_IN_SOME_LITTLE_HOLES_AND_FOUND_YOUR_WAY_ ; BLOCKED_BY_A_FALLEN_SLAB.__YOU_ARE_NOW_BACK_IN_THE_MAIN_PASSAGE. 4DA0: 01 3C ; move_look(RM_3C_LAND_OF_DEAD) 4DA2: 00 ; Script_RM_3D_ANCIENT_DRAWINGS: ; PS_21 ; YOU'RE_IN_A_LARGE_ROOM_WITH_ANCIENT_DRAWINGS_ON_ALL_WALLS.______ ; THE_PICTURES_DEPICT_ATUM,_A_PHARAOH_WEARING_THE_DOUBLE_CROWN.___ ; A_SHALLOW_PASSAGE_PROCEEDS_DOWNWARD,_AND_A_SOMEWHAT_STEEPER_ONE_ ; LEADS_UP.__A_LOW_HANDS_AND_KNEES_PASSAGE_ENTERS_FROM_THE_SOUTH. ; 4DA3: 03 11 ; S 4DA5: 07 06 ; stop_if_pass ... 4DA7: 02 17 ; is_in_pack(OBJ_17_SARCOPH_FULL) 4DA9: 04 7B 72 ; print(PS_76) YOU_CAN'T_FIT_THIS_BIG_SARCOPHAGUS_THROUGH_THAT_LITTLE_PASSAGE! 4DAC: 07 06 ; stop_if_pass ... 4DAE: 02 18 ; is_in_pack(OBJ_18_SARCOPH_EMPTY) 4DB0: 04 7B 72 ; print(PS_76) YOU_CAN'T_FIT_THIS_BIG_SARCOPHAGUS_THROUGH_THAT_LITTLE_PASSAGE! 4DB3: 01 3A ; move_look(RM_3A_COMPLEX_JUNCTION) 4DB5: 09 03 ; U 4DB7: 01 3E ; move_look(RM_3E_MOON_GOD) 4DB9: 0A 03 ; D 4DBB: 01 3F ; move_look(RM_3F_RAGGED_WALLS) 4DBD: 00 ; Script_RM_3E_MOON_GOD: ; PS_22 ; YOU_ARE_IN_A_CHAMBER_WHOSE_WALL_CONTAINS_A_PICTURE_OF_A_MAN_____ ; WEARING_THE_LUNAR_DISK_ON_HIS_HEAD.__HE_IS_THE_GOD_KHONS,_THE___ ; MOON_GOD. ; 4DBE: 0A 03 ; D 4DC0: 01 3D ; move_look(RM_3D_ANCIENT_DRAWINGS) 4DC2: 0C 03 ; OUT 4DC4: 01 3D ; move_look(RM_3D_ANCIENT_DRAWINGS) 4DC6: 00 ; Script_RM_3F_RAGGED_WALLS: ; PS_23 ; YOU_ARE_IN_A_LONG_SLOPING_CORRIDOR_WITH_RAGGED_WALLS._ ; 4DC7: 09 03 ; U 4DC9: 01 3D ; move_look(RM_3D_ANCIENT_DRAWINGS) 4DCB: 0A 03 ; D 4DCD: 01 40 ; move_look(RM_40_CUL_DE_SAC) 4DCF: 00 ; Script_RM_40_CUL_DE_SAC: ; PS_24 ; YOU_ARE_IN_A_CUL-DE-SAC_ABOUT_EIGHT_FEET_ACROSS. ; 4DD0: 09 03 ; U 4DD2: 01 3F ; move_look(RM_3F_RAGGED_WALLS) 4DD4: 0C 03 ; OUT 4DD6: 01 3F ; move_look(RM_3F_RAGGED_WALLS) 4DD8: 00 ; Script_RM_41_CHAMBER_OF_HORUS: ; PS_25 ; YOU_ARE_IN_THE_CHAMBER_OF_HORUS,_A_LONG_EAST/WEST_PASSAGE_WITH__ ; HOLES_EVERYWHERE.__TO_EXPLORE_AT_RANDOM,_SELECT_NORTH,_SOUTH,___ ; UP,_OR_DOWN. ; 4DD9: 02 03 ; E 4DDB: 01 3A ; move_look(RM_3A_COMPLEX_JUNCTION) 4DDD: 04 03 ; W 4DDF: 01 4E ; move_look(RM_4E_WEAST_END_TWOPIT) 4DE1: 09 07 ; U 4DE3: 07 03 ; stop_if_pass ... 4DE5: 0A CC ; pyramid_crawl_move_random(0xCC) 4DE7: 01 48 ; move_look(RM_48_PRIESTS_BEDROOM) 4DE9: 01 07 ; N 4DEB: 07 03 ; stop_if_pass ... 4DED: 0A CC ; pyramid_crawl_move_random(0xCC) 4DEF: 01 49 ; move_look(RM_49_HIGH_PRIEST) 4DF1: 03 07 ; S 4DF3: 07 03 ; stop_if_pass ... 4DF5: 0A CC ; pyramid_crawl_move_random(0xCC) 4DF7: 01 42 ; move_look(RM_42_FALLEN_SLAB) 4DF9: 0A 07 ; D 4DFB: 07 03 ; stop_if_pass ... 4DFD: 0A CC ; pyramid_crawl_move_random(0xCC) 4DFF: 01 3B ; move_look(RM_3B_ANTEROOM_OF_SEKER) 4E01: 00 ; Script_RM_42_FALLEN_SLAB: ; PS_26 ; YOU_ARE_IN_A_LARGE_LOW_CIRCULAR_CHAMBER_WHOSE_FLOOR_IS_AN_______ ; IMMENSE_SLAB_FALLEN_FROM_THE_CEILING.__EAST_AND_WEST_THERE_ONCE_ ; WHERE_LARGE_PASSAGES,_BUT_THEY_ARE_NOW_FILLED_WITH_SAND.________ ; LOW_SMALL_PASSAGES_GO_NORTH_AND_SOUTH. ; 4E02: 01 03 ; N 4E04: 01 41 ; move_look(RM_41_CHAMBER_OF_HORUS) 4E06: 03 03 ; S 4E08: 01 50 ; move_look(RM_50_WEST_END_TWOPIT) 4E0A: 00 ; Script_RM_48_PRIESTS_BEDROOM: ; PS_27 ; YOU_ARE_IN_THE_PRIEST'S_BEDROOM.__THE_WALLS_ARE_COVERED_WITH____ ; CURTAINS,_THE_FLOOR_WITH_A_THICK_PILE_CARPET.__MOSS_COVERS_THE__ ; CEILING. ; 4E0B: 04 03 ; W 4E0D: 01 41 ; move_look(RM_41_CHAMBER_OF_HORUS) 4E0F: 0C 03 ; OUT 4E11: 01 41 ; move_look(RM_41_CHAMBER_OF_HORUS) 4E13: 00 ; Script_RM_49_HIGH_PRIEST: ; PS_28 ; THIS_IS_THE_CHAMBER_OF_THE_HIGH_PRIEST.___ANCIENT_DRAWINGS_COVER ; THE_WALLS.__AN_EXTREMELY_TIGHT_TUNNEL_LEADS_WEST.__IT_LOOKS_LIKE ; A_TIGHT_SQUEEZE.__ANOTHER_PASSAGE_LEADS_SE. ; 4E14: 04 09 ; W 4E16: 07 04 ; stop_if_pass ... 4E18: 0D ; is_pack_just_emerald() 4E19: 01 4C ; move_look(RM_4C_EERIE_GREEN_LIGHT) 4E1B: 04 A7 72 ; print(PS_77) SOMETHING_YOU'RE_CARRYING_WON'T_FIT_THROUGH_THE_TUNNEL_WITH_YOU. ; YOU'D_BEST_TAKE_INVENTORY_AND_DROP_SOMETHING. 4E1E: 06 03 ; SE 4E20: 01 41 ; move_look(RM_41_CHAMBER_OF_HORUS) 4E22: 00 ; Script_RM_4C_EERIE_GREEN_LIGHT: ; PS_29 ; YOU_ARE_IN_THE_HIGH_PRIEST'S_TREASURE_ROOM_LIT_BY_AN_EERIE_GREEN ; LIGHT.__A_NARROW_TUNNEL_EXITS_TO_THE_EAST. ; 4E23: 02 09 ; E 4E25: 07 04 ; stop_if_pass ... 4E27: 0D ; is_pack_just_emerald() 4E28: 01 49 ; move_look(RM_49_HIGH_PRIEST) 4E2A: 04 A7 72 ; print(PS_77) SOMETHING_YOU'RE_CARRYING_WON'T_FIT_THROUGH_THE_TUNNEL_WITH_YOU. ; YOU'D_BEST_TAKE_INVENTORY_AND_DROP_SOMETHING. 4E2D: 0C 09 ; OUT 4E2F: 07 04 ; stop_if_pass ... 4E31: 0D ; is_pack_just_emerald() 4E32: 01 49 ; move_look(RM_49_HIGH_PRIEST) 4E34: 04 A7 72 ; print(PS_77) SOMETHING_YOU'RE_CARRYING_WON'T_FIT_THROUGH_THE_TUNNEL_WITH_YOU. ; YOU'D_BEST_TAKE_INVENTORY_AND_DROP_SOMETHING. 4E37: 00 ; Script_RM_4E_WEAST_END_TWOPIT: ; PS_2A ; YOU_ARE_AT_THE_EAST_END_OF_THE_TWOPIT_ROOM.__THE_FLOOR_HERE_IS__ ; LITTERED_WITH_THIN_ROCK_SLABS,_WHICH_MAKE_IT_EASY_TO_DESCEND_THE ; PITS.__THERE_IS_A_PATH_HERE_BYPASSING_THE_PITS_TO_CONNECT_______ ; PASSAGES_EAST_AND_WEST.__THERE_ARE_HOLES_ALL_OVER,_BUT_THE_ONLY_ ; BIG_ONE_IS_ON_THE_WALL_DIRECTLY_OVER_THE_WEST_PIT_WHERE_YOU_____ ; CAN'T_GET_TO_IT. ; 4E38: 02 03 ; E 4E3A: 01 41 ; move_look(RM_41_CHAMBER_OF_HORUS) 4E3C: 04 03 ; W 4E3E: 01 50 ; move_look(RM_50_WEST_END_TWOPIT) 4E40: 0A 03 ; D 4E42: 01 4F ; move_look(RM_4F_BOTTOM_EASTERN_PIT) 4E44: 00 ; Script_RM_4F_BOTTOM_EASTERN_PIT: ; PS_2B ; YOU_ARE_AT_THE_BOTTOM_OF_THE_EASTERN_PIT_IN_THE_TWOPIT_ROOM. ; 4E45: 09 03 ; U 4E47: 01 4E ; move_look(RM_4E_WEAST_END_TWOPIT) 4E49: 0C 03 ; OUT 4E4B: 01 4E ; move_look(RM_4E_WEAST_END_TWOPIT) 4E4D: 00 ; Script_RM_50_WEST_END_TWOPIT: ; PS_2C ; YOU_ARE_AT_THE_WEST_END_OF_THE_TWOPIT_ROOM.__THERE_IS_A_LARGE___ ; HOLE_IN_THE_WALL_ABOVE_THE_PIT_AT_THIS_END_OF_THE_ROOM. ; 4E4E: 02 03 ; E 4E50: 01 4E ; move_look(RM_4E_WEAST_END_TWOPIT) 4E52: 04 03 ; W 4E54: 01 42 ; move_look(RM_42_FALLEN_SLAB) 4E56: 0A 03 ; D 4E58: 01 51 ; move_look(RM_51_BOTTOM_WEST_PIT) 4E5A: 00 ; Script_RM_51_BOTTOM_WEST_PIT: ; PS_2D ; YOU_ARE_AT_THE_BOTTOM_OF_THE_WEST_PIT_IN_THE_TWOPIT_ROOM.__THERE ; IS_A_LARGE_HOLE_IN_THE_WALL_ABOUT_TWENTY_FIVE_FEET_ABOVE_YOU. ; 4E5B: 09 03 ; U 4E5D: 01 50 ; move_look(RM_50_WEST_END_TWOPIT) 4E5F: 0C 03 ; OUT 4E61: 01 50 ; move_look(RM_50_WEST_END_TWOPIT) 4E63: 11 16 ; CLIMB 4E65: 07 08 ; stop_if_pass ... 4E67: 03 09 ; is_in_pack_or_current_room(OBJ_09_PLANT_LARGE) 4E69: 04 F2 72 ; print(PS_78) YOU_CLAMBER_UP_THE_PLANT_AND_SCURRY_THROUGH_THE_HOLE_AT_THE_TOP. 4E6C: 01 4D ; move_look(RM_4D_PROFUSION_OF_LEAVES) 4E6E: 07 06 ; stop_if_pass ... 4E70: 03 08 ; is_in_pack_or_current_room(OBJ_08_PLANT_MEDIUM) 4E72: 04 1F 73 ; print(PS_79) YOU'VE_CLIMBED_UP_THE_PLANT_AND_OUT_OF_THE_PIT. 4E75: 01 50 ; move_look(RM_50_WEST_END_TWOPIT) 4E77: 04 D1 7C ; print(PS_B8) THERE_IS_NOTHING_HERE_TO_CLIMB.__USE_UP_OR_OUT_TO_LEAVE_THE_PIT. 4E7A: 24 2F ; POUR 4E7C: 11 1C ; is_object_user_input(OBJ_1C_WATER) 4E7E: 15 1C 00 ; move_object_to_room(OBJ_1C_WATER, RM_00_nowhere) 4E81: 07 0E ; stop_if_pass ... 4E83: 03 07 ; is_in_pack_or_current_room(OBJ_07_PLANT_SMALL) 4E85: 15 07 00 ; move_object_to_room(OBJ_07_PLANT_SMALL, RM_00_nowhere) 4E88: 18 08 ; move_object_to_current_room(OBJ_08_PLANT_MEDIUM) 4E8A: 04 56 7C ; print(PS_B5) THE_PLANT_SPURTS_INTO_FURIOUS_GROWTH_FOR_A_FEW_SECONDS. 4E8D: 04 C5 6D ; print(PS_4C) THERE_IS_A_TWELVE_FOOT_BEAN_STALK_STRETCHING_UP_OUT_OF_THE_PIT,_ ; BELLOWING_"WATER..._WATER..." 4E90: 07 0E ; stop_if_pass ... 4E92: 03 08 ; is_in_pack_or_current_room(OBJ_08_PLANT_MEDIUM) 4E94: 15 08 00 ; move_object_to_room(OBJ_08_PLANT_MEDIUM, RM_00_nowhere) 4E97: 18 09 ; move_object_to_current_room(OBJ_09_PLANT_LARGE) 4E99: 04 7D 7C ; print(PS_B6) THE_PLANT_GROWS_EXPLOSIVELY,_ALMOST_FILLING_THE_BOTTOM_OF_THE___ ; PIT. 4E9C: 04 05 6E ; print(PS_4D) THERE_IS_A_GIGANTIC_BEAN_STALK_STRETCHING_ALL_THE_WAY_UP_TO_THE_ ; HOLE. 4E9F: 15 09 00 ; move_object_to_room(OBJ_09_PLANT_LARGE, RM_00_nowhere) 4EA2: 18 07 ; move_object_to_current_room(OBJ_07_PLANT_SMALL) 4EA4: 04 AD 7C ; print(PS_B7) YOU'VE_OVER-WATERED_THE_PLANT!__IT'S_SHRIVELING_UP! 4EA7: 04 99 6D ; print(PS_4B) THERE_IS_A_TINY_PLANT_IN_THE_PIT,_MURMURING_"WATER,_WATER,_..." 4EAA: 00 ; Script_RM_4D_PROFUSION_OF_LEAVES: ; PS_2E ; YOU_ARE_IN_A_LONG,_NARROW_CORRIDOR_STRETCHING_OUT_OF_SIGHT_TO___ ; THE_WEST.__AT_THE_EASTERN_END_IS_A_HOLE_THROUGH_WHICH_YOU_CAN___ ; SEE_A_PROFUSION_OF_LEAVES. ; 4EAB: 02 03 ; E 4EAD: 01 51 ; move_look(RM_51_BOTTOM_WEST_PIT) 4EAF: 0A 03 ; D 4EB1: 01 51 ; move_look(RM_51_BOTTOM_WEST_PIT) 4EB3: 11 03 ; CLIMB 4EB5: 01 51 ; move_look(RM_51_BOTTOM_WEST_PIT) 4EB7: 10 05 ; JUMP 4EB9: 04 C5 70 ; print(PS_6B) YOU_ARE_AT_THE_BOTTOM_OF_THE_PIT_WITH_A_BROKEN_NECK. 4EBC: 05 ; death_and_resurrect() 4EBD: 04 03 ; W 4EBF: 01 47 ; move_look(RM_47_CHAMBER_OF_OSIRIS) 4EC1: 00 ; Script_RM_47_CHAMBER_OF_OSIRIS: ; PS_2F ; YOU_ARE_IN_THE_CHAMBER_OF_OSIRIS._THE_CEILING_IS_TOO_HIGH_UP_FOR ; YOUR_LAMP_TO_SHOW_IT.__PASSAGES_LEAD_EAST,_NORTH,_AND_SOUTH. ; 4EC2: 01 03 ; N 4EC4: 01 44 ; move_look(RM_44_CHAMBER_OF_NEKHEBET) 4EC6: 02 03 ; E 4EC8: 01 46 ; move_look(RM_46_BLOCKED_FALLEN_BLOCK) 4ECA: 03 03 ; S 4ECC: 01 4D ; move_look(RM_4D_PROFUSION_OF_LEAVES) 4ECE: 00 ; Script_RM_46_BLOCKED_FALLEN_BLOCK: ; PS_30 ; THE_PASSAGE_HERE_IS_BLOCKED_BY_A_FALLEN_BLOCK. ; 4ECF: 03 03 ; S 4ED1: 01 47 ; move_look(RM_47_CHAMBER_OF_OSIRIS) 4ED3: 0C 03 ; OUT 4ED5: 01 47 ; move_look(RM_47_CHAMBER_OF_OSIRIS) 4ED7: 00 ; Script_RM_44_CHAMBER_OF_NEKHEBET: ; PS_31 ; YOU_ARE_IN_THE_CHAMBER_OF_NEKHEBET,_A_WOMAN_WITH_THE_HEAD_OF_A__ ; VULTURE,_WEARING_THE_CROWN_OF_EGYPT.__A_PASSAGE_EXITS_TO_THE____ ; SOUTH. ; 4ED8: 03 03 ; S 4EDA: 01 47 ; move_look(RM_47_CHAMBER_OF_OSIRIS) 4EDC: 0C 03 ; OUT 4EDE: 01 47 ; move_look(RM_47_CHAMBER_OF_OSIRIS) 4EE0: 00 ; 4EE1: FF
Ambient Light Table
When we calculate the score, we look at the upper bit in each room. If the bit is set, the second value is added to the score. This mechanism is not used by the existing code -- probably an old feature.
This is the beginning of the save-to-tape. Maybe at one time, the ambient light changed? It doesn't now, and there is no need to save this table. We could have just started saving with the object data.
; 2 bytes per room
; * 0x4000 means there is light in the room (no need for a lamp)
; * 0x0000 means you better have a lamp
;
; 2nd byte is BCD score if upper bit is set of 1st byte
AmbientLightTable:
; Room Light
4EE2: 40 00 ; RM_01_BEFORE_ENTRANCE natural light
4EE4: 40 00 ; RM_02_IN_ENTRANCE natural light
4EE6: 40 00 ; RM_03_DESERT1 natural light
4EE8: 40 00 ; RM_04_DESERT2 natural light
4EEA: 40 00 ; RM_05_DESERT3 natural light
4EEC: 40 00 ; RM_06_DESERT4 natural light
4EEE: 40 00 ; RM_07_BENEATH_A_HOLE natural light
4EF0: 00 00 ; RM_08_CRAWLING_OVER_PEBBLES dark
4EF2: 00 00 ; RM_09_BROKEN_POTTERY dark
4EF4: 00 00 ; RM_0A_AWKWARD_SLOPING dark
4EF6: 00 00 ; RM_0B_SPLENDID_CHAMBER dark
4EF8: 00 00 ; RM_0C_SMALL_PIT_WHITE_MIST dark
4EFA: 00 00 ; RM_0D_STEPS_LEAD_UP_DOME dark
4EFC: 00 00 ; RM_0E_LOW_ROOM_HIEROGLYPH dark
4EFE: 00 00 ; RM_0F_EAST_BANK_BOTTOMLESS_PIT dark
4F00: 00 00 ; RM_10_PHARAOHS_CHAMBER dark
4F02: 00 00 ; RM_11_SOUTH_SIDE_CHAMBER dark
4F04: 00 00 ; RM_12_HALL_OF_GODS dark
4F06: 00 00 ; RM_13_LITTLE_PASSAGE_SIX_FEET dark
4F08: 00 00 ; RM_14_EAST_END_LONG_HALL dark
4F0A: 00 00 ; RM_15_WEST_END_FEATURELESS_HALL dark
4F0C: 00 00 ; RM_16_CROSSOVER dark
4F0E: 00 00 ; RM_17_DEAD_END1 dark
4F10: 00 00 ; RM_18_THRONE_CHAMBER dark
4F12: 00 00 ; RM_19_LOW_NS_PASSAGE dark
4F14: 00 00 ; RM_1A_PANEL_NORTH_WALL dark
4F16: 00 00 ; RM_1B_CHAMBER_OF_ANUBIS dark
4F18: 00 00 ; RM_1C_TWISTY_PASSAGES1 dark
4F1A: 00 00 ; RM_1D_TWISTY_PASSAGES2 dark
4F1C: 00 00 ; RM_1E_TWISTY_PASSAGES3 dark
4F1E: 00 00 ; RM_1F_TWISTY_PASSAGES4 dark
4F20: 00 00 ; RM_20_TWISTY_PASSAGES5 dark
4F22: 00 00 ; RM_21_TWISTY_PASSAGES6 dark
4F24: 00 00 ; RM_22_TWISTY_PASSAGES7 dark
4F26: 00 00 ; RM_23_TWISTY_PASSAGES8 dark
4F28: 00 00 ; RM_24_TWISTY_PASSAGES9 dark
4F2A: 00 00 ; RM_25_TWISTY_PASSAGES10 dark
4F2C: 00 00 ; RM_26_TWISTY_PASSAGES11 dark
4F2E: 00 00 ; RM_27_TWISTY_PASSAGES12 dark
4F30: 00 00 ; RM_28_TWISTY_PASSAGES13 dark
4F32: 00 00 ; RM_29_TWISTY_PASSAGES14 dark
4F34: 00 00 ; RM_2A_DEAD_END2 dark
4F36: 00 00 ; RM_2B_DEAD_END3 dark
4F38: 00 00 ; RM_2C_DEAD_END4 dark
4F3A: 00 00 ; RM_2D_DEAD_END5 dark
4F3C: 00 00 ; RM_2E_DEAD_END6 dark
4F3E: 00 00 ; RM_2F_DEAD_END7 dark
4F40: 00 00 ; RM_30_DEAD_END8 dark
4F42: 00 00 ; RM_31_DEAD_END9 dark
4F44: 00 00 ; RM_32_DEAD_END10 dark
4F46: 00 00 ; RM_33_DEAD_END11 dark
4F48: 00 00 ; RM_34_BRINK_OF_LARGE_PIT dark
4F4A: 00 00 ; RM_35_DEAD_END12 dark
4F4C: 00 00 ; RM_36_DIRTY_BROKEN_PASSAGE dark
4F4E: 00 00 ; RM_37_BRINK_OF_CLEAN_PIT dark
4F50: 00 00 ; RM_38_PIT_LITTLE_STREAM dark
4F52: 00 00 ; RM_39_ROOM_OF_BES dark
4F54: 00 00 ; RM_3A_COMPLEX_JUNCTION dark
4F56: 00 00 ; RM_3B_ANTEROOM_OF_SEKER dark
4F58: 00 00 ; RM_3C_LAND_OF_DEAD dark
4F5A: 00 00 ; RM_3D_ANCIENT_DRAWINGS dark
4F5C: 00 00 ; RM_3E_MOON_GOD dark
4F5E: 00 00 ; RM_3F_RAGGED_WALLS dark
4F60: 00 00 ; RM_40_CUL_DE_SAC dark
4F62: 00 00 ; RM_41_CHAMBER_OF_HORUS dark
4F64: 00 00 ; RM_42_FALLEN_SLAB dark
4F66: 00 00 ; RM_43_
4F68: 00 00 ; RM_44_CHAMBER_OF_NEKHEBET dark
4F6A: 00 00 ; RM_45_
4F6C: 00 00 ; RM_46_BLOCKED_FALLEN_BLOCK dark
4F6E: 00 00 ; RM_47_CHAMBER_OF_OSIRIS dark
4F70: 00 00 ; RM_48_PRIESTS_BEDROOM dark
4F72: 00 00 ; RM_49_HIGH_PRIEST dark
4F74: 00 00 ; RM_4A_
4F76: 00 00 ; RM_4B_
4F78: 40 00 ; RM_4C_EERIE_GREEN_LIGHT "LIT_BY_AN_ERRIE_GREEN_LIGHT"
4F7A: 00 00 ; RM_4D_PROFUSION_OF_LEAVES dark
4F7C: 00 00 ; RM_4E_WEAST_END_TWOPIT dark
4F7E: 00 00 ; RM_4F_BOTTOM_EASTERN_PIT dark
4F80: 00 00 ; RM_50_WEST_END_TWOPIT dark
4F82: 00 00 ; RM_51_BOTTOM_WEST_PIT dark
Object Data
This two-byte table contains the object's attributes ("isTreasure" and "isGettable") and the object's current location (a room or inside another object).
The code references the objects by numeric id, but I have given them unique names in the table below.
The format of the two bytes are:
MCT----- RRRRRRRR M - if set, the second byte is an object number (container). if clear, the second byte is a room number. C - if set, object can be picked up. T - if set, object is treasure. RRRRRRRR - Second byte is the object's location (containing object or room number).
ObjectData:
; MCT Name Start location
4F84: 00 00 ; 000..... OBJ_01_BRIDGE_ROOM_0F *
4F86: 00 00 ; 000..... OBJ_02_BRIDGE_ROOM_12 *
4F88: 00 00 ;
4F8A: 00 00 ;
4F8C: 00 00 ;
4F8E: 00 33 ; 000..... OBJ_06_VENDING_MACHINE RM_33_DEAD_END11
4F90: 00 51 ; 000..... OBJ_07_PLANT_SMALL RM_51_BOTTOM_WEST_PIT
4F92: 00 00 ; 000..... OBJ_08_PLANT_MEDIUM *
4F94: 00 00 ; 000..... OBJ_09_PLANT_LARGE *
4F96: 00 00 ;
4F98: 00 10 ; 000..... OBJ_0B_SERPENT RM_10_PHARAOHS_CHAMBER
4F9A: 00 00 ;
4F9C: 00 00 ;
4F9E: 40 02 ; 010..... OBJ_0E_LAMP_OFF RM_02_IN_ENTRANCE
4FA0: 40 00 ; 010..... OBJ_0F_LAMP_ON *
4FA2: 40 08 ; 010..... OBJ_10_BOX RM_08_CRAWLING_OVER_PEBBLES
4FA4: 40 09 ; 010..... OBJ_11_SCEPTER RM_09_BROKEN_POTTERY
4FA6: 40 48 ; 010..... OBJ_12_PILLOW RM_48_PRIESTS_BEDROOM
4FA8: 40 0B ; 010..... OBJ_13_BIRD RM_0B_SPLENDID_CHAMBER
4FAA: 00 00 ; 000..... OBJ_14_BIRD_IN_BOX *
4FAC: 00 00 ; 000..... OBJ_15_POTTERY *
4FAE: 60 00 ; 011..... OBJ_16_PEARL *
4FB0: 40 3D ; 010..... OBJ_17_SARCOPH_FULL RM_3D_ANCIENT_DRAWINGS
4FB2: 40 00 ; 010..... OBJ_18_SARCOPH_EMPTY *
4FB4: 40 3B ; 010..... OBJ_19_MAGAZINES RM_3B_ANTEROOM_OF_SEKER
4FB6: 40 02 ; 010..... OBJ_1A_FOOD RM_02_IN_ENTRANCE
4FB8: 40 02 ; 010..... OBJ_1B_BOTTLE RM_02_IN_ENTRANCE
4FBA: C0 1B ; 110..... OBJ_1C_WATER RM_1B_CHAMBER_OF_ANUBIS
4FBC: 00 00 ;
4FBE: 00 38 ; 000..... OBJ_1E_STREAM_ROOM_38 RM_38_PIT_LITTLE_STREAM
4FC0: 60 4C ; 011..... OBJ_1F_EMERALD RM_4C_EERIE_GREEN_LIGHT
4FC2: 60 00 ; 011..... OBJ_20_VASE_ON_PILLOW *
4FC4: 60 49 ; 011..... OBJ_21_VASE RM_49_HIGH_PRIEST
4FC6: 60 44 ; 011..... OBJ_22_KEY RM_44_CHAMBER_OF_NEKHEBET
4FC8: 40 00 ; 010..... OBJ_23_BATTERIES_FRESH *
4FCA: 40 00 ; 010..... OBJ_24_BATTERIES_WORN *
4FCC: 60 0E ; 011..... OBJ_25_GOLD RM_0E_LOW_ROOM_HIEROGLYPH
4FCE: 60 11 ; 011..... OBJ_26_DIAMONDS RM_11_SOUTH_SIDE_CHAMBER
4FD0: 60 19 ; 011..... OBJ_27_SILVER RM_19_LOW_NS_PASSAGE
4FD2: 60 12 ; 011..... OBJ_28_JEWELRY RM_12_HALL_OF_GODS
4FD4: 60 18 ; 011..... OBJ_29_COINS RM_18_THRONE_CHAMBER
4FD6: 60 00 ; 011..... OBJ_2A_CHEST *
4FD8: 60 47 ; 011..... OBJ_2B_NEST_EGGS RM_47_CHAMBER_OF_OSIRIS
4FDA: 40 00 ; 010..... OBJ_2C_LAMP_DEAD *
Game Variables
currentRoom: 4FDC: 01 bcdTurnCountLSB: 4FDD: 00 bcdTurnCountMSB: 4FDE: 00 lampOnTurnCount: 4FDF: 00 00 ; Number of turns the lamp has been on lastRoom: 4FE1: 00 numObjInPack: 4FE2: 00 numResurrected: 4FE3: 00 ; Number of times resurrected?
Object Info
The LoadGame code restores the 1st four bytes of this table even though only the 1st byte is mangled (bug in code?).
Object descriptions (44 objects)
For packable objects each slot points to a message pair. The first is the long description and the second is the short description for the backpack. ; # Name Description
ObjectDescriptions: ; Name Desc Notes 4FE4: AC 6C ; OBJ_01_BRIDGE_ROOM_0F PS_40 Stone bridge room 15 4FE6: AC 6C ; OBJ_02_BRIDGE_ROOM_12 PS_40 Stone bridge room 18 4FE8: 5D 47 ; -Never used (points to empty string) 4FEA: 5D 47 ; -Never used (points to empty string) 4FEC: 5D 47 ; -Never used (points to empty string) 4FEE: 35 6E ; OBJ_06_VENDING_MACHINE PS_4E Vending Machine 4FF0: 99 6D ; OBJ_07_PLANT_SMALL PS_4B Tiny plant 4FF2: C5 6D ; OBJ_08_PLANT_MEDIUM PS_4C Twelve foot beanstalk 4FF4: 05 6E ; OBJ_09_PLANT_LARGE PS_4D Giant beanstalk 4FF6: 00 00 ; -Never used (points to null) 4FF8: 8E 6C ; OBJ_0B_SERPENT PS_3F Serpent bars the way 4FFA: 00 00 ; -Never used (points to null) 4FFC: 00 00 ; -Never used (points to null) 4FFE: 82 6B ; OBJ_0E_LAMP_OFF PS_32 Lamp (not lit) 5000: A7 6B ; OBJ_0F_LAMP_ON PS_34 Lamp (lit) 5002: C9 6B ; OBJ_10_BOX PS_36 Statue box 5004: F2 6B ; OBJ_11_SCEPTER PS_38 Scepter 5006: 66 6C ; OBJ_12_PILLOW PS_3D Pillow 5008: 21 6C ; OBJ_13_BIRD PS_3A Statue 500A: 3F 6C ; OBJ_14_BIRD_IN_BOX PS_3B Statue in box 500C: 41 70 ; OBJ_15_POTTERY PS_66 Pottery 500E: 9B 70 ; OBJ_16_PEARL PS_69 Pearl 5010: CC 6C ; OBJ_17_SARCOPH_FULL PS_41 Sarcophagus with pearl 5012: CC 6C ; OBJ_18_SARCOPH_EMPTY PS_41 Sarcophagus empty 5014: 05 6D ; OBJ_19_MAGAZINES PS_43 Magazines 5016: 40 6D ; OBJ_1A_FOOD PS_45 Food 5018: 58 6D ; OBJ_1B_BOTTLE PS_47 Bottle 501A: 74 6D ; OBJ_1C_WATER PS_49 Water in the bottle 501C: 5D 47 ; -Never used (points to empty string) 501E: 5D 47 ; OBJ_1E_STREAM_ROOM_38 Empty (no description) 5020: 68 70 ; OBJ_1F_EMERALD PS_67 Emerald 5022: 19 70 ; OBJ_20_VASE_ON_PILLOW PS_65 Vase on pillow 5024: F6 6F ; OBJ_21_VASE PS_63 Vase 5026: D2 6F ; OBJ_22_KEY PS_61 Key 5028: 84 6E ; OBJ_23_BATTERIES_FRESH PS_4F Batteries 502A: A3 6E ; OBJ_24_BATTERIES_WORN PS_51 Worn-out batteries 502C: CF 6E ; OBJ_25_GOLD PS_53 Gold Nugget 502E: FF 6E ; OBJ_26_DIAMONDS PS_55 Diamonds 5030: 1E 6F ; OBJ_27_SILVER PS_57 Silver 5032: 3E 6F ; OBJ_28_JEWELRY PS_59 Jewelry 5034: 62 6F ; OBJ_29_COINS PS_5B Coins 5036: 7F 6F ; OBJ_2A_CHEST PS_5D Chest 5038: A6 6F ; OBJ_2B_NEST_EGGS PS_5F Nest of golden eggs 503A: 82 6B ; OBJ_2C_LAMP_DEAD PS_32 Lamp (dead)
Script Commands
This lookup table holds the pointers to the individual script commands.
Seems 0B and 0C are never used ??
ScriptCommands:
503C: 27 51 ; COM_01_move_look(room_num)
503E: 65 52 ; COM_02_is_in_pack(obj_num)
5040: 74 52 ; COM_03_is_in_pack_or_current_room(obj_num)
5042: FB 52 ; COM_04_print(ps_num)
5044: E6 53 ; COM_05_death_and_resurrect()
5046: 00 00
5048: BD 42 ; COM_07_stop_if_pass()
504A: 64 54 ; COM_08_print_score()
504C: 8C 55 ; COM_09_end_of_game()
504E: B5 52 ; COM_0A_pyramid_crawl_move_random(value)
5050: 08 53 ; COM_0B_drop_object_print_ok(obj_num)
5052: CF 52 ; COM_0C_move_to_room_if_was_last(room_num)
5054: 98 52 ; COM_0D_is_pack_just_emerald()
5056: 1E 53 ; COM_0E_move_to_last_room()
5058: 38 53 ; COM_0F_print_inventory()
505A: 78 53 ; COM_10_print_room_description()
505C: 7E 53 ; COM_11_is_object_user_input(obj_num)
505E: 8C 53 ; COM_12_get_from_room_print_ok(obj_num)
5060: 00 00
5062: C8 53 ; COM_14_print_ok()
5064: D1 53 ; COM_15_move_object_to_room(obj_num, room_num)
5066: E0 52 ; COM_16_get_users_object_print_ok()
5068: C1 53 ; COM_17_drop_users_object_print_ok()
506A: 42 52 ; COM_18_move_object_to_current_room(obj_num)
506C: 50 52 ; COM_19_put_object_in_container_print_ok(obj_num, obj_num)
506E: 87 52 ; COM_1A_is_in_current_room(obj_num)
5070: 92 55 ; COM_1B_load_game()
5072: C6 55 ; COM_1C_save_game()
5074: E8 55 ; COM_1D_scramble_directions_print_ack()
After Every Step
; This processing takes place after every user input.[[br]] ; 1. Increment the count on the lamp and the number of turns.[[br]] ; 2. Warn the player if the lamp is going dim and change the batteries automatically. AfterEveryStep: 5076: 3E 0F LD A,$0F ; obj_LAMP_on 5078: 21 84 4F LD HL,ObjectData ; Object table 507B: CD 5C 42 CALL TableOffsetTwoBytes ; Lookup the object info 507E: 23 INC HL ; Location 507F: 7E LD A,(HL) ; Is the ... 5080: A7 AND A ; ... lamp turned on? 5081: CA D1 50 JP Z,CheckAutoBatteries; No, bump BCD turn count and out 5084: 2A DF 4F LD HL,(lampOnTurnCount); Bump ... 5087: 23 INC HL ; ... turns the lamp ... 5088: 22 DF 4F LD (lampOnTurnCount),HL; ... has been on 508B: 7C LD A,H ; Has lamp been ... 508C: FE 01 CP $01 ; ... on 256 turns or more? 508E: C2 D1 50 JP NZ,CheckAutoBatteries; No, bump BCD turn count and out 5091: 7D LD A,L ; Has lamp been lit ... 5092: FE 22 CP $22 ; ... exactly 256+34 = 290 turns? 5094: C2 A0 50 JP NZ,$50A0 ; No, skip message 5097: 21 19 79 LD HL,PS_A6 ; "YOUR_LAMP_IS_GETTING_DIM." 509A: CD A9 44 CALL PrintPacked ; Print message 509D: C3 14 51 JP BumpBCDTurnCount ; Bump BCD turn count and out 50A0: FE 36 CP $36 ; Has lamp been lit 256+54 = 310 turns? 50A2: C2 D1 50 JP NZ,CheckAutoBatteries; No, bump BCD turn count and out 50A5: 3E 0F LD A,$0F ; obj_LAMP_on 50A7: 21 84 4F LD HL,ObjectData ; Object table 50AA: CD 5C 42 CALL TableOffsetTwoBytes ; Look up the object info 50AD: 23 INC HL ; Point to location 50AE: 46 LD B,(HL) ; Current location of the obj_LAMP_on 50AF: 36 00 LD (HL),$00 ; The obj_LAMP_on is now out of play 50B1: 21 84 4F LD HL,ObjectData ; Look up ... 50B4: 3E 2C LD A,$2C ; ... info for ... 50B6: CD 5C 42 CALL TableOffsetTwoBytes ; ... obj_LAMP_dead 50B9: 23 INC HL ; Location 50BA: 70 LD (HL),B ; Replace the obj_LAMP_on with obj_LAMP_dead 50BB: 3E 23 LD A,$23 ; obj_BATTERIES_fresh 50BD: 1E FF LD E,$FF ; Fresh batteries in ... 50BF: CD 4B 42 CALL GetObjectInfo ; ... backpack? 50C2: CA D1 50 JP Z,CheckAutoBatteries; Yes, automatically replace them 50C5: 21 9E 79 LD HL,PS_A7 ; "YOUR_LAMP_HAS_RUN_OUT_OF_POWER." 50C8: CD A9 44 CALL PrintPacked ; Print the message 50CB: CD E2 51 CALL DescribeRoom ; Describe the dark room 50CE: C3 14 51 JP BumpBCDTurnCount ; Bump the BCD turn count and out ; CheckAutoBatteries: 50D1: 2A DF 4F LD HL,(lampOnTurnCount); Get the turns the lamp has been on 50D4: 11 2C 01 LD DE,$012C ; Match 300 turns 50D7: 7C LD A,H ; Has lamp been on ... 50D8: BA CP D ; ... 300 turns? 50D9: DA 14 51 JP C,BumpBCDTurnCount ; No, bump the BCD turn count and out 50DC: 7D LD A,L ; Has lamp been on ... 50DD: BB CP E ; ... 300 turns? 50DE: DA 14 51 JP C,BumpBCDTurnCount ; No, bump the BCD turn count and out 50E1: 3E 23 LD A,$23 ; Are the ... 50E3: 1E FF LD E,$FF ; obj_BATTERIES_fresh ... 50E5: CD 4B 42 CALL GetObjectInfo ; ... in the backpack? 50E8: C2 14 51 JP NZ,BumpBCDTurnCount ; No, bump the BCD turn count and out 50EB: 3E 2C LD A,$2C ; Is the ... 50ED: 1E FF LD E,$FF ; ... obj_LAMP_dead ... 50EF: CD 4B 42 CALL GetObjectInfo ; ... in the backpack? 50F2: C2 14 51 JP NZ,BumpBCDTurnCount ; No, bump the BCD turn count and out 50F5: 23 INC HL ; The obj_LAMP_dead ... 50F6: 36 00 LD (HL),$00 ; ... is now out of play 50F8: 3E 23 LD A,$23 ; Get the ... 50FA: 21 84 4F LD HL,ObjectData ; ... info for ... 50FD: CD 5C 42 CALL TableOffsetTwoBytes ; ... obj_BATTERIES_fresh 5100: 23 INC HL ; Fresh batteries ... 5101: 36 00 LD (HL),$00 ; ... are now out of play 5103: 23 INC HL ; Bump to ... 5104: 23 INC HL ; ... obj_BATTERIES_worn 5105: 36 FF LD (HL),$FF ; Worn out batteries are now ... 5107: 1E FF LD E,$FF ; ... in the backpack 5109: 3E 0F LD A,$0F ; obj_LAMP_on 510B: CD 71 42 CALL SetObjectLocation ; Move the obj_LAMP_on to the backpack 510E: 21 E5 79 LD HL,PS_A9 ; "REPLACING__THE_BATTERIES." 5111: CD A9 44 CALL PrintPacked ; Print message ; BumpBCDTurnCount: 5114: 3A DD 4F LD A,(bcdTurnCountLSB) ; Get the lower BCD turn count 5117: C6 01 ADD $01 ; Add one to ... 5119: 27 DAA ; ... BCD value 511A: 32 DD 4F LD (bcdTurnCountLSB),A ; Store new BCD value 511D: 3A DE 4F LD A,(bcdTurnCountMSB) ; Get the upper BCD turn count 5120: CE 00 ADC $00 ; Add any ... 5122: 27 DAA ; ... carry from lower 5123: 32 DE 4F LD (bcdTurnCountMSB),A ; Update upper BCD count 5126: C9 RET
COM_01_move_look(room_num)
This routine moves the player to a new room. If there is light in the new room or light in the old room then the move always works. Otherwise there is a 60% chance the move kills you.
If there is light in the new room then the room description is printed.
After every move the code checks the pack for treasures. If there are 2 or more treasures then the Mummy moves them all to room 53 (the hard-to-find room in the maze). Then the code moves the chest to room 53. Up till now the chest has been in room 0 (out of play). The only way to make the chest appear in the maze is to encounter the mummy. Once the chest is in a room (any room) the mummy no longer appears. You only see the mummy once.
The mummy says he is going to take the treasures and "PUT_THEM_IN_THE_CHEST_DEEP_IN_THE_MAZE!". But he only puts them in the same room -- not actually in the chest. The code does not utilize the container relationship.
COM_01_move_look: 5127: E1 POP HL ; Get the ... 5128: 46 LD B,(HL) ; ... target room number 5129: 23 INC HL ; Next byte 512A: E5 PUSH HL ; Update script pointer 512B: 3A DC 4F LD A,(CurrentRoom) ; Checking ... 512E: 5F LD E,A ; ... current room 512F: 3E 0F LD A,$0F ; obj_LAMP_on 5131: CD 4B 42 CALL GetObjectInfo ; Is the lit-lamp in this room? 5134: CA 77 51 JP Z,$5177 ; Yes, there is light. Make the move. 5137: 1E FF LD E,$FF ; Backpack room number 5139: 3E 0F LD A,$0F ; obj_LAMP_on 513B: CD 4B 42 CALL GetObjectInfo ; Is the lit-lamp in the backpack? 513E: CA 77 51 JP Z,$5177 ; Yes, there is light. Make the move. 5141: 21 E2 4E LD HL,AmbientLightTable; Ambient light table 5144: 3A DC 4F LD A,(CurrentRoom) ; Get the light setting ... 5147: CD 5C 42 CALL TableOffsetTwoBytes ; ... for the current room 514A: 7E LD A,(HL) ; Get the ambient light level of the room 514B: E6 40 AND $40 ; Check the bit 514D: C2 77 51 JP NZ,$5177 ; There is light in the current room. Make the move. 5150: 78 LD A,B ; Room we are moving to 5151: 21 E2 4E LD HL,AmbientLightTable; Ambient light table 5154: CD 5C 42 CALL TableOffsetTwoBytes ; Get the light setting ... 5157: 7E LD A,(HL) ; ... for the destination room 5158: E6 40 AND $40 ; Check the bit 515A: C2 77 51 JP NZ,$5177 ; There is light in the next room. Make the move. 515D: 58 LD E,B ; Destination room 515E: 3E 0F LD A,$0F ; obj_LAMP_on 5160: CD 4B 42 CALL GetObjectInfo ; Is the lit-lamp in the next room? 5163: CA 77 51 JP Z,$5177 ; Yes, there is light. Make the move. 5166: 3A 11 47 LD A,(keyWaitCounter) ; Random number (key-input wait counter) 5169: FE 67 CP $67 ; random(255) < 103? That's 40% of the time. 516B: DA 77 51 JP C,$5177 ; Yes, we were lucky. Make the move. 516E: 21 58 78 LD HL,PS_A1 ; "YOU_FELL_INTO_A_PIT_AND_BROKE_EVERY_BONE_IN_YOUR_BODY. " 5171: CD A9 44 CALL PrintPacked ; Print message 5174: C3 E6 53 JP COM_05_death_and_resurrect; The player died. Resurrect the player. ; 5177: 3A DC 4F LD A,(CurrentRoom) ; Copy current room number ... 517A: 32 E1 4F LD (lastRoom),A ; ... to last room number 517D: 78 LD A,B ; Move player to ... 517E: 32 DC 4F LD (CurrentRoom),A ; ... current room 5181: CD E2 51 CALL DescribeRoom ; Print room and room description (with objects) 5184: 3E 2A LD A,$2A ; obj_CHEST 5186: 21 84 4F LD HL,ObjectData ; object info 5189: CD 5C 42 CALL TableOffsetTwoBytes ; Look up the info on the chest 518C: 23 INC HL ; Get the ... 518D: 7E LD A,(HL) ; ... room number of the chest 518E: A7 AND A ; Has the chest been placed in the maze? 518F: C2 DF 51 JP NZ,$51DF ; Yes, skip themMummy ; 5192: 21 84 4F LD HL,ObjectData ; object info 5195: 0E 2C LD C,$2C ; 44 objects total 5197: 06 00 LD B,$00 ; Count number of treasures 5199: 7E LD A,(HL) ; Attribute of object 519A: E6 20 AND $20 ; Is object a treasure? 519C: 23 INC HL ; Point to 2nd entry 519D: CA A7 51 JP Z,$51A7 ; Not an object, move to next object 51A0: 7E LD A,(HL) ; Is the object ... 51A1: FE FF CP $FF ; ... in the backpack? 51A3: C2 A7 51 JP NZ,$51A7 ; No, move to next object 51A6: 04 INC B ; Bump the treasure count 51A7: 23 INC HL ; Next object 51A8: 0D DEC C ; All objects checked? 51A9: C2 99 51 JP NZ,$5199 ; No, go back for all of them ; 51AC: 78 LD A,B ; Two (or more) treasures ... 51AD: FE 02 CP $02 ; ... in the backpack? 51AF: DA DF 51 JP C,$51DF ; No, skip the mummy ; 51B2: 21 84 4F LD HL,ObjectData ; Object info 51B5: 0E 2C LD C,$2C ; 44 objects to check 51B7: 7E LD A,(HL) ; Get the object attribute 51B8: E6 20 AND $20 ; Is the object treasure? 51BA: 23 INC HL ; Next byte in entry 51BB: CA CD 51 JP Z,$51CD ; Not a treasure, move to next object 51BE: 7E LD A,(HL) ; Get the object location 51BF: FE FF CP $FF ; In the backpack? 51C1: C2 CD 51 JP NZ,$51CD ; Not in the backpack, move to next object 51C4: 36 35 LD (HL),$35 ; Move the object to the treasure room in the maze 51C6: 3A E2 4F LD A,(numObjInPack) ; Number of objects in pack 51C9: 3D DEC A ; No longer carying ... 51CA: 32 E2 4F LD (numObjInPack),A ; ... this object 51CD: 23 INC HL ; Next object 51CE: 0D DEC C ; Have we checked all objects? 51CF: C2 B7 51 JP NZ,$51B7 ; No, go back for them all 51D2: 1E 35 LD E,$35 ; room_53 in the maze 51D4: 3E 2A LD A,$2A ; obj_CHEST 51D6: CD 71 42 CALL SetObjectLocation ; Place the chest in the maze 51D9: 21 A0 7A LD HL,PS_AD ; "_____SUDDENLY,_A_MUMMY_CREEPS_UP_BEHIND_YOU!!" 51DC: CD A9 44 CALL PrintPacked ; Print the message ; 51DF: C3 A6 42 JP ScriptCommandPASS ; Move passed. Continue the script. DescribeRoom: 51E2: 3A DC 4F LD A,(CurrentRoom) ; Get the current room number 51E5: 21 E2 4E LD HL,AmbientLightTable; Ambient light table 51E8: CD 5C 42 CALL TableOffsetTwoBytes ; Look up the lighting info 51EB: 7E LD A,(HL) ; Is there ... 51EC: E6 40 AND $40 ; ... natural light? 51EE: C2 0E 52 JP NZ,$520E ; Yes, show the room description 51F1: 3A DC 4F LD A,(CurrentRoom) ; Get the current room number 51F4: 5F LD E,A ; Is the ... 51F5: 3E 0F LD A,$0F ; ... obj_LAMP_ON ... 51F7: CD 4B 42 CALL GetObjectInfo ; ... in the current room? 51FA: CA 0E 52 JP Z,$520E ; Yes, there is light. Show the room description 51FD: 1E FF LD E,$FF ; Is the ... 51FF: 3E 0F LD A,$0F ; ... obj_LAMP_ON ... 5201: CD 4B 42 CALL GetObjectInfo ; ... in the backpack? 5204: CA 0E 52 JP Z,$520E ; Yes, there is light. Show the room description 5207: 21 CA 78 LD HL,PS_A4 ; "IT_IS_NOW_PITCH_DARK.__IF_YOU_PROCEED,_YOU_" 520A: CD A9 44 CALL PrintPacked ; Print the warning 520D: C9 RET ; Out ; 520E: 3A DC 4F LD A,(CurrentRoom) ; Get the current room number 5211: 21 25 48 LD HL,RoomTable ; Room info table 5214: CD 66 42 CALL TableOffsetFourBytes; Look up 4-byte entry 5217: 7E LD A,(HL) ; Get the description LSB 5218: 23 INC HL ; Next byte 5219: 66 LD H,(HL) ; Get the dscription MSB 521A: 6F LD L,A ; Move description LSB to HL 521B: CD A9 44 CALL PrintPacked ; Print the room description ; 521E: 06 00 LD B,$00 ; Object number (counting up from 1 to 44) 5220: 04 INC B ; Checking this object number 5221: 3A DC 4F LD A,(CurrentRoom) ; Checking ... 5224: 5F LD E,A ; ... current room 5225: 78 LD A,B ; Have we checked ... 5226: FE 2D CP $2D ; ... all objects? 5228: D0 RET NC ; Yes, done ; 5229: CD 4B 42 CALL GetObjectInfo ; Get the info about the object 522C: C2 20 52 JP NZ,$5220 ; Ignore object if it isn't in the current room 522F: 78 LD A,B ; Object number 5230: 21 E4 4F LD HL,ObjectDescriptions; Object description table 5233: CD 5C 42 CALL TableOffsetTwoBytes ; Look up the object's description 5236: 7E LD A,(HL) ; Get the LSB 5237: 23 INC HL ; Next byte of pointer 5238: 66 LD H,(HL) ; Get the description MSB 5239: 6F LD L,A ; Description pointer now in HL 523A: C5 PUSH BC ; Hold our object count 523B: CD A9 44 CALL PrintPacked ; Print the object's long description 523E: C1 POP BC ; Restore the object count 523F: C3 20 52 JP $5220 ; Go back for all objects
COM_18_move_object_to_current_room(obj_num)
COM_18_move_object_to_current_room: 5242: E1 POP HL ; Get script pointer 5243: 3A DC 4F LD A,(CurrentRoom) ; Get current room 5246: 5F LD E,A ; Object destination 5247: 7E LD A,(HL) ; Object number from script 5248: 23 INC HL ; Update ... 5249: E5 PUSH HL ; ... the script pointer 524A: CD 71 42 CALL SetObjectLocation ; Move the object 524D: C3 A6 42 JP ScriptCommandPASS ; Command passes
COM_19_put_object_in_container_print_ok(obj_num, obj_num)
COM_19_put_object_in_container_print_ok: 5250: E1 POP HL ; Get script pointer 5251: 7E LD A,(HL) ; Get object number from script 5252: 23 INC HL ; Next byte in script 5253: 46 LD B,(HL) ; Get the destination object number from script 5254: 23 INC HL ; Update ... 5255: E5 PUSH HL ; ... the script pointer 5256: 21 84 4F LD HL,ObjectData ; Lookup the ... 5259: CD 5C 42 CALL TableOffsetTwoBytes ; ... target object 525C: 7E LD A,(HL) ; Set ... 525D: F6 80 OR $80 ; ... the "is carried" ... 525F: 77 LD (HL),A ; ... flag on the target object 5260: 23 INC HL ; Being carried by ... 5261: 70 LD (HL),B ; ... container 5262: C3 C8 53 JP COM_14_print_ok ; Print OK and command passes
COM_02_is_in_pack(obj_num)
This command checks if the requested object is in the backpack.
COM_02_is_in_pack: 5265: E1 POP HL ; Get the next ... 5266: 7E LD A,(HL) ; ... byte from ... 5267: 23 INC HL ; ... the script 5268: E5 PUSH HL ; Update the script pointer 5269: 1E FF LD E,$FF ; Room location of pack 526B: CD 4B 42 CALL GetObjectInfo ; Find the object. Is it in the pack (at E)? 526E: CA A6 42 JP Z,ScriptCommandPASS ; Yes, command passes 5271: C3 B9 42 JP ScriptCommandFAIL ; No, command fails
COM_03_is_in_pack_or_current_room(obj_num)
This command checks if the requested object is accessible (current room or backpack).
COM_03_is_in_pack_or_current_room: 5274: E1 POP HL ; Get the next ... 5275: 46 LD B,(HL) ; ... byte from ... 5276: 23 INC HL ; ... the script 5277: E5 PUSH HL ; Update the script pointer 5278: 3A DC 4F LD A,(CurrentRoom) ; Current room number 527B: 5F LD E,A ; Check for current room 527C: 78 LD A,B ; Requested object number 527D: CD 4B 42 CALL GetObjectInfo ; Get the info about the object 5280: CA A6 42 JP Z,ScriptCommandPASS ; It is in the room. Return SUCCESS 5283: 78 LD A,B ; Object number 5284: C3 69 52 JP $5269 ; Check the backpack for the object
COM_1A_is_in_current_room(obj_num)
This command checks if the request object (or object's top level container) is in the current room.
COM_1A_is_in_current_room: 5287: E1 POP HL ; Get the script pointer 5288: 3A DC 4F LD A,(CurrentRoom) ; Checking ... 528B: 5F LD E,A ; ... current room 528C: 7E LD A,(HL) ; Requested object number 528D: 23 INC HL ; Update ... 528E: E5 PUSH HL ; ... script pointer 528F: CD 4B 42 CALL GetObjectInfo ; Get the info about the object 5292: CA A6 42 JP Z,ScriptCommandPASS ; Success if parent container is in the current room 5295: C3 B9 42 JP ScriptCommandFAIL ; Otherwise the command fails
COM_0D_is_pack_just_emerald()
This very specific command checks if the backpack is empty or has just the emerald. This is used in the script for room_73, the "TIGHT_SQUEEZE" from the "CHAMBER_OF_THE_HIGH_PRIEST".
COM_0D_is_pack_just_emerald: 5298: 21 84 4F LD HL,ObjectData ; 529B: 0E 01 LD C,$01 ; Start checking with object 1 529D: 23 INC HL ; Location of object 529E: 79 LD A,C ; Is this object ... 529F: FE 1F CP $1F ; ... the obj_EMERALD? 52A1: CA AA 52 JP Z,$52AA ; Yes, ignore it 52A4: 7E LD A,(HL) ; Get the location 52A5: FE FF CP $FF ; Is this object in the backpack? 52A7: CA B9 42 JP Z,ScriptCommandFAIL ; Yes, fail 52AA: 23 INC HL ; Next object data 52AB: 0C INC C ; Next object number 52AC: 79 LD A,C ; Past the ... 52AD: FE 2D CP $2D ; ... last object? 52AF: C2 9D 52 JP NZ,$529D ; No, keep checking 52B2: C3 A6 42 JP ScriptCommandPASS ; Success
COM_0A_pyramid_crawl_move_random(value)
This command is a very specific move command. If the random value is less than or equal to the given target value, then the player stays in the same room. The code prints the "crawled around" message and reprints the current room description and the command returns success. If the random value is greater than the given value, the command fails.
This script command is used in two rooms: room_65 (CHAMBER_OF_HORUS) and room_60 (LAND_OF_DEAD). In all cases, it is wrapped in a "StopIfPassElseContinue" like this:
4DEE: 08 07 ; NW 4DF0: 07 03 ; StopIfPassElseContinue 4DF2: 0A F0 ; AssertRandomIsLessOrEqual(240) 4DF4: 01 3B ; MoveToRoom(room_59)
Most of the time (random values 0 through 240) the command passes and the player stays put. But for values 241 through 255, the command fails and the player moves to room_59 (ANTEROOM_OF_SEKER).
COM_0A_pyramid_crawl_move_random: 52B5: E1 POP HL ; Get target ... 52B6: 46 LD B,(HL) ; ... value from script 52B7: 23 INC HL ; Update the ... 52B8: E5 PUSH HL ; ... script pointer 52B9: 3A 11 47 LD A,(keyWaitCounter) ; Get the randomish number 52BC: B8 CP B ; Compare with target value 52BD: CA C3 52 JP Z,$52C3 ; The same means pass 52C0: D2 B9 42 JP NC,ScriptCommandFAIL; Less than means pass 52C3: 21 E9 71 LD HL,PS_74 ; "WOUND_UP_BACK__IN_THE_MAIN_PASSAGE." 52C6: CD A9 44 CALL PrintPacked ; Print message 52C9: CD E2 51 CALL DescribeRoom ; Reprint the current room description 52CC: C3 A6 42 JP ScriptCommandPASS ; Pass
COM_0C_move_to_room_if_was_last(room_num)
This command moves the player to the target room but only if the target room was the last room.
If the target room is not the last room, the command fails.
This command is not used in any script. ??
COM_0C_move_to_room_if_was_last: 52CF: E1 POP HL ; Get destination ... 52D0: 46 LD B,(HL) ; ... room 52D1: 23 INC HL ; Update the ... 52D2: E5 PUSH HL ; ... script pointer 52D3: 3A E1 4F LD A,(lastRoom) ; Get the last room 52D6: B8 CP B ; Is target room the last room? 52D7: C2 B9 42 JP NZ,ScriptCommandFAIL; No, reject the move (fail) 52DA: E1 POP HL ; Back the script ... 52DB: 2B DEC HL ; ... pointer up so we ... 52DC: E5 PUSH HL ; ... can call MoveToRoom 52DD: C3 27 51 JP COM_01_move_look ; Normal move to room (with lighting checks)
COM_16_get_users_object_print_ok()
COM_16_get_users_object_print_ok: 52E0: 3A 18 46 LD A,(noun) ; Get the object number the player requested 52E3: 1E FF LD E,$FF ; Get the ... 52E5: CD 4B 42 CALL GetObjectInfo ; ... target object's info 52E8: C2 F4 52 JP NZ,$52F4 ; It isn't in the backpack. No error here. 52EB: 21 B4 74 LD HL,PS_87 ; "YOU_ARE_ALREADY_CARRYING_IT." 52EE: CD A9 44 CALL PrintPacked ; Print the error 52F1: C3 A6 42 JP ScriptCommandPASS ; Success (the object is in backpack as requested!) ; 52F4: 3A 18 46 LD A,(noun) ; Get the input noun again 52F7: 47 LD B,A ; Handle the actual ... 52F8: C3 91 53 JP GetToBackpack ; ... GET operation
COM_04_print(ps_num)
This command unpacks a string and prints it. This command always succeeds.
COM_04_print: 52FB: E1 POP HL ; Get the script pointer 52FC: 5E LD E,(HL) ; Get the LSB of the string 52FD: 23 INC HL ; Next in script 52FE: 56 LD D,(HL) ; Get the MSB of the string 52FF: 23 INC HL ; Update the ... 5300: E5 PUSH HL ; ... script pointer 5301: EB EX DE,HL ; String pointer now in HL 5302: CD A9 44 CALL PrintPacked ; Print the packed string 5305: C3 A6 42 JP ScriptCommandPASS ; Printing is always a success
COM_0B_drop_object_print_ok(obj_num)
Unused??
COM_0B_drop_object_print_ok: 5308: E1 POP HL ; Get the target ... 5309: 46 LD B,(HL) ; ... object from the script 530A: 23 INC HL ; Update the ... 530B: E5 PUSH HL ; ... script pointer 530C: 3A E2 4F LD A,(numObjInPack) ; Decrease ... 530F: 3D DEC A ; ... number of objects ... 5310: 32 E2 4F LD (numObjInPack),A ; ... in pack 5313: 3A DC 4F LD A,(CurrentRoom) ; Current room 5316: 5F LD E,A ; Move ... 5317: 78 LD A,B ; ... object to ... 5318: CD 71 42 CALL SetObjectLocation ; ... current room 531B: C3 C8 53 JP COM_14_print_ok ; Print OK and command passes
COM_0E_move_to_last_room()
This command is only used by the "BACK" command to return the player to the last room.
This command always passes but prints a message if there was no last room.
COM_0E_move_to_last_room: 531E: 3A E1 4F LD A,(lastRoom) ; Was there ... 5321: A7 AND A ; ... a last room? 5322: CA 2F 53 JP Z,$532F ; No, print error and pass 5325: 47 LD B,A ; Hold last room 5326: 3A DC 4F LD A,(CurrentRoom) ; Current room ... 5329: 32 E1 4F LD (lastRoom),A ; ... to last room 532C: C3 7D 51 JP $517D ; Continue with MoveToRoom logic (lighting, mummy, etc) ; 532F: 21 87 74 LD HL,PS_86 ; "SORRY,_BUT_I_NO_LONGER_SEEM_TO_REMEMBER_HOW_IT_WAS_YOU_GOT_HERE." 5332: CD A9 44 CALL PrintPacked ; Print string 5335: C3 A6 42 JP ScriptCommandPASS ; Command passes
COM_0F_print_inventory()
COM_0F_print_inventory: 5338: 3A E2 4F LD A,(numObjInPack) ; Is there anything in ... 533B: A7 AND A ; ... the backpack? 533C: C2 48 53 JP NZ,$5348 ; Yes, go list the contents ; 533F: 21 FA 74 LD HL,PS_89 ; "YOU'RE_NOT_CARRYING_ANYTHING." 5342: CD A9 44 CALL PrintPacked ; Print the message 5345: C3 A6 42 JP ScriptCommandPASS ; Command passes ; 5348: 21 10 75 LD HL,PS_8A ; "YOU_ARE_CURRENTLY_HOLDING_THE_FOLLOWING:" 534B: CD A9 44 CALL PrintPacked ; Print the banner 534E: 06 00 LD B,$00 ; Object number through loop 5350: 1E FF LD E,$FF ; Backpack room number 5352: 04 INC B ; Next (or first) object number 5353: 78 LD A,B ; Have we checked ... 5354: FE 2D CP $2D ; ... all objects? 5356: D2 A6 42 JP NC,ScriptCommandPASS; Yes, command passes ; 5359: CD 4B 42 CALL GetObjectInfo ; Get the object info 535C: C2 50 53 JP NZ,$5350 ; Object is not in backpack, move to next object 535F: 78 LD A,B ; Object number 5360: 21 E4 4F LD HL,ObjectDescriptions; Object info table 5363: CD 5C 42 CALL TableOffsetTwoBytes ; Look up the description 5366: 7E LD A,(HL) ; Description LSB 5367: 23 INC HL ; Next entry 5368: 66 LD H,(HL) ; Description MSB 5369: 6F LD L,A ; HL now points to long description 536A: 7E LD A,(HL) ; Skip ... 536B: 23 INC HL ; ... to ... 536C: A7 AND A ; ... short ... 536D: C2 6A 53 JP NZ,$536A ; ... description 5370: C5 PUSH BC ; Hold our counter 5371: CD A9 44 CALL PrintPacked ; Print the short description 5374: C1 POP BC ; Restore the counter 5375: C3 50 53 JP $5350 ; Check all objects
COM_10_print_room_description()
COM_10_print_room_description: 5378: CD E2 51 CALL DescribeRoom ; Print the room description (with objects) 537B: C3 A6 42 JP ScriptCommandPASS ; Command passes
COM_11_is_object_user_input(obj_num)
COM_11_is_object_user_input: 537E: E1 POP HL ; Get the script pointer 537F: 46 LD B,(HL) ; Get the target object 5380: 23 INC HL ; Update the ... 5381: E5 PUSH HL ; ... script pointer 5382: 3A 18 46 LD A,(noun) ; Does user noun ... 5385: B8 CP B ; ... match the target object? 5386: C2 B9 42 JP NZ,ScriptCommandFAIL; No, command fails 5389: C3 A6 42 JP ScriptCommandPASS ; yes, command passes
COM_12_get_from_room_print_ok(obj_num)
COM_12_get_from_room_print_ok: 538C: E1 POP HL ; Get the script pointer 538D: 46 LD B,(HL) ; Get the object number 538E: 23 INC HL ; Update ... 538F: E5 PUSH HL ; ... script pointer 5390: 78 LD A,B ; To parameter register ; GetToBackpack: 5391: CD 4B 42 CALL GetObjectInfo ; Look up the target object 5394: 7E LD A,(HL) ; Is this object ... 5395: E6 40 AND $40 ; ... able to be picked up? 5397: C2 A3 53 JP NZ,$53A3 ; Yes, skip the error 539A: 21 2D 75 LD HL,PS_8B ; "DON'T_BE_RIDICULOUS!" 539D: CD A9 44 CALL PrintPacked ; Print the message 53A0: C3 A6 42 JP ScriptCommandPASS ; Command passes ; 53A3: 3A E2 4F LD A,(numObjInPack) ; Get number of objects in pack 53A6: FE 08 CP $08 ; Eight is our max 53A8: DA B4 53 JP C,$53B4 ; We have room for another, go get it 53AB: 21 C9 74 LD HL,PS_88 ; "YOU_CAN'T_CARRY_ANYTHING_MORE." 53AE: CD A9 44 CALL PrintPacked ; Print the message 53B1: C3 A6 42 JP ScriptCommandPASS ; Command passes ; 53B4: 3C INC A ; Add one ... 53B5: 32 E2 4F LD (numObjInPack),A ; ... to pack count 53B8: 78 LD A,B ; Object number 53B9: 1E FF LD E,$FF ; Backpack location 53BB: CD 71 42 CALL SetObjectLocation ; Move the object to the backpack 53BE: C3 C8 53 JP COM_14_print_ok ; Print OK and command passes
COM_17_drop_users_object_print_ok()
COM_17_drop_users_object_print_ok: 53C1: 3A 18 46 LD A,(noun) ; Get the player's ... 53C4: 47 LD B,A ; ... noun input 53C5: C3 0C 53 JP $530C ; Continue with drop
COM_14_print_ok()
COM_14_print_ok: 53C8: 21 83 74 LD HL,PS_85 ; "OK_" 53CB: CD A9 44 CALL PrintPacked ; Print string 53CE: C3 A6 42 JP ScriptCommandPASS ; Command passes
COM_15_move_object_to_room(obj_num, room_num)
COM_15_move_object_to_room: 53D1: E1 POP HL ; Get the script pointer 53D2: 7E LD A,(HL) ; Get the object number 53D3: 23 INC HL ; Next in script 53D4: 5E LD E,(HL) ; Get the room number 53D5: 23 INC HL ; Update the ... 53D6: E5 PUSH HL ; ... script pointer 53D7: 21 84 4F LD HL,ObjectData ; Look up the ... 53DA: CD 5C 42 CALL TableOffsetTwoBytes ; ... target object 53DD: 7E LD A,(HL) ; Clear the ... 53DE: E6 7F AND $7F ; ... being-carried flag 53E0: 77 LD (HL),A ; Store the new attributes 53E1: 23 INC HL ; Location entry 53E2: 73 LD (HL),E ; Object now in target room 53E3: C3 A6 42 JP ScriptCommandPASS ; Command passes
COM_05_death_and_resurrect()
COM_05_death_and_resurrect: 53E6: 3A E3 4F LD A,(numResurrected) ; Number of resurrections 53E9: 3C INC A ; Add one ... 53EA: 32 E3 4F LD (numResurrected),A ; ... to the count 53ED: FE 03 CP $03 ; Third time (or more)? 53EF: D2 59 54 JP NC,ThirdResurrection; Yes, do the 3rd 53F2: FE 02 CP $02 ; 2nd time? 53F4: CA 4D 54 JP Z,SecondResurrection; Yes, do the 2nd ; ; First time we initialize the message pointer 53F7: 21 08 7E LD HL,PS_BC ; "ALL_RIGHT.__BUT_DON'T_BLAME_ME" 53FA: 22 62 54 LD (NextResurrectMessage),HL; Next resurrection message 53FD: 21 FE 7C LD HL,PS_B9 ; "YOU_SEEM_TO_HAVE_GOTTEN_YOURSELF_KILLED." 5400: CD A9 44 CALL PrintPacked ; Print the message 5403: CD E9 44 CALL WaitForKey ; Wait for the user 5406: FE 59 CP $59 ; Is it a "Y" for yes to continuing on? 5408: C2 8C 55 JP NZ,COM_09_end_of_game; No, print score and stop 540B: 2A 62 54 LD HL,(NextResurrectMessage); Print resurrection ... 540E: CD A9 44 CALL PrintPacked ; ... message 5411: 21 9F 4F LD HL,$4F9F ; obj_LAMP_off to ... 5414: 36 01 LD (HL),$01 ; ... room_1 5416: 23 INC HL ; Point to ... 5417: 23 INC HL ; ... obj_LAMP_on 5418: 36 00 LD (HL),$00 ; Move it out of play 541A: 21 84 4F LD HL,ObjectData ; Object data 541D: 3A DC 4F LD A,(CurrentRoom) ; Player's ... 5420: 47 LD B,A ; ... current room 5421: 3E FF LD A,$FF ; Backpack location 5423: 0E 2C LD C,$2C ; 44 objects to check ; 5425: 23 INC HL ; Next (or first) object 5426: BE CP (HL) ; Is object in backpack 5427: C2 34 54 JP NZ,$5434 ; No ... leave this object where it is 542A: 70 LD (HL),B ; Change backpack to current room 542B: 3A E2 4F LD A,(numObjInPack) ; Decrement ... 542E: 3D DEC A ; ... count of objects ... 542F: 32 E2 4F LD (numObjInPack),A ; ... in pack 5432: 3E FF LD A,$FF ; Retore backpack location (had to use A) 5434: 23 INC HL ; Next object 5435: 0D DEC C ; All done? 5436: C2 25 54 JP NZ,$5425 ; No, drop all objects in backpack 5439: 3E 02 LD A,$02 ; Resurrect player ... 543B: 32 DC 4F LD (CurrentRoom),A ; ... in the entrance (past the lamp at 1 ... sneaky) 543E: CD E2 51 CALL DescribeRoom ; Print the room description 5441: 31 5C 47 LD SP,$475C ; Reset the stack pointer 5444: 21 00 00 LD HL,$0000 ; Reset the ... 5447: 22 DF 4F LD (lampOnTurnCount),HL; ... lamp time (very generous) 544A: C3 14 42 JP GameLoop ; Back to the top of the game loop SecondResurrection: 544D: 21 A2 7E LD HL,PS_BD ; Next resurrection ... 5450: 22 62 54 LD (NextResurrectMessage),HL; ... message "WHERE_DID_I_PUT_ORANGE_SMOKE" 5453: 21 71 7D LD HL,PS_BA ; "YOU_CLUMBSY_OAF,_YOU'VE_DONE_IT_AGAIN 5456: C3 00 54 JP $5400 ; Print the message and ressurect ThirdResurrection: 5459: 21 CD 7D LD HL,PS_BB ; "HOW_CAN_I_REINCARNATE_YOU____WITHOUT_ORANGE_SMOKE?" 545C: CD A9 44 CALL PrintPacked ; Print message 545F: C3 8C 55 JP COM_09_end_of_game ; All lives gone. Print score and stop. NextResurrectMessage: 5462: 00 00
COM_08_print_score()
COM_08_print_score: 5464: CD 6A 54 CALL PrintScore ; Print the score 5467: C3 A6 42 JP ScriptCommandPASS ; Command passes PrintScore: 546A: 21 00 00 LD HL,$0000 ; Clear score tally 546D: 22 4F 55 LD (scoreTempLSB),HL ; 5470: 21 E2 4E LD HL,AmbientLightTable; 5473: 0E 51 LD C,$51 ; 81 rooms to check 5475: 7E LD A,(HL) ; First byte 5476: E6 80 AND $80 ; Was something scored in this room? 5478: 23 INC HL ; Next room 5479: CA 8D 54 JP Z,$548D ; No ... next room 547C: 3A 4F 55 LD A,(scoreTempLSB) ; BCD LSB 547F: 86 ADD A,(HL) ; Add in the score from the room 5480: 27 DAA ; Adjust for BCD 5481: 32 4F 55 LD (scoreTempLSB),A ; Update LSB 5484: 3A 50 55 LD A,(scoreTempMSB) ; Carry into ... 5487: CE 00 ADC $00 ; ... the MSB 5489: 27 DAA ; Adjust for BCD 548A: 32 50 55 LD (scoreTempMSB),A ; Update MSB 548D: 23 INC HL ; Next room 548E: 0D DEC C ; All rooms checked? 548F: C2 75 54 JP NZ,$5475 ; No ... check them all ; 5492: 21 84 4F LD HL,ObjectData ; Now check the objects 5495: 0E 2C LD C,$2C ; 44 objects to check 5497: 7E LD A,(HL) ; First byte of object 5498: E6 20 AND $20 ; Is this a treasure? 549A: 23 INC HL ; Next in table 549B: CA BE 54 JP Z,$54BE ; Not a treasure, skip it 549E: 7E LD A,(HL) ; Location of object 549F: FE 02 CP $02 ; Is this object (or parent container) in room 2? 54A1: 06 20 LD B,$20 ; Score 20 points (BCD) if it is 54A3: CA AD 54 JP Z,$54AD ; It is in the target room ... go score it 54A6: FE FF CP $FF ; Is it in the backpack? 54A8: C2 BE 54 JP NZ,$54BE ; No, next object 54AB: 06 05 LD B,$05 ; Score 5 points if the object is in the backpack 54AD: 3A 4F 55 LD A,(scoreTempLSB) ; BCD LSB 54B0: 80 ADD A,B ; Add in score from the object 54B1: 27 DAA ; Adjust for BCD 54B2: 32 4F 55 LD (scoreTempLSB),A ; Update LSB 54B5: 3A 50 55 LD A,(scoreTempMSB) ; Carry into ... 54B8: CE 00 ADC $00 ; ... the MSB 54BA: 27 DAA ; Adjust for BCD 54BB: 32 50 55 LD (scoreTempMSB),A ; Update the MSB ; 54BE: 23 INC HL ; Next in object table 54BF: 0D DEC C ; Have we processed all objects? 54C0: C2 97 54 JP NZ,$5497 ; No, go check them all ; 54C3: 3A E3 4F LD A,(numResurrected) ; Number of deaths 54C6: A7 AND A ; No penalty if ... 54C7: CA E5 54 JP Z,$54E5 ; ... we haven't died 54CA: 4F LD C,A ; Penalized 10 points for each death 54CB: 06 90 LD B,$90 ; BCD value for "-10" 54CD: 3A 4F 55 LD A,(scoreTempLSB) ; LSB of score 54D0: 80 ADD A,B ; Add penalty (negative) 54D1: 27 DAA ; Adjust for BCD 54D2: 32 4F 55 LD (scoreTempLSB),A ; Update LSB 54D5: DA E1 54 JP C,$54E1 ; No borrow ... move on 54D8: 3A 50 55 LD A,(scoreTempMSB) ; MSB of score 54DB: C6 99 ADD $99 ; BCD value for "-1" (borrow) 54DD: 27 DAA ; Adjust for BCD 54DE: 32 50 55 LD (scoreTempMSB),A ; Update the MSB 54E1: 0D DEC C ; All deaths subtracted off? 54E2: C2 CD 54 JP NZ,$54CD ; No ... do them all ; 54E5: 3A 50 55 LD A,(scoreTempMSB) ; Is score ... 54E8: FE 90 CP $90 ; ... positive? 54EA: DA 15 55 JP C,$5515 ; Yes ... print a space for the sign 54ED: 3E 2D LD A,$2D ; Add a "-" to ... 54EF: 32 5C 55 LD (scoreSign),A ; ... the score string 54F2: 3A 50 55 LD A,(scoreTempMSB) ; 54F5: 47 LD B,A ; 54F6: 3E 99 LD A,$99 ; TODO decode the math 54F8: 90 SUB B ; Negative values need fixing up to make them right 54F9: 32 50 55 LD (scoreTempMSB),A ; 54FC: 3A 4F 55 LD A,(scoreTempLSB) ; 54FF: 47 LD B,A ; 5500: 3E 99 LD A,$99 ; TODO BCD math for negatives 5502: 90 SUB B ; 5503: C6 01 ADD $01 ; 5505: 27 DAA ; 5506: 32 4F 55 LD (scoreTempLSB),A ; 5509: 3A 50 55 LD A,(scoreTempMSB) ; 550C: CE 00 ADC $00 ; 550E: 27 DAA ; 550F: 32 50 55 LD (scoreTempMSB),A ; 5512: C3 1A 55 JP $551A ; Now update the turns ; 5515: 3E 20 LD A,$20 ; Space means "+" ... 5517: 32 5C 55 LD (scoreSign),A ; ... in the score message ; 551A: 21 5D 55 LD HL,scoreSpot ; Turn count in the score message 551D: 3A 50 55 LD A,(scoreTempMSB) ; MSB of calculated score 5520: CD 3F 55 CALL BinaryToASCII ; Add MSB of score to string 5523: 3A 4F 55 LD A,(scoreTempLSB) ; LSB of calculated score 5526: CD 3F 55 CALL BinaryToASCII ; Add LSB of score to string 5529: 21 80 55 LD HL,turnSpot ; Turn count spot in string 552C: 3A DE 4F LD A,(bcdTurnCountMSB) ; Add MSB of turn ... 552F: CD 3F 55 CALL BinaryToASCII ; ... count to string 5532: 3A DD 4F LD A,(bcdTurnCountLSB) ; Add LSB of turn ... 5535: CD 3F 55 CALL BinaryToASCII ; ... count to string 5538: 21 51 55 LD HL,ScoreString ; The string we just built 553B: CD CB 44 CALL PrintPlain ; Print the constructed score 553E: C9 RET BinaryToASCII: 553F: F5 PUSH AF ; Hold the lower nibble 5540: 0F RRCA ; Roll ... 5541: 0F RRCA ; ... to ... 5542: 0F RRCA ; ... upper ... 5543: 0F RRCA ; ... nibble 5544: CD 48 55 CALL $5548 ; Convert and store the upper digit 5547: F1 POP AF ; Restore the lower nibble, convert, and store ; 5548: E6 0F AND $0F ; Only keep 4 bits 554A: C6 30 ADD $30 ; Binary to ASCII digit 554C: 77 LD (HL),A ; Store in buffer 554D: 23 INC HL ; Bump buffer 554E: C9 RET scoreTempLSB: 554F: 00 scoreTempMSB: 5550: 00 ScoreString: ; YOU_SCORED_______OUT_OF_A_POSSIBLE_0220,_USING______TURNS. 5551: 59 4F 55 20 53 43 4F 52 45 44 20 scoreSign: 555C: 20 scoreSpot: 555D: 20 20 20 20 20 4F 55 54 20 4F 46 20 41 20 50 4F 53 53 49 42 5571: 4C 45 20 30 32 32 30 2C 20 55 53 49 4E 47 20 turnSpot: 5580: 20 20 20 20 20 54 55 52 4E 53 2E 00
COM_09_end_of_game()
COM_09_end_of_game: 558C: CD 6A 54 CALL PrintScore ; Print the score EndlessLoop: 558F: C3 8F 55 JP EndlessLoop ; Endless loop ... game over
COM_1B_load_game()
COM_1B_load_game: 5592: 21 F4 7E LD HL,$7EF4 5595: CD A9 44 CALL PrintPacked ; 5598: CD E9 44 CALL WaitForKey ; 559B: FE 08 CP $08 ; 559D: CA A6 42 JP Z,ScriptCommandPASS ; 55A0: FE 0D CP $0D ; 55A2: C2 98 55 JP NZ,$5598 ; 55A5: CD F4 0E CALL $0EF4 ; 55A8: CA B4 55 JP Z,$55B4 ; 55AB: 21 00 7F LD HL,$7F00 ; 55AE: CD A9 44 CALL PrintPacked ; 55B1: C3 92 55 JP COM_1B_load_game ; 55B4: 21 AC 6C LD HL,$6CAC ; 55B7: 22 E4 4F LD (ObjectDescriptions),HL; 55BA: 22 E6 4F LD ($4FE6),HL ; 55BD: CD E2 51 CALL DescribeRoom ; 55C0: 31 5C 47 LD SP,$475C ; 55C3: C3 14 42 JP GameLoop ;
COM_1C_save_game()
COM_1C_save_game: 55C6: 21 F4 7E LD HL,$7EF4 55C9: CD A9 44 CALL PrintPacked ; 55CC: CD E9 44 CALL WaitForKey ; 55CF: FE 08 CP $08 ; 55D1: CA A6 42 JP Z,ScriptCommandPASS ; 55D4: FE 0D CP $0D ; 55D6: C2 CC 55 JP NZ,$55CC ; 55D9: CD E9 0F CALL $0FE9 ; 55DC: 21 E2 4E LD HL,$4EE2 ; 55DF: 11 E6 4F LD DE,$4FE6 ; 55E2: CD 4B 0F CALL $0F4B ; 55E5: C3 A6 42 JP ScriptCommandPASS ;
COM_1D_scramble_directions_print_ack()
COM_1D_scramble_directions_print_ack: 55E8: 3A 11 47 LD A,(keyWaitCounter) ; Random value 55EB: E6 03 AND $03 ; 0, 1, 2, or 3 55ED: 47 LD B,A ; To B 55EE: 21 69 49 LD HL,RoomScripts ; start of room scripts CNALL: ; This is the label from the actual 8080 source code (see Code1) 55F1: 7E LD A,(HL) ; Get the verb number 55F2: 23 INC HL ; Next byte 55F3: A7 AND A ; End of script for this room? 55F4: CA F1 55 JP Z,CNALL ; Yes ... ignore the terminator and move to next room 55F7: FE FF CP $FF ; FF means the end of all room scripts 55F9: CA 16 56 JP Z,$5616 ; We are done, print message and out 55FC: FE 05 CP $05 ; Is this verb in the script a compass direction? 55FE: D2 0C 56 JP NC,$560C ; No, skip over this command list 5601: 80 ADD A,B ; Roll the verb 5602: 2B DEC HL ; Point back to the verb 5603: E6 03 AND $03 ; Limit to verbs 1-4 5605: C2 0A 56 JP NZ,CNAL2 ; Are we in 1, 2, or 3? Yes, keep it 5608: 3E 04 LD A,$04 ; We rolled around. 0 becomes 4. CNAL2: ; This is the label from the actual 8080 source code (see Code1) 560A: 77 LD (HL),A ; New verb number 560B: 23 INC HL ; Point to list length 560C: 7E LD A,(HL) ; Get the length 560D: 85 ADD A,L ; Add ... 560E: 6F LD L,A ; ... length ... 560F: 7C LD A,H ; ... to ... 5610: CE 00 ADC $00 ; ... script ... 5612: 67 LD H,A ; ... pointer 5613: C3 F1 55 JP CNALL ; Try all the verbs in all rooms ; 5616: 21 0C 7F LD HL,PS_C0 ; "I_NO_LONGER_SEEM_TO_KNOW_WHICH_WAY_IS_NORTH!" 5619: CD A9 44 CALL PrintPacked ; Print message 561C: 31 5C 47 LD SP,$475C ; Reset stack 561F: C3 14 42 JP GameLoop ; Back to top of game loop
Word Table
Pyramid has a table of known words. Every word has a grammar that describes how it can be used. For instance, LAMP is a noun. The verb NORTH is a single-word command that requires no noun (in fact it is an error to give one). The verb DROP requires a noun that is in the inventory, but the verb DRINK works on a noun that is in the room or the pack.
Multiple words can refer to the same thing. LAMP and LANTERN, for instance, mean the same thing. So do GET and STEAL.
Since multiple nouns can have the same word for a name the game logic must be careful not to ever have two nouns with the same noun in the same place. The "dead lamp", for instance, is never around when the "lit lamp" is. When checking to see if a noun is accessible the code must check every noun since multiple nouns can have the same name.
The input routine parses the user input and returns a VERB and a NOUN based on the grammar of the words. The game scripts are assured that the grammar is correct and the noun is something the user has access to (in the pack or room).
; Info + text + data
; Info byte:
; AA_BBB_CCC
;
; AA = Grammar
; 0 = Noun
; 1 = Verb (and needs noun in pack)
; 2 = Verb (and needs noun in pack or room)
; 3 = Verb (stand alone)
;
; BBB = number of bytes in token data
; CCC = number of bytes in token text
;
; Object words
; A single name can refer to several objects. The object data is
; the search order for finding objects in the pack or room. For
; instance, the LAMP refers to:
; 1) 0x0E unlit lamp
; 2) 0x0F lit lamp
; 3) 0x2C dead lamp
;
WordTable:
; Nouns
; Objects AA BBB CCC Word
5622: 1C 4C 41 4D 50 0E 0F 2C ; 00_011_100 LAMP
562A: 1E 4C 41 4E 54 45 52 0E 0F 2C ; 00_011_110 LANTER
5634: 0B 42 4F 58 10 ; 00_001_011 BOX
5639: 0F 53 43 45 50 54 45 52 11 ; 00_001_111 SCEPTER
5642: 14 42 49 52 44 13 14 ; 00_010_100 BIRD
5649: 16 53 54 41 54 55 45 13 14 ; 00_010_110 STATUE
5652: 0E 50 49 4C 4C 4F 57 12 ; 00_001_110 PILLOW
565A: 0E 56 45 4C 56 45 54 12 ; 00_001_110 VELVET
5662: 0E 53 45 52 50 45 4E 0B ; 00_001_110 SERPEN
566A: 16 53 41 52 43 4F 50 17 18 ; 00_010_110 SARCOP
5673: 0E 4D 41 47 41 5A 49 19 ; 00_001_110 MAGAZI
567B: 0D 49 53 53 55 45 19 ; 00_001_101 ISSUE
5682: 0E 45 47 59 50 54 49 19 ; 00_001_110 EGYPTI
568A: 0C 46 4F 4F 44 1A ; 00_001_100 FOOD
5690: 0E 42 4F 54 54 4C 45 1B ; 00_001_110 BOTTLE
5698: 15 57 41 54 45 52 1C 1E ; 00_010_101 WATER
56A0: 1D 50 4C 41 4E 54 07 08 09 ; 00_011_101 PLANT
56A9: 1E 42 45 41 4E 53 54 07 08 09 ; 00_011_110 BEANST
56B3: 0E 4D 41 43 48 49 4E 06 ; 00_001_110 MACHIN
56BB: 0E 56 45 4E 44 49 4E 06 ; 00_001_110 VENDIN
56C3: 16 42 41 54 54 45 52 23 24 ; 00_010_110 BATTER
56CC: 0C 47 4F 4C 44 25 ; 00_001_100 GOLD
56D2: 0E 4E 55 47 47 45 54 25 ; 00_001_110 NUGGET
56DA: 0E 44 49 41 4D 4F 4E 26 ; 00_001_110 DIAMON
56E2: 0E 53 49 4C 56 45 52 27 ; 00_001_110 SILVER
56EA: 0C 42 41 52 53 27 ; 00_001_100 BARS
56F0: 0E 4A 45 57 45 4C 52 28 ; 00_001_110 JEWELR
56F8: 0D 43 4F 49 4E 53 29 ; 00_001_101 COINS
56FF: 0D 43 48 45 53 54 2A ; 00_001_101 CHEST
5706: 0E 54 52 45 41 53 55 2A ; 00_001_110 TREASU
570E: 0C 45 47 47 53 2B ; 00_001_100 EGGS
5714: 0B 45 47 47 2B ; 00_001_011 EGG
5719: 0C 4E 45 53 54 2B ; 00_001_100 NEST
571F: 0B 4B 45 59 22 ; 00_001_011 KEY
5724: 14 56 41 53 45 20 21 ; 00_010_100 VASE
572B: 0E 53 48 41 52 44 53 15 ; 00_001_110 SHARDS
5733: 0E 50 4F 54 54 45 52 15 ; 00_001_110 POTTER
573B: 0E 45 4D 45 52 41 4C 1F ; 00_001_110 EMERAL
5743: 0D 50 45 41 52 4C 16 ; 00_001_101 PEARL
;
; Verbs
574A: C9 4E 01 ; 11_001_001 N
574D: CD 4E 4F 52 54 48 01 ; 11_001_101 NORTH
5754: C9 45 02 ; 11_001_001 E
5757: CC 45 41 53 54 02 ; 11_001_100 EAST
575D: C9 53 03 ; 11_001_001 S
5760: CD 53 4F 55 54 48 03 ; 11_001_101 SOUTH
5767: C9 57 04 ; 11_001_001 W
576A: CC 57 45 53 54 04 ; 11_001_100 WEST
5770: CA 4E 45 05 ; 11_001_010 NE
5774: CE 4E 4F 52 54 48 45 05 ; 11_001_110 NORTHE
577C: CA 53 45 06 ; 11_001_010 SE
5780: CE 53 4F 55 54 48 45 06 ; 11_001_110 SOUTHE
5788: CA 53 57 07 ; 11_001_010 SW
578C: CE 53 4F 55 54 48 57 07 ; 11_001_110 SOUTHW
5794: CA 4E 57 08 ; 11_001_010 NW
5798: CE 4E 4F 52 54 48 57 08 ; 11_001_110 NORTHW
57A0: C9 55 09 ; 11_001_001 U
57A3: CA 55 50 09 ; 11_001_010 UP
57A7: C9 44 0A ; 11_001_001 D
57AA: CC 44 4F 57 4E 0A ; 11_001_100 DOWN
57B0: CA 49 4E 0B ; 11_001_010 IN
57B4: CE 49 4E 53 49 44 45 0B ; 11_001_110 INSIDE
57BC: CB 4F 55 54 0C ; 11_001_011 OUT
57C1: CE 4F 55 54 53 49 44 0C ; 11_001_110 OUTSID
57C9: CD 43 52 4F 53 53 0D ; 11_001_101 CROSS
57D0: CC 4C 45 46 54 0E ; 11_001_100 LEFT
57D6: CD 52 49 47 48 54 0F ; 11_001_101 RIGHT
57DD: CC 4A 55 4D 50 10 ; 11_001_100 JUMP
57E3: CD 43 4C 49 4D 42 11 ; 11_001_101 CLIMB
57EA: CD 50 41 4E 45 4C 12 ; 11_001_101 PANEL
57F1: CC 42 41 43 4B 14 ; 11_001_100 BACK
57F7: CC 53 57 49 4D 16 ; 11_001_100 SWIM
57FD: CA 4F 4E 17 ; 11_001_010 ON
5801: CB 4F 46 46 18 ; 11_001_011 OFF
5806: CC 51 55 49 54 19 ; 11_001_100 QUIT
580C: CC 53 54 4F 50 19 ; 11_001_100 STOP
5812: CD 53 43 4F 52 45 1A ; 11_001_101 SCORE
5819: CE 49 4E 56 45 4E 54 1B ; 11_001_110 INVENT
5821: CC 4C 4F 4F 4B 1C ; 11_001_100 LOOK
5827: CC 48 45 4C 50 1D ; 11_001_100 HELP
582D: CC 46 49 4E 44 1E ; 11_001_100 FIND
5833: 4C 44 52 4F 50 21 ; 01_001_100 DROP
5839: 4E 52 45 4C 45 41 53 21 ; 01_001_110 RELEAS
5841: 4C 46 52 45 45 21 ; 01_001_100 FREE
5847: 4E 44 49 53 43 41 52 21 ; 01_001_110 DISCAR
584F: CD 4C 49 47 48 54 17 ; 11_001_101 LIGHT
5856: 4C 57 41 56 45 23 ; 01_001_100 WAVE
585C: 4D 53 48 41 4B 45 23 ; 01_001_101 SHAKE
5863: 4D 53 57 49 4E 47 23 ; 01_001_101 SWING
586A: 4C 50 4F 55 52 24 ; 01_001_100 POUR
5870: 4B 52 55 42 25 ; 01_001_011 RUB
5875: 4D 54 48 52 4F 57 26 ; 01_001_101 THROW
587C: 4C 54 4F 53 53 26 ; 01_001_100 TOSS
5882: 4C 46 49 4C 4C 27 ; 01_001_100 FILL
5888: 8C 54 41 4B 45 28 ; 10_001_100 TAKE
588E: 8B 47 45 54 28 ; 10_001_011 GET
5893: 8D 43 41 52 52 59 28 ; 10_001_101 CARRY
589A: 8D 43 41 54 43 48 28 ; 10_001_101 CATCH
58A1: 8D 53 54 45 41 4C 28 ; 10_001_101 STEAL
58A8: 8E 43 41 50 54 55 52 28 ; 10_001_110 CAPTUR
58B0: 8C 4F 50 45 4E 29 ; 10_001_100 OPEN
58B6: 8E 41 54 54 41 43 4B 2C ; 10_001_110 ATTACK
58BE: 8C 4B 49 4C 4C 2C ; 10_001_100 KILL
58C4: 8B 48 49 54 2C ; 10_001_011 HIT
58C9: 8D 46 49 47 48 54 2C ; 10_001_101 FIGHT
58D0: 8C 46 45 45 44 2D ; 10_001_100 FEED
58D6: 8B 45 41 54 2E ; 10_001_011 EAT
58DB: 8D 44 52 49 4E 4B 2F ; 10_001_101 DRINK
58E2: 8D 42 52 45 41 4B 30 ; 10_001_101 BREAK
58E9: 8D 53 4D 41 53 48 30 ; 10_001_101 SMASH
58F0: CC 4C 4F 41 44 3A ; 11_001_100 LOAD
58F6: CC 53 41 56 45 3B ; 11_001_100 SAVE
58FC: CD 50 4C 55 47 48 39 ; 11_001_101 PLUGH
5903: 00
General Command Handler
This script is used when the room doesn't have a script for the input command.
GeneralScript:
5904: 01 04 ; N
5906: 04 41 73 ; print(PS_7A) THERE_IS_NO_WAY_FOR_YOU_TO_GO_THAT_DIRECTION.
5909: 02 04 ; E
590B: 04 41 73 ; print(PS_7A) THERE_IS_NO_WAY_FOR_YOU_TO_GO_THAT_DIRECTION.
590E: 03 04 ; S
5910: 04 41 73 ; print(PS_7A) THERE_IS_NO_WAY_FOR_YOU_TO_GO_THAT_DIRECTION.
5913: 04 04 ; W
5915: 04 41 73 ; print(PS_7A) THERE_IS_NO_WAY_FOR_YOU_TO_GO_THAT_DIRECTION.
5918: 05 04 ; NE
591A: 04 41 73 ; print(PS_7A) THERE_IS_NO_WAY_FOR_YOU_TO_GO_THAT_DIRECTION.
591D: 06 04 ; SE
591F: 04 41 73 ; print(PS_7A) THERE_IS_NO_WAY_FOR_YOU_TO_GO_THAT_DIRECTION.
5922: 07 04 ; SW
5924: 04 41 73 ; print(PS_7A) THERE_IS_NO_WAY_FOR_YOU_TO_GO_THAT_DIRECTION.
5927: 08 04 ; NW
5929: 04 41 73 ; print(PS_7A) THERE_IS_NO_WAY_FOR_YOU_TO_GO_THAT_DIRECTION.
592C: 09 04 ; U
592E: 04 41 73 ; print(PS_7A) THERE_IS_NO_WAY_FOR_YOU_TO_GO_THAT_DIRECTION.
5931: 0A 04 ; D
5933: 04 41 73 ; print(PS_7A) THERE_IS_NO_WAY_FOR_YOU_TO_GO_THAT_DIRECTION.
5936: 0B 04 ; IN
5938: 04 61 73 ; print(PS_7B) I_DON'T_KNOW_IN_FROM_OUT_HERE.__USE_COMPASS_POINTS.
593B: 0C 04 ; OUT
593D: 04 61 73 ; print(PS_7B) I_DON'T_KNOW_IN_FROM_OUT_HERE.__USE_COMPASS_POINTS.
5940: 0E 04 ; LEFT
5942: 04 85 73 ; print(PS_7C) I_AM_UNSURE_HOW_YOU_ARE_FACING.__USE_COMPASS_POINTS.
5945: 0F 04 ; RIGHT
5947: 04 85 73 ; print(PS_7C) I_AM_UNSURE_HOW_YOU_ARE_FACING.__USE_COMPASS_POINTS.
594A: 12 04 ; PANEL
594C: 04 AA 73 ; print(PS_7D) NOTHING_HAPPENS.
594F: 14 02 ; BACK
5951: 0E ; move_to_last_room()
5952: 16 04 ; SWIM
5954: 04 B7 73 ; print(PS_7E) I_DON'T_KNOW_HOW.
5957: 17 18 ; ON
5959: 07 0C ; stop_if_pass ...
595B: 02 0E ; is_in_pack(OBJ_0E_LAMP_OFF)
595D: 15 0E 00 ; move_object_to_room(OBJ_0E_LAMP_OFF, RM_00_nowhere)
5960: 15 0F FF ; move_object_to_room(OBJ_0F_LAMP_ON, BACKPACK)
5963: 04 E3 73 ; print(PS_80) YOUR_LAMP_IS_NOW_ON.
5966: 07 06 ; stop_if_pass ...
5968: 02 0F ; is_in_pack(OBJ_0F_LAMP_ON)
596A: 04 E3 73 ; print(PS_80) YOUR_LAMP_IS_NOW_ON.
596D: 04 F3 73 ; print(PS_81) YOU_HAVE_NO_SOURCE_OF_LIGHT.
5970: 18 18 ; OFF
5972: 07 0C ; stop_if_pass ...
5974: 02 0F ; is_in_pack(OBJ_0F_LAMP_ON)
5976: 15 0F 00 ; move_object_to_room(OBJ_0F_LAMP_ON, RM_00_nowhere)
5979: 15 0E FF ; move_object_to_room(OBJ_0E_LAMP_OFF, BACKPACK)
597C: 04 08 74 ; print(PS_82) YOUR_LAMP_IS_NOW_OFF.
597F: 07 06 ; stop_if_pass ...
5981: 02 0E ; is_in_pack(OBJ_0E_LAMP_OFF)
5983: 04 08 74 ; print(PS_82) YOUR_LAMP_IS_NOW_OFF.
5986: 04 F3 73 ; print(PS_81) YOU_HAVE_NO_SOURCE_OF_LIGHT.
5989: 19 02 ; QUIT
598B: 09 ; end_of_game()
598C: 1A 02 ; SCORE
598E: 08 ; print_score()
598F: 1B 02 ; INVENT
5991: 0F ; print_inventory()
5992: 1C 02 ; LOOK
5994: 10 ; print_room_description()
5995: 1D 04 ; HELP
5997: 04 18 74 ; print(PS_83) I'M_AS_CONFUSED_AS_YOU_ARE.
599A: 1E 04 ; FIND
599C: 04 2C 74 ; print(PS_84) I_CAN_ONLY_TELL_YOU_WHAT_YOU_SEE_AS_YOU_MOVE_ABOUT_AND__________
; MANIPULATE_THINGS.__I_CAN_NOT_TELL_YOU_WHERE_REMOTE_THINGS_ARE.
599F: 28 47 ; TAKE
59A1: 07 06 ; stop_if_pass ...
59A3: 11 07 ; is_object_user_input(OBJ_07_PLANT_SMALL)
59A5: 04 B5 79 ; print(PS_A8) THE_PLANT_HAS_EXCEPTIONALLY_DEEP_ROOTS_AND_CANNOT_BE_PULLED_____
; FREE.
59A8: 07 17 ; stop_if_pass ...
59AA: 11 13 ; is_object_user_input(OBJ_13_BIRD)
59AC: 07 06 ; stop_if_pass ...
59AE: 02 11 ; is_in_pack(OBJ_11_SCEPTER)
59B0: 04 1B 7A ; print(PS_AA) AS_YOU_APPROACH_THE_STATUE,_IT_COMES_TO_LIFE_AND_FLIES_ACROSS___
; THE_CHAMBER_WHERE_IT_LANDS_AND_RETURNS_TO_STONE.
59B3: 07 09 ; stop_if_pass ...
59B5: 02 10 ; is_in_pack(OBJ_10_BOX)
59B7: 15 13 00 ; move_object_to_room(OBJ_13_BIRD, RM_00_nowhere)
59BA: 19 14 10 ; put_object_in_container_print_ok(OBJ_14_BIRD_IN_BOX, OBJ_10_BOX)
59BD: 04 68 7A ; print(PS_AB) YOU_CAN_LIFT_THE_STATUE,_BUT_YOU_CANNOT_CARRY_IT.
59C0: 07 0A ; stop_if_pass ...
59C2: 11 20 ; is_object_user_input(OBJ_20_VASE_ON_PILLOW)
59C4: 12 21 ; get_from_room_print_ok(OBJ_21_VASE)
59C6: 15 20 00 ; move_object_to_room(OBJ_20_VASE_ON_PILLOW, RM_00_nowhere)
59C9: 18 12 ; move_object_to_current_room(OBJ_12_PILLOW)
59CB: 07 0D ; stop_if_pass ...
59CD: 11 1E ; is_object_user_input(OBJ_1E_STREAM_ROOM_38)
59CF: 07 06 ; stop_if_pass ...
59D1: 02 1C ; is_in_pack(OBJ_1C_WATER)
59D3: 04 8B 7A ; print(PS_AC) YOUR_BOTTLE_IS_ALREADY_FULL.
59D6: 19 1C 1B ; put_object_in_container_print_ok(OBJ_1C_WATER, OBJ_1B_BOTTLE)
59D9: 07 0C ; stop_if_pass ...
59DB: 11 12 ; is_object_user_input(OBJ_12_PILLOW)
59DD: 1A 20 ; is_in_current_room(OBJ_20_VASE_ON_PILLOW)
59DF: 15 20 00 ; move_object_to_room(OBJ_20_VASE_ON_PILLOW, RM_00_nowhere)
59E2: 18 21 ; move_object_to_current_room(OBJ_21_VASE)
59E4: 12 12 ; get_from_room_print_ok(OBJ_12_PILLOW)
59E6: 16 ; get_users_object_print_ok()
59E7: 21 17 ; DROP
59E9: 07 14 ; stop_if_pass ...
59EB: 11 21 ; is_object_user_input(OBJ_21_VASE)
59ED: 15 21 00 ; move_object_to_room(OBJ_21_VASE, RM_00_nowhere)
59F0: 07 08 ; stop_if_pass ...
59F2: 1A 12 ; is_in_current_room(OBJ_12_PILLOW)
59F4: 18 20 ; move_object_to_current_room(OBJ_20_VASE_ON_PILLOW)
59F6: 04 69 7B ; print(PS_B0) THE_VASE_IS_NOW_RESTING,_DELICATELY,_ON_A_VELVET_PILLOW.
59F9: 18 15 ; move_object_to_current_room(OBJ_15_POTTERY)
59FB: 04 91 7B ; print(PS_B1) THE_VASE_DROPS_WITH_A_DELICATE_CRASH.
59FE: 17 ; drop_users_object_print_ok()
59FF: 26 0E ; THROW
5A01: 07 0B ; stop_if_pass ...
5A03: 11 21 ; is_object_user_input(OBJ_21_VASE)
5A05: 15 21 00 ; move_object_to_room(OBJ_21_VASE, RM_00_nowhere)
5A08: 18 15 ; move_object_to_current_room(OBJ_15_POTTERY)
5A0A: 04 C9 7B ; print(PS_B3) YOU_HAVE_TAKEN_THE_VASE_AND_HURLED_IT_DELICATELY_TO_THE_GROUND.
5A0D: 17 ; drop_users_object_print_ok()
5A0E: 29 36 ; OPEN
5A10: 07 1C ; stop_if_pass ...
5A12: 11 17 ; is_object_user_input(OBJ_17_SARCOPH_FULL)
5A14: 07 06 ; stop_if_pass ...
5A16: 02 17 ; is_in_pack(OBJ_17_SARCOPH_FULL)
5A18: 04 55 76 ; print(PS_94) I'D_ADVISE_YOU_TO_PUT_DOWN_THE_SARCOPHAGUS_BEFORE_OPENING_IT!!
5A1B: 07 0E ; stop_if_pass ...
5A1D: 02 22 ; is_in_pack(OBJ_22_KEY)
5A1F: 04 12 76 ; print(PS_93) A_GLISTENING_PEARL_FALLS_OUT_OF_THE_SARCOPHAGUS_AND_ROLLS_AWAY._
; THE_SARCOPHAGUS_SNAPS_SHUT_AGAIN.
5A22: 15 16 40 ; move_object_to_room(OBJ_16_PEARL, RM_40_CUL_DE_SAC)
5A25: 15 17 00 ; move_object_to_room(OBJ_17_SARCOPH_FULL, RM_00_nowhere)
5A28: 18 18 ; move_object_to_current_room(OBJ_18_SARCOPH_EMPTY)
5A2A: 04 BF 76 ; print(PS_96) YOU_DON'T_HAVE_ANYTHING_STRONG_ENOUGH_TO_OPEN_THE_SARCOPHAGUS.
5A2D: 07 14 ; stop_if_pass ...
5A2F: 11 18 ; is_object_user_input(OBJ_18_SARCOPH_EMPTY)
5A31: 07 06 ; stop_if_pass ...
5A33: 02 18 ; is_in_pack(OBJ_18_SARCOPH_EMPTY)
5A35: 04 55 76 ; print(PS_94) I'D_ADVISE_YOU_TO_PUT_DOWN_THE_SARCOPHAGUS_BEFORE_OPENING_IT!!
5A38: 07 06 ; stop_if_pass ...
5A3A: 02 22 ; is_in_pack(OBJ_22_KEY)
5A3C: 04 81 76 ; print(PS_95) THE_SARCOPHAGUS_CREAKS_OPEN,_REVEALING_NOTHING_INSIDE.__IT______
; PROMPTLY_SNAPS_SHUT_AGAIN.
5A3F: 04 BF 76 ; print(PS_96) YOU_DON'T_HAVE_ANYTHING_STRONG_ENOUGH_TO_OPEN_THE_SARCOPHAGUS.
5A42: 04 EB 76 ; print(PS_97) I_DON'T_KNOW_HOW_TO_LOCK_OR_UNLOCK_SUCH_A_THING.
5A45: 23 04 ; WAVE
5A47: 04 AA 73 ; print(PS_7D) NOTHING_HAPPENS.
5A4A: 24 0E ; POUR
5A4C: 07 09 ; stop_if_pass ...
5A4E: 11 1C ; is_object_user_input(OBJ_1C_WATER)
5A50: 15 1C 00 ; move_object_to_room(OBJ_1C_WATER, RM_00_nowhere)
5A53: 04 3D 75 ; print(PS_8C) YOUR_BOTTLE_IS_EMPTY_AND_THE_GROUND_IS_WET.
5A56: 04 5C 75 ; print(PS_8D) YOU_CAN'T_POUR_THAT.
5A59: 25 12 ; RUB
5A5B: 07 06 ; stop_if_pass ...
5A5D: 11 0E ; is_object_user_input(OBJ_0E_LAMP_OFF)
5A5F: 04 6C 75 ; print(PS_8E) RUBBING_THE_ELECTRIC_LAMP_IS_NOT_PARTICULARLY_REWARDING.________
; ANYWAY,_NOTHING_EXCITING_HAPPENS.
5A62: 07 06 ; stop_if_pass ...
5A64: 11 0F ; is_object_user_input(OBJ_0F_LAMP_ON)
5A66: 04 6C 75 ; print(PS_8E) RUBBING_THE_ELECTRIC_LAMP_IS_NOT_PARTICULARLY_REWARDING.________
; ANYWAY,_NOTHING_EXCITING_HAPPENS.
5A69: 04 AF 75 ; print(PS_8F) PECULIAR.__NOTHING_UNEXPECTED_HAPPENS.
5A6C: 27 12 ; FILL
5A6E: 07 06 ; stop_if_pass ...
5A70: 11 1B ; is_object_user_input(OBJ_1B_BOTTLE)
5A72: 04 CB 75 ; print(PS_90) THERE_IS_NOTHING_HERE_WITH_WHICH_TO_FILL_THE_BOTTLE.
5A75: 07 06 ; stop_if_pass ...
5A77: 11 21 ; is_object_user_input(OBJ_21_VASE)
5A79: 04 2D 75 ; print(PS_8B) DON'T_BE_RIDICULOUS!
5A7C: 04 02 76 ; print(PS_92) YOU_CAN'T_FILL_THAT.
5A7F: 2C 2D ; ATTACK
5A81: 07 09 ; stop_if_pass ...
5A83: 11 13 ; is_object_user_input(OBJ_13_BIRD)
5A85: 15 13 00 ; move_object_to_room(OBJ_13_BIRD, RM_00_nowhere)
5A88: 04 0D 77 ; print(PS_98) THE_BIRD_STATUE_IS_NOW_DEAD.__ITS_BODY_DISAPPEARS.
5A8B: 07 09 ; stop_if_pass ...
5A8D: 11 14 ; is_object_user_input(OBJ_14_BIRD_IN_BOX)
5A8F: 15 14 00 ; move_object_to_room(OBJ_14_BIRD_IN_BOX, RM_00_nowhere)
5A92: 04 0D 77 ; print(PS_98) THE_BIRD_STATUE_IS_NOW_DEAD.__ITS_BODY_DISAPPEARS.
5A95: 07 06 ; stop_if_pass ...
5A97: 11 17 ; is_object_user_input(OBJ_17_SARCOPH_FULL)
5A99: 04 31 77 ; print(PS_99) THE_STONE_IS_VERY_STRONG_AND_IS_IMPERVIOUS_TO_ATTACK.
5A9C: 07 06 ; stop_if_pass ...
5A9E: 11 18 ; is_object_user_input(OBJ_18_SARCOPH_EMPTY)
5AA0: 04 31 77 ; print(PS_99) THE_STONE_IS_VERY_STRONG_AND_IS_IMPERVIOUS_TO_ATTACK.
5AA3: 07 06 ; stop_if_pass ...
5AA5: 11 0B ; is_object_user_input(OBJ_0B_SERPENT)
5AA7: 04 57 77 ; print(PS_9A) ATTACKING_THE_SERPENT_BOTH_DOESN'T_WORK_AND_IS_VERY_DANGEROUS.
5AAA: 04 83 77 ; print(PS_9B) YOU_CAN'T_BE_SERIOUS!
5AAD: 30 04 ; BREAK
5AAF: 04 93 77 ; print(PS_9C) IT_IS_BEYOND_YOUR_POWER_TO_DO_THAT.
5AB2: 2E 23 ; EAT
5AB4: 07 09 ; stop_if_pass ...
5AB6: 11 1A ; is_object_user_input(OBJ_1A_FOOD)
5AB8: 15 1A 00 ; move_object_to_room(OBJ_1A_FOOD, RM_00_nowhere)
5ABB: 04 AD 77 ; print(PS_9D) THANK_YOU,_IT_WAS_DELICIOUS!
5ABE: 07 06 ; stop_if_pass ...
5AC0: 11 0A ; is_object_user_input(OBJ_0A_UNKNOWN_0A??)
5AC2: 04 C2 77 ; print(PS_9E) I_THINK_I_JUST_LOST_MY_APPETITE.
5AC5: 07 06 ; stop_if_pass ...
5AC7: 11 13 ; is_object_user_input(OBJ_13_BIRD)
5AC9: 04 C2 77 ; print(PS_9E) I_THINK_I_JUST_LOST_MY_APPETITE.
5ACC: 07 06 ; stop_if_pass ...
5ACE: 11 14 ; is_object_user_input(OBJ_14_BIRD_IN_BOX)
5AD0: 04 C2 77 ; print(PS_9E) I_THINK_I_JUST_LOST_MY_APPETITE.
5AD3: 04 2D 75 ; print(PS_8B) DON'T_BE_RIDICULOUS!
5AD6: 2F 15 ; DRINK
5AD8: 07 09 ; stop_if_pass ...
5ADA: 11 1C ; is_object_user_input(OBJ_1C_WATER)
5ADC: 15 1C 00 ; move_object_to_room(OBJ_1C_WATER, RM_00_nowhere)
5ADF: 04 F0 75 ; print(PS_91) THE_BOTTLE_IS_NOW_EMPTY.
5AE2: 07 06 ; stop_if_pass ...
5AE4: 11 1E ; is_object_user_input(OBJ_1E_STREAM_ROOM_38)
5AE6: 04 DA 77 ; print(PS_9F) YOU_HAVE_TAKEN_A_DRINK_FROM_THE_STREAM.__THE_WATER_TASTES_______
; STRONGLY_OF_MINERALS,_BUT_IS_NOT_UNPLEASANT.__IT_IS_EXTREMELY___
; COLD.
5AE9: 04 83 77 ; print(PS_9B) YOU_CAN'T_BE_SERIOUS!
5AEC: 2D 38 ; FEED
5AEE: 07 06 ; stop_if_pass ...
5AF0: 11 13 ; is_object_user_input(OBJ_13_BIRD)
5AF2: 04 35 78 ; print(PS_A0) IT'S_NOT_HUNGRY.__BESIDES,_YOU_HAVE_NO_BIRD_SEED.
5AF5: 07 06 ; stop_if_pass ...
5AF7: 11 14 ; is_object_user_input(OBJ_14_BIRD_IN_BOX)
5AF9: 04 35 78 ; print(PS_A0) IT'S_NOT_HUNGRY.__BESIDES,_YOU_HAVE_NO_BIRD_SEED.
5AFC: 07 10 ; stop_if_pass ...
5AFE: 11 0B ; is_object_user_input(OBJ_0B_SERPENT)
5B00: 07 09 ; stop_if_pass ...
5B02: 02 14 ; is_in_pack(OBJ_14_BIRD_IN_BOX)
5B04: 15 14 00 ; move_object_to_room(OBJ_14_BIRD_IN_BOX, RM_00_nowhere)
5B07: 04 7F 78 ; print(PS_A2) THE_SERPENT_HAS_NOW_DEVOURED_YOUR_BIRD_STATUE.
5B0A: 04 A0 78 ; print(PS_A3) THERE_IS_NOTHING_HERE_IT_WANTS_TO_EAT_-_EXCEPT_PERHAPS_YOU.
5B0D: 07 06 ; stop_if_pass ...
5B0F: 11 17 ; is_object_user_input(OBJ_17_SARCOPH_FULL)
5B11: 04 FB 78 ; print(PS_A5) I'M_GAME.__WOULD_YOU_CARE_TO_EXPLAIN_HOW?
5B14: 07 06 ; stop_if_pass ...
5B16: 11 18 ; is_object_user_input(OBJ_18_SARCOPH_EMPTY)
5B18: 04 FB 78 ; print(PS_A5) I'M_GAME.__WOULD_YOU_CARE_TO_EXPLAIN_HOW?
5B1B: 07 06 ; stop_if_pass ...
5B1D: 11 0D ; is_object_user_input(OBJ_0D_UNKNOWN_0D??)
5B1F: 04 A0 78 ; print(PS_A3) THERE_IS_NOTHING_HERE_IT_WANTS_TO_EAT_-_EXCEPT_PERHAPS_YOU.
5B22: 04 2D 75 ; print(PS_8B) DON'T_BE_RIDICULOUS!
5B25: 39 02 ; PLUGH
5B27: 1D ; scramble_directions_print_ack()
5B28: 3A 02 ; LOAD
5B2A: 1B ; load_game()
5B2B: 3B 02 ; SAVE
5B2D: 1C ; save_game()
5B2E: 00 ;
Packed strings
; YOU_ARE_STANDING_BEFORE_THE_ENTRANCE_OF_A_PYRAMID.__AROUND_YOU__ ; IS_A_DESERT. PS_00: ; RM_01_BEFORE_ENTRANCE 5B2F: 19 C7 DE 94 14 55 5E 50 BD 90 5A C4 6A 59 60 5B 5B3F: B1 5F BE 30 15 EB BF 17 98 B8 16 7B 14 14 A8 6B 5B4F: 48 9B 5D 94 14 30 A1 1B 58 1B A1 D5 15 7B 14 F5 5B5F: 59 3E 62 2E 00 ; YOU_ARE_IN_THE_ENTRANCE_TO_THE_PYRAMID.__A_HOLE_IN_THE_FLOOR____ ; LEADS_TO_A_PASSAGE_BENEATH_THE_SURFACE. PS_01: ; RM_02_IN_ENTRANCE 5B64: 22 C7 DE 94 14 4B 5E 96 96 DB 72 9E 61 D0 B0 9B 5B74: 53 6B BF 5F BE F3 16 CF B0 17 79 43 13 A9 15 DB 5B84: 8B 83 7A 5F BE 56 15 44 A0 3B 13 3F 16 0D 47 89 5B94: 17 7B 14 55 A4 09 B7 44 5E 8F 61 82 49 82 17 55 5BA4: 5E 30 C6 D7 46 2E 00 ; YOU_ARE_IN_THE_DESERT. PS_02: ; RM_03_DESERT1, RM_04, RM_05, RM_06 5BAB: 07 C7 DE 94 14 4B 5E 96 96 DB 72 F5 59 3E 62 2E 5BBB: 00 ; YOU_ARE_IN_A_SMALL_CHAMBER_BENEATH_A_HOLE_FROM_THE_SURFACE.__A__ ; LOW_CRAWL_LEADS_INWARD_TO_THE_WEST.__HIEROGLYPHICS_ON_THE_WALL__ ; TRANSLATE,_"CURSE_ALL_WHO_ENTER_THIS_SACRED_CRYPT." PS_03: ; RM_07_BENEATH_A_HOLE 5BBC: 3B C7 DE 94 14 4B 5E 83 96 5F 17 46 48 DA 14 64 5BCC: 48 23 62 70 4D 96 5F 03 71 A9 15 DB 8B 79 68 56 5BDC: 90 DB 72 34 BA C5 65 DB 63 7B 14 49 16 C5 CE D9 5BEC: B0 0E 8A 86 5F CB B5 33 9B 33 B1 6B BF 5F BE F7 5BFC: 17 17 BA 4A 13 34 79 FE 9E E2 DE E5 78 C0 16 82 5C0C: 17 59 5E 46 48 56 13 D0 B0 BB B8 FE BD 6D 13 3D 5C1C: C6 43 5E F3 8C 29 D1 30 15 F4 BD 82 17 4B 7B 05 5C2C: B7 66 B1 E4 14 EE DE 2E 22 00 ; YOU_ARE_CRAWLING_OVER_PEBBLES_IN_A_LOW_PASSAGE.__THERE_IS_A_DIM_ ; LIGHT_AT_THE_EAST_END_OF_THE_PASSAGE. PS_04: ; RM_08_CRAWLING_OVER_PEBBLES 5C36: 21 C7 DE 94 14 45 5E D9 B0 90 8C D1 6A 74 CA DF 5C46: 16 F6 4C 4B 62 83 7A 4E 45 6B A1 55 A4 09 B7 DB 5C56: 63 82 17 2F 62 D5 15 7B 14 8F 5A 43 16 2E 6D 96 5C66: 14 82 17 47 5E 66 49 30 15 11 58 96 64 DB 72 55 5C76: A4 09 B7 45 2E 00 ; YOU_ARE_IN_A_ROOM_FILLED_WITH_BROKEN_POTTERY_SHARDS_OF_ANCIENT__ ; EGYPTIAN_CRAFTS.__AN_AWKWARD_CORRIDOR_LEADS_UPWARD_AND_WEST. PS_05: ; RM_09_BROKEN_POTTERY 5C7C: 29 C7 DE 94 14 4B 5E 83 96 39 17 DB 9F 0E 67 E6 5C8C: 8B FB 17 53 BE 79 4F B0 85 E9 16 3F C0 7B B4 1B 5C9C: B8 4D B1 B8 16 90 14 47 54 B3 9A 29 15 EE DE 90 5CAC: 78 E4 14 5E 47 5B BB 90 14 99 14 73 88 33 B1 44 5CBC: 55 06 B2 A3 A0 E3 8B 0B 5C F1 C5 2E 49 90 14 19 5CCC: 58 66 62 2E 00 ; YOU_ARE_IN_AN_AWKWARD_SLOPING_EAST/WEST_CORRIDOR. PS_06: ; RM_0A_AWKWARD_SLOPING 5CD1: 10 C7 DE 94 14 4B 5E 83 96 83 96 A9 D1 2E 49 5E 5CE1: 17 63 A0 AB 98 95 5F E1 BC 66 62 E1 14 73 B3 84 5CF1: 5B 2E 00 ; YOU_ARE_IN_A_SPLENDID_CHAMBER_THIRTY_FEET_HIGH.__THE_WALLS_ARE__ ; FROZEN_RIVERS_OF_ORANGE_STONE.__AN_AWKWARD_CORRIDOR_AND_A_GOOD__ ; PASSAGE_EXIT_FROM_THE_EAST_AND_WEST_SIDES_OF_THE_CHAMBER. PS_07: ; RM_0B_SPLENDID_CHAMBER 5CF4: 3D C7 DE 94 14 4B 5E 83 96 62 17 F0 8B 86 5A DA 5D04: 14 64 48 23 62 63 BE D3 B3 4F 15 73 62 89 73 9B 5D14: 76 82 17 59 5E 46 48 C3 B5 5B B1 5C 15 EF A1 94 5D24: 96 CF 7B 8B B3 C3 9E AB A0 B7 98 66 17 0F A0 3B 5D34: F4 83 48 FD 49 14 D0 05 58 BC A0 09 79 83 AF 33 5D44: 98 49 45 36 A0 52 13 65 49 77 47 3A 15 73 7B 79 5D54: 68 56 90 DB 72 95 5F 03 BC 33 98 B5 D0 15 BC FF 5D64: 78 D1 B5 96 64 DB 72 1B 54 AF 91 52 2E 00 ; AT_YOUR_FEET_IS_A_SMALL_PIT_BREATHING_TRACES_OF_WHITE_MIST.__AN_ ; EAST_PASSAGE_ENDS_HERE_EXCEPT_FOR_A_SMALL_CRACK_LEADING_ON._____ ; ROUGH_STONE_STEPS_LEAD_DOWN_THE_PIT. PS_08: ; RM_0C_SMALL_PIT_WHITE_MIST 5D72: 36 73 49 C7 DE 88 AF 36 60 D5 15 7B 14 E3 B8 F3 5D82: 8C 96 A5 BC 14 96 5F 90 73 D6 6A C5 B0 4B 62 C3 5D92: 9E 23 D1 DB BD D5 92 9B C1 90 14 23 15 F3 B9 55 5DA2: A4 09 B7 47 5E 4D 98 9F 15 5B B1 1D 63 EE 61 59 5DB2: 15 83 AF 5F 17 46 48 E4 14 DD 46 3F 16 03 47 AB 5DC2: 98 27 A0 3B 13 54 13 29 A1 15 71 80 BF 55 5E F2 5DD2: BD CE B5 86 5F 09 15 03 D2 5F BE E3 16 54 2E 00 ; YOU_ARE_AT_ONE_END_OF_A_VAST_HALL_STRETCHING_FORWARD_OUT_OF_____ ; SIGHT_TO_THE_WEST.__THERE_ARE_OPENINGS_TO_EITHER_SIDE.__NEARBY,_ ; A_WIDE_STONE_STAIRCASE_LEADS_DOWNWARD.__THE_HALL_IS_VERY_MUSTY__ ; AND_A_COLD_WIND_BLOWS_UP_THE_STAIRCASE.__THERE_IS_A_PASSAGE_AT__ ; THE_TOP_OF_A_DOME_BEHIND_YOU.__ROUGH_STONE_STEPS_LEAD_UP_THE____ ; DOME. PS_09: ; RM_0D_STEPS_LEAD_UP_DOME 5DE2: 6C C7 DE 94 14 43 5E 11 BC 5B 98 8E 61 B8 16 7B 5DF2: 14 D5 C9 0A BC 46 48 66 17 76 B1 23 54 AB 98 04 5E02: 68 14 D0 11 58 73 C6 C3 9E 3B 13 5B 17 2E 6D 89 5E12: 17 82 17 59 5E 66 62 3B F4 5F BE 5B B1 2F 49 C2 5E22: 16 93 61 C5 98 89 17 2B 15 5F BE 95 AF FF 78 3B 5E32: F4 63 98 03 B1 03 EE FB 17 DB 59 09 BA 5B 98 FB 5E42: B9 2D 7B 57 49 3F 16 0D 47 09 15 21 D2 2E 49 3B 5E52: F4 5F BE 9B 15 F3 8C 4B 7B 74 CA 4F DB 66 C6 3B 5E62: DB 8E 48 7B 14 3E 55 19 58 8E 7A B6 14 85 A1 B2 5E72: 17 82 17 55 5E 4B BD 13 B1 BF B7 56 13 F4 72 4B 5E82: 5E C3 B5 DB 16 D3 B9 9B 6C 73 49 82 17 56 5E 53 5E92: A0 C3 9E 46 45 E7 9F AF 14 90 73 1B 58 3F A1 54 5EA2: 13 29 A1 15 71 80 BF 55 5E F2 BD CE B5 86 5F B2 5EB2: 17 82 17 3B 5E 46 13 E7 9F 2E 00 ; THIS_IS_A_LOW_ROOM_WITH_A_HIEROGLYPH_ON_THE_WALL.__IT_TRANSLATES ; "YOU_WON'T_GET_IT_UP_THE_STEPS". PS_0A: ; RM_0E_LOW_ROOM_HIEROGLYPH 5EBD: 20 63 BE CB B5 C3 B5 49 16 D4 CE 3F A0 FB 17 53 5ECD: BE 4A 45 34 79 FE 9E E2 DE C0 16 82 17 59 5E 46 5EDD: 48 3B F4 73 7B EB BF 9E 9A 7F 49 03 B6 1B A1 40 5EED: D2 F3 23 B6 6C D6 15 B2 17 82 17 55 5E F2 BD 07 5EFD: B6 00 ; YOU_ARE_ON_THE_EAST_BANK_OF_A_BOTTOMLESS_PIT_STRETCHING_ACROSS__ ; THE_HALL.__THE_MIST_IS_QUITE_THICK_HERE,_AND_THE_PIT_IS_TOO_WIDE ; TO_JUMP. PS_0B: ; RM_0F_EAST_BANK_BOTTOMLESS_PIT 5EFF: 2D C7 DE 94 14 51 5E 96 96 DB 72 95 5F 04 BC 95 5F0F: 48 B8 16 7B 14 06 4F 7F BF F5 8B D2 B5 73 7B 0C 5F1F: BA 7D 62 90 73 C3 6A B9 55 CB B9 82 17 4A 5E 46 5F2F: 48 3B F4 5F BE 6B 16 F3 B9 4B 7B AB AD DB BD 63 5F3F: BE 8B 54 F4 72 B3 63 8E 48 82 17 52 5E 73 7B 4B 5F4F: 7B 81 BF FB 17 F6 59 CC 9C 72 C5 2E 00 ; YOU_ARE_IN_THE_PHARAOH'S_CHAMBER,_WITH_PASSAGES_OFF_IN_ALL______ ; DIRECTIONS. PS_0C: ; RM_10_PHARAOHS_CHAMBER 5F5C: 19 C7 DE 94 14 4B 5E 96 96 DB 72 5B A5 D1 B0 65 5F6C: 71 DA 14 64 48 46 62 FB 17 53 BE 55 A4 09 B7 4B 5F7C: 62 D0 9E D0 15 8E 14 FB 89 3B 13 03 15 65 B1 91 5F8C: BE AF 9A 00 ; YOU_ARE_IN_THE_SOUTH_SIDE_CHAMBER. PS_0D: ; RM_11_SOUTH_SIDE_CHAMBER 5F90: 0B C7 DE 94 14 4B 5E 96 96 DB 72 47 B9 53 BE 46 5FA0: B8 45 5E 4F 72 74 4D 2E 00 ; YOU_ARE_ON_THE_WEST_SIDE_OF_THE_BOTTOMLESS_PIT_IN_THE_HALL_OF___ ; GODS. PS_0E: ; RM_12_HALL_OF_GODS 5FA9: 17 C7 DE 94 14 51 5E 96 96 DB 72 B5 D0 15 BC FF 5FB9: 78 B8 16 82 17 44 5E 0E A1 EE 9F 65 62 E3 16 0B 5FC9: BC 96 96 DB 72 4E 72 11 8A 7B 64 81 15 2F 5C 00 ; YOU_ARE_AT_THE_WEST_END_OF_THE_HALL_OF_GODS.___A_LOW_WIDE_PASS__ ; CONTINUES_WEST_AND_ANOTHER_GOES_NORTH.__TO_THE_SOUTH_IS_A_LITTLE ; PASSAGE_SIX_FEET_OFF_THE_FLOOR. PS_0F: ; RM_13_LITTLE_PASSAGE_SIX_FEET 5FD9: 35 C7 DE 94 14 43 5E 16 BC DB 72 B5 D0 07 BC 33 5FE9: 98 C3 9E 5F BE 9B 15 F3 8C C3 9E 36 6E 5B BB 43 5FF9: 13 49 16 D9 CE FF 78 DB 16 CB B9 E1 14 C3 9A E7 6009: 9A D9 B5 66 62 90 14 03 58 06 9A F4 72 81 15 4B 6019: 62 04 9A 77 BE 56 13 D6 9C DB 72 47 B9 53 BE 4B 6029: 7B 4E 45 8E 7B F2 8B 65 49 77 47 5B 17 08 D5 36 6039: 60 B8 16 96 64 DB 72 89 67 C7 A0 00 ; YOU_ARE_AT_EAST_END_OF_A_VERY_LONG_HALL_APPARENTLY_WITHOUT_SIDE_ ; CHAMBERS.__TO_THE_EAST_A_LOW_WIDE_CRAWL_SLANTS_UP.__TO_THE_NORTH ; A_ROUND_TWO_FOOT_HOLE_SLANTS_DOWN. PS_10: ; RM_14_EAST_END_LONG_HALL 6045: 36 C7 DE 94 14 43 5E 07 BC 66 49 30 15 11 58 83 6055: 64 CF 17 7B B4 80 8D CA 6A 46 48 92 14 54 A4 9E 6065: 61 FB 8E 56 D1 87 74 15 BC FF 78 DA 14 64 48 3D 6075: 62 3B F4 6B BF 5F BE 23 15 F3 B9 4E 45 6B A1 46 6085: D1 45 5E D9 B0 15 8A 50 8B 0B C0 F7 C5 56 13 D6 6095: 9C DB 72 04 9A 5B BE 39 17 8E C5 91 17 C8 9C 46 60A5: A0 A9 15 DB 8B BB B8 CD 9A 09 15 27 D2 00 ; YOU_ARE_AT_THE_WEST_END_OF_A_VERY_LONG_FEATURELESS_HALL.__THE___ ; HALL_JOINS_; UP_WITH_A_NARROW_NORTH/SOUTH_PASSAGE. PS_11: ; RM_15_WEST_END_FEATURELESS_HALL 60B3: 25 C7 DE 94 14 43 5E 16 BC DB 72 B5 D0 07 BC 33 60C3: 98 C3 9E 58 45 43 62 49 16 AB 98 63 66 74 C0 3F 60D3: 61 CB B9 4E 72 9B 8F 82 17 3B 5E 9B 15 F3 8C FB 60E3: 80 8B 9A D3 C5 56 D1 03 71 8B 16 79 B3 D0 CE BE 60F3: A0 DD 71 36 A1 12 71 65 49 77 47 2E 00 ; YOU_ARE_AT_A_CROSSOVER_OF_A_HIGH_N/S_PASSAGE_AND_A_LOW_E/W_ONE. PS_12: ; RM_16_CROSSOVER 6100: 15 C7 DE 94 14 43 5E 03 BC E4 14 E5 A0 4F A1 91 6110: AF 83 64 A3 15 13 6D 5D 97 DB 16 D3 B9 9B 6C 8E 6120: 48 7B 14 89 8D 20 15 D1 CE 7F 98 00 ; DEAD_END. PS_13: ; RM_17_DEAD_END1, RM_2A, RM_2B, RM_2C, RM_2D, RM_2E, RM_2F, RM_30, RM_31, RM_32, RM_33, RM_35 612C: 03 E3 59 07 58 57 98 00 ; YOU_ARE_IN_THE_WEST_THRONE_CHAMBER.__A_PASSAGE_CONTINUES_WEST___ ; AND_UP_FROM_HERE. PS_14: ; RM_18_THRONE_CHAMBER 6134: 1B C7 DE 94 14 4B 5E 96 96 DB 72 B5 D0 16 BC F9 6144: 74 5B 98 1B 54 AF 91 1B B5 7B 14 55 A4 09 B7 45 6154: 5E 1E A0 9F 7A 4B 62 B5 D0 FB BB 90 14 17 58 08 6164: A3 FF B2 9F 15 7F B1 00 ; YOU_ARE_IN_A_LOW_N/S_PASSAGE_AT_A_HOLE_IN_THE_FLOOR.__THE_HOLE__ ; GOES_DOWN_TO_AN_E/W_PASSAGE. PS_15: ; RM_19_LOW_NS_PASSAGE 616C: 1E C7 DE 94 14 4B 5E 83 96 49 16 D0 CE 8B 36 55 617C: A4 09 B7 43 5E 03 BC A9 15 DB 8B 83 7A 5F BE 56 618C: 15 44 A0 3B F4 5F BE A9 15 DB 8B 81 15 4B 62 89 619C: 5B 96 96 C3 9C 87 96 2B 37 55 A4 09 B7 45 2E 00 ; YOU_ARE_IN_A_LARGE_ROOM,_WITH_A_PASSAGE_TO_THE_SOUTH,_AND_A_WALL ; OF_BROKEN_ROCK_TO_THE_EAST.__THERE_IS_A_PANEL_ON_THE_NORTH_WALL. PS_16: ; RM_1A_PANEL_NORTH_WALL 61AC: 2A C7 DE 94 14 4B 5E 83 96 3B 16 B7 B1 39 17 FE 61BC: 9F FB 17 53 BE 52 45 65 49 77 47 89 17 82 17 55 61CC: 5E 36 A1 73 76 8E 48 7B 14 0E D0 78 8D BC 14 97 61DC: 9F 94 96 5D 9E 89 17 82 17 47 5E 66 49 3B F4 5F 61EC: BE 5B B1 4B 7B 52 45 8F 48 11 8A 96 96 DB 72 04 61FC: 9A 53 BE 0E D0 4C 2E 00 ; YOU_ARE_IN_THE_CHAMBER_OF_ANUBIS. PS_17: ; RM_1B_CHAMBER_OF_ANUBIS 6204: 0B C7 DE 94 14 4B 5E 96 96 DB 72 1B 54 AF 91 91 6214: AF 83 64 E4 9A 6F 7B 00 ; YOU_ARE_IN_A_MAZE_OF_TWISTY_PASSAGES,_ALL_ALIKE. PS_18: ; RM_1C_TWISTY_PASSAGES1, RM_1D, RM_1E, RM_1F, RM_20, RM_21, RM_22, RM_23, RM_24, RM_25, RM_26, RM_27, RM_28, RM_29 621C: 10 C7 DE 94 14 4B 5E 83 96 63 16 5B E3 C3 9E BB 622C: C0 13 BA DB 16 D3 B9 B5 6C 03 EE F3 8C 43 48 BF 623C: 85 00 ; YOU_ARE_ON_THE_BRINK_OF_A_LARGE_PIT.__YOU_COULD_CLIMB_DOWN,_BUT_ ; YOU_WOULD_NOT_BE_ABLE_TO_CLIMB_BACK_UP.__THE_MAZE_CONTINUES_ON__ ; THIS_LEVEL. PS_19: ; RM_34_BRINK_OF_LARGE_PIT 623E: 2E C7 DE 94 14 51 5E 96 96 DB 72 73 4F 4B 99 C3 624E: 9E 4E 45 31 49 52 5E 97 7B 5B 13 1B A1 47 55 B3 625E: 8B C3 54 A3 91 89 5B F3 9B F6 4F 51 18 59 C2 2E 626E: A1 10 58 F3 A0 5B 4D B6 46 56 5E C5 9C 8F 8C 84 627E: 4B DD 46 B2 17 3B F4 5F BE 63 16 5B E3 40 55 90 628E: BE 35 C4 C0 16 56 13 95 73 3F 16 6E CA 2E 00 ; YOU_ARE_IN_A_DIRTY_BROKEN_PASSAGE.__TO_THE_EAST_IS_A_CRAWL.__TO_ ; THE_WEST_IS_A_LARGE_PASSAGE.__ABOVE_YOU_IS_A_HOLE_TO_ANOTHER____ ; PASSAGE. PS_1A: ; RM_36_DIRTY_BROKEN_PASSAGE 629D: 2D C7 DE 94 14 4B 5E 83 96 03 15 D3 B3 BC 14 97 62AD: 9F 92 96 65 49 77 47 3B F4 6B BF 5F BE 23 15 F3 62BD: B9 4B 7B 45 45 D9 B0 9B 8F 89 17 82 17 59 5E 66 62CD: 62 D5 15 7B 14 54 8B 9B 6C 55 A4 09 B7 DB 63 84 62DD: 14 4F A1 51 18 4B C2 C3 B5 A9 15 DB 8B 6B BF 99 62ED: 48 5F BE 7B AF 52 13 65 49 77 47 2E 00 ; YOU_ARE_ON_THE_BRINK_OF_A_SMALL_CLEAN_CLIMBABLE_PIT.__A_CRAWL___ ; LEADS_WEST. PS_1B: ; RM_37_BRINK_OF_CLEAN_PIT 62FA: 19 C7 DE 94 14 51 5E 96 96 DB 72 73 4F 4B 99 C3 630A: 9E 55 45 8E 91 05 8A E3 8B 85 96 8F 8C C4 4C DB 631A: 8B 96 A5 3B F4 45 45 D9 B0 FB 89 3F 16 0D 47 F7 632A: 17 17 BA 00 ; YOU_ARE_IN_THE_BOTTOM_OF_A_SMALL_PIT_WITH_A_LITTLE_STREAM,_WHICH ; ENTERS_AND_EXITS_THROUGH_TINY_SLITS. PS_1C: ; RM_38_PIT_LITTLE_STREAM 632E: 21 C7 DE 94 14 4B 5E 96 96 DB 72 06 4F 7F BF B8 633E: 16 7B 14 E3 B8 F3 8C 96 A5 FB 17 53 BE 4E 45 8E 634E: 7B DB 8B 0C BA 8F 5F 19 EE 85 73 F0 72 F4 BD C3 635E: B5 33 98 23 63 0B C0 6C BE 29 A1 16 71 A3 7A 5E 636E: 17 8D 7B 2E 00 ; YOU_ARE_IN_A_THE_ROOM_OF_BES,_WHOSE_PICTURE_IS_ON_THE_WALL._____ ; THERE_IS_A_BIG_HOLE_IN_THE_FLOOR.__THERE_IS_A_PASSAGE_LEADING___ ; EAST. PS_1D: ; RM_39_ROOM_OF_BES 6373: 2C C7 DE 94 14 4B 5E 83 96 82 17 54 5E 3F A0 B8 6383: 16 AF 14 33 BB 29 D1 9B B7 85 A5 74 C0 4B 5E D1 6393: B5 96 96 DB 72 0E D0 9B 8F 3B 13 82 17 2F 62 D5 63A3: 15 7B 14 09 4E A9 15 DB 8B 83 7A 5F BE 56 15 44 63B3: A0 3B F4 5F BE 5B B1 4B 7B 52 45 65 49 77 47 3F 63C3: 16 03 47 AB 98 47 13 66 49 2E 00 ; YOU_ARE_AT_A_COMPLEX_JUNCTION.__A_LOW_HANDS_AND_KNEES_PASSAGE___ ; FROM_THE_NORTH_JOINS_A_HIGHER_CRAWL_FROM_THE_EAST_TO_MAKE_A_____ ; WALKING_PASSAGE_GOING_WEST.__THERE_IS_ALSO_A_LARGE_ROOM_ABOVE.__ ; THE_AIR_IS_DAMP_HERE. PS_1E: ; RM_3A_COMPLEX_JUNCTION 63CE: 47 C7 DE 94 14 43 5E 03 BC E1 14 E6 93 13 63 F0 63DE: 81 03 56 27 A0 43 13 49 16 CA CE 8E 48 C3 B5 33 63EE: 98 0F 87 4B 62 55 A4 09 B7 3B 5E 5C 15 DB 9F 5F 63FE: BE 99 16 C2 B3 F9 15 9D 7A 7B 14 89 73 F4 72 E4 640E: 14 FE 49 5C 15 DB 9F 5F BE 23 15 F3 B9 6B BF 8D 641E: 91 43 5E 3B 13 59 13 45 48 91 7A DB 16 D3 B9 9B 642E: 6C 3B 6E AB 98 B5 D0 9B C1 82 17 2F 62 D5 15 8E 643E: 14 2B B9 4E 45 31 49 54 5E 3F A0 84 14 4F A1 3B 644E: F4 5F BE 8B 14 8B AF C6 B5 72 48 9F 15 7F B1 00 ; YOU_ARE_IN_THE_UNDERWORLD_ANTEROOM_OF_SEKER.__PASSAGES_GO_EAST,_ ; WEST,_AND_UP.__HUMAN_BONES_ARE_STREWN_ABOUT_ON_THE_FLOOR._______ ; HIEROGLYPHICS_ON_THE_WALL_ROUGHLY_TRANSLATE_TO_"THOSE_WHO_______ ; PROCEED_EAST_MAY_NEVER_RETURN." PS_1F: ; RM_3B_ANTEROOM_OF_SEKER 645E: 4A C7 DE 94 14 4B 5E 96 96 DB 72 8E C5 41 62 B6 646E: A0 03 58 BF 9A 01 B3 51 90 95 64 17 61 1B B5 DB 647E: 16 D3 B9 B5 6C 81 15 23 15 16 BA F7 17 16 BA 90 648E: 14 17 58 9B A8 AF 15 90 91 B9 14 75 98 94 14 55 649E: 5E EF BF 03 D2 B9 46 73 C6 03 A0 5F BE 56 15 44 64AE: A0 3B F4 3B 13 4A 13 34 79 FE 9E E2 DE E5 78 C0 64BE: 16 82 17 59 5E 46 48 39 17 7A C4 FB 8E EB BF 9E 64CE: 9A 7F 49 89 17 7E 13 85 74 59 5E 6B 74 3B 13 3B 64DE: 13 F9 A6 A7 53 07 58 66 49 63 16 50 DB CF 62 94 64EE: AF 8F 62 E7 B2 22 00 ; YOU_ARE_AT_THE_LAND_OF_DEAD.__PASSAGES_LEAD_OFF_IN_>ALL<________ ; DIRECTIONS. PS_20: ; RM_3C_LAND_OF_DEAD 64F5: 19 C7 DE 94 14 43 5E 16 BC DB 72 50 8B 11 58 86 6505: 64 86 5F 3B F4 55 A4 09 B7 4B 62 E3 8B 11 58 83 6515: 66 83 7A 8E 2D 73 8A 3B 13 3B 13 03 15 65 B1 91 6525: BE AF 9A 00 ; YOU'RE_IN_A_LARGE_ROOM_WITH_ANCIENT_DRAWINGS_ON_ALL_WALLS.______ ; THE_PICTURES_DEPICT_ATUM,_A_PHARAOH_WEARING_THE_DOUBLE_CROWN.___ ; A_SHALLOW_PASSAGE_PROCEEDS_DOWNWARD,_AND_A_SOMEWHAT_STEEPER_ONE_ ; LEADS_UP.__A_LOW_HANDS_AND_KNEES_PASSAGE_ENTERS_FROM_THE_SOUTH. PS_21: ; RM_3D_ANCIENT_DRAWINGS 6529: 55 C7 DE AF 23 D0 15 7B 14 54 8B 9B 6C 01 B3 59 6539: 90 82 7B 90 14 47 54 B3 9A EB 5B 50 D1 CB 6E 03 6549: A0 46 48 F3 17 0D 8D 3B F4 3B 13 82 17 52 5E E6 6559: 78 2F C6 C6 B5 E3 61 F3 55 8F 49 B3 95 52 45 54 6569: 72 BA 48 F7 17 33 49 AB 98 5F BE 09 15 B6 C3 45 6579: 5E 09 B3 1B 9C 43 13 5A 17 46 48 6B A1 55 A4 09 6589: B7 52 5E F5 B2 26 60 C6 B5 80 A1 14 D0 73 5D 8E 6599: 48 7B 14 3F B9 FA 62 73 49 FF B9 DF 61 91 AF 5B 65A9: 98 E3 8B 0B 5C F7 C5 43 13 49 16 CA CE 8E 48 C3 65B9: B5 33 98 0F 87 4B 62 55 A4 09 B7 47 5E BF 9A 8B 65C9: B3 79 68 56 90 DB 72 47 B9 77 BE 20 00 ; YOU_ARE_IN_A_CHAMBER_WHOSE_WALL_CONTAINS_A_PICTURE_OF_A_MAN_____ ; WEARING_THE_LUNAR_DISK_ON_HIS_HEAD.__HE_IS_THE_GOD_KHONS,_THE___ ; MOON_GOD. PS_22: ; RM_3E_MOON_GOD 65D6: 2D C7 DE 94 14 4B 5E 83 96 DA 14 64 48 23 62 29 65E6: D1 9B B7 0E D0 05 8A 1E A0 D0 47 C3 B5 E3 16 0F 65F6: 56 5B B1 C3 9E 4F 45 83 48 3B 13 F7 17 33 49 AB 6606: 98 5F BE 4F 16 D4 97 03 15 8B B8 03 A0 95 73 9F 6616: 15 17 47 4A 13 4B 5E D6 B5 DB 72 36 6E 1A 16 1D 6626: A0 16 EE DB 72 4F 13 40 A0 81 15 44 2E 00 ; YOU_ARE_IN_A_LONG_SLOPING_CORRIDOR_WITH_RAGGED_WALLS._ PS_23: ; RM_3F_RAGGED_WALLS 6634: 12 C7 DE 94 14 4B 5E 83 96 49 16 AB 98 C9 B8 90 6644: A5 C5 6A BC A0 09 79 99 AF 82 7B 2B 17 F7 6C 19 6654: 58 46 48 5B BB 20 00 ; YOU_ARE_IN_A_CUL-DE-SAC_ABOUT_EIGHT_FEET_ACROSS. PS_24: ; RM_40_CUL_DE_SAC 665B: 10 C7 DE 94 14 4B 5E 83 96 E7 14 56 8F A5 63 CB 666B: 46 B9 46 73 C6 C9 60 33 75 67 66 03 BC B9 55 EF 667B: B9 00 ; YOU_ARE_IN_THE_CHAMBER_OF_HORUS,_A_LONG_EAST/WEST_PASSAGE_WITH__ ; HOLES_EVERYWHERE.__TO_EXPLORE_AT_RANDOM,_SELECT_NORTH,_SOUTH,___ ; UP,_OR_DOWN. PS_25: ; RM_41_CHAMBER_OF_HORUS 667D: 2E C7 DE 94 14 4B 5E 96 96 DB 72 1B 54 AF 91 91 668D: AF 8A 64 BF A0 33 BB 4E 45 11 A0 23 15 F8 B9 B5 669D: D0 12 BC 65 49 77 47 FB 17 53 BE A9 15 F5 8B 38 66AD: 15 43 62 1F D1 7F B1 56 13 C7 9C A6 D8 AF A0 96 66BD: 14 2B 17 49 98 B3 95 AE B7 E6 5F 99 16 C2 B3 15 66CD: EE 36 A1 73 76 57 13 73 A8 A3 A0 89 5B 4E 2E 00 ; YOU_ARE_IN_A_LARGE_LOW_CIRCULAR_CHAMBER_WHOSE_FLOOR_IS_AN_______ ; IMMENSE_SLAB_FALLEN_FROM_THE_CEILING.__EAST_AND_WEST_THERE_ONCE_ ; WHERE_LARGE_PASSAGES,_BUT_THEY_ARE_NOW_FILLED_WITH_SAND.________ ; LOW_SMALL_PASSAGES_GO_NORTH_AND_SOUTH. PS_26: ; RM_42_FALLEN_SLAB 66DD: 4C C7 DE 94 14 4B 5E 83 96 3B 16 B7 B1 49 16 C5 66ED: CE 2D 7B 3B C5 85 AF 4F 72 74 4D FA 17 D7 A0 56 66FD: 15 44 A0 D5 15 90 14 3B 13 3B 13 CF 15 30 92 9B 670D: B7 BB B8 88 4B 46 48 83 61 79 68 56 90 DB 72 AB 671D: 53 90 8C 5B 70 23 15 F3 B9 8E 48 F7 17 F3 B9 5F 672D: BE 5B B1 0D A0 59 5E F4 72 4E 5E 31 49 52 5E 65 673D: 49 77 47 33 BB F6 4F 82 17 3B 63 2F 49 99 16 C8 674D: CE 46 7A F3 5F 56 D1 15 71 8E 48 3B F4 3B 13 3B 675D: 13 89 8D 5F 17 46 48 DB 16 D3 B9 B5 6C 81 15 99 676D: 16 C2 B3 90 14 15 58 36 A1 48 2E 00 ; YOU_ARE_IN_THE_PRIEST'S_BEDROOM.__THE_WALLS_ARE_COVERED_WITH____ ; CURTAINS,_THE_FLOOR_WITH_A_THICK_PILE_CARPET.__MOSS_COVERS_THE__ ; CEILING. PS_27: ; RM_48_PRIESTS_BEDROOM 6779: 2D C7 DE 94 14 4B 5E 96 96 DB 72 F3 A6 66 62 CB 6789: 23 66 4D 01 B3 DB 95 82 17 59 5E 46 48 C3 B5 5B 6799: B1 48 55 2F 62 19 58 82 7B 3B 13 E7 14 BB B3 9D 67A9: 7A 16 EE DB 72 89 67 A3 A0 56 D1 03 71 82 17 DD 67B9: 78 E3 16 DB 8B 14 53 F6 A4 3B F4 C5 93 C5 B5 4F 67C9: A1 8B B3 5F BE 45 13 CE 60 91 7A 2E 00 ; THIS_IS_THE_CHAMBER_OF_THE_HIGH_PRIEST.___ANCIENT_DRAWINGS_COVER ; THE_WALLS.__AN_EXTREMELY_TIGHT_TUNNEL_LEADS_WEST.__IT_LOOKS_LIKE ; A_TIGHT_SQUEEZE.__ANOTHER_PASSAGE_LEADS_SE. PS_28: ; RM_49_HIGH_PRIEST 67D6: 39 63 BE CB B5 D6 B5 DB 72 1B 54 AF 91 91 AF 96 67E6: 64 DB 72 89 73 12 71 07 B2 17 BA 3B 13 8D 48 30 67F6: 79 06 BC D9 B0 91 7A C5 B5 4F A1 C2 B3 59 5E 46 6806: 48 5B BB 90 14 3A 15 EF BF 2E 92 56 DB 7A 79 16 6816: BC 98 C5 33 61 E3 8B 0B 5C B5 D0 9B C1 D6 15 49 6826: 16 A5 9F 43 16 A3 85 83 17 2E 6D 63 17 27 C4 7F 6836: E3 43 13 06 9A F4 72 DB 16 D3 B9 9B 6C E3 8B 0B 6846: 5C BF B7 00 ; YOU_ARE_IN_THE_HIGH_PRIEST'S_TREASURE_ROOM_LIT_BY_AN_EERIE_GREEN ; LIGHT.__A_NARROW_TUNNEL_EXITS_TO_THE_EAST. PS_29: ; RM_4C_EERIE_GREEN_LIGHT 684A: 23 C7 DE 94 14 4B 5E 96 96 DB 72 89 73 12 71 07 685A: B2 F5 B9 D6 B5 63 B1 34 BA 54 5E 3F A0 43 16 04 686A: BC 43 DB 87 96 33 62 49 5E 67 B1 83 99 2E 6D 3B 687A: F4 50 45 3C 49 6B A1 70 C0 6E 98 3A 15 8D 7B 89 688A: 17 82 17 47 5E 66 49 2E 00 ; YOU_ARE_AT_THE_EAST_END_OF_THE_TWOPIT_ROOM.__THE_FLOOR_HERE_IS__ ; LITTERED_WITH_THIN_ROCK_SLABS,_WHICH_MAKE_IT_EASY_TO_DESCEND_THE ; PITS.__THERE_IS_A_PATH_HERE_BYPASSING_THE_PITS_TO_CONNECT_______ ; PASSAGES_EAST_AND_WEST.__THERE_ARE_HOLES_ALL_OVER,_BUT_THE_ONLY_ ; BIG_ONE_IS_ON_THE_WALL_DIRECTLY_OVER_THE_WEST_PIT_WHERE_YOU_____ ; CAN'T_GET_TO_IT. PS_2A: ; RM_4E_WEAST_END_TWOPIT 6893: 70 C7 DE 94 14 43 5E 16 BC DB 72 95 5F 07 BC 33 68A3: 98 C3 9E 5F BE 91 17 63 A0 14 BC 3F A0 3B F4 5F 68B3: BE 56 15 44 A0 9F 15 5B B1 4B 7B 43 16 3F C0 66 68C3: B1 FB 17 53 BE 63 BE 94 96 5D 9E 5E 17 BD 46 19 68D3: EE 85 73 0F 71 17 48 D6 15 23 15 BB BA 6B BF F5 68E3: 59 B0 53 16 58 F2 72 8D 7B 3B F4 5F BE 5B B1 4B 68F3: 7B 52 45 82 49 9F 15 5B B1 92 50 65 49 91 7A 82 6903: 17 52 5E 8D 7B 89 17 E1 14 CF 99 F3 55 3B 13 3B 6913: 13 55 A4 09 B7 4B 62 95 5F 03 BC 33 98 B5 D0 9B 6923: C1 82 17 2F 62 94 14 4A 5E BF 9F C3 B5 F3 8C 4F 6933: A1 F3 B4 F6 4F 82 17 51 5E 93 99 B3 14 D1 6A 5B 6943: 98 4B 7B 03 A0 5F BE F3 17 F3 8C 94 5A E6 5F FB 6953: 8E 4F A1 96 AF DB 72 B5 D0 12 BC 73 7B 1F D1 5B 6963: B1 C7 DE 3B 13 45 13 85 48 09 BC 73 62 6B BF 97 6973: 7B 00 ; YOU_ARE_AT_THE_BOTTOM_OF_THE_EASTERN_PIT_IN_THE_TWOPIT_ROOM. PS_2B: ; RM_4F_BOTTOM_EASTERN_PIT 6975: 14 C7 DE 94 14 43 5E 16 BC DB 72 06 4F 7F BF B8 6985: 16 82 17 47 5E 66 49 38 62 E3 16 0B BC 96 96 DB 6995: 72 C1 C0 96 A5 39 17 FF 9F 00 ; YOU_ARE_AT_THE_WEST_END_OF_THE_TWOPIT_ROOM.__THERE_IS_A_LARGE___ ; HOLE_IN_THE_WALL_ABOVE_THE_PIT_AT_THIS_END_OF_THE_ROOM. PS_2C: ; RM_50_WEST_END_TWOPIT 699F: 27 C7 DE 94 14 43 5E 16 BC DB 72 B5 D0 07 BC 33 69AF: 98 C3 9E 5F BE 91 17 63 A0 14 BC 3F A0 3B F4 5F 69BF: BE 5B B1 4B 7B 4E 45 31 49 3B 5E A9 15 DB 8B 83 69CF: 7A 5F BE F3 17 F3 8C B9 46 5B CA 5F BE E3 16 03 69DF: BC 16 BC 95 73 30 15 11 58 96 64 DB 72 01 B3 4D 69EF: 2E 00 ; YOU_ARE_AT_THE_BOTTOM_OF_THE_WEST_PIT_IN_THE_TWOPIT_ROOM.__THERE ; IS_A_LARGE_HOLE_IN_THE_WALL_ABOUT_TWENTY_FIVE_FEET_ABOVE_YOU. PS_2D: ; RM_51_BOTTOM_WEST_PIT 69F1: 29 C7 DE 94 14 43 5E 16 BC DB 72 06 4F 7F BF B8 6A01: 16 82 17 59 5E 66 62 E3 16 0B BC 96 96 DB 72 C1 6A11: C0 96 A5 39 17 FF 9F 56 13 F4 72 D5 60 7B 14 54 6A21: 8B 9B 6C 7E 74 4B 5E 96 96 DB 72 0E D0 03 8A 07 6A31: 4F 16 BC B0 D0 FB C0 18 67 48 5E 36 60 84 14 4F 6A41: A1 51 18 55 2E 00 ; YOU_ARE_IN_A_LONG,_NARROW_CORRIDOR_STRETCHING_OUT_OF_SIGHT_TO___ ; THE_WEST.__AT_THE_EASTERN_END_IS_A_HOLE_THROUGH_WHICH_YOU_CAN___ ; SEE_A_PROFUSION_OF_LEAVES. PS_2E: ; RM_4D_PROFUSION_OF_LEAVES 6A47: 33 C7 DE 94 14 4B 5E 83 96 49 16 CE 98 8B 16 79 6A57: B3 C5 CE BC A0 09 79 95 AF EF BF 9A BD 91 7A C7 6A67: 16 11 BC 95 64 7A 79 16 BC BB 9C 82 17 59 5E 66 6A77: 62 3B F4 73 49 5F BE 23 15 FF B9 C3 B2 8E 61 D5 6A87: 15 7B 14 7E 74 56 5E F9 74 7A C4 FA 17 DA 78 51 6A97: 18 45 C2 83 48 55 13 1B 60 52 45 F8 B2 5B C6 03 6AA7: A0 C3 9E E3 8B 75 CA 2E 00 ; YOU_ARE_IN_THE_CHAMBER_OF_OSIRIS._THE_CEILING_IS_TOO_HIGH_UP_FOR ; YOUR_LAMP_TO_SHOW_IT.__PASSAGES_LEAD_EAST,_NORTH,_AND_SOUTH. PS_2F: ; RM_47_CHAMBER_OF_OSIRIS 6AB0: 29 C7 DE 94 14 4B 5E 96 96 DB 72 1B 54 AF 91 91 6AC0: AF 91 64 54 B8 6F 7B 82 17 45 5E CE 60 91 7A D5 6AD0: 15 89 17 CA 9C 7A 79 B2 17 59 15 91 B4 23 C6 4F 6AE0: 8B 16 A3 D5 9C 89 74 D6 15 3B F4 55 A4 09 B7 4B 6AF0: 62 E3 8B 07 58 66 49 10 EE BE A0 73 76 8E 48 61 6B00: 17 82 C6 2E 00 ; THE_PASSAGE_HERE_IS_BLOCKED_BY_A_FALLEN_BLOCK. PS_30: ; RM_46_BLOCKED_FALLEN_BLOCK 6B05: 0F 5F BE DB 16 D3 B9 9B 6C F4 72 4B 5E C4 B5 75 6B15: 8D A6 85 C3 14 7B 14 CE 65 F0 8B B6 14 5D 9E 2E 6B25: 00 ; YOU_ARE_IN_THE_CHAMBER_OF_NEKHEBET,_A_WOMAN_WITH_THE_HEAD_OF_A__ ; VULTURE,_WEARING_THE_CROWN_OF_EGYPT.__A_PASSAGE_EXITS_TO_THE____ ; SOUTH. PS_31: ; RM_44_CHAMBER_OF_NEKHEBET 6B26: 2C C7 DE 94 14 4B 5E 96 96 DB 72 1B 54 AF 91 91 6B36: AF 90 64 1A 61 AF 5F 73 C1 59 45 E3 9F 99 96 82 6B46: 7B 82 17 4A 5E 86 5F B8 16 7B 14 DF 17 4F 8E 7E 6B56: B1 F7 17 33 49 AB 98 5F BE E4 14 80 A1 B8 16 29 6B66: 15 EE DE 3B F4 52 45 65 49 77 47 3A 15 8D 7B 89 6B76: 17 82 17 3B 5E 55 13 36 A1 48 2E 00 ; THERE_IS_A_SHINY_BRASS_LAMP_NEARBY. PS_32: 6B82: 0B 5F BE 5B B1 4B 7B 55 45 90 73 44 DB D5 B0 CE 6B92: B5 72 48 8F 16 2C 49 59 2E 00 ; BRASS_LANTERN PS_33: 6B9C: 04 6B 4F CB B9 50 8B F4 BD 4E 00 ; THERE_IS_A_LAMP_SHINING_NEARBY. PS_34: 6BA7: 0A 5F BE 5B B1 4B 7B 4E 45 72 48 5A 17 93 7A AB 6BB7: 98 63 98 03 B1 2E 00 ; BRASS_LANTERN PS_35: 6BBE: 04 6B 4F CB B9 50 8B F4 BD 4E 00 ; THERE_IS_A_SMALL_STATUE_BOX_DISCARDED_NEARBY. PS_36: 6BC9: 0F 5F BE 5B B1 4B 7B 55 45 8E 91 15 8A 56 BD 1B 6BD9: C4 0A 4F 03 15 53 B7 3F B1 10 58 94 5F 9F 50 00 ; STATUE_BOX PS_37: 6BE9: 03 FB B9 67 C0 B9 14 58 00 ; A_THREE_FOOT_SCEPTER_WITH_AN_ANKH_ON_AN_END_LIES_NEARBY. PS_38: 6BF2: 12 56 45 EF 74 48 5E 46 A0 55 17 EE 61 23 62 56 6C02: D1 03 71 83 96 5A 99 C0 16 90 14 30 15 0E 58 35 6C12: 79 8F 16 2C 49 59 2E 00 ; SCEPTER PS_39: 6C1A: 02 57 B7 3F A7 52 00 ; A_STATUE_OF_THE_BIRD_GOD_IS_SITTING_HERE. PS_3A: 6C21: 0D 55 45 56 BD 1B C4 C3 9E 5F BE B3 14 33 B1 36 6C31: 6E D5 15 5B 17 43 C0 AB 98 F4 72 45 2E 00 ; THERE_IS_A_BIRD_STATUE_IN_THE_BOX. PS_3B: 6C3F: 0B 5F BE 5B B1 4B 7B 44 45 2E 7B 66 17 8F 49 4B 6C4F: 5E 96 96 DB 72 0A 4F 2E 00 ; BIRD_STATUE_IN_BOX PS_3C: 6C58: 06 14 4E 15 58 56 BD 1B C4 83 7A 0A 4F 00 ; A_SMALL_VELVET_PILLOW_LIES_ON_THE_FLOOR. PS_3D: 6C66: 0D 55 45 8E 91 18 8A 50 61 73 62 8E A5 89 8D 43 6C76: 16 4B 62 03 A0 5F BE 56 15 44 A0 2E 00 ; VELVET_PILLOW PS_3E: 6C83: 04 6E CA 76 CA E3 16 09 8D 57 00 ; A_HUGE_GREEN_FIERCE_SERPENT_BARS_THE_WAY! PS_3F: 6C8E: 0D 4A 45 77 C4 84 15 30 60 53 15 2D 62 55 5E 3A 6C9E: 62 9E 61 AB 14 8B B3 5F BE F3 17 59 21 00 ; A_STONE_BRIDGE_NOW_SPANS_THE_BOTTOMLESS_PIT. PS_40: 6CAC: 0E 55 45 80 BF 44 5E 06 B2 9B 6C 09 9A 62 17 9D 6CBC: 48 82 17 44 5E 0E A1 EE 9F 65 62 E3 16 54 2E 00 ; THERE_IS_A_SARCOPHAGUS_HERE_WITH_IT'S_COVER_TIGHTLY_CLOSED. PS_41: 6CCC: 13 5F BE 5B B1 4B 7B 55 45 2D 49 62 A0 87 47 CA 6CDC: B5 2F 62 FB 17 53 BE 75 7B C5 B5 4F A1 96 AF 7A 6CEC: 79 13 BF DE 14 D7 A0 44 2E 00 ; SARCOPHAGUS_>GROAN< PS_42: 6CF6: 06 14 B7 42 55 49 72 4B C6 84 2E 10 9E 3C 00 ; THERE_ARE_A_FEW_RECENT_ISSUES_OF_"EGYPTIAN_WEEKLY"_MAGAZINE_HERE PS_43: 6D05: 15 5F BE 5B B1 2F 49 7B 14 79 66 2F 17 B0 53 0B 6D15: BC E7 B9 4B 62 C3 9E 69 1B EE DE 90 78 F7 17 1E 6D25: 61 63 DB 89 91 73 4A 5B 98 F4 72 45 00 ; "EGYPTIAN_WEEKLY" PS_44: 6D32: 05 69 1B EE DE 90 78 F7 17 1E 61 59 22 00 ; THERE_IS_FOOD_HERE. PS_45: 6D40: 06 5F BE 5B B1 4B 7B 01 68 0A 58 2F 62 2E 00 ; TASTY_FOOD PS_46: 6D4F: 03 55 BD FB C0 01 68 44 00 ; THERE_IS_A_BOTTLE_HERE. PS_47: 6D58: 07 5F BE 5B B1 4B 7B 44 45 0E A1 DB 8B F4 72 45 6D68: 2E 00 ; SMALL_BOTTLE PS_48: 6D6A: 04 E3 B8 F3 8C 06 4F FF BE 00 ; THERE_IS_WATER_IN_THE_BOTTLE. PS_49: 6D74: 09 5F BE 5B B1 4B 7B 16 D0 23 62 83 7A 5F BE B9 6D84: 14 46 C0 45 2E 00 ; WATER_IN_THE_BOTTLE PS_4A: 6D8A: 06 16 D0 23 62 83 7A 5F BE B9 14 46 C0 45 00 ; THERE_IS_A_TINY_PLANT_IN_THE_PIT,_MURMURING_"WATER,_WATER,_..." PS_4B: 6D99: 15 5F BE 5B B1 4B 7B 56 45 A3 7A E6 16 9E 48 D0 6DA9: 15 82 17 52 5E 96 7B 77 16 B7 B2 10 B2 BC 6A 16 6DB9: D0 46 62 F3 17 F4 BD 1F EE DC F9 00 ; THERE_IS_A_TWELVE_FOOT_BEAN_STALK_STRETCHING_UP_OUT_OF_THE_PIT,_ ; BELLOWING_"WATER..._WATER..." PS_4C: 6DC5: 1F 5F BE 5B B1 4B 7B 56 45 AE D0 5B CA 01 68 04 6DD5: BC 90 5F 66 17 45 48 66 17 76 B1 23 54 AB 98 D3 6DE5: C5 36 A1 B8 16 82 17 52 5E 96 7B AF 14 09 8D 50 6DF5: D1 BC 6A 16 D0 47 62 DB F9 16 D0 47 62 DC F9 00 ; THERE_IS_A_GIGANTIC_BEAN_STALK_STRETCHING_ALL_THE_WAY_UP_TO_THE_ ; HOLE. PS_4D: 6E05: 17 5F BE 5B B1 4B 7B 49 45 73 79 C3 9A C4 51 90 6E15: 5F 66 17 45 48 66 17 76 B1 23 54 AB 98 46 48 82 6E25: 17 59 5E 3B 4A D3 C5 6B BF 5F BE A9 15 FF 8B 00 ; THERE_IS_A_MASSIVE_VENDING_MACHINE_HERE.__THE_INSTRUCTIONS_ON_IT ; READ-_"DROP_COINS_HERE_TO_RECIEVE_FRESH_BATTERIES". PS_4E: 6E35: 26 5F BE 5B B1 4B 7B 4F 45 65 49 CF 7B CF 17 43 6E45: 98 AB 98 85 91 90 73 4A 5E 2F 62 3B F4 5F BE D0 6E55: 15 0C BA E6 C3 C0 7A D1 B5 8B 96 EF BF 15 47 6E 6E65: 13 02 B3 E1 14 9D 7A 9F 15 5B B1 6B BF 65 B1 38 6E75: 79 48 5E 75 B1 04 71 8E 49 33 62 4C 62 2E 00 ; THERE_ARE_FRESH_BATTERIES_HERE. PS_4F: 6E84: 0A 5F BE 5B B1 2F 49 5C 15 5A 62 AB 14 3F C0 07 6E94: B2 CA B5 2F 62 2E 00 ; BATTERIES PS_50: 6E9B: 03 D6 4C F4 BD 35 79 00 ; SOME_WORN-OUT_BATTERIES_HAVE_BEEN_DISCARDED_NEARBY. PS_51: 6EA3: 11 3F B9 59 5E B8 A0 47 EB 04 BC 8E 49 33 62 4B 6EB3: 62 58 72 44 5E 30 60 03 15 53 B7 3F B1 10 58 94 6EC3: 5F 9F 50 00 ; BATTERIES PS_52: 6EC7: 03 D6 4C F4 BD 35 79 00 ; THERE_IS_A_LARGE_SPARKLING_NUGGET_OF_GOLD_HERE! PS_53: 6ECF: 0F 5F BE 5B B1 4B 7B 4E 45 31 49 55 5E 54 A4 C3 6EDF: 86 AB 98 E9 9A B6 6C B8 16 81 15 B3 8B F4 72 45 6EEF: 21 00 ; LARGE_GOLD_NUGGET PS_54: 6EF1: 05 54 8B 9B 6C 3E 6E 10 58 79 C4 45 54 00 ; THERE_ARE_DIAMONDS_HERE! PS_55: 6EFF: 08 5F BE 5B B1 2F 49 03 15 71 48 4D 98 9F 15 59 6F0F: B1 00 ; SEVERAL_DIAMONDS PS_56: 6F11: 05 B8 B7 2B 62 06 8A 8F 78 0E A0 53 00 ; THERE_ARE_BARS_OF_SILVER_HERE! PS_57: 6F1E: 0A 5F BE 5B B1 2F 49 AB 14 8B B3 C3 9E 4E B8 74 6F2E: CA 9F 15 59 B1 00 ; SILVER_BARS PS_58: 6F34: 03 4E B8 74 CA AB 14 52 53 00 ; THERE_IS_PRECIOUS_JEWELRY_HERE! PS_59: 6F3E: 0A 5F BE 5B B1 4B 7B EF A6 51 54 4B C6 79 7F 4C 6F4E: 61 4A DB 2F 62 21 00 ; PRECIOUS_JEWELRY PS_5A: 6F55: 05 EF A6 51 54 4B C6 79 7F 4C 61 59 00 ; THERE_ARE_MANY_COINS_HERE! PS_5B: 6F62: 08 5F BE 5B B1 2F 49 63 16 7B 9B 3B 55 8B 9A F4 6F72: 72 45 21 00 ; RARE_COINS PS_5C: 6F76: 03 D4 B0 45 5E 50 9F 53 00 ; THE_PHARAOH'S_TREASURE_CHEST_IS_HERE! PS_5D: 6F7F: 0C 5F BE E2 16 2B 49 15 9F D6 B5 63 B1 34 BA 45 6F8F: 5E F5 72 0B BC CA B5 2F 62 21 00 ; TREASURE_CHEST PS_5E: 6F9A: 04 EF BF 67 49 5B B1 1F 54 53 54 00 ; THERE_IS_A_LARGE_NEST_HERE,_FULL_OF_GOLDEN_EGGS! PS_5F: 6FA6: 10 5F BE 5B B1 4B 7B 4E 45 31 49 50 5E 66 62 9F 6FB6: 15 7E B1 5F 15 F3 8C C3 9E 3E 6E F0 59 29 15 C9 6FC6: 6E 00 ; GOLDEN_EGGS PS_60: 6FC8: 03 3E 6E F0 59 29 15 47 53 00 ; THERE_IS_A_JEWEL-ENCRUSTED_KEY_HERE! PS_61: 6FD2: 0C 5F BE 5B B1 4B 7B 4C 45 F7 62 57 8F 24 98 66 6FE2: C6 F3 5F BB 85 9F 15 59 B1 00 ; JEWELED_KEY PS_62: 6FEC: 03 79 7F 3F 61 0D 58 45 59 00 ; THERE_IS_A_DELICATE,_PRECIOUS,_VASE_HERE! PS_63: 6FF6: 0D 5F BE 5B B1 4B 7B 46 45 43 61 16 53 B3 63 EF 7006: A6 51 54 6E C6 CB 17 9B B7 F4 72 45 21 00 ; VASE PS_64: 7014: 01 D5 C9 45 00 ; THE_VASE_IS_NOW_RESTING,_DELICATELY,_ON_A_VELVET_PILLOW. PS_65: 7019: 12 5F BE CB 17 9B B7 4B 7B 09 9A 2F 17 03 BA CE 7029: 98 FF 14 85 8C 7F 49 1E 8F C0 16 7B 14 6E CA 76 7039: CA E3 16 09 8D 57 2E 00 ; THE_FLOOR_IS_LITTERED_WITH_WORTHLESS_SHARDS_OF_POTTERY. PS_66: 7041: 12 5F BE 56 15 44 A0 D5 15 43 16 3F C0 66 B1 FB 7051: 17 53 BE 44 D2 66 BE 65 62 5A 17 2E 49 D1 B5 92 7061: 64 0E A1 43 62 2E 00 ; THERE_IS_AN_EMERALD_HERE_THE_SIZE_OF_A_PLOVER'S_EGG! PS_67: 7068: 11 5F BE 5B B1 4B 7B 83 48 67 61 CE B0 0A 58 2F 7078: 62 82 17 55 5E 6F 7C B8 16 7B 14 09 A6 74 CA CB 7088: 23 79 60 21 00 ; EGG-SIZED_EMERALD PS_68: 708D: 05 79 60 DB EB 66 E3 2F 15 2B 62 4C 44 00 ; OFF_TO_ONE_SIDE_LIES_A_GLISTENING_PEARL! PS_69: 709B: 0D D0 9E 89 17 C0 16 55 5E FF 78 43 16 4B 62 49 70AB: 45 95 8C F0 BD 91 7A DF 16 36 49 21 00 ; GLISTENING_PEARL PS_6A: 70B8: 05 C3 6D FF B9 10 99 D2 6A 94 5F 4C 00 ; YOU_ARE_AT_THE_BOTTOM_OF_THE_PIT_WITH_A_BROKEN_NECK. PS_6B: 70C5: 11 C7 DE 94 14 43 5E 16 BC DB 72 06 4F 7F BF B8 70D5: 16 82 17 52 5E 73 7B 56 D1 03 71 BC 14 97 9F 90 70E5: 96 DD 5F 2E 00 ; THE_CRACK_IS_FAR_TOO_SMALL_FOR_YOU_TO_FOLLOW. PS_6C: 70EA: 0F 5F BE E4 14 DD 46 D5 15 4B 15 96 AF 2B A0 E3 70FA: B8 F3 8C 04 68 51 18 56 C2 C8 9C C6 9F 8F A1 00 ; THE_DOME_IS_UNCLIMBABLE. PS_6D: 710A: 08 5F BE 09 15 1B 92 4B 7B 8D C5 8F 8C C4 4C FF 711A: 8B 00 ; I_RESPECTFULLY_SUGGEST_YOU_GO_ACROSS_THE_BRIDGE_INSTEAD_OF______ ; JUMPING. PS_6E: 711C: 18 54 77 62 62 E6 5F EE 68 FB 8E 29 BA B5 6C 1B 712C: BC 1B A1 2B 6E E4 46 E5 A0 82 17 44 5E 06 B2 9B 713C: 6C 9D 7A E3 BD 11 58 7B 64 3B 13 FF 15 E3 93 CF 714C: 98 00 ; YOU_DIDN'T_MAKE_IT. PS_6F: 714E: 06 C7 DE 03 15 45 5B 0F BC 17 48 D6 15 2E 00 ; THERE_IS_NO_WAY_ACROSS_THE_BOTTOMLESS_PIT. PS_70: 715D: 0E 5F BE 5B B1 4B 7B EB 99 1B D0 85 14 05 B3 D6 716D: B5 DB 72 06 4F 7F BF F5 8B D2 B5 97 7B 00 ; YOU_CAN'T_GET_BY_THE_SERPENT. PS_71: 717B: 09 C7 DE D3 14 E6 96 77 15 04 BC 56 DB DB 72 B4 718B: B7 F0 A4 54 2E 00 ; YOU_HAVE_CRAWLED_THROUGH_A_VERY_LOW_WIDE_PASSAGE_PARALLEL_TO_AND ; NORTH_OF_THE_HALL_OF_GODS. PS_72: 7191: 1E C7 DE 9B 15 5B CA AB 55 BF D1 16 58 F9 74 7A 71A1: C4 7B 14 74 CA 4E DB 6B A1 46 D1 52 5E 65 49 77 71B1: 47 DB 16 CE B0 EE 8B 89 17 90 14 59 5B C2 B3 B8 71C1: 16 82 17 4A 5E 46 48 B8 16 81 15 2F 5C 00 ; YOU_DON'T_FIT_THROUGH_TWO-INCH_SLIT! PS_73: 71CF: 0C C7 DE 09 15 E6 96 53 15 16 BC F9 74 7A C4 91 71DF: 17 1B A2 1A 98 5E 17 71 7B 00 ; YOU_HAVE_CRAWLED_AROUND_IN_SOME_LITTLE_HOLES_AND_WOUND_UP_BACK__ ; IN_THE_MAIN_PASSAGE. PS_74: 71E9: 1C C7 DE 9B 15 5B CA AB 55 BF D1 03 58 07 B3 33 71F9: 98 83 7A 3F B9 4E 5E 8E 7B DB 8B 7E 74 4B 62 8E 7209: 48 01 18 8E C5 B2 17 AB 14 8B 54 D0 15 82 17 4F 7219: 5E D0 47 DB 16 D3 B9 BF 6C 00 ; YOU_HAVE_CRAWLED_AROUND_IN_SOME_LITTLE_HOLES_AND_FOUND_YOUR_WAY_ ; BLOCKED_BY_A_FALLEN_SLAB.__YOU_ARE_NOW_BACK_IN_THE_MAIN_PASSAGE. PS_75: 7223: 2A C7 DE 9B 15 5B CA AB 55 BF D1 03 58 07 B3 33 7233: 98 83 7A 3F B9 4E 5E 8E 7B DB 8B 7E 74 4B 62 8E 7243: 48 59 15 8E C5 51 18 23 C6 1B D0 B6 14 5D 9E F3 7253: 5F 7B 50 48 45 46 48 83 61 BB B8 1B 51 51 18 43 7263: C2 5B B1 09 9A AB 14 8B 54 83 7A 5F BE 63 16 83 7273: 7A 55 A4 09 B7 45 2E 00 ; YOU_CAN'T_FIT_THIS_BIG_SARCOPHAGUS_THROUGH_THAT_LITTLE_PASSAGE! PS_76: 727B: 15 C7 DE D3 14 E6 96 53 15 16 BC 95 73 B3 14 D5 728B: 6A 2D 49 62 A0 87 47 D6 B5 F9 74 7A C4 82 17 73 729B: 49 96 8C FF BE DB 16 D3 B9 99 6C 00 ; SOMETHING_YOU'RE_CARRYING_WON'T_FIT_THROUGH_THE_TUNNEL_WITH_YOU. ; YOU'D_BEST_TAKE_INVENTORY_AND_DROP_SOMETHING. PS_77: 72A7: 24 3F B9 82 62 91 7A 51 18 A4 C2 45 5E 3C 49 D0 72B7: DD D9 6A 05 A0 08 BC 73 7B 6C BE 29 A1 16 71 DB 72C7: 72 70 C0 6E 98 FB 17 53 BE C7 DE 51 F9 96 C2 AF 72D7: 14 F3 B9 4D BD 4B 5E 0F 9B C9 9A 7B B4 8E 48 0C 72E7: 15 53 A0 3F B9 82 62 91 7A 2E 00 ; YOU_CLAMBER_UP_THE_PLANT_AND_SCURRY_THROUGH_THE_HOLE_AT_THE_TOP. PS_78: 72F2: 15 C7 DE DE 14 64 48 23 62 D3 C5 5F BE E6 16 9E 7302: 48 90 14 15 58 34 56 7B B4 6C BE 29 A1 16 71 DB 7312: 72 7E 74 43 5E 16 BC DB 72 82 BF 2E 00 ; YOU'VE_CLIMBED_UP_THE_PLANT_AND_OUT_OF_THE_PIT. PS_79: 731F: 0F C7 DE 4F 24 DE 14 64 7A F3 5F D3 C5 5F BE E6 732F: 16 9E 48 90 14 11 58 73 C6 C3 9E 5F BE E3 16 54 733F: 2E 00 ; THERE_IS_NO_WAY_FOR_YOU_TO_GO_THAT_DIRECTION. PS_7A: 7341: 0F 5F BE 5B B1 4B 7B EB 99 1B D0 59 15 9B AF 1B 7351: A1 6B BF 2B 6E 5B BE 06 BC 2F 7B 03 56 27 A0 00 ; I_DON'T_KNOW_IN_FROM_OUT_HERE.__USE_COMPASS_POINTS. PS_7B: 7361: 11 46 77 05 A0 0D BC 09 9A D0 15 5C 15 DB 9F 36 7371: A1 9F 15 7F B1 57 13 9B B7 3F 55 55 A4 D2 B5 50 7381: 9F 2F C0 00 ; I_AM_UNSURE_HOW_YOU_ARE_FACING.__USE_COMPASS_POINTS. PS_7C: 7385: 11 43 77 57 90 A7 9A 5B B1 89 74 51 18 43 C2 5B 7395: B1 C5 65 91 7A 3B F4 57 C6 E1 14 DB 93 CB B9 7B 73A5: A6 CD 9A 2E 00 ; NOTHING_HAPPENS. PS_7D: 73AA: 05 06 9A 90 73 CA 6A EA 48 9D 61 2E 00 ; I_DON'T_KNOW_HOW. PS_7E: 73B7: 05 46 77 05 A0 0D BC 09 9A A9 15 57 2E 00 ; I_DON'T_KNOW_HOW_TO_APPLY_THAT_WORD_HERE. PS_7F: 73C5: 0D 46 77 05 A0 0D BC 09 9A A9 15 D6 CE C3 9C A6 73D5: A6 56 DB 56 72 01 18 33 B1 F4 72 45 2E 00 ; YOUR_LAMP_IS_NOW_ON. PS_80: 73E3: 06 C7 DE 8E AF 72 48 D5 15 99 16 D1 CE 4E 2E 00 ; YOU_HAVE_NO_SOURCE_OF_LIGHT. PS_81: 73F3: 09 C7 DE 9B 15 5B CA EB 99 47 B9 17 B1 B8 16 43 7403: 16 2E 6D 2E 00 ; YOUR_LAMP_IS_NOW_OFF. PS_82: 7408: 07 C7 DE 8E AF 72 48 D5 15 99 16 D1 CE A7 66 00 ; I'M_AS_CONFUSED_AS_YOU_ARE. PS_83: 7418: 09 9F 77 95 14 E1 14 9F 98 A6 B7 95 14 51 18 43 7428: C2 7F B1 00 ; I_CAN_ONLY_TELL_YOU_WHAT_YOU_SEE_AS_YOU_MOVE_ABOUT_AND__________ ; MANIPULATE_THINGS.__I_CAN_NOT_TELL_YOU_WHERE_REMOTE_THINGS_ARE. PS_84: 742C: 2A 45 77 83 48 16 A0 56 DB 46 61 51 18 59 C2 56 743C: 72 51 18 55 C2 1B 60 4B 49 C7 DE 71 16 5B CA B9 744C: 46 73 C6 8E 48 3B 13 3B 13 3B 13 63 16 12 99 3B 745C: C5 DB BD 63 BE C5 98 3B F4 45 77 83 48 06 9A 7F 746C: 17 F3 8C C7 DE FA 17 2F 62 2F 17 C6 93 56 5E 90 747C: 73 CB 6E 2F 49 2E 00 ; OK_ PS_85: 7483: 01 8B 9F 00 ; SORRY,_BUT_I_NO_LONGER_SEEM_TO_REMEMBER_HOW_IT_WAS_YOU_GOT_HERE. PS_86: 7487: 15 44 B9 9E B4 BF 14 0B BC 99 16 49 16 B7 98 95 7497: AF 2F 60 89 17 2F 17 2F 92 74 4D A9 15 CB CE 19 74A7: BC 4B 49 C7 DE 81 15 0A BC 2F 62 2E 00 ; YOU_ARE_ALREADY_CARRYING_IT. PS_87: 74B4: 09 C7 DE 94 14 43 5E EF 8D 13 47 D3 14 83 B3 91 74C4: 7A D6 15 2E 00 ; YOU_CAN'T_CARRY_ANYTHING_MORE.__YOU'LL_HAVE_TO_DROP_SOMETHING___ ; FIRST. PS_88: 74C9: 17 C7 DE D3 14 E6 96 D3 14 83 B3 90 14 82 DF 91 74D9: 7A 71 16 7F B1 5B 13 1D A1 F3 8C 58 72 56 5E C6 74E9: 9C 02 B3 61 17 36 92 90 73 BB 6A 53 15 A6 B3 2E 74F9: 00 ; YOU'RE_NOT_CARRYING_ANYTHING. PS_89: 74FA: 09 C7 DE AF 23 99 16 05 BC 3C 49 D0 DD C3 6A 96 750A: 9B 90 73 47 2E 00 ; YOU_ARE_CURRENTLY_HOLDING_THE_FOLLOWING: PS_8A: 7510: 0D C7 DE 94 14 45 5E 3C C6 9E 61 FB 8E 7E 74 90 7520: 5A D6 6A DB 72 FE 67 89 8D 91 7A 3A 00 ; DON'T_BE_RIDICULOUS! PS_8B: 752D: 06 80 5B F3 23 5B 4D 06 B2 E7 78 87 8D 53 21 00 ; YOUR_BOTTLE_IS_EMPTY_AND_THE_GROUND_IS_WET. PS_8C: 753D: 0E C7 DE 84 AF 0E A1 DB 8B 4B 7B 72 61 FB C0 8E 754D: 48 82 17 49 5E 07 B3 33 98 4B 7B B6 D0 2E 00 ; YOU_CAN'T_POUR_THAT. PS_8D: 755C: 06 C7 DE D3 14 E6 96 E9 16 23 C6 5B BE 54 2E 00 ; RUBBING_THE_ELECTRIC_LAMP_IS_NOT_PARTICULARLY_REWARDING.________ ; ANYWAY,_NOTHING_EXCITING_HAPPENS. PS_8E: 756C: 20 E4 B3 10 4E D6 6A DB 72 3F 61 0C 56 CB 78 4F 757C: 8B 0B A3 D0 B5 F3 A0 54 A4 85 BE 3B C5 93 B2 2F 758C: 17 14 D0 90 5A 5B 70 3B 13 3B 13 90 14 F3 DF B3 759C: E0 06 9A 90 73 C7 6A 9B D6 90 BE CA 6A EA 48 9D 75AC: 61 2E 00 ; PECULIAR.__NOTHING_UNEXPECTED_HAPPENS. PS_8F: 75AF: 0C E5 A4 43 C5 47 49 50 13 02 A1 91 7A B0 17 2A 75BF: 63 E6 5F F3 5F 52 72 F0 A4 53 2E 00 ; THERE_IS_NOTHING_HERE_WITH_WHICH_TO_FILL_THE_BOTTLE. PS_90: 75CB: 11 5F BE 5B B1 4B 7B 06 9A 90 73 CA 6A 2F 62 FB 75DB: 17 53 BE 23 D1 13 54 6B BF 0E 67 16 8A DB 72 06 75EB: 4F FF BE 2E 00 ; THE_BOTTLE_IS_NOW_EMPTY. PS_91: 75F0: 08 5F BE B9 14 46 C0 4B 5E D0 B5 6B A1 72 61 1F 7600: C1 00 ; YOU_CAN'T_FILL_THAT. PS_92: 7602: 06 C7 DE D3 14 E6 96 53 15 F3 8C 5B BE 54 2E 00 ; A_GLISTENING_PEARL_FALLS_OUT_OF_THE_SARCOPHAGUS_AND_ROLLS_AWAY._ ; THE_SARCOPHAGUS_SNAPS_SHUT_AGAIN. PS_93: 7612: 20 49 45 95 8C F0 BD 91 7A DF 16 36 49 4B 15 0D 7622: 8D C7 16 11 BC 96 64 DB 72 14 B7 42 55 49 72 4B 7632: C6 8E 48 39 17 0D 8D 99 14 5F 4A 82 17 55 5E 2D 7642: 49 62 A0 87 47 D5 B5 D2 97 D5 B5 76 75 89 14 D0 7652: 47 2E 00 ; I'D_ADVISE_YOU_TO_PUT_DOWN_THE_SARCOPHAGUS_BEFORE_OPENING_IT!! PS_94: 7655: 14 96 77 86 14 15 CB 5B 5E 1B A1 6B BF 76 A7 09 7665: 15 03 D2 5F BE 53 17 21 B1 5B A5 35 6F AF 14 04 7675: 68 51 5E F0 A4 91 7A D6 15 21 21 00 ; THE_SARCOPHAGUS_CREAKS_OPEN,_REVEALING_NOTHING_INSIDE.__IT______ ; PROMPTLY_SNAPS_SHUT_AGAIN. PS_95: 7681: 1E 5F BE 53 17 21 B1 5B A5 35 6F E4 14 8D 5F D1 7691: B5 F0 A4 14 EE CF 62 43 48 AB 98 06 9A 90 73 CB 76A1: 6A 9B 9A FF 59 4B 13 FB BB 3B 13 EC 16 F2 9F 13 76B1: BF 60 17 ED 48 5A 17 73 C6 73 47 A7 7A 00 ; YOU_DON'T_HAVE_ANYTHING_STRONG_ENOUGH_TO_OPEN_THE_SARCOPHAGUS. PS_96: 76BF: 14 C7 DE 09 15 E6 96 9B 15 5B CA A3 48 63 BE AB 76CF: 98 0C BA 11 A0 30 15 29 A1 16 71 D1 9C F0 A4 82 76DF: 17 55 5E 2D 49 62 A0 87 47 53 2E 00 ; I_DON'T_KNOW_HOW_TO_LOCK_OR_UNLOCK_SUCH_A_THING. PS_97: 76EB: 10 46 77 05 A0 0D BC 09 9A A9 15 D6 CE CE 9C 5D 76FB: 9E C4 16 B0 17 75 8D D5 83 DA C3 7B 14 63 BE CF 770B: 98 00 ; THE_BIRD_STATUE_IS_NOW_DEAD.__ITS_BODY_DISAPPEARS. PS_98: 770D: 10 5F BE B3 14 33 B1 FB B9 67 C0 D5 15 99 16 C6 771D: CE 86 5F 3B F4 8D 7B B9 14 FB 5C 95 5A EA 48 94 772D: 5F 53 2E 00 ; THE_STONE_IS_VERY_STRONG_AND_IS_IMPERVIOUS_TO_ATTACK. PS_99: 7731: 11 5F BE 66 17 0F A0 D5 15 CF 17 7B B4 0C BA 11 7741: A0 90 14 0B 58 CB B5 DF 93 13 B4 35 A1 89 17 96 7751: 14 45 BD 4B 2E 00 ; ATTACKING_THE_SERPENT_BOTH_DOESN'T_WORK_AND_IS_VERY_DANGEROUS. PS_9A: 7757: 14 8E 49 DD 46 91 7A 82 17 55 5E 3A 62 9E 61 B9 7767: 14 53 BE 77 5B 05 B9 19 BC B5 A0 90 14 0B 58 D8 7777: B5 43 62 FB 14 B7 98 07 B3 53 2E 00 ; YOU_CAN'T_BE_SERIOUS! PS_9B: 7783: 07 C7 DE D3 14 E6 96 AF 14 57 17 11 B2 49 C6 00 ; IT_IS_BEYOND_YOUR_POWER_TO_DO_THAT. PS_9C: 7793: 0B 73 7B 4B 7B 7B 4D 0E A0 51 18 23 C6 89 A6 23 77A3: 62 6B BF 6B 5B 5B BE 54 2E 00 ; THANK_YOU,_IT_WAS_DELICIOUS! PS_9D: 77AD: 09 5B BE 4B 99 C7 DE 0B EE 19 BC 4B 49 EE 59 DB 77BD: 78 35 A1 21 00 ; I_THINK_I_JUST_LOST_MY_APPETITE. PS_9E: 77C2: 0A 56 77 90 73 CB 83 FF 15 F3 B9 85 8D 0F BC 43 77D2: DB 9F A6 96 BE 45 2E 00 ; YOU_HAVE_TAKEN_A_DRINK_FROM_THE_STREAM.__THE_WATER_TASTES_______ ; STRONGLY_OF_MINERALS,_BUT_IS_NOT_UNPLEASANT.__IT_IS_EXTREMELY___ ; COLD. PS_9F: 77DA: 2C C7 DE 9B 15 5B CA 4D BD 83 61 46 45 10 B2 C8 77EA: 83 FF B2 82 17 55 5E EF BF 7F 48 56 13 DB 72 16 77FA: D0 23 62 55 BD F5 BD 3B 13 3B 13 66 17 00 B3 D3 780A: 6D B8 16 6B 16 74 98 4D 48 04 EE 73 C6 4B 7B 06 781A: 9A B0 17 FF A5 53 49 D7 9A 4B 13 0B BC C7 B5 4C 782A: D9 67 61 FB 8E 45 13 BE 9F 2E 00 ; IT'S_NOT_HUNGRY.__BESIDES,_YOU_HAVE_NO_BIRD_SEED. PS_A0: 7835: 10 75 7B D0 B5 F3 A0 70 75 C3 6E 3B F4 75 4D FF 7845: 78 33 BB C7 DE 9B 15 5B CA EB 99 14 4E 15 58 26 7855: 60 2E 00 ; YOU_FELL_INTO_A_PIT_AND_BROKE_EVERY_BONE_IN_YOUR_BODY. PS_A1: 7858: 12 C7 DE 4F 15 F3 8C 9E 7A C3 9C E3 16 03 BC 33 7868: 98 79 4F 9B 85 CF 62 7B B4 00 4F 4B 5E 9B 96 34 7878: A1 B9 14 1F 5D 20 00 ; THE_SERPENT_HAS_NOW_DEVOURED_YOUR_BIRD_STATUE. PS_A2: 787F: 0F 5F BE 57 17 1F B3 B3 9A 55 72 99 16 C6 CE D9 788F: 62 2F C6 1B 58 34 A1 B3 14 33 B1 FB B9 67 C0 2E 789F: 00 ; THERE_IS_NOTHING_HERE_IT_WANTS_TO_EAT_-_EXCEPT_PERHAPS_YOU. PS_A3: 78A0: 13 5F BE 5B B1 4B 7B 06 9A 90 73 CA 6A 2F 62 D6 78B0: 15 F3 17 CD 9A 89 17 23 15 1D BC 3A 15 B2 53 12 78C0: BC 32 62 ED 48 51 18 55 2E 00 ; IT_IS_NOW_PITCH_DARK.__IF_YOU_PROCEED,_YOU_WILL_LIKELY_FALL_INTO ; A_PIT. PS_A4: 78CA: 17 73 7B 4B 7B 09 9A E3 16 9A BD FB 14 6F B2 4B 78DA: 13 9B 64 1B A1 F9 A6 A7 53 73 5D C7 DE FB 17 F3 78EA: 8C 8D 8C 53 61 4B 15 F3 8C 9E 7A FB 9D 96 A5 2E 78FA: 00 ; I'M_GAME.__WOULD_YOU_CARE_TO_EXPLAIN_HOW? PS_A5: 78FB: 0D 9F 77 73 15 3F 92 59 13 2E A1 1B 58 1B A1 14 790B: 53 56 5E C7 9C A6 D8 D0 47 A9 15 57 3F 00 ; YOUR_LAMP_IS_GETTING_DIM.__YOU'D_BEST_START_WRAPPING_THIS_UP,___ ; UNLESS_YOU_CAN_FIND_SOME_FRESH_BATTERIES.__I_SEEM_TO_RECALL_____ ; THERE_IS_A_VENDING_MACHINE_IN_THE_MAZE.__BRING_SOME_COINS_WITH__ ; YOU. PS_A6: 7919: 41 C7 DE 8E AF 72 48 D5 15 77 15 43 C0 AB 98 8F 7929: 5A 3B F4 C7 DE 73 21 75 4D 15 BC 54 BD 19 BC D2 7939: B0 90 A5 D6 6A 95 73 B2 17 FB ED B0 17 F5 8B DB 7949: B5 1B A1 10 53 53 15 33 98 3F B9 48 5E 75 B1 04 7959: 71 8E 49 33 62 6F 62 4B 13 57 17 5B 61 6B BF 65 7969: B1 46 48 3B 13 56 13 F4 72 4B 5E C3 B5 CF 17 43 7979: 98 AB 98 85 91 90 73 4B 5E 96 96 DB 72 9C 91 DB 7989: 63 BC 14 91 7A 61 17 1B 92 3B 55 8B 9A 56 D1 FB 7999: 70 C7 DE 2E 00 ; YOUR_LAMP_HAS_RUN_OUT_OF_POWER. PS_A7: 799E: 0A C7 DE 8E AF 72 48 9B 15 D4 B5 83 C5 36 A1 B8 79AE: 16 E9 16 B4 D0 2E 00 ; THE_PLANT_HAS_EXCEPTIONALLY_DEEP_ROOTS_AND_CANNOT_BE_PULLED_____ ; FREE. PS_A8: 79B5: 17 5F BE E6 16 9E 48 9B 15 C7 B5 97 D6 43 A7 0B 79C5: A0 13 8D FF 14 D3 61 01 B3 0B C0 8E 48 D3 14 D9 79D5: 99 04 BC 52 5E 46 C5 F3 5F 3B 13 5C 15 3F 60 00 ; YOUR_LAMP_IS_GETTING_DIM.__I'M_TAKING_THE_LIBERTY_OF_REPLACING__ ; THE_BATTERIES. PS_A9: 79E5: 1A C7 DE 8E AF 72 48 D5 15 77 15 43 C0 AB 98 8F 79F5: 5A 3B F4 9F 77 7B 17 50 86 D6 6A DB 72 84 8C 3E 7A05: 62 51 DB 94 64 E6 61 DB 46 AB 98 82 17 44 5E 8E 7A15: 49 33 62 6F 62 00 ; AS_YOU_APPROACH_THE_STATUE,_IT_COMES_TO_LIFE_AND_FLIES_ACROSS___ ; THE_CHAMBER_WHERE_IT_LANDS_AND_RETURNS_TO_STONE. PS_AA: 7A1B: 25 4B 49 C7 DE 92 14 F9 A6 DA 46 82 17 55 5E 56 7A2B: BD 3E C4 D6 15 E1 14 35 92 89 17 43 16 5B 66 8E 7A3B: 48 56 15 35 79 85 14 05 B3 BB B5 82 17 45 5E 4F 7A4B: 72 74 4D FA 17 2F 62 D6 15 3B 16 4D 98 90 14 14 7A5B: 58 8F 62 DD B2 89 17 66 17 0F A0 2E 00 ; YOU_CAN_LIFT_THE_STATUE,_BUT_YOU_CANNOT_CARRY_IT. PS_AB: 7A68: 10 C7 DE D3 14 8E 96 5E 79 82 17 55 5E 56 BD 3E 7A78: C4 BF 14 1B BC 1B A1 10 53 06 9A D3 14 83 B3 D6 7A88: 15 2E 00 ; YOUR_BOTTLE_IS_ALREADY_FULL. PS_AC: 7A8B: 09 C7 DE 84 AF 0E A1 DB 8B 4B 7B 4C 48 86 5F 48 7A9B: DB 46 C5 2E 00 ; _____SUDDENLY,_A_MUMMY_CREEPS_UP_BEHIND_YOU!!______"I'M_THE_____ ; KEEPER_OF_THE_TOMB",__HE_WAILS,_"I_TAKE_THESE_TREASURES_AND_PUT_ ; THEM_IN_THE_CHEST_DEEP_IN_THE_MAZE!"__HE_GRABS_YOUR_TREASURE_AND ; VANISHES_INTO_THE_GLOOM. PS_AD: 7AA0: 48 3B 13 55 13 FE C3 96 61 B3 E0 4F 45 6F C5 45 7AB0: DB 67 B1 0B A7 D3 C5 6A 4D 8E 7A 51 18 E9 C1 3B 7AC0: 13 3B 13 FD 1B 56 90 DB 72 3B 13 17 16 DF 61 91 7AD0: AF 96 64 DB 72 7F BF C6 4B 4A 13 59 5E CE 47 33 7AE0: BB FB 1B 4D BD 56 5E F5 72 56 5E 63 B1 34 BA 4B 7AF0: 62 8E 48 EF 16 16 BC EF 72 D0 15 82 17 45 5E F5 7B00: 72 06 BC 32 60 D0 15 82 17 4F 5E 6F 4A E3 06 9F 7B10: 15 84 15 BD 46 51 18 23 C6 EF BF 67 49 5B B1 8E 7B20: 48 D0 C9 5A 7B 4B 62 9E 7A D6 9C DB 72 C9 6D FF 7B30: 9F 00 ; THE_STONE_BRIDGE_HAS_RETRACTED! PS_AE: 7B32: 0A 5F BE 66 17 0F A0 BC 14 01 79 4A 5E 4B 49 76 7B42: B1 C5 B0 E6 BD 21 00 ; A_STONE_BRIDGE_NOW_SPANS_THE_BOTTOMLESS_PIT. PS_AF: 7B49: 0E 55 45 80 BF 44 5E 06 B2 9B 6C 09 9A 62 17 9D 7B59: 48 82 17 44 5E 0E A1 EE 9F 65 62 E3 16 54 2E 00 ; THE_VASE_IS_NOW_RESTING,_DELICATELY,_ON_A_VELVET_PILLOW. PS_B0: 7B69: 12 5F BE CB 17 9B B7 4B 7B 09 9A 2F 17 03 BA CE 7B79: 98 FF 14 85 8C 7F 49 1E 8F C0 16 7B 14 6E CA 76 7B89: CA E3 16 09 8D 57 2E 00 ; THE_VASE_DROPS_WITH_A_DELICATE_CRASH. PS_B1: 7B91: 0C 5F BE CB 17 9B B7 F9 5B 0B A7 56 D1 03 71 FF 7BA1: 14 85 8C 7F 49 E4 14 5A 49 2E 00 ; THERE_ARE_NOW_SOME_FRESH_BATTERIES_HERE. PS_B2: 7BAC: 0D 5F BE 5B B1 2F 49 99 16 D5 CE E7 9F 5C 15 5A 7BBC: 62 AB 14 3F C0 07 B2 CA B5 2F 62 2E 00 ; YOU_HAVE_TAKEN_THE_VASE_AND_HURLED_IT_DELICATELY_TO_THE_GROUND. PS_B3: 7BC9: 15 C7 DE 9B 15 5B CA 4D BD 83 61 5F BE CB 17 9B 7BD9: B7 8E 48 AF 15 7F B2 0B 58 06 BC 43 61 16 53 53 7BE9: 61 89 17 82 17 49 5E 07 B3 57 98 00 ; THE_BIRD_STATUE_COMES_TO_LIFE_AND_ATTACKS_THE_SERPENT_AND_IN_AN_ ; ASTOUNDING_FLURRY,_DRIVES_THE_SERPENT_AWAY.__THE_BIRD_TURNS_BACK ; INTO_A_STATUE. PS_B4: 7BF5: 2F 5F BE B3 14 33 B1 FB B9 67 C0 E1 14 35 92 89 7C05: 17 43 16 5B 66 8E 48 96 14 45 BD CB 87 5F BE 57 7C15: 17 1F B3 B3 9A 8E 48 D0 15 90 14 95 14 87 BF 43 7C25: 98 AB 98 8F 67 83 B3 06 EE 18 B2 4B 62 5F BE 57 7C35: 17 1F B3 B3 9A F3 49 DB E0 82 17 44 5E 2E 7B 8F 7C45: 17 DD B2 AB 14 9B 54 C9 9A 7B 14 FB B9 67 C0 2E 7C55: 00 ; THE_PLANT_SPURTS_INTO_FURIOUS_GROWTH_FOR_A_FEW_SECONDS. PS_B5: 7C56: 12 5F BE E6 16 9E 48 62 17 3E C6 CB B5 C9 9A 5F 7C66: 15 11 B2 4B C6 B9 6E 02 D3 59 15 83 AF 4F 15 D5 7C76: CE E1 5F 4D 98 2E 00 ; THE_PLANT_GROWS_EXPLOSIVELY,_ALMOST_FILLING_THE_BOTTOM_OF_THE___ ; PIT. PS_B6: 7C7D: 16 5F BE E6 16 9E 48 84 15 85 A1 3A 15 09 A6 58 7C8D: B8 53 61 03 EE 31 8D F3 B9 0E 67 90 8C D6 6A DB 7C9D: 72 06 4F 7F BF B8 16 82 17 3B 5E E3 16 54 2E 00 ; YOU'VE_OVER-WATERED_THE_PLANT!__IT'S_SHRIVELING_UP! PS_B7: 7CAD: 11 C7 DE 4F 24 C8 16 45 62 16 D0 2F 62 16 58 DB 7CBD: 72 FB A5 B1 9A 4B 13 65 BC 5A 17 18 B2 43 61 AB 7CCD: 98 D1 C5 00 ; THERE_IS_NOTHING_HERE_TO_CLIMB.__USE_UP_OR_OUT_TO_LEAVE_THE_PIT. PS_B8: 7CD1: 15 5F BE 5B B1 4B 7B 06 9A 90 73 CA 6A 2F 62 89 7CE1: 17 DE 14 64 7A 3B F4 57 C6 B2 17 C4 16 C7 16 16 7CF1: BC CE 9C 98 5F 56 5E DB 72 96 A5 2E 00 ; OH_DEAR,_YOU_SEEM_TO_HAVE_GOTTEN_YOURSELF_KILLED.__I_MIGHT_BE___ ; ABLE_TO_HELP_YOU_OUT,_BUT_I'VE_NEVER_REALLY_DONE_THIS_BEFORE.___ ; DO_YOU_WANT_ME_TO_TRY_TO_REINCARNATE_YOU? PS_B9: 7CFE: 38 13 9F E3 59 F3 B4 C7 DE 57 17 5B 61 6B BF 58 7D0E: 72 49 5E 0E A1 83 61 C7 DE 97 B3 03 8C 4E 86 E6 7D1E: 8B 3B F4 4F 77 7A 79 04 BC 3B 5E 84 14 DB 8B 6B 7D2E: BF EE 72 1B A3 1B A1 36 A1 04 EE 73 C6 A8 77 50 7D3E: 5E CF 62 94 AF 8E 5F FB 8E 80 5B 56 5E 95 73 AF 7D4E: 14 04 68 DB 63 46 13 DB 9C 1B A1 10 D0 0F BC 56 7D5E: 5E D6 9C 7B B4 6B BF 6B B1 13 98 CB B2 DB BD C7 7D6E: DE 3F 00 ; YOU_CLUMSY_OAF,_YOU'VE_DONE_IT_AGAIN!__I_DON'T_KNOW_HOW_LONG_I__ ; CAN_KEEP_THIS_UP.__DO_YOU_WANT_ME_TO_TRY_REINCARNATING_YOU______ ; AGAIN? PS_BA: 7D71: 2C C7 DE DE 14 75 C5 51 DB 66 47 51 18 A8 C2 46 7D81: 5E 0F A0 D6 15 89 14 D0 47 BB 06 46 77 05 A0 0D 7D91: BC 09 9A A9 15 CE CE 11 A0 BB 15 D3 14 8D 96 32 7DA1: 60 82 17 4B 7B F7 C5 46 13 DB 9C 1B A1 10 D0 0F 7DB1: BC 56 5E D6 9C 7B B4 6B B1 13 98 CB B2 90 BE DB 7DC1: 6A 1B A1 3B 13 43 13 0B 6C 4E 3F 00 ; I_SEEM_TO_BE_OUT_OF_ORANGE_SMOKE.__HOW_CAN_I_REINCARNATE_YOU____ ; WITHOUT_ORANGE_SMOKE? PS_BB: 7DCD: 1C 55 77 2F 60 89 17 AF 14 C7 16 11 BC 91 64 D0 7DDD: B0 9B 6C F1 B8 BF 85 4A 13 6B A1 10 53 BB 15 6B 7DED: B1 13 98 CB B2 DB BD C7 DE 3B 13 FB 17 69 BE 73 7DFD: C6 AB A0 B7 98 5F 17 97 9F 3F 00 ; ALL_RIGHT.__BUT_DON'T_BLAME_ME_IF_SOMETHING_GOES_WR............. ; ______________________----__POOF_!!__----_______________________ ; YOU_ARE_ENGULFED_IN_A_CLOUD_OF_ORANGE_SMOKE.__COUGHING_AND______ ; GASPING,_YOU_EMERGE_FROM_THE_SMOKE. PS_BC: 7E08: 4B 46 48 33 17 2E 6D 3B F4 F6 4F 09 15 E6 96 B6 7E18: 14 67 48 67 16 C8 15 61 17 36 92 90 73 C9 6A B5 7E28: 9E 04 18 FF F9 FF F9 FF F9 FF F9 3B F4 3B 13 3B 7E38: 13 3B 13 3B 13 3B 13 3B 13 5D 13 2D ED 52 13 38 7E48: A0 E9 12 5D 13 2D ED 3B 13 3B 13 3B 13 3B 13 3B 7E58: 13 3B 13 3B 13 5B 13 1B A1 2F 49 30 15 2E 6F 66 7E68: 66 D0 15 7B 14 C9 54 F3 C3 C3 9E AB A0 B7 98 5F 7E78: 17 97 9F 3B F4 47 55 23 6D AB 98 8E 48 3B 13 3B 7E88: 13 15 6C 90 A5 33 70 C7 DE 2F 15 31 62 48 5E FF 7E98: B2 82 17 55 5E BD 93 45 2E 00 ; OKAY,_NOW_WHERE_DID_I_PUT_MY_ORANGE_SMOKE?..._>POOF!<___________ ; EVERYTHING_DISAPPEARS_IN_A_DENSE_CLOUD_OF_ORANGE_SMOKE. PS_BD: 7EA2: 27 93 9F B3 E0 09 9A FA 17 2F 62 03 15 0B 58 EF 7EB2: 16 0F BC 51 DB D0 B0 9B 6C F1 B8 98 85 FF F9 F2 7EC2: 13 38 A0 33 07 3B 13 3B 13 3B 13 38 15 43 62 63 7ED2: BE AB 98 95 5A EA 48 94 5F CB B5 83 96 FF 14 97 7EE2: 9A DE 14 26 A1 B8 16 C4 16 91 48 55 5E BD 93 45 7EF2: 2E 00 ; READY_CASSETTE PS_BE: 7EF4: 04 63 B1 FB 5C 15 53 B6 B7 54 45 00 ; CHECKSUM_ERROR PS_BF: 7F00: 04 1F 54 A5 54 5B C5 3C 62 4F 52 00 ; OH,_NO!__I_LOST_MY_COMPASS.__I_NO_LONGER_SEEM_TO_KNOW_WHICH_WAY_ ; IS_NORTH! PS_C0: 7F0C: 18 36 9F 99 16 BB 06 4E 77 E6 A0 7B 16 E1 14 DB 7F1C: 93 EF B9 4B 13 99 16 49 16 B7 98 95 AF 2F 60 89 7F2C: 17 20 16 6B A1 23 D1 13 54 1B D0 D5 15 99 16 C2 7F3C: B3 21 00 ; Unused data on the end. TODO see what this might be. 7F3F: 5e bd 93 45 2e 00 27 93 9f b3 7F49: e0 09 9a fa 17 2f 62 03 15 0b 58 ef 16 0f bc 51 7F59: db d0 b0 9b 6c f1 b8 98 85 ff f9 f2 13 38 a0 33 7F69: 07 3b 13 3b 13 3b 13 38 15 43 62 63 be ab 98 95 7F79: 5A EA 48 94 5f cb b5 38