Pyramid (For TRS80 Level 2 ROM)
Start
Start: 4300: 31 BF 47 LD SP,TopOfStack ; Small stack space 4303: 3E 0E LD A,$0E ; Turn on .... 4305: CD 33 00 CALL PrintChar ; ... the cursor 4308: 21 82 47 LD HL,WelcomeMsg ; "WELCOME TO PYRAMID!!" 430B: CD D0 45 CALL PrintPlain ; Print the message 430E: CD EE 45 CALL WaitForKey ; Wait for a key 4311: 3E 01 LD A,$01 ; Starting room is ... 4313: 32 3F 50 LD (currentRoom),A ; ... room 1 4316: CD 45 52 CALL DescribeRoom ; Print room description GameLoop: 4319: 97 SUB A ; A=0 431A: 32 7B 46 LD (inputNoun),A ; Clear noun (object within reach) 431D: 32 7C 46 LD (inputVerb),A ; Clear verb (throw, north, rub, etc) 4320: 32 7D 46 LD (verbGrammar),A ; Grammar type (verb, verb+nounInReach, verb+nounInPack) 4323: CD CF 43 CALL ParseUserInput ; Get user input line and parse 4326: 3A 3F 50 LD A,(currentRoom) ; Room number 4329: 21 88 48 LD HL,RoomTable ; Room descriptors 432C: CD 6B 43 CALL TableOffsetFourBytes; Get 4 bytes for room 432F: 23 INC HL ; Skip over ... 4330: 23 INC HL ; ... to room's script pointer 4331: 7E LD A,(HL) ; Script ... 4332: 23 INC HL ; ... pointer ... 4333: 66 LD H,(HL) ; ... to ... 4334: 6F LD L,A ; ... HL 4335: CD 7D 43 CALL ProcessRoomScript ; Process the room script 4338: C2 4A 43 JP NZ,$434A ; ZF clear ... script was successful. Move on. 433B: 21 B0 59 LD HL,GeneralComScript ; General script 433E: CD 7D 43 CALL ProcessRoomScript ; Process the script 4341: C2 4A 43 JP NZ,$434A ; Process the script 4344: 21 71 74 LD HL,PS_7F ; General fail message (one of 4 that changes) 4347: CD AE 45 CALL PrintPacked ; Print message 434A: CD D9 50 CALL AfterEveryStep ; After every turn 434D: C3 19 43 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. 4350: 21 E7 4F LD HL,ObjectData ; Information about all the objects 4353: CD 61 43 CALL TableOffsetTwoBytes ; Room number to 2-byte table entry 4356: 7E LD A,(HL) ; Upper bit set means 2nd byte is object number 4357: E6 80 AND $80 ; Is this object being carried by another? 4359: 23 INC HL ; Second byte (S is not affected) 435A: 7E LD A,(HL) ; Get location (S is not affected) 435B: C2 50 43 JP NZ,GetObjectInfo ; If this is being carried, recurse to the carrier 435E: 2B DEC HL ; Back to first entry for return 435F: BB CP E ; Room number matches E? 4360: C9 RET TableOffsetTwoBytes: ; HL = HL + (A-1)*2 ; Notice that the first index is "1" -- not "0". 4361: D5 PUSH DE ; Hold DE 4362: EB EX DE,HL ; HL to DE for later add 4363: 6F LD L,A ; LSB ... 4364: 2D DEC L ; ... minus one 4365: 26 00 LD H,$00 ; Upper byte is 0 4367: 29 ADD HL,HL ; Times 2 (2 byte entries) 4368: 19 ADD HL,DE ; Offset into table 4369: D1 POP DE ; Restore DE 436A: C9 RET ; HL = HL + (A-1)*2 TableOffsetFourBytes: ; HL = HL + (A-1)*4 436B: D5 PUSH DE ; Hold DE 436C: EB EX DE,HL ; HL to DE for later add 436D: 6F LD L,A ; LSB ... 436E: 2D DEC L ; ... minus one 436F: 26 00 LD H,$00 ; Upper byte is 0 4371: 29 ADD HL,HL ; Times 2 4372: 29 ADD HL,HL ; Times 4 (4 byte entries) 4373: 19 ADD HL,DE ; Offset into table 4374: D1 POP DE ; Restore DE 4375: 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 4376: CD 50 43 CALL GetObjectInfo ; Find the parent container 4379: 23 INC HL ; Second entry is location 437A: 73 LD (HL),E ; Set the room number of the parent container 437B: 2B DEC HL ; Back to 1st entry 437C: 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: 437D: 7E LD A,(HL) ; Next byte from script 437E: A7 AND A ; Are we at the end? 437F: C8 RET Z ; Yes, we are done. Return ZERO as FAIL. ; 4380: 3A 7C 46 LD A,(inputVerb) ; User's input verb 4383: BE CP (HL) ; Does the input verb match the script verb? 4384: 23 INC HL ; Point to next byte 4385: CA 8F 43 JP Z,$438F ; Yes, dive into this script 4388: 4E LD C,(HL) ; No, get the length of this verb section 4389: 06 00 LD B,$00 ; No script section over 256 bytes! 438B: 09 ADD HL,BC ; Jump to next section 438C: C3 7D 43 JP ProcessRoomScript ; Try next script verb ; 438F: CD 96 43 CALL RunScript ; Run the script 4392: C0 RET NZ ; All the commands passed. Return not ZERO as SUCCESS 4393: C3 7D 43 JP ProcessRoomScript ; In case there are duplicate verbs -- others might succeed
Run Script
RunScript: 4396: E5 PUSH HL ; Hold the script pointer 4397: 4E LD C,(HL) ; Get the length 4398: 06 00 LD B,$00 ; Point past the end ... 439A: 09 ADD HL,BC ; ... of the script 439B: E3 EX (SP),HL ; Now the end of the script is on the stack 439C: 23 INC HL ; Next byte is the command ; RunScriptCommand: 439D: 7E LD A,(HL) ; Get the command number 439E: 23 INC HL ; Next command in the script 439F: E5 PUSH HL ; Hold current pointer 43A0: 21 9F 50 LD HL,ScriptCommands ; Table of script commands 43A3: CD 61 43 CALL TableOffsetTwoBytes ; Offset into table 43A6: 7E LD A,(HL) ; Hold LSB from table 43A7: 23 INC HL ; Get the ... 43A8: 66 LD H,(HL) ; ... msb to H 43A9: 6F LD L,A ; HL now points to the routine to run 43AA: E9 JP (HL) ; Execute command (then to ScriptCommandPASS or FAIL below)
Script Command PASS
When an individual command succeeds, it comes here. If we reached the end of the list (all commands passed) then we return Z=0 PASS. Otherwise, we continue to the next command.
ScriptCommandPASS: 43AB: E1 POP HL ; The current script pointer 43AC: D1 POP DE ; The calculated end of the script 43AD: 7C LD A,H ; Are we at the ... 43AE: BA CP D ; ... end of the script (LSB)? 43AF: C2 BA 43 JP NZ,$43BA ; No ... keep going 43B2: 7D LD A,L ; Are we at the ... 43B3: BB CP E ; ... end of the script (MSB)? 43B4: C2 BA 43 JP NZ,$43BA ; No ... keep going 43B7: F6 01 OR $01 ; Z=0 PASS 43B9: C9 RET ; 43BA: D5 PUSH DE ; Put the calculated end of script back on stack 43BB: C3 9D 43 JP RunScriptCommand ; Run the next command
Script Command FAIL
When an individual command fails, it comes here. We return Z=1 FAIL. No more commands in this script are run.
ScriptCommandFAIL:
43BE: E1 POP HL ; Pop the script pointer
43BF: E1 POP HL ; Pop the calculated end of the script
43C0: AF XOR A ; Z=1 FAIL
43C1: C9 RET
COM_07_stop_if_pass()
Run a sublist of commands. If all the commands in the sublist pass, we abort the current script we are in with a PASS. If a command in the subscript fails, we continue in the current script at the next command beyond the failed subscript.
In other words: if the sublist passes, then abort the script with a PASS. Otherwise, continue on to the next command after the sublist.
There are a few places in Pyramid and Haunted House that nest these sublists, but never more than two levels deep total.
All of the other commands are "do something" commands. This command provides "if/else" abilities to the scripts.
COM_07_stop_if_pass: 43C2: E1 POP HL ; Get the current script pointer 43C3: CD 96 43 CALL RunScript ; Run the list of commands 43C6: E5 PUSH HL ; Current script position 43C7: CA AB 43 JP Z,ScriptCommandPASS ; The list failed. PASS into the next command. ; The subscript failed. Bail out (with a PASS) 43CA: E1 POP HL ; Get the current pointer 43CB: E1 POP HL ; Get the calculated end of list 43CC: F6 01 OR $01 ; Return Z=0 PASS 43CE: C9 RET ; Return from ALL command processing, not just this command
Parse User Input
ParseUserInput: 43CF: CD 05 46 CALL PromptAndReadLine ; Get the command line from the player 43D2: CD A2 44 CALL ParseInputString ; Parse the input string 43D5: 2A AA 45 LD HL,(nounDataPtr) ; Pointer to the noun word 43D8: 3A A8 45 LD A,(nounDataSize) ; Number of bytes ... 43DB: 47 LD B,A ; ... in word data 43DC: 3A 7D 46 LD A,(verbGrammar) ; Verb grammar 43DF: FE 03 CP $03 ; Value 3 means stand alone verb 43E1: CA CF 43 JP Z,ParseUserInput ; We needed a noun before but didn't get one. Get it now. 43E4: 3A 7B 46 LD A,(inputNoun) ; Do we have .. 43E7: A7 AND A ; ... a noun? 43E8: C2 1C 44 JP NZ,$441C ; Yes, go check it 43EB: 3A 7C 46 LD A,(inputVerb) ; Otherwise, do we have ... 43EE: A7 AND A ; ... a verb? 43EF: C2 0D 44 JP NZ,$440D ; Yes, go handle it ; ; General error message ... didn't understand a thing 43F2: 3A 7E 46 LD A,(nextErrorNum) ; Last general error message 43F5: 3C INC A ; Point to next 43F6: E6 03 AND $03 ; Roll around over 4 messages 43F8: 32 7E 46 LD (nextErrorNum),A ; For next time 43FB: 21 7F 46 LD HL,PtrErrorString1 ; Table of general error messages 43FE: 07 RLCA ; Two bytes each 43FF: 4F LD C,A ; All ... 4400: 06 00 LD B,$00 ; ... this ... 4402: 09 ADD HL,BC ; ... to ... 4403: 7E LD A,(HL) ; ... add ... 4404: 23 INC HL ; ... C ... 4405: 66 LD H,(HL) ; ... to ... 4406: 6F LD L,A ; ... HL 4407: CD D0 45 CALL PrintPlain ; Print the error 440A: C3 CF 43 JP ParseUserInput ; Back for more ; 440D: 3A 7D 46 LD A,(verbGrammar) ; Action word type 4410: FE C0 CP $C0 ; 11_000_000 means single word command 4412: C8 RET Z ; Input is just one word, we are done ; ; We have a verb that expected a noun, but no noun was given 4413: 21 FD 46 LD HL,unknownVerb ; Unknown verb 4416: CD D0 45 CALL PrintPlain ; Print "verb WHAT?" (was expecting an object) 4419: C3 CF 43 JP ParseUserInput ; Try again ; ; Validate noun 441C: 22 AA 45 LD (nounDataPtr),HL ; Save pointer to noun word data 441F: 3A A1 44 LD A,(isLoneObject) ; Was the last input an object and ... 4422: A7 AND A ; ... we then asked for a verb? 4423: C2 8E 44 JP NZ,$448E ; Yes, skip checking the noun (use what we have) ; 4426: 7E LD A,(HL) ; Get the object number 4427: 23 INC HL ; Next word 4428: 22 AA 45 LD (nounDataPtr),HL ; Noun word data pointer 442B: 1E FF LD E,$FF ; Backpack location 442D: C5 PUSH BC ; Save BC 442E: CD 50 43 CALL GetObjectInfo ; Look up the requested object 4431: C1 POP BC ; Restore BC 4432: CA 86 44 JP Z,$4486 ; Object is actually in pack ... go use it 4435: 3A 7D 46 LD A,(verbGrammar) ; Grammar type 4438: FE 40 CP $40 ; 01_000_000 means noun-in-pack 443A: CA 4E 44 JP Z,$444E ; Yes, check the backpack 443D: 2A AA 45 LD HL,(nounDataPtr) ; Noun word pointer 4440: 2B DEC HL ; Back up the word pointer 4441: 3A 3F 50 LD A,(currentRoom) ; Is ... 4444: 5F LD E,A ; ... this ... 4445: 7E LD A,(HL) ; ... object ... 4446: C5 PUSH BC ; ... in the ... 4447: CD 50 43 CALL GetObjectInfo ; ... current room? 444A: C1 POP BC ; Restore BC 444B: CA 86 44 JP Z,$4486 ; Yes, go use it ; 444E: 2A AA 45 LD HL,(nounDataPtr) ; Restore word data pointer 4451: 05 DEC B ; All objects of this name tried? 4452: C2 26 44 JP NZ,$4426 ; No ... keep looking for matching object ; ; Object not found (either not in pack or not in room depending on verb requirements) 4455: 3A 7D 46 LD A,(verbGrammar) ; Grammar type 4458: FE 40 CP $40 ; 01_000_000 means noun-in-pack 445A: C2 63 44 JP NZ,$4463 ; Error ... can't find noun in room 445D: 21 98 46 LD HL,MsgNotCarrying ; "YOU_AREN'T_CARRYING_IT." 4460: C3 7C 44 JP $447C ; Print error and back to try again 4463: 21 87 46 LD HL,MsgISeeNo ; "I_SEE_NO_" 4466: CD D0 45 CALL PrintPlain ; First fragment ; 4469: 3E 01 LD A,$01 ; Replace '?' with ... 446B: 32 FB 46 LD (unknownNounPunct),A; ... no-CR terminator. 446E: 21 D3 46 LD HL,unknownNoun ; Buffer for unknown word 4471: CD D0 45 CALL PrintPlain ; Print unknown word 4474: 3E 3F LD A,$3F ; Restore the ... 4476: 32 FB 46 LD (unknownNounPunct),A; ... question mark character 4479: 21 91 46 LD HL,MsgHere ; "_HERE." 447C: CD D0 45 CALL PrintPlain ; Print the last fragment of error 447F: 97 SUB A ; Clear ... 4480: 32 7B 46 LD (inputNoun),A ; ... the unknown noun 4483: C3 CF 43 JP ParseUserInput ; Back to try again ; ; Found object 4486: 2A AA 45 LD HL,(nounDataPtr) ; 4489: 2B DEC HL ; Back up to start 448A: 7E LD A,(HL) ; Get the object number 448B: 32 7B 46 LD (inputNoun),A ; Hold the noun 448E: 3A 7C 46 LD A,(inputVerb) ; Get the verb 4491: A7 AND A ; Noun and verb? 4492: C0 RET NZ ; Yes, done 4493: 21 B0 46 LD HL,MsgWhatDoWith ; "WHAT_DO_YOU_WANT_ME_TO_DO_WITH_THE_"+noun+"?" 4496: CD D0 45 CALL PrintPlain ; Print first fragment 4499: 3E 01 LD A,$01 ; Flag that we ... 449B: 32 A1 44 LD (isLoneObject),A ; ... are prompting for a verb only 449E: C3 CF 43 JP ParseUserInput ; Back to get user input isLoneObject: 44A1: 00 ; 1 if a lone object was given last input
Tokenize the input
Parse the input into words.
ParseInputString: 44A2: 21 5A 46 LD HL,inputBuffer ; Start of user input buffer 44A5: 97 SUB A ; Clear the ... 44A6: 32 A9 45 LD (someDecoded),A ; ... buffer-has-something flag 44A9: 32 7D 46 LD (verbGrammar),A ; ... and the grammar ; 44AC: 11 CE 56 LD DE,WordTable ; Pointer to all the words we know 44AF: EB EX DE,HL ; Now HL=words we know, DE=where we are in the input 44B0: 22 79 47 LD (currentParsePtr),HL; Hold our current spot in the word table 44B3: EB EX DE,HL ; Now HL=where we are in input, DE=where we are in words ; ; Skip over blank spaces before next word 44B4: 7E LD A,(HL) ; Ignore ... 44B5: FE 20 CP $20 ; ... all ... 44B7: C2 BE 44 JP NZ,$44BE ; ... leading ... 44BA: 23 INC HL ; ... blank ... 44BB: C3 B4 44 JP $44B4 ; ... spaces 44BE: 22 7B 47 LD (inputWordPtr),HL ; start of this word 44C1: A7 AND A ; Nothing but spaces? 44C2: CA 5C 45 JP Z,$455C ; Yes, we are done parsing ; 44C5: 3E 01 LD A,$01 ; There is SOMETHING ... 44C7: 32 A9 45 LD (someDecoded),A ; ... in the buffer 44CA: E5 PUSH HL ; Hold the pointer 44CB: 1A LD A,(DE) ; First byte of word table 44CC: A7 AND A ; Reached the end of the table? 44CD: CA 67 45 JP Z,$4567 ; Done tokenizing ... now have a look at the words 44D0: 32 81 47 LD (testWord),A ; Hold 1st byte of word being tested 44D3: E6 07 AND $07 ; Number of bytes ... 44D5: 4F LD C,A ; ... in ... 44D6: 32 7D 47 LD (numCharsTest),A ; ... current word text 44D9: 3A 81 47 LD A,(testWord) ; We'll need that info byte several times 44DC: E6 38 AND $38 ; Number ... 44DE: 0F RRCA ; ... of ... 44DF: 0F RRCA ; ... bytes ... 44E0: 0F RRCA ; ... in ... 44E1: 47 LD B,A ; word data 44E2: EB EX DE,HL ; Save our current ... 44E3: 22 79 47 LD (currentParsePtr),HL; ... position in the input 44E6: EB EX DE,HL ; Shuffle our pointers back 44E7: 13 INC DE ; Get next from ... 44E8: 1A LD A,(DE) ; ... input buffer 44E9: BE CP (HL) ; Does it match the word we are testing? 44EA: C2 4E 45 JP NZ,FindEndOfTestWord; No, try next word 44ED: 23 INC HL ; Next in input 44EE: 13 INC DE ; Next in word text 44EF: 0D DEC C ; All characters of word being tested? 44F0: C2 E8 44 JP NZ,$44E8 ; No, keep testing 44F3: 3A 7D 47 LD A,(numCharsTest) ; Number of characters in the test word 44F6: FE 06 CP $06 ; Six is the max size EXCEPT FOR "SCEPTER" WHICH IS 7 -- BUG? 44F8: CA 05 45 JP Z,FindEndOfInputWord; Six matched ... ignore the rest of the input ; 44FB: 7E LD A,(HL) ; Not six ... is the next input ... 44FC: FE 20 CP $20 ; ... a space? 44FE: CA 13 45 JP Z,$4513 ; Yes ... we are ready for next word 4501: A7 AND A ; Maybe the end of the input buffer? 4502: C2 53 45 JP NZ,FindEndOfTestData; No ... not a match ; FindEndOfInputWord: 4505: 7E LD A,(HL) ; Next in buffer is ... 4506: FE 20 CP $20 ; ... a space? 4508: CA 13 45 JP Z,$4513 ; Yes, end of word success 450B: A7 AND A ; End of input buffer? 450C: CA 13 45 JP Z,$4513 ; Yes, end of word success 450F: 23 INC HL ; Next character in input 4510: C3 05 45 JP FindEndOfInputWord ; Find end of word ; 4513: 3A 81 47 LD A,(testWord) ; 4516: E6 C0 AND $C0 ; Is the word a noun? (anything else is a verb) 4518: CA 2D 45 JP Z,$452D ; Yes ... record the noun 451B: 32 7D 46 LD (verbGrammar),A ; Hold the verb's grammar 451E: 1A LD A,(DE) ; Get the verb number ... 451F: 32 7C 46 LD (inputVerb),A ; ... from script (lots of words might map to same number) ; 4522: E5 PUSH HL ; Hold input pointer 4523: 21 FD 46 LD HL,unknownVerb ; Storage for unknownVerb 4526: CD 85 45 CALL CopyWord ; Copy input to the unknownVerb storage 4529: E1 POP HL ; Restore pointer 452A: C3 46 45 JP $4546 ; Skip spaces and next word ; 452D: 1A LD A,(DE) ; Store the ... 452E: 32 7B 46 LD (inputNoun),A ; ... noun number (several words might match) 4531: EB EX DE,HL ; Get HL into position 4532: 22 AA 45 LD (nounDataPtr),HL ; Store pointer to noun 4535: EB EX DE,HL ; Restore pointer positions 4536: 78 LD A,B ; Number of bytes ... 4537: 32 A8 45 LD (nounDataSize),A ; ... of data for this word 453A: 97 SUB A ; Clear the ... 453B: 32 A1 44 LD (isLoneObject),A ; ... isLoneObject flag (we have a verb) ; 453E: E5 PUSH HL ; Hold 453F: 21 D3 46 LD HL,unknownNoun ; Copy the ... 4542: CD 85 45 CALL CopyWord ; ... input noun 4545: E1 POP HL ; Restore ; 4546: 7E LD A,(HL) ; From input 4547: FE 20 CP $20 ; Is it a space? 4549: D1 POP DE ; Restore 454A: CA AC 44 JP Z,$44AC ; Yes ... decode the next word 454D: C9 RET ; Done ; FindEndOfTestWord: 454E: 13 INC DE ; Skip ... 454F: 0D DEC C ; ... all characters ... 4550: C2 4E 45 JP NZ,FindEndOfTestWord; ... in test word ; FindEndOfTestData: 4553: 13 INC DE ; Next in word text data 4554: 05 DEC B ; Reached the end of the test word? 4555: C2 53 45 JP NZ,FindEndOfTestData; No, move to the end ; 4558: E1 POP HL ; Restore pointer to input 4559: C3 B4 44 JP $44B4 ; Skip blank spaces in input ; 455C: 3A A9 45 LD A,(someDecoded) ; Is the buffer ... 455F: A7 AND A ; ... empty? 4560: C0 RET NZ ; YES, we are done ; 4561: 3E 03 LD A,$03 ; Stand alone ... 4563: 32 7D 46 LD (verbGrammar),A ; ... verb 4566: C9 RET ; Done ; 4567: E1 POP HL ; Restore pointer to input 4568: 97 SUB A ; Zero the ... 4569: 32 7C 46 LD (inputVerb),A ; ... verb 456C: 32 7B 46 LD (inputNoun),A ; And the noun 456F: 7E LD A,(HL) ; Next input 4570: FE 20 CP $20 ; Is it a space? 4572: C2 79 45 JP NZ,SkipInputWord ; No, go process it 4575: 23 INC HL ; Skip ... 4576: C3 6F 45 JP $456F ; ... blank spaces ; SkipInputWord: 4579: 7E LD A,(HL) ; End of ... 457A: A7 AND A ; ... user input? 457B: C8 RET Z ; Yes, we are done 457C: FE 20 CP $20 ; Space? 457E: CA AC 44 JP Z,$44AC ; Yes, go lookup any word that follows 4581: 23 INC HL ; Keep skipping ... 4582: C3 79 45 JP SkipInputWord ; ... input word CopyWord: 4585: EB EX DE,HL ; Now DE=storage 4586: 2A 7B 47 LD HL,(inputWordPtr) ; 4589: 06 28 LD B,$28 ; 40 chars max in storage for word 458B: 7E LD A,(HL) ; From input buffer 458C: A7 AND A ; End of the buffer? 458D: CA 9F 45 JP Z,$459F ; Yes ... done 4590: FE 20 CP $20 ; Is it a space betwen words? 4592: CA 9F 45 JP Z,$459F ; Yes ... done 4595: 12 LD (DE),A ; Store input word char to storage 4596: 23 INC HL ; Next input 4597: 13 INC DE ; Next storage 4598: 05 DEC B ; Count down remaining storage 4599: 78 LD A,B ; Storage all ... 459A: FE 01 CP $01 ; ... full? 459C: C2 8B 45 JP NZ,$458B ; No ... keep copying 459F: 3E 40 LD A,$40 ; Fill ... 45A1: 12 LD (DE),A ; ... remainder of ... 45A2: 13 INC DE ; ... storage ... 45A3: 05 DEC B ; ... with ... 45A4: C2 9F 45 JP NZ,$459F ; ... the "@" character 45A7: C9 RET nounDataSize: 45A8: 00 ; Number of bytes in noun's data area someDecoded: 45A9: 00 ; 1 if something was decoded from input nounDataPtr: 45AA: 00 00 ; Pointer to noun data ; unused 45AC: 00 00
Print Packed
PrintPacked: ; Unpack a message (or multiple packed messages) and print. ; HL is pointer to message 45AE: 7E LD A,(HL) ; Next byte of data 45AF: A7 AND A ; Return if we are ... 45B0: C8 RET Z ; ... at the end ; 45B1: 23 INC HL ; Next in string 45B2: 11 5A 46 LD DE,inputBuffer ; Destination buffer 45B5: CD C2 47 CALL UnpackStringToScreen; Unpack the string 45B8: 7E LD A,(HL) ; Character from string 45B9: A7 AND A ; 0 means end with a carriage return? 45BA: CA E7 45 JP Z,PrintCarriageReturn; Yes, print carriage return and out 45BD: FE 01 CP $01 ; 1 means end with nothing? 45BF: C8 RET Z ; Yes, just return 45C0: 47 LD B,A ; Print ... 45C1: E5 PUSH HL ; ... the ... 45C2: CD FF 45 CALL PrintChar ; ... character 45C5: E1 POP HL ; Restore pointer to string 45C6: 7E LD A,(HL) ; Character we just printed 45C7: FE 0A CP $0A ; Line feed means start a new unpack/print? 45C9: 23 INC HL ; Point to next character 45CA: CA AE 45 JP Z,PrintPacked ; Yes, start a new unpack/print 45CD: C3 B8 45 JP $45B8 ; 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. ; 45D0: 7E LD A,(HL) ; Next character 45D1: A7 AND A ; 0 means end with a line feed? 45D2: CA E7 45 JP Z,PrintCarriageReturn; Yes, print line feed and out 45D5: FE 01 CP $01 ; 1 means end with nothing? 45D7: C8 RET Z ; Yes, just return 45D8: FE 40 CP $40 ; Character is 40 (ignore)? 45DA: CA E3 45 JP Z,$45E3 ; Yes, just ingore the character 45DD: 47 LD B,A ; Print ... 45DE: E5 PUSH HL ; ... the ... 45DF: CD FF 45 CALL PrintChar ; ... character 45E2: E1 POP HL ; Restore pointer to string 45E3: 23 INC HL ; Next character in string 45E4: C3 D0 45 JP PrintPlain ; ; PrintCarriageReturn: 45E7: 06 0D LD B,$0D ; Print ... 45E9: 78 LD A,B ; ... carriage ... 45EA: CD FF 45 CALL PrintChar ; ... return 45ED: C9 RET
Wait for key
WaitForKey: 45EE: D5 PUSH DE ; ROM routine mangles this 45EF: 3A 74 47 LD A,(keyWaitCounter) ; Bump the ... 45F2: 3C INC A ; ... counter used for ... 45F3: 32 74 47 LD (keyWaitCounter),A ; ... random numbers 45F6: CD 2B 00 CALL GetKey ; Call the ROM routine to scan the keyboard 45F9: A7 AND A ; Any key typed? 45FA: CA EF 45 JP Z,$45EF ; No, keep waiting 45FD: D1 POP DE ; Restore our DE 45FE: C9 RET ; Return key in A
Print Char
PrintChar: 45FF: D5 PUSH DE ; ROM routine mangles this 4600: CD 33 00 CALL PrintChar ; Send character A to the screen 4603: D1 POP DE ; Restore our DE 4604: C9 RET
Prompt And Read Line
PromptAndReadLine: 4605: 06 3A LD B,$3A ; Colon ":" 4607: 78 LD A,B ; User starts typing after ... 4608: CD FF 45 CALL PrintChar ; ... the colon 460B: 21 5A 46 LD HL,inputBuffer ; Start of the input buffer 460E: 0E 00 LD C,$00 ; Input character count (0 to start) ; 4610: E5 PUSH HL ; Hold ... 4611: C5 PUSH BC ; ... all ... 4612: D5 PUSH DE ; ... our registers 4613: CD EE 45 CALL WaitForKey ; 4616: D1 POP DE ; Restore ... 4617: C1 POP BC ; ... all ... 4618: E1 POP HL ; ... our registers 4619: 47 LD B,A ; Key from the user 461A: FE 08 CP $08 ; Backspace? 461C: CA 41 46 JP Z,BackSpace ; Yes, handle erasing a character 461F: 77 LD (HL),A ; Store the key in the bufer 4620: CD FF 45 CALL PrintChar ; Echo the key to the screen 4623: FE 0D CP $0D ; Was it an ENTER? 4625: CA 57 46 JP Z,InputDone ; Yes, we are done 4628: 0C INC C ; Increment the character count 4629: 23 INC HL ; Next in buffer 462A: 11 7A 46 LD DE,$467A ; One past the end of the input buffer 462D: 7C LD A,H ; Overflowed the ... 462E: BA CP D ; ... buffer? 462F: DA 10 46 JP C,$4610 ; No, keep taking keys 4632: 7D LD A,L ; Overflowed the ... 4633: BB CP E ; ... buffer? 4634: DA 10 46 JP C,$4610 ; No, keep taking keys 4637: 06 08 LD B,$08 ; Print ... 4639: 78 LD A,B ; ... backspace to ... 463A: CD FF 45 CALL PrintChar ; ... ignore input 463D: 2B DEC HL ; Remove the input from the end of the buffer 463E: C3 10 46 JP $4610 ; Back for more input BackSpace: 4641: 2B DEC HL ; Back up the buffer pointer 4642: 3E 46 LD A,$46 ; Underflowed the ... 4644: BC CP H ; ... buffer? 4645: DA 4E 46 JP C,$464E ; No ... keep it 4648: 7D LD A,L ; Underflowed the ... 4649: FE 5A CP $5A ; ... buffer? 464B: DA 0B 46 JP C,$460B ; Yes ... set to start of buffer 464E: 3E 08 LD A,$08 ; Remove the character ... 4650: 47 LD B,A ; ... from the ... 4651: CD FF 45 CALL PrintChar ; ... screen 4654: C3 10 46 JP $4610 ; Back for more input InputDone: 4657: 36 00 LD (HL),$00 ; Put the null terminator on the end of the input 4659: C9 RET
Input Buffer
; Input buffer (with some uninitialized leftover data!) ; The buffer is 41 bytes (room for a null terminator after 40) ; Again, look 99 bytes down for the last assembly's data. ; Interestingly, the data 99 down overlaps a reserved area too, ; which lets us see the assembly BEFORE THAT! inputBuffer: ; UNINITIALIZED MEMORY 465A: 41 4E 54 20 4D 45 20 54 4F 20 44 4F 20 57 49 54 ; WANT_ME_TO_DO_WIT 466A: 48 20 54 48 45 20 2C 41 0D 12 30 30 30 30 20 20 ; H_THE_ ,A<CR>?000__ ; 18 bytes, whatever the instruction is ; The 2nd line is long ... total length of 18, but the double space after "0000" ; means it has no leading label. The text of the line would be 10 characters. There ; are no 8080 opcodes that long, so the instruction likely references a label or ; constant (like MVI H,123H). ; 8080 instructions that end with ",A": "MOV x,A" where X is: B,C,D,E,H,L,M,A ; Z80 "LD (xxxx),A" would be a "STA" opcode. We are looking for a "LD r,A" Z80 ; op followed by an instruction that references a label. There are lots and lots ; of those. ; Hole within the hole: ; -- "---------------,A" 0D ; Must be "MOV x,A" where x is B,C,D,E,H,L,M,A ; 12 "0000 -----------" -- ; Double-space means no label, and we know the length (10) 467A: 00 ; null terminator for input buffer inputNoun: 467B: 00 ; The user input noun inputVerb: 467C: 00 ; The user input verb verbGrammar: 467D: 00 ; The phrase's grammar type nextErrorNum: 467E: 00 ; Which error string do we show next? 0, 1, 2, or 3 PtrErrorString1: ; 61 WHAT? 467F: 25 47 ; " WHAT?" PtrErrorString2: ; 60 I DON'T KNOW THAT WORD. 4681: 2C 47 ; "I DON'T KNOW THAT WORD." PtrErrorString3: ; 13 I DON'T UNDERSTAND THAT! 4683: 44 47 ; "I DON'T UNDERSTAND." PtrErrorString4: 4685: 58 47 ; "I DON'T KNOW WHAT YOU MEAN." ; I_SEE_NO_ MsgISeeNo: 4687: 49 20 53 45 45 20 4E 4F 20 01 ; _HERE. MsgHere: 4691: 20 48 45 52 45 2E 00 ; YOU_AREN'T_CARRYING_IT. MsgNotCarrying: 4698: 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: 46B0: 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 46D0: 48 45 20 ; 40 byte buffer for unknown noun word unknownNoun: ; UNINITIALIZED MEMORY 46D3: 4F 57 20 54 48 41 54 20 57 4F ; OW_THAT_WO 46DD: 52 44 2E 00 49 20 44 4F 4E 27 ; RD.*I_DON' 46E7: 54 20 55 4E 44 45 52 53 54 41 ; T_UNDERSTA 46F1: 4E 44 2E 00 49 20 44 4F 4E 27 ; ND.*I_DON' unknownNounPunct: ; "?" 46FB: 3F 00 ; The code changes this depending on the sentence ; 40 byte buffer for unknown verb (followed by WHAT?) unknownVerb: ; UNINITIALIZED MEMORY ; This is from the source code a few bytes down 46FD: 4B 4E 4F 57 20 57 48 41 54 20 ; KNOW_WHAT_ 4707: 59 4F 55 20 4D 45 41 4E 2E 00 ; YOU_MEAN.* 4711: 00 00 00 00 00 00 00 00 00 00 ; 471B: 00 00 00 00 57 45 4C 43 4F 4D ; WELCOM ErrorString1: ;" WHAT?" 4725: 20 57 48 41 54 3F 00 ErrorString2: ; "I DON'T KNOW THAT WORD." 472C: 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." 4744: 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." 4758: 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: 4774: 00 ; Rapidly bumped waiting on a key (random) ; unused 4775: 00 00 00 00 currentParsePtr: 4779: 00 00 ; Pointer to word table entry while parsing inputWordPtr: 477B: 00 00 ; Pointer to word being tokenized numCharsTest: 477D: 00 ; Number of chars in test word (tokenizing) ; unused 477E: 00 00 00 testWord: 4781: 00 ; First byte of word data (tokenizing) ; "WELCOME TO PYRAMID!!" WelcomeMsg: 4782: 57 45 4C 43 4F 4D 45 20 54 4F 20 50 59 52 41 4D 49 44 21 21 00 ; The next 40 bytes (there is that magic number 40 again) are uninitalized ; memory reserved for the stack. The uninitialized memory contains the output of ; a previous assembly, but with a different origin. You'll find these live ; instructions in this final assembly at 47FA below -- just 99 bytes from here. ; 99 bytes of compiled code was added above this between the final assembly and ; the assembly before this. We get a peek at the system one step before the ; final assembly. ; ; ; Disassembly of the PREVIOUS state of the code. ; ; See 47FA below for this code in its final position. ; UNINITIALIZED MEMORY 4797: E1 ; POP HL 4798: CA B8 47 ; JP Z,$47B8 479B: 3E 00 ; LD A,$00 479D: CE 00 ; ADC $00 479F: 29 ; ADD HL,HL 47A0: 44 ; LD B,H 47A1: 85 ; ADD A,L 47A2: 2A 22 48 ; LD HL,($4822) 47A5: 95 ; SUB L 47A6: 4F ; LD C,A 47A7: 78 ; LD A,B 47A8: 9C ; SBC H 47A9: 47 ; LD B,A 47AA: C5 ; PUSH BC 47AB: D2 B0 47 ; JP NC,$47B0 47AE: 09 ; ADD HL,BC 47AF: E3 ; EX (SP),HL 47B0: 21 B7 47 ; LD HL,$47B7 47B3: 3F ; CCF 47B4: C3 90 47 ; JP $4790 47B7: 00 ; 47B8: 01 F9 47 ; LD NC,$47F9 47BB: 09 ; ADD HL,BC 47BC: 7E ; LD A,(HL) 47BD: C1 ; POP BC 47BE: E1 ; POP HL TopOfStack: ; The Z80 stack decrements before write. The 40 bytes above are the uninitialized ; memory reserved for the statck. 47BF: 00 EmptyString: 47C0: 00 ; For objects that have no descriptions ; unused 47C1: 00
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: 47C2: 32 84 48 LD (unpackNumWords),A ; Number of words to unpack 47C5: 3E 01 LD A,$01 ; We are unpacking to ... 47C7: 32 87 48 LD (unpackToScreen),A ; ... the screen 47CA: C3 D4 47 JP $47D4 ; Do the unpack ; UnpackStringToBuffer: ; Never used (but was in Haunted House) 47CD: 32 84 48 LD (unpackNumWords),A ; Number of words to unpack 47D0: 97 SUB A ; We are unpacking to ... 47D1: 32 87 48 LD (unpackToScreen),A ; ... the buffer ; ; HL points to data to unpack ; DE points to unpack buffer (just 3 bytes if going to screen) 47D4: E5 PUSH HL ; Hold the pointer to the words ; 47D5: 06 03 LD B,$03 ; Three characters to extract from word 47D7: E1 POP HL ; Get the ... 47D8: 7E LD A,(HL) ; ... MSB of the word 47D9: 23 INC HL ; Get the ... 47DA: 4E LD C,(HL) ; ... LSB of the word 47DB: 23 INC HL ; Update the pointer ... 47DC: E5 PUSH HL ; ... to the words 47DD: 61 LD H,C ; Data word ... 47DE: 6F LD L,A ; ... to HL 47DF: 13 INC DE ; Skip to end ... 47E0: 13 INC DE ; ... we are storing in reverse 47E1: EB EX DE,HL ; Now HL=buffer and DE=data 47E2: E5 PUSH HL ; Hold pointer to the buffer 47E3: C5 PUSH BC ; Hold our count to 3 ; 47E4: 21 28 00 LD HL,$0028 ; The value of ... 47E7: 22 85 48 LD (valueOfForty),HL ; ... 40 for division (repeated subtraction) 47EA: 21 1A 48 LD HL,shiftCount ; We stop after ... 47ED: 36 11 LD (HL),$11 ; ... 16 shifts (end + 1 = 17) 47EF: 01 00 00 LD BC,$0000 ; Value we are extracting 47F2: C5 PUSH BC ; Hold the value on the stack 47F3: 7B LD A,E ; Shift ... 47F4: 17 RLA ; ... DE ... 47F5: 5F LD E,A ; ... left ... 47F6: 7A LD A,D ; ... one ... 47F7: 17 RLA ; ... bit ... 47F8: 57 LD D,A ; ... bit goes to CF 47F9: 35 DEC (HL) ; All shifts done? 47FA: E1 POP HL ; Current extracted value from stack 47FB: CA 1B 48 JP Z,$481B ; Yes, store the extracted character 47FE: 3E 00 LD A,$00 ; Left bit ... 4800: CE 00 ADC $00 ; ... to A 4802: 29 ADD HL,HL ; Value = value * 2 4803: 44 LD B,H ; MSB 4804: 85 ADD A,L ; 4805: 2A 85 48 LD HL,(valueOfForty) ; 4808: 95 SUB L ; 4809: 4F LD C,A ; 480A: 78 LD A,B ; TODO figure out the exact math here 480B: 9C SBC H ; 480C: 47 LD B,A ; 480D: C5 PUSH BC ; 480E: D2 13 48 JP NC,$4813 ; Less than 40 ... skip adding 4811: 09 ADD HL,BC ; Greater or equal, add to the extracted value 4812: E3 EX (SP),HL ; New value back to stack 4813: 21 1A 48 LD HL,shiftCount ; 4816: 3F CCF ; Clear carry for next math 4817: C3 F3 47 JP $47F3 ; Do all bits shiftCount: 481A: 00 ; Count of shifts during the unpack algorithm 481B: 01 5C 48 LD BC,CharTable ; Offset to character table 481E: 09 ADD HL,BC ; Offset to the character in the table 481F: 7E LD A,(HL) ; Get the character 4820: C1 POP BC ; Restore the count in B 4821: E1 POP HL ; Restore the pointer to buffer 4822: 77 LD (HL),A ; Store the character in the buffer 4823: 2B DEC HL ; Working backwards in sets of 3 4824: 05 DEC B ; All 3 values extracted? 4825: C2 E2 47 JP NZ,$47E2 ; No, go get them all 4828: 3A 87 48 LD A,(unpackToScreen) ; Unpacking to ... 482B: A7 AND A ; ... a buffer? 482C: CA 44 48 JP Z,$4844 ; Yes, skip screen printing ; 482F: E5 PUSH HL ; Hold ... 4830: C5 PUSH BC ; ... our ... 4831: D5 PUSH DE ; ... progress ... 4832: 1E 03 LD E,$03 ; Three characters to print 4834: 23 INC HL ; Next to print 4835: 46 LD B,(HL) ; Get the character 4836: E5 PUSH HL ; Hold the buffer pointer 4837: 78 LD A,B ; To B 4838: CD FF 45 CALL PrintChar ; Print the unpacked character 483B: E1 POP HL ; Restore buffer pointer 483C: 23 INC HL ; Next in buffer 483D: 1D DEC E ; All 3 printed? 483E: C2 35 48 JP NZ,$4835 ; No, print the 3 we just unpacked 4841: D1 POP DE ; Restore ... 4842: C1 POP BC ; ... our ... 4843: E1 POP HL ; ... progress ; 4844: EB EX DE,HL ; Now HL=data and DE=buffer 4845: 13 INC DE ; Will be next in buffer 4846: 3A 87 48 LD A,(unpackToScreen) ; Are we unpacking ... 4849: A7 AND A ; ... to the screen? 484A: C2 50 48 JP NZ,$4850 ; Yes ... reuse this 3-byte buffer 484D: 13 INC DE ; No, move to the ... 484E: 13 INC DE ; ... next 3-byte slot ... 484F: 13 INC DE ; ... in the buffer 4850: 3A 84 48 LD A,(unpackNumWords) ; Count down ... 4853: 3D DEC A ; ... number of ... 4854: 32 84 48 LD (unpackNumWords),A ; ... words 4857: C2 D5 47 JP NZ,$47D5 ; Go back for all the words 485A: E1 POP HL ; Point to the next character after the words in the string 485B: C9 RET
Character Table
; Character compression table CharTable: 485C: 3F 21 32 20 22 27 3C 3E 2F 30 33 ; ?!2_"'<>/03 4867: 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 ; ABCDEFGHIJKLMNOP 4877: 51 52 53 54 55 56 57 58 59 5A 2D 2C 2E ; QRSTUVWXYZ-,. unpackNumWords: 4884: 00 ; Number of words to unpack (2-byte words) valueOfForty: ; Used in dividing by 40 in unpack 4885: 00 00 unpackToScreen: 4887: 00 ; 1 to print to screen, 0 to given 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.
Woods 1-8 rewritten left out. New desert sequence added here as 1-6.
The following messages in loc.c are regular prints here: 16, 20, 21, 22, 26, 31, 32, 40, 59, 89, 90
Large sequences left out of Pyramid: - 107 - 112 "Witt's end" (replaced with Land of the Dead) - 69 - 79 "Secret canyon area" - 115 - 140 "Repository, Dragon, and Bear" Single rooms missing from Pyramid: - 35 "Shadowing figure peering back at you" (mirror from 110, which was removed) - 66 "Swiss cheese room" (better in a cave) - 95 "Sparkling waterfall" (probably not a lot of these in a pyramid) TRIDENT here - 113 "Underground reservoir" (probably not a lot of these in a pyramid) - 91 "Steep incline" - 97 "Oriental room" - 98 "Misty carvern" - 101 "Dark room" STONE TABLET congrats on bringing light
Rusty door in 94. Oil to get access to 95 and the trident.
Four of these missing single rooms were ported to Pyramid but later removed likely to fit the game in 16K.
Which of these 4 were made the port? My best guesses above
RoomTable:
; Descr Scrpt RoomName String Notes
4888: DB 5B CC 49 ; RM_01_BEFORE_ENTRANCE PS_00 new "before entrance"
488C: 10 5C E1 49 ; RM_02_IN_ENTRANCE PS_01 new "in entrance" (wood's woodsRoom3 wellhouse)
4890: 57 5C F2 49 ; RM_03_DESERT1 PS_02 new "desert"
4894: 57 5C 03 4A ; RM_04_DESERT2 PS_02 new "desert"
4898: 57 5C 14 4A ; RM_05_DESERT3 PS_02 new "desert"
489C: 57 5C 25 4A ; RM_06_DESERT4 PS_02 new "desert"
;
48A0: 68 5C 36 4A ; RM_07_BENEATH_A_HOLE PS_03 woodsRoom9
48A4: E2 5C 47 4A ; RM_08_CRAWLING_OVER_PEBBLES PS_04 woodsRoom10
48A8: 28 5D 58 4A ; RM_09_BROKEN_POTTERY PS_05 woodsRoom11
48AC: 7D 5D 69 4A ; RM_0A_AWKWARD_SLOPING PS_06 woodsRoom12
48B0: A0 5D 7E 4A ; RM_0B_SPLENDID_CHAMBER PS_07 woodsRoom13
48B4: 1E 5E 87 4A ; RM_0C_SMALL_PIT_WHITE_MIST PS_08 woodsRoom14
48B8: 8E 5E 9D 4A ; RM_0D_STEPS_LEAD_UP_DOME PS_09 woodsRoom15
48BC: 69 5F C8 4A ; RM_0E_LOW_ROOM_HIEROGLYPH PS_0A woodsRoom18
48C0: AB 5F D1 4A ; RM_0F_EAST_BANK_BOTTOMLESS_PIT PS_0B woodsRoom17
48C4: 08 60 0D 4B ; RM_10_PHARAOHS_CHAMBER PS_0C woodsRoom19
48C8: 3C 60 48 4B ; RM_11_SOUTH_SIDE_CHAMBER PS_0D woodsRoom29
48CC: 55 60 51 4B ; RM_12_HALL_OF_GODS PS_0E woodsRoom27
48D0: 85 60 90 4B ; RM_13_LITTLE_PASSAGE_SIX_FEET PS_0F woodsRoom41
48D4: F1 60 A9 4B ; RM_14_EAST_END_LONG_HALL PS_10 woodsRoom60
48D8: 5F 61 BE 4B ; RM_15_WEST_END_FEATURELESS_HALL PS_11 woodsRoom61
48DC: AC 61 C7 4B ; RM_16_CROSSOVER PS_12 woodsRoom62
48E0: D8 61 D8 4B ; RM_17_DEAD_END1 PS_13 woodsRoom63
48E4: E0 61 E1 4B ; RM_18_THRONE_CHAMBER PS_14 woodsRoom30
48E8: 18 62 F2 4B ; RM_19_LOW_NS_PASSAGE PS_15 woodsRoom28
48EC: 58 62 07 4C ; RM_1A_PANEL_NORTH_WALL PS_16 woodsRoom33
48F0: B0 62 14 4C ; RM_1B_CHAMBER_OF_ANUBIS PS_17 woodsRoom34
;
48F4: C8 62 21 4C ; RM_1C_TWISTY_PASSAGES1 PS_18 woodsRoom42
48F8: C8 62 36 4C ; RM_1D_TWISTY_PASSAGES2 PS_18 woodsRoom80
48FC: C8 62 47 4C ; RM_1E_TWISTY_PASSAGES3 PS_18 woodsRoom45
4900: C8 62 60 4C ; RM_1F_TWISTY_PASSAGES4 PS_18 woodsRoom87
4904: C8 62 69 4C ; RM_20_TWISTY_PASSAGES5 PS_18 woodsRoom43
4908: C8 62 76 4C ; RM_21_TWISTY_PASSAGES6 PS_18 woodsRoom44
490C: C8 62 87 4C ; RM_22_TWISTY_PASSAGES7 PS_18 woodsRoom50
4910: C8 62 98 4C ; RM_23_TWISTY_PASSAGES8 PS_18 woodsRoom52
4914: C8 62 B1 4C ; RM_24_TWISTY_PASSAGES9 PS_18 woodsRoom55
4918: C8 62 C2 4C ; RM_25_TWISTY_PASSAGES10 PS_18 woodsRoom49
491C: C8 62 CB 4C ; RM_26_TWISTY_PASSAGES11 PS_18 woodsRoom51
4920: C8 62 DC 4C ; RM_27_TWISTY_PASSAGES12 PS_18 woodsRoom53
4924: C8 62 E9 4C ; RM_28_TWISTY_PASSAGES13 PS_18 woodsRoom84
4928: C8 62 F6 4C ; RM_29_TWISTY_PASSAGES14 PS_18 woodsRoom83
492C: D8 61 03 4D ; RM_2A_DEAD_END2 PS_13 woodsRoom46
4930: D8 61 08 4D ; RM_2B_DEAD_END3 PS_13 woodsRoom47
4934: D8 61 0D 4D ; RM_2C_DEAD_END4 PS_13 woodsRoom82
4938: D8 61 12 4D ; RM_2D_DEAD_END5 PS_13 woodsRoom48
493C: D8 61 17 4D ; RM_2E_DEAD_END6 PS_13 woodsRoom54
4940: D8 61 1C 4D ; RM_2F_DEAD_END7 PS_13 woodsRoom86
4944: D8 61 21 4D ; RM_30_DEAD_END8 PS_13 woodsRoom56
4948: D8 61 26 4D ; RM_31_DEAD_END9 PS_13 woodsRoom58
494C: D8 61 2B 4D ; RM_32_DEAD_END10 PS_13 woodsRoom85
4950: D8 61 30 4D ; RM_33_DEAD_END11 PS_13 woodsRoom81
4954: EA 62 41 4D ; RM_34_BRINK_OF_LARGE_PIT PS_19 woodsRoom57
4958: D8 61 56 4D ; RM_35_DEAD_END12 PS_13 woodsRoom114
;
495C: 49 63 5B 4D ; RM_36_DIRTY_BROKEN_PASSAGE PS_1A woodsRoom36
4960: A6 63 68 4D ; RM_37_BRINK_OF_CLEAN_PIT PS_1B woodsRoom37
4964: DA 63 75 4D ; RM_38_PIT_LITTLE_STREAM PS_1C woodsRoom38
4968: 1F 64 93 4D ; RM_39_ROOM_OF_BES PS_1D woodsRoom39
496C: 7A 64 9C 4D ; RM_3A_COMPLEX_JUNCTION PS_1E woodsRoom64
4970: 0A 65 B1 4D ; RM_3B_ANTEROOM_OF_SEKER PS_1F woodsRoom106
4974: A1 65 BE 4D ; RM_3C_LAND_OF_DEAD PS_20 woodsRoom108
4978: D5 65 06 4E ; RM_3D_ANCIENT_DRAWINGS PS_21 woodsRoom103
497C: 82 66 21 4E ; RM_3E_MOON_GOD PS_22 woodsRoom102
4980: E0 66 2A 4E ; RM_3F_RAGGED_WALLS PS_23 woodsRoom104
4984: 07 67 33 4E ; RM_40_CUL_DE_SAC PS_24 woodsRoom105
4988: 29 67 3C 4E ; RM_41_CHAMBER_OF_HORUS PS_25 woodsRoom65
498C: 89 67 65 4E ; RM_42_FALLEN_SLAB PS_26 woodsRoom68
4990: 00 00 00 00 ; ?woodsRoom66
4994: D2 6B 3B 4F ; RM_44_CHAMBER_OF_NEKHEBET PS_31 woodsRoom94
4998: 00 00 00 00 ; ?woodsRoom69
499C: B1 6B 32 4F ; RM_46_BLOCKED_FALLEN_BLOCK PS_30 woodsRoom93
49A0: 5C 6B 25 4F ; RM_47_CHAMBER_OF_OSIRIS PS_2F woodsRoom92
49A4: 25 68 6E 4E ; RM_48_PRIESTS_BEDROOM PS_27 woodsRoom96
49A8: 82 68 77 4E ; RM_49_HIGH_PRIEST PS_28 woodsRoom99
;
; Rooms 73 and 76 are the "tight squeeze" with the emerald. In the
; In the Woods implementation, there are 5 rooms here. His ORIENT
; room (97) and his DARK room (101) are dead-ends with one passage
; each. I suspect these were the two
49AC: 00 00 00 00 ; ?
49B0: 00 00 00 00 ; ?woodsRoom91,95, 97,98,101
;
49B4: F6 68 86 4E ; RM_4C_EERIE_GREEN_LIGHT PS_29 woodsRoom100
49B8: F3 6A 0E 4F ; RM_4D_PROFUSION_OF_LEAVES PS_2E woodsRoom88
49BC: 3F 69 9B 4E ; RM_4E_WEAST_END_TWOPIT PS_2A woodsRoom67
49C0: 21 6A A8 4E ; RM_4F_BOTTOM_EASTERN_PIT PS_2B woodsRoom24
49C4: 4B 6A B1 4E ; RM_50_WEST_END_TWOPIT PS_2C woodsRoom23
49C8: 9D 6A BE 4E ; RM_51_BOTTOM_WEST_PIT PS_2D woodsRoom25
Room Scripts
RoomScripts: Script_RM_01_BEFORE_ENTRANCE: ; PS_00 ; YOU_ARE_STANDING_BEFORE_THE_ENTRANCE_OF_A_PYRAMID.__AROUND_YOU__ ; IS_A_DESERT. ; 49CC: 01 03 ; N 49CE: 01 02 ; move_look(RM_02_IN_ENTRANCE) ;; new 49D0: 02 03 ; E 49D2: 01 03 ; move_look(RM_03_DESERT1) ;; new 49D4: 03 03 ; S 49D6: 01 04 ; move_look(RM_04_DESERT2) ;; new 49D8: 04 03 ; W 49DA: 01 05 ; move_look(RM_05_DESERT3) ;; new 49DC: 0B 03 ; IN 49DE: 01 02 ; move_look(RM_02_IN_ENTRANCE) ;; new 49E0: 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. ; 49E1: 03 03 ; S 49E3: 01 01 ; move_look(RM_01_BEFORE_ENTRANCE) ;; new 49E5: 0A 03 ; D 49E7: 01 07 ; move_look(RM_07_BENEATH_A_HOLE) ;; woodsRoom9 49E9: 0C 03 ; OUT 49EB: 01 01 ; move_look(RM_01_BEFORE_ENTRANCE) ;; new 49ED: 12 03 ; PANEL 49EF: 01 1A ; move_look(RM_1A_PANEL_NORTH_WALL) ;; woodsRoom33 49F1: 00 ; Script_RM_03_DESERT1: ; PS_02 ; YOU_ARE_IN_THE_DESERT. ; 49F2: 01 03 ; N 49F4: 01 06 ; move_look(RM_06_DESERT4) ;; new 49F6: 02 03 ; E 49F8: 01 03 ; move_look(RM_03_DESERT1) ;; new 49FA: 03 03 ; S 49FC: 01 04 ; move_look(RM_04_DESERT2) ;; new 49FE: 04 03 ; W 4A00: 01 01 ; move_look(RM_01_BEFORE_ENTRANCE) ;; new 4A02: 00 ; Script_RM_04_DESERT2: ; PS_02 ; YOU_ARE_IN_THE_DESERT. ; 4A03: 01 03 ; N 4A05: 01 01 ; move_look(RM_01_BEFORE_ENTRANCE) ;; new 4A07: 02 03 ; E 4A09: 01 03 ; move_look(RM_03_DESERT1) ;; new 4A0B: 03 03 ; S 4A0D: 01 04 ; move_look(RM_04_DESERT2) ;; new 4A0F: 04 03 ; W 4A11: 01 05 ; move_look(RM_05_DESERT3) ;; new 4A13: 00 ; Script_RM_05_DESERT3: ; PS_02 ; YOU_ARE_IN_THE_DESERT. ; 4A14: 01 03 ; N 4A16: 01 06 ; move_look(RM_06_DESERT4) ;; new 4A18: 02 03 ; E 4A1A: 01 01 ; move_look(RM_01_BEFORE_ENTRANCE) ;; new 4A1C: 03 03 ; S 4A1E: 01 04 ; move_look(RM_04_DESERT2) ;; new 4A20: 04 03 ; W 4A22: 01 05 ; move_look(RM_05_DESERT3) ;; new 4A24: 00 ; Script_RM_06_DESERT4: ; PS_02 ; YOU_ARE_IN_THE_DESERT. ; 4A25: 01 03 ; N 4A27: 01 06 ; move_look(RM_06_DESERT4) ;; new 4A29: 02 03 ; E 4A2B: 01 03 ; move_look(RM_03_DESERT1) ;; new 4A2D: 03 03 ; S 4A2F: 01 01 ; move_look(RM_01_BEFORE_ENTRANCE) ;; new 4A31: 04 03 ; W 4A33: 01 05 ; move_look(RM_05_DESERT3) ;; new 4A35: 00 ; Script_RM_07_BENEATH_A_HOLE: ; woodsRoom9 ; 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." ; 4A36: 09 03 ; U 4A38: 01 02 ; move_look(RM_02_IN_ENTRANCE) ;; new 4A3A: 0C 03 ; OUT 4A3C: 01 02 ; move_look(RM_02_IN_ENTRANCE) ;; new 4A3E: 04 03 ; W 4A40: 01 08 ; move_look(RM_08_CRAWLING_OVER_PEBBLES) ;; woodsRoom10 4A42: 0B 03 ; IN 4A44: 01 08 ; move_look(RM_08_CRAWLING_OVER_PEBBLES) ;; woodsRoom10 4A46: 00 ; Script_RM_08_CRAWLING_OVER_PEBBLES: ; woodsRoom10 ; PS_04 ; YOU_ARE_CRAWLING_OVER_PEBBLES_IN_A_LOW_PASSAGE.__THERE_IS_A_DIM_ ; LIGHT_AT_THE_EAST_END_OF_THE_PASSAGE. ; 4A47: 02 03 ; E 4A49: 01 07 ; move_look(RM_07_BENEATH_A_HOLE) ;; woodsRoom9 4A4B: 0C 03 ; OUT 4A4D: 01 07 ; move_look(RM_07_BENEATH_A_HOLE) ;; woodsRoom9 4A4F: 04 03 ; W 4A51: 01 09 ; move_look(RM_09_BROKEN_POTTERY) ;; woodsRoom11 4A53: 0B 03 ; IN 4A55: 01 09 ; move_look(RM_09_BROKEN_POTTERY) ;; woodsRoom11 4A57: 00 ; Script_RM_09_BROKEN_POTTERY: ; woodsRoom11 ; PS_05 ; YOU_ARE_IN_A_ROOM_FILLED_WITH_BROKEN_POTTERY_SHARDS_OF_ANCIENT__ ; EGYPTIAN_CRAFTS.__AN_AWKWARD_CORRIDOR_LEADS_UPWARD_AND_WEST. ; 4A58: 02 03 ; E 4A5A: 01 08 ; move_look(RM_08_CRAWLING_OVER_PEBBLES) ;; woodsRoom10 4A5C: 0B 03 ; IN 4A5E: 01 0A ; move_look(RM_0A_AWKWARD_SLOPING) ;; woodsRoom12 4A60: 09 03 ; U 4A62: 01 0A ; move_look(RM_0A_AWKWARD_SLOPING) ;; woodsRoom12 4A64: 04 03 ; W 4A66: 01 0A ; move_look(RM_0A_AWKWARD_SLOPING) ;; woodsRoom12 4A68: 00 ; Script_RM_0A_AWKWARD_SLOPING: ; woodsRoom12 ; PS_06 ; YOU_ARE_IN_AN_AWKWARD_SLOPING_EAST/WEST_CORRIDOR. ; 4A69: 0A 03 ; D 4A6B: 01 09 ; move_look(RM_09_BROKEN_POTTERY) ;; woodsRoom11 4A6D: 02 03 ; E 4A6F: 01 09 ; move_look(RM_09_BROKEN_POTTERY) ;; woodsRoom11 4A71: 0B 03 ; IN 4A73: 01 0B ; move_look(RM_0B_SPLENDID_CHAMBER) ;; woodsRoom13 4A75: 04 03 ; W 4A77: 01 0B ; move_look(RM_0B_SPLENDID_CHAMBER) ;; woodsRoom13 4A79: 09 03 ; U 4A7B: 01 0B ; move_look(RM_0B_SPLENDID_CHAMBER) ;; woodsRoom13 4A7D: 00 ; Script_RM_0B_SPLENDID_CHAMBER: ; woodsRoom13 ; 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. ; 4A7E: 02 03 ; E 4A80: 01 0A ; move_look(RM_0A_AWKWARD_SLOPING) ;; woodsRoom12 4A82: 04 03 ; W 4A84: 01 0C ; move_look(RM_0C_SMALL_PIT_WHITE_MIST) ;; woodsRoom14 4A86: 00 ; Script_RM_0C_SMALL_PIT_WHITE_MIST: ; woodsRoom14 ; 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. ; 4A87: 02 03 ; E 4A89: 01 0B ; move_look(RM_0B_SPLENDID_CHAMBER) ;; woodsRoom13 4A8B: 0A 0B ; D 4A8D: 07 07 ; stop_if_pass ... 4A8F: 02 25 ; is_in_pack(OBJ_25_GOLD) 4A91: 04 71 71 ; print(PS_6B) YOU_ARE_AT_THE_BOTTOM_OF_THE_PIT_WITH_A_BROKEN_NECK. 4A94: 05 ; death_and_resurrect() 4A95: 01 0D ; move_look(RM_0D_STEPS_LEAD_UP_DOME) ;; woodsRoom15 4A97: 04 04 ; W 4A99: 04 96 71 ; print(PS_6C) THE_CRACK_IS_FAR_TOO_SMALL_FOR_YOU_TO_FOLLOW. 4A9C: 00 ; Script_RM_0D_STEPS_LEAD_UP_DOME: ; woodsRoom15 ; 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. ; 4A9D: 03 03 ; S 4A9F: 01 0E ; move_look(RM_0E_LOW_ROOM_HIEROGLYPH) ;; woodsRoom18 4AA1: 04 03 ; W 4AA3: 01 0F ; move_look(RM_0F_EAST_BANK_BOTTOMLESS_PIT) ;; woodsRoom17 4AA5: 0A 03 ; D 4AA7: 01 10 ; move_look(RM_10_PHARAOHS_CHAMBER) ;; woodsRoom19 4AA9: 01 03 ; N 4AAB: 01 10 ; move_look(RM_10_PHARAOHS_CHAMBER) ;; woodsRoom19 4AAD: 09 0A ; U 4AAF: 07 06 ; stop_if_pass ... 4AB1: 02 25 ; is_in_pack(OBJ_25_GOLD) 4AB3: 04 B6 71 ; print(PS_6D) THE_DOME_IS_UNCLIMBABLE. 4AB6: 01 0C ; move_look(RM_0C_SMALL_PIT_WHITE_MIST) ;; woodsRoom14 4AB8: 02 0A ; E 4ABA: 07 06 ; stop_if_pass ... 4ABC: 02 25 ; is_in_pack(OBJ_25_GOLD) 4ABE: 04 B6 71 ; print(PS_6D) THE_DOME_IS_UNCLIMBABLE. 4AC1: 01 0C ; move_look(RM_0C_SMALL_PIT_WHITE_MIST) ;; woodsRoom14 4AC3: 20 03 ; ??20?? ;; in CCA loc.c this is GO_Y2 -- command: "GO Y2" or "Y2" 4AC5: 01 1A ; move_look(RM_1A_PANEL_NORTH_WALL) ;; woodsRoom33 4AC7: 00 ; Script_RM_0E_LOW_ROOM_HIEROGLYPH: ; woodsRoom18 ; PS_0A ; THIS_IS_A_LOW_ROOM_WITH_A_HIEROGLYPH_ON_THE_WALL.__IT_TRANSLATES ; "YOU_WON'T_GET_IT_UP_THE_STEPS". ; 4AC8: 0C 03 ; OUT 4ACA: 01 0D ; move_look(RM_0D_STEPS_LEAD_UP_DOME);; woodsRoom15 4ACC: 01 03 ; N 4ACE: 01 0D ; move_look(RM_0D_STEPS_LEAD_UP_DOME) ;; woodsRoom15 4AD0: 00 ; Script_RM_0F_EAST_BANK_BOTTOMLESS_PIT: ; woodsRoom17 ; 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. ; 4AD1: 02 03 ; E 4AD3: 01 0D ; move_look(RM_0D_STEPS_LEAD_UP_DOME) ;; woodsRoom15 4AD5: 10 0C ; JUMP 4AD7: 07 06 ; stop_if_pass ... 4AD9: 03 01 ; is_in_pack_or_current_room(OBJ_01_BRIDGE_ROOM_0F) 4ADB: 04 C8 71 ; print(PS_6E) I_RESPECTFULLY_SUGGEST_YOU_GO_ACROSS_THE_BRIDGE_INSTEAD_OF______ ; JUMPING. 4ADE: 04 FA 71 ; print(PS_6F) YOU_DIDN'T_MAKE_IT. 4AE1: 05 ; death_and_resurrect() 4AE2: 04 0A ; W 4AE4: 07 05 ; stop_if_pass ... 4AE6: 03 01 ; is_in_pack_or_current_room(OBJ_01_BRIDGE_ROOM_0F) 4AE8: 01 12 ; move_look(RM_12_HALL_OF_GODS) ;; woodsRoom27 4AEA: 04 09 72 ; print(PS_70) THERE_IS_NO_WAY_ACROSS_THE_BOTTOMLESS_PIT. 4AED: 0D 05 ; CROSS 4AEF: 03 01 ; is_in_pack_or_current_room(OBJ_01_BRIDGE_ROOM_0F) 4AF1: 01 12 ; move_look(RM_12_HALL_OF_GODS) ;; woodsRoom27 4AF3: 23 18 ; WAVE 4AF5: 11 11 ; is_object_user_input(OBJ_11_SCEPTER) 4AF7: 07 0C ; stop_if_pass ... 4AF9: 03 01 ; is_in_pack_or_current_room(OBJ_01_BRIDGE_ROOM_0F) 4AFB: 15 01 00 ; move_object_to_room(OBJ_01_BRIDGE_ROOM_0F, RM_00_nowhere) 4AFE: 15 02 00 ; move_object_to_room(OBJ_02_BRIDGE_ROOM_12, RM_00_nowhere) 4B01: 04 DE 7B ; print(PS_AE) THE_STONE_BRIDGE_HAS_RETRACTED! 4B04: 18 01 ; move_object_to_current_room(OBJ_01_BRIDGE_ROOM_0F) 4B06: 15 02 12 ; move_object_to_room(OBJ_02_BRIDGE_ROOM_12, RM_12_HALL_OF_GODS) 4B09: 04 F5 7B ; print(PS_AF) A_STONE_BRIDGE_NOW_SPANS_THE_BOTTOMLESS_PIT. 4B0C: 00 ; Script_RM_10_PHARAOHS_CHAMBER: ; woodsRoom19 ; PS_0C ; YOU_ARE_IN_THE_PHARAOH'S_CHAMBER,_WITH_PASSAGES_OFF_IN_ALL______ ; DIRECTIONS. ; 4B0D: 09 03 ; U 4B0F: 01 0D ; move_look(RM_0D_STEPS_LEAD_UP_DOME) ;; woodsRoom15 4B11: 02 03 ; E 4B13: 01 0D ; move_look(RM_0D_STEPS_LEAD_UP_DOME) ;; woodsRoom15 4B15: 03 0A ; S 4B17: 07 06 ; stop_if_pass ... 4B19: 03 0B ; is_in_pack_or_current_room(OBJ_0B_SERPENT) 4B1B: 04 27 72 ; print(PS_71) YOU_CAN'T_GET_BY_THE_SERPENT. 4B1E: 01 11 ; move_look(RM_11_SOUTH_SIDE_CHAMBER) ;; woodsRoom29 4B20: 01 0A ; N 4B22: 07 06 ; stop_if_pass ... 4B24: 03 0B ; is_in_pack_or_current_room(OBJ_0B_SERPENT) 4B26: 04 27 72 ; print(PS_71) YOU_CAN'T_GET_BY_THE_SERPENT. 4B29: 01 19 ; move_look(RM_19_LOW_NS_PASSAGE) ;; woodsRoom28 4B2B: 04 0A ; W 4B2D: 07 06 ; stop_if_pass ... 4B2F: 03 0B ; is_in_pack_or_current_room(OBJ_0B_SERPENT) 4B31: 04 27 72 ; print(PS_71) YOU_CAN'T_GET_BY_THE_SERPENT. 4B34: 01 18 ; move_look(RM_18_THRONE_CHAMBER) ;; woodsRoom30 4B36: 26 10 ; THROW 4B38: 11 14 ; is_object_user_input(OBJ_14_BIRD_IN_BOX) 4B3A: 03 0B ; is_in_pack_or_current_room(OBJ_0B_SERPENT) 4B3C: 15 0B 00 ; move_object_to_room(OBJ_0B_SERPENT, RM_00_nowhere) 4B3F: 18 13 ; move_object_to_current_room(OBJ_13_BIRD) 4B41: 15 14 00 ; move_object_to_room(OBJ_14_BIRD_IN_BOX, RM_00_nowhere) 4B44: 04 A1 7C ; 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. 4B47: 00 ; Script_RM_11_SOUTH_SIDE_CHAMBER: ; woodsRoom29 ; PS_0D ; YOU_ARE_IN_THE_SOUTH_SIDE_CHAMBER. ; 4B48: 01 03 ; N 4B4A: 01 10 ; move_look(RM_10_PHARAOHS_CHAMBER) ;; woodsRoom19 4B4C: 0C 03 ; OUT 4B4E: 01 10 ; move_look(RM_10_PHARAOHS_CHAMBER) ;; woodsRoom19 4B50: 00 ; Script_RM_12_HALL_OF_GODS: ; woodsRoom27 ; PS_0E ; YOU_ARE_ON_THE_WEST_SIDE_OF_THE_BOTTOMLESS_PIT_IN_THE_HALL_OF___ ; GODS. ; 4B51: 10 0C ; JUMP 4B53: 07 06 ; stop_if_pass ... 4B55: 03 02 ; is_in_pack_or_current_room(OBJ_02_BRIDGE_ROOM_12) 4B57: 04 C8 71 ; print(PS_6E) I_RESPECTFULLY_SUGGEST_YOU_GO_ACROSS_THE_BRIDGE_INSTEAD_OF______ ; JUMPING. 4B5A: 04 FA 71 ; print(PS_6F) YOU_DIDN'T_MAKE_IT. 4B5D: 05 ; death_and_resurrect() 4B5E: 02 0A ; E 4B60: 07 05 ; stop_if_pass ... 4B62: 03 02 ; is_in_pack_or_current_room(OBJ_02_BRIDGE_ROOM_12) 4B64: 01 0F ; move_look(RM_0F_EAST_BANK_BOTTOMLESS_PIT) ;; woodsRoom17 4B66: 04 09 72 ; print(PS_70) THERE_IS_NO_WAY_ACROSS_THE_BOTTOMLESS_PIT. 4B69: 01 06 ; N 4B6B: 04 3D 72 ; print(PS_72) YOU_HAVE_CRAWLED_THROUGH_A_VERY_LOW_WIDE_PASSAGE_PARALLEL_TO_AND ; NORTH_OF_THE_HALL_OF_GODS. 4B6E: 01 13 ; move_look(RM_13_LITTLE_PASSAGE_SIX_FEET) ;; woodsRoom41 4B70: 0D 05 ; CROSS 4B72: 03 02 ; is_in_pack_or_current_room(OBJ_02_BRIDGE_ROOM_12) 4B74: 01 0F ; move_look(RM_0F_EAST_BANK_BOTTOMLESS_PIT) ;; woodsRoom17 4B76: 23 18 ; WAVE 4B78: 11 11 ; is_object_user_input(OBJ_11_SCEPTER) 4B7A: 07 0C ; stop_if_pass ... 4B7C: 03 02 ; is_in_pack_or_current_room(OBJ_02_BRIDGE_ROOM_12) 4B7E: 15 02 00 ; move_object_to_room(OBJ_02_BRIDGE_ROOM_12, RM_00_nowhere) 4B81: 15 01 00 ; move_object_to_room(OBJ_01_BRIDGE_ROOM_0F, RM_00_nowhere) 4B84: 04 DE 7B ; print(PS_AE) THE_STONE_BRIDGE_HAS_RETRACTED! 4B87: 18 02 ; move_object_to_current_room(OBJ_02_BRIDGE_ROOM_12) 4B89: 15 01 0F ; move_object_to_room(OBJ_01_BRIDGE_ROOM_0F, RM_0F_EAST_BANK_BOTTOMLESS_PIT) 4B8C: 04 F5 7B ; print(PS_AF) A_STONE_BRIDGE_NOW_SPANS_THE_BOTTOMLESS_PIT. 4B8F: 00 ; Script_RM_13_LITTLE_PASSAGE_SIX_FEET: ; woodsRoom41 ; 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. ; 4B90: 03 03 ; S 4B92: 01 1C ; move_look(RM_1C_TWISTY_PASSAGES1) ;; woodsRoom42 4B94: 09 03 ; U 4B96: 01 1C ; move_look(RM_1C_TWISTY_PASSAGES1) ;; woodsRoom42 4B98: 11 03 ; CLIMB 4B9A: 01 1C ; move_look(RM_1C_TWISTY_PASSAGES1) ;; woodsRoom42 4B9C: 02 03 ; E 4B9E: 01 12 ; move_look(RM_12_HALL_OF_GODS) ;; woodsRoom27 4BA0: 01 03 ; N 4BA2: 01 12 ; move_look(RM_12_HALL_OF_GODS) ;; woodsRoom27 4BA4: 04 03 ; W 4BA6: 01 14 ; move_look(RM_14_EAST_END_LONG_HALL) ;; woodsRoom60 4BA8: 00 ; Script_RM_14_EAST_END_LONG_HALL: ; woodsRoom60 ; 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. ; 4BA9: 02 03 ; E 4BAB: 01 13 ; move_look(RM_13_LITTLE_PASSAGE_SIX_FEET) ;; woodsRoom41 4BAD: 09 03 ; U 4BAF: 01 13 ; move_look(RM_13_LITTLE_PASSAGE_SIX_FEET) ;; woodsRoom41 4BB1: 04 03 ; W 4BB3: 01 15 ; move_look(RM_15_WEST_END_FEATURELESS_HALL) ;; woodsRoom61 4BB5: 01 03 ; N 4BB7: 01 16 ; move_look(RM_16_CROSSOVER) ;; woodsRoom62 4BB9: 0A 03 ; D 4BBB: 01 16 ; move_look(RM_16_CROSSOVER) ;; woodsRoom62 4BBD: 00 ; Script_RM_15_WEST_END_FEATURELESS_HALL: ; woodsRoom61 ; PS_11 ; YOU_ARE_AT_THE_WEST_END_OF_A_VERY_LONG_FEATURELESS_HALL.__THE___ ; HALL_JOINS_UP_WITH_A_NARROW_NORTH/SOUTH_PASSAGE. ; 4BBE: 02 03 ; E 4BC0: 01 14 ; move_look(RM_14_EAST_END_LONG_HALL) ;; woodsRoom60 4BC2: 01 03 ; N 4BC4: 01 16 ; move_look(RM_16_CROSSOVER) ;; woodsRoom62 4BC6: 00 ; Script_RM_16_CROSSOVER: ; woodsRoom62 ; PS_12 ; YOU_ARE_AT_A_CROSSOVER_OF_A_HIGH_N/S_PASSAGE_AND_A_LOW_E/W_ONE. ; 4BC7: 04 03 ; W 4BC9: 01 14 ; move_look(RM_14_EAST_END_LONG_HALL) ;; woodsRoom60 4BCB: 01 03 ; N 4BCD: 01 17 ; move_look(RM_17_DEAD_END1) ;; woodsRoom63 4BCF: 02 03 ; E 4BD1: 01 18 ; move_look(RM_18_THRONE_CHAMBER) ;; woodsRoom30 4BD3: 03 03 ; S 4BD5: 01 15 ; move_look(RM_15_WEST_END_FEATURELESS_HALL) ;; woodsRoom61 4BD7: 00 ; Script_RM_17_DEAD_END1: ; woodsRoom63 ; PS_13 ; DEAD_END. ; 4BD8: 03 03 ; S 4BDA: 01 16 ; move_look(RM_16_CROSSOVER) ;; woodsRoom62 4BDC: 0C 03 ; OUT 4BDE: 01 16 ; move_look(RM_16_CROSSOVER) ;; woodsRoom62 4BE0: 00 ; Script_RM_18_THRONE_CHAMBER: ; woodsRoom30 ; PS_14 ; YOU_ARE_IN_THE_WEST_THRONE_CHAMBER.__A_PASSAGE_CONTINUES_WEST___ ; AND_UP_FROM_HERE. ; 4BE1: 02 03 ; E 4BE3: 01 10 ; move_look(RM_10_PHARAOHS_CHAMBER) ;; woodsRoom19 4BE5: 0C 03 ; OUT 4BE7: 01 10 ; move_look(RM_10_PHARAOHS_CHAMBER) ;; woodsRoom19 4BE9: 04 03 ; W 4BEB: 01 16 ; move_look(RM_16_CROSSOVER) ;; woodsRoom62 4BED: 09 03 ; U 4BEF: 01 16 ; move_look(RM_16_CROSSOVER) ;; woodsRoom62 4BF1: 00 ; Script_RM_19_LOW_NS_PASSAGE: ; woodsRoom28 ; 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. ; 4BF2: 0C 03 ; OUT 4BF4: 01 10 ; move_look(RM_10_PHARAOHS_CHAMBER) ;; woodsRoom19 4BF6: 03 03 ; S 4BF8: 01 10 ; move_look(RM_10_PHARAOHS_CHAMBER) ;; woodsRoom19 4BFA: 01 03 ; N 4BFC: 01 1A ; move_look(RM_1A_PANEL_NORTH_WALL) ;; woodsRoom33 4BFE: 20 03 ; ??20?? ;; in CCA loc.c this is GO_Y2 -- command: "GO Y2" or "Y2" 4C00: 01 1A ; move_look(RM_1A_PANEL_NORTH_WALL) ;; woodsRoom33 4C02: 0A 03 ; D 4C04: 01 36 ; move_look(RM_36_DIRTY_BROKEN_PASSAGE) ;; woodsRoom36 4C06: 00 ; Script_RM_1A_PANEL_NORTH_WALL: ; woodsRoom33 -- this is the Y2 room (with a panel instead of a Y2 rock) ; 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. ; 4C07: 12 03 ; PANEL 4C09: 01 02 ; move_look(RM_02_IN_ENTRANCE) ;; new 4C0B: 03 03 ; S 4C0D: 01 19 ; move_look(RM_19_LOW_NS_PASSAGE) ;; woodsRoom28 4C0F: 02 03 ; E 4C11: 01 1B ; move_look(RM_1B_CHAMBER_OF_ANUBIS) ;; woodsRoom34 4C13: 00 ; Script_RM_1B_CHAMBER_OF_ANUBIS: ; woodsRoom34 ; PS_17 ; YOU_ARE_IN_THE_CHAMBER_OF_ANUBIS. ; 4C14: 0A 03 ; D 4C16: 01 1A ; move_look(RM_1A_PANEL_NORTH_WALL) ;; woodsRoom33 4C18: 20 03 ; ??20?? ;; in CCA loc.c this is GO_Y2 -- command: "GO Y2" or "Y2" 4C1A: 01 1A ; move_look(RM_1A_PANEL_NORTH_WALL) ;; woodsRoom33 4C1C: 09 03 ; U 4C1E: 01 0D ; move_look(RM_0D_STEPS_LEAD_UP_DOME) ;; woodsRoom15 4C20: 00 ; Script_RM_1C_TWISTY_PASSAGES1: ; woodsRoom42 ; PS_18 ; YOU_ARE_IN_A_MAZE_OF_TWISTY_PASSAGES,_ALL_ALIKE. ; 4C21: 01 03 ; N 4C23: 01 1C ; move_look(RM_1C_TWISTY_PASSAGES1) ;; woodsRoom42 4C25: 02 03 ; E 4C27: 01 20 ; move_look(RM_20_TWISTY_PASSAGES5) ;; woodsRoom43 4C29: 03 03 ; S 4C2B: 01 1E ; move_look(RM_1E_TWISTY_PASSAGES3) ;; woodsRoom45 4C2D: 04 03 ; W 4C2F: 01 1D ; move_look(RM_1D_TWISTY_PASSAGES2) ;; woodsRoom80 4C31: 09 03 ; U 4C33: 01 13 ; move_look(RM_13_LITTLE_PASSAGE_SIX_FEET) ;; woodsRoom41 4C35: 00 ; Script_RM_1D_TWISTY_PASSAGES2: ; woodsRoom80 ; PS_18 ; YOU_ARE_IN_A_MAZE_OF_TWISTY_PASSAGES,_ALL_ALIKE. ; 4C36: 01 03 ; N 4C38: 01 1C ; move_look(RM_1C_TWISTY_PASSAGES1) ;; woodsRoom42 4C3A: 02 03 ; E 4C3C: 01 33 ; move_look(RM_33_DEAD_END11) ;; woodsRoom81 4C3E: 03 03 ; S 4C40: 01 1D ; move_look(RM_1D_TWISTY_PASSAGES2) ;; woodsRoom80 4C42: 04 03 ; W 4C44: 01 1D ; move_look(RM_1D_TWISTY_PASSAGES2) ;; woodsRoom80 4C46: 00 ; Script_RM_1E_TWISTY_PASSAGES3: ; woodsRoom45 ; PS_18 ; YOU_ARE_IN_A_MAZE_OF_TWISTY_PASSAGES,_ALL_ALIKE. ; 4C47: 01 03 ; N 4C49: 01 20 ; move_look(RM_20_TWISTY_PASSAGES5) ;; woodsRoom43 4C4B: 02 03 ; E 4C4D: 01 2A ; move_look(RM_2A_DEAD_END2) ;; woodsRoom46 4C4F: 03 03 ; S 4C51: 01 2B ; move_look(RM_2B_DEAD_END3) ;; woodsRoom47 4C53: 04 03 ; W 4C55: 01 1C ; move_look(RM_1C_TWISTY_PASSAGES1) ;; woodsRoom42 4C57: 09 03 ; U 4C59: 01 1F ; move_look(RM_1F_TWISTY_PASSAGES4) ;; woodsRoom87 4C5B: 0A 03 ; D 4C5D: 01 1F ; move_look(RM_1F_TWISTY_PASSAGES4) ;; woodsRoom87 4C5F: 00 ; Script_RM_1F_TWISTY_PASSAGES4: ; woodsRoom87 ; PS_18 ; YOU_ARE_IN_A_MAZE_OF_TWISTY_PASSAGES,_ALL_ALIKE. ; 4C60: 09 03 ; U 4C62: 01 1E ; move_look(RM_1E_TWISTY_PASSAGES3) ;; woodsRoom45 4C64: 0A 03 ; D 4C66: 01 1E ; move_look(RM_1E_TWISTY_PASSAGES3) ;; woodsRoom45 4C68: 00 ; Script_RM_20_TWISTY_PASSAGES5: ; woodsRoom43 ; PS_18 ; YOU_ARE_IN_A_MAZE_OF_TWISTY_PASSAGES,_ALL_ALIKE. ; 4C69: 02 03 ; E 4C6B: 01 1E ; move_look(RM_1E_TWISTY_PASSAGES3) ;; woodsRoom45 4C6D: 03 03 ; S 4C6F: 01 21 ; move_look(RM_21_TWISTY_PASSAGES6) ;; woodsRoom44 4C71: 04 03 ; W 4C73: 01 1C ; move_look(RM_1C_TWISTY_PASSAGES1) ;; woodsRoom42 4C75: 00 ; Script_RM_21_TWISTY_PASSAGES6: ; woodsRoom44 ; PS_18 ; YOU_ARE_IN_A_MAZE_OF_TWISTY_PASSAGES,_ALL_ALIKE. ; 4C76: 01 03 ; N 4C78: 01 2C ; move_look(RM_2C_DEAD_END4) ;; woodsRoom82 4C7A: 02 03 ; E 4C7C: 01 20 ; move_look(RM_20_TWISTY_PASSAGES5) ;; woodsRoom43 4C7E: 03 03 ; S 4C80: 01 22 ; move_look(RM_22_TWISTY_PASSAGES7) ;; woodsRoom50 4C82: 0A 03 ; D 4C84: 01 2D ; move_look(RM_2D_DEAD_END5) ;; woodsRoom48 4C86: 00 ; Script_RM_22_TWISTY_PASSAGES7: ; woodsRoom50 ; PS_18 ; YOU_ARE_IN_A_MAZE_OF_TWISTY_PASSAGES,_ALL_ALIKE. ; 4C87: 02 03 ; E 4C89: 01 21 ; move_look(RM_21_TWISTY_PASSAGES6) ;; woodsRoom44 4C8B: 03 03 ; S 4C8D: 01 23 ; move_look(RM_23_TWISTY_PASSAGES8) ;; woodsRoom52 4C8F: 04 03 ; W 4C91: 01 25 ; move_look(RM_25_TWISTY_PASSAGES10) ;; woodsRoom49 4C93: 0A 03 ; D 4C95: 01 26 ; move_look(RM_26_TWISTY_PASSAGES11) ;; woodsRoom51 4C97: 00 ; Script_RM_23_TWISTY_PASSAGES8: ; woodsRoom52 ; PS_18 ; YOU_ARE_IN_A_MAZE_OF_TWISTY_PASSAGES,_ALL_ALIKE. ; 4C98: 01 03 ; N 4C9A: 01 24 ; move_look(RM_24_TWISTY_PASSAGES9) ;; woodsRoom55 4C9C: 02 03 ; E 4C9E: 01 26 ; move_look(RM_26_TWISTY_PASSAGES11) ;; woodsRoom51 4CA0: 03 03 ; S 4CA2: 01 23 ; move_look(RM_23_TWISTY_PASSAGES8) ;; woodsRoom52 4CA4: 04 03 ; W 4CA6: 01 22 ; move_look(RM_22_TWISTY_PASSAGES7) ;; woodsRoom50 4CA8: 09 03 ; U 4CAA: 01 27 ; move_look(RM_27_TWISTY_PASSAGES12) ;; woodsRoom53 4CAC: 0A 03 ; D 4CAE: 01 2F ; move_look(RM_2F_DEAD_END7) ;; woodsRoom86 4CB0: 00 ; Script_RM_24_TWISTY_PASSAGES9: ; woodsRoom55 ; PS_18 ; YOU_ARE_IN_A_MAZE_OF_TWISTY_PASSAGES,_ALL_ALIKE. ; 4CB1: 01 03 ; N 4CB3: 01 24 ; move_look(RM_24_TWISTY_PASSAGES9) ;; woodsRoom55 4CB5: 02 03 ; E 4CB7: 01 34 ; move_look(RM_34_BRINK_OF_LARGE_PIT) ;; woodsRoom57 4CB9: 04 03 ; W 4CBB: 01 23 ; move_look(RM_23_TWISTY_PASSAGES8) ;; woodsRoom52 4CBD: 0A 03 ; D 4CBF: 01 30 ; move_look(RM_30_DEAD_END8) ;; woodsRoom56 4CC1: 00 ; Script_RM_25_TWISTY_PASSAGES10: ; woodsRoom49 ; PS_18 ; YOU_ARE_IN_A_MAZE_OF_TWISTY_PASSAGES,_ALL_ALIKE. ; 4CC2: 02 03 ; E 4CC4: 01 22 ; move_look(RM_22_TWISTY_PASSAGES7) ;; woodsRoom50 4CC6: 04 03 ; W 4CC8: 01 26 ; move_look(RM_26_TWISTY_PASSAGES11) ;; woodsRoom51 4CCA: 00 ; Script_RM_26_TWISTY_PASSAGES11: ; woodsRoom51 ; PS_18 ; YOU_ARE_IN_A_MAZE_OF_TWISTY_PASSAGES,_ALL_ALIKE. ; 4CCB: 02 03 ; E 4CCD: 01 23 ; move_look(RM_23_TWISTY_PASSAGES8) ;; woodsRoom52 4CCF: 03 03 ; S 4CD1: 01 27 ; move_look(RM_27_TWISTY_PASSAGES12) ;; woodsRoom53 4CD3: 04 03 ; W 4CD5: 01 25 ; move_look(RM_25_TWISTY_PASSAGES10) ;; woodsRoom49 4CD7: 09 03 ; U 4CD9: 01 22 ; move_look(RM_22_TWISTY_PASSAGES7) ;; woodsRoom50 4CDB: 00 ; Script_RM_27_TWISTY_PASSAGES12: ; woodsRoom53 ; PS_18 ; YOU_ARE_IN_A_MAZE_OF_TWISTY_PASSAGES,_ALL_ALIKE. ; 4CDC: 01 03 ; N 4CDE: 01 23 ; move_look(RM_23_TWISTY_PASSAGES8) ;; woodsRoom52 4CE0: 03 03 ; S 4CE2: 01 2E ; move_look(RM_2E_DEAD_END6) ;; woodsRoom54 4CE4: 04 03 ; W 4CE6: 01 26 ; move_look(RM_26_TWISTY_PASSAGES11) ;; woodsRoom51 4CE8: 00 ; Script_RM_28_TWISTY_PASSAGES13: ; woodsRoom84 ; PS_18 ; YOU_ARE_IN_A_MAZE_OF_TWISTY_PASSAGES,_ALL_ALIKE. ; 4CE9: 01 03 ; N 4CEB: 01 34 ; move_look(RM_34_BRINK_OF_LARGE_PIT) ;; woodsRoom57 4CED: 04 03 ; W 4CEF: 01 29 ; move_look(RM_29_TWISTY_PASSAGES14) ;; woodsRoom83 4CF1: 08 03 ; NW 4CF3: 01 35 ; move_look(RM_35_DEAD_END12) ;; woodsRoom114 4CF5: 00 ; Script_RM_29_TWISTY_PASSAGES14: ; woodsRoom83 ; PS_18 ; YOU_ARE_IN_A_MAZE_OF_TWISTY_PASSAGES,_ALL_ALIKE. ; 4CF6: 02 03 ; E 4CF8: 01 28 ; move_look(RM_28_TWISTY_PASSAGES13) ;; woodsRoom84 4CFA: 03 03 ; S 4CFC: 01 34 ; move_look(RM_34_BRINK_OF_LARGE_PIT) ;; woodsRoom57 4CFE: 04 03 ; W 4D00: 01 32 ; move_look(RM_32_DEAD_END10) ;; woodsRoom85 4D02: 00 ; Script_RM_2A_DEAD_END2: ; woodsRoom46 ; PS_13 ; DEAD_END. ; 4D03: 04 03 ; W 4D05: 01 1E ; move_look(RM_1E_TWISTY_PASSAGES3) ;; woodsRoom45 4D07: 00 ; Script_RM_2B_DEAD_END3: ; woodsRoom47 ; PS_13 ; DEAD_END. ; 4D08: 02 03 ; E 4D0A: 01 1E ; move_look(RM_1E_TWISTY_PASSAGES3) ;; woodsRoom45 4D0C: 00 ; Script_RM_2C_DEAD_END4: ; woodsRoom82 ; PS_13 ; DEAD_END. ; 4D0D: 03 03 ; S 4D0F: 01 21 ; move_look(RM_21_TWISTY_PASSAGES6) ;; woodsRoom44 4D11: 00 ; Script_RM_2D_DEAD_END5: ; woodsRoom48 ; PS_13 ; DEAD_END. ; 4D12: 09 03 ; U 4D14: 01 21 ; move_look(RM_21_TWISTY_PASSAGES6) ;; woodsRoom44 4D16: 00 ; Script_RM_2E_DEAD_END6: ; woodsRoom54 ; PS_13 ; DEAD_END. ; 4D17: 04 03 ; W 4D19: 01 27 ; move_look(RM_27_TWISTY_PASSAGES12) ;; woodsRoom53 4D1B: 00 ; Script_RM_2F_DEAD_END7: ; woodsRoom86 ; PS_13 ; DEAD_END. ; 4D1C: 09 03 ; U 4D1E: 01 23 ; move_look(RM_23_TWISTY_PASSAGES8) ;; woodsRoom52 4D20: 00 ; Script_RM_30_DEAD_END8: ; woodsRoom56 ; PS_13 ; DEAD_END. ; 4D21: 09 03 ; U 4D23: 01 24 ; move_look(RM_24_TWISTY_PASSAGES9) ;; woodsRoom55 4D25: 00 ; Script_RM_31_DEAD_END9: ; woodsRoom58 ; PS_13 ; DEAD_END. ; 4D26: 02 03 ; E 4D28: 01 34 ; move_look(RM_34_BRINK_OF_LARGE_PIT) ;; woodsRoom57 4D2A: 00 ; Script_RM_32_DEAD_END10: ; woodsRoom85 ; PS_13 ; DEAD_END. ; 4D2B: 02 03 ; E 4D2D: 01 29 ; move_look(RM_29_TWISTY_PASSAGES14) ;; woodsRoom83 4D2F: 00 ; Script_RM_33_DEAD_END11: ; woodsRoom81 ; PS_13 ; DEAD_END. ; 4D30: 04 03 ; W 4D32: 01 1D ; move_look(RM_1D_TWISTY_PASSAGES2) ;; woodsRoom80 4D34: 21 0B ; DROP 4D36: 11 29 ; is_object_user_input(OBJ_29_COINS) 4D38: 15 29 00 ; move_object_to_room(OBJ_29_COINS, RM_00_nowhere) 4D3B: 18 23 ; move_object_to_current_room(OBJ_23_BATTERIES_FRESH) 4D3D: 04 58 7C ; print(PS_B2) THERE_ARE_NOW_SOME_FRESH_BATTERIES_HERE. 4D40: 00 ; Script_RM_34_BRINK_OF_LARGE_PIT: ; woodsRoom57 ; 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. ; 4D41: 01 03 ; N 4D43: 01 29 ; move_look(RM_29_TWISTY_PASSAGES14) ;; woodsRoom83 4D45: 02 03 ; E 4D47: 01 28 ; move_look(RM_28_TWISTY_PASSAGES13) ;; woodsRoom84 4D49: 03 03 ; S 4D4B: 01 31 ; move_look(RM_31_DEAD_END9) ;; woodsRoom58 4D4D: 04 03 ; W 4D4F: 01 24 ; move_look(RM_24_TWISTY_PASSAGES9) ;; woodsRoom55 4D51: 0A 03 ; D 4D53: 01 0B ; move_look(RM_0B_SPLENDID_CHAMBER) ;; woodsRoom13 4D55: 00 ; Script_RM_35_DEAD_END12: ; woodsRoom114 CHEST_ROOM1 ; PS_13 ; DEAD_END. ; 4D56: 06 03 ; SE 4D58: 01 28 ; move_look(RM_28_TWISTY_PASSAGES13) ;; woodsRoom84 4D5A: 00 ; Script_RM_36_DIRTY_BROKEN_PASSAGE: ; woodsRoom36 ; 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. ; 4D5B: 02 03 ; E 4D5D: 01 37 ; move_look(RM_37_BRINK_OF_CLEAN_PIT) ;; woodsRoom37 4D5F: 04 03 ; W 4D61: 01 39 ; move_look(RM_39_ROOM_OF_BES) ;; woodsRoom39 4D63: 09 03 ; U 4D65: 01 19 ; move_look(RM_19_LOW_NS_PASSAGE) ;; woodsRoom28 4D67: 00 ; Script_RM_37_BRINK_OF_CLEAN_PIT: ; woodsRoom37 ; PS_1B ; YOU_ARE_ON_THE_BRINK_OF_A_SMALL_CLEAN_CLIMBABLE_PIT.__A_CRAWL___ ; LEADS_WEST. ; 4D68: 04 03 ; W 4D6A: 01 36 ; move_look(RM_36_DIRTY_BROKEN_PASSAGE) ;; woodsRoom36 4D6C: 0A 03 ; D 4D6E: 01 38 ; move_look(RM_38_PIT_LITTLE_STREAM) ;; woodsRoom38 4D70: 11 03 ; CLIMB 4D72: 01 38 ; move_look(RM_38_PIT_LITTLE_STREAM) ;; woodsRoom38 4D74: 00 ; Script_RM_38_PIT_LITTLE_STREAM: ; woodsRoom38 ; PS_1C ; YOU_ARE_IN_THE_BOTTOM_OF_A_SMALL_PIT_WITH_A_LITTLE_STREAM,_WHICH ; ENTERS_AND_EXITS_THROUGH_TINY_SLITS. ; 4D75: 09 03 ; U 4D77: 01 37 ; move_look(RM_37_BRINK_OF_CLEAN_PIT) ;; woodsRoom37 4D79: 0C 03 ; OUT 4D7B: 01 37 ; move_look(RM_37_BRINK_OF_CLEAN_PIT) ;; woodsRoom37 4D7D: 11 03 ; CLIMB 4D7F: 01 37 ; move_look(RM_37_BRINK_OF_CLEAN_PIT) ;; woodsRoom37 4D81: 0A 04 ; D 4D83: 04 7B 72 ; print(PS_73) YOU_DON'T_FIT_THROUGH_TWO-INCH_SLIT! 4D86: 27 0B ; FILL 4D88: 07 06 ; stop_if_pass ... 4D8A: 02 1C ; is_in_pack(OBJ_1C_WATER) 4D8C: 04 37 7B ; print(PS_AC) YOUR_BOTTLE_IS_ALREADY_FULL. 4D8F: 19 1C 1B ; put_object_in_container_print_ok(OBJ_1C_WATER, OBJ_1B_BOTTLE) 4D92: 00 ; Script_RM_39_ROOM_OF_BES: ; woodsRoom39 ; 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. ; 4D93: 02 03 ; E 4D95: 01 36 ; move_look(RM_36_DIRTY_BROKEN_PASSAGE) ;; woodsRoom36 4D97: 0A 03 ; D 4D99: 01 3A ; move_look(RM_3A_COMPLEX_JUNCTION) ;; woodsRoom64 4D9B: 00 ; Script_RM_3A_COMPLEX_JUNCTION: ; woodsRoom64 ; 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. ; 4D9C: 01 03 ; N 4D9E: 01 3D ; move_look(RM_3D_ANCIENT_DRAWINGS) ;; woodsRoom103 4DA0: 02 03 ; E 4DA2: 01 3B ; move_look(RM_3B_ANTEROOM_OF_SEKER) ;; woodsRoom106 4DA4: 04 03 ; W 4DA6: 01 41 ; move_look(RM_41_CHAMBER_OF_HORUS) ;; woodsRoom65 4DA8: 09 03 ; U 4DAA: 01 39 ; move_look(RM_39_ROOM_OF_BES) ;; woodsRoom39 4DAC: 11 03 ; CLIMB 4DAE: 01 39 ; move_look(RM_39_ROOM_OF_BES) ;; woodsRoom39 4DB0: 00 ; Script_RM_3B_ANTEROOM_OF_SEKER: ; woodsRoom106 ; 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." ; 4DB1: 02 03 ; E 4DB3: 01 3C ; move_look(RM_3C_LAND_OF_DEAD) ;; woodsRoom108 4DB5: 04 03 ; W 4DB7: 01 41 ; move_look(RM_41_CHAMBER_OF_HORUS) ;; woodsRoom65 4DB9: 09 03 ; U 4DBB: 01 3A ; move_look(RM_3A_COMPLEX_JUNCTION) ;; woodsRoom64 4DBD: 00 ; Script_RM_3C_LAND_OF_DEAD: ; woodsRoom108 ; PS_20 ; YOU_ARE_AT_THE_LAND_OF_DEAD.__PASSAGES_LEAD_OFF_IN_>ALL<________ ; DIRECTIONS. ; 4DBE: 01 07 ; N 4DC0: 07 03 ; stop_if_pass ... 4DC2: 0A F0 ; pyramid_crawl_move_random(0xF0) 4DC4: 01 3B ; move_look(RM_3B_ANTEROOM_OF_SEKER) ;; woodsRoom106 4DC6: 02 07 ; E 4DC8: 07 03 ; stop_if_pass ... 4DCA: 0A F0 ; pyramid_crawl_move_random(0xF0) 4DCC: 01 3B ; move_look(RM_3B_ANTEROOM_OF_SEKER) ;; woodsRoom106 4DCE: 03 07 ; S 4DD0: 07 03 ; stop_if_pass ... 4DD2: 0A F0 ; pyramid_crawl_move_random(0xF0) 4DD4: 01 3B ; move_look(RM_3B_ANTEROOM_OF_SEKER) ;; woodsRoom106 4DD6: 05 07 ; NE 4DD8: 07 03 ; stop_if_pass ... 4DDA: 0A F0 ; pyramid_crawl_move_random(0xF0) 4DDC: 01 3B ; move_look(RM_3B_ANTEROOM_OF_SEKER) ;; woodsRoom106 4DDE: 06 07 ; SE 4DE0: 07 03 ; stop_if_pass ... 4DE2: 0A F0 ; pyramid_crawl_move_random(0xF0) 4DE4: 01 3B ; move_look(RM_3B_ANTEROOM_OF_SEKER) ;; woodsRoom106 4DE6: 07 07 ; SW 4DE8: 07 03 ; stop_if_pass ... 4DEA: 0A F0 ; pyramid_crawl_move_random(0xF0) 4DEC: 01 3B ; move_look(RM_3B_ANTEROOM_OF_SEKER) ;; woodsRoom106 4DEE: 08 07 ; NW 4DF0: 07 03 ; stop_if_pass ... 4DF2: 0A F0 ; pyramid_crawl_move_random(0xF0) 4DF4: 01 3B ; move_look(RM_3B_ANTEROOM_OF_SEKER) ;; woodsRoom106 4DF6: 09 07 ; U 4DF8: 07 03 ; stop_if_pass ... 4DFA: 0A F0 ; pyramid_crawl_move_random(0xF0) 4DFC: 01 3B ; move_look(RM_3B_ANTEROOM_OF_SEKER) ;; woodsRoom106 4DFE: 04 06 ; W 4E00: 04 CF 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. 4E03: 01 3C ; move_look(RM_3C_LAND_OF_DEAD) ;; woodsRoom108 4E05: 00 ; Script_RM_3D_ANCIENT_DRAWINGS: ; woodsRoom103 ; 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. ; 4E06: 03 11 ; S 4E08: 07 06 ; stop_if_pass ... 4E0A: 02 17 ; is_in_pack(OBJ_17_SARCOPH_FULL) 4E0C: 04 27 73 ; print(PS_76) YOU_CAN'T_FIT_THIS_BIG_SARCOPHAGUS_THROUGH_THAT_LITTLE_PASSAGE! 4E0F: 07 06 ; stop_if_pass ... 4E11: 02 18 ; is_in_pack(OBJ_18_SARCOPH_EMPTY) 4E13: 04 27 73 ; print(PS_76) YOU_CAN'T_FIT_THIS_BIG_SARCOPHAGUS_THROUGH_THAT_LITTLE_PASSAGE! 4E16: 01 3A ; move_look(RM_3A_COMPLEX_JUNCTION) ;; woodsRoom64 4E18: 09 03 ; U 4E1A: 01 3E ; move_look(RM_3E_MOON_GOD) ;; woodsRoom102 4E1C: 0A 03 ; D 4E1E: 01 3F ; move_look(RM_3F_RAGGED_WALLS) ;; woodsRoom104 4E20: 00 ; Script_RM_3E_MOON_GOD: ; woodsRoom102 ; 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. ; 4E21: 0A 03 ; D 4E23: 01 3D ; move_look(RM_3D_ANCIENT_DRAWINGS) ;; woodsRoom103 4E25: 0C 03 ; OUT 4E27: 01 3D ; move_look(RM_3D_ANCIENT_DRAWINGS) ;; woodsRoom103 4E29: 00 ; Script_RM_3F_RAGGED_WALLS: ; woodsRoom104 ; PS_23 ; YOU_ARE_IN_A_LONG_SLOPING_CORRIDOR_WITH_RAGGED_WALLS._ ; 4E2A: 09 03 ; U 4E2C: 01 3D ; move_look(RM_3D_ANCIENT_DRAWINGS) ;; woodsRoom103 4E2E: 0A 03 ; D 4E30: 01 40 ; move_look(RM_40_CUL_DE_SAC) ;; woodsRoom105 4E32: 00 ; Script_RM_40_CUL_DE_SAC: ; woodsRoom105 ; PS_24 ; YOU_ARE_IN_A_CUL-DE-SAC_ABOUT_EIGHT_FEET_ACROSS. ; 4E33: 09 03 ; U 4E35: 01 3F ; move_look(RM_3F_RAGGED_WALLS) ;; woodsRoom104 4E37: 0C 03 ; OUT 4E39: 01 3F ; move_look(RM_3F_RAGGED_WALLS) ;; woodsRoom104 4E3B: 00 ; Script_RM_41_CHAMBER_OF_HORUS: ; woodsRoom65 ; 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. ; 4E3C: 02 03 ; E 4E3E: 01 3A ; move_look(RM_3A_COMPLEX_JUNCTION) ;; woodsRoom64 4E40: 04 03 ; W 4E42: 01 4E ; move_look(RM_4E_WEAST_END_TWOPIT) ;; woodsRoom67 4E44: 09 07 ; U 4E46: 07 03 ; stop_if_pass ... 4E48: 0A CC ; pyramid_crawl_move_random(0xCC) 4E4A: 01 48 ; move_look(RM_48_PRIESTS_BEDROOM) ;; woodsRoom96 4E4C: 01 07 ; N 4E4E: 07 03 ; stop_if_pass ... 4E50: 0A CC ; pyramid_crawl_move_random(0xCC) 4E52: 01 49 ; move_look(RM_49_HIGH_PRIEST) ;; woodsRoom99 4E54: 03 07 ; S 4E56: 07 03 ; stop_if_pass ... 4E58: 0A CC ; pyramid_crawl_move_random(0xCC) 4E5A: 01 42 ; move_look(RM_42_FALLEN_SLAB) ;; woodsRoom68 4E5C: 0A 07 ; D 4E5E: 07 03 ; stop_if_pass ... 4E60: 0A CC ; pyramid_crawl_move_random(0xCC) 4E62: 01 3B ; move_look(RM_3B_ANTEROOM_OF_SEKER) ;; woodsRoom106 4E64: 00 ; Script_RM_42_FALLEN_SLAB: ; woodsRoom68 ; 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. ; 4E65: 01 03 ; N 4E67: 01 41 ; move_look(RM_41_CHAMBER_OF_HORUS) ;; woodsRoom65 4E69: 03 03 ; S 4E6B: 01 50 ; move_look(RM_50_WEST_END_TWOPIT) ;; woodsRoom23 4E6D: 00 ; Script_RM_48_PRIESTS_BEDROOM: ; woodsRoom96 ; 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. ; 4E6E: 04 03 ; W 4E70: 01 41 ; move_look(RM_41_CHAMBER_OF_HORUS) ;; woodsRoom65 4E72: 0C 03 ; OUT 4E74: 01 41 ; move_look(RM_41_CHAMBER_OF_HORUS) ;; woodsRoom65 4E76: 00 ; Script_RM_49_HIGH_PRIEST: ; woodsRoom99 ; 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. ; 4E77: 04 09 ; W 4E79: 07 04 ; stop_if_pass ... 4E7B: 0D ; is_pack_just_emerald() 4E7C: 01 4C ; move_look(RM_4C_EERIE_GREEN_LIGHT) ;; woodsRoom100 4E7E: 04 53 73 ; print(PS_77) SOMETHING_YOU'RE_CARRYING_WON'T_FIT_THROUGH_THE_TUNNEL_WITH_YOU. ; YOU'D_BEST_TAKE_INVENTORY_AND_DROP_SOMETHING. 4E81: 06 03 ; SE 4E83: 01 41 ; move_look(RM_41_CHAMBER_OF_HORUS) ;; woodsRoom65 4E85: 00 ; Script_RM_4C_EERIE_GREEN_LIGHT: ; woodsRoom100 ; PS_29 ; YOU_ARE_IN_THE_HIGH_PRIEST'S_TREASURE_ROOM_LIT_BY_AN_EERIE_GREEN ; LIGHT.__A_NARROW_TUNNEL_EXITS_TO_THE_EAST. ; 4E86: 02 09 ; E 4E88: 07 04 ; stop_if_pass ... 4E8A: 0D ; is_pack_just_emerald() 4E8B: 01 49 ; move_look(RM_49_HIGH_PRIEST) ;; woodsRoom99 4E8D: 04 53 73 ; print(PS_77) SOMETHING_YOU'RE_CARRYING_WON'T_FIT_THROUGH_THE_TUNNEL_WITH_YOU. ; YOU'D_BEST_TAKE_INVENTORY_AND_DROP_SOMETHING. 4E90: 0C 09 ; OUT 4E92: 07 04 ; stop_if_pass ... 4E94: 0D ; is_pack_just_emerald() 4E95: 01 49 ; move_look(RM_49_HIGH_PRIEST) ;; woodsRoom99 4E97: 04 53 73 ; print(PS_77) SOMETHING_YOU'RE_CARRYING_WON'T_FIT_THROUGH_THE_TUNNEL_WITH_YOU. ; YOU'D_BEST_TAKE_INVENTORY_AND_DROP_SOMETHING. 4E9A: 00 ; Script_RM_4E_WEAST_END_TWOPIT: ; woodsRoom67 ; 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. ; 4E9B: 02 03 ; E 4E9D: 01 41 ; move_look(RM_41_CHAMBER_OF_HORUS) ;; woodsRoom65 4E9F: 04 03 ; W 4EA1: 01 50 ; move_look(RM_50_WEST_END_TWOPIT) ;; woodsRoom23 4EA3: 0A 03 ; D 4EA5: 01 4F ; move_look(RM_4F_BOTTOM_EASTERN_PIT) ;; woodsRoom24 4EA7: 00 ; Script_RM_4F_BOTTOM_EASTERN_PIT: ; woodsRoom24 ; PS_2B ; YOU_ARE_AT_THE_BOTTOM_OF_THE_EASTERN_PIT_IN_THE_TWOPIT_ROOM. ; 4EA8: 09 03 ; U 4EAA: 01 4E ; move_look(RM_4E_WEAST_END_TWOPIT) ;; woodsRoom67 4EAC: 0C 03 ; OUT 4EAE: 01 4E ; move_look(RM_4E_WEAST_END_TWOPIT) ;; woodsRoom67 4EB0: 00 ; Script_RM_50_WEST_END_TWOPIT: ; woodsRoom23 ; 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. ; 4EB1: 02 03 ; E 4EB3: 01 4E ; move_look(RM_4E_WEAST_END_TWOPIT) ;; woodsRoom67 4EB5: 04 03 ; W 4EB7: 01 42 ; move_look(RM_42_FALLEN_SLAB) ;; woodsRoom68 4EB9: 0A 03 ; D 4EBB: 01 51 ; move_look(RM_51_BOTTOM_WEST_PIT) ;; woodsRoom25 4EBD: 00 ; Script_RM_51_BOTTOM_WEST_PIT: ; woodsRoom25 ; 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. ; 4EBE: 09 03 ; U 4EC0: 01 50 ; move_look(RM_50_WEST_END_TWOPIT) ;; woodsRoom23 4EC2: 0C 03 ; OUT 4EC4: 01 50 ; move_look(RM_50_WEST_END_TWOPIT) ;; woodsRoom23 4EC6: 11 16 ; CLIMB 4EC8: 07 08 ; stop_if_pass ... 4ECA: 03 09 ; is_in_pack_or_current_room(OBJ_09_PLANT_LARGE) 4ECC: 04 9E 73 ; print(PS_78) YOU_CLAMBER_UP_THE_PLANT_AND_SCURRY_THROUGH_THE_HOLE_AT_THE_TOP. 4ECF: 01 4D ; move_look(RM_4D_PROFUSION_OF_LEAVES) ;; woodsRoom88 4ED1: 07 06 ; stop_if_pass ... 4ED3: 03 08 ; is_in_pack_or_current_room(OBJ_08_PLANT_MEDIUM) 4ED5: 04 CB 73 ; print(PS_79) YOU'VE_CLIMBED_UP_THE_PLANT_AND_OUT_OF_THE_PIT. 4ED8: 01 50 ; move_look(RM_50_WEST_END_TWOPIT) ;; woodsRoom23 4EDA: 04 7D 7D ; print(PS_B8) THERE_IS_NOTHING_HERE_TO_CLIMB.__USE_UP_OR_OUT_TO_LEAVE_THE_PIT. 4EDD: 24 2F ; POUR 4EDF: 11 1C ; is_object_user_input(OBJ_1C_WATER) 4EE1: 15 1C 00 ; move_object_to_room(OBJ_1C_WATER, RM_00_nowhere) 4EE4: 07 0E ; stop_if_pass ... 4EE6: 03 07 ; is_in_pack_or_current_room(OBJ_07_PLANT_SMALL) 4EE8: 15 07 00 ; move_object_to_room(OBJ_07_PLANT_SMALL, RM_00_nowhere) 4EEB: 18 08 ; move_object_to_current_room(OBJ_08_PLANT_MEDIUM) 4EED: 04 02 7D ; print(PS_B5) THE_PLANT_SPURTS_INTO_FURIOUS_GROWTH_FOR_A_FEW_SECONDS. 4EF0: 04 71 6E ; print(PS_4C) THERE_IS_A_TWELVE_FOOT_BEAN_STALK_STRETCHING_UP_OUT_OF_THE_PIT,_ ; BELLOWING_"WATER..._WATER..." 4EF3: 07 0E ; stop_if_pass ... 4EF5: 03 08 ; is_in_pack_or_current_room(OBJ_08_PLANT_MEDIUM) 4EF7: 15 08 00 ; move_object_to_room(OBJ_08_PLANT_MEDIUM, RM_00_nowhere) 4EFA: 18 09 ; move_object_to_current_room(OBJ_09_PLANT_LARGE) 4EFC: 04 29 7D ; print(PS_B6) THE_PLANT_GROWS_EXPLOSIVELY,_ALMOST_FILLING_THE_BOTTOM_OF_THE___ ; PIT. 4EFF: 04 B1 6E ; print(PS_4D) THERE_IS_A_GIGANTIC_BEAN_STALK_STRETCHING_ALL_THE_WAY_UP_TO_THE_ ; HOLE. 4F02: 15 09 00 ; move_object_to_room(OBJ_09_PLANT_LARGE, RM_00_nowhere) 4F05: 18 07 ; move_object_to_current_room(OBJ_07_PLANT_SMALL) 4F07: 04 59 7D ; print(PS_B7) YOU'VE_OVER-WATERED_THE_PLANT!__IT'S_SHRIVELING_UP! 4F0A: 04 45 6E ; print(PS_4B) THERE_IS_A_TINY_PLANT_IN_THE_PIT,_MURMURING_"WATER,_WATER,_..." 4F0D: 00 ; Script_RM_4D_PROFUSION_OF_LEAVES: ; woodsRoom88 ; 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. ; 4F0E: 02 03 ; E 4F10: 01 51 ; move_look(RM_51_BOTTOM_WEST_PIT) ;; woodsRoom25 4F12: 0A 03 ; D 4F14: 01 51 ; move_look(RM_51_BOTTOM_WEST_PIT) ;; woodsRoom25 4F16: 11 03 ; CLIMB 4F18: 01 51 ; move_look(RM_51_BOTTOM_WEST_PIT) ;; woodsRoom25 4F1A: 10 05 ; JUMP 4F1C: 04 71 71 ; print(PS_6B) YOU_ARE_AT_THE_BOTTOM_OF_THE_PIT_WITH_A_BROKEN_NECK. 4F1F: 05 ; death_and_resurrect() 4F20: 04 03 ; W 4F22: 01 47 ; move_look(RM_47_CHAMBER_OF_OSIRIS) ;; woodsRoom92 4F24: 00 ; Script_RM_47_CHAMBER_OF_OSIRIS: ; woodsRoom92 ; 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. ; 4F25: 01 03 ; N 4F27: 01 44 ; move_look(RM_44_CHAMBER_OF_NEKHEBET) ;; woodsRoom94 4F29: 02 03 ; E 4F2B: 01 46 ; move_look(RM_46_BLOCKED_FALLEN_BLOCK) ;; woodsRoom93 4F2D: 03 03 ; S 4F2F: 01 4D ; move_look(RM_4D_PROFUSION_OF_LEAVES) ;; woodsRoom88 4F31: 00 ; Script_RM_46_BLOCKED_FALLEN_BLOCK: ; woodsRoom93 ; PS_30 ; THE_PASSAGE_HERE_IS_BLOCKED_BY_A_FALLEN_BLOCK. ; 4F32: 03 03 ; S 4F34: 01 47 ; move_look(RM_47_CHAMBER_OF_OSIRIS) ;; woodsRoom92 4F36: 0C 03 ; OUT 4F38: 01 47 ; move_look(RM_47_CHAMBER_OF_OSIRIS) ;; woodsRoom92 4F3A: 00 ; Script_RM_44_CHAMBER_OF_NEKHEBET: ; woodsRoom94 ; 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. ; 4F3B: 03 03 ; S 4F3D: 01 47 ; move_look(RM_47_CHAMBER_OF_OSIRIS) ;; woodsRoom92 4F3F: 0C 03 ; OUT 4F41: 01 47 ; move_look(RM_47_CHAMBER_OF_OSIRIS) ;; woodsRoom92 4F43: 00 ; 4F44: 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. The room-score values would need to be saved. Thus the save-to-tape begins here even though nothing changes.
; 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
4F45: 40 00 ; RM_01_BEFORE_ENTRANCE natural light
4F47: 40 00 ; RM_02_IN_ENTRANCE natural light
4F49: 40 00 ; RM_03_DESERT1 natural light
4F4B: 40 00 ; RM_04_DESERT2 natural light
4F4D: 40 00 ; RM_05_DESERT3 natural light
4F4F: 40 00 ; RM_06_DESERT4 natural light
4F51: 40 00 ; RM_07_BENEATH_A_HOLE natural light
4F53: 00 00 ; RM_08_CRAWLING_OVER_PEBBLES dark
4F55: 00 00 ; RM_09_BROKEN_POTTERY dark
4F57: 00 00 ; RM_0A_AWKWARD_SLOPING dark
4F59: 00 00 ; RM_0B_SPLENDID_CHAMBER dark
4F5B: 00 00 ; RM_0C_SMALL_PIT_WHITE_MIST dark
4F5D: 00 00 ; RM_0D_STEPS_LEAD_UP_DOME dark
4F5F: 00 00 ; RM_0E_LOW_ROOM_HIEROGLYPH dark
4F61: 00 00 ; RM_0F_EAST_BANK_BOTTOMLESS_PIT dark
4F63: 00 00 ; RM_10_PHARAOHS_CHAMBER dark
4F65: 00 00 ; RM_11_SOUTH_SIDE_CHAMBER dark
4F67: 00 00 ; RM_12_HALL_OF_GODS dark
4F69: 00 00 ; RM_13_LITTLE_PASSAGE_SIX_FEET dark
4F6B: 00 00 ; RM_14_EAST_END_LONG_HALL dark
4F6D: 00 00 ; RM_15_WEST_END_FEATURELESS_HALL dark
4F6F: 00 00 ; RM_16_CROSSOVER dark
4F71: 00 00 ; RM_17_DEAD_END1 dark
4F73: 00 00 ; RM_18_THRONE_CHAMBER dark
4F75: 00 00 ; RM_19_LOW_NS_PASSAGE dark
4F77: 00 00 ; RM_1A_PANEL_NORTH_WALL dark
4F79: 00 00 ; RM_1B_CHAMBER_OF_ANUBIS dark
4F7B: 00 00 ; RM_1C_TWISTY_PASSAGES1 dark
4F7D: 00 00 ; RM_1D_TWISTY_PASSAGES2 dark
4F7F: 00 00 ; RM_1E_TWISTY_PASSAGES3 dark
4F81: 00 00 ; RM_1F_TWISTY_PASSAGES4 dark
4F83: 00 00 ; RM_20_TWISTY_PASSAGES5 dark
4F85: 00 00 ; RM_21_TWISTY_PASSAGES6 dark
4F87: 00 00 ; RM_22_TWISTY_PASSAGES7 dark
4F89: 00 00 ; RM_23_TWISTY_PASSAGES8 dark
4F8B: 00 00 ; RM_24_TWISTY_PASSAGES9 dark
4F8D: 00 00 ; RM_25_TWISTY_PASSAGES10 dark
4F8F: 00 00 ; RM_26_TWISTY_PASSAGES11 dark
4F91: 00 00 ; RM_27_TWISTY_PASSAGES12 dark
4F93: 00 00 ; RM_28_TWISTY_PASSAGES13 dark
4F95: 00 00 ; RM_29_TWISTY_PASSAGES14 dark
4F97: 00 00 ; RM_2A_DEAD_END2 dark
4F99: 00 00 ; RM_2B_DEAD_END3 dark
4F9B: 00 00 ; RM_2C_DEAD_END4 dark
4F9D: 00 00 ; RM_2D_DEAD_END5 dark
4F9F: 00 00 ; RM_2E_DEAD_END6 dark
4FA1: 00 00 ; RM_2F_DEAD_END7 dark
4FA3: 00 00 ; RM_30_DEAD_END8 dark
4FA5: 00 00 ; RM_31_DEAD_END9 dark
4FA7: 00 00 ; RM_32_DEAD_END10 dark
4FA9: 00 00 ; RM_33_DEAD_END11 dark
4FAB: 00 00 ; RM_34_BRINK_OF_LARGE_PIT dark
4FAD: 00 00 ; RM_35_DEAD_END12 dark
4FAF: 00 00 ; RM_36_DIRTY_BROKEN_PASSAGE dark
4FB1: 00 00 ; RM_37_BRINK_OF_CLEAN_PIT dark
4FB3: 00 00 ; RM_38_PIT_LITTLE_STREAM dark
4FB5: 00 00 ; RM_39_ROOM_OF_BES dark
4FB7: 00 00 ; RM_3A_COMPLEX_JUNCTION dark
4FB9: 00 00 ; RM_3B_ANTEROOM_OF_SEKER dark
4FBB: 00 00 ; RM_3C_LAND_OF_DEAD dark
4FBD: 00 00 ; RM_3D_ANCIENT_DRAWINGS dark
4FBF: 00 00 ; RM_3E_MOON_GOD dark
4FC1: 00 00 ; RM_3F_RAGGED_WALLS dark
4FC3: 00 00 ; RM_40_CUL_DE_SAC dark
4FC5: 00 00 ; RM_41_CHAMBER_OF_HORUS dark
4FC7: 00 00 ; RM_42_FALLEN_SLAB dark
4FC9: 00 00 ; RM_43_
4FCB: 00 00 ; RM_44_CHAMBER_OF_NEKHEBET dark
4FCD: 00 00 ; RM_45_
4FCF: 00 00 ; RM_46_BLOCKED_FALLEN_BLOCK dark
4FD1: 00 00 ; RM_47_CHAMBER_OF_OSIRIS dark
4FD3: 00 00 ; RM_48_PRIESTS_BEDROOM dark
4FD5: 00 00 ; RM_49_HIGH_PRIEST dark
4FD7: 00 00 ; RM_4A_
4FD9: 00 00 ; RM_4B_
4FDB: 40 00 ; RM_4C_EERIE_GREEN_LIGHT "LIT_BY_AN_ERRIE_GREEN_LIGHT"
4FDD: 00 00 ; RM_4D_PROFUSION_OF_LEAVES dark
4FDF: 00 00 ; RM_4E_WEAST_END_TWOPIT dark
4FE1: 00 00 ; RM_4F_BOTTOM_EASTERN_PIT dark
4FE3: 00 00 ; RM_50_WEST_END_TWOPIT dark
4FE5: 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. All object names begin with "#". All word names begin with "_".
;
; 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
4FE7: 00 00 ; 000..... OBJ_01_BRIDGE_ROOM_0F *
4FE9: 00 00 ; 000..... OBJ_02_BRIDGE_ROOM_12 *
4FEB: 00 00 ;
4FED: 00 00 ;
4FEF: 00 00 ;
4FF1: 00 33 ; 000..... OBJ_06_VENDING_MACHINE RM_33_DEAD_END11
4FF3: 00 51 ; 000..... OBJ_07_PLANT_SMALL RM_51_BOTTOM_WEST_PIT
4FF5: 00 00 ; 000..... OBJ_08_PLANT_MEDIUM *
4FF7: 00 00 ; 000..... OBJ_09_PLANT_LARGE *
4FF9: 00 00 ;
4FFB: 00 10 ; 000..... OBJ_0B_SERPENT RM_10_PHARAOHS_CHAMBER
4FFD: 00 00 ;
4FFF: 00 00 ;
5001: 40 02 ; 010..... OBJ_0E_LAMP_OFF RM_02_IN_ENTRANCE
5003: 40 00 ; 010..... OBJ_0F_LAMP_ON *
5005: 40 08 ; 010..... OBJ_10_BOX RM_08_CRAWLING_OVER_PEBBLES
5007: 40 09 ; 010..... OBJ_11_SCEPTER RM_09_BROKEN_POTTERY
5009: 40 48 ; 010..... OBJ_12_PILLOW RM_48_PRIESTS_BEDROOM
500B: 40 0B ; 010..... OBJ_13_BIRD RM_0B_SPLENDID_CHAMBER
500D: 00 00 ; 000..... OBJ_14_BIRD_IN_BOX *
500F: 00 00 ; 000..... OBJ_15_POTTERY *
5011: 60 00 ; 011..... OBJ_16_PEARL *
5013: 40 3D ; 010..... OBJ_17_SARCOPH_FULL RM_3D_ANCIENT_DRAWINGS
5015: 40 00 ; 010..... OBJ_18_SARCOPH_EMPTY *
5017: 40 3B ; 010..... OBJ_19_MAGAZINES RM_3B_ANTEROOM_OF_SEKER
5019: 40 02 ; 010..... OBJ_1A_FOOD RM_02_IN_ENTRANCE
501B: 40 02 ; 010..... OBJ_1B_BOTTLE RM_02_IN_ENTRANCE
501D: C0 1B ; 110..... OBJ_1C_WATER RM_1B_CHAMBER_OF_ANUBIS
501F: 00 00 ; oil (in the bottle) from the eastern pit ??
5021: 00 38 ; 000..... OBJ_1E_STREAM_ROOM_38 RM_38_PIT_LITTLE_STREAM
5023: 60 4C ; 011..... OBJ_1F_EMERALD RM_4C_EERIE_GREEN_LIGHT
5025: 60 00 ; 011..... OBJ_20_VASE_ON_PILLOW *
5027: 60 49 ; 011..... OBJ_21_VASE RM_49_HIGH_PRIEST
5029: 60 44 ; 011..... OBJ_22_KEY RM_44_CHAMBER_OF_NEKHEBET
502B: 40 00 ; 010..... OBJ_23_BATTERIES_FRESH *
502D: 40 00 ; 010..... OBJ_24_BATTERIES_WORN *
502F: 60 0E ; 011..... OBJ_25_GOLD RM_0E_LOW_ROOM_HIEROGLYPH
5031: 60 11 ; 011..... OBJ_26_DIAMONDS RM_11_SOUTH_SIDE_CHAMBER
5033: 60 19 ; 011..... OBJ_27_SILVER RM_19_LOW_NS_PASSAGE
5035: 60 12 ; 011..... OBJ_28_JEWELRY RM_12_HALL_OF_GODS
5037: 60 18 ; 011..... OBJ_29_COINS RM_18_THRONE_CHAMBER
5039: 60 00 ; 011..... OBJ_2A_CHEST *
503B: 60 47 ; 011..... OBJ_2B_NEST_EGGS RM_47_CHAMBER_OF_OSIRIS
503D: 40 00 ; 010..... OBJ_2C_LAMP_DEAD *
Game Variables
currentRoom: 503F: 01 ; The room the player is in bcdTurnCountLSB: 5040: 00 ; Number of turns LSB bcdTurnCountMSB: 5041: 00 ; Number of turns MSB lampOnTurnCount: 5042: 00 00 ; Number of turns the lamp has burned lastRoom: 5044: 00 ; Last room the player was in numObjInPack: 5045: 00 ; Number of objects in the pack numResurrected: 5046: 00 ; Number of times player 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.
ObjectDescriptions: ; Name Desc Notes 5047: 58 6D ; OBJ_01_BRIDGE_ROOM_0F PS_40 Stone bridge in RM_0F_EAST_BANK_BOTTOMLESS_PIT 5049: 58 6D ; OBJ_02_BRIDGE_ROOM_12 PS_40 Stone bridge in RM_12_HALL_OF_GODS 504B: C0 47 ; -Never used (points to empty string) 504D: C0 47 ; -Never used (points to empty string) 504F: C0 47 ; -Never used (points to empty string) 5051: E1 6E ; OBJ_06_VENDING_MACHINE PS_4E Vending Machine 5053: 45 6E ; OBJ_07_PLANT_SMALL PS_4B Tiny plant 5055: 71 6E ; OBJ_08_PLANT_MEDIUM PS_4C Twelve foot beanstalk 5057: B1 6E ; OBJ_09_PLANT_LARGE PS_4D Giant beanstalk 5059: 00 00 ; -Never used (points to null) 505B: 3A 6D ; OBJ_0B_SERPENT PS_3F Serpent bars the way 505D: 00 00 ; -Never used (points to null) 505F: 00 00 ; -Never used (points to null) 5061: 2E 6C ; OBJ_0E_LAMP_OFF PS_32 Lamp (not lit) 5063: 53 6C ; OBJ_0F_LAMP_ON PS_34 Lamp (lit) 5065: 75 6C ; OBJ_10_BOX PS_36 Statue box 5067: 9E 6C ; OBJ_11_SCEPTER PS_38 Scepter 5069: 12 6D ; OBJ_12_PILLOW PS_3D Pillow 506B: CD 6C ; OBJ_13_BIRD PS_3A Statue 506D: EB 6C ; OBJ_14_BIRD_IN_BOX PS_3B Statue in box 506F: ED 70 ; OBJ_15_POTTERY PS_66 Pottery 5071: 47 71 ; OBJ_16_PEARL PS_69 Pearl 5073: 78 6D ; OBJ_17_SARCOPH_FULL PS_41 Sarcophagus with pearl 5075: 78 6D ; OBJ_18_SARCOPH_EMPTY PS_41 Sarcophagus empty 5077: B1 6D ; OBJ_19_MAGAZINES PS_43 Magazines 5079: EC 6D ; OBJ_1A_FOOD PS_45 Food 507B: 04 6E ; OBJ_1B_BOTTLE PS_47 Bottle 507D: 20 6E ; OBJ_1C_WATER PS_49 Water in the bottle 507F: C0 47 ; -Never used (points to empty string) 5081: C0 47 ; OBJ_1E_STREAM_ROOM_38 Empty (no description) 5083: 14 71 ; OBJ_1F_EMERALD PS_67 Emerald 5085: C5 70 ; OBJ_20_VASE_ON_PILLOW PS_65 Vase on pillow 5087: A2 70 ; OBJ_21_VASE PS_63 Vase 5089: 7E 70 ; OBJ_22_KEY PS_61 Key 508B: 30 6F ; OBJ_23_BATTERIES_FRESH PS_4F Batteries 508D: 4F 6F ; OBJ_24_BATTERIES_WORN PS_51 Worn-out batteries 508F: 7B 6F ; OBJ_25_GOLD PS_53 Gold Nugget 5091: AB 6F ; OBJ_26_DIAMONDS PS_55 Diamonds 5093: CA 6F ; OBJ_27_SILVER PS_57 Silver 5095: EA 6F ; OBJ_28_JEWELRY PS_59 Jewelry 5097: 0E 70 ; OBJ_29_COINS PS_5B Coins 5099: 2B 70 ; OBJ_2A_CHEST PS_5D Chest 509B: 52 70 ; OBJ_2B_NEST_EGGS PS_5F Nest of golden eggs 509D: 2E 6C ; OBJ_2C_LAMP_DEAD PS_32 Lamp (dead)
Script Commands
; This lookup table holds the pointers to the individual script commands. Each command
; reads 1 or 2 bytes of data from the script. The number of extra bytes read is show
; for reference in the table.
ScriptCommands:
509F: 8A 51 ; COM_01_move_look(room_num)
50A1: C8 52 ; COM_02_is_in_pack(obj_num)
50A3: D7 52 ; COM_03_is_in_pack_or_current_room(obj_num)
50A5: 5E 53 ; COM_04_print(ps_num)
50A7: 49 54 ; COM_05_death_and_resurrect()
50A9: 00 00
50AB: C2 43 ; COM_07_stop_if_pass()
50AD: C7 54 ; COM_08_print_score()
50AF: EF 55 ; COM_09_end_of_game()
50B1: 18 53 ; COM_0A_pyramid_crawl_move_random(value)
50B3: 6B 53 ; COM_0B_drop_object_print_ok(obj_num)
50B5: 32 53 ; COM_0C_move_to_room_if_was_last(room_num)
50B7: FB 52 ; COM_0D_is_pack_just_emerald()
50B9: 81 53 ; COM_0E_move_to_last_room()
50BB: 9B 53 ; COM_0F_print_inventory()
50BD: DB 53 ; COM_10_print_room_description()
50BF: E1 53 ; COM_11_is_object_user_input(obj_num)
50C1: EF 53 ; COM_12_get_from_room_print_ok(obj_num)
50C3: 00 00
50C5: 2B 54 ; COM_14_print_ok()
50C7: 34 54 ; COM_15_move_object_to_room(obj_num, room_num)
50C9: 43 53 ; COM_16_get_users_object_print_ok()
50CB: 24 54 ; COM_17_drop_users_object_print_ok()
50CD: A5 52 ; COM_18_move_object_to_current_room(obj_num)
50CF: B3 52 ; COM_19_put_object_in_container_print_ok(obj_num, obj_num)
50D1: EA 52 ; COM_1A_is_in_current_room(obj_num)
50D3: F5 55 ; COM_1B_load_game()
50D5: 54 56 ; COM_1C_save_game()
50D7: 94 56 ; 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: 50D9: 3E 0F LD A,$0F ; obj_LAMP_on 50DB: 21 E7 4F LD HL,ObjectData ; Object table 50DE: CD 61 43 CALL TableOffsetTwoBytes ; Lookup the object info 50E1: 23 INC HL ; Location 50E2: 7E LD A,(HL) ; Is the ... 50E3: A7 AND A ; ... lamp turned on? 50E4: CA 34 51 JP Z,CheckAutoBatteries; No, bump BCD turn count and out 50E7: 2A 42 50 LD HL,(lampOnTurnCount); Bump ... 50EA: 23 INC HL ; ... turns the lamp ... 50EB: 22 42 50 LD (lampOnTurnCount),HL; ... has been on 50EE: 7C LD A,H ; Has lamp been ... 50EF: FE 01 CP $01 ; ... on 256 turns or more? 50F1: C2 34 51 JP NZ,CheckAutoBatteries; No, bump BCD turn count and out 50F4: 7D LD A,L ; Has lamp been lit ... 50F5: FE 22 CP $22 ; ... exactly 256+34 = 290 turns? 50F7: C2 03 51 JP NZ,$5103 ; No, skip message 50FA: 21 C5 79 LD HL,PS_A6 ; "YOUR_LAMP_IS_GETTING_DIM." 50FD: CD AE 45 CALL PrintPacked ; Print message 5100: C3 77 51 JP BumpBCDTurnCount ; Bump BCD turn count and out 5103: FE 36 CP $36 ; Has lamp been lit 256+54 = 310 turns? 5105: C2 34 51 JP NZ,CheckAutoBatteries; No, bump BCD turn count and out 5108: 3E 0F LD A,$0F ; obj_LAMP_on 510A: 21 E7 4F LD HL,ObjectData ; Object table 510D: CD 61 43 CALL TableOffsetTwoBytes ; Look up the object info 5110: 23 INC HL ; Point to location 5111: 46 LD B,(HL) ; Current location of the obj_LAMP_on 5112: 36 00 LD (HL),$00 ; The obj_LAMP_on is now out of play 5114: 21 E7 4F LD HL,ObjectData ; Look up ... 5117: 3E 2C LD A,$2C ; ... info for ... 5119: CD 61 43 CALL TableOffsetTwoBytes ; ... obj_LAMP_dead 511C: 23 INC HL ; Location 511D: 70 LD (HL),B ; Replace the obj_LAMP_on with obj_LAMP_dead 511E: 3E 23 LD A,$23 ; obj_BATTERIES_fresh 5120: 1E FF LD E,$FF ; Fresh batteries in ... 5122: CD 50 43 CALL GetObjectInfo ; ... backpack? 5125: CA 34 51 JP Z,CheckAutoBatteries; Yes, automatically replace them 5128: 21 4A 7A LD HL,PS_A7 ; "YOUR_LAMP_HAS_RUN_OUT_OF_POWER." 512B: CD AE 45 CALL PrintPacked ; Print the message 512E: CD 45 52 CALL DescribeRoom ; Describe the dark room 5131: C3 77 51 JP BumpBCDTurnCount ; Bump the BCD turn count and out ; CheckAutoBatteries: 5134: 2A 42 50 LD HL,(lampOnTurnCount); Get the turns the lamp has been on 5137: 11 2C 01 LD DE,$012C ; Match 300 turns 513A: 7C LD A,H ; Has lamp been on ... 513B: BA CP D ; ... 300 turns? 513C: DA 77 51 JP C,BumpBCDTurnCount ; No, bump the BCD turn count and out 513F: 7D LD A,L ; Has lamp been on ... 5140: BB CP E ; ... 300 turns? 5141: DA 77 51 JP C,BumpBCDTurnCount ; No, bump the BCD turn count and out 5144: 3E 23 LD A,$23 ; Are the ... 5146: 1E FF LD E,$FF ; obj_BATTERIES_fresh ... 5148: CD 50 43 CALL GetObjectInfo ; ... in the backpack? 514B: C2 77 51 JP NZ,BumpBCDTurnCount ; No, bump the BCD turn count and out 514E: 3E 2C LD A,$2C ; Is the ... 5150: 1E FF LD E,$FF ; ... obj_LAMP_dead ... 5152: CD 50 43 CALL GetObjectInfo ; ... in the backpack? 5155: C2 77 51 JP NZ,BumpBCDTurnCount ; No, bump the BCD turn count and out 5158: 23 INC HL ; The obj_LAMP_dead ... 5159: 36 00 LD (HL),$00 ; ... is now out of play 515B: 3E 23 LD A,$23 ; Get the ... 515D: 21 E7 4F LD HL,ObjectData ; ... info for ... 5160: CD 61 43 CALL TableOffsetTwoBytes ; ... obj_BATTERIES_fresh 5163: 23 INC HL ; Fresh batteries ... 5164: 36 00 LD (HL),$00 ; ... are now out of play 5166: 23 INC HL ; Bump to ... 5167: 23 INC HL ; ... obj_BATTERIES_worn 5168: 36 FF LD (HL),$FF ; Worn out batteries are now ... 516A: 1E FF LD E,$FF ; ... in the backpack 516C: 3E 0F LD A,$0F ; obj_LAMP_on 516E: CD 76 43 CALL SetObjectLocation ; Move the obj_LAMP_on to the backpack 5171: 21 91 7A LD HL,PS_A9 ; "REPLACING__THE_BATTERIES." 5174: CD AE 45 CALL PrintPacked ; Print message ; BumpBCDTurnCount: 5177: 3A 40 50 LD A,(bcdTurnCountLSB) ; Get the lower BCD turn count 517A: C6 01 ADD $01 ; Add one to ... 517C: 27 DAA ; ... BCD value 517D: 32 40 50 LD (bcdTurnCountLSB),A ; Store new BCD value 5180: 3A 41 50 LD A,(bcdTurnCountMSB) ; Get the upper BCD turn count 5183: CE 00 ADC $00 ; Add any ... 5185: 27 DAA ; ... carry from lower 5186: 32 41 50 LD (bcdTurnCountMSB),A ; Update upper BCD count 5189: 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: 518A: E1 POP HL ; Get the ... 518B: 46 LD B,(HL) ; ... target room number 518C: 23 INC HL ; Next byte 518D: E5 PUSH HL ; Update script pointer ; 518E: 3A 3F 50 LD A,(currentRoom) ; Checking ... 5191: 5F LD E,A ; ... current room 5192: 3E 0F LD A,$0F ; obj_LAMP_on 5194: CD 50 43 CALL GetObjectInfo ; Is the lit-lamp in this room? 5197: CA DA 51 JP Z,$51DA ; Yes, there is light. Make the move. 519A: 1E FF LD E,$FF ; Backpack room number 519C: 3E 0F LD A,$0F ; obj_LAMP_on 519E: CD 50 43 CALL GetObjectInfo ; Is the lit-lamp in the backpack? 51A1: CA DA 51 JP Z,$51DA ; Yes, there is light. Make the move. 51A4: 21 45 4F LD HL,AmbientLightTable; Ambient light table 51A7: 3A 3F 50 LD A,(currentRoom) ; Get the light setting ... 51AA: CD 61 43 CALL TableOffsetTwoBytes ; ... for the current room 51AD: 7E LD A,(HL) ; Get the ambient light level of the room 51AE: E6 40 AND $40 ; Check the bit 51B0: C2 DA 51 JP NZ,$51DA ; There is light in the current room. Make the move. 51B3: 78 LD A,B ; Room we are moving to 51B4: 21 45 4F LD HL,AmbientLightTable; Ambient light table 51B7: CD 61 43 CALL TableOffsetTwoBytes ; Get the light setting ... 51BA: 7E LD A,(HL) ; ... for the destination room 51BB: E6 40 AND $40 ; Check the bit 51BD: C2 DA 51 JP NZ,$51DA ; There is light in the next room. Make the move. 51C0: 58 LD E,B ; Destination room 51C1: 3E 0F LD A,$0F ; obj_LAMP_on 51C3: CD 50 43 CALL GetObjectInfo ; Is the lit-lamp in the next room? 51C6: CA DA 51 JP Z,$51DA ; Yes, there is light. Make the move. 51C9: 3A 74 47 LD A,(keyWaitCounter) ; Random number (key-input wait counter) 51CC: FE 67 CP $67 ; random(255) < 103? That's 40% of the time. 51CE: DA DA 51 JP C,$51DA ; Yes, we were lucky. Make the move. 51D1: 21 04 79 LD HL,PS_A1 ; "YOU_FELL_INTO_A_PIT_AND_BROKE_EVERY_BONE_IN_YOUR_BODY. " 51D4: CD AE 45 CALL PrintPacked ; Print message 51D7: C3 49 54 JP COM_05_death_and_resurrect; The player died. Resurrect the player. ; 51DA: 3A 3F 50 LD A,(currentRoom) ; Copy current room number ... 51DD: 32 44 50 LD (lastRoom),A ; ... to last room number ; 51E0: 78 LD A,B ; Move player to ... 51E1: 32 3F 50 LD (currentRoom),A ; ... current room ; 51E4: CD 45 52 CALL DescribeRoom ; Print room and room description (with objects) 51E7: 3E 2A LD A,$2A ; obj_CHEST 51E9: 21 E7 4F LD HL,ObjectData ; object info 51EC: CD 61 43 CALL TableOffsetTwoBytes ; Look up the info on the chest 51EF: 23 INC HL ; Get the ... 51F0: 7E LD A,(HL) ; ... room number of the chest 51F1: A7 AND A ; Has the chest been placed in the maze? 51F2: C2 42 52 JP NZ,$5242 ; Yes, skip themMummy ; 51F5: 21 E7 4F LD HL,ObjectData ; object info 51F8: 0E 2C LD C,$2C ; 44 objects total 51FA: 06 00 LD B,$00 ; Count number of treasures 51FC: 7E LD A,(HL) ; Attribute of object 51FD: E6 20 AND $20 ; Is object a treasure? 51FF: 23 INC HL ; Point to 2nd entry 5200: CA 0A 52 JP Z,$520A ; Not an object, move to next object 5203: 7E LD A,(HL) ; Is the object ... 5204: FE FF CP $FF ; ... in the backpack? 5206: C2 0A 52 JP NZ,$520A ; No, move to next object 5209: 04 INC B ; Bump the treasure count 520A: 23 INC HL ; Next object 520B: 0D DEC C ; All objects checked? 520C: C2 FC 51 JP NZ,$51FC ; No, go back for all of them ; 520F: 78 LD A,B ; Two (or more) treasures ... 5210: FE 02 CP $02 ; ... in the backpack? 5212: DA 42 52 JP C,$5242 ; No, skip the mummy ; 5215: 21 E7 4F LD HL,ObjectData ; Object info 5218: 0E 2C LD C,$2C ; 44 objects to check 521A: 7E LD A,(HL) ; Get the object attribute 521B: E6 20 AND $20 ; Is the object treasure? 521D: 23 INC HL ; Next byte in entry 521E: CA 30 52 JP Z,$5230 ; Not a treasure, move to next object 5221: 7E LD A,(HL) ; Get the object location 5222: FE FF CP $FF ; In the backpack? 5224: C2 30 52 JP NZ,$5230 ; Not in the backpack, move to next object 5227: 36 35 LD (HL),$35 ; Move the object to the treasure room in the maze 5229: 3A 45 50 LD A,(numObjInPack) ; Number of objects in pack 522C: 3D DEC A ; No longer carying ... 522D: 32 45 50 LD (numObjInPack),A ; ... this object 5230: 23 INC HL ; Next object 5231: 0D DEC C ; Have we checked all objects? 5232: C2 1A 52 JP NZ,$521A ; No, go back for them all 5235: 1E 35 LD E,$35 ; room_53 in the maze 5237: 3E 2A LD A,$2A ; obj_CHEST 5239: CD 76 43 CALL SetObjectLocation ; Place the chest in the maze 523C: 21 4C 7B LD HL,PS_AD ; "_____SUDDENLY,_A_MUMMY_CREEPS_UP_BEHIND_YOU!!" 523F: CD AE 45 CALL PrintPacked ; Print the message ; 5242: C3 AB 43 JP ScriptCommandPASS ; Move passed. Continue the script. DescribeRoom: 5245: 3A 3F 50 LD A,(currentRoom) ; Get the current room number 5248: 21 45 4F LD HL,AmbientLightTable; Ambient light table 524B: CD 61 43 CALL TableOffsetTwoBytes ; Look up the lighting info 524E: 7E LD A,(HL) ; Is there ... 524F: E6 40 AND $40 ; ... natural light? 5251: C2 71 52 JP NZ,$5271 ; Yes, show the room description 5254: 3A 3F 50 LD A,(currentRoom) ; Get the current room number 5257: 5F LD E,A ; Is the ... 5258: 3E 0F LD A,$0F ; ... obj_LAMP_ON ... 525A: CD 50 43 CALL GetObjectInfo ; ... in the current room? 525D: CA 71 52 JP Z,$5271 ; Yes, there is light. Show the room description 5260: 1E FF LD E,$FF ; Is the ... 5262: 3E 0F LD A,$0F ; ... obj_LAMP_ON ... 5264: CD 50 43 CALL GetObjectInfo ; ... in the backpack? 5267: CA 71 52 JP Z,$5271 ; Yes, there is light. Show the room description 526A: 21 76 79 LD HL,PS_A4 ; "IT_IS_NOW_PITCH_DARK.__IF_YOU_PROCEED,_YOU_" 526D: CD AE 45 CALL PrintPacked ; Print the warning 5270: C9 RET ; Out ; 5271: 3A 3F 50 LD A,(currentRoom) ; Get the current room number 5274: 21 88 48 LD HL,RoomTable ; Room info table 5277: CD 6B 43 CALL TableOffsetFourBytes; Look up 4-byte entry 527A: 7E LD A,(HL) ; Get the description LSB 527B: 23 INC HL ; Next byte 527C: 66 LD H,(HL) ; Get the dscription MSB 527D: 6F LD L,A ; Move description LSB to HL 527E: CD AE 45 CALL PrintPacked ; Print the room description ; 5281: 06 00 LD B,$00 ; Object number (counting up from 1 to 44) 5283: 04 INC B ; Checking this object number 5284: 3A 3F 50 LD A,(currentRoom) ; Checking ... 5287: 5F LD E,A ; ... current room 5288: 78 LD A,B ; Have we checked ... 5289: FE 2D CP $2D ; ... all objects? 528B: D0 RET NC ; Yes, done ; 528C: CD 50 43 CALL GetObjectInfo ; Get the info about the object 528F: C2 83 52 JP NZ,$5283 ; Ignore object if it isn't in the current room 5292: 78 LD A,B ; Object number 5293: 21 47 50 LD HL,ObjectDescriptions; Object description table 5296: CD 61 43 CALL TableOffsetTwoBytes ; Look up the object's description 5299: 7E LD A,(HL) ; Get the LSB 529A: 23 INC HL ; Next byte of pointer 529B: 66 LD H,(HL) ; Get the description MSB 529C: 6F LD L,A ; Description pointer now in HL 529D: C5 PUSH BC ; Hold our object count 529E: CD AE 45 CALL PrintPacked ; Print the object's long description 52A1: C1 POP BC ; Restore the object count 52A2: C3 83 52 JP $5283 ; Go back for all objects
COM_18_move_object_to_current_room(obj_num)
COM_18_move_object_to_current_room: 52A5: E1 POP HL ; Get script pointer 52A6: 3A 3F 50 LD A,(currentRoom) ; Get current room 52A9: 5F LD E,A ; Object destination 52AA: 7E LD A,(HL) ; Object number from script 52AB: 23 INC HL ; Update ... 52AC: E5 PUSH HL ; ... the script pointer 52AD: CD 76 43 CALL SetObjectLocation ; Move the object 52B0: C3 AB 43 JP ScriptCommandPASS ; Command passes
COM_19_put_object_in_container_print_ok(obj_num, obj_num)
COM_19_put_object_in_container_print_ok: 52B3: E1 POP HL ; Get script pointer 52B4: 7E LD A,(HL) ; Get object number from script 52B5: 23 INC HL ; Next byte in script 52B6: 46 LD B,(HL) ; Get the destination object number from script 52B7: 23 INC HL ; Update ... 52B8: E5 PUSH HL ; ... the script pointer 52B9: 21 E7 4F LD HL,ObjectData ; Lookup the ... 52BC: CD 61 43 CALL TableOffsetTwoBytes ; ... target object 52BF: 7E LD A,(HL) ; Set ... 52C0: F6 80 OR $80 ; ... the "is carried" ... 52C2: 77 LD (HL),A ; ... flag on the target object 52C3: 23 INC HL ; Being carried by ... 52C4: 70 LD (HL),B ; ... container 52C5: C3 2B 54 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: 52C8: E1 POP HL ; Get the next ... 52C9: 7E LD A,(HL) ; ... byte from ... 52CA: 23 INC HL ; ... the script 52CB: E5 PUSH HL ; Update the script pointer 52CC: 1E FF LD E,$FF ; Room location of pack 52CE: CD 50 43 CALL GetObjectInfo ; Find the object. Is it in the pack (at E)? 52D1: CA AB 43 JP Z,ScriptCommandPASS ; Yes, command passes 52D4: C3 BE 43 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: 52D7: E1 POP HL ; Get the next ... 52D8: 46 LD B,(HL) ; ... byte from ... 52D9: 23 INC HL ; ... the script 52DA: E5 PUSH HL ; Update the script pointer 52DB: 3A 3F 50 LD A,(currentRoom) ; Current room number 52DE: 5F LD E,A ; Check for current room 52DF: 78 LD A,B ; Requested object number 52E0: CD 50 43 CALL GetObjectInfo ; Get the info about the object 52E3: CA AB 43 JP Z,ScriptCommandPASS ; It is in the room. Return SUCCESS 52E6: 78 LD A,B ; Object number 52E7: C3 CC 52 JP $52CC ; 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: 52EA: E1 POP HL ; Get the script pointer 52EB: 3A 3F 50 LD A,(currentRoom) ; Checking ... 52EE: 5F LD E,A ; ... current room 52EF: 7E LD A,(HL) ; Requested object number 52F0: 23 INC HL ; Update ... 52F1: E5 PUSH HL ; ... script pointer 52F2: CD 50 43 CALL GetObjectInfo ; Get the info about the object 52F5: CA AB 43 JP Z,ScriptCommandPASS ; Success if parent container is in the current room 52F8: C3 BE 43 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: 52FB: 21 E7 4F LD HL,ObjectData ; 52FE: 0E 01 LD C,$01 ; Start checking with object 1 5300: 23 INC HL ; Location of object 5301: 79 LD A,C ; Is this object ... 5302: FE 1F CP $1F ; ... the obj_EMERALD? 5304: CA 0D 53 JP Z,$530D ; Yes, ignore it 5307: 7E LD A,(HL) ; Get the location 5308: FE FF CP $FF ; Is this object in the backpack? 530A: CA BE 43 JP Z,ScriptCommandFAIL ; Yes, fail 530D: 23 INC HL ; Next object data 530E: 0C INC C ; Next object number 530F: 79 LD A,C ; Past the ... 5310: FE 2D CP $2D ; ... last object? 5312: C2 00 53 JP NZ,$5300 ; No, keep checking 5315: C3 AB 43 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) woodsRoom106
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: 5318: E1 POP HL ; Get target ... 5319: 46 LD B,(HL) ; ... value from script 531A: 23 INC HL ; Update the ... 531B: E5 PUSH HL ; ... script pointer 531C: 3A 74 47 LD A,(keyWaitCounter) ; Get the randomish number 531F: B8 CP B ; Compare with target value 5320: CA 26 53 JP Z,$5326 ; The same means pass 5323: D2 BE 43 JP NC,ScriptCommandFAIL; Less than means pass 5326: 21 95 72 LD HL,PS_74 ; "WOUND_UP_BACK__IN_THE_MAIN_PASSAGE." 5329: CD AE 45 CALL PrintPacked ; Print message 532C: CD 45 52 CALL DescribeRoom ; Reprint the current room description 532F: C3 AB 43 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: 5332: E1 POP HL ; Get destination ... 5333: 46 LD B,(HL) ; ... room 5334: 23 INC HL ; Update the ... 5335: E5 PUSH HL ; ... script pointer 5336: 3A 44 50 LD A,(lastRoom) ; Get the last room 5339: B8 CP B ; Is target room the last room? 533A: C2 BE 43 JP NZ,ScriptCommandFAIL; No, reject the move (fail) 533D: E1 POP HL ; Back the script ... 533E: 2B DEC HL ; ... pointer up so we ... 533F: E5 PUSH HL ; ... can call MoveToRoom 5340: C3 8A 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: 5343: 3A 7B 46 LD A,(inputNoun) ; Get the object number the player requested 5346: 1E FF LD E,$FF ; Get the ... 5348: CD 50 43 CALL GetObjectInfo ; ... target object's info 534B: C2 57 53 JP NZ,$5357 ; It isn't in the backpack. No error here. 534E: 21 60 75 LD HL,PS_87 ; "YOU_ARE_ALREADY_CARRYING_IT." 5351: CD AE 45 CALL PrintPacked ; Print the error 5354: C3 AB 43 JP ScriptCommandPASS ; Success (the object is in backpack as requested!) ; 5357: 3A 7B 46 LD A,(inputNoun) ; Get the input noun again 535A: 47 LD B,A ; Handle the actual ... 535B: C3 F4 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: 535E: E1 POP HL ; Get the script pointer 535F: 5E LD E,(HL) ; Get the LSB of the string 5360: 23 INC HL ; Next in script 5361: 56 LD D,(HL) ; Get the MSB of the string 5362: 23 INC HL ; Update the ... 5363: E5 PUSH HL ; ... script pointer 5364: EB EX DE,HL ; String pointer now in HL 5365: CD AE 45 CALL PrintPacked ; Print the packed string 5368: C3 AB 43 JP ScriptCommandPASS ; Printing is always a success
COM_0B_drop_object_print_ok(obj_num)
COM_0B_drop_object_print_ok: 536B: E1 POP HL ; Get the target ... 536C: 46 LD B,(HL) ; ... object from the script 536D: 23 INC HL ; Update the ... 536E: E5 PUSH HL ; ... script pointer 536F: 3A 45 50 LD A,(numObjInPack) ; Decrease ... 5372: 3D DEC A ; ... number of objects ... 5373: 32 45 50 LD (numObjInPack),A ; ... in pack 5376: 3A 3F 50 LD A,(currentRoom) ; Current room 5379: 5F LD E,A ; Move ... 537A: 78 LD A,B ; ... object to ... 537B: CD 76 43 CALL SetObjectLocation ; ... current room 537E: C3 2B 54 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: 5381: 3A 44 50 LD A,(lastRoom) ; Was there ... 5384: A7 AND A ; ... a last room? 5385: CA 92 53 JP Z,$5392 ; No, print error and pass 5388: 47 LD B,A ; Hold last room 5389: 3A 3F 50 LD A,(currentRoom) ; Current room ... 538C: 32 44 50 LD (lastRoom),A ; ... to last room 538F: C3 E0 51 JP $51E0 ; Continue with MoveToRoom logic (lighting, mummy, etc) ; 5392: 21 33 75 LD HL,PS_86 ; "SORRY,_BUT_I_NO_LONGER_SEEM_TO_REMEMBER_HOW_IT_WAS_YOU_GOT_HERE." 5395: CD AE 45 CALL PrintPacked ; Print string 5398: C3 AB 43 JP ScriptCommandPASS ; Command passes
COM_0F_print_inventory()
COM_0F_print_inventory: 539B: 3A 45 50 LD A,(numObjInPack) ; Is there anything in ... 539E: A7 AND A ; ... the backpack? 539F: C2 AB 53 JP NZ,$53AB ; Yes, go list the contents ; 53A2: 21 A6 75 LD HL,PS_89 ; "YOU'RE_NOT_CARRYING_ANYTHING." 53A5: CD AE 45 CALL PrintPacked ; Print the message 53A8: C3 AB 43 JP ScriptCommandPASS ; Command passes ; 53AB: 21 BC 75 LD HL,PS_8A ; "YOU_ARE_CURRENTLY_HOLDING_THE_FOLLOWING:" 53AE: CD AE 45 CALL PrintPacked ; Print the banner 53B1: 06 00 LD B,$00 ; Object number through loop 53B3: 1E FF LD E,$FF ; Backpack room number 53B5: 04 INC B ; Next (or first) object number 53B6: 78 LD A,B ; Have we checked ... 53B7: FE 2D CP $2D ; ... all objects? 53B9: D2 AB 43 JP NC,ScriptCommandPASS; Yes, command passes ; 53BC: CD 50 43 CALL GetObjectInfo ; Get the object info 53BF: C2 B3 53 JP NZ,$53B3 ; Object is not in backpack, move to next object 53C2: 78 LD A,B ; Object number 53C3: 21 47 50 LD HL,ObjectDescriptions; Object info table 53C6: CD 61 43 CALL TableOffsetTwoBytes ; Look up the description 53C9: 7E LD A,(HL) ; Description LSB 53CA: 23 INC HL ; Next entry 53CB: 66 LD H,(HL) ; Description MSB 53CC: 6F LD L,A ; HL now points to long description 53CD: 7E LD A,(HL) ; Skip ... 53CE: 23 INC HL ; ... to ... 53CF: A7 AND A ; ... short ... 53D0: C2 CD 53 JP NZ,$53CD ; ... description 53D3: C5 PUSH BC ; Hold our counter 53D4: CD AE 45 CALL PrintPacked ; Print the short description 53D7: C1 POP BC ; Restore the counter 53D8: C3 B3 53 JP $53B3 ; Check all objects
COM_10_print_room_description()
COM_10_print_room_description: 53DB: CD 45 52 CALL DescribeRoom ; Print the room description (with objects) 53DE: C3 AB 43 JP ScriptCommandPASS ; Command passes
COM_11_is_object_user_input(obj_num)
COM_11_is_object_user_input: 53E1: E1 POP HL ; Get the script pointer 53E2: 46 LD B,(HL) ; Get the target object 53E3: 23 INC HL ; Update the ... 53E4: E5 PUSH HL ; ... script pointer 53E5: 3A 7B 46 LD A,(inputNoun) ; Does user noun ... 53E8: B8 CP B ; ... match the target object? 53E9: C2 BE 43 JP NZ,ScriptCommandFAIL; No, command fails 53EC: C3 AB 43 JP ScriptCommandPASS ; yes, command passes
COM_12_get_from_room_print_ok(obj_num)
COM_12_get_from_room_print_ok: 53EF: E1 POP HL ; Get the script pointer 53F0: 46 LD B,(HL) ; Get the object number 53F1: 23 INC HL ; Update ... 53F2: E5 PUSH HL ; ... script pointer 53F3: 78 LD A,B ; To parameter register ; GetToBackpack: 53F4: CD 50 43 CALL GetObjectInfo ; Look up the target object 53F7: 7E LD A,(HL) ; Is this object ... 53F8: E6 40 AND $40 ; ... able to be picked up? 53FA: C2 06 54 JP NZ,$5406 ; Yes, skip the error 53FD: 21 D9 75 LD HL,PS_8B ; "DON'T_BE_RIDICULOUS!" 5400: CD AE 45 CALL PrintPacked ; Print the message 5403: C3 AB 43 JP ScriptCommandPASS ; Command passes ; 5406: 3A 45 50 LD A,(numObjInPack) ; Get number of objects in pack 5409: FE 08 CP $08 ; Eight is our max 540B: DA 17 54 JP C,$5417 ; We have room for another, go get it 540E: 21 75 75 LD HL,PS_88 ; "YOU_CAN'T_CARRY_ANYTHING_MORE." 5411: CD AE 45 CALL PrintPacked ; Print the message 5414: C3 AB 43 JP ScriptCommandPASS ; Command passes ; 5417: 3C INC A ; Add one ... 5418: 32 45 50 LD (numObjInPack),A ; ... to pack count 541B: 78 LD A,B ; Object number 541C: 1E FF LD E,$FF ; Backpack location 541E: CD 76 43 CALL SetObjectLocation ; Move the object to the backpack 5421: C3 2B 54 JP COM_14_print_ok ; Print OK and command passes
COM_17_drop_users_object_print_ok()
COM_17_drop_users_object_print_ok: 5424: 3A 7B 46 LD A,(inputNoun) ; Get the player's ... 5427: 47 LD B,A ; ... noun input 5428: C3 6F 53 JP $536F ; Continue with drop
COM_14_print_ok()
COM_14_print_ok: 542B: 21 2F 75 LD HL,PS_85 ; "OK_" 542E: CD AE 45 CALL PrintPacked ; Print string 5431: C3 AB 43 JP ScriptCommandPASS ; Command passes
COM_15_move_object_to_room(obj_num, room_num)
COM_15_move_object_to_room: 5434: E1 POP HL ; Get the script pointer 5435: 7E LD A,(HL) ; Get the object number 5436: 23 INC HL ; Next in script 5437: 5E LD E,(HL) ; Get the room number 5438: 23 INC HL ; Update the ... 5439: E5 PUSH HL ; ... script pointer 543A: 21 E7 4F LD HL,ObjectData ; Look up the ... 543D: CD 61 43 CALL TableOffsetTwoBytes ; ... target object 5440: 7E LD A,(HL) ; Clear the ... 5441: E6 7F AND $7F ; ... being-carried flag 5443: 77 LD (HL),A ; Store the new attributes 5444: 23 INC HL ; Location entry 5445: 73 LD (HL),E ; Object now in target room 5446: C3 AB 43 JP ScriptCommandPASS ; Command passes
COM_05_death_and_resurrect()
COM_05_death_and_resurrect: 5449: 3A 46 50 LD A,(numResurrected) ; Number of resurrections 544C: 3C INC A ; Add one ... 544D: 32 46 50 LD (numResurrected),A ; ... to the count 5450: FE 03 CP $03 ; Third time (or more)? 5452: D2 BC 54 JP NC,ThirdResurrection; Yes, do the 3rd 5455: FE 02 CP $02 ; 2nd time? 5457: CA B0 54 JP Z,SecondResurrection; Yes, do the 2nd ; ; First time we initialize the message pointer 545A: 21 B4 7E LD HL,PS_BC ; "ALL_RIGHT.__BUT_DON'T_BLAME_ME" 545D: 22 C5 54 LD (nextResurrectMessage),HL; Next resurrection message 5460: 21 AA 7D LD HL,PS_B9 ; "YOU_SEEM_TO_HAVE_GOTTEN_YOURSELF_KILLED." 5463: CD AE 45 CALL PrintPacked ; Print the message 5466: CD EE 45 CALL WaitForKey ; Wait for the user 5469: FE 59 CP $59 ; Is it a "Y" for yes to continuing on? 546B: C2 EF 55 JP NZ,COM_09_end_of_game; No, print score and stop 546E: 2A C5 54 LD HL,(nextResurrectMessage); Print resurrection ... 5471: CD AE 45 CALL PrintPacked ; ... message 5474: 21 02 50 LD HL,$5002 ; obj_LAMP_off to ... 5477: 36 01 LD (HL),$01 ; ... room_1 5479: 23 INC HL ; Point to ... 547A: 23 INC HL ; ... obj_LAMP_on 547B: 36 00 LD (HL),$00 ; Move it out of play 547D: 21 E7 4F LD HL,ObjectData ; Object data 5480: 3A 3F 50 LD A,(currentRoom) ; Player's ... 5483: 47 LD B,A ; ... current room 5484: 3E FF LD A,$FF ; Backpack location 5486: 0E 2C LD C,$2C ; 44 objects to check ; 5488: 23 INC HL ; Next (or first) object 5489: BE CP (HL) ; Is object in backpack 548A: C2 97 54 JP NZ,$5497 ; No ... leave this object where it is 548D: 70 LD (HL),B ; Change backpack to current room 548E: 3A 45 50 LD A,(numObjInPack) ; Decrement ... 5491: 3D DEC A ; ... count of objects ... 5492: 32 45 50 LD (numObjInPack),A ; ... in pack 5495: 3E FF LD A,$FF ; Retore backpack location (had to use A) 5497: 23 INC HL ; Next object 5498: 0D DEC C ; All done? 5499: C2 88 54 JP NZ,$5488 ; No, drop all objects in backpack 549C: 3E 02 LD A,$02 ; Resurrect player ... 549E: 32 3F 50 LD (currentRoom),A ; ... in the entrance (past the lamp at 1 ... sneaky) 54A1: CD 45 52 CALL DescribeRoom ; Print the room description 54A4: 31 BF 47 LD SP,$47BF ; Reset the stack pointer 54A7: 21 00 00 LD HL,$0000 ; Reset the ... 54AA: 22 42 50 LD (lampOnTurnCount),HL; ... lamp time (very generous) 54AD: C3 19 43 JP GameLoop ; Back to the top of the game loop SecondResurrection: 54B0: 21 4E 7F LD HL,PS_BD ; Next resurrection ... 54B3: 22 C5 54 LD (nextResurrectMessage),HL; ... message "WHERE_DID_I_PUT_ORANGE_SMOKE" 54B6: 21 1D 7E LD HL,PS_BA ; "YOU_CLUMBSY_OAF,_YOU'VE_DONE_IT_AGAIN 54B9: C3 63 54 JP $5463 ; Print the message and ressurect ThirdResurrection: 54BC: 21 79 7E LD HL,PS_BB ; "HOW_CAN_I_REINCARNATE_YOU____WITHOUT_ORANGE_SMOKE?" 54BF: CD AE 45 CALL PrintPacked ; Print message 54C2: C3 EF 55 JP COM_09_end_of_game ; All lives gone. Print score and stop. ; !! This is not saved to tape. Check to see if die/reload can mess up the sequence. nextResurrectMessage: 54C5: 00 00 ; Next resurrection message
COM_08_print_score()
COM_08_print_score: 54C7: CD CD 54 CALL PrintScore ; Print the score 54CA: C3 AB 43 JP ScriptCommandPASS ; Command passes PrintScore: 54CD: 21 00 00 LD HL,$0000 ; Clear score tally 54D0: 22 B2 55 LD (scoreTempLSB),HL ; 54D3: 21 45 4F LD HL,AmbientLightTable; 54D6: 0E 51 LD C,$51 ; 81 rooms to check 54D8: 7E LD A,(HL) ; First byte 54D9: E6 80 AND $80 ; Was something scored in this room? 54DB: 23 INC HL ; Next room 54DC: CA F0 54 JP Z,$54F0 ; No ... next room 54DF: 3A B2 55 LD A,(scoreTempLSB) ; BCD LSB 54E2: 86 ADD A,(HL) ; Add in the score from the room 54E3: 27 DAA ; Adjust for BCD 54E4: 32 B2 55 LD (scoreTempLSB),A ; Update LSB 54E7: 3A B3 55 LD A,(scoreTempMSB) ; Carry into ... 54EA: CE 00 ADC $00 ; ... the MSB 54EC: 27 DAA ; Adjust for BCD 54ED: 32 B3 55 LD (scoreTempMSB),A ; Update MSB 54F0: 23 INC HL ; Next room 54F1: 0D DEC C ; All rooms checked? 54F2: C2 D8 54 JP NZ,$54D8 ; No ... check them all ; 54F5: 21 E7 4F LD HL,ObjectData ; Now check the objects 54F8: 0E 2C LD C,$2C ; 44 objects to check 54FA: 7E LD A,(HL) ; First byte of object 54FB: E6 20 AND $20 ; Is this a treasure? 54FD: 23 INC HL ; Next in table 54FE: CA 21 55 JP Z,$5521 ; Not a treasure, skip it 5501: 7E LD A,(HL) ; Location of object 5502: FE 02 CP $02 ; Is this object (or parent container) in room 2? 5504: 06 20 LD B,$20 ; Score 20 points (BCD) if it is 5506: CA 10 55 JP Z,$5510 ; It is in the target room ... go score it 5509: FE FF CP $FF ; Is it in the backpack? 550B: C2 21 55 JP NZ,$5521 ; No, next object 550E: 06 05 LD B,$05 ; Score 5 points if the object is in the backpack 5510: 3A B2 55 LD A,(scoreTempLSB) ; BCD LSB 5513: 80 ADD A,B ; Add in score from the object 5514: 27 DAA ; Adjust for BCD 5515: 32 B2 55 LD (scoreTempLSB),A ; Update LSB 5518: 3A B3 55 LD A,(scoreTempMSB) ; Carry into ... 551B: CE 00 ADC $00 ; ... the MSB 551D: 27 DAA ; Adjust for BCD 551E: 32 B3 55 LD (scoreTempMSB),A ; Update the MSB ; 5521: 23 INC HL ; Next in object table 5522: 0D DEC C ; Have we processed all objects? 5523: C2 FA 54 JP NZ,$54FA ; No, go check them all ; 5526: 3A 46 50 LD A,(numResurrected) ; Number of deaths 5529: A7 AND A ; No penalty if ... 552A: CA 48 55 JP Z,$5548 ; ... we haven't died 552D: 4F LD C,A ; Penalized 10 points for each death 552E: 06 90 LD B,$90 ; BCD value for "-10" 5530: 3A B2 55 LD A,(scoreTempLSB) ; LSB of score 5533: 80 ADD A,B ; Add penalty (negative) 5534: 27 DAA ; Adjust for BCD 5535: 32 B2 55 LD (scoreTempLSB),A ; Update LSB 5538: DA 44 55 JP C,$5544 ; No borrow ... move on 553B: 3A B3 55 LD A,(scoreTempMSB) ; MSB of score 553E: C6 99 ADD $99 ; BCD value for "-1" (borrow) 5540: 27 DAA ; Adjust for BCD 5541: 32 B3 55 LD (scoreTempMSB),A ; Update the MSB 5544: 0D DEC C ; All deaths subtracted off? 5545: C2 30 55 JP NZ,$5530 ; No ... do them all ; 5548: 3A B3 55 LD A,(scoreTempMSB) ; Is score ... 554B: FE 90 CP $90 ; ... positive? 554D: DA 78 55 JP C,$5578 ; Yes ... print a space for the sign 5550: 3E 2D LD A,$2D ; Add a "-" to ... 5552: 32 BF 55 LD (scoreSign),A ; ... the score string 5555: 3A B3 55 LD A,(scoreTempMSB) ; 5558: 47 LD B,A ; 5559: 3E 99 LD A,$99 ; TODO decode the math 555B: 90 SUB B ; Negative values need fixing up to make them right 555C: 32 B3 55 LD (scoreTempMSB),A ; 555F: 3A B2 55 LD A,(scoreTempLSB) ; 5562: 47 LD B,A ; 5563: 3E 99 LD A,$99 ; TODO BCD math for negatives 5565: 90 SUB B ; 5566: C6 01 ADD $01 ; 5568: 27 DAA ; 5569: 32 B2 55 LD (scoreTempLSB),A ; 556C: 3A B3 55 LD A,(scoreTempMSB) ; 556F: CE 00 ADC $00 ; 5571: 27 DAA ; 5572: 32 B3 55 LD (scoreTempMSB),A ; 5575: C3 7D 55 JP $557D ; Now update the turns ; 5578: 3E 20 LD A,$20 ; Space means "+" ... 557A: 32 BF 55 LD (scoreSign),A ; ... in the score message ; 557D: 21 C0 55 LD HL,scoreMsg ; Turn count in the score message 5580: 3A B3 55 LD A,(scoreTempMSB) ; MSB of calculated score 5583: CD A2 55 CALL BinaryToASCII ; Add MSB of score to string 5586: 3A B2 55 LD A,(scoreTempLSB) ; LSB of calculated score 5589: CD A2 55 CALL BinaryToASCII ; Add LSB of score to string 558C: 21 E3 55 LD HL,turnMsg ; Turn count spot in string 558F: 3A 41 50 LD A,(bcdTurnCountMSB) ; Add MSB of turn ... 5592: CD A2 55 CALL BinaryToASCII ; ... count to string 5595: 3A 40 50 LD A,(bcdTurnCountLSB) ; Add LSB of turn ... 5598: CD A2 55 CALL BinaryToASCII ; ... count to string 559B: 21 B4 55 LD HL,ScoreString ; The string we just built 559E: CD D0 45 CALL PrintPlain ; Print the constructed score 55A1: C9 RET BinaryToASCII: 55A2: F5 PUSH AF ; Hold the lower nibble 55A3: 0F RRCA ; Roll ... 55A4: 0F RRCA ; ... to ... 55A5: 0F RRCA ; ... upper ... 55A6: 0F RRCA ; ... nibble 55A7: CD AB 55 CALL $55AB ; Convert and store the upper digit 55AA: F1 POP AF ; Restore the lower nibble, convert, and store ; 55AB: E6 0F AND $0F ; Only keep 4 bits 55AD: C6 30 ADD $30 ; Binary to ASCII digit 55AF: 77 LD (HL),A ; Store in buffer 55B0: 23 INC HL ; Bump buffer 55B1: C9 RET scoreTempLSB: 55B2: 00 ; Used in calculating/printing score scoreTempMSB: 55B3: 00 ; Used in calculating/printing score ScoreString: ; YOU_SCORED_______OUT_OF_A_POSSIBLE_0220,_USING______TURNS. 55B4: 59 4F 55 20 53 43 4F 52 45 44 20 scoreSign: 55BF: 20 scoreMsg: 55C0: 20 20 20 20 20 4F 55 54 20 4F 46 20 41 20 50 4F 53 53 49 42 55D4: 4C 45 20 30 32 32 30 2C 20 55 53 49 4E 47 20 turnMsg: 55E3: 20 20 20 20 20 54 55 52 4E 53 2E 00
COM_09_end_of_game()
COM_09_end_of_game: 55EF: CD CD 54 CALL PrintScore ; Print the score EndlessLoop: 55F2: C3 F2 55 JP EndlessLoop ; Endless loop ... game over
COM_1B_load_game()
"RCONT:" ; Label appears in unitialized memory in Code1.md!
COM_1B_load_game: 55F5: 21 A0 7F LD HL,PS_BE ; "READY CASSETTE" 55F8: CD AE 45 CALL PrintPacked ; Print message 55FB: CD EE 45 CALL WaitForKey ; Wait on key 55FE: FE 08 CP $08 ; Backspace? 5600: CA AB 43 JP Z,ScriptCommandPASS ; Yes ... abort operation 5603: FE 0D CP $0D ; Enter? 5605: C2 FB 55 JP NZ,$55FB ; No ... keep waiting 5608: 97 SUB A ; Make a zero 5609: CD 12 02 CALL TapeOn ; Turn on cassette 0 560C: CD 96 02 CALL ReadTapeLeader ; Read tape leader 560F: 21 45 4F LD HL,AmbientLightTable; Load destination 5612: 01 03 01 LD BC,$0103 ; 259 bytes 5615: 1E 00 LD E,$00 ; Initialize checksum 5617: E5 PUSH HL ; ROM function ... 5618: C5 PUSH BC ; ... mangles ... 5619: D5 PUSH DE ; ... these 561A: CD 35 02 CALL ReadTapeByte ; Read one byte of data 561D: D1 POP DE ; ROM function ... 561E: C1 POP BC ; ... mangles ... 561F: E1 POP HL ; ... these 5620: 77 LD (HL),A ; Store the byte 5621: 83 ADD A,E ; Add to ... 5622: 5F LD E,A ; ... checksum 5623: 23 INC HL ; Next destination 5624: 0B DEC BC ; All done? 5625: 78 LD A,B ; Remember, DEC doesn't ... 5626: B1 OR C ; ... affect the zero flag 5627: C2 17 56 JP NZ,$5617 ; Nope ... do all $103 bytes 562A: D5 PUSH DE ; Hold 562B: CD 35 02 CALL ReadTapeByte ; Read the checksum 562E: D1 POP DE ; Restore 562F: BB CP E ; Checksum OK? 5630: CA 3F 56 JP Z,$563F ; Yes ... out 5633: 21 AC 7F LD HL,PS_BF ; "CHECKSUM_ERROR" 5636: CD AE 45 CALL PrintPacked ; Print error message 5639: CD F8 01 CALL TapeOff ; Turn off tape drive ; ; We already wrote bytes to our memory, and we got a checksum error. We are going back ; to the top, but if the player aborts the load at the top of this function, then the ; game continues with corrupt data. Oops. ; 563C: C3 F5 55 JP COM_1B_load_game ; Go back and try again ; 563F: CD F8 01 CALL TapeOff ; Turn off the tape ; ; We loaded 103 bytes starting at 4F45. This overwrites part of the object descriptions, which we ; manually reset here. ?? why are we reading more than we need ?? ; 5642: 21 58 6D LD HL,$6D58 ; Reset the ... 5645: 22 47 50 LD (ObjectDescriptions),HL; ... obj_bridge_15 ... 5648: 22 49 50 LD ($5049),HL ; ... and obj_bridge_18 descriptions. 564B: CD 45 52 CALL DescribeRoom ; Print the current room description after the load 564E: 31 BF 47 LD SP,$47BF ; Abandon previous stack 5651: C3 19 43 JP GameLoop ; Back to input loop
COM_1C_save_game()
Save 4F45 through 5047 That's one too many and picks up a byte from the ObjectDescriptions table (read only). The LoadGame code restores the first four bytes of this ObjectDescriptions table for some reason.
COM_1C_save_game: 5654: 21 A0 7F LD HL,PS_BE ; "READY_CASSETTE" 5657: CD AE 45 CALL PrintPacked ; Print the message 565A: CD EE 45 CALL WaitForKey ; Get a key 565D: FE 08 CP $08 ; Backspace means abort? 565F: CA AB 43 JP Z,ScriptCommandPASS ; Yes, abort saving and command passes 5662: FE 0D CP $0D ; ENTER for ready? 5664: C2 5A 56 JP NZ,$565A ; No, keep waiting for backspace or ENTER ; 5667: 97 SUB A ; Turn on ... 5668: CD 12 02 CALL TapeOn ; ... cassette 1 566B: CD 87 02 CALL WriteTapeLeader ; Write the tape leader 566E: 21 45 4F LD HL,AmbientLightTable; 4F45 ... 5671: 01 03 01 LD BC,$0103 ; ... through 5047 ?? too many?? 5674: 1E 00 LD E,$00 ; Checksum as we go 5676: E5 PUSH HL ; Hold the memory pointer 5677: C5 PUSH BC ; Hold the count 5678: 7E LD A,(HL) ; Get the next byte to write 5679: 83 ADD A,E ; Add byte ... 567A: 5F LD E,A ; ... into checksum 567B: D5 PUSH DE ; Hold the checksum 567C: 7E LD A,(HL) ; Get the byte again 567D: CD 64 02 CALL WriteTapeByte ; Write the byte in A to tape 5680: D1 POP DE ; Restore checksum 5681: C1 POP BC ; Restore count 5682: E1 POP HL ; Restore memory pointer 5683: 23 INC HL ; Point to next byte 5684: 0B DEC BC ; Decrement the count 5685: 78 LD A,B ; Any bits ... 5686: B1 OR C ; ... set (means not zero)? 5687: C2 76 56 JP NZ,$5676 ; Yes, keep writing memory to cassette 568A: 7B LD A,E ; The checksum 568B: CD 64 02 CALL WriteTapeByte ; Write the checksum byte in A to tape 568E: CD F8 01 CALL TapeOff ; Turn the tape off 5691: C3 AB 43 JP ScriptCommandPASS ;
COM_1D_scramble_directions_print_ack()
COM_1D_scramble_directions_print_ack: 5694: 3A 74 47 LD A,(keyWaitCounter) ; Random value 5697: E6 03 AND $03 ; 0, 1, 2, or 3 5699: 47 LD B,A ; To B 569A: 21 CC 49 LD HL,RoomScripts ; start of room scripts CNALL: ; This is the label from the actual 8080 source code (see Code1) 569D: 7E LD A,(HL) ; Get the verb number 569E: 23 INC HL ; Next byte 569F: A7 AND A ; End of script for this room? 56A0: CA 9D 56 JP Z,CNALL ; Yes ... ignore the terminator and move to next room 56A3: FE FF CP $FF ; FF means the end of all room scripts 56A5: CA C2 56 JP Z,$56C2 ; We are done, print message and out 56A8: FE 05 CP $05 ; Is this verb in the script a compass direction? 56AA: D2 B8 56 JP NC,$56B8 ; No, skip over this command list 56AD: 80 ADD A,B ; Roll the verb 56AE: 2B DEC HL ; Point back to the verb 56AF: E6 03 AND $03 ; Limit to verbs 1-4 56B1: C2 B6 56 JP NZ,CNAL2 ; Are we in 1, 2, or 3? Yes, keep it 56B4: 3E 04 LD A,$04 ; We rolled around. 0 becomes 4. CNAL2: ; This is the label from the actual 8080 source code (see Code1) 56B6: 77 LD (HL),A ; New verb number 56B7: 23 INC HL ; Point to list length 56B8: 7E LD A,(HL) ; Get the length 56B9: 85 ADD A,L ; Add ... 56BA: 6F LD L,A ; ... length ... 56BB: 7C LD A,H ; ... to ... 56BC: CE 00 ADC $00 ; ... script ... 56BE: 67 LD H,A ; ... pointer 56BF: C3 9D 56 JP CNALL ; Try all the verbs in all rooms ; 56C2: 21 B8 7F LD HL,PS_C0 ; "I_NO_LONGER_SEEM_TO_KNOW_WHICH_WAY_IS_NORTH!" 56C5: CD AE 45 CALL PrintPacked ; Print message 56C8: 31 BF 47 LD SP,$47BF ; Reset stack 56CB: C3 19 43 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
56CE: 1C 4C 41 4D 50 0E 0F 2C ; 00_011_100 LAMP
56D6: 1E 4C 41 4E 54 45 52 0E 0F 2C ; 00_011_110 LANTER
56E0: 0B 42 4F 58 10 ; 00_001_011 BOX
56E5: 0F 53 43 45 50 54 45 52 11 ; 00_001_111 SCEPTER
56EE: 14 42 49 52 44 13 14 ; 00_010_100 BIRD
56F5: 16 53 54 41 54 55 45 13 14 ; 00_010_110 STATUE
56FE: 0E 50 49 4C 4C 4F 57 12 ; 00_001_110 PILLOW
5706: 0E 56 45 4C 56 45 54 12 ; 00_001_110 VELVET
570E: 0E 53 45 52 50 45 4E 0B ; 00_001_110 SERPEN
5716: 16 53 41 52 43 4F 50 17 18 ; 00_010_110 SARCOP
571F: 0E 4D 41 47 41 5A 49 19 ; 00_001_110 MAGAZI
5727: 0D 49 53 53 55 45 19 ; 00_001_101 ISSUE
572E: 0E 45 47 59 50 54 49 19 ; 00_001_110 EGYPTI
5736: 0C 46 4F 4F 44 1A ; 00_001_100 FOOD
573C: 0E 42 4F 54 54 4C 45 1B ; 00_001_110 BOTTLE
5744: 15 57 41 54 45 52 1C 1E ; 00_010_101 WATER
574C: 1D 50 4C 41 4E 54 07 08 09 ; 00_011_101 PLANT
5755: 1E 42 45 41 4E 53 54 07 08 09 ; 00_011_110 BEANST
575F: 0E 4D 41 43 48 49 4E 06 ; 00_001_110 MACHIN
5767: 0E 56 45 4E 44 49 4E 06 ; 00_001_110 VENDIN
576F: 16 42 41 54 54 45 52 23 24 ; 00_010_110 BATTER
5778: 0C 47 4F 4C 44 25 ; 00_001_100 GOLD
577E: 0E 4E 55 47 47 45 54 25 ; 00_001_110 NUGGET
5786: 0E 44 49 41 4D 4F 4E 26 ; 00_001_110 DIAMON
578E: 0E 53 49 4C 56 45 52 27 ; 00_001_110 SILVER
5796: 0C 42 41 52 53 27 ; 00_001_100 BARS
579C: 0E 4A 45 57 45 4C 52 28 ; 00_001_110 JEWELR
57A4: 0D 43 4F 49 4E 53 29 ; 00_001_101 COINS
57AB: 0D 43 48 45 53 54 2A ; 00_001_101 CHEST
57B2: 0E 54 52 45 41 53 55 2A ; 00_001_110 TREASU
57BA: 0C 45 47 47 53 2B ; 00_001_100 EGGS
57C0: 0B 45 47 47 2B ; 00_001_011 EGG
57C5: 0C 4E 45 53 54 2B ; 00_001_100 NEST
57CB: 0B 4B 45 59 22 ; 00_001_011 KEY
57D0: 14 56 41 53 45 20 21 ; 00_010_100 VASE
57D7: 0E 53 48 41 52 44 53 15 ; 00_001_110 SHARDS
57DF: 0E 50 4F 54 54 45 52 15 ; 00_001_110 POTTER
57E7: 0E 45 4D 45 52 41 4C 1F ; 00_001_110 EMERAL
57EF: 0D 50 45 41 52 4C 16 ; 00_001_101 PEARL
;
; Verbs
57F6: C9 4E 01 ; 11_001_001 N
57F9: CD 4E 4F 52 54 48 01 ; 11_001_101 NORTH
5800: C9 45 02 ; 11_001_001 E
5803: CC 45 41 53 54 02 ; 11_001_100 EAST
5809: C9 53 03 ; 11_001_001 S
580C: CD 53 4F 55 54 48 03 ; 11_001_101 SOUTH
5813: C9 57 04 ; 11_001_001 W
5816: CC 57 45 53 54 04 ; 11_001_100 WEST
581C: CA 4E 45 05 ; 11_001_010 NE
5820: CE 4E 4F 52 54 48 45 05 ; 11_001_110 NORTHE
5828: CA 53 45 06 ; 11_001_010 SE
582C: CE 53 4F 55 54 48 45 06 ; 11_001_110 SOUTHE
5834: CA 53 57 07 ; 11_001_010 SW
5838: CE 53 4F 55 54 48 57 07 ; 11_001_110 SOUTHW
5840: CA 4E 57 08 ; 11_001_010 NW
5844: CE 4E 4F 52 54 48 57 08 ; 11_001_110 NORTHW
584C: C9 55 09 ; 11_001_001 U
584F: CA 55 50 09 ; 11_001_010 UP
5853: C9 44 0A ; 11_001_001 D
5856: CC 44 4F 57 4E 0A ; 11_001_100 DOWN
585C: CA 49 4E 0B ; 11_001_010 IN
5860: CE 49 4E 53 49 44 45 0B ; 11_001_110 INSIDE
5868: CB 4F 55 54 0C ; 11_001_011 OUT
586D: CE 4F 55 54 53 49 44 0C ; 11_001_110 OUTSID
5875: CD 43 52 4F 53 53 0D ; 11_001_101 CROSS
587C: CC 4C 45 46 54 0E ; 11_001_100 LEFT
5882: CD 52 49 47 48 54 0F ; 11_001_101 RIGHT
5889: CC 4A 55 4D 50 10 ; 11_001_100 JUMP
588F: CD 43 4C 49 4D 42 11 ; 11_001_101 CLIMB
5896: CD 50 41 4E 45 4C 12 ; 11_001_101 PANEL
589D: CC 42 41 43 4B 14 ; 11_001_100 BACK
58A3: CC 53 57 49 4D 16 ; 11_001_100 SWIM
58A9: CA 4F 4E 17 ; 11_001_010 ON
58AD: CB 4F 46 46 18 ; 11_001_011 OFF
58B2: CC 51 55 49 54 19 ; 11_001_100 QUIT
58B8: CC 53 54 4F 50 19 ; 11_001_100 STOP
58BE: CD 53 43 4F 52 45 1A ; 11_001_101 SCORE
58C5: CE 49 4E 56 45 4E 54 1B ; 11_001_110 INVENT
58CD: CC 4C 4F 4F 4B 1C ; 11_001_100 LOOK
58D3: CC 48 45 4C 50 1D ; 11_001_100 HELP
58D9: CC 46 49 4E 44 1E ; 11_001_100 FIND
; 20 ; 11_001_010 Y2 would go here. 20 is referenced in the scripts.
58DF: 4C 44 52 4F 50 21 ; 01_001_100 DROP
58E5: 4E 52 45 4C 45 41 53 21 ; 01_001_110 RELEAS
58ED: 4C 46 52 45 45 21 ; 01_001_100 FREE
58F3: 4E 44 49 53 43 41 52 21 ; 01_001_110 DISCAR
58FB: CD 4C 49 47 48 54 17 ; 11_001_101 LIGHT
5902: 4C 57 41 56 45 23 ; 01_001_100 WAVE
5908: 4D 53 48 41 4B 45 23 ; 01_001_101 SHAKE
590F: 4D 53 57 49 4E 47 23 ; 01_001_101 SWING
5916: 4C 50 4F 55 52 24 ; 01_001_100 POUR
591C: 4B 52 55 42 25 ; 01_001_011 RUB
5921: 4D 54 48 52 4F 57 26 ; 01_001_101 THROW
5928: 4C 54 4F 53 53 26 ; 01_001_100 TOSS
592E: 4C 46 49 4C 4C 27 ; 01_001_100 FILL
5934: 8C 54 41 4B 45 28 ; 10_001_100 TAKE
593A: 8B 47 45 54 28 ; 10_001_011 GET
593F: 8D 43 41 52 52 59 28 ; 10_001_101 CARRY
5946: 8D 43 41 54 43 48 28 ; 10_001_101 CATCH
594D: 8D 53 54 45 41 4C 28 ; 10_001_101 STEAL
5954: 8E 43 41 50 54 55 52 28 ; 10_001_110 CAPTUR
595C: 8C 4F 50 45 4E 29 ; 10_001_100 OPEN
5962: 8E 41 54 54 41 43 4B 2C ; 10_001_110 ATTACK
596A: 8C 4B 49 4C 4C 2C ; 10_001_100 KILL
5970: 8B 48 49 54 2C ; 10_001_011 HIT
5975: 8D 46 49 47 48 54 2C ; 10_001_101 FIGHT
597C: 8C 46 45 45 44 2D ; 10_001_100 FEED
5982: 8B 45 41 54 2E ; 10_001_011 EAT
5987: 8D 44 52 49 4E 4B 2F ; 10_001_101 DRINK
598E: 8D 42 52 45 41 4B 30 ; 10_001_101 BREAK
5995: 8D 53 4D 41 53 48 30 ; 10_001_101 SMASH
599C: CC 4C 4F 41 44 3A ; 11_001_100 LOAD
59A2: CC 53 41 56 45 3B ; 11_001_100 SAVE
59A8: CD 50 4C 55 47 48 39 ; 11_001_101 PLUGH
59AF: 00
General Command Handler
This script is used when the room doesn't have a script for the input command.
GeneralComScript:
59B0: 01 04 ; N
59B2: 04 ED 73 ; print(PS_7A) THERE_IS_NO_WAY_FOR_YOU_TO_GO_THAT_DIRECTION.
59B5: 02 04 ; E
59B7: 04 ED 73 ; print(PS_7A) THERE_IS_NO_WAY_FOR_YOU_TO_GO_THAT_DIRECTION.
59BA: 03 04 ; S
59BC: 04 ED 73 ; print(PS_7A) THERE_IS_NO_WAY_FOR_YOU_TO_GO_THAT_DIRECTION.
59BF: 04 04 ; W
59C1: 04 ED 73 ; print(PS_7A) THERE_IS_NO_WAY_FOR_YOU_TO_GO_THAT_DIRECTION.
59C4: 05 04 ; NE
59C6: 04 ED 73 ; print(PS_7A) THERE_IS_NO_WAY_FOR_YOU_TO_GO_THAT_DIRECTION.
59C9: 06 04 ; SE
59CB: 04 ED 73 ; print(PS_7A) THERE_IS_NO_WAY_FOR_YOU_TO_GO_THAT_DIRECTION.
59CE: 07 04 ; SW
59D0: 04 ED 73 ; print(PS_7A) THERE_IS_NO_WAY_FOR_YOU_TO_GO_THAT_DIRECTION.
59D3: 08 04 ; NW
59D5: 04 ED 73 ; print(PS_7A) THERE_IS_NO_WAY_FOR_YOU_TO_GO_THAT_DIRECTION.
59D8: 09 04 ; U
59DA: 04 ED 73 ; print(PS_7A) THERE_IS_NO_WAY_FOR_YOU_TO_GO_THAT_DIRECTION.
59DD: 0A 04 ; D
59DF: 04 ED 73 ; print(PS_7A) THERE_IS_NO_WAY_FOR_YOU_TO_GO_THAT_DIRECTION.
59E2: 0B 04 ; IN
59E4: 04 0D 74 ; print(PS_7B) I_DON'T_KNOW_IN_FROM_OUT_HERE.__USE_COMPASS_POINTS.
59E7: 0C 04 ; OUT
59E9: 04 0D 74 ; print(PS_7B) I_DON'T_KNOW_IN_FROM_OUT_HERE.__USE_COMPASS_POINTS.
59EC: 0E 04 ; LEFT
59EE: 04 31 74 ; print(PS_7C) I_AM_UNSURE_HOW_YOU_ARE_FACING.__USE_COMPASS_POINTS.
59F1: 0F 04 ; RIGHT
59F3: 04 31 74 ; print(PS_7C) I_AM_UNSURE_HOW_YOU_ARE_FACING.__USE_COMPASS_POINTS.
59F6: 12 04 ; PANEL
59F8: 04 56 74 ; print(PS_7D) NOTHING_HAPPENS.
59FB: 14 02 ; BACK
59FD: 0E ; move_to_last_room()
59FE: 16 04 ; SWIM
5A00: 04 63 74 ; print(PS_7E) I_DON'T_KNOW_HOW.
5A03: 17 18 ; ON
5A05: 07 0C ; stop_if_pass ...
5A07: 02 0E ; is_in_pack(OBJ_0E_LAMP_OFF)
5A09: 15 0E 00 ; move_object_to_room(OBJ_0E_LAMP_OFF, RM_00_nowhere)
5A0C: 15 0F FF ; move_object_to_room(OBJ_0F_LAMP_ON, BACKPACK)
5A0F: 04 8F 74 ; print(PS_80) YOUR_LAMP_IS_NOW_ON.
5A12: 07 06 ; stop_if_pass ...
5A14: 02 0F ; is_in_pack(OBJ_0F_LAMP_ON)
5A16: 04 8F 74 ; print(PS_80) YOUR_LAMP_IS_NOW_ON.
5A19: 04 9F 74 ; print(PS_81) YOU_HAVE_NO_SOURCE_OF_LIGHT.
5A1C: 18 18 ; OFF
5A1E: 07 0C ; stop_if_pass ...
5A20: 02 0F ; is_in_pack(OBJ_0F_LAMP_ON)
5A22: 15 0F 00 ; move_object_to_room(OBJ_0F_LAMP_ON, RM_00_nowhere)
5A25: 15 0E FF ; move_object_to_room(OBJ_0E_LAMP_OFF, BACKPACK)
5A28: 04 B4 74 ; print(PS_82) YOUR_LAMP_IS_NOW_OFF.
5A2B: 07 06 ; stop_if_pass ...
5A2D: 02 0E ; is_in_pack(OBJ_0E_LAMP_OFF)
5A2F: 04 B4 74 ; print(PS_82) YOUR_LAMP_IS_NOW_OFF.
5A32: 04 9F 74 ; print(PS_81) YOU_HAVE_NO_SOURCE_OF_LIGHT.
5A35: 19 02 ; QUIT
5A37: 09 ; end_of_game()
5A38: 1A 02 ; SCORE
5A3A: 08 ; print_score()
5A3B: 1B 02 ; INVENT
5A3D: 0F ; print_inventory()
5A3E: 1C 02 ; LOOK
5A40: 10 ; print_room_description()
5A41: 1D 04 ; HELP
5A43: 04 C4 74 ; print(PS_83) I'M_AS_CONFUSED_AS_YOU_ARE.
5A46: 1E 04 ; FIND
5A48: 04 D8 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.
5A4B: 28 47 ; TAKE
5A4D: 07 06 ; stop_if_pass ...
5A4F: 11 07 ; is_object_user_input(OBJ_07_PLANT_SMALL)
5A51: 04 61 7A ; print(PS_A8) THE_PLANT_HAS_EXCEPTIONALLY_DEEP_ROOTS_AND_CANNOT_BE_PULLED_____
; FREE.
5A54: 07 17 ; stop_if_pass ...
5A56: 11 13 ; is_object_user_input(OBJ_13_BIRD)
5A58: 07 06 ; stop_if_pass ...
5A5A: 02 11 ; is_in_pack(OBJ_11_SCEPTER)
5A5C: 04 C7 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.
5A5F: 07 09 ; stop_if_pass ...
5A61: 02 10 ; is_in_pack(OBJ_10_BOX)
5A63: 15 13 00 ; move_object_to_room(OBJ_13_BIRD, RM_00_nowhere)
5A66: 19 14 10 ; put_object_in_container_print_ok(OBJ_14_BIRD_IN_BOX, OBJ_10_BOX)
5A69: 04 14 7B ; print(PS_AB) YOU_CAN_LIFT_THE_STATUE,_BUT_YOU_CANNOT_CARRY_IT.
5A6C: 07 0A ; stop_if_pass ...
5A6E: 11 20 ; is_object_user_input(OBJ_20_VASE_ON_PILLOW)
5A70: 12 21 ; get_from_room_print_ok(OBJ_21_VASE)
5A72: 15 20 00 ; move_object_to_room(OBJ_20_VASE_ON_PILLOW, RM_00_nowhere)
5A75: 18 12 ; move_object_to_current_room(OBJ_12_PILLOW)
5A77: 07 0D ; stop_if_pass ...
5A79: 11 1E ; is_object_user_input(OBJ_1E_STREAM_ROOM_38)
5A7B: 07 06 ; stop_if_pass ...
5A7D: 02 1C ; is_in_pack(OBJ_1C_WATER)
5A7F: 04 37 7B ; print(PS_AC) YOUR_BOTTLE_IS_ALREADY_FULL.
5A82: 19 1C 1B ; put_object_in_container_print_ok(OBJ_1C_WATER, OBJ_1B_BOTTLE)
5A85: 07 0C ; stop_if_pass ...
5A87: 11 12 ; is_object_user_input(OBJ_12_PILLOW)
5A89: 1A 20 ; is_in_current_room(OBJ_20_VASE_ON_PILLOW)
5A8B: 15 20 00 ; move_object_to_room(OBJ_20_VASE_ON_PILLOW, RM_00_nowhere)
5A8E: 18 21 ; move_object_to_current_room(OBJ_21_VASE)
5A90: 12 12 ; get_from_room_print_ok(OBJ_12_PILLOW)
5A92: 16 ; get_users_object_print_ok()
5A93: 21 17 ; DROP
5A95: 07 14 ; stop_if_pass ...
5A97: 11 21 ; is_object_user_input(OBJ_21_VASE)
5A99: 15 21 00 ; move_object_to_room(OBJ_21_VASE, RM_00_nowhere)
5A9C: 07 08 ; stop_if_pass ...
5A9E: 1A 12 ; is_in_current_room(OBJ_12_PILLOW)
5AA0: 18 20 ; move_object_to_current_room(OBJ_20_VASE_ON_PILLOW)
5AA2: 04 15 7C ; print(PS_B0) THE_VASE_IS_NOW_RESTING,_DELICATELY,_ON_A_VELVET_PILLOW.
5AA5: 18 15 ; move_object_to_current_room(OBJ_15_POTTERY)
5AA7: 04 3D 7C ; print(PS_B1) THE_VASE_DROPS_WITH_A_DELICATE_CRASH.
5AAA: 17 ; drop_users_object_print_ok()
5AAB: 26 0E ; THROW
5AAD: 07 0B ; stop_if_pass ...
5AAF: 11 21 ; is_object_user_input(OBJ_21_VASE)
5AB1: 15 21 00 ; move_object_to_room(OBJ_21_VASE, RM_00_nowhere)
5AB4: 18 15 ; move_object_to_current_room(OBJ_15_POTTERY)
5AB6: 04 75 7C ; print(PS_B3) YOU_HAVE_TAKEN_THE_VASE_AND_HURLED_IT_DELICATELY_TO_THE_GROUND.
5AB9: 17 ; drop_users_object_print_ok()
5ABA: 29 36 ; OPEN
5ABC: 07 1C ; stop_if_pass ...
5ABE: 11 17 ; is_object_user_input(OBJ_17_SARCOPH_FULL)
5AC0: 07 06 ; stop_if_pass ...
5AC2: 02 17 ; is_in_pack(OBJ_17_SARCOPH_FULL)
5AC4: 04 01 77 ; print(PS_94) I'D_ADVISE_YOU_TO_PUT_DOWN_THE_SARCOPHAGUS_BEFORE_OPENING_IT!!
5AC7: 07 0E ; stop_if_pass ...
5AC9: 02 22 ; is_in_pack(OBJ_22_KEY)
5ACB: 04 BE 76 ; print(PS_93) A_GLISTENING_PEARL_FALLS_OUT_OF_THE_SARCOPHAGUS_AND_ROLLS_AWAY._
; THE_SARCOPHAGUS_SNAPS_SHUT_AGAIN.
5ACE: 15 16 40 ; move_object_to_room(OBJ_16_PEARL, RM_40_CUL_DE_SAC)
5AD1: 15 17 00 ; move_object_to_room(OBJ_17_SARCOPH_FULL, RM_00_nowhere)
5AD4: 18 18 ; move_object_to_current_room(OBJ_18_SARCOPH_EMPTY)
5AD6: 04 6B 77 ; print(PS_96) YOU_DON'T_HAVE_ANYTHING_STRONG_ENOUGH_TO_OPEN_THE_SARCOPHAGUS.
5AD9: 07 14 ; stop_if_pass ...
5ADB: 11 18 ; is_object_user_input(OBJ_18_SARCOPH_EMPTY)
5ADD: 07 06 ; stop_if_pass ...
5ADF: 02 18 ; is_in_pack(OBJ_18_SARCOPH_EMPTY)
5AE1: 04 01 77 ; print(PS_94) I'D_ADVISE_YOU_TO_PUT_DOWN_THE_SARCOPHAGUS_BEFORE_OPENING_IT!!
5AE4: 07 06 ; stop_if_pass ...
5AE6: 02 22 ; is_in_pack(OBJ_22_KEY)
5AE8: 04 2D 77 ; print(PS_95) THE_SARCOPHAGUS_CREAKS_OPEN,_REVEALING_NOTHING_INSIDE.__IT______
; PROMPTLY_SNAPS_SHUT_AGAIN.
5AEB: 04 6B 77 ; print(PS_96) YOU_DON'T_HAVE_ANYTHING_STRONG_ENOUGH_TO_OPEN_THE_SARCOPHAGUS.
5AEE: 04 97 77 ; print(PS_97) I_DON'T_KNOW_HOW_TO_LOCK_OR_UNLOCK_SUCH_A_THING.
5AF1: 23 04 ; WAVE
5AF3: 04 56 74 ; print(PS_7D) NOTHING_HAPPENS.
5AF6: 24 0E ; POUR
5AF8: 07 09 ; stop_if_pass ...
5AFA: 11 1C ; is_object_user_input(OBJ_1C_WATER)
5AFC: 15 1C 00 ; move_object_to_room(OBJ_1C_WATER, RM_00_nowhere)
5AFF: 04 E9 75 ; print(PS_8C) 77 YOUR BOTTLE IS EMPTY AND THE GROUND IS WET.
; YOUR_BOTTLE_IS_EMPTY_AND_THE_GROUND_IS_WET.
5B02: 04 08 76 ; print(PS_8D) YOU_CAN'T_POUR_THAT.
5B05: 25 12 ; RUB
5B07: 07 06 ; stop_if_pass ...
5B09: 11 0E ; is_object_user_input(OBJ_0E_LAMP_OFF)
5B0B: 04 18 76 ; print(PS_8E) RUBBING_THE_ELECTRIC_LAMP_IS_NOT_PARTICULARLY_REWARDING.________
; ANYWAY,_NOTHING_EXCITING_HAPPENS.
5B0E: 07 06 ; stop_if_pass ...
5B10: 11 0F ; is_object_user_input(OBJ_0F_LAMP_ON)
5B12: 04 18 76 ; print(PS_8E) RUBBING_THE_ELECTRIC_LAMP_IS_NOT_PARTICULARLY_REWARDING.________
; ANYWAY,_NOTHING_EXCITING_HAPPENS.
5B15: 04 5B 76 ; print(PS_8F) PECULIAR.__NOTHING_UNEXPECTED_HAPPENS.
5B18: 27 12 ; FILL
5B1A: 07 06 ; stop_if_pass ...
5B1C: 11 1B ; is_object_user_input(OBJ_1B_BOTTLE)
5B1E: 04 77 76 ; print(PS_90) THERE_IS_NOTHING_HERE_WITH_WHICH_TO_FILL_THE_BOTTLE.
5B21: 07 06 ; stop_if_pass ...
5B23: 11 21 ; is_object_user_input(OBJ_21_VASE)
5B25: 04 D9 75 ; print(PS_8B) DON'T_BE_RIDICULOUS!
5B28: 04 AE 76 ; print(PS_92) YOU_CAN'T_FILL_THAT.
5B2B: 2C 2D ; ATTACK
5B2D: 07 09 ; stop_if_pass ...
5B2F: 11 13 ; is_object_user_input(OBJ_13_BIRD)
5B31: 15 13 00 ; move_object_to_room(OBJ_13_BIRD, RM_00_nowhere)
5B34: 04 B9 77 ; print(PS_98) THE_BIRD_STATUE_IS_NOW_DEAD.__ITS_BODY_DISAPPEARS.
5B37: 07 09 ; stop_if_pass ...
5B39: 11 14 ; is_object_user_input(OBJ_14_BIRD_IN_BOX)
5B3B: 15 14 00 ; move_object_to_room(OBJ_14_BIRD_IN_BOX, RM_00_nowhere)
5B3E: 04 B9 77 ; print(PS_98) THE_BIRD_STATUE_IS_NOW_DEAD.__ITS_BODY_DISAPPEARS.
5B41: 07 06 ; stop_if_pass ...
5B43: 11 17 ; is_object_user_input(OBJ_17_SARCOPH_FULL)
5B45: 04 DD 77 ; print(PS_99) THE_STONE_IS_VERY_STRONG_AND_IS_IMPERVIOUS_TO_ATTACK.
5B48: 07 06 ; stop_if_pass ...
5B4A: 11 18 ; is_object_user_input(OBJ_18_SARCOPH_EMPTY)
5B4C: 04 DD 77 ; print(PS_99) THE_STONE_IS_VERY_STRONG_AND_IS_IMPERVIOUS_TO_ATTACK.
5B4F: 07 06 ; stop_if_pass ...
5B51: 11 0B ; is_object_user_input(OBJ_0B_SERPENT)
5B53: 04 03 78 ; print(PS_9A) ATTACKING_THE_SERPENT_BOTH_DOESN'T_WORK_AND_IS_VERY_DANGEROUS.
5B56: 04 2F 78 ; print(PS_9B) YOU_CAN'T_BE_SERIOUS!
5B59: 30 04 ; BREAK
5B5B: 04 3F 78 ; print(PS_9C) IT_IS_BEYOND_YOUR_POWER_TO_DO_THAT.
5B5E: 2E 23 ; EAT
5B60: 07 09 ; stop_if_pass ...
5B62: 11 1A ; is_object_user_input(OBJ_1A_FOOD)
5B64: 15 1A 00 ; move_object_to_room(OBJ_1A_FOOD, RM_00_nowhere)
5B67: 04 59 78 ; print(PS_9D) THANK_YOU,_IT_WAS_DELICIOUS!
5B6A: 07 06 ; stop_if_pass ...
5B6C: 11 0A ; is_object_user_input(OBJ_0A_UNKNOWN_0A??)
5B6E: 04 6E 78 ; print(PS_9E) I_THINK_I_JUST_LOST_MY_APPETITE.
5B71: 07 06 ; stop_if_pass ...
5B73: 11 13 ; is_object_user_input(OBJ_13_BIRD)
5B75: 04 6E 78 ; print(PS_9E) I_THINK_I_JUST_LOST_MY_APPETITE.
5B78: 07 06 ; stop_if_pass ...
5B7A: 11 14 ; is_object_user_input(OBJ_14_BIRD_IN_BOX)
5B7C: 04 6E 78 ; print(PS_9E) I_THINK_I_JUST_LOST_MY_APPETITE.
5B7F: 04 D9 75 ; print(PS_8B) DON'T_BE_RIDICULOUS!
5B82: 2F 15 ; DRINK
5B84: 07 09 ; stop_if_pass ...
5B86: 11 1C ; is_object_user_input(OBJ_1C_WATER)
5B88: 15 1C 00 ; move_object_to_room(OBJ_1C_WATER, RM_00_nowhere)
5B8B: 04 9C 76 ; print(PS_91) THE_BOTTLE_IS_NOW_EMPTY.
5B8E: 07 06 ; stop_if_pass ...
5B90: 11 1E ; is_object_user_input(OBJ_1E_STREAM_ROOM_38)
5B92: 04 86 78 ; 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.
5B95: 04 2F 78 ; print(PS_9B) YOU_CAN'T_BE_SERIOUS!
5B98: 2D 38 ; FEED
5B9A: 07 06 ; stop_if_pass ...
5B9C: 11 13 ; is_object_user_input(OBJ_13_BIRD)
5B9E: 04 E1 78 ; print(PS_A0) IT'S_NOT_HUNGRY.__BESIDES,_YOU_HAVE_NO_BIRD_SEED.
5BA1: 07 06 ; stop_if_pass ...
5BA3: 11 14 ; is_object_user_input(OBJ_14_BIRD_IN_BOX)
5BA5: 04 E1 78 ; print(PS_A0) IT'S_NOT_HUNGRY.__BESIDES,_YOU_HAVE_NO_BIRD_SEED.
5BA8: 07 10 ; stop_if_pass ...
5BAA: 11 0B ; is_object_user_input(OBJ_0B_SERPENT)
5BAC: 07 09 ; stop_if_pass ...
5BAE: 02 14 ; is_in_pack(OBJ_14_BIRD_IN_BOX)
5BB0: 15 14 00 ; move_object_to_room(OBJ_14_BIRD_IN_BOX, RM_00_nowhere)
5BB3: 04 2B 79 ; print(PS_A2) THE_SERPENT_HAS_NOW_DEVOURED_YOUR_BIRD_STATUE.
5BB6: 04 4C 79 ; print(PS_A3) THERE_IS_NOTHING_HERE_IT_WANTS_TO_EAT_-_EXCEPT_PERHAPS_YOU.
5BB9: 07 06 ; stop_if_pass ...
5BBB: 11 17 ; is_object_user_input(OBJ_17_SARCOPH_FULL)
5BBD: 04 A7 79 ; print(PS_A5) I'M_GAME.__WOULD_YOU_CARE_TO_EXPLAIN_HOW?
5BC0: 07 06 ; stop_if_pass ...
5BC2: 11 18 ; is_object_user_input(OBJ_18_SARCOPH_EMPTY)
5BC4: 04 A7 79 ; print(PS_A5) I'M_GAME.__WOULD_YOU_CARE_TO_EXPLAIN_HOW?
5BC7: 07 06 ; stop_if_pass ...
5BC9: 11 0D ; is_object_user_input(OBJ_0D_UNKNOWN_0D??)
5BCB: 04 4C 79 ; print(PS_A3) THERE_IS_NOTHING_HERE_IT_WANTS_TO_EAT_-_EXCEPT_PERHAPS_YOU.
5BCE: 04 D9 75 ; print(PS_8B) DON'T_BE_RIDICULOUS!
5BD1: 39 02 ; PLUGH
5BD3: 1D ; scramble_directions_print_ack()
5BD4: 3A 02 ; LOAD
5BD6: 1B ; load_game()
5BD7: 3B 02 ; SAVE
5BD9: 1C ; save_game()
5BDA: 00 ;
Room descriptions (packed)
; adventure.dat ?? ; YOU_ARE_STANDING_BEFORE_THE_ENTRANCE_OF_A_PYRAMID.__AROUND_YOU__ ; IS_A_DESERT. PS_00: ; RM_01_BEFORE_ENTRANCE 5BDB: 19 C7 DE 94 14 55 5E 50 BD 90 5A C4 6A 59 60 5B 5BEB: B1 5F BE 30 15 EB BF 17 98 B8 16 7B 14 14 A8 6B 5BFB: 48 9B 5D 94 14 30 A1 1B 58 1B A1 D5 15 7B 14 F5 5C0B: 59 3E 62 2E 00 ; adventure.dat ?? ; 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 5C10: 22 C7 DE 94 14 4B 5E 96 96 DB 72 9E 61 D0 B0 9B 5C20: 53 6B BF 5F BE F3 16 CF B0 17 79 43 13 A9 15 DB 5C30: 8B 83 7A 5F BE 56 15 44 A0 3B 13 3F 16 0D 47 89 5C40: 17 7B 14 55 A4 09 B7 44 5E 8F 61 82 49 82 17 55 5C50: 5E 30 C6 D7 46 2E 00 ; adventure.dat ?? ; YOU_ARE_IN_THE_DESERT. PS_02: ; RM_03_DESERT1, RM_04, RM_05, RM_06 5C57: 07 C7 DE 94 14 4B 5E 96 96 DB 72 F5 59 3E 62 2E 5C67: 00 ; 9 YOU ARE IN A SMALL CHAMBER BENEATH A 3X3 STEEL GRATE TO THE ; 9 SURFACE. A LOW CRAWL OVER COBBLES LEADS INWARD TO THE WEST. ; woods9 ; ; 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 5C68: 3B C7 DE 94 14 4B 5E 83 96 5F 17 46 48 DA 14 64 5C78: 48 23 62 70 4D 96 5F 03 71 A9 15 DB 8B 79 68 56 5C88: 90 DB 72 34 BA C5 65 DB 63 7B 14 49 16 C5 CE D9 5C98: B0 0E 8A 86 5F CB B5 33 9B 33 B1 6B BF 5F BE F7 5CA8: 17 17 BA 4A 13 34 79 FE 9E E2 DE E5 78 C0 16 82 5CB8: 17 59 5E 46 48 56 13 D0 B0 BB B8 FE BD 6D 13 3D 5CC8: C6 43 5E F3 8C 29 D1 30 15 F4 BD 82 17 4B 7B 05 5CD8: B7 66 B1 E4 14 EE DE 2E 22 00 ; 10 YOU ARE CRAWLING OVER COBBLES IN A LOW PASSAGE. THERE IS A ; 10 DIM LIGHT AT THE EAST END OF THE PASSAGE. ; woods10 ; ; 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 5CE2: 21 C7 DE 94 14 45 5E D9 B0 90 8C D1 6A 74 CA DF 5CF2: 16 F6 4C 4B 62 83 7A 4E 45 6B A1 55 A4 09 B7 DB 5D02: 63 82 17 2F 62 D5 15 7B 14 8F 5A 43 16 2E 6D 96 5D12: 14 82 17 47 5E 66 49 30 15 11 58 96 64 DB 72 55 5D22: A4 09 B7 45 2E 00 ; 11 YOU ARE IN A DEBRIS ROOM, FILLED WITH STUFF WASHED IN FROM ; 11 THE SURFACE. A LOW WIDE PASSAGE WITH COBBLES BECOMES ; 11 PLUGGED WITH MUD AND DEBRIS HERE,BUT AN AWKWARD CANYON ; 11 LEADS UPWARD AND WEST. ; 11 A NOTE ON THE WALL SAYS 'MAGIC WORD XYZZY'. ; woods11 ; ; 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 5D28: 29 C7 DE 94 14 4B 5E 83 96 39 17 DB 9F 0E 67 E6 5D38: 8B FB 17 53 BE 79 4F B0 85 E9 16 3F C0 7B B4 1B 5D48: B8 4D B1 B8 16 90 14 47 54 B3 9A 29 15 EE DE 90 5D58: 78 E4 14 5E 47 5B BB 90 14 99 14 73 88 33 B1 44 5D68: 55 06 B2 A3 A0 E3 8B 0B 5C F1 C5 2E 49 90 14 19 5D78: 58 66 62 2E 00 ; 12 YOU ARE IN AN AWKWARD SLOPING EAST/WEST CANYON. ; woods12 ; ; YOU_ARE_IN_AN_AWKWARD_SLOPING_EAST/WEST_CORRIDOR. PS_06: ; RM_0A_AWKWARD_SLOPING 5D7D: 10 C7 DE 94 14 4B 5E 83 96 83 96 A9 D1 2E 49 5E 5D8D: 17 63 A0 AB 98 95 5F E1 BC 66 62 E1 14 73 B3 84 5D9D: 5B 2E 00 ; 13 YOU ARE IN A SPLENDID CHAMBER THIRTY FEET HIGH. THE WALLS ; 13 ARE FROZEN RIVERS OF ORANGE STONE. AN AWKWARD CANYON AND A ; 13 GOOD PASSAGE EXIT FROM EAST AND WEST SIDES OF THE CHAMBER. ; woods13 ; ; 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 5DA0: 3D C7 DE 94 14 4B 5E 83 96 62 17 F0 8B 86 5A DA 5DB0: 14 64 48 23 62 63 BE D3 B3 4F 15 73 62 89 73 9B 5DC0: 76 82 17 59 5E 46 48 C3 B5 5B B1 5C 15 EF A1 94 5DD0: 96 CF 7B 8B B3 C3 9E AB A0 B7 98 66 17 0F A0 3B 5DE0: F4 83 48 FD 49 14 D0 05 58 BC A0 09 79 83 AF 33 5DF0: 98 49 45 36 A0 52 13 65 49 77 47 3A 15 73 7B 79 5E00: 68 56 90 DB 72 95 5F 03 BC 33 98 B5 D0 15 BC FF 5E10: 78 D1 B5 96 64 DB 72 1B 54 AF 91 52 2E 00 ; 14 AT YOUR FEET IS A SMALL PIT BREATHING TRACES OF WHITE MIST. AN ; 14 EAST PASSAGE ENDS HERE EXCEPT FOR A SMALL CRACK LEADING ON. ; woods14 ; ; 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 5E1E: 36 73 49 C7 DE 88 AF 36 60 D5 15 7B 14 E3 B8 F3 5E2E: 8C 96 A5 BC 14 96 5F 90 73 D6 6A C5 B0 4B 62 C3 5E3E: 9E 23 D1 DB BD D5 92 9B C1 90 14 23 15 F3 B9 55 5E4E: A4 09 B7 47 5E 4D 98 9F 15 5B B1 1D 63 EE 61 59 5E5E: 15 83 AF 5F 17 46 48 E4 14 DD 46 3F 16 03 47 AB 5E6E: 98 27 A0 3B 13 54 13 29 A1 15 71 80 BF 55 5E F2 5E7E: BD CE B5 86 5F 09 15 03 D2 5F BE E3 16 54 2E 00 ; 15 YOU ARE AT ONE END OF A VAST HALL STRETCHING FORWARD OUT OF ; 15 SIGHT TO THE WEST. THERE ARE OPENINGS TO EITHER SIDE. NEARBY, A WIDE ; 15 STONE STAIRCASE LEADS DOWNWARD. THE HALL IS FILLED WITH ; 15 WISPS OF WHITE MIST SWAYING TO AND FRO ALMOST AS IF ALIVE. ; 15 A COLD WIND BLOWS UP THE STAIRCASE. THERE IS A PASSAGE ; 15 AT THE TOP OF A DOME BEHIND YOU. ; woods15 ; ; 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 5E8E: 6C C7 DE 94 14 43 5E 11 BC 5B 98 8E 61 B8 16 7B 5E9E: 14 D5 C9 0A BC 46 48 66 17 76 B1 23 54 AB 98 04 5EAE: 68 14 D0 11 58 73 C6 C3 9E 3B 13 5B 17 2E 6D 89 5EBE: 17 82 17 59 5E 66 62 3B F4 5F BE 5B B1 2F 49 C2 5ECE: 16 93 61 C5 98 89 17 2B 15 5F BE 95 AF FF 78 3B 5EDE: F4 63 98 03 B1 03 EE FB 17 DB 59 09 BA 5B 98 FB 5EEE: B9 2D 7B 57 49 3F 16 0D 47 09 15 21 D2 2E 49 3B 5EFE: F4 5F BE 9B 15 F3 8C 4B 7B 74 CA 4F DB 66 C6 3B 5F0E: DB 8E 48 7B 14 3E 55 19 58 8E 7A B6 14 85 A1 B2 5F1E: 17 82 17 55 5E 4B BD 13 B1 BF B7 56 13 F4 72 4B 5F2E: 5E C3 B5 DB 16 D3 B9 9B 6C 73 49 82 17 56 5E 53 5F3E: A0 C3 9E 46 45 E7 9F AF 14 90 73 1B 58 3F A1 54 5F4E: 13 29 A1 15 71 80 BF 55 5E F2 BD CE B5 86 5F B2 5F5E: 17 82 17 3B 5E 46 13 E7 9F 2E 00 ; 18 THIS IS A LOW ROOM WITH A CRUDE NOTE ON THE WALL. ; 18 IT SAYS 'YOU WON'T GET IT UP THE STEPS'. ; woods18 ; ; 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 5F69: 20 63 BE CB B5 C3 B5 49 16 D4 CE 3F A0 FB 17 53 5F79: BE 4A 45 34 79 FE 9E E2 DE C0 16 82 17 59 5E 46 5F89: 48 3B F4 73 7B EB BF 9E 9A 7F 49 03 B6 1B A1 40 5F99: D2 F3 23 B6 6C D6 15 B2 17 82 17 55 5E F2 BD 07 5FA9: B6 00 ; 17 YOU ARE ON THE EAST BANK OF A FISSURE SLICING CLEAR ACROSS ; 17 THE HALL. THE MIST IS QUITE THICK HERE, AND THE FISSURE IS ; 17 TOO WIDE TO JUMP. ; woods17 ; ; 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 5FAB: 2D C7 DE 94 14 51 5E 96 96 DB 72 95 5F 04 BC 95 5FBB: 48 B8 16 7B 14 06 4F 7F BF F5 8B D2 B5 73 7B 0C 5FCB: BA 7D 62 90 73 C3 6A B9 55 CB B9 82 17 4A 5E 46 5FDB: 48 3B F4 5F BE 6B 16 F3 B9 4B 7B AB AD DB BD 63 5FEB: BE 8B 54 F4 72 B3 63 8E 48 82 17 52 5E 73 7B 4B 5FFB: 7B 81 BF FB 17 F6 59 CC 9C 72 C5 2E 00 ; 19 YOU ARE IN THE HALL OF THE MOUNTAIN KING, WITH PASSAGES ; 19 OFF IN ALL DIRECTIONS. ; woods19 ; ; YOU_ARE_IN_THE_PHARAOH'S_CHAMBER,_WITH_PASSAGES_OFF_IN_ALL______ ; DIRECTIONS. PS_0C: ; RM_10_PHARAOHS_CHAMBER 6008: 19 C7 DE 94 14 4B 5E 96 96 DB 72 5B A5 D1 B0 65 6018: 71 DA 14 64 48 46 62 FB 17 53 BE 55 A4 09 B7 4B 6028: 62 D0 9E D0 15 8E 14 FB 89 3B 13 03 15 65 B1 91 6038: BE AF 9A 00 ; 29 YOU ARE IN THE SOUTH SIDE CHAMBER. ; woods29 ; ; YOU_ARE_IN_THE_SOUTH_SIDE_CHAMBER. PS_0D: ; RM_11_SOUTH_SIDE_CHAMBER 603C: 0B C7 DE 94 14 4B 5E 96 96 DB 72 47 B9 53 BE 46 604C: B8 45 5E 4F 72 74 4D 2E 00 ; 27 YOU ARE ON THE WEST SIDE OF THE FISSURE IN THE HALL OF MISTS. ; woods27 ; ; YOU_ARE_ON_THE_WEST_SIDE_OF_THE_BOTTOMLESS_PIT_IN_THE_HALL_OF___ ; GODS. PS_0E: ; RM_12_HALL_OF_GODS 6055: 17 C7 DE 94 14 51 5E 96 96 DB 72 B5 D0 15 BC FF 6065: 78 B8 16 82 17 44 5E 0E A1 EE 9F 65 62 E3 16 0B 6075: BC 96 96 DB 72 4E 72 11 8A 7B 64 81 15 2F 5C 00 ; 41 YOU ARE AT THE WEST END OF HALL OF MISTS. A LOW WIDE CRAWL ; 41 CONTINUES WEST AND ANOTHER GOES NORTH. TO THE SOUTH IS A ; 41 LITTLE PASSAGE 6 FEET OFF THE FLOOR. ; ; 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 6085: 35 C7 DE 94 14 43 5E 16 BC DB 72 B5 D0 07 BC 33 6095: 98 C3 9E 5F BE 9B 15 F3 8C C3 9E 36 6E 5B BB 43 60A5: 13 49 16 D9 CE FF 78 DB 16 CB B9 E1 14 C3 9A E7 60B5: 9A D9 B5 66 62 90 14 03 58 06 9A F4 72 81 15 4B 60C5: 62 04 9A 77 BE 56 13 D6 9C DB 72 47 B9 53 BE 4B 60D5: 7B 4E 45 8E 7B F2 8B 65 49 77 47 5B 17 08 D5 36 60E5: 60 B8 16 96 64 DB 72 89 67 C7 A0 00 ; 60 YOU ARE AT THE EAST END OF A VERY LONG HALL APPARENTLY ; 60 WITHOUT SIDE CHAMBERS. TO THE EAST A LOW WIDE CRAWL SLANTS ; 60 UP. TO THE NORTH A ROUND TWO FOOT HOLE SLANTS DOWN. ; ; 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 60F1: 36 C7 DE 94 14 43 5E 07 BC 66 49 30 15 11 58 83 6101: 64 CF 17 7B B4 80 8D CA 6A 46 48 92 14 54 A4 9E 6111: 61 FB 8E 56 D1 87 74 15 BC FF 78 DA 14 64 48 3D 6121: 62 3B F4 6B BF 5F BE 23 15 F3 B9 4E 45 6B A1 46 6131: D1 45 5E D9 B0 15 8A 50 8B 0B C0 F7 C5 56 13 D6 6141: 9C DB 72 04 9A 5B BE 39 17 8E C5 91 17 C8 9C 46 6151: A0 A9 15 DB 8B BB B8 CD 9A 09 15 27 D2 00 ; 61 YOU ARE AT THE WEST END OF A VERY LONG FEATURELESS HALL. ; ; 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 615F: 25 C7 DE 94 14 43 5E 16 BC DB 72 B5 D0 07 BC 33 616F: 98 C3 9E 58 45 43 62 49 16 AB 98 63 66 74 C0 3F 617F: 61 CB B9 4E 72 9B 8F 82 17 3B 5E 9B 15 F3 8C FB 618F: 80 8B 9A D3 C5 56 D1 03 71 8B 16 79 B3 D0 CE BE 619F: A0 DD 71 36 A1 12 71 65 49 77 47 2E 00 ; 62 YOU ARE AT A CROSSOVER OF A HIGH N/S PASSAGE AND A LOW E/W ONE. ; ; YOU_ARE_AT_A_CROSSOVER_OF_A_HIGH_N/S_PASSAGE_AND_A_LOW_E/W_ONE. PS_12: ; RM_16_CROSSOVER 61AC: 15 C7 DE 94 14 43 5E 03 BC E4 14 E5 A0 4F A1 91 61BC: AF 83 64 A3 15 13 6D 5D 97 DB 16 D3 B9 9B 6C 8E 61CC: 48 7B 14 89 8D 20 15 D1 CE 7F 98 00 ; 63 DEAD END ; ; 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 61D8: 03 E3 59 07 58 57 98 00 ; 30 YOU ARE IN THE WEST SIDE CHAMBER OF HALL OF MT KING. ; 30 A PASSAGE CONTINUES WEST AND UP HERE. ; woods31 ; ; YOU_ARE_IN_THE_WEST_THRONE_CHAMBER.__A_PASSAGE_CONTINUES_WEST___ ; AND_UP_FROM_HERE. PS_14: ; RM_18_THRONE_CHAMBER 61E0: 1B C7 DE 94 14 4B 5E 96 96 DB 72 B5 D0 16 BC F9 61F0: 74 5B 98 1B 54 AF 91 1B B5 7B 14 55 A4 09 B7 45 6200: 5E 1E A0 9F 7A 4B 62 B5 D0 FB BB 90 14 17 58 08 6210: A3 FF B2 9F 15 7F B1 00 ; 28 YOU ARE IN A LOW N/S PASSAGE AT A HOLE IN THE FLOOR. ; 28 THE HOLE GOES DOWN TO AN E/W PASSAGE. ; woods28 ; ; 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 6218: 1E C7 DE 94 14 4B 5E 83 96 49 16 D0 CE 8B 36 55 6228: A4 09 B7 43 5E 03 BC A9 15 DB 8B 83 7A 5F BE 56 6238: 15 44 A0 3B F4 5F BE A9 15 DB 8B 81 15 4B 62 89 6248: 5B 96 96 C3 9C 87 96 2B 37 55 A4 09 B7 45 2E 00 ; 33 YOU ARE IN A LARGE ROOM, WITH A PASSAGE TO THE SOUTH, ; 33 A PASSAGE TO THE WEST, AND A WALL OF BROKEN ROCK TO ; 33 THE EAST. THERE IS A LARGE 'Y2' ON A ROCK IN ROOMS CENTER. ; woods33 ; ; 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 6258: 2A C7 DE 94 14 4B 5E 83 96 3B 16 B7 B1 39 17 FE 6268: 9F FB 17 53 BE 52 45 65 49 77 47 89 17 82 17 55 6278: 5E 36 A1 73 76 8E 48 7B 14 0E D0 78 8D BC 14 97 6288: 9F 94 96 5D 9E 89 17 82 17 47 5E 66 49 3B F4 5F 6298: BE 5B B1 4B 7B 52 45 8F 48 11 8A 96 96 DB 72 04 62A8: 9A 53 BE 0E D0 4C 2E 00 ; adventure.dat ?? ; YOU_ARE_IN_THE_CHAMBER_OF_ANUBIS. PS_17: ; RM_1B_CHAMBER_OF_ANUBIS 62B0: 0B C7 DE 94 14 4B 5E 96 96 DB 72 1B 54 AF 91 91 62C0: 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 62C8: 10 C7 DE 94 14 4B 5E 83 96 63 16 5B E3 C3 9E BB 62D8: C0 13 BA DB 16 D3 B9 B5 6C 03 EE F3 8C 43 48 BF 62E8: 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 62EA: 2E C7 DE 94 14 51 5E 96 96 DB 72 73 4F 4B 99 C3 62FA: 9E 4E 45 31 49 52 5E 97 7B 5B 13 1B A1 47 55 B3 630A: 8B C3 54 A3 91 89 5B F3 9B F6 4F 51 18 59 C2 2E 631A: A1 10 58 F3 A0 5B 4D B6 46 56 5E C5 9C 8F 8C 84 632A: 4B DD 46 B2 17 3B F4 5F BE 63 16 5B E3 40 55 90 633A: BE 35 C4 C0 16 56 13 95 73 3F 16 6E CA 2E 00 ; 36 YOU ARE IN A DIRTY BROKEN PASSAGE. TO THE EAST IS A CRAWL. ; 36 TO THE WEST IS A LARGE PASSAGE. ABOVE YOU IS A HOLE TO ; 36 ANOTHER PASSAGE. ; woods36 ; ; 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 6349: 2D C7 DE 94 14 4B 5E 83 96 03 15 D3 B3 BC 14 97 6359: 9F 92 96 65 49 77 47 3B F4 6B BF 5F BE 23 15 F3 6369: B9 4B 7B 45 45 D9 B0 9B 8F 89 17 82 17 59 5E 66 6379: 62 D5 15 7B 14 54 8B 9B 6C 55 A4 09 B7 DB 63 84 6389: 14 4F A1 51 18 4B C2 C3 B5 A9 15 DB 8B 6B BF 99 6399: 48 5F BE 7B AF 52 13 65 49 77 47 2E 00 ; 37 YOU ARE ON THE BRINK OF A SMALL CLEAN CLIMBABLE PIT. ; 37 A CRAWL LEADS WEST. ; ; YOU_ARE_ON_THE_BRINK_OF_A_SMALL_CLEAN_CLIMBABLE_PIT.__A_CRAWL___ ; LEADS_WEST. PS_1B: ; RM_37_BRINK_OF_CLEAN_PIT 63A6: 19 C7 DE 94 14 51 5E 96 96 DB 72 73 4F 4B 99 C3 63B6: 9E 55 45 8E 91 05 8A E3 8B 85 96 8F 8C C4 4C DB 63C6: 8B 96 A5 3B F4 45 45 D9 B0 FB 89 3F 16 0D 47 F7 63D6: 17 17 BA 00 ; 38 YOU ARE IN THE BOTTOM OF A SMALL PIT WITH A LITTLE ; 38 STREAM, WHICH ENTERS AND EXITS THROUGH TINY SLITS. ; ; 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 63DA: 21 C7 DE 94 14 4B 5E 96 96 DB 72 06 4F 7F BF B8 63EA: 16 7B 14 E3 B8 F3 8C 96 A5 FB 17 53 BE 4E 45 8E 63FA: 7B DB 8B 0C BA 8F 5F 19 EE 85 73 F0 72 F4 BD C3 640A: B5 33 98 23 63 0B C0 6C BE 29 A1 16 71 A3 7A 5E 641A: 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 641F: 2C C7 DE 94 14 4B 5E 83 96 82 17 54 5E 3F A0 B8 642F: 16 AF 14 33 BB 29 D1 9B B7 85 A5 74 C0 4B 5E D1 643F: B5 96 96 DB 72 0E D0 9B 8F 3B 13 82 17 2F 62 D5 644F: 15 7B 14 09 4E A9 15 DB 8B 83 7A 5F BE 56 15 44 645F: A0 3B F4 5F BE 5B B1 4B 7B 52 45 65 49 77 47 3F 646F: 16 03 47 AB 98 47 13 66 49 2E 00 ; 64 YOU ARE AT A COMPLEX JUNCTION. A LOW HANDS AND KNEES ; 64 PASSAGE FROM THE NORTH JOINS A HIGHER CRAWL ; 64 FROM THE EAST TO MAKE A WALKING PASSAGE GOING WEST ; 64 THERE IS ALSO A LARGE ROOM ABOVE. THE AIR IS DAMP HERE. ; 64 A SIGN IN MIDAIR HERE SAYS 'CAVE UNDER CONSTRUCTION BEYOND ; 64 THIS POINT. PROCEED AT OWN RISK.' ; ; 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 647A: 47 C7 DE 94 14 43 5E 03 BC E1 14 E6 93 13 63 F0 648A: 81 03 56 27 A0 43 13 49 16 CA CE 8E 48 C3 B5 33 649A: 98 0F 87 4B 62 55 A4 09 B7 3B 5E 5C 15 DB 9F 5F 64AA: BE 99 16 C2 B3 F9 15 9D 7A 7B 14 89 73 F4 72 E4 64BA: 14 FE 49 5C 15 DB 9F 5F BE 23 15 F3 B9 6B BF 8D 64CA: 91 43 5E 3B 13 59 13 45 48 91 7A DB 16 D3 B9 9B 64DA: 6C 3B 6E AB 98 B5 D0 9B C1 82 17 2F 62 D5 15 8E 64EA: 14 2B B9 4E 45 31 49 54 5E 3F A0 84 14 4F A1 3B 64FA: 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 650A: 4A C7 DE 94 14 4B 5E 96 96 DB 72 8E C5 41 62 B6 651A: A0 03 58 BF 9A 01 B3 51 90 95 64 17 61 1B B5 DB 652A: 16 D3 B9 B5 6C 81 15 23 15 16 BA F7 17 16 BA 90 653A: 14 17 58 9B A8 AF 15 90 91 B9 14 75 98 94 14 55 654A: 5E EF BF 03 D2 B9 46 73 C6 03 A0 5F BE 56 15 44 655A: A0 3B F4 3B 13 4A 13 34 79 FE 9E E2 DE E5 78 C0 656A: 16 82 17 59 5E 46 48 39 17 7A C4 FB 8E EB BF 9E 657A: 9A 7F 49 89 17 7E 13 85 74 59 5E 6B 74 3B 13 3B 658A: 13 F9 A6 A7 53 07 58 66 49 63 16 50 DB CF 62 94 659A: 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 65A1: 19 C7 DE 94 14 43 5E 16 BC DB 72 50 8B 11 58 86 65B1: 64 86 5F 3B F4 55 A4 09 B7 4B 62 E3 8B 11 58 83 65C1: 66 83 7A 8E 2D 73 8A 3B 13 3B 13 03 15 65 B1 91 65D1: 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 65D5: 55 C7 DE AF 23 D0 15 7B 14 54 8B 9B 6C 01 B3 59 65E5: 90 82 7B 90 14 47 54 B3 9A EB 5B 50 D1 CB 6E 03 65F5: A0 46 48 F3 17 0D 8D 3B F4 3B 13 82 17 52 5E E6 6605: 78 2F C6 C6 B5 E3 61 F3 55 8F 49 B3 95 52 45 54 6615: 72 BA 48 F7 17 33 49 AB 98 5F BE 09 15 B6 C3 45 6625: 5E 09 B3 1B 9C 43 13 5A 17 46 48 6B A1 55 A4 09 6635: B7 52 5E F5 B2 26 60 C6 B5 80 A1 14 D0 73 5D 8E 6645: 48 7B 14 3F B9 FA 62 73 49 FF B9 DF 61 91 AF 5B 6655: 98 E3 8B 0B 5C F7 C5 43 13 49 16 CA CE 8E 48 C3 6665: B5 33 98 0F 87 4B 62 55 A4 09 B7 47 5E BF 9A 8B 6675: 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 6682: 2D C7 DE 94 14 4B 5E 83 96 DA 14 64 48 23 62 29 6692: D1 9B B7 0E D0 05 8A 1E A0 D0 47 C3 B5 E3 16 0F 66A2: 56 5B B1 C3 9E 4F 45 83 48 3B 13 F7 17 33 49 AB 66B2: 98 5F BE 4F 16 D4 97 03 15 8B B8 03 A0 95 73 9F 66C2: 15 17 47 4A 13 4B 5E D6 B5 DB 72 36 6E 1A 16 1D 66D2: 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 66E0: 12 C7 DE 94 14 4B 5E 83 96 49 16 AB 98 C9 B8 90 66F0: A5 C5 6A BC A0 09 79 99 AF 82 7B 2B 17 F7 6C 19 6700: 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 6707: 10 C7 DE 94 14 4B 5E 83 96 E7 14 56 8F A5 63 CB 6717: 46 B9 46 73 C6 C9 60 33 75 67 66 03 BC B9 55 EF 6727: B9 00 ; 65 YOU ARE IN BEDQUILT, A LONG EAST/WEST PASSAGE WITH HOLES EVERYWHERE. ; 65 TO EXPLORE AT RANDOM SELECT NORTH, SOUTH, UP, OR DOWN. ; ; 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 6729: 2E C7 DE 94 14 4B 5E 96 96 DB 72 1B 54 AF 91 91 6739: AF 8A 64 BF A0 33 BB 4E 45 11 A0 23 15 F8 B9 B5 6749: D0 12 BC 65 49 77 47 FB 17 53 BE A9 15 F5 8B 38 6759: 15 43 62 1F D1 7F B1 56 13 C7 9C A6 D8 AF A0 96 6769: 14 2B 17 49 98 B3 95 AE B7 E6 5F 99 16 C2 B3 15 6779: EE 36 A1 73 76 57 13 73 A8 A3 A0 89 5B 4E 2E 00 ; 68 YOU ARE IN A LARGE LOW CIRCULAR CHAMBER WHOSE FLOOR IS AN ; 68 IMMENSE SLAB FALLEN FROM THE CEILING(SLAB ROOM). EAST AND ; 68 WEST THERE ONCE WERE LARGE PASSAGES, BUT THEY ARE NOW FILLED ; 68 WITH BOULDERS. LOW SMALL PASSAGES GO NORTH AND SOUTH, AND THE ; 68 SOUTH ONE QUICKLY BENDS WEST AROUND THE BOULDERS. ; ; 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 6789: 4C C7 DE 94 14 4B 5E 83 96 3B 16 B7 B1 49 16 C5 6799: CE 2D 7B 3B C5 85 AF 4F 72 74 4D FA 17 D7 A0 56 67A9: 15 44 A0 D5 15 90 14 3B 13 3B 13 CF 15 30 92 9B 67B9: B7 BB B8 88 4B 46 48 83 61 79 68 56 90 DB 72 AB 67C9: 53 90 8C 5B 70 23 15 F3 B9 8E 48 F7 17 F3 B9 5F 67D9: BE 5B B1 0D A0 59 5E F4 72 4E 5E 31 49 52 5E 65 67E9: 49 77 47 33 BB F6 4F 82 17 3B 63 2F 49 99 16 C8 67F9: CE 46 7A F3 5F 56 D1 15 71 8E 48 3B F4 3B 13 3B 6809: 13 89 8D 5F 17 46 48 DB 16 D3 B9 B5 6C 81 15 99 6819: 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 6825: 2D C7 DE 94 14 4B 5E 96 96 DB 72 F3 A6 66 62 CB 6835: 23 66 4D 01 B3 DB 95 82 17 59 5E 46 48 C3 B5 5B 6845: B1 48 55 2F 62 19 58 82 7B 3B 13 E7 14 BB B3 9D 6855: 7A 16 EE DB 72 89 67 A3 A0 56 D1 03 71 82 17 DD 6865: 78 E3 16 DB 8B 14 53 F6 A4 3B F4 C5 93 C5 B5 4F 6875: 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 6882: 39 63 BE CB B5 D6 B5 DB 72 1B 54 AF 91 91 AF 96 6892: 64 DB 72 89 73 12 71 07 B2 17 BA 3B 13 8D 48 30 68A2: 79 06 BC D9 B0 91 7A C5 B5 4F A1 C2 B3 59 5E 46 68B2: 48 5B BB 90 14 3A 15 EF BF 2E 92 56 DB 7A 79 16 68C2: BC 98 C5 33 61 E3 8B 0B 5C B5 D0 9B C1 D6 15 49 68D2: 16 A5 9F 43 16 A3 85 83 17 2E 6D 63 17 27 C4 7F 68E2: E3 43 13 06 9A F4 72 DB 16 D3 B9 9B 6C E3 8B 0B 68F2: 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 68F6: 23 C7 DE 94 14 4B 5E 96 96 DB 72 89 73 12 71 07 6906: B2 F5 B9 D6 B5 63 B1 34 BA 54 5E 3F A0 43 16 04 6916: BC 43 DB 87 96 33 62 49 5E 67 B1 83 99 2E 6D 3B 6926: F4 50 45 3C 49 6B A1 70 C0 6E 98 3A 15 8D 7B 89 6936: 17 82 17 47 5E 66 49 2E 00 ; 67 YOU ARE IN THE TWOPIT ROOM. THE FLOOR ; 67 HERE IS LITTERED WITH THIN ROCK SLABS, WHICH MAKE IT ; 67 EASY TO DESCEND THE PITS. THERE IS A PATH HERE BYPASSING ; 67 THE PITS TO CONNECT PASSAGES FROM EAST AND WEST.THERE ; 67 ARE HOLES ALL OVER, BUT THE ONLY BIG ONE IS ON THE WALL ; 67 DIRECTLY OVER THE EAST PIT WHERE YOU CAN'T GET TO IT. ; ; 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 693F: 70 C7 DE 94 14 43 5E 16 BC DB 72 95 5F 07 BC 33 694F: 98 C3 9E 5F BE 91 17 63 A0 14 BC 3F A0 3B F4 5F 695F: BE 56 15 44 A0 9F 15 5B B1 4B 7B 43 16 3F C0 66 696F: B1 FB 17 53 BE 63 BE 94 96 5D 9E 5E 17 BD 46 19 697F: EE 85 73 0F 71 17 48 D6 15 23 15 BB BA 6B BF F5 698F: 59 B0 53 16 58 F2 72 8D 7B 3B F4 5F BE 5B B1 4B 699F: 7B 52 45 82 49 9F 15 5B B1 92 50 65 49 91 7A 82 69AF: 17 52 5E 8D 7B 89 17 E1 14 CF 99 F3 55 3B 13 3B 69BF: 13 55 A4 09 B7 4B 62 95 5F 03 BC 33 98 B5 D0 9B 69CF: C1 82 17 2F 62 94 14 4A 5E BF 9F C3 B5 F3 8C 4F 69DF: A1 F3 B4 F6 4F 82 17 51 5E 93 99 B3 14 D1 6A 5B 69EF: 98 4B 7B 03 A0 5F BE F3 17 F3 8C 94 5A E6 5F FB 69FF: 8E 4F A1 96 AF DB 72 B5 D0 12 BC 73 7B 1F D1 5B 6A0F: B1 C7 DE 3B 13 45 13 85 48 09 BC 73 62 6B BF 97 6A1F: 7B 00 ; woods24 YOU ARE AT THE BOTTOM OF THE EASTERN PIT IN THE TWOPIT ROOM. THERE IS ; woods24 A SMALL POOL OF OIL IN ONE CORNER OF THE PIT. ; ; YOU_ARE_AT_THE_BOTTOM_OF_THE_EASTERN_PIT_IN_THE_TWOPIT_ROOM. PS_2B: ; RM_4F_BOTTOM_EASTERN_PIT 6A21: 14 C7 DE 94 14 43 5E 16 BC DB 72 06 4F 7F BF B8 6A31: 16 82 17 47 5E 66 49 38 62 E3 16 0B BC 96 96 DB 6A41: 72 C1 C0 96 A5 39 17 FF 9F 00 ; woods23 YOU ARE AT THE WEST END OF THE TWOPIT ROOM. THERE IS A LARGE HOLE IN ; woods23 THE WALL ABOVE THE PIT AT THIS END OF THE ROOM. ; ; 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 6A4B: 27 C7 DE 94 14 43 5E 16 BC DB 72 B5 D0 07 BC 33 6A5B: 98 C3 9E 5F BE 91 17 63 A0 14 BC 3F A0 3B F4 5F 6A6B: BE 5B B1 4B 7B 4E 45 31 49 3B 5E A9 15 DB 8B 83 6A7B: 7A 5F BE F3 17 F3 8C B9 46 5B CA 5F BE E3 16 03 6A8B: BC 16 BC 95 73 30 15 11 58 96 64 DB 72 01 B3 4D 6A9B: 2E 00 ; 25 YOU ARE AT THE BOTTOM OF THE WESTERN PIT IN THE TWOPIT ROOM. THERE IS ; 25 A LARGE HOLE IN THE WALL ABOUT 25 FEET ABOVE YOU. ; woods25 ; ; 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 6A9D: 29 C7 DE 94 14 43 5E 16 BC DB 72 06 4F 7F BF B8 6AAD: 16 82 17 59 5E 66 62 E3 16 0B BC 96 96 DB 72 C1 6ABD: C0 96 A5 39 17 FF 9F 56 13 F4 72 D5 60 7B 14 54 6ACD: 8B 9B 6C 7E 74 4B 5E 96 96 DB 72 0E D0 03 8A 07 6ADD: 4F 16 BC B0 D0 FB C0 18 67 48 5E 36 60 84 14 4F 6AED: 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 6AF3: 33 C7 DE 94 14 4B 5E 83 96 49 16 CE 98 8B 16 79 6B03: B3 C5 CE BC A0 09 79 95 AF EF BF 9A BD 91 7A C7 6B13: 16 11 BC 95 64 7A 79 16 BC BB 9C 82 17 59 5E 66 6B23: 62 3B F4 73 49 5F BE 23 15 FF B9 C3 B2 8E 61 D5 6B33: 15 7B 14 7E 74 56 5E F9 74 7A C4 FA 17 DA 78 51 6B43: 18 45 C2 83 48 55 13 1B 60 52 45 F8 B2 5B C6 03 6B53: 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 6B5C: 29 C7 DE 94 14 4B 5E 96 96 DB 72 1B 54 AF 91 91 6B6C: AF 91 64 54 B8 6F 7B 82 17 45 5E CE 60 91 7A D5 6B7C: 15 89 17 CA 9C 7A 79 B2 17 59 15 91 B4 23 C6 4F 6B8C: 8B 16 A3 D5 9C 89 74 D6 15 3B F4 55 A4 09 B7 4B 6B9C: 62 E3 8B 07 58 66 49 10 EE BE A0 73 76 8E 48 61 6BAC: 17 82 C6 2E 00 ; THE_PASSAGE_HERE_IS_BLOCKED_BY_A_FALLEN_BLOCK. PS_30: ; RM_46_BLOCKED_FALLEN_BLOCK 6BB1: 0F 5F BE DB 16 D3 B9 9B 6C F4 72 4B 5E C4 B5 75 6BC1: 8D A6 85 C3 14 7B 14 CE 65 F0 8B B6 14 5D 9E 2E 6BD1: 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 6BD2: 2C C7 DE 94 14 4B 5E 96 96 DB 72 1B 54 AF 91 91 6BE2: AF 90 64 1A 61 AF 5F 73 C1 59 45 E3 9F 99 96 82 6BF2: 7B 82 17 4A 5E 86 5F B8 16 7B 14 DF 17 4F 8E 7E 6C02: B1 F7 17 33 49 AB 98 5F BE E4 14 80 A1 B8 16 29 6C12: 15 EE DE 3B F4 52 45 65 49 77 47 3A 15 8D 7B 89 6C22: 17 82 17 3B 5E 55 13 36 A1 48 2E 00
Object descriptions (packed)
; THERE_IS_A_SHINY_BRASS_LAMP_NEARBY. PS_32: 6C2E: 0B 5F BE 5B B1 4B 7B 55 45 90 73 44 DB D5 B0 CE 6C3E: B5 72 48 8F 16 2C 49 59 2E 00 ; BRASS_LANTERN PS_33: 6C48: 04 6B 4F CB B9 50 8B F4 BD 4E 00 ; THERE_IS_A_LAMP_SHINING_NEARBY. PS_34: 6C53: 0A 5F BE 5B B1 4B 7B 4E 45 72 48 5A 17 93 7A AB 6C63: 98 63 98 03 B1 2E 00 ; BRASS_LANTERN PS_35: 6C6A: 04 6B 4F CB B9 50 8B F4 BD 4E 00 ; THERE_IS_A_SMALL_STATUE_BOX_DISCARDED_NEARBY. PS_36: 6C75: 0F 5F BE 5B B1 4B 7B 55 45 8E 91 15 8A 56 BD 1B 6C85: C4 0A 4F 03 15 53 B7 3F B1 10 58 94 5F 9F 50 00 ; STATUE_BOX PS_37: 6C95: 03 FB B9 67 C0 B9 14 58 00 ; A_THREE_FOOT_SCEPTER_WITH_AN_ANKH_ON_AN_END_LIES_NEARBY. PS_38: 6C9E: 12 56 45 EF 74 48 5E 46 A0 55 17 EE 61 23 62 56 6CAE: D1 03 71 83 96 5A 99 C0 16 90 14 30 15 0E 58 35 6CBE: 79 8F 16 2C 49 59 2E 00 ; SCEPTER PS_39: 6CC6: 02 57 B7 3F A7 52 00 ; A_STATUE_OF_THE_BIRD_GOD_IS_SITTING_HERE. PS_3A: 6CCD: 0D 55 45 56 BD 1B C4 C3 9E 5F BE B3 14 33 B1 36 6CDD: 6E D5 15 5B 17 43 C0 AB 98 F4 72 45 2E 00 ; THERE_IS_A_BIRD_STATUE_IN_THE_BOX. PS_3B: 6CEB: 0B 5F BE 5B B1 4B 7B 44 45 2E 7B 66 17 8F 49 4B 6CFB: 5E 96 96 DB 72 0A 4F 2E 00 ; BIRD_STATUE_IN_BOX PS_3C: 6D04: 06 14 4E 15 58 56 BD 1B C4 83 7A 0A 4F 00 ; A_SMALL_VELVET_PILLOW_LIES_ON_THE_FLOOR. PS_3D: 6D12: 0D 55 45 8E 91 18 8A 50 61 73 62 8E A5 89 8D 43 6D22: 16 4B 62 03 A0 5F BE 56 15 44 A0 2E 00 ; VELVET_PILLOW PS_3E: 6D2F: 04 6E CA 76 CA E3 16 09 8D 57 00 ; A_HUGE_GREEN_FIERCE_SERPENT_BARS_THE_WAY! PS_3F: 6D3A: 0D 4A 45 77 C4 84 15 30 60 53 15 2D 62 55 5E 3A 6D4A: 62 9E 61 AB 14 8B B3 5F BE F3 17 59 21 00 ; A_STONE_BRIDGE_NOW_SPANS_THE_BOTTOMLESS_PIT. PS_40: 6D58: 0E 55 45 80 BF 44 5E 06 B2 9B 6C 09 9A 62 17 9D 6D68: 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: 6D78: 13 5F BE 5B B1 4B 7B 55 45 2D 49 62 A0 87 47 CA 6D88: B5 2F 62 FB 17 53 BE 75 7B C5 B5 4F A1 96 AF 7A 6D98: 79 13 BF DE 14 D7 A0 44 2E 00 ; SARCOPHAGUS_>GROAN< PS_42: 6DA2: 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: 6DB1: 15 5F BE 5B B1 2F 49 7B 14 79 66 2F 17 B0 53 0B 6DC1: BC E7 B9 4B 62 C3 9E 69 1B EE DE 90 78 F7 17 1E 6DD1: 61 63 DB 89 91 73 4A 5B 98 F4 72 45 00 ; "EGYPTIAN_WEEKLY" PS_44: 6DDE: 05 69 1B EE DE 90 78 F7 17 1E 61 59 22 00 ; THERE_IS_FOOD_HERE. PS_45: 6DEC: 06 5F BE 5B B1 4B 7B 01 68 0A 58 2F 62 2E 00 ; TASTY_FOOD PS_46: 6DFB: 03 55 BD FB C0 01 68 44 00 ; THERE_IS_A_BOTTLE_HERE. PS_47: 6E04: 07 5F BE 5B B1 4B 7B 44 45 0E A1 DB 8B F4 72 45 6E14: 2E 00 ; SMALL_BOTTLE PS_48: 6E16: 04 E3 B8 F3 8C 06 4F FF BE 00 ; THERE_IS_WATER_IN_THE_BOTTLE. PS_49: 6E20: 09 5F BE 5B B1 4B 7B 16 D0 23 62 83 7A 5F BE B9 6E30: 14 46 C0 45 2E 00 ; WATER_IN_THE_BOTTLE PS_4A: 6E36: 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: 6E45: 15 5F BE 5B B1 4B 7B 56 45 A3 7A E6 16 9E 48 D0 6E55: 15 82 17 52 5E 96 7B 77 16 B7 B2 10 B2 BC 6A 16 6E65: 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: 6E71: 1F 5F BE 5B B1 4B 7B 56 45 AE D0 5B CA 01 68 04 6E81: BC 90 5F 66 17 45 48 66 17 76 B1 23 54 AB 98 D3 6E91: C5 36 A1 B8 16 82 17 52 5E 96 7B AF 14 09 8D 50 6EA1: 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: 6EB1: 17 5F BE 5B B1 4B 7B 49 45 73 79 C3 9A C4 51 90 6EC1: 5F 66 17 45 48 66 17 76 B1 23 54 AB 98 46 48 82 6ED1: 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: 6EE1: 26 5F BE 5B B1 4B 7B 4F 45 65 49 CF 7B CF 17 43 6EF1: 98 AB 98 85 91 90 73 4A 5E 2F 62 3B F4 5F BE D0 6F01: 15 0C BA E6 C3 C0 7A D1 B5 8B 96 EF BF 15 47 6E 6F11: 13 02 B3 E1 14 9D 7A 9F 15 5B B1 6B BF 65 B1 38 6F21: 79 48 5E 75 B1 04 71 8E 49 33 62 4C 62 2E 00 ; THERE_ARE_FRESH_BATTERIES_HERE. PS_4F: 6F30: 0A 5F BE 5B B1 2F 49 5C 15 5A 62 AB 14 3F C0 07 6F40: B2 CA B5 2F 62 2E 00 ; BATTERIES PS_50: 6F47: 03 D6 4C F4 BD 35 79 00 ; SOME_WORN-OUT_BATTERIES_HAVE_BEEN_DISCARDED_NEARBY. PS_51: 6F4F: 11 3F B9 59 5E B8 A0 47 EB 04 BC 8E 49 33 62 4B 6F5F: 62 58 72 44 5E 30 60 03 15 53 B7 3F B1 10 58 94 6F6F: 5F 9F 50 00 ; BATTERIES PS_52: 6F73: 03 D6 4C F4 BD 35 79 00 ; THERE_IS_A_LARGE_SPARKLING_NUGGET_OF_GOLD_HERE! PS_53: 6F7B: 0F 5F BE 5B B1 4B 7B 4E 45 31 49 55 5E 54 A4 C3 6F8B: 86 AB 98 E9 9A B6 6C B8 16 81 15 B3 8B F4 72 45 6F9B: 21 00 ; LARGE_GOLD_NUGGET PS_54: 6F9D: 05 54 8B 9B 6C 3E 6E 10 58 79 C4 45 54 00 ; THERE_ARE_DIAMONDS_HERE! PS_55: 6FAB: 08 5F BE 5B B1 2F 49 03 15 71 48 4D 98 9F 15 59 6FBB: B1 00 ; SEVERAL_DIAMONDS PS_56: 6FBD: 05 B8 B7 2B 62 06 8A 8F 78 0E A0 53 00 ; THERE_ARE_BARS_OF_SILVER_HERE! PS_57: 6FCA: 0A 5F BE 5B B1 2F 49 AB 14 8B B3 C3 9E 4E B8 74 6FDA: CA 9F 15 59 B1 00 ; SILVER_BARS PS_58: 6FE0: 03 4E B8 74 CA AB 14 52 53 00 ; THERE_IS_PRECIOUS_JEWELRY_HERE! PS_59: 6FEA: 0A 5F BE 5B B1 4B 7B EF A6 51 54 4B C6 79 7F 4C 6FFA: 61 4A DB 2F 62 21 00 ; PRECIOUS_JEWELRY PS_5A: 7001: 05 EF A6 51 54 4B C6 79 7F 4C 61 59 00 ; THERE_ARE_MANY_COINS_HERE! PS_5B: 700E: 08 5F BE 5B B1 2F 49 63 16 7B 9B 3B 55 8B 9A F4 701E: 72 45 21 00 ; RARE_COINS PS_5C: 7022: 03 D4 B0 45 5E 50 9F 53 00 ; THE_PHARAOH'S_TREASURE_CHEST_IS_HERE! PS_5D: 702B: 0C 5F BE E2 16 2B 49 15 9F D6 B5 63 B1 34 BA 45 703B: 5E F5 72 0B BC CA B5 2F 62 21 00 ; TREASURE_CHEST PS_5E: 7046: 04 EF BF 67 49 5B B1 1F 54 53 54 00 ; THERE_IS_A_LARGE_NEST_HERE,_FULL_OF_GOLDEN_EGGS! PS_5F: 7052: 10 5F BE 5B B1 4B 7B 4E 45 31 49 50 5E 66 62 9F 7062: 15 7E B1 5F 15 F3 8C C3 9E 3E 6E F0 59 29 15 C9 7072: 6E 00 ; GOLDEN_EGGS PS_60: 7074: 03 3E 6E F0 59 29 15 47 53 00 ; THERE_IS_A_JEWEL-ENCRUSTED_KEY_HERE! PS_61: 707E: 0C 5F BE 5B B1 4B 7B 4C 45 F7 62 57 8F 24 98 66 708E: C6 F3 5F BB 85 9F 15 59 B1 00 ; JEWELED_KEY PS_62: 7098: 03 79 7F 3F 61 0D 58 45 59 00 ; THERE_IS_A_DELICATE,_PRECIOUS,_VASE_HERE! PS_63: 70A2: 0D 5F BE 5B B1 4B 7B 46 45 43 61 16 53 B3 63 EF 70B2: A6 51 54 6E C6 CB 17 9B B7 F4 72 45 21 00 ; VASE PS_64: 70C0: 01 D5 C9 45 00 ; THE_VASE_IS_NOW_RESTING,_DELICATELY,_ON_A_VELVET_PILLOW. PS_65: 70C5: 12 5F BE CB 17 9B B7 4B 7B 09 9A 2F 17 03 BA CE 70D5: 98 FF 14 85 8C 7F 49 1E 8F C0 16 7B 14 6E CA 76 70E5: CA E3 16 09 8D 57 2E 00 ; THE_FLOOR_IS_LITTERED_WITH_WORTHLESS_SHARDS_OF_POTTERY. PS_66: 70ED: 12 5F BE 56 15 44 A0 D5 15 43 16 3F C0 66 B1 FB 70FD: 17 53 BE 44 D2 66 BE 65 62 5A 17 2E 49 D1 B5 92 710D: 64 0E A1 43 62 2E 00 ; THERE_IS_AN_EMERALD_HERE_THE_SIZE_OF_A_PLOVER'S_EGG! PS_67: 7114: 11 5F BE 5B B1 4B 7B 83 48 67 61 CE B0 0A 58 2F 7124: 62 82 17 55 5E 6F 7C B8 16 7B 14 09 A6 74 CA CB 7134: 23 79 60 21 00 ; EGG-SIZED_EMERALD PS_68: 7139: 05 79 60 DB EB 66 E3 2F 15 2B 62 4C 44 00 ; OFF_TO_ONE_SIDE_LIES_A_GLISTENING_PEARL! PS_69: 7147: 0D D0 9E 89 17 C0 16 55 5E FF 78 43 16 4B 62 49 7157: 45 95 8C F0 BD 91 7A DF 16 36 49 21 00 ; GLISTENING_PEARL PS_6A: 7164: 05 C3 6D FF B9 10 99 D2 6A 94 5F 4C 00
Miscalaneous messages (packed)
; 20 YOU ARE AT THE BOTTOM OF THE PIT WITH A BROKEN NECK. ; woods20 ; ; YOU_ARE_AT_THE_BOTTOM_OF_THE_PIT_WITH_A_BROKEN_NECK. PS_6B: 7171: 11 C7 DE 94 14 43 5E 16 BC DB 72 06 4F 7F BF B8 7181: 16 82 17 52 5E 73 7B 56 D1 03 71 BC 14 97 9F 90 7191: 96 DD 5F 2E 00 ; 16 THE CRACK IS FAR TOO SMALL FOR YOU TO FOLLOW. ; woods16 ; ; THE_CRACK_IS_FAR_TOO_SMALL_FOR_YOU_TO_FOLLOW. PS_6C: 7196: 0F 5F BE E4 14 DD 46 D5 15 4B 15 96 AF 2B A0 E3 71A6: B8 F3 8C 04 68 51 18 56 C2 C8 9C C6 9F 8F A1 00 ; 22 THE DOME IS UNCLIMBABLE ; woods22 ; ; THE_DOME_IS_UNCLIMBABLE. PS_6D: 71B6: 08 5F BE 09 15 1B 92 4B 7B 8D C5 8F 8C C4 4C FF 71C6: 8B 00 ; I_RESPECTFULLY_SUGGEST_YOU_GO_ACROSS_THE_BRIDGE_INSTEAD_OF______ ; JUMPING. PS_6E: 71C8: 18 54 77 62 62 E6 5F EE 68 FB 8E 29 BA B5 6C 1B 71D8: BC 1B A1 2B 6E E4 46 E5 A0 82 17 44 5E 06 B2 9B 71E8: 6C 9D 7A E3 BD 11 58 7B 64 3B 13 FF 15 E3 93 CF 71F8: 98 00 ; 21 YOU DIDN'T MAKE IT ; woods21 ; ; YOU_DIDN'T_MAKE_IT. PS_6F: 71FA: 06 C7 DE 03 15 45 5B 0F BC 17 48 D6 15 2E 00 ; 31 THERE IS NO WAY ACROSS THE FISSURE. ; ; THERE_IS_NO_WAY_ACROSS_THE_BOTTOMLESS_PIT. PS_70: 7209: 0E 5F BE 5B B1 4B 7B EB 99 1B D0 85 14 05 B3 D6 7219: B5 DB 72 06 4F 7F BF F5 8B D2 B5 97 7B 00 ; 32 YOU CAN'T GET BY THE SNAKE ; woods32 ; ; YOU_CAN'T_GET_BY_THE_SERPENT. PS_71: 7227: 09 C7 DE D3 14 E6 96 77 15 04 BC 56 DB DB 72 B4 7237: B7 F0 A4 54 2E 00 ; 40 YOU HAVE CRAWLED THROUGH A VERY LOW WIDE PASSAGE PARALLEL ; 40 TO AND NORTH OF THE HALL OF MISTS. ; woods40 and woods59 ; ; YOU_HAVE_CRAWLED_THROUGH_A_VERY_LOW_WIDE_PASSAGE_PARALLEL_TO_AND ; NORTH_OF_THE_HALL_OF_GODS. PS_72: 723D: 1E C7 DE 9B 15 5B CA AB 55 BF D1 16 58 F9 74 7A 724D: C4 7B 14 74 CA 4E DB 6B A1 46 D1 52 5E 65 49 77 725D: 47 DB 16 CE B0 EE 8B 89 17 90 14 59 5B C2 B3 B8 726D: 16 82 17 4A 5E 46 48 B8 16 81 15 2F 5C 00 ; no crowther ; woods95 YOU DON'T FIT THROUGH A TWO-INCH SLIT! ; ; YOU_DON'T_FIT_THROUGH_TWO-INCH_SLIT! PS_73: 727B: 0C C7 DE 09 15 E6 96 53 15 16 BC F9 74 7A C4 91 728B: 17 1B A2 1A 98 5E 17 71 7B 00 ; 56 YOU HAVE CRAWLED AROUND IN SOME LITTLE HOLES AND WOUND UP ; 56 BACK IN THE MAIN PASSAGE. ; woods56 ; ; YOU_HAVE_CRAWLED_AROUND_IN_SOME_LITTLE_HOLES_AND_WOUND_UP_BACK__ ; IN_THE_MAIN_PASSAGE. PS_74: 7295: 1C C7 DE 9B 15 5B CA AB 55 BF D1 03 58 07 B3 33 72A5: 98 83 7A 3F B9 4E 5E 8E 7B DB 8B 7E 74 4B 62 8E 72B5: 48 01 18 8E C5 B2 17 AB 14 8B 54 D0 15 82 17 4F 72C5: 5E D0 47 DB 16 D3 B9 BF 6C 00 ; no crowther ; woods126 YOU HAVE CRAWLED AROUND IN SOME LITTLE HOLES AND FOUND YOUR WAY ; woods126 BLOCKED BY A RECENT CAVE-IN. YOU ARE NOW BACK IN THE MAIN PASSAGE. ; ; 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: 72CF: 2A C7 DE 9B 15 5B CA AB 55 BF D1 03 58 07 B3 33 72DF: 98 83 7A 3F B9 4E 5E 8E 7B DB 8B 7E 74 4B 62 8E 72EF: 48 59 15 8E C5 51 18 23 C6 1B D0 B6 14 5D 9E F3 72FF: 5F 7B 50 48 45 46 48 83 61 BB B8 1B 51 51 18 43 730F: C2 5B B1 09 9A AB 14 8B 54 83 7A 5F BE 63 16 83 731F: 7A 55 A4 09 B7 45 2E 00 ; YOU_CAN'T_FIT_THIS_BIG_SARCOPHAGUS_THROUGH_THAT_LITTLE_PASSAGE! PS_76: 7327: 15 C7 DE D3 14 E6 96 53 15 16 BC 95 73 B3 14 D5 7337: 6A 2D 49 62 A0 87 47 D6 B5 F9 74 7A C4 82 17 73 7347: 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: 7353: 24 3F B9 82 62 91 7A 51 18 A4 C2 45 5E 3C 49 D0 7363: DD D9 6A 05 A0 08 BC 73 7B 6C BE 29 A1 16 71 DB 7373: 72 70 C0 6E 98 FB 17 53 BE C7 DE 51 F9 96 C2 AF 7383: 14 F3 B9 4D BD 4B 5E 0F 9B C9 9A 7B B4 8E 48 0C 7393: 15 53 A0 3F B9 82 62 91 7A 2E 00 ; woods26 YOU CLAMBER UP THE PLANT AND SCURRY THROUGH THE HOLE AT THE TOP. ; ; YOU_CLAMBER_UP_THE_PLANT_AND_SCURRY_THROUGH_THE_HOLE_AT_THE_TOP. PS_78: 739E: 15 C7 DE DE 14 64 48 23 62 D3 C5 5F BE E6 16 9E 73AE: 48 90 14 15 58 34 56 7B B4 6C BE 29 A1 16 71 DB 73BE: 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: 73CB: 0F C7 DE 4F 24 DE 14 64 7A F3 5F D3 C5 5F BE E6 73DB: 16 9E 48 90 14 11 58 73 C6 C3 9E 5F BE E3 16 54 73EB: 2E 00 ; 9 THERE IS NO WAY TO GO THAT DIRECTION. ; ; THERE_IS_NO_WAY_FOR_YOU_TO_GO_THAT_DIRECTION. PS_7A: 73ED: 0F 5F BE 5B B1 4B 7B EB 99 1B D0 59 15 9B AF 1B 73FD: A1 6B BF 2B 6E 5B BE 06 BC 2F 7B 03 56 27 A0 00 ; 11 I DON'T KNOW IN FROM OUT HERE. USE COMPASS POINTS OR NAME ; 11 SOMETHING IN THE GENERAL DIRECTION YOU WANT TO GO. ; ; I_DON'T_KNOW_IN_FROM_OUT_HERE.__USE_COMPASS_POINTS. PS_7B: 740D: 11 46 77 05 A0 0D BC 09 9A D0 15 5C 15 DB 9F 36 741D: A1 9F 15 7F B1 57 13 9B B7 3F 55 55 A4 D2 B5 50 742D: 9F 2F C0 00 ; 10 I AM UNSURE HOW YOU ARE FACING. USE COMPASS POINTS OR ; 10 NEARBY OBJECTS. ; ; I_AM_UNSURE_HOW_YOU_ARE_FACING.__USE_COMPASS_POINTS. PS_7C: 7431: 11 43 77 57 90 A7 9A 5B B1 89 74 51 18 43 C2 5B 7441: B1 C5 65 91 7A 3B F4 57 C6 E1 14 DB 93 CB B9 7B 7451: A6 CD 9A 2E 00 ; 42 NOTHING HAPPENS. ; ; NOTHING_HAPPENS. PS_7D: 7456: 05 06 9A 90 73 CA 6A EA 48 9D 61 2E 00 ; I_DON'T_KNOW_HOW. PS_7E: ; (only used for SWIM) 7463: 05 46 77 05 A0 0D BC 09 9A A9 15 57 2E 00 ; 12 I DON'T KNOW HOW TO APPLY THAT WORD HERE. ; ; I_DON'T_KNOW_HOW_TO_APPLY_THAT_WORD_HERE. PS_7F: 7471: 0D 46 77 05 A0 0D BC 09 9A A9 15 D6 CE C3 9C A6 7481: A6 56 DB 56 72 01 18 33 B1 F4 72 45 2E 00 ; 39 YOUR LAMP IS NOW ON. ; ; YOUR_LAMP_IS_NOW_ON. PS_80: 748F: 06 C7 DE 8E AF 72 48 D5 15 99 16 D1 CE 4E 2E 00 ; 38 YOU HAVE NO SOURCE OF LIGHT. ; ; YOU_HAVE_NO_SOURCE_OF_LIGHT. PS_81: 749F: 09 C7 DE 9B 15 5B CA EB 99 47 B9 17 B1 B8 16 43 74AF: 16 2E 6D 2E 00 ; 40 YOUR LAMP IS NOW OFF. ; ; YOUR_LAMP_IS_NOW_OFF. PS_82: 74B4: 07 C7 DE 8E AF 72 48 D5 15 99 16 D1 CE A7 66 00 ; 68 I'M AS CONFUSED AS YOU ARE. ; ; I'M_AS_CONFUSED_AS_YOU_ARE. PS_83: 74C4: 09 9F 77 95 14 E1 14 9F 98 A6 B7 95 14 51 18 43 74D4: C2 7F B1 00 ; 59 I CAN ONLY TELL YOU WHAT YOU SEE AS YOU MOVE ABOUT ; 59 AND MANIPULATE THINGS. I CANNOT TELL YOU WHERE REMOTE THINGS ; 59 ARE. ; ; 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: 74D8: 2A 45 77 83 48 16 A0 56 DB 46 61 51 18 59 C2 56 74E8: 72 51 18 55 C2 1B 60 4B 49 C7 DE 71 16 5B CA B9 74F8: 46 73 C6 8E 48 3B 13 3B 13 3B 13 63 16 12 99 3B 7508: C5 DB BD 63 BE C5 98 3B F4 45 77 83 48 06 9A 7F 7518: 17 F3 8C C7 DE FA 17 2F 62 2F 17 C6 93 56 5E 90 7528: 73 CB 6E 2F 49 2E 00 ; 54 OK ; ; OK_ PS_85: 752F: 01 8B 9F 00 ; SORRY,_BUT_I_NO_LONGER_SEEM_TO_REMEMBER_HOW_IT_WAS_YOU_GOT_HERE. PS_86: 7533: 15 44 B9 9E B4 BF 14 0B BC 99 16 49 16 B7 98 95 7543: AF 2F 60 89 17 2F 17 2F 92 74 4D A9 15 CB CE 19 7553: BC 4B 49 C7 DE 81 15 0A BC 2F 62 2E 00 ; 24 YOU ARE ALREADY CARRYING IT! ; ; YOU_ARE_ALREADY_CARRYING_IT. PS_87: 7560: 09 C7 DE 94 14 43 5E EF 8D 13 47 D3 14 83 B3 91 7570: 7A D6 15 2E 00 ; YOU_CAN'T_CARRY_ANYTHING_MORE.__YOU'LL_HAVE_TO_DROP_SOMETHING___ ; FIRST. PS_88: 7575: 17 C7 DE D3 14 E6 96 D3 14 83 B3 90 14 82 DF 91 7585: 7A 71 16 7F B1 5B 13 1D A1 F3 8C 58 72 56 5E C6 7595: 9C 02 B3 61 17 36 92 90 73 BB 6A 53 15 A6 B3 2E 75A5: 00 ; YOU'RE_NOT_CARRYING_ANYTHING. PS_89: 75A6: 09 C7 DE AF 23 99 16 05 BC 3C 49 D0 DD C3 6A 96 75B6: 9B 90 73 47 2E 00 ; YOU_ARE_CURRENTLY_HOLDING_THE_FOLLOWING: PS_8A: 75BC: 0D C7 DE 94 14 45 5E 3C C6 9E 61 FB 8E 7E 74 90 75CC: 5A D6 6A DB 72 FE 67 89 8D 91 7A 3A 00 ; DON'T_BE_RIDICULOUS! PS_8B: 75D9: 06 80 5B F3 23 5B 4D 06 B2 E7 78 87 8D 53 21 00 ; 77 YOUR BOTTLE IS EMPTY AND THE GROUND IS WET. ; YOUR_BOTTLE_IS_EMPTY_AND_THE_GROUND_IS_WET. PS_8C: 75E9: 0E C7 DE 84 AF 0E A1 DB 8B 4B 7B 72 61 FB C0 8E 75F9: 48 82 17 49 5E 07 B3 33 98 4B 7B B6 D0 2E 00 ; 78 YOU CAN'T POUR THAT. ; ; YOU_CAN'T_POUR_THAT. PS_8D: 7608: 06 C7 DE D3 14 E6 96 E9 16 23 C6 5B BE 54 2E 00 ; 75 RUBBING THE ELECTRIC LAMP IS NOT PARTICULARLY REWARDING. ; 75 ANYWAY, NOTHING EXCITING HAPPENS. ; ; RUBBING_THE_ELECTRIC_LAMP_IS_NOT_PARTICULARLY_REWARDING.________ ; ANYWAY,_NOTHING_EXCITING_HAPPENS. PS_8E: 7618: 20 E4 B3 10 4E D6 6A DB 72 3F 61 0C 56 CB 78 4F 7628: 8B 0B A3 D0 B5 F3 A0 54 A4 85 BE 3B C5 93 B2 2F 7638: 17 14 D0 90 5A 5B 70 3B 13 3B 13 90 14 F3 DF B3 7648: E0 06 9A 90 73 C7 6A 9B D6 90 BE CA 6A EA 48 9D 7658: 61 2E 00 ; 76 PECULIAR. NOTHING UNEXPECTED HAPPENS. ; ; PECULIAR.__NOTHING_UNEXPECTED_HAPPENS. PS_8F: 765B: 0C E5 A4 43 C5 47 49 50 13 02 A1 91 7A B0 17 2A 766B: 63 E6 5F F3 5F 52 72 F0 A4 53 2E 00 ; THERE_IS_NOTHING_HERE_WITH_WHICH_TO_FILL_THE_BOTTLE. PS_90: 7677: 11 5F BE 5B B1 4B 7B 06 9A 90 73 CA 6A 2F 62 FB 7687: 17 53 BE 23 D1 13 54 6B BF 0E 67 16 8A DB 72 06 7697: 4F FF BE 2E 00 ; THE_BOTTLE_IS_NOW_EMPTY. PS_91: 769C: 08 5F BE B9 14 46 C0 4B 5E D0 B5 6B A1 72 61 1F 76AC: C1 00 ; YOU_CAN'T_FILL_THAT. PS_92: 76AE: 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: 76BE: 20 49 45 95 8C F0 BD 91 7A DF 16 36 49 4B 15 0D 76CE: 8D C7 16 11 BC 96 64 DB 72 14 B7 42 55 49 72 4B 76DE: C6 8E 48 39 17 0D 8D 99 14 5F 4A 82 17 55 5E 2D 76EE: 49 62 A0 87 47 D5 B5 D2 97 D5 B5 76 75 89 14 D0 76FE: 47 2E 00 ; I'D_ADVISE_YOU_TO_PUT_DOWN_THE_SARCOPHAGUS_BEFORE_OPENING_IT!! PS_94: 7701: 14 96 77 86 14 15 CB 5B 5E 1B A1 6B BF 76 A7 09 7711: 15 03 D2 5F BE 53 17 21 B1 5B A5 35 6F AF 14 04 7721: 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: 772D: 1E 5F BE 53 17 21 B1 5B A5 35 6F E4 14 8D 5F D1 773D: B5 F0 A4 14 EE CF 62 43 48 AB 98 06 9A 90 73 CB 774D: 6A 9B 9A FF 59 4B 13 FB BB 3B 13 EC 16 F2 9F 13 775D: 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: 776B: 14 C7 DE 09 15 E6 96 9B 15 5B CA A3 48 63 BE AB 777B: 98 0C BA 11 A0 30 15 29 A1 16 71 D1 9C F0 A4 82 778B: 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: 7797: 10 46 77 05 A0 0D BC 09 9A A9 15 D6 CE CE 9C 5D 77A7: 9E C4 16 B0 17 75 8D D5 83 DA C3 7B 14 63 BE CF 77B7: 98 00 ; THE_BIRD_STATUE_IS_NOW_DEAD.__ITS_BODY_DISAPPEARS. PS_98: 77B9: 10 5F BE B3 14 33 B1 FB B9 67 C0 D5 15 99 16 C6 77C9: CE 86 5F 3B F4 8D 7B B9 14 FB 5C 95 5A EA 48 94 77D9: 5F 53 2E 00 ; THE_STONE_IS_VERY_STRONG_AND_IS_IMPERVIOUS_TO_ATTACK. PS_99: 77DD: 11 5F BE 66 17 0F A0 D5 15 CF 17 7B B4 0C BA 11 77ED: A0 90 14 0B 58 CB B5 DF 93 13 B4 35 A1 89 17 96 77FD: 14 45 BD 4B 2E 00 ; ATTACKING_THE_SERPENT_BOTH_DOESN'T_WORK_AND_IS_VERY_DANGEROUS. PS_9A: 7803: 14 8E 49 DD 46 91 7A 82 17 55 5E 3A 62 9E 61 B9 7813: 14 53 BE 77 5B 05 B9 19 BC B5 A0 90 14 0B 58 D8 7823: B5 43 62 FB 14 B7 98 07 B3 53 2E 00 ; 25 YOU CAN'T BE SERIOUS! ; ; YOU_CAN'T_BE_SERIOUS! PS_9B: 782F: 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: 783F: 0B 73 7B 4B 7B 7B 4D 0E A0 51 18 23 C6 89 A6 23 784F: 62 6B BF 6B 5B 5B BE 54 2E 00 ; THANK_YOU,_IT_WAS_DELICIOUS! PS_9D: 7859: 09 5B BE 4B 99 C7 DE 0B EE 19 BC 4B 49 EE 59 DB 7869: 78 35 A1 21 00 ; I_THINK_I_JUST_LOST_MY_APPETITE. PS_9E: 786E: 0A 56 77 90 73 CB 83 FF 15 F3 B9 85 8D 0F BC 43 787E: 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: 7886: 2C C7 DE 9B 15 5B CA 4D BD 83 61 46 45 10 B2 C8 7896: 83 FF B2 82 17 55 5E EF BF 7F 48 56 13 DB 72 16 78A6: D0 23 62 55 BD F5 BD 3B 13 3B 13 66 17 00 B3 D3 78B6: 6D B8 16 6B 16 74 98 4D 48 04 EE 73 C6 4B 7B 06 78C6: 9A B0 17 FF A5 53 49 D7 9A 4B 13 0B BC C7 B5 4C 78D6: D9 67 61 FB 8E 45 13 BE 9F 2E 00 ; IT'S_NOT_HUNGRY.__BESIDES,_YOU_HAVE_NO_BIRD_SEED. PS_A0: 78E1: 10 75 7B D0 B5 F3 A0 70 75 C3 6E 3B F4 75 4D FF 78F1: 78 33 BB C7 DE 9B 15 5B CA EB 99 14 4E 15 58 26 7901: 60 2E 00 ; 23 YOU FELL INTO A PIT AND BROKE EVERY BONE IN YOUR BODY! ; ; YOU_FELL_INTO_A_PIT_AND_BROKE_EVERY_BONE_IN_YOUR_BODY. PS_A1: 7904: 12 C7 DE 4F 15 F3 8C 9E 7A C3 9C E3 16 03 BC 33 7914: 98 79 4F 9B 85 CF 62 7B B4 00 4F 4B 5E 9B 96 34 7924: A1 B9 14 1F 5D 20 00 ; 45 THE LITTLE BIRD IS NOW DEAD. ITS BODY DISAPPEARS. ; ; THE_SERPENT_HAS_NOW_DEVOURED_YOUR_BIRD_STATUE. PS_A2: 792B: 0F 5F BE 57 17 1F B3 B3 9A 55 72 99 16 C6 CE D9 793B: 62 2F C6 1B 58 34 A1 B3 14 33 B1 FB B9 67 C0 2E 794B: 00 ; THERE_IS_NOTHING_HERE_IT_WANTS_TO_EAT_-_EXCEPT_PERHAPS_YOU. PS_A3: 794C: 13 5F BE 5B B1 4B 7B 06 9A 90 73 CA 6A 2F 62 D6 795C: 15 F3 17 CD 9A 89 17 23 15 1D BC 3A 15 B2 53 12 796C: BC 32 62 ED 48 51 18 55 2E 00 ; 16 IT IS NOW PITCH BLACK. IF YOU PROCEED YOU WILL LIKELY ; 16 FALL INTO A PIT. ; ; IT_IS_NOW_PITCH_DARK.__IF_YOU_PROCEED,_YOU_WILL_LIKELY_FALL_INTO ; A_PIT. PS_A4: 7976: 17 73 7B 4B 7B 09 9A E3 16 9A BD FB 14 6F B2 4B 7986: 13 9B 64 1B A1 F9 A6 A7 53 73 5D C7 DE FB 17 F3 7996: 8C 8D 8C 53 61 4B 15 F3 8C 9E 7A FB 9D 96 A5 2E 79A6: 00 ; I'M_GAME.__WOULD_YOU_CARE_TO_EXPLAIN_HOW? PS_A5: 79A7: 0D 9F 77 73 15 3F 92 59 13 2E A1 1B 58 1B A1 14 79B7: 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: 79C5: 41 C7 DE 8E AF 72 48 D5 15 77 15 43 C0 AB 98 8F 79D5: 5A 3B F4 C7 DE 73 21 75 4D 15 BC 54 BD 19 BC D2 79E5: B0 90 A5 D6 6A 95 73 B2 17 FB ED B0 17 F5 8B DB 79F5: B5 1B A1 10 53 53 15 33 98 3F B9 48 5E 75 B1 04 7A05: 71 8E 49 33 62 6F 62 4B 13 57 17 5B 61 6B BF 65 7A15: B1 46 48 3B 13 56 13 F4 72 4B 5E C3 B5 CF 17 43 7A25: 98 AB 98 85 91 90 73 4B 5E 96 96 DB 72 9C 91 DB 7A35: 63 BC 14 91 7A 61 17 1B 92 3B 55 8B 9A 56 D1 FB 7A45: 70 C7 DE 2E 00 ; YOUR_LAMP_HAS_RUN_OUT_OF_POWER. PS_A7: 7A4A: 0A C7 DE 8E AF 72 48 9B 15 D4 B5 83 C5 36 A1 B8 7A5A: 16 E9 16 B4 D0 2E 00 ; THE_PLANT_HAS_EXCEPTIONALLY_DEEP_ROOTS_AND_CANNOT_BE_PULLED_____ ; FREE. PS_A8: 7A61: 17 5F BE E6 16 9E 48 9B 15 C7 B5 97 D6 43 A7 0B 7A71: A0 13 8D FF 14 D3 61 01 B3 0B C0 8E 48 D3 14 D9 7A81: 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: 7A91: 1A C7 DE 8E AF 72 48 D5 15 77 15 43 C0 AB 98 8F 7AA1: 5A 3B F4 9F 77 7B 17 50 86 D6 6A DB 72 84 8C 3E 7AB1: 62 51 DB 94 64 E6 61 DB 46 AB 98 82 17 44 5E 8E 7AC1: 49 33 62 6F 62 00 ; 26 THE BIRD WAS UNAFRAID WHEN YOU ENTERED, BUT AS YOU APPROACH ; 26 IT BECOMES DISTURBED AND YOU CANNOT CATCH IT. ; ; AS_YOU_APPROACH_THE_STATUE,_IT_COMES_TO_LIFE_AND_FLIES_ACROSS___ ; THE_CHAMBER_WHERE_IT_LANDS_AND_RETURNS_TO_STONE. PS_AA: 7AC7: 25 4B 49 C7 DE 92 14 F9 A6 DA 46 82 17 55 5E 56 7AD7: BD 3E C4 D6 15 E1 14 35 92 89 17 43 16 5B 66 8E 7AE7: 48 56 15 35 79 85 14 05 B3 BB B5 82 17 45 5E 4F 7AF7: 72 74 4D FA 17 2F 62 D6 15 3B 16 4D 98 90 14 14 7B07: 58 8F 62 DD B2 89 17 66 17 0F A0 2E 00 ; woods27 YOU CAN CATCH THE BIRD, BUT YOU CANNOT CARRY IT. ; ; YOU_CAN_LIFT_THE_STATUE,_BUT_YOU_CANNOT_CARRY_IT. PS_AB: 7B14: 10 C7 DE D3 14 8E 96 5E 79 82 17 55 5E 56 BD 3E 7B24: C4 BF 14 1B BC 1B A1 10 53 06 9A D3 14 83 B3 D6 7B34: 15 2E 00 ; YOUR_BOTTLE_IS_ALREADY_FULL. PS_AC: 7B37: 09 C7 DE 84 AF 0E A1 DB 8B 4B 7B 4C 48 86 5F 48 7B47: 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: 7B4C: 48 3B 13 55 13 FE C3 96 61 B3 E0 4F 45 6F C5 45 7B5C: DB 67 B1 0B A7 D3 C5 6A 4D 8E 7A 51 18 E9 C1 3B 7B6C: 13 3B 13 FD 1B 56 90 DB 72 3B 13 17 16 DF 61 91 7B7C: AF 96 64 DB 72 7F BF C6 4B 4A 13 59 5E CE 47 33 7B8C: BB FB 1B 4D BD 56 5E F5 72 56 5E 63 B1 34 BA 4B 7B9C: 62 8E 48 EF 16 16 BC EF 72 D0 15 82 17 45 5E F5 7BAC: 72 06 BC 32 60 D0 15 82 17 4F 5E 6F 4A E3 06 9F 7BBC: 15 84 15 BD 46 51 18 23 C6 EF BF 67 49 5B B1 8E 7BCC: 48 D0 C9 5A 7B 4B 62 9E 7A D6 9C DB 72 C9 6D FF 7BDC: 9F 00 ; THE_STONE_BRIDGE_HAS_RETRACTED! PS_AE: 7BDE: 0A 5F BE 66 17 0F A0 BC 14 01 79 4A 5E 4B 49 76 7BEE: B1 C5 B0 E6 BD 21 00 ; 112 A CRYSTAL BRIDGE NOW SPANS THE FISSURE. ; ; A_STONE_BRIDGE_NOW_SPANS_THE_BOTTOMLESS_PIT. PS_AF: 7BF5: 0E 55 45 80 BF 44 5E 06 B2 9B 6C 09 9A 62 17 9D 7C05: 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: 7C15: 12 5F BE CB 17 9B B7 4B 7B 09 9A 2F 17 03 BA CE 7C25: 98 FF 14 85 8C 7F 49 1E 8F C0 16 7B 14 6E CA 76 7C35: CA E3 16 09 8D 57 2E 00 ; THE_VASE_DROPS_WITH_A_DELICATE_CRASH. PS_B1: 7C3D: 0C 5F BE CB 17 9B B7 F9 5B 0B A7 56 D1 03 71 FF 7C4D: 14 85 8C 7F 49 E4 14 5A 49 2E 00 ; THERE_ARE_NOW_SOME_FRESH_BATTERIES_HERE. PS_B2: 7C58: 0D 5F BE 5B B1 2F 49 99 16 D5 CE E7 9F 5C 15 5A 7C68: 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: 7C75: 15 C7 DE 9B 15 5B CA 4D BD 83 61 5F BE CB 17 9B 7C85: B7 8E 48 AF 15 7F B2 0B 58 06 BC 43 61 16 53 53 7C95: 61 89 17 82 17 49 5E 07 B3 57 98 00 ; 30 THE LITTLE BIRD ATTACKS THE GREEN SNAKE, AND IN AN ; 30 ASTOUNDING FLURRY DRIVES THE SNAKE AWAY. ; ; 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: 7CA1: 2F 5F BE B3 14 33 B1 FB B9 67 C0 E1 14 35 92 89 7CB1: 17 43 16 5B 66 8E 48 96 14 45 BD CB 87 5F BE 57 7CC1: 17 1F B3 B3 9A 8E 48 D0 15 90 14 95 14 87 BF 43 7CD1: 98 AB 98 8F 67 83 B3 06 EE 18 B2 4B 62 5F BE 57 7CE1: 17 1F B3 B3 9A F3 49 DB E0 82 17 44 5E 2E 7B 8F 7CF1: 17 DD B2 AB 14 9B 54 C9 9A 7B 14 FB B9 67 C0 2E 7D01: 00 ; THE_PLANT_SPURTS_INTO_FURIOUS_GROWTH_FOR_A_FEW_SECONDS. PS_B5: 7D02: 12 5F BE E6 16 9E 48 62 17 3E C6 CB B5 C9 9A 5F 7D12: 15 11 B2 4B C6 B9 6E 02 D3 59 15 83 AF 4F 15 D5 7D22: CE E1 5F 4D 98 2E 00 ; THE_PLANT_GROWS_EXPLOSIVELY,_ALMOST_FILLING_THE_BOTTOM_OF_THE___ ; PIT. PS_B6: 7D29: 16 5F BE E6 16 9E 48 84 15 85 A1 3A 15 09 A6 58 7D39: B8 53 61 03 EE 31 8D F3 B9 0E 67 90 8C D6 6A DB 7D49: 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: 7D59: 11 C7 DE 4F 24 C8 16 45 62 16 D0 2F 62 16 58 DB 7D69: 72 FB A5 B1 9A 4B 13 65 BC 5A 17 18 B2 43 61 AB 7D79: 98 D1 C5 00 ; THERE_IS_NOTHING_HERE_TO_CLIMB.__USE_UP_OR_OUT_TO_LEAVE_THE_PIT. PS_B8: 7D7D: 15 5F BE 5B B1 4B 7B 06 9A 90 73 CA 6A 2F 62 89 7D8D: 17 DE 14 64 7A 3B F4 57 C6 B2 17 C4 16 C7 16 16 7D9D: 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: 7DAA: 38 13 9F E3 59 F3 B4 C7 DE 57 17 5B 61 6B BF 58 7DBA: 72 49 5E 0E A1 83 61 C7 DE 97 B3 03 8C 4E 86 E6 7DCA: 8B 3B F4 4F 77 7A 79 04 BC 3B 5E 84 14 DB 8B 6B 7DDA: BF EE 72 1B A3 1B A1 36 A1 04 EE 73 C6 A8 77 50 7DEA: 5E CF 62 94 AF 8E 5F FB 8E 80 5B 56 5E 95 73 AF 7DFA: 14 04 68 DB 63 46 13 DB 9C 1B A1 10 D0 0F BC 56 7E0A: 5E D6 9C 7B B4 6B BF 6B B1 13 98 CB B2 DB BD C7 7E1A: 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: 7E1D: 2C C7 DE DE 14 75 C5 51 DB 66 47 51 18 A8 C2 46 7E2D: 5E 0F A0 D6 15 89 14 D0 47 BB 06 46 77 05 A0 0D 7E3D: BC 09 9A A9 15 CE CE 11 A0 BB 15 D3 14 8D 96 32 7E4D: 60 82 17 4B 7B F7 C5 46 13 DB 9C 1B A1 10 D0 0F 7E5D: BC 56 5E D6 9C 7B B4 6B B1 13 98 CB B2 90 BE DB 7E6D: 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: 7E79: 1C 55 77 2F 60 89 17 AF 14 C7 16 11 BC 91 64 D0 7E89: B0 9B 6C F1 B8 BF 85 4A 13 6B A1 10 53 BB 15 6B 7E99: B1 13 98 CB B2 DB BD C7 DE 3B 13 FB 17 69 BE 73 7EA9: 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: 7EB4: 4B 46 48 33 17 2E 6D 3B F4 F6 4F 09 15 E6 96 B6 7EC4: 14 67 48 67 16 C8 15 61 17 36 92 90 73 C9 6A B5 7ED4: 9E 04 18 FF F9 FF F9 FF F9 FF F9 3B F4 3B 13 3B 7EE4: 13 3B 13 3B 13 3B 13 3B 13 5D 13 2D ED 52 13 38 7EF4: A0 E9 12 5D 13 2D ED 3B 13 3B 13 3B 13 3B 13 3B 7F04: 13 3B 13 3B 13 5B 13 1B A1 2F 49 30 15 2E 6F 66 7F14: 66 D0 15 7B 14 C9 54 F3 C3 C3 9E AB A0 B7 98 5F 7F24: 17 97 9F 3B F4 47 55 23 6D AB 98 8E 48 3B 13 3B 7F34: 13 15 6C 90 A5 33 70 C7 DE 2F 15 31 62 48 5E FF 7F44: 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: 7F4E: 27 93 9F B3 E0 09 9A FA 17 2F 62 03 15 0B 58 EF 7F5E: 16 0F BC 51 DB D0 B0 9B 6C F1 B8 98 85 FF F9 F2 7F6E: 13 38 A0 33 07 3B 13 3B 13 3B 13 38 15 43 62 63 7F7E: BE AB 98 95 5A EA 48 94 5F CB B5 83 96 FF 14 97 7F8E: 9A DE 14 26 A1 B8 16 C4 16 91 48 55 5E BD 93 45 7F9E: 2E 00 ; READY_CASSETTE PS_BE: 7FA0: 04 63 B1 FB 5C 15 53 B6 B7 54 45 00 ; CHECKSUM_ERROR PS_BF: 7FAC: 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: 7FB8: 18 36 9F 99 16 BB 06 4E 77 E6 A0 7B 16 E1 14 DB 7FC8: 93 EF B9 4B 13 99 16 49 16 B7 98 95 AF 2F 60 89 7FD8: 17 20 16 6B A1 23 D1 13 54 1B D0 D5 15 99 16 C2 7FE8: B3 21 00
Some bytes on the end of the tape:
39 00 39 00 39 00 39 00 39 00 39 00 39 00 39 00 39 00 39 00 47 78 00 43 FF FF