ScummVM API documentation
resources.h
1 /* ScummVM - Graphic Adventure Engine
2  *
3  * ScummVM is the legal property of its developers, whose names
4  * are too numerous to list here. Please refer to the COPYRIGHT
5  * file distributed with this source distribution.
6  *
7  * This program is free software: you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation, either version 3 of the License, or
10  * (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program. If not, see <http://www.gnu.org/licenses/>.
19  *
20  */
21 
22 #ifndef TEENAGENT_RESOURCES_H
23 #define TEENAGENT_RESOURCES_H
24 
25 #include "teenagent/pack.h"
26 #include "teenagent/segment.h"
27 #include "teenagent/font.h"
28 #include "graphics/surface.h"
29 
30 struct ADGameDescription;
31 
32 namespace TeenAgent {
33 
34 // Code Segment Addresses (Read Only)
35 // Intro function : 0x024c
36 const uint16 csAddr_intro = 0x024c;
37 // Pole Climb Fail function : 0x4173
38 const uint16 csAddr_poleClimbFail = 0x4173;
39 // Move Ego (Mark) To Suspicious Position function : 0x505c
40 const uint16 csAddr_egoSuspiciousPosition = 0x505c;
41 // Guard Scare Timeout function : 0x516d
42 const uint16 csAddr_guardScareTimeout = 0x516d;
43 // Guard Drinking function : 0x5189
44 const uint16 csAddr_guardDrinking = 0x5189;
45 // Move Ego (Mark) To Default Position function : 0x557e
46 const uint16 csAddr_egoDefaultPosition = 0x557e;
47 // Cave NOP function : 0x599b
48 const uint16 csAddr_caveNOP = 0x599b;
49 // Enter Cave function : 0x5a21
50 const uint16 csAddr_enterCave = 0x5a21;
51 // Ego (Mark) Scared By Spider function : 0x60b5
52 const uint16 csAddr_egoScaredBySpider = 0x60b5;
53 // Move to Ladder and Leave Cellar function : 0x60d9
54 const uint16 csAddr_moveToLadderAndLeaveCellar = 0x60d9;
55 // Leave Cellar function : 0x612b
56 const uint16 csAddr_leaveCellar = 0x612b;
57 // Too Dark function : 0x61fe
58 const uint16 csAddr_TooDark = 0x61fe;
59 // Move Ego (Mark) To Bottom-Right or Turn function : 0x6849
60 const uint16 csAddr_egoBottomRightTurn = 0x6849;
61 // Checking Drawers function : 0x68e6
62 const uint16 csAddr_checkingDrawers = 0x68e6;
63 // Drawer Open Message function : 0x6b86
64 const uint16 csAddr_DrawerOpenMessage = 0x6b86;
65 // Is Cook Gone function : 0x70e0
66 const uint16 csAddr_isCookGone = 0x70e0;
67 // Giving Flower to Old Lady function : 0x88de
68 const uint16 csAddr_givingFlowerToOldLady = 0x88de;
69 // Give Another Flower to Old Lady function : 0x890b
70 const uint16 csAddr_giveAnotherFlowerToOldLady = 0x890b;
71 // Giving Flower to Anne function : 0x8942
72 const uint16 csAddr_givingFlowerToAnne = 0x8942;
73 // Give Another Flower to Anne function : 0x89aa
74 const uint16 csAddr_giveAnotherFlowerToAnne = 0x89aa;
75 // Putting Rock in Hole function : 0x8d57
76 const uint16 csAddr_putRockInHole = 0x8d57;
77 // Mouse Out Of Hole Timeout function : 0x8d79
78 const uint16 csAddr_mouseOutOfHoleTimeout = 0x8d79;
79 // Robot Safe (Mike) Already Unlocked Check function : 0x9166
80 const uint16 csAddr_robotSafeAlreadyUnlockedCheck = 0x9166;
81 // Robot Safe (Mike) Unlock Check function : 0x9175
82 const uint16 csAddr_robotSafeUnlockCheck = 0x9175;
83 // Open Full Toolbox function : 0x98fa
84 const uint16 csAddr_openFullToolbox = 0x98fa;
85 // Open Half Empty Toolbox function : 0x9910
86 const uint16 csAddr_openHalfEmptyToolbox = 0x9910;
87 // Use Diving Equipment function : 0x9921
88 const uint16 csAddr_useDivingEquipment = 0x9921;
89 // Successfully Got Anchor function : 0x99e0
90 const uint16 csAddr_gotAnchor = 0x99e0;
91 // No Anchor Timeout function : 0x9a1d
92 const uint16 csAddr_noAnchorTimeout = 0x9a1d;
93 // Get Out of Lake function : 0x9a7a
94 const uint16 csAddr_getOutOfLake = 0x9a7a;
95 // Dig Under Mansion Wall function : 0x9aca
96 const uint16 csAddr_digMansionWall = 0x9aca;
97 // Too Dark Here function : 0x9c66
98 const uint16 csAddr_tooDarkHere = 0x9c66;
99 // Examine Banknote function : 0x9c6d
100 const uint16 csAddr_examineBanknote = 0x9c6d;
101 // Use Time Pills function : 0x9c79
102 const uint16 csAddr_useTimePills = 0x9c79;
103 // Mansion Intrusion Attempt function : 0x9d45
104 const uint16 csAddr_mansionIntrusionAttempt = 0x9d45;
105 // Second Mansion Intrusion function : 0x9d90
106 const uint16 csAddr_secondMansionIntrusion = 0x9d90;
107 // Third Mansion Intrusion function : 0x9de5
108 const uint16 csAddr_thirdMansionIntrusion = 0x9de5;
109 // Fourth Mansion Intrusion function : 0x9e54
110 const uint16 csAddr_fourthMansionIntrusion = 0x9e54;
111 // Fifth Mansion Intrusion function : 0x9ec3
112 const uint16 csAddr_fifthMansionIntrusion = 0x9ec3;
113 // Sixth Mansion Intrusion function : 0x9f3e
114 const uint16 csAddr_sixthMansionIntrusion = 0x9f3e;
115 // Display Message function : 0xa055
116 const uint16 csAddr_displayMsg = 0xa055;
117 // Reject Message function : 0xa4d6
118 const uint16 csAddr_rejectMsg = 0xa4d6;
119 
120 // Data Segment Addresses
121 // Timed Callback State Variable : 0x0000
122 const uint16 dsAddr_timedCallbackState = 0x0000; // 1 byte
123 
124 // Cursor Graphic 8*12px : 0x00da to 0x0139 (Read Only)
125 const uint16 dsAddr_cursor = 0x00da;
126 
127 // Reject Message Address Pointers : (4 * 2-byte) = 0x339e to 0x33a5
128 const uint16 dsAddr_rejectMsgPtr = 0x339e;
129 // Reject Message #0 : 0x33a6 to 0x33c9
130 const uint16 dsAddr_rejectMsg0 = 0x33a6; // "I have no idea what to do with it"
131 // Reject Message #1 : 0x33ca to 0x33f5
132 const uint16 dsAddr_rejectMsg1 = 0x33ca; // "I can't imagine what I could do with this"
133 // Reject Message #2 : 0x33f6 to 0x3425
134 const uint16 dsAddr_rejectMsg2 = 0x33f6; // "I can't figure out what I should do with this"
135 // Reject Message #3 : 0x3426 to 0x344f
136 const uint16 dsAddr_rejectMsg3 = 0x3426; // "I can't find any reason to mess with it"
137 // Cool Message : 0x3450 to 0x3456
138 const uint16 dsAddr_coolMsg = 0x3450; // "Cool."
139 // Object Usage Error Message : 0x3457 to 0x3467
140 const uint16 dsAddr_objErrorMsg = 0x3457; // "That's no good"
141 // Car Jack Message : 0x3468 to 0x348f
142 const uint16 dsAddr_carJackMsg = 0x3468; // "Wow! There's a car jack inside! Great!"
143 // Spanner Message : 0x3490 to 0x34c6
144 const uint16 dsAddr_spannerMsg = 0x3490; // "There's something else inside the toolbox! A spanner!"
145 // Last Chance Message : 0x34c7 to 0x34d4
146 const uint16 dsAddr_lastChanceMsg = 0x34c7; // "Last chance?"
147 // Give Up Message : 0x34d5 to 0x34e0
148 const uint16 dsAddr_giveUpMsg = 0x34d5; // "I give up"
149 // Avoid Bees Message : 0x34e1 to 0x351e
150 const uint16 dsAddr_avoidBeesMsg = 0x34e1; // "I'm going to stay at least five meters away from these bees!"
151 // Boat Empty Message : 0x351f to 0x3541
152 const uint16 dsAddr_boatEmptyMsg = 0x351f; // "There's nothing else in the boat"
153 // Too Hard Wood Message : 0x3542 to 0x3562
154 const uint16 dsAddr_tooHardWoodMsg = 0x3542; // "This wood is too hard to break"
155 // Boo Message : 0x3563 to 0x3569
156 const uint16 dsAddr_BooMsg = 0x3563; // "Booo!"
157 // Dont Push Luck Message : 0x356a to 0x358f
158 const uint16 dsAddr_dontPushLuckMsg = 0x356a; // "I don't think I should push my luck"
159 // Ordinary Haystack Message : 0x3590 to 0x35b1
160 const uint16 dsAddr_ordinaryHaystackMsg = 0x3590; // "Just an ordinary hay stack. Now."
161 // Needle Haystack Message : 0x35b2 to 0x35e7
162 const uint16 dsAddr_needleHaystackMsg = 0x35b2; // "And they say you can't find a needle in a haystack"
163 // No Potatoes Message : 0x35e8 to 0x3604
164 const uint16 dsAddr_noPotatoMsg = 0x35e8; // "There are no more potatoes"
165 // Trousers Message : 0x3605 to 0x363e
166 const uint16 dsAddr_trousersMsg = 0x3605; // "Good I always asked mum for trousers with BIG pockets"
167 // Life Is Brutal Message : 0x363f to 0x364f
168 const uint16 dsAddr_lifeIsBrutalMsg = 0x363f; // "Life is brutal"
169 // Life Brutal Message : 0x3650 to 0x3667
170 const uint16 dsAddr_lifeBrutalMsg = 0x3650; // "Life is really brutal"
171 // Tickled Message : 0x3668 to 0x367e
172 const uint16 dsAddr_tickledMsg = 0x3668; // "Something tickled me!"
173 // Its Gone Message : 0x367f to 0x3693
174 const uint16 dsAddr_itsGoneMsg = 0x367f; // "At least it's gone"
175 // Monsters Message : 0x3694 to 0x36c1
176 const uint16 dsAddr_monstersMsg = 0x3694; // "Who knows what monsters live in there"
177 // No Hands Message : 0x36c2 to 0x370e
178 const uint16 dsAddr_noHandsMsg = 0x36c2; // "I'd better not put my hands in there..."
179 // Totally Empty Message : 0x370f to 0x372d
180 const uint16 dsAddr_totalEmptyMsg = 0x370f; // "I can see it's totally empty"
181 // One Small Step Message : 0x372e to 0x3765
182 const uint16 dsAddr_oneSmallStepMsg = 0x372e; // "One small step for man, one big pain in the head"
183 // No Chance Message : 0x3766 to 0x378f
184 const uint16 dsAddr_noChanceMsg = 0x3766; // "I won't take my chances a second time"
185 // Dinosaur Bone Message : 0x3790 to 0x37b7
186 const uint16 dsAddr_dinoBoneMsg = 0x3790; // "I really hope this is DINOSAUR bone"
187 // Wall Shaken Message : 0x37b8 to 0x37e9
188 const uint16 dsAddr_wallShakenMsg = 0x37b8; // "Wow! This must have shaken all the nearby walls!"
189 // Kinda Dark Message : 0x37ea to 0x3800
190 const uint16 dsAddr_kindaDarkMsg = 0x37ea; // "It's kinda dark here"
191 // Not in Dark Message : 0x3801 to 0x3831
192 const uint16 dsAddr_notInDarkMsg = 0x3801; // "I'm not going to wander here in the dark again"
193 // Shut Valve Message : 0x3832 to 0x387b
194 const uint16 dsAddr_shutValveMsg = 0x3832; // "Shutting the valve shook the dirt from the wall..."
195 // Need Sunglasses Message : 0x387c to 0x38a6
196 const uint16 dsAddr_needSunglassesMsg = 0x387c; // "Sorry buddy, but I need your sunglasses"
197 // Not Best Place Message : 0x38a7 to 0x38cd
198 const uint16 dsAddr_notBestPlaceMsg = 0x38a7; // "It's not the best place for diving"
199 // Not Here Message : 0x38ce to 0x38da
200 const uint16 dsAddr_notHereMsg = 0x38ce; // "Not here"
201 // Can't Talk Underwater Message : 0x38db to 0x38fe
202 const uint16 dsAddr_cantTalkUnderwaterMsg = 0x38db; // "I really can't talk underwater!"
203 // Not Swimming There Message : 0x38ff to 0x3931
204 const uint16 dsAddr_notSwimmingThereMsg = 0x38ff; // "I don't think swimming there is worth the effort"
205 // Too Little Air Message : 0x3932 to 0x3988
206 const uint16 dsAddr_tooLittleAirMsg = 0x3932; // "If I want to get this anchor I have to swim there when I have more air in my lungs"
207 // Hooked Anchor Message : 0x3989 to 0x39ad
208 const uint16 dsAddr_hookedAnchorMsg = 0x3989; // "I was really hooked on this anchor!"
209 // Seaweed Message : 0x39ae to 0x39f5
210 const uint16 dsAddr_seaweedMsg = 0x39ae; // "This seaweed is just like the flowers I gave mum on her last birthday"
211 // Fish Boat Message : 0x39f6 to 0x3a27
212 const uint16 dsAddr_fishBoatMsg = 0x39f6; // "I wonder what fish do inside this boat at night"
213 // Fish Something Message : 0x3a28 to 0x3a59
214 const uint16 dsAddr_fishSomethingMsg = 0x3a28; // "I think I have to fish out something down there"
215 // Fish Don't Worry Message : 0x3a5a to 0x3a84
216 const uint16 dsAddr_fishDontWorryMsg = 0x3a5a; // "At least fish don't worry about the rain"
217 // Not Red Herring Message : 0x3a85 to 0x3ab6
218 const uint16 dsAddr_notRedHerringMsg = 0x3a85; // "I hope all this fish stuff is not a red herring"
219 // Nice Down Message : 0x3ab7 to 0x3acd
220 const uint16 dsAddr_niceDownMsg = 0x3ab7; // "It's nice down there"
221 // Hey Let Go Message : 0x3ace to 0x3ae5
222 const uint16 dsAddr_heyLetGoMsg = 0x3ace; // "Hey, let go, will ya?!"
223 // Aaahhh Message : 0x3ae6 to 0x3afc
224 const uint16 dsAddr_aaahhhMsg = 0x3ae6; // "Aaaaaaaaaaaaahhh!"
225 // Oops Message : 0x3afd to 0x3b03
226 const uint16 dsAddr_oopsMsg = 0x3afd; // "Oops"
227 // Found Food Message : 0x3b04 to 0x3b2e
228 const uint16 dsAddr_foundFoodMsg = 0x3b04; // "People leave food in unbelievable places"
229 // Come Here Message : 0x3b2f to 0x3b58
230 const uint16 dsAddr_comeHereMsg = 0x3b2f; // "Come here, I've got something for you"
231 // Cant Catch Message : 0x3b59 to 0x3b6b
232 const uint16 dsAddr_cantCatchMsg = 0x3b59; // "I can't catch it!"
233 // Trapped Mouse Message : 0x3b6c to 0x3b82
234 const uint16 dsAddr_trappedMouseMsg = 0x3b6c; // "The mouse is trapped!"
235 // Yikes Message : 0x3b83 to 0x3b8a
236 const uint16 dsAddr_yikesMsg = 0x3b83; // "Yikes!"
237 // Mouse Nerve Message : 0x3b8b to 0x3bab
238 const uint16 dsAddr_mouseNerveMsg = 0x3b8b; // "Boy, this mouse has some nerve!"
239 // Drawers Empty Message : 0x3bac to 0x3bd1
240 const uint16 dsAddr_drawersEmptyMsg = 0x3bac; // "There's nothing else in the drawers"
241 // Rid Bush Message 0x3bd2 to 0x3bf5
242 const uint16 dsAddr_ridBushMsg = 0x3bd2; // "I must get rid of this bush first"
243 // Mouse Gone Message : 0x3bf6 to 0x3c0a
244 const uint16 dsAddr_mouseGoneMsg = 0x3bf6; // "The mouse has gone!"
245 // Nonsense Message : 0x3c0b to 0x3c15
246 const uint16 dsAddr_nonsenseMsg = 0x3c0b; // "Nonsense"
247 // Good Doggy Message : 0x3c16 to 0x3c30
248 const uint16 dsAddr_goodDoggyMsg = 0x3c16; // "I understand. Good doggy"
249 // Here Boy Message : 0x3c31 to 0x3c3c
250 const uint16 dsAddr_hereBoyMsg = 0x3c31; // "Here, boy"
251 // Friends Now Message : 0x3c3d to 0x3c57
252 const uint16 dsAddr_friendsNowMsg = 0x3c3d; // "I hope we're friends now"
253 // Not Think Right Place Message : 0x3c58 to 0x3c7f
254 const uint16 dsAddr_notThinkRightPlaceMsg = 0x3c58; // "I don't think this is the right place"
255 // Cutscene Message A : 0x3c80 to 0x3c99
256 const uint16 dsAddr_cutsceneMsgA = 0x3c80; // "Hundred moments later"
257 // Cutscene Message B : 0x3c9a to 0x3cbb
258 const uint16 dsAddr_cutsceneMsgB = 0x3c9a; // "Another hundred moments later"
259 // Found Crude Oil Message : 0x3cbc to 0x3ce9
260 const uint16 dsAddr_foundCrudeOilMsg = 0x3cbc; // "At least I found crude oil and I'll be rich"
261 // My Life Message : 0x3cea to 0x3cfa
262 const uint16 dsAddr_myLifeMsg = 0x3cea; // "That's my life"
263 // Confusion Message : 0x3cfb to 0x3d00
264 const uint16 dsAddr_ConfusionMsg = 0x3cfb; // "!?&!"
265 // Grandpa Promise Message : 0x3d01 to 0x3d1f
266 const uint16 dsAddr_grandpaPromiseMsg = 0x3d01; // "But grandpa, you promised!"
267 // Oh Lets Go Message : 0x3d20 to 0x3d39
268 const uint16 dsAddr_ohLetsGoMsg = 0x3d20; // "Oh all right. Let's go"
269 // Bye Message : 0x3d3a to 0x3d3f
270 const uint16 dsAddr_byeMsg = 0x3d3a; // "Bye."
271 // No Need Message : 0x3d40 to 0x3d58
272 const uint16 dsAddr_noNeedMsg = 0x3d40; // "No need to do it again"
273 // Girl Talk Message : 0x3d59 to 0x3d85
274 const uint16 dsAddr_girlTalkMsg = 0x3d59; // "I really don't know how to talk to girls"
275 // Dont Work Purpose Message : 0x3d86 to 0x3dae
276 const uint16 dsAddr_dontWorkPurposeMsg = 0x3d86; // "I usually don't work without a purpose"
277 // Nut Real Message : 0x3daf to 0x3dc5
278 const uint16 dsAddr_nutRealMsg = 0x3daf; // "Only the nut is real"
279 // Hen Fly Message : 0x3dc6 to 0x3df3
280 const uint16 dsAddr_henFlyMsg = 0x3dc6; // "I wonder if hens can fly. Come here, baby"
281 // First Test Fail Message : 0x3df4 to 0x3e07
282 const uint16 dsAddr_firstTestFailMsg = 0x3df4; // "First test failed"
283 // Rid Frustations Message : 0x3e08 to 3e30
284 const uint16 dsAddr_ridFrustationsMsg = 0x3e08; // "I'd already got rid of my frustrations"
285 // Road Nowhere Message : 0x3e31 to 0x3e4e
286 const uint16 dsAddr_roadNowhereMsg = 0x3e31; // "Nah. It's a road to nowhere"
287 // Open Boot Message 0x3e4f to 0x3e62
288 const uint16 dsAddr_openBootMsg = 0x3e4f; // "It opens the boot"
289 // Shut Tight Message : 0x3e63 to 0x3e74
290 const uint16 dsAddr_shutTightMsg = 0x3e63; // "It's shut tight"
291 // Boot Empty Message : 0x3e75 to 0x3e97
292 const uint16 dsAddr_bootEmptyMsg = 0x3e75; // "There's nothing else in the boot"
293 // Clothes Dry Message : 0x3e98 to 0x3eb1
294 const uint16 dsAddr_clothesDryMsg = 0x3e98; // "The clothes are dry now."
295 // Crow Kill Message : 0x3eb2 to 0x3ed5
296 const uint16 dsAddr_crowKillMsg = 0x3eb2; // "I'm sure these crows will kill me"
297 // Get Rid Of Guard First Message : 0x3ed6 to 0x3f29
298 const uint16 dsAddr_getRidOfGuardFirstMsg = 0x3ed6; // "If I want to get inside I must get rid of this guard first..."
299 // Wall Too Smooth Message : 0x3f2a to 0x3f53
300 const uint16 dsAddr_wallTooSmoothMsg = 0x3f2a; // "The wall surface is too smooth to climb"
301 // Too Much Resin To Climb Message : 0x3f54 to 0x3f84
302 const uint16 dsAddr_tooMuchResinToClimbMsg = 0x3f54; // "I could climb it if there wasn't so much resin"
303 // Only Green Rect Message : 0x3f85 to 0x3feb
304 const uint16 dsAddr_onlyGreenRectMsg = 0x3f85; // "The only green stuff that I like is that rectangular piece of paper with..."
305 // Don't Wanna Touch Hedgehog Message : 0x3fec to 0x402d
306 const uint16 dsAddr_dontWannaTouchHedgehogMsg = 0x3fec; // "I don't wanna touch it. Its spines could hurt my delicate hands"
307 // Not Hungry Message : 0x402e to 0x4046
308 const uint16 dsAddr_notHungryMsg = 0x402e; // "Thanks, I'm not hungry"
309 // No Long Hands Message : 0x4047 to 0x406c
310 const uint16 dsAddr_noLongHandsMsg = 0x4047; // "I really don't have such long hands"
311 // Too Far To Swim Message : 0x406d to 0x4089
312 const uint16 dsAddr_tooFarToSwimMsg = 0x406d; // "It's too far to swim there"
313 // Echo Message : 0x408a to 0x4090
314 const uint16 dsAddr_echoMsg = 0x408a; // "Echo!"
315 // Loud Echo Message : 0x4091 to 0x4097
316 const uint16 dsAddr_loudEchoMsg = 0x4091; // "ECHO!"
317 // Who There Message : 0x4098 to 0x40a6
318 const uint16 dsAddr_whoThereMsg = 0x4098; // "Who's there?!"
319 // Loud Who There Message : 0x40a7 to 0x40b5
320 const uint16 dsAddr_loudWhoThereMsg = 0x40a7; // "WHO'S THERE?!"
321 // Dont Copy Message : 0x40b6 to 0x40cd
322 const uint16 dsAddr_dontCopyMsg = 0x40b6; // "DON'T COPY ME!"
323 // Loud Dont Copy Message : 0x40ce to 0x40e7
324 const uint16 dsAddr_loudDontCopyMsg = 0x40ce; // "DON'T COPY ME!!!"
325 // Throw Rock Message : 0x40e8 to 0x410e
326 const uint16 dsAddr_throwRockMsg = 0x40e8; // "OR I WILL THROW A ROCK DOWN THERE!"
327 // Or I Will Message : 0x410f to 0x411c
328 const uint16 dsAddr_orIWillMsg = 0x410f; // "OR I WILL"
329 // Still There Message : 0x411d to 0x4132
330 const uint16 dsAddr_stillThereMsg = 0x411d; // "Are you still there?"
331 // No Bucket Message : 0x4133 to 0x4163
332 const uint16 dsAddr_noBucketMsg = 0x4133; // "It's not a barrel-organ. And there's no bucket."
333 // Dont Need To Open Message : 0x4164 to 0x417d
334 const uint16 dsAddr_dontNeedToOpenMsg = 0x4164; // "I don't need to open it"
335 // Hmm Grass Message : 0x417e to 41b0
336 const uint16 dsAddr_hmmGrassMsg = 0x417e; // "Hmmm. Grass..."
337 // Find Nut Message : 0x41b1 to 0x41ee
338 const uint16 dsAddr_findNutMsg = 0x41b1; // "I won't find the nut just like that. The grass is too dense"
339 // Not Horny Message : 0x41ef to 0x41fe
340 const uint16 dsAddr_notHornyMsg = 0x41ef; // "I'm not horny"
341 // Can't Jump So High Message : 0x41ff to 0x423e
342 const uint16 dsAddr_CantJumpMsg = 0x41ff; // "No way I can jump so high, cause, err, white men can't jump"
343 // Don't Need It Message : 0x423f to 0x4250
344 const uint16 dsAddr_dontNeedItMsg = 0x423f; // "I don't need it"
345 // Not Santa Claus Message : 0x4251 to 0x4266
346 const uint16 dsAddr_notSantaClausMsg = 0x4251; // "I'm not Santa Claus"
347 // No Plastic Imitations Message : 0x4267 to 0x4288
348 const uint16 dsAddr_noPlasticImitationsMsg = 0x4267; // "I don't need plastic imitations"
349 // Too Fragile Message : 0x4289 to 0x42ab
350 const uint16 dsAddr_tooFragileMsg = 0x4289; // "It's too fragile to carry around"
351 // Keep It Open Message : 0x42ac to 0x42c6
352 const uint16 dsAddr_keepItOpenMsg = 0x42ac; // "I'd like to keep it open"
353 // Not Taking Socks Message : 0x42c7 to 0x4305
354 const uint16 dsAddr_notTakingSocksMsg = 0x42c7; // "I really don't want to walk around with someone else's socks"
355 // Not Tired Message : 0x4306 to 0x431d
356 const uint16 dsAddr_notTiredMsg = 0x4306; // "Thanks, I'm not tired"
357 // Too Big Message : 0x431e to 0x434d
358 const uint16 dsAddr_tooBigMsg = 0x431e; // "It's too big and I doubt if I'll ever need it"
359 // No Secret Passage Message : 0x434e to 0x437f
360 const uint16 dsAddr_noSecretPassageMsg = 0x434e; // "I don't think there's any secret passage inside"
361 // No Fruit Message : 0x4380 to 0x43ab
362 const uint16 dsAddr_noFruitMsg = 0x4380; // "There are no more interesting fruits here"
363 // Jug Me Message : 0x43ac to 0x43cd
364 const uint16 dsAddr_jugMeMsg = 0x43ac; // "They can jug me if I steal this"
365 // Leave Flowers Alone Message : 0x43ce to 0x4411
366 const uint16 dsAddr_leaveFlowersAloneMsg = 0x43ce; // "I'd better leave it. Women are really oversensitive about flowers."
367 // Mirror Mirror Message : 0x4412 to 0x444e
368 const uint16 dsAddr_mirrorMirrorMsg = 0x4412; // "Mirror, Mirror on the wall...."
369 // Think Too Long Message : 0x444f to 0x446a
370 const uint16 dsAddr_thinkTooLongMsg = 0x444f; // "Hey, don't think too long"
371 // Hint Male Message : 0x446b to 0x4491
372 const uint16 dsAddr_HintMaleMsg = 0x446b; // "A hint: Someone in this room, a male"
373 // OK Wait Message : 0x4492 to 0x44a6
374 const uint16 dsAddr_okWaitMsg = 0x4492; // "OK, take your time"
375 // Busy Thinking Message : 0x44a7 to 0x44d5
376 const uint16 dsAddr_busyThinkingMsg = 0x44a7; // "I'd better not interrupt it's thought process"
377 // No Dentists Message : 0x44d6 to 0x450d
378 const uint16 dsAddr_noDentistsMsg = 0x44d6; // "I don't want to have anything in common with dentists"
379 // Too Heavy Message : 0x450e to 0x4531
380 const uint16 dsAddr_tooHeavyMsg = 0x450e; // "It's too heavy. Not that I'm wimp"
381 // What Got Message : 0x4532 to 0x4554
382 const uint16 dsAddr_whatGotMsg = 0x4532; // "Let's look what we've got here"
383 // Strawberry Jam Message : 0x4555 to 0x4567
384 const uint16 dsAddr_strawberryJamMsg = 0x4555; // "Strawberry jam"
385 // Gooseberry Jam Message : 0x4568 to 0x457a
386 const uint16 dsAddr_gooseberryJamMsg = 0x4568; // "Gooseberry jam"
387 // Blackberry Jam Message : 0x457b to 0x458d
388 const uint16 dsAddr_blackberryJamMsg = 0x457b; // "Blackberry jam"
389 // Bilberry Jam Message : 0x458e to 0x459e
390 const uint16 dsAddr_bilberryJamMsg = 0x458e; // "Bilberry jam"
391 // Get Me Out Jam Message : 0x459f to 0x45b7
392 const uint16 dsAddr_getMeOutJamMsg = 0x459f; // "Get me out of this jam!"
393 // Rosemary Jam Message : 0x45b8 to 0x45d9
394 const uint16 dsAddr_rosemaryJamMsg = 0x45b8; // "Oh, and there is Rosemary jam"
395 // Know Rosemary Message : 0x45da to 0x4602
396 const uint16 dsAddr_knowRosemaryMsg = 0x45da; // "I used to know someone called Rosemary"
397 // Unwanted Jams Message : 0x4603 to 0x461c
398 const uint16 dsAddr_unwantedJamsMsg = 0x4603; // "I don't want those jams"
399 // Too Dark Message : 0x461d to 0x463b
400 const uint16 dsAddr_TooDarkMsg = 0x461d; // "It's too dark to see clearly"
401 // Yeow Message : 0x463c to 0x4649
402 const uint16 dsAddr_yeowMsg = 0x463c; // "YEEEOOOWWWW!"
403 // Yawn Message : 0x464a to 0x4651
404 const uint16 dsAddr_yawnMsg = 0x464a; // "(yawn)"
405 // Laughter Message : 0x4652 to 0x465d
406 const uint16 dsAddr_laughterMsg = 0x4652; // "(laughter)"
407 // No Hands Sharp Thorns Message : 0x465e to 0x46a0
408 const uint16 dsAddr_noHandsSharpThornsMsg = 0x465e; // "I can't remove it with my hands. these thorns look really sharp"
409 // No Chainsaw Fuel Message : 0x46a1 to 0x46c2
410 const uint16 dsAddr_noChainsawFuelMsg = 0x46a1; // "There's no fuel in the chainsaw"
411 // Thorns Too Thin Message : 0x46c3 to 0x46f6
412 const uint16 dsAddr_thornsTooThinMsg = 0x46c3; // "Thorns are too thin, the chainsaw is useless here"
413 // Rock Walking Gee Message : 0x46f7 to 0x473c
414 const uint16 dsAddr_rockWalkingGeeMsg = 0x46f7; // "Yeah, great idea. Let's take this rock and walk around a bit. Gee..."
415 // Butterfly Message : 0x473d to 0x477a
416 const uint16 dsAddr_butterflyMsg = 0x473d; // "I'd better leave them alone, they make this place beautiful"
417 // Not Sure If Alive Message : 0x477b to 0x4797
418 const uint16 dsAddr_notSureIfAliveMsg = 0x477b; // "I'm not sure if it's alive"
419 
420 // FIXME - Unknown where this is used.. Talking to SOMETHING...
421 // Unknown Language Message : 0x4798 to 0x47be
422 const uint16 dsAddr_unknownLanguageMsg = 0x4798; // "I don't know what language it speaks"
423 
424 // Hole Too Narrow Message : 0x47bf to 0x47e6
425 const uint16 dsAddr_holeTooNarrowMsg = 0x47bf; // "The hole is too narrow to fit my hand"
426 // Bird Attack Message : 0x47e7 to 0x4807
427 const uint16 dsAddr_birdAttackMsg = 0x47e7; // "Hey You! Wake up! Bird attack!"
428 // No Search Warrant Message : 0x4808 to 0x4827
429 const uint16 dsAddr_noSearchWarrantMsg = 0x4808; // "I don't have a search-warrant"
430 // Uninteresting Haystack Message : 0x4828 to 0x485f
431 const uint16 dsAddr_uninterestingHaystackMsg = 0x4828; // "I don't see anything interesting about this haystack"
432 // More Complicated Message : 0x4860 to 0x4881
433 const uint16 dsAddr_moreComplicatedMsg = 0x4860; // "It's more complicated than that"
434 // Nut Rake Message : 0x4882 to 0x48be
435 const uint16 dsAddr_nutRakeMsg = 0x4882; // "It's pointless, the nut will slip between the rake's teeth"
436 // Paddle Broken Message : 0x48bf to 0x48d5
437 const uint16 dsAddr_paddleBrokenMsg = 0x48bf; // "The paddle is BROKEN"
438 // Branch Not Paddle Message : 0x48d6 to 0x4912
439 const uint16 dsAddr_branchNotPaddleMsg = 0x48d6; // "This branch is not a paddle. It doesn't even look like one"
440 // Try Somewhere Else Message : 0x4913 to 0x495b
441 const uint16 dsAddr_trySomewhereElseMsg = 0x4913; // "I'd better try somewhere else - I suppose this side is heavily guarded"
442 // Sharpen Not Pulverize Message : 0x495c to 0x4983
443 const uint16 dsAddr_sharpenNotPulverizeMsg = 0x495c; // "I needed to sharpen it, not pulverize"
444 // Can't Do Anything Too Dark Message : 0x4984 to 0x49ad
445 const uint16 dsAddr_cantDoTooDarkMsg = 0x4984; // "I can't do anything here, it's too dark"
446 // Bribe Message : 0x49ae to 0x49d0
447 const uint16 dsAddr_BribeMsg = 0x49ae; // "Here, let's make your pocket fat."
448 // Bank Note Message : 0x49d1 to 0x4a28
449 const uint16 dsAddr_bankNoteMsg = 0x49d1; // "It's a note from some bank..."
450 // Show Her Money Message : 0x4a29 to 0x4a5a
451 const uint16 dsAddr_showHerMoneyMsg = 0x4a29; // "If I just show her the money, she might take it"
452 // Hundred Bucks Message : 0x4a5b to 0x4a6e
453 const uint16 dsAddr_hundredBucksMsg = 0x4a5b; // "A hundred bucks!!!"
454 // Want Blood Message : 0x4a6f to 0x4a7d
455 const uint16 dsAddr_wantBloodMsg = 0x4a6f; // "I want Blood!"
456 // Dont Leave Mansion Message : 0x4a7e to 0x4aaf
457 const uint16 dsAddr_dontLeaveMansionMsg = 0x4a7e; // "I don't want to leave the mansion, I want blood!"
458 // Wimp Message : 0x4ab0 to 0x4acc
459 const uint16 dsAddr_WimpMsg = 0x4ab0; // "I'm a pathetic little wimp"
460 // Strange Drawer Message : 0x4acd to 0x4b0c
461 const uint16 dsAddr_strangeDrawerMsg = 0x4acd; // "Strange, but the drawer is stuck if the next drawer is open"
462 // Not Ordinary Drawers Message : 0x4b0d to 0x4b38
463 const uint16 dsAddr_notOrdinaryDrawersMsg = 0x4b0d; // "Maybe these are not just ordinary drawers!"
464 // Drawer Open Message : 0x4b39 to 0x4b6b
465 const uint16 dsAddr_drawerOpenMsg = 0x4b39; // "I cannot open the drawer if the next one is open!"
466 // Blue Interior Message 0x4b6c to 0x4b86
467 const uint16 dsAddr_blueInteriorMsg = 0x4b6c; // "It's got a blue interior"
468 // Red Interior Message : 0x4b87 to 0x4ba0
469 const uint16 dsAddr_redInteriorMsg = 0x4b87; // "It's got a red interior"
470 // Grey Interior Message : 0x4ba1 to 0x4bbb
471 const uint16 dsAddr_greyInteriorMsg = 0x4ba1; // "It's got a grey interior"
472 // Green Interior Message : 0x4bbc to 0x4bd7
473 const uint16 dsAddr_greenInteriorMsg = 0x4bbc; // "It's got a green interior"
474 // Brown Interior Message : 0x4bd8 to 0x4bf3
475 const uint16 dsAddr_brownInteriorMsg = 0x4bd8; // "It's got a brown interior"
476 // Pink Interior Message : 0x4bf4 to 0x4c0e
477 const uint16 dsAddr_pinkInteriorMsg = 0x4bf4; // "It's got a pink interior"
478 // Dictaphone Inside Message : 0x4c0f to 0x4c31
479 const uint16 dsAddr_dictaphoneInsideMsg = 0x4c0f; // "Wow! There's a dictaphone inside!"
480 // Found Polaroid Message : 0x4c32 to 0x4c60
481 const uint16 dsAddr_foundPolaroidMsg = 0x4c32; // "There's a polaroid inside! I might need that"
482 // Book Held Message : 0x4c61 to 0x4c83
483 const uint16 dsAddr_bookHeldMsg = 0x4c61; // "Something's got hold of the book!"
484 // Secret Compartment Message : 0x4c84 to 0x4c9f
485 const uint16 dsAddr_secretCompartmentMsg = 0x4c84; // "Wow! A secret compartment!"
486 // Dont Mess Message : 0x4ca0 to 0x4cc6
487 const uint16 dsAddr_dontMessMsg = 0x4ca0; // "I don't need to mess with it anymore"
488 // Full Automatic Message : 0x4cc7 to 0x4cd8
489 const uint16 dsAddr_fullAutomaticMsg = 0x4cc7; // "Fully Automatic"
490 // No More Sheets Message : 0x4cd9 to 0x4d01
491 const uint16 dsAddr_noMoreSheetsMsg = 0x4cd9; // "Right now I don't need any more sheets"
492 // No Deprave Message : 0x4d02 to 0x4d29
493 const uint16 dsAddr_noDepraveMsg = 0x4d02; // "Nah, I don't want to deprave the kids"
494 // No Read Again Message : 0x4d2a to 0x4d5a
495 const uint16 dsAddr_noReadAgainMsg = 0x4d2a; // "I don't want to read it again. I might like it."
496 // TV Off Message : 0x4d5b to 0x4d7f
497 const uint16 dsAddr_tvOffMsg = 0x4d5b; // "I just realized that the TV is off"
498 // Not Happen Message : 0x4d80 to 0x4d92
499 const uint16 dsAddr_NotHappenMsg = 0x4d80; // "Nothing happened"
500 // Tape Started Message : 0x4d93 to 0x4da5
501 const uint16 dsAddr_tapeStartedMsg = 0x4d93; // "The tape started!"
502 // Much Better Message : 0x4da6 to 0x4dba
503 const uint16 dsAddr_muchBetterMsg = 0x4da6; // "That's much better"
504 // No Sleep Message : 0x4dbb to 0x4dd2
505 const uint16 dsAddr_noSleepMsg = 0x4dbb; // "I don't want to sleep"
506 // Just Cork Message : 0x4dd3 to 0x4de5
507 const uint16 dsAddr_justCorkMsg = 0x4dd3; // "It's just a cork"
508 // Enough Photos Message : 0x4de6 to 0x4e04
509 const uint16 dsAddr_enoughPhotosMsg = 0x4de6; // "I don't need any more photos"
510 // Record Scare Message : 0x4e05 to 0x4e31
511 const uint16 dsAddr_recordScareMsg = 0x4e05; // "Yeah, I can record this and scare the cats"
512 // Already Recorded Message : 0x4e32 to 0x4e57
513 const uint16 dsAddr_alreadyRecordedMsg = 0x4e32; // "I already recorded what I wanted to"
514 // Can't Record No Batteries Message : 0x4e58 to 0x4e8d
515 const uint16 dsAddr_cantRecordNoBatteriesMsg = 0x4e58; // "I can't record anything until I find some batteries"
516 
517 // FIXME - Not sure how to get this message. Dictaphone with no batteries somewhere? Radio?
518 // No Batteries No Fun Message : 0x4e8e to 0x4ea4
519 const uint16 dsAddr_NoBatteriesNoFunMsg = 0x4e8e; // "No batteries, no fun"
520 
521 // Not Right Moment Message : 0x4ea5 to 0x4ecd
522 const uint16 dsAddr_notRightMomentMsg = 0x4ea5; // "I don't think this is the right moment"
523 // Cook Around Message : 0x4ece to 0x4ef9
524 const uint16 dsAddr_cookAroundMsg = 0x4ece; // "I can't do anything with this cook around"
525 // Same Bottle Message : 0x4efa to 0x4f3c
526 const uint16 dsAddr_sameBottleMsg = 0x4efa; // "The bottle's the same, but I doubt if it's enough to fool anyone"
527 // Break Flatten Message : 0x4f3d to 0x4f68
528 const uint16 dsAddr_breakFlattenMsg = 0x4f3d; // "I wanted to break it, not to flatten it!"
529 // What Inside Message : 0x4f69 to 0x4f9a
530 const uint16 dsAddr_whatInsideMsg = 0x4f69; // "I was always curious what's inside these things"
531 // Rest Useless Message : 0x4f9b to 0x4fb0
532 const uint16 dsAddr_restUselessMsg = 0x4f9b; // "The rest is useless"
533 // Two Batteries Message : 0x4fb1 to 0x4fca
534 const uint16 dsAddr_twoBatteriesMsg = 0x4fb1; // "Wow! Two 1.5V batteries!"
535 // One Taken Message : 0x4fcb to 0x4fe1
536 const uint16 dsAddr_oneTakenMsg = 0x4fcb; // "This one's taken, OK?"
537 // Slight Mad Message : 0x4fe2 to 0x5009
538 const uint16 dsAddr_slightMadMsg = 0x4fe2; // "It finally happened. I'm slightly mad"
539 // Paper Burnt Message : 0x500a to 0x502a
540 const uint16 dsAddr_paperBurntMsg = 0x500a; // "The paper burnt out completely!"
541 // Burn Baby Message : 0x502b to 0x503d
542 const uint16 dsAddr_burnBabyMsg = 0x502b; // "Burn, baby, burn!"
543 // Voila Message : 0x503e to 0x5045
544 const uint16 dsAddr_voilaMsg = 0x503e; // "Voila"
545 // Too Hot Message : 0x5046 to 0x505d
546 const uint16 dsAddr_tooHotMsg = 0x5046; // "It's too hot to touch!"
547 // Frozen Shelf Message : 0x505e to 0x5081
548 const uint16 dsAddr_frozenShelfMsg = 0x505e; // "It has frozen hard onto the shelf!"
549 // Yummy Message : 0x5082 to 0x5089
550 const uint16 dsAddr_yummyMsg = 0x5082; // "Yummy"
551 // Dislike Veal Message : 0x508a to 0x50a5
552 const uint16 dsAddr_dislikeVealMsg = 0x508a; // "I never liked veal anyway"
553 // No Reason Message : 0x50a6 to 0x50c2
554 const uint16 dsAddr_noReasonMsg = 0x50a6; // "There's no reason to do it"
555 // Fooled Once Message : 0x50c3 to 0x50e0
556 const uint16 dsAddr_fooledOnceMsg = 0x50c3; // "I'd already fooled him once"
557 // Mike Voice Test Message : 0x50e1 to 0x5100
558 const uint16 dsAddr_mikeVoiceTestMsg = 0x50e1; // "Mike, activate the voice test"
559 // Not My Voice Message : 0x5101 to 0x5123
560 const uint16 dsAddr_notMyVoiceMsg = 0x5101; // "I won't cheat Mike with MY voice"
561 // Singing Message : 0x5124 to 0x5137
562 const uint16 dsAddr_singingMsg = 0x5124; // "siiiiinging!"
563 // Mike Scent Test Message : 0x5138 to 0x5160
564 const uint16 dsAddr_mikeScentTestMsg = 0x5138; // "Mike, let's get on with the scent test"
565 // Mike View Test Message : 0x5161 to 0x517a
566 const uint16 dsAddr_mikeViewTestMsg = 0x5161; // "Mike, run the view test"
567 // Cutscene Message #0 : 0x517b to 0x51a6
568 const uint16 dsAddr_cutsceneMsg0 = 0x517b; // "A secret diary of ..."
569 // Cant Hide Message : 0x51a7 to 0x51ba
570 const uint16 dsAddr_cantHideMsg = 0x51a7; // "I can't hide here!"
571 // John Outside Message : 0x51bb to 0x51e6
572 const uint16 dsAddr_johnOutsideMsg = 0x51bb; // "There's John Noty outside! I can't go out!"
573 // Was Close Message : 0x51e7 to 0x51f7
574 const uint16 dsAddr_wasCloseMsg = 0x51e7; // "That was close"
575 // Cork In Hole Message : 0x51f8 to 0x5217
576 const uint16 dsAddr_corkInHoleMsg = 0x51f8; // "The cork is stuck in the hole"
577 // Fits Perfect Message : 0x5218 to 0x522b
578 const uint16 dsAddr_fitsPerfectMsg = 0x5218; // "It fits perfectly!"
579 // Enough Water Message : 0x522c to 0x524e
580 const uint16 dsAddr_enoughWaterMsg = 0x522c; // "There's enough water in the sink"
581 // No Hot Water Message : 0x524f to 0x5271
582 const uint16 dsAddr_noHotWaterMsg = 0x524f; // "There's no hot water in the sink"
583 // Label Off Message : 0x5272 to 0x528a
584 const uint16 dsAddr_labelOffMsg = 0x5272; // "The label has come off!"
585 // Cork Too Small Message : 0x528b to 0x52a8
586 const uint16 dsAddr_corkTooSmallMsg = 0x528b; // "The cork is a bit too small"
587 // Not Try Now Message : 0x52a9 to 0x52ca
588 const uint16 dsAddr_notTryNowMsg = 0x52a9; // "There's no need to try them now"
589 // No Salad Message : 0x52cb to 0x52f5
590 const uint16 dsAddr_noSaladMsg = 0x52cb; // "I don't want to turn myself into a salad"
591 // Nah Message : 0x52f6 to 0x52fd
592 const uint16 dsAddr_nahMsg = 0x52f6; // "Nah"
593 // Vent First Message : 0x52fe to 0x5325
594 const uint16 dsAddr_ventFirstMsg = 0x52fe; // "I'd better stop this ventilator first"
595 // Catch John First Message : 0x5326 to 0x5348
596 const uint16 dsAddr_catchJohnFirstMsg = 0x5326; // "I'd better catch John Noty first"
597 // Only Chilli Message : 0x5349 to 0x5371
598 const uint16 dsAddr_onlyChilliMsg = 0x5349; // "Good this red stuff is only a chilli"
599 // Water Hot Message : 0x5372 to 0x538c
600 const uint16 dsAddr_waterHotMsg = 0x5372; // "The water looks very hot"
601 // Sink Full Message : 0x538d to 0x53ac
602 const uint16 dsAddr_sinkFullMsg = 0x538d; // "The sink is full of hot water"
603 // No Sock Store Message : 0x53ad to 0x53dc
604 const uint16 dsAddr_noSockStoreMsg = 0x53ad; // "I don't have anything to store these socks in"
605 // Show Papers Message : 0x53dd to 0x53f1
606 const uint16 dsAddr_showPapersMsg = 0x53dd; // "Here are my papers"
607 // Got Permission Message : 0x53f2 to 0x5410
608 const uint16 dsAddr_gotPermissionMsg = 0x53f2; // "I already got the permission"
609 // Saving Fine Message : 0x5411 to 0x5462
610 const uint16 dsAddr_SavingFineMsg = 0x5411; // "Saving is a very fine thing..."
611 // Love Captain Message : 0x5463 to 0x5474
612 const uint16 dsAddr_loveCaptainMsg = 0x5463; // "I love captain"
613 // Soccer Rulz Message : 0x5475 to 0x5483
614 const uint16 dsAddr_soccerRulzMsg = 0x5475; // "Soccer rulz"
615 // Tree Cut Message : 0x5484 to 0x54c3
616 const uint16 dsAddr_treeCutMsg = 0x5484; // "Don't cut the trees..."
617 // Visa Accepted Message : 0x54c4 to 0x54d4
618 const uint16 dsAddr_visaAcceptedMsg = 0x54c4; // "VISA Accepted"
619 // Other Graffiti Message : 0x54d5 to 0x54f6
620 const uint16 dsAddr_otherGraffitiMsg = 0x54d5; // "The rest of graffiti is obscene"
621 // First Trial Message : 0x54f7 to 0x5510
622 const uint16 dsAddr_firstTrialMsg = 0x54f7; // "Sir, I'm Mark. A rookie"
623 // Locked Message : 0x5511 to 0x551e
624 const uint16 dsAddr_lockedMsg = 0x5511; // "It's Locked!"
625 // Thanks Message : 0x551f to 0x5527
626 const uint16 dsAddr_ThanksMsg = 0x551f; // "Thanks."
627 // Unknown Usage Message : 0x5528 to 0x555c
628 const uint16 dsAddr_unkUsageMsg = 0x5528; // "I don't have any idea what to do with it right now"
629 // Idea Message : 0x555d to 0x5576
630 const uint16 dsAddr_ideaMsg = 0x555d; // "That gives me an idea"
631 // Check Works Message : 0x5577 to 0x5599
632 const uint16 dsAddr_checkWorksMsg = 0x5577; // "Now I got to check if it works"
633 // Time To Call Message : 0x559a to 0x55bf
634 const uint16 dsAddr_timeToCallMsg = 0x559a; // "I think it is time to call captain"
635 // Meal Finished Message : 0x55c0 to 0x55da
636 const uint16 dsAddr_mealFinishedMsg = 0x55c0; // "Hey! I finished my meal."
637 // Bowl Welded Message : 0x55db to 0x55fe
638 const uint16 dsAddr_bowlWeldedMsg = 0x55db; // "Wow. He got welded to the bowl"
639 // Gotcha Message : 0x55ff to 0x5607
640 const uint16 dsAddr_gotchaMsg = 0x55ff; // "Gotcha"
641 // No Pocket Message : 0x5608 to 0x5631
642 const uint16 dsAddr_noPocketMsg = 0x5608; // "I don't want to touch his pockets again."
643 // Does Not Work Message : 0x5632 to 0x5645
644 const uint16 dsAddr_doesNotWorkMsg = 0x5632; // "That doesn't work"
645 // Message : 0x5646 to 0x5655
646 const uint16 dsAddr_fnMsg1 = 0x5646; // "Piece of cake"
647 // Message : 0x5656 to 0x5679
648 const uint16 dsAddr_fnMsg2 = 0x5656; // "And how am I supposed to get back?"
649 // Message : 0x567a to 0x5681
650 const uint16 dsAddr_fnMsg3 = 0x567a; // "Great"
651 // Message : 0x5682 to 0x5695
652 const uint16 dsAddr_fnMsg4 = 0x5682; // "Oh, yeah, right"
653 // Pull Object Message #1 : 0x5696 to 0x56ab
654 const uint16 dsAddr_pullObjMsg1 = 0x5696; // "I can't pull it out"
655 // Dont Want To Touch Message : 0x56ac to 0x56d9
656 const uint16 dsAddr_dontWantToTouchMsg = 0x56ac; // "I don't want to touch it - I might get hurt"
657 // Fence Blocks Message : 0x56da to 0x56f6
658 const uint16 dsAddr_fenceBlocksMsg = 0x56da; // "The fence blocks the way"
659 // Not Want To Sleep Message : 0x56f7 to 0x570e
660 const uint16 dsAddr_notWantToSleepMsg = 0x56f7; // "I don't want to sleep"
661 // Pull Object Message #2 : 0x570f to 0x5721
662 const uint16 dsAddr_pullObjMsg2 = 0x570f; // "I can't reach it"
663 // Hello Question Message : 0x5722 to 0x5729
664 const uint16 dsAddr_helloQMsg = 0x5722; // "Hello?"
665 // Totally Addicted Message : 0x572a to 0x5741
666 const uint16 dsAddr_totallyAddictedMsg = 0x572a; // "He's totally addicted"
667 // What About Message : 0x5742 to 0x5756
668 const uint16 dsAddr_whatAboutMsg = 0x5742; // "What about a new"
669 // Hot Off Message : 0x5757 to 0x576f
670 const uint16 dsAddr_hotOffMsg = 0x5757; // "hot off the press"
671 // Full Color Message : 0x5770 to 0x5781
672 const uint16 dsAddr_fullColorMsg = 0x5770; // "full-color"
673 // Special Edition Message : 0x5782 to 0x5798
674 const uint16 dsAddr_specialEdMsg = 0x5782; // "special edition"
675 // Soldier News Message : 0x5799 to 0x57b1
676 const uint16 dsAddr_soldierNewsMsg = 0x5799; // "of Soldier News?!"
677 // Pole Climb Done Message : 0x57b2 to 0x57bf
678 const uint16 dsAddr_poleClimbDoneMsg = 0x57b2; // "Never Again!"
679 // Vac Message : 0x57c0 to 0x57de
680 const uint16 dsAddr_vacMsg = 0x57c0; // "What am I? A vacuum cleaner?!"
681 // Cutscene Message #1 : 0x57df to 0x5809
682 const uint16 dsAddr_cutsceneMsg1 = 0x57df; // "sixty seven rude words later"
683 // Cutscene Message #2 : 0x580a to 0x5826
684 const uint16 dsAddr_cutsceneMsg2 = 0x580a; // "Meanwhile in the mansion"
685 // Now Open Message : 0x5827 to 0x5836
686 const uint16 dsAddr_nowOpenMsg = 0x5827; // "Now it's open"
687 // Cmon Baby Message : 0x5837 to 0x5854
688 const uint16 dsAddr_cmonBabyMsg = 0x5837; // "C'mon baby, it's all yours!"
689 // Talk Not Now Message : 0x5855 to 0x5882
690 const uint16 dsAddr_talkNotNowMsg = 0x5855; // "I've got no reason to talk to him right now."
691 // Yeah Right Message : 0x5883 to 0x5893
692 const uint16 dsAddr_yeahRightMsg = 0x5883; // "Yeah right!"
693 // Barman Too Close Message : 0x5894 to 0x58af
694 const uint16 dsAddr_barmanTooCloseMsg = 0x5894; // "The barman is too close"
695 // Yuck Message : 0x58b0 to 0x58b6
696 const uint16 dsAddr_yuckMsg = 0x58b0; // "Yuck!"
697 // Prefer Water Message : 0x58b7 to 0x58c7
698 const uint16 dsAddr_preferWaterMsg = 0x58b7; // "I prefer water"
699 // Too Weak To Climb Message : 0x58c8 to 0x58e2
700 const uint16 dsAddr_tooWeakToClimbMsg = 0x58c8; // "I'm too weak to climb it"
701 // Spring Prick Message : 0x58e3 to 0x5904
702 const uint16 dsAddr_springPrickMsg = 0x58e3; // "The springs would prick my back"
703 // Food Alive Message : 0x5905 to 0x592e
704 const uint16 dsAddr_foodAliveMsg = 0x5905; // "No, thanks. This food seems still alive"
705 // Door Closed Message : 0x592f to 0x5954
706 const uint16 dsAddr_doorClosedMsg = 0x592f; // "The door is closed. What a surprise."
707 // Empty Message : 0x5955 to 0x5961
708 const uint16 dsAddr_emptyMsg = 0x5955; // "It's Empty"
709 // Geography Class Message : 0x5962 to 0x599c
710 const uint16 dsAddr_geographyClassMsg = 0x5962; // "I should have paid more attention in geography classes."
711 // Don't Need Mess Message : 0x599d to 0x59b5
712 const uint16 dsAddr_dontNeedMessMsg = 0x599d; // "I don't need this mess"
713 // Seen Softer Rocks Message : 0x59b6 to 0x59da
714 const uint16 dsAddr_seenSofterRocksMsg = 0x59b6; // "Thanks, but I've seen softer rocks"
715 // Too Blunt Message : 0x59db to 0x5a00
716 const uint16 dsAddr_tooBluntMsg = 0x59db; // "They are too blunt to be of any use"
717 // Useless Models Message : 0x5a01 to 0x5a1f
718 const uint16 dsAddr_uselessModelsMsg = 0x5a01; // "What's the use of the models?"
719 // Barman Will Notice Message : 0x5a20 to 0x5a50
720 const uint16 dsAddr_barmanWillNoticeMsg = 0x5a20; // "The barman will surely notice its disappearing"
721 // Too Much To Drink Message : 0x5a51 to 0x5a95
722 const uint16 dsAddr_tooMuchToDrinkMsg = 0x5a51; // "It'd take too much time to drink it..."
723 // 0x5a96 to 0x5a97 : 2 extra null bytes (padding?)
724 // Not Thief Message : 0x5a98 to 0x5ac5
725 const uint16 dsAddr_notThiefMsg = 0x5a98; // "I'm not a thief. And it's empty, by the way."
726 // Too Many To Search Message : 0x5ac6 to 0x5aec
727 const uint16 dsAddr_tooManyToSearchMsg = 0x5ac6; // "There are too many of them to search"
728 // Captain Would Not Fit Message : 0x5aed to 0x5b26
729 const uint16 dsAddr_captainWouldNotFitMsg = 0x5aed; // "Captain surely wouldn't fit them. I must look elsewhere"
730 // Chickening Never Message : 0x5b27 to 0x5b3e
731 const uint16 dsAddr_chickenNeverMsg = 0x5b27; // "Chickening? Me? Never!"
732 // Can't Open It Message : 0x5b3f to 0x5b50
733 const uint16 dsAddr_cantOpenItMsg = 0x5b3f; // "I can't open it"
734 // Don't Need Them Message : 0x5b51 to 0x5b64
735 const uint16 dsAddr_dontNeedThemMsg = 0x5b51; // "I don't need them"
736 // Peeping Tom Message : 0x5b65 to 0x5b7f
737 const uint16 dsAddr_peepingTomMsg = 0x5b65; // "What am I? A Peeping Tom?"
738 // Big Pockets Message : 0x5b80 to 0x5baa
739 const uint16 dsAddr_bigPocketsMsg = 0x5b80; // "I have big pockets, but there are limits"
740 // Trouble With Stairs Message : 0x5bab to 0x5be6
741 const uint16 dsAddr_troubleWithStairsMsg = 0x5bab; // "If I put it on I might have trouble walking up the stairs"
742 // 9 Lives To Read Message : 0x5be7 to 0x5c0a
743 const uint16 dsAddr_9LivesToReadMsg = 0x5be7; // "I'd need 9 lives to read them all"
744 // Thanks Not Tired Message : 0x5c0b to 0x5c25
745 const uint16 dsAddr_thanksNotTiredMsg = 0x5c0b; // "Thanks, I'm not so tired"
746 // No Need To Turn On Message : 0x5c26 to 0x5c45
747 const uint16 dsAddr_noNeedToTurnOnMsg = 0x5c26; // "There's no need to turn it on"
748 // Won't Bear Weight Message : 0x5c46 to 0x5c5f
749 const uint16 dsAddr_wontBearWeightMsg = 0x5c46; // "It won't bear my weight"
750 // Never Learnt Message : 0x5c60 to 0x5c81
751 const uint16 dsAddr_neverLearntMsg = 0x5c60; // "I never learnt to how use one"
752 // So Sharp Message : 0x5c82 to 0x5cab
753 const uint16 dsAddr_soSharpMsg = 0x5c82; // "They're so sharp they'd rip my trousers!"
754 // Cognac Message : 0x5cac to 0x5cda
755 const uint16 dsAddr_cognacMsg = 0x5cac; // "Pfui! The cognac really didn't do any good"
756 // No Time For Pleasures Message : 0x5cdb to 0x5cfc
757 const uint16 dsAddr_noTimeForPleasuresMsg = 0x5cdb; // "I don't have time for pleasures"
758 // Not Socks With Bare Hands Message : 0x5cfd to 0x5d2b
759 const uint16 dsAddr_notSocksWithBareHandsMsg = 0x5cfd; // "I won't touch these socks with my bare hands!"
760 // Not Halloween Message : 0x5d2c to 0x5d40
761 const uint16 dsAddr_notHalloweenMsg = 0x5d2c; // "It's not Halloween"
762 // Not Manual Message : 0x5d41 to 0x5d6d
763 const uint16 dsAddr_NotManualMsg = 0x5d41; // "It can't be controlled manually! I hate it!"
764 // Nothing To Play Message : 0x5d6e to 0x5d86
765 const uint16 dsAddr_nothingToPlayMsg = 0x5d6e; // "I have nothing to play"
766 // Not Mine Message : 0x5d87 to 0x5da7
767 const uint16 dsAddr_notMineMsg = 0x5d87; // "I can't take it. It's not mine."
768 // Hey What's The Matter Message : 0x5da8 to 0x5dc1
769 const uint16 dsAddr_HeyWtmQMsg = 0x5da8; // "Hey! What's the matter?!"
770 // Its Open Message : 0x5dc2 to 0x5dcd
771 const uint16 dsAddr_ItsOpenMsg = 0x5dc2; // "It's Open!"
772 // Out Of Order Message : 0x5dce to 0x5de1
773 const uint16 dsAddr_outOfOrderMsg = 0x5dce; // "It's out of order"
774 // Captain Watching Message : 0x5de2 to 0x5e0a
775 const uint16 dsAddr_captainWatchingMsg = 0x5de2; // "with captain watching? Better not"
776 // Blunt Sickle Message : 0x5e0b to 0x5e24
777 const uint16 dsAddr_bluntSickleMsg = 0x5e0b; // "The sickle is too blunt"
778 // First Business Message : 0x5e25 to 0x5e53
779 const uint16 dsAddr_firstBusinessMsg = 0x5e25; // "First I've got some business to take care of"
780 // No Digging Knife Message : 0x5e54 to 0x5e8e
781 const uint16 dsAddr_noDiggingKnifeMsg = 0x5e54; // "Digging it out with the knife could take a hundred years"
782 
783 // FIXME - Where is this message used?! Unused?
784 // No Mess On Table Message : 0x5e8f to 0x5ebd
785 const uint16 dsAddr_noMessOnTableMsg = 0x5e8f; // "I don't want to make more mess on this table"
786 
787 // Throw Crumbs To Bird Question Message : 0x5ebe to 0x5ee5
788 const uint16 dsAddr_throwCrumbsToBirdQMsg = 0x5ebe; // "Should I throw the crumbs to the bird?"
789 // Don't Waste Crumbs Message : 0x5ee6 to 0x5f10
790 const uint16 dsAddr_dontWasteCrumbs = 0x5ee6; // "I don't want to waste these tasty crumbs"
791 // Might Slip Fall In Message : 0x5f11 to 0x5f3b
792 const uint16 dsAddr_mightSlipFallInMsg = 0x5f11; // "Better not... I might slip and fall in..."
793 // Book Color Message Address Pointers : (6 * 2-byte) = 0x5f3c to 0x5f47
794 const uint16 dsAddr_bookColorMsgPtr = 0x5f3c;
795 // Book Color Message #0 : 0x5f48 to 0x5f60
796 const uint16 dsAddr_bookColorMsg0 = 0x5f48; // ""The history of blues""
797 // Book Color Message #1 : 0x5f61 to 0x5f8f
798 const uint16 dsAddr_bookColorMsg1 = 0x5f61; // ""Manchester United, or the Red Devils story""
799 // Book Color Message #2 : 0x5f90 to 0x5fb5
800 const uint16 dsAddr_bookColorMsg2 = 0x5f90; // ""Greyhounds and other hunting dogs""
801 // Book Color Message #3 : 0x5fb6 to 0x5fe6
802 const uint16 dsAddr_bookColorMsg3 = 0x5fb6; // ""Greenhorn, or my adventures in the Wild West""
803 // Book Color Message #4 : 0x5fe7 to 0x6008
804 const uint16 dsAddr_bookColorMsg4 = 0x5fe7; // ""Charlie Brown and his company""
805 // Book Color Message #5 : 0x6009 to 0x6034
806 const uint16 dsAddr_bookColorMsg5 = 0x6009; // ""Pink Panther: an unauthorised biography""
807 
808 // Mansion Intrusion Function Pointers : (5 * 2-byte) = 0x6035 to 0x603e
809 const uint16 dsAddr_MansionIntrusionFnPtr = 0x6035;
810 
811 // Save State Region : 0x6478 to 0xdbf1
812 const uint16 dsAddr_saveState = 0x6478;
813 const uint16 saveStateSize = 0x777a;
814 
815 // Save Description String (24 bytes) : 0x6478 to 0x648f
816 
817 // Ego (Mark) position in scene : 0x64af to 0x64b2
818 const uint16 dsAddr_egoX = 0x64af; // 2 bytes
819 const uint16 dsAddr_egoY = 0x64b1; // 2 bytes
820 
821 // Idle Animation List Table : 0x6540 to 0x????
822 const uint16 dsAddr_idleAnimationListPtr = 0x6540;
823 
824 // Palette Effect Data : 0x6609 to 0x????
825 const uint16 dsAddr_paletteEffectData = 0x6609;
826 
827 // Scene Fade Table (2 byte address * 42): 0x663e to 0x6691
828 const uint16 dsAddr_sceneFadeTablePtr = 0x663e;
829 
830 // Scene Walkbox Table (2 byte LE address * 42) : 0x6746 to 0x6799
831 const uint16 dsAddr_sceneWalkboxTablePtr = 0x6746;
832 
833 // Scene Zoom Table (2 byte address * 42) : 0x70f4 to 0x7147
834 const uint16 dsAddr_sceneZoomTablePtr = 0x70f4;
835 
836 // Scene Object Table (2 byte address * 42) : 0x7254 to 0x72a7
837 const uint16 dsAddr_sceneObjectTablePtr = 0x7254;
838 
839 // Scene Object Name : Sonny or whatever : 0x92e5 to 0x92f6
840 const uint16 dsAddr_scnObjNameSonny = 0x92e5; // "Sonny or whatever"
841 
842 // Scene Object Name - Anne : 0x9820 to 0x9824
843 const uint16 dsAddr_scnObjNameAnne = 0x9820; // "Anne"
844 
845 // Scene Object Name - Mike : 0xaa94 to 0xaa98
846 const uint16 dsAddr_scnObjNameMike = 0xaa94; // "Mike"
847 
848 // Current Scene Id : 0xb4f3
849 const uint16 dsAddr_currentScene = 0xb4f3; // 1 byte
850 
851 // Ons Animation Table (2 byte address * ??) : 0xb4f5 to 0x????
852 const uint16 dsAddr_onsAnimationTablePtr = 0xb4f5;
853 
854 // Examine Object Callback Table (2 byte LE address * ??) : 0xb5ce to 0x????
855 const uint16 dsAddr_objExamineCallbackTablePtr = 0xb5ce;
856 
857 // Use Object Callback Table (2 byte LE address * ??) : 0xb89c to 0x????
858 const uint16 dsAddr_objUseCallbackTablePtr = 0xb89c;
859 
860 // Inventory Object Callback Table (3 byte (id, callbackAddr) * 7) : 0xbb72 to 0xbb86
861 const uint16 dsAddr_objCallbackTablePtr = 0xbb72;
862 // invItemToolboxFull = csAddr_openFullToolbox
863 // invItemToolboxHalfEmpty = csAddr_openHalfEmptyToolbox
864 // invItemDiveEquipment = csAddr_useDivingEquipment
865 // invItemShovelAct2 = csAddr_digMansionWall
866 // 0xff = csAddr_tooDarkHere // TODO: No object has id 0xff - Callback Disabled?
867 // invItemBanknote = csAddr_examineBanknote
868 // invItemTimePills = csAddr_useTimePills
869 
870 // Scene Hotspots Table (2 byte LE address * ??) : 0xbb87 to 0x????
871 const uint16 dsAddr_sceneHotspotsPtr = 0xbb87;
872 
873 // Inventory Object Combining Table (5 byte (id, id, new object id, msgAddr) * 34) : 0xc335 to 0xc3de
874 const uint16 dsAddr_objCombiningTablePtr = 0xc335;
875 // 3 byte null terminator for Combining table 0xc3df to 0xc3e1
876 
877 // Object Combine Error Message : 0xc3e2 to 0xc41e
878 const uint16 dsAddr_objCombineErrorMsg = 0xc3e2; // "Using these two objects ..."
879 
880 // Inventory (item ids held by Ego) (1 byte * 24) : 0xc48d to 0xc4a4
881 const uint16 dsAddr_inventory = 0xc48d;
882 // 0xc4a5 is null word alignment byte
883 // Inventory item data address table (2 bytes * 92) : 0xc4a6 to 0xc55d
884 const uint16 dsAddr_inventoryItemDataPtrTable = 0xc4a6;
885 
886 // Lans Animation Table (4 byte * ??) : 0xd89e to 0x????
887 const uint16 dsAddr_lansAnimationTablePtr = 0xd89e;
888 
889 // Spoken With Mansion Guard Flag : 0xda96
890 // FIXME - This is probably unnecessary as although this location is set, it
891 // doesn't now appear to be read.
892 const uint16 dsAddr_spokenWithMansionGuardFlag = 0xda96; // 1 byte
893 // Have Not Spoken With Mansion Guard Flag : 0xda97
894 // FIXME - This is probably unnecessary as although this location is set, it
895 // doesn't now appear to be read.
896 const uint16 dsAddr_haveNotSpokenWithMansionGuardFlag = 0xda97; // 1 byte
897 
898 // Dialog Stack - Pleading with Mansion Guard : 0xdaa6 to 0xdab1
899 const uint16 dsAddr_dialogStackPleadingToMansionGuard = 0xdaa6;
900 // Dialog Stack - Mansion Guard Drinking : 0xdab2 to 0xdab9
901 // FIXME - Can't find where this is used...
902 const uint16 dsAddr_dialogStackMansionGuardDrinking = 0xdab2;
903 // Dialog Stack - Talking To Sonny : 0xdaba to 0xdac3
904 const uint16 dsAddr_dialogStackSonny = 0xdaba;
905 // Dialog Stack - Talking To Grandpa : 0xdac4 to 0xdacd
906 const uint16 dsAddr_dialogStackGrandpa = 0xdac4;
907 // Cave Thorns Cut Down Flag : 0xdaca
908 // FIXME - Cave Thorns Flag overlap with dsAddr_dialogStackGrandpa. Bug or typo?
909 const uint16 dsAddr_caveThornsCutDownFlag = 0xdaca; // 1 byte
910 // Dialog Stack - Trying To Borrow Shotgun From Grandpa : 0xdace to 0xdad3
911 const uint16 dsAddr_dialogStackGrandpaShotgun = 0xdace;
912 // Dialog Stack - Trying To Borrow Fan From Grandpa : 0xdad4 to 0xdad9
913 const uint16 dsAddr_dialogStackGrandpaFan = 0xdad4;
914 // Dialog Stack - Ask Old Lady if OK : 0xdada to 0xdaef
915 const uint16 dsAddr_dialogStackAskOldLadyOK = 0xdada;
916 // Dialog Stack - Talking To Old Lady : 0xdaf0 to 0xdaf5
917 const uint16 dsAddr_dialogStackOldLady = 0xdaf0;
918 // Dialog Stack - Borrow Duster From Old Lady : 0xdaf6 to 0xdafb
919 const uint16 dsAddr_dialogStackBorrowDusterFromOldLady = 0xdaf6;
920 // Dialog Stack - Get Old Lady's Apple : 0xdafc to 0xdb01
921 const uint16 dsAddr_dialogStackGetAppleOldLady = 0xdafc;
922 // Dialog Stack - Giving Another Flower To Anne : 0xdb02 to 0xdb07
923 const uint16 dsAddr_dialogStackAnotherFlowerToAnne = 0xdb02;
924 // Dialog Stack - Talking To Squirrel : 0xdb08 to 0xdb13
925 const uint16 dsAddr_dialogStackSquirrel = 0xdb08;
926 // Dialog Stack - Talking To Dog : 0xdb14 to 0xdb1d
927 const uint16 dsAddr_dialogStackDog = 0xdb14;
928 // Dialog Stack - Take Axe : 0xdb1e to 0xdb23
929 const uint16 dsAddr_dialogStackTakeAxe = 0xdb1e;
930 // Dialog Stack - Talking To Busy Cook : 0xdb24 to 0xdb2d
931 const uint16 dsAddr_dialogStackBusyCook = 0xdb24;
932 // Dialog Stack - Talking To Mike the Robot Safe : 0xdb2e to 0xdb35
933 const uint16 dsAddr_dialogStackRobotSafe = 0xdb2e;
934 // Dialog Stack - Talking To John Noty At Endgame : 0xdb36 to 0xdb3f
935 const uint16 dsAddr_dialogStackJohnNotyEndgame = 0xdb36;
936 // Dialog Stack - Camp Guard Waiting For Documents : 0xdb40 to 0xdb4b
937 const uint16 dsAddr_dialogStackCampGuardWantsDocuments = 0xdb40;
938 // Dialog Stack - Camp Guard Reading Soldier News : 0xdb4c to 0xdb55
939 const uint16 dsAddr_dialogStackCampGuardReadingNews = 0xdb4c;
940 // Dialog Stack - Camp Guard Show Pass : 0xdb56 to 0xdb5b
941 const uint16 dsAddr_dialogStackCampGuardShowPass = 0xdb56;
942 // Dialog Stack - Jail Door Grates : 0xdb5c to 0xdb67
943 const uint16 dsAddr_dialogStackJailDoorGrates = 0xdb5c;
944 // Dialog Stack - Talking to Barman : 0xdb68 to 0xdb71
945 const uint16 dsAddr_dialogStackBarman = 0xdb68;
946 // Dialog Stack - Fall Into Mudpool : 0xdb72 to 0xdb79
947 const uint16 dsAddr_dialogStackFallIntoMudpool = 0xdb72;
948 // Dialog Stack - Talking To Mudpool Bird : 0xdb7a to 0xdb81
949 const uint16 dsAddr_dialogStackMudpoolBird = 0xdb7a;
950 // Dialog Stack - Interrogate Captain : 0xdb82 to 0xdb89
951 const uint16 dsAddr_dialogStackInterrogateCaptain = 0xdb82;
952 // Dialog Stack - Bar Cellar Door : 0xdb8a to 0xdb8f
953 const uint16 dsAddr_dialogStackBarCellarDoor = 0xdb8a;
954 // Current Music Id Playing : 0xdb90
955 const uint16 dsAddr_currentMusic = 0xdb90; // 1 byte
956 // Unused Byte : 0xdb91
957 // Already Adjusted Hoop Pole Flag : 0xdb92
958 const uint16 dsAddr_alreadyAdjustedHoopPoleFlag = 0xdb92; // 1 byte
959 // Already Kicked Hen Flag : 0xdb93
960 const uint16 dsAddr_alreadyKickedHenFlag = 0xdb93; // 1 byte
961 // Already Pulled Trunk Release Lever Flag : 0xdb94
962 const uint16 dsAddr_alreadyPulledTrunkReleaseLeverFlag = 0xdb94; // 1 byte
963 // Car Trunk Empty Flag : 0xdb95
964 const uint16 dsAddr_carTrunkEmptyFlag = 0xdb95; // 1 byte
965 // Birds Gone From Scarecrow Flag : 0xdb96
966 const uint16 dsAddr_birdsGoneFromScarecrowFlag = 0xdb96; // 1 byte
967 // Already Spoken To Anne Flag : 0xdb97
968 const uint16 dsAddr_alreadySpokenToAnneFlag = 0xdb97; // 1 byte
969 // Flower Isle in Lake State (0 = Both Flowers Present, 1 = One Flower Taken, 2+ = Both Flowers Taken): 0xdb98
970 const uint16 dsAddr_flowerIsleState = 0xdb98; // 1 byte
971 // Already Got Broken Paddle Flag : 0xdb99
972 const uint16 dsAddr_alreadyGotBrokenPaddleFlag = 0xdb99; // 1 byte
973 // Given Flower To OldLady Already Flag : 0xdb9a
974 const uint16 dsAddr_givenFlowerToOldLadyAlreadyFlag = 0xdb9a; // 1 byte
975 // Given Flower To Anne Already Flag : 0xdb9b
976 const uint16 dsAddr_givenFlowerToAnneAlreadyFlag = 0xdb9b; // 1 byte
977 // Scared Guard Already Flag : 0xdb9c
978 const uint16 dsAddr_scaredGuardAlreadyFlag = 0xdb9c; // 1 byte
979 // Got Needle Already Flag : 0xdb9d
980 const uint16 dsAddr_gotNeedleAlreadyFlag = 0xdb9d; // 1 byte
981 // Got Potato Already Flag : 0xdb9e
982 const uint16 dsAddr_gotPotatoAlreadyFlag = 0xdb9e; // 1 byte
983 // Bees Gone Flag : 0xdb9f
984 const uint16 dsAddr_beesGoneFlag = 0xdb9f; // 1 byte
985 // Mansion Already Been Through Tunnel Flag : 0xdba0
986 const uint16 dsAddr_mansionTunnelDoneFlag = 0xdba0; // 1 byte
987 // Mansion Tree Hollow Empty Flag : 0xdba1
988 const uint16 dsAddr_mansionTreeHollowEmptyFlag = 0xdba1; // 1 byte
989 // Climbed Mansion Tree Already Flag : 0xdba2
990 const uint16 dsAddr_climbedMansionTreeAlreadyFlag = 0xdba2; // 1 byte
991 // Cellar Door Open Flag : 0xdba3
992 const uint16 dsAddr_cellarDoorOpenFlag = 0xdba3; // 1 byte
993 // Cellar Light On Flag : 0xdba4
994 const uint16 dsAddr_lightOnFlag = 0xdba4; // 1 byte
995 // Laundry State (0 = Wet on Line, 1 = Dry on Line, 2 = Not Present): 0xdba5
996 const uint16 dsAddr_laundryState = 0xdba5; // 1 byte
997 // Lake Diving Exit Message (0 to 5+) : 0xdba6
998 const uint16 dsAddr_lakeDivingExitMessage = 0xdba6; // 1 byte
999 // Searched Grandpa Drawers Flag : 0xdba7
1000 const uint16 dsAddr_SearchedGrandpaDrawersFlag = 0xdba7; // 1 byte
1001 // Hankerchief in Mousehole Flag : 0xdba8
1002 const uint16 dsAddr_HankerchiefInMouseholeFlag = 0xdba8; // 1 byte
1003 // Mouse Hole State : 0xdba9, 0 = Mouse Gone, 1 = Mouse Trapped, 2 = Mouse Success(?)
1004 const uint16 dsAddr_mouseHoleState = 0xdba9; // 1 byte
1005 // Mouse Nerve Message Said Flag : 0xdbaa
1006 const uint16 dsAddr_mouseNerveMsgSaidFlag = 0xdbaa; // 1 byte
1007 // Mouse Already Got Gold Nugget Flag : 0xdbab
1008 const uint16 dsAddr_mouseGotGoldNuggetFlag = 0xdbab; // 1 byte
1009 // Unused Byte : 0xdbac
1010 // Dog Has Bone Flag : 0xdbad
1011 const uint16 dsAddr_dogHasBoneFlag = 0xdbad; // 1 byte
1012 // Ego Already Scared By Spider Flag : 0xdbae
1013 const uint16 dsAddr_egoAlreadyScaredBySpiderFlag = 0xdbae; // 1 byte
1014 // Already Said That Anne is Beautiful Flag : 0xdbaf
1015 const uint16 dsAddr_alreadySaidAnneBeautifulFlag = 0xdbaf; // 1 byte
1016 // Squirrel's Nut State (0 = Nut in Tree, 1 = Nut in Grass, 2 = Nut Found with Rake) : 0xdbb0
1017 const uint16 dsAddr_squirrelNutState = 0xdbb0; // 1 byte
1018 // Nut Swapped For Apple in Fruit Bowl Flag : 0xdbb1
1019 const uint16 dsAddr_nutSwappedForAppleFlag = 0xdbb1; // 1 byte
1020 // Spoken To Man In Well Flag : 0xdbb2
1021 const uint16 dsAddr_spokenToManInWellFlag = 0xdbb2; // 1 byte
1022 // Spoken To Mirror Flag : 0xdbb3
1023 const uint16 dsAddr_spokenToMirrorFlag = 0xdbb3; // 1 byte
1024 // Cellar Shelves Examine Count (0 to 2(clamped))) : 0xdbb4
1025 const uint16 dsAddr_cellarShelfExamineCount = 0xdbb4; // 1 byte
1026 // Examined Bank Note Flag : 0xdbb5
1027 const uint16 dsAddr_examinedBanknoteFlag = 0xdbb5; // 1 byte
1028 // VGA Artist Quip Already Said Flag : 0xdbb6
1029 const uint16 dsAddr_vgaArtistQuipAlreadySaidFlag = 0xdbb6; // 1 byte
1030 // Mansion Desk Blue Drawer Open Flag : 0xdbb7
1031 const uint16 dsAddr_blueDrawerOpenFlag = 0xdbb7; // 1 byte
1032 // Mansion Desk Red Drawer Open Flag : 0xdbb8
1033 const uint16 dsAddr_redDrawerOpenFlag = 0xdbb8; // 1 byte
1034 // Mansion Desk Grey Drawer Open Flag : 0xdbb9
1035 const uint16 dsAddr_greyDrawerOpenFlag = 0xdbb9; // 1 byte
1036 // Mansion Desk Green Drawer Open Flag : 0xdbba
1037 const uint16 dsAddr_greenDrawerOpenFlag = 0xdbba; // 1 byte
1038 // Mansion Desk Brown Drawer Open Flag : 0xdbbb
1039 const uint16 dsAddr_brownDrawerOpenFlag = 0xdbbb; // 1 byte
1040 // Mansion Desk Pink Drawer Open Flag : 0xdbbc
1041 const uint16 dsAddr_pinkDrawerOpenFlag = 0xdbbc; // 1 byte
1042 // Mansion Colored Drawer Puzzle Hint Message Given Flag : 0xdbbd
1043 const uint16 dsAddr_drawerPuzzleHintGivenFlag = 0xdbbd; // 1 byte
1044 // Mansion Colored Drawer Got Dictaphone Flag : 0xdbbe
1045 const uint16 dsAddr_drawerGotDictaphoneFlag = 0xdbbe; // 1 byte
1046 // Mansion Colored Drawer Got Polaroid Flag : 0xdbbf
1047 const uint16 dsAddr_drawerGotPolaroidFlag = 0xdbbf; // 1 byte
1048 // Mansion Colored Drawer Puzzle Book Message Flag : 0xdbc0
1049 const uint16 dsAddr_drawerPuzzleBookMessageFlag = 0xdbc0; // 1 byte
1050 // Mansion Colored Drawer Puzzle - Random Book Color Value (0 = No Book, 1 to 6 = Books) : 0xdbc1
1051 const uint16 dsAddr_drawerPuzzleBookValue = 0xdbc1; // 1 byte
1052 // Mansion Colored Drawer Puzzle Solved Flag : 0xdbc2
1053 const uint16 dsAddr_drawerPuzzleSolvedFlag = 0xdbc2; // 1 byte
1054 // Mansion Trashcan Searched Flag : 0xdbc3
1055 const uint16 dsAddr_mansionTrashcanSearchedFlag = 0xdbc3; // 1 byte
1056 // Mansion Read Newspaper Flag : 0xdbc4
1057 const uint16 dsAddr_mansionReadNewspaperFlag = 0xdbc4; // 1 byte
1058 // Mansion TV On Flag : 0xdbc5
1059 const uint16 dsAddr_mansionTVOnFlag = 0xdbc5; // 1 byte
1060 // Mansion VCR Playing Tape Flag : 0xdbc6
1061 const uint16 dsAddr_mansionVCRPlayingTapeFlag = 0xdbc6; // 1 byte
1062 // Mansion VCR Played Tape Before Flag : 0xdbc7
1063 const uint16 dsAddr_mansionVCRPlayedTapeBeforeFlag = 0xdbc7; // 1 byte
1064 // Mansion VCR Tape Loaded Flag : 0xdbc8
1065 const uint16 dsAddr_mansionVCRTapeLoadedFlag = 0xdbc8; // 1 byte
1066 // Mansion Examined Couch Before Flag : 0xdbc9
1067 const uint16 dsAddr_mansionExaminedCouchBeforeFlag = 0xdbc9; // 1 byte
1068 // Mansion Used Polaroid on TV Flag : 0xdbca
1069 const uint16 dsAddr_usedPolaroidOnTVFlag = 0xdbca; // 1 byte
1070 // Mansion Used Dictaphone on TV Flag : 0xdbcb
1071 const uint16 dsAddr_usedDictaphoneOnTVFlag = 0xdbcb; // 1 byte
1072 // Mansion Cook Gone Flag : 0xdbcc
1073 const uint16 dsAddr_MansionCookGoneFlag = 0xdbcc; // 1 byte
1074 // Mansion Radio Broken Flag : 0xdbcd
1075 const uint16 dsAddr_MansionRadioBrokenFlag = 0xdbcd; // 1 byte
1076 // Mansion Got Radio Batteries Flag : 0xdbce
1077 const uint16 dsAddr_MansionGotRadioBatteriesFlag = 0xdbce; // 1 byte
1078 // Mansion Have Opened Fridge Before Flag : 0xdbcf
1079 const uint16 dsAddr_MansionHaveOpenedFridgeBeforeFlag = 0xdbcf; // 1 byte
1080 // Mansion Put Burning Paper In Fridge Flag : 0xdbd0
1081 const uint16 dsAddr_MansionPutBurningPaperInFridgeFlag = 0xdbd0; // 1 byte
1082 // Mansion Robot Safe Unlocked Flag : 0xdbd1
1083 const uint16 dsAddr_MansionRobotSafeUnlockedFlag = 0xdbd1; // 1 byte
1084 // Mansion Robot Safe Voice Test Passed Flag : 0xdbd2
1085 const uint16 dsAddr_MansionRobotSafeVoiceTestPassedFlag = 0xdbd2; // 1 byte
1086 // Mansion Robot Safe Scent Test Passed Flag : 0xdbd3
1087 const uint16 dsAddr_MansionRobotSafeScentTestPassedFlag = 0xdbd3; // 1 byte
1088 // Mansion Robot Safe View Test Passed Flag : 0xdbd4
1089 const uint16 dsAddr_MansionRobotSafeViewTestPassedFlag = 0xdbd4; // 1 byte
1090 // Mansion John Noty Outside Bathroom Flag : 0xdbd5
1091 const uint16 dsAddr_MansionJohnNotyOutsideBathroomFlag = 0xdbd5; // 1 byte
1092 // Mansion Sink State (0 - No Plug, Sink Empty, 1 - Plug, Sink Empty, 2 - Plug, Sink Full) : 0xdbd6
1093 const uint16 dsAddr_MansionSinkState = 0xdbd6; // 1 byte
1094 // Mansion Through Fan By Time Pill Flag : 0xdbd7
1095 const uint16 dsAddr_MansionThruFanByTimePillFlag = 0xdbd7; // 1 byte
1096 // Mansion Ventilator Fan Stopped Flag : 0xdbd8
1097 const uint16 dsAddr_MansionVentFanStoppedFlag = 0xdbd8; // 1 byte
1098 // Mansion John Noty Escaping Flag : 0xdbd9
1099 const uint16 dsAddr_MansionJohnNotyEscapingFlag = 0xdbd9; // 1 byte
1100 // Shown Pass To Guard Flag : 0xdbda
1101 const uint16 dsAddr_ShownPassToGuardFlag = 0xdbda; // 1 byte
1102 // Graffiti Message Id (0 to 6) : 0xdbdb
1103 const uint16 dsAddr_graffitiMsgId = 0xdbdb; // 1 byte
1104 // Got Food Bowl in Jail Flag : 0xdbdc
1105 const uint16 dsAddr_GotFoodBowlInJailFlag = 0xdbdc; // 1 byte
1106 // Jail Cable and Bowl State (0 = Cable not in Bowl, 1 = Cable in Bowl, 2 = Bowl Electrified 3 = Captain Shocked) : 0xdbdd
1107 const uint16 dsAddr_JailCableAndBowlState = 0xdbdd; // 1 byte
1108 // Got Jail Key Flag : 0xdbde
1109 const uint16 dsAddr_GotJailKeyFlag = 0xdbde; // 1 byte
1110 // First Act Trial State (0 = Before First Trial, 1 to 3 = Trial 1st to 3rd) : 0xdbdf
1111 const uint16 dsAddr_FirstActTrialState = 0xdbdf; // 1 byte
1112 // Already Tickled Captain Flag : 0xdbe0
1113 const uint16 dsAddr_AlreadyTickledCaptainFlag = 0xdbe0; // 1 byte
1114 // Cut Fence Flag : 0xdbe1
1115 const uint16 dsAddr_cutFenceFlag = 0xdbe1; // 1 byte
1116 // Act 1 Guard State (0 = Normal, 1 = With Kaleidoscope & Grenade, 2 = Kaleidoscope & No Grenade) : 0xdbe2
1117 const uint16 dsAddr_act1GuardState = 0xdbe2; // 1 byte
1118 // Spoken to Barman About Third Trial Flag : 0xdbe3
1119 const uint16 dsAddr_spokeToBarmanAboutThirdTrialFlag = 0xdbe3; // 1 byte
1120 // Got Mug Of Mud Flag : 0xdbe4
1121 const uint16 dsAddr_gotMugOfMudFlag = 0xdbe4; // 1 byte
1122 // Got Rope In Act 1 Flag : 0xdbe5
1123 const uint16 dsAddr_gotRopeAct1Flag = 0xdbe5; // 1 byte
1124 // Captain Drawer State : 0xdbe6
1125 const uint16 dsAddr_captainDrawerState = 0xdbe6; // 1 byte
1126 // Bird on Bar Radio Antenna Flag : 0xdbe7
1127 const uint16 dsAddr_birdOnBarRadioAntennaFlag = 0xdbe7; // 1 byte
1128 // Swapped Barman Mug Flag : 0xdbe8
1129 const uint16 dsAddr_swappedBarmanMugFlag = 0xdbe8; // 1 byte
1130 // Barman Passed Out Flag : 0xdbe9
1131 const uint16 dsAddr_barmanPassedOutFlag = 0xdbe9; // 1 byte
1132 // Counter for Mansion Intrusion Attempts : 0xdbea
1133 const uint16 dsAddr_mansionEntryCount = 0xdbea;// 1 byte
1134 // Unused Byte : 0xdbeb
1135 // John Noty Outside Mansion Door Flag : 0xdbec
1136 const uint16 dsAddr_johnNotyOutsideMansionDoorFlag = 0xdbec; // 1 byte
1137 // Unused Byte : 0xdbed
1138 // Lovestruck By Anne Flag : 0xdbee
1139 const uint16 dsAddr_lovestruckByAnneFlag = 0xdbee;// 1 byte
1140 // Mansion Handle in Door Hole Flag : 0xdbef
1141 const uint16 dsAddr_mansionHandleInDoorHoleFlag = 0xdbef;// 1 byte
1142 // Got Password Need to Speak To Barman Flag : 0xdbf0
1143 const uint16 dsAddr_gotPasswordNeedSpeakBarmanFlag = 0xdbf0; // 1 byte
1144 // Mansion Already Used Time Pills Flag : 0xdbf1
1145 const uint16 dsAddr_mansionAlreadyUsedTimePillsFlag = 0xdbf1; // 1 byte
1146 
1147 // Intro Credits #1 : 0xe3c2 to 0xe3e5 (Read Only)
1148 const uint16 dsAddr_introCredits1 = 0xe3c2; // "backgrounds ..."
1149 // Intro Credits #2 : 0xe3e6 to 0xe3fe (Read Only)
1150 const uint16 dsAddr_introCredits2 = 0xe3e6; // "music ..."
1151 // Intro Credits #3 : 0xe3ff to 0xe42e (Read Only)
1152 const uint16 dsAddr_introCredits3 = 0xe3ff; // "animation..."
1153 // Intro Credits #4 : 0xe42f to 0xe45b (Read Only)
1154 const uint16 dsAddr_introCredits4 = 0xe42f; // "programming..."
1155 // Credits #5 : 0xe45c to 0xe47b (Read Only)
1156 const uint16 dsAddr_credits5 = 0xe45c; // "after the tiring journey..."
1157 // Final Credits #6 : 0xe47c to 0xe487 (Read Only)
1158 const uint16 dsAddr_finalCredits6 = 0xe47c; // "THE END..."
1159 // Final Credits #7 : 0xe488 to 0xe782 (Read Only)
1160 const uint16 dsAddr_finalCredits7 = 0xe488; // "programming..."
1161 // 0xe783 to 0xe78f: 13 null bytes at end of dseg data - segment alignment padding?
1162 
1163 class Resources {
1164 public:
1165  Resources();
1166  ~Resources();
1167  bool loadArchives(const ADGameDescription *gd);
1168 
1169  void loadOff(Graphics::Surface &surface, byte *palette, int id);
1170  Common::SeekableReadStream *loadLan(uint32 id) const;
1171  Common::SeekableReadStream *loadLan000(uint32 id) const;
1172 
1173  /*
1174  * PSP (as the other sony playstation consoles - to be confirmed and 'ifdef'ed here too)
1175  * is very sensitive to the number of simultaneously opened files.
1176  * This is an attempt to reduce their number to zero.
1177  * TransientFilePack does not keep opened file descriptors and reopens it on each request.
1178  */
1179 #ifdef __PSP__
1180  TransientFilePack off, on, ons, lan000, lan500, sam_mmm, sam_sam, mmm, voices;
1181 #else
1182  FilePack off, on, ons, lan000, lan500, sam_mmm, sam_sam, mmm, voices;
1183 #endif
1184 
1185  Segment dseg;
1186  Font font7, font8;
1187 
1188  //const byte *getDialog(uint16 dialogNum) { return eseg.ptr(dialogOffsets[dialogNum]); }
1189  uint16 getDialogAddr(uint16 dialogNum) { return dialogOffsets[dialogNum]; }
1190 
1191  Segment eseg;
1192 private:
1193  void precomputeDialogOffsets();
1194 
1195  Common::Array<uint16> dialogOffsets;
1196 };
1197 
1198 } // End of namespace TeenAgent
1199 
1200 #endif
Definition: segment.h:30
Definition: surface.h:67
Definition: advancedDetector.h:163
Definition: stream.h:745
Definition: resources.h:1163
FilePack keeps opened file and returns substream for each request.
Definition: pack.h:47
Definition: font.h:32
Definition: pack.h:66
Definition: actor.h:29