Sword of Hrakel has 36 locations. This is not immediately obvious when casually glancing over the contents of the game file with a hex viewer. But after staring at the hexidecimal for a view minutes, patterns start to emerge and the structure of the location description text becomes apparent.
0008DF 0D 01 01 01 05 01 07 43 41 56 45 2E 00 17 01 01 .......CAVE.....
0008EF 01 05 4D 41 4A 45 53 54 49 43 20 43 48 41 4D 42 ..MAJESTIC CHAMB
0008FF 45 52 2E 00 19 01 03 42 4F 54 54 4F 4D 20 4F 46 ER.....BOTTOM OF
00090F 20 41 20 44 45 45 50 20 50 49 54 2E 00 46 01 01 A DEEP PIT..F..
00091F 53 54 55 46 46 59 20 52 4F 4F 4D 2C 20 41 48 45 STUFFY ROOM, AHE
00092F 41 44 20 49 53 20 41 20 44 45 45 50 2C 20 44 41 AD IS A DEEP, DA
00093F 52 4B 20 50 49 54 2C 20 42 45 59 4F 4E 44 20 49 RK PIT, BEYOND I
00094F 53 20 41 20 44 41 52 4B 45 4E 45 44 20 52 4F 4F S A DARKENED ROO
00095F 4D 2E 00 31 01 08 4F 4E 20 41 20 4C 4F 4E 47 20 M..1..ON A LONG
00096F 53 54 41 49 52 43 41 53 45 2C 20 41 54 20 54 48 STAIRCASE, AT TH
00097F 45 20 42 4F 54 54 4F 4D 20 49 53 20 41 20 44 4F E BOTTOM IS A DO
00098F 4F 52 2E 00 24 01 04 47 52 4F 55 4E 44 20 46 4C OR..$..GROUND FL
00099F 4F 4F 52 20 01 09 2C 20 53 54 41 49 52 53 20 4C OOR .., STAIRS L
0009AF 45 41 44 20 55 50 2E 00 0C 01 04 52 4F 4F 46 20 EAD UP.....ROOF
0009BF 01 09 2E 00 18 01 0A 01 11 41 20 53 4D 41 4C 4C .........A SMALL
0009CF 20 44 4F 4F 52 20 48 45 52 45 2E 00 04 01 0A 00 DOOR HERE......
0009DF 04 01 0A 00 04 01 0A 00 1F 01 08 41 54 20 54 48 ...........AT TH
0009EF 45 20 54 4F 50 20 4F 46 20 54 48 45 20 4F 41 4B E TOP OF THE OAK
0009FF 20 54 52 45 45 2E 00 30 01 01 53 4D 41 4C 4C 20 TREE..0..SMALL
000A0F 44 49 4E 47 59 20 48 55 54 2C 20 41 20 53 54 4F DINGY HUT, A STO
000A1F 56 45 20 49 53 20 42 59 20 54 48 45 20 46 41 52 VE IS BY THE FAR
000A2F 20 57 41 4C 4C 2E 00 1A 01 0A 01 11 41 20 48 55 WALL.......A HU
000A3F 54 20 49 4E 20 41 20 43 4C 45 41 52 49 4E 47 2E T IN A CLEARING.
000A4F 00 2D 01 0A 01 11 41 20 50 41 54 48 20 4F 55 54 .-....A PATH OUT
000A5F 20 4F 46 20 48 45 52 45 20 41 4E 44 20 41 20 53 OF HERE AND A S
000A6F 49 43 4B 20 4F 41 4B 20 54 52 45 45 2E 00 19 01 ICK OAK TREE....
000A7F 08 4F 4E 20 41 20 48 49 47 48 20 47 52 45 45 4E .ON A HIGH GREEN
000A8F 20 48 49 4C 4C 2E 00 04 01 0B 00 45 01 08 01 06 HILL......E....
000A9F 49 4E 20 54 48 45 20 56 49 4C 4C 41 47 45 20 53 IN THE VILLAGE S
000AAF 51 55 41 52 45 2E C9 20 53 45 45 20 54 48 45 20 QUARE.. SEE THE
000ABF 54 4F 57 4E 20 48 41 4C 4C 20 57 49 54 48 20 4C TOWN HALL WITH L
000ACF 41 52 47 45 20 4F 41 4B 20 44 4F 4F 52 53 2E 00 ARGE OAK DOORS..
000ADF 13 01 01 01 05 54 4F 57 4E 20 43 48 41 4D 42 45 .....TOWN CHAMBE
000AEF 52 2E 00 31 01 01 44 55 53 54 59 20 53 54 4F 52 R..1..DUSTY STOR
000AFF 45 52 4F 4F 4D 20 54 48 41 54 20 48 41 53 20 42 EROOM THAT HAS B
000B0F 45 45 4E 20 4C 4F 4E 47 20 46 4F 52 47 4F 54 54 EEN LONG FORGOTT
000B1F 45 4E 2E 00 32 01 03 53 4D 49 54 48 59 27 53 20 EN..2..SMITHY'S
000B2F 57 4F 52 4B 20 50 4C 41 43 45 2C 20 54 48 45 20 WORK PLACE, THE
000B3F 46 55 52 4E 41 43 45 20 49 53 20 4C 4F 4E 47 20 FURNACE IS LONG
000B4F 43 4F 4C 44 2E 00 04 01 0B 00 17 01 02 53 4D 41 COLD.........SMA
000B5F 4C 4C 20 56 49 4C 4C 41 47 45 20 50 4F 4E 44 2E LL VILLAGE POND.
000B6F 00 2A 01 08 01 06 42 59 20 54 48 45 20 43 4F 55 .*....BY THE COU
000B7F 4E 54 45 52 20 49 4E 20 54 48 45 20 56 49 4C 4C NTER IN THE VILL
000B8F 41 47 45 20 53 54 4F 52 45 2E 00 28 D3 4F 4D 45 AGE STORE..(.OME
000B9F 48 4F 57 20 C9 27 56 45 20 45 4E 54 45 52 45 44 HOW .'VE ENTERED
000BAF 20 54 48 45 20 56 49 4C 4C 41 47 45 20 4A 41 49 THE VILLAGE JAI
000BBF 4C 2E 00 04 01 0C 00 04 01 0C 00 04 01 0C 00 4B L..............K
000BCF 01 03 43 52 4F 53 53 52 4F 41 44 53 2E 20 01 11 ..CROSSROADS. ..
000BDF 41 20 48 55 54 20 54 4F 20 54 48 45 20 45 41 53 A HUT TO THE EAS
000BEF 54 20 41 4E 44 20 01 0F 41 20 53 48 45 44 20 41 T AND ..A SHED A
000BFF 53 20 57 45 4C 4C 20 57 49 54 48 20 41 20 52 55 S WELL WITH A RU
000C0F 53 54 59 20 4C 4F 43 4B 2E 00 1D 01 01 50 4F 4F STY LOCK.....POO
000C1F 52 4C 59 20 42 55 49 4C 54 20 57 4F 4F 44 45 4E RLY BUILT WOODEN
000C2F 20 53 48 45 44 2E 00 2C 01 01 54 49 44 59 20 48 SHED..,..TIDY H
000C3F 55 54 2E 20 C5 56 45 52 59 54 48 49 4E 47 20 49 UT. .VERYTHING I
000C3F 55 54 2E 20 C5 56 45 52 59 54 48 49 4E 47 20 49 UT. .VERYTHING I
000C4F 53 20 50 45 52 46 45 43 54 4C 59 20 43 4C 45 41 S PERFECTLY CLEA
000C5F 4E 2E 00 04 01 0C 00 2B 01 08 01 06 4F 4E 20 54 N......+....ON T
000C6F 48 45 20 C7 4F 4C 44 45 4E 20 C2 45 41 43 48 20 HE .OLDEN .EACH
000C7F 41 54 20 54 48 45 20 45 44 47 45 20 4F 46 01 0D AT THE EDGE OF..
000C8F 2E 00 18 01 08 4F 4E 01 0D 2C 20 49 54 20 49 53 .....ON.., IT IS
000C9F 20 56 45 52 59 20 01 05 2E 00 19 01 08 4F 4E 20 VERY .......ON
000CAF 54 48 45 20 46 41 52 20 53 49 44 45 20 4F 46 01 THE FAR SIDE OF.
000CBF 0D 2E 00 18 01 08 01 06 49 4E 20 41 20 CD 41 47 ........IN A .AG
000CCF 49 43 20 C3 49 52 43 4C 45 21 00 IC .IRCLE!.
The first location is the CAVE, beginning at offset $08DF. The word CAVE jumps out at us as a string. But that isn't the full description of this location. Instead a type of compression is used whereby common strings are referred to by a code. So in the case of the cave, we have the following:
0D This is the length of the data describing this location, i.e. 13 bytes
01 01 The 01 tells us the next byte is a reference to a common string
01 05 Likewise this is a reference to common string 05
01 07 And this is a reference to common string 07
43 41 56 45 2E Finally we get to the actual non-common text, being "CAVE." in this case
00 The 00 byte is the end of this location's description data
In order to work out the full description text for this location, we need to understand how and where the common strings are stored. These start at offset $0CDA, which is immediately after the description data for location 36 (the magic circle).
000CDA 0B C9 27 4D 20 49 4E 20 41 20 00 0B C9 27 4D 20 ..'M IN A ...'M
000CEA 42 59 20 41 20 00 0D C9 27 4D 20 41 54 20 54 48 BY A ...'M AT TH
000CFA 45 20 00 0D C9 27 4D 20 4F 4E 20 54 48 45 20 00 E ...'M ON THE .
000D0A 08 4C 41 52 47 45 20 00 0B 53 54 41 4E 44 49 4E .LARGE ..STANDIN
000D1A 47 20 00 09 44 49 53 4D 41 4C 20 00 06 C9 27 4D G ..DISMAL ...'M
000D2A 20 00 0E 4F 46 20 54 48 45 20 54 4F 57 45 52 00 ..OF THE TOWER.
000D3A 2B C9 27 4D 20 49 4E 20 41 20 44 45 45 50 20 47 +.'M IN A DEEP G
000D4A 4C 4F 4F 4D 59 20 46 4F 52 45 53 54 20 2E 2E 4D LOOMY FOREST ..M
000D5A 41 4E 59 20 54 52 45 45 53 2E 00 20 C9 27 4D 20 ANY TREES.. .'M
000D6A 49 4E 20 41 20 51 55 49 45 54 20 56 49 4C 4C 41 IN A QUIET VILLA
000D7A 47 45 20 53 54 52 45 45 54 2E 00 1E C9 27 4D 20 GE STREET....'M
000D8A 4F 4E 20 41 20 4D 45 41 4E 44 45 52 49 4E 47 20 ON A MEANDERING
000D9A 50 41 54 48 57 41 59 2E 00 0B 20 54 48 45 20 4C PATHWAY... THE L
000DAA 41 4B 45 00 07 20 48 45 52 45 00 0C C9 20 43 41 AKE.. HERE... CA
000DBA 4E 20 53 45 45 20 00 0C C8 45 52 45 20 4C 49 45 N SEE ...ERE LIE
000DCA 53 20 00 0B D4 48 45 52 45 20 49 53 20 00 07 45 S ...HERE IS ..E
000DDA 41 52 42 59 00 06 57 4F 4C 46 00 06 D4 48 45 20 ARBY..WOLF...HE
000DEA 00 0B 47 41 52 47 4F 59 4C 45 53 00 0D C9 27 56 ..GARGOYLES...'V
000DFA 45 20 46 4F 55 4E 44 20 00 0E D4 48 45 20 44 4F E FOUND ...HE DO
000E0A 4F 52 20 49 53 20 00 10 20 57 4F 4E 27 54 20 4C OR IS .. WON'T L
000E1A 45 54 20 4D 45 2E 00 0B 20 56 41 4E 49 53 48 45 ET ME... VANISHE
000E2A 53 00 S.
A similar structure is used for storing the common strings. The first byte is the length, the last byte 00. Something we haven't mentioned yet is the use of capital letters. The C9 byte is a capital "I". The first string when displayed in the game will read "I'm in a ". Although the hex dump above is showing the strings in uppercase, the game switches to lower and upper case mode, which means that everything shown above in capitals will be displayed in the game as lower case.
Another fairly common occurrence in the structure of each common string is a space at the end or at the start. This is because these strings will usually appear as part of a sentence that will be completed by the non-common part of the description text and therefore it makes sense for the joining space to be part of the common string.
So, knowing all this, we can now list the full set of common strings:
01 I'm in a
02 I'm by a
03 I'm at the
04 I'm on the
05 large
06 standing
07 dismal
08 I'm
09 of the tower
0A I'm in a deep gloomy forest ..many trees.
0B I'm in a quiet village street.
0C I'm on a meandering pathway.
0D the lake
0E here
0F I can see
10 Here lies
11 There is
12 earby
13 wolf
14 The
15 gargoyles
16 I've found
17 The door is
18 won't let me.
19 vanishes.
These strings truly are common and shared. They are not used solely by the location descriptions but also by the item descriptions and the messages. They do appear to be grouped into their function though. The first half, up to number $0D, are related to location descriptions. It is interesting to note that in three of the cases above, the common string is quite long, in fact it forms a large part of the location description. This is because Sword of Hrakel has some locations within very similar descriptions. We have six forest locations, two quiet village street locations and four meandering pathway locations.
Now that we know the common strings, we can decode the descriptions for all 36 locations:
01 I'm in a large dismal cave.
02 I'm in a large majestic chamber.
03 I'm at the bottom of a deep pit.
04 I'm in a stuffy room, ahead is a deep, dark pit, beyond is a darkened room.
05 I'm on a long staircase, at the bottom is a door.
06 I'm on the ground floor of the tower, stairs lead up.
07 I'm on the roof of the tower.
08 I'm in a deep gloomy forest ..many trees. There is a small door here.
09 I'm in a deep gloomy forest ..many trees.
0A I'm in a deep gloomy forest ..many trees.
0B I'm in a deep gloomy forest ..many trees.
0C I'm at the top of the oak tree.
0D I'm in a small dingy hut, a stove iss by the far wall.
0E I'm in a deep gloomy forest ..many trees. There is a hut in a clearing.
0F I'm in a deep gloomy forest ..many trees. There is a path out of here and a sick oak tree.
10 I'm on a high green hill.
11 I'm in a quiet village street.
12 I'm standing in the village square. I see the town hall with large oak doors.
13 I'm in a large town chamber.
14 I'm in a dusty store room that has been long forgotten.
15 I'm at the smithy's work place, the furnace is long cold.
16 I'm in a quiet village street.
17 I'm by a small village pond.
18 I'm standing by the counter in the village store.
19 Somehow I've entered the village jail.
1A I'm on a meandering pathway.
1B I'm on a meandering pathway.
1C I'm on a meandering pathway.
1D I'm at the crossroads. There is a hut to the east and I can see a shed as well with a rusty lock.
1E I'm in a poorly built wooden shed.
1F I'm in a tidy hut. Everything is perfectly clean.
20 I'm on a meandering pathway.
21 I'm standing on the Golden Beach at the edge of the lake.
22 I'm on the lake. It is very large.
23 I'm on the far side of the lake.
24 I'm standing in a Magic Circle!
When you're playing the game, you will often see additional text in the description, such as a man hanging in chains, or a meditating guru. These are not actually part of the location description put are instead item descriptions. Characters such as the meditating guru, the man in chains, the agitated duck, the evil mage and the rabid wolf, are all stored in the item description list, mainly because in the most part they are not a permanent feature of the location. For example, the agitated duck can be picked up, the meditating guru can disappear, etc., etc.