ScummVM API documentation
shared.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 ASYLUM_SHARED_H
23#define ASYLUM_SHARED_H
24
25namespace Asylum {
26
28// Global
30enum GameFlag {
31 kGameFlag0 = 0,
32
33 kGameFlag4 = 4,
34 kGameFlag12 = 12,
35 kGameFlag52 = 52,
36 kGameFlag86 = 86,
37 kGameFlag87 = 87,
38 kGameFlag88 = 88,
39 kGameFlagBrokenPipeSpraying = 96,
40 kGameFlagSmFtnOverflows = 97,
41 kGameFlagFountainFilling = 98,
42 kGameFlagSewerExplodes = 99,
43 kGameFlag114 = 114,
44 kGameFlag115 = 115,
45 kGameFlag128 = 128,
46 kGameFlag169 = 169,
47 kGameFlagScriptProcessing = 183,
48 kGameFlag186 = 186,
49 kGameFlagCommentLeavingCell = 214,
50 kGameFlag215 = 215,
51 kGameFlag219 = 219,
52 kGameFlagSolveVCRPuzzle = 220,
53 kGameFlag235 = 235,
54 kGameFlag238 = 238,
55 kGameFlag239 = 239,
56 kGameFlag243 = 243,
57 kGameFlag244 = 244,
58 kGameFlag245 = 245,
59 kGameFlag246 = 246,
60 kGameFlag247 = 247,
61 kGameFlag248 = 248,
62 kGameFlag249 = 249,
63 kGameFlag253 = 253,
64 kGameFlag254 = 254,
65 kGameFlag255 = 255,
66 kGameFlag256 = 256,
67 kGameFlag257 = 257,
68 kGameFlag258 = 258,
69 kGameFlag259 = 259,
70 kGameFlag260 = 260,
71 kGameFlag261 = 261,
72 kGameFlag262 = 262,
73 kGameFlag263 = 263,
74 kGameFlag264 = 264,
75 kGameFlag265 = 265,
76 kGameFlag266 = 266,
77 kGameFlag267 = 267,
78 kGameFlag268 = 268,
79 kGameFlag269 = 269,
80 kGameFlag270 = 270,
81 kGameFlag271 = 271,
82 kGameFlag272 = 272,
83 kGameFlag273 = 273,
84 kGameFlag274 = 274,
85 kGameFlag275 = 275,
86 kGameFlag276 = 276,
87 kGameFlag279 = 279,
88 kGameFlag281 = 281,
89 kGameFlag282 = 282,
90 kGameFlag283 = 283,
91 kGameFlag284 = 284,
92 kGameFlag289 = 289,
93 kGameFlag319 = 319,
94 kGameFlag320 = 320,
95 kGameFlag321 = 321,
96 kGameFlag322 = 322,
97 kGameFlag323 = 323,
98 kGameFlag353 = 353,
99 kGameFlag354 = 354,
100 kGameFlag355 = 355,
101 kGameFlag358 = 358,
102 kGameFlag368 = 368,
103 kGameFlag369 = 369,
104 kGameFlag370 = 370,
105 kGameFlag371 = 371,
106 kGameFlag384 = 384,
107 kGameFlag387 = 387,
108 kGameFlag391 = 391,
109 kGameFlag405 = 405,
110 kGameFlag423 = 423,
111 kGameFlag438 = 438,
112 kGameFlag439 = 439,
113 kGameFlag440 = 440,
114 kGameFlag441 = 441,
115 kGameFlag442 = 442,
116 kGameFlag447 = 447,
117 kGameFlag448 = 448,
118 kGameFlag450 = 450,
119 kGameFlag451 = 451,
120 kGameFlag452 = 452,
121 kGameFlag453 = 453,
122 kGameFlag454 = 454,
123 kGameFlag455 = 455,
124 kGameFlag470 = 470,
125 kGameFlag481 = 481,
126 kGameFlag511 = 511,
127 kGameFlag528 = 528,
128 kGameFlag543 = 543,
129 kGameFlag544 = 544,
130 kGameFlag545 = 545,
131 kGameFlag553 = 553,
132 kGameFlag556 = 556,
133 kGameFlag557 = 557,
134 kGameFlag558 = 558,
135 kGameFlag560 = 560,
136 kGameFlag561 = 561,
137 kGameFlag562 = 562,
138 kGameFlag563 = 563,
139 kGameFlag564 = 564,
140 kGameFlag565 = 565,
141 kGameFlag566 = 566,
142 kGameFlag567 = 567,
143 kGameFlag568 = 568,
144 kGameFlag569 = 569,
145 kGameFlag570 = 570,
146 kGameFlag572 = 572,
147 kGameFlag582 = 582,
148 kGameFlag583 = 583,
149 kGameFlag596 = 596,
150 kGameFlag597 = 597,
151 kGameFlag598 = 598,
152 kGameFlag599 = 599,
153 kGameFlag600 = 600,
154 kGameFlag608 = 608,
155 kGameFlag619 = 619,
156 kGameFlag635 = 635,
157 kGameFlag636 = 636,
158 kGameFlag637 = 637,
159 kGameFlagSolveHiveControl = 640,
160 kGameFlag684 = 684,
161 kGameFlag685 = 685,
162 kGameFlag686 = 686,
163 kGameFlag687 = 687,
164 kGameFlag688 = 688,
165 kGameFlag689 = 689,
166 kGameFlag690 = 690,
167 kGameFlag691 = 691,
168 kGameFlag692 = 692,
169 kGameFlag693 = 693,
170 kGameFlag694 = 694,
171 kGameFlag695 = 695,
172 kGameFlag696 = 696,
173 kGameFlag697 = 697,
174 kGameFlag698 = 698,
175 kGameFlag699 = 699,
176 kGameFlag700 = 700,
177 kGameFlag701 = 701,
178 kGameFlag702 = 702,
179 kGameFlag703 = 703,
180 kGameFlag704 = 704,
181 kGameFlag705 = 705,
182 kGameFlag706 = 706,
183 kGameFlag707 = 707,
184 kGameFlag708 = 708,
185 kGameFlag722 = 722,
186 kGameFlag723 = 723,
187 kGameFlag724 = 724,
188 kGameFlag725 = 725,
189 kGameFlag726 = 726,
190 kGameFlag727 = 727,
191 kGameFlag728 = 728,
192 kGameFlag729 = 729,
193 kGameFlag730 = 730,
194 kGameFlag759 = 759,
195 kGameFlag760 = 760,
196 kGameFlag761 = 761,
197 kGameFlag776 = 776,
198 kGameFlag790 = 790,
199 kGameFlag791 = 791,
200 kGameFlag792 = 792,
201 kGameFlag794 = 794,
202 kGameFlag795 = 795,
203 kGameFlag796 = 796,
204 kGameFlag797 = 797,
205 kGameFlag801 = 801,
206 kGameFlag802 = 802,
207 kGameFlag803 = 803,
208 kGameFlag804 = 804,
209 kGameFlag805 = 805,
210 kGameFlag806 = 806,
211 kGameFlag809 = 809,
212 kGameFlag810 = 810,
213 kGameFlag815 = 815,
214 kGameFlag816 = 816,
215 kGameFlag817 = 817,
216 kGameFlag818 = 818,
217 kGameFlag819 = 819,
218 kGameFlag820 = 820,
219 kGameFlag821 = 821,
220 kGameFlag822 = 822,
221 kGameFlag823 = 823,
222 kGameFlag824 = 824,
223 kGameFlag825 = 825,
224 kGameFlag826 = 826,
225 kGameFlag827 = 827,
226 kGameFlag828 = 828,
227 kGameFlag829 = 829,
228 kGameFlag830 = 830,
229 kGameFlagSolveHiveMachine = 834,
230 kGameFlag866 = 866,
231 kGameFlag875 = 875,
232 kGameFlag876 = 876,
233 kGameFlag877 = 877,
234 kGameFlag878 = 878,
235 kGameFlag879 = 879,
236 kGameFlag880 = 880,
237 kGameFlag881 = 881,
238 kGameFlag897 = 897,
239 kGameFlag899 = 899,
240 kGameFlagFinishGame = 901,
241 kGameFlag925 = 925,
242 kGameFlag937 = 937,
243 kGameFlag1009 = 1009,
244 kGameFlag1021 = 1021,
245 kGameFlag1022 = 1022,
246 kGameFlag1023 = 1023,
247 kGameFlag1054 = 1054,
248 kGameFlag1055 = 1055,
249 kGameFlag1056 = 1056,
250 kGameFlag1057 = 1057,
251 kGameFlag1058 = 1058,
252 kGameFlag1059 = 1059,
253 kGameFlag1060 = 1060,
254 kGameFlag1061 = 1061,
255 kGameFlag1062 = 1062,
256 kGameFlag1063 = 1063,
257 kGameFlag1064 = 1064,
258 kGameFlag1065 = 1065,
259 kGameFlag1066 = 1066,
260 kGameFlag1067 = 1067,
261 kGameFlag1099 = 1099,
262 kGameFlag1108 = 1108,
263 kGameFlag1121 = 1121,
264 kGameFlag1122 = 1122,
265 kGameFlag1131 = 1131,
266 kGameFlag1137 = 1137,
267 kGameFlag1144 = 1144,
268 kGameFlag3189 = 3189,
269 kGameFlag3351 = 3351,
270 kGameFlag3386 = 3386,
271 kGameFlag3387 = 3387,
272 kGameFlag3388 = 3388,
273 kGameFlag3389 = 3389,
274 kGameFlag3754 = 3754,
275 kGameFlag3755 = 3755,
276 kGameFlag3810 = 3810,
277 kGameFlag3823 = 3823,
278 kGameFlag3842 = 3842,
279 kGameFlag3843 = 3843,
280 kGameFlag3931 = 3931
281};
282
283enum ChapterIndex {
284 kChapterInvalid = -1,
285 kChapterNone = 0,
286 kChapter1,
287 kChapter2,
288 kChapter3,
289 kChapter4,
290 kChapter5,
291 kChapter6,
292 kChapter7,
293 kChapter8,
294 kChapter9,
295 kChapter10,
296 kChapter11,
297 kChapter12,
298 kChapter13
299};
300
302// Resources
304
305enum ResourcePackId {
306 kResourcePackText = 0,
307 kResourcePackShared = 1,
308 kResourcePackMusic = 2, // Special case: will load from mus* resources
309 kResourcePackSpeech = 3,
310 kResourcePackSharedSound = 4,
311 kResourcePackTowerCells = 5,
312 kResourcePackInnocentAbandoned = 6,
313 kResourcePackCourtyardAndChapel = 7,
314 kResourcePackCircusOfFools = 8,
315 kResourcePackLaboratory = 9,
316 kResourcePackHive = 10,
317 kResourcePackMorgueAndCemetery = 11,
318 kResourcePackLostVillage = 12,
319 kResourcePackGauntlet = 13,
320 kResourcePackMansion = 14,
321 kResourcePackCave = 15,
322 kResourcePackMaze = 16,
323 kResourcePackMorgansLastGame = 17,
324 kResourcePackSound = 18,
325 kResourcePack104 = 104,
326 kResourcePack204 = 204,
327 kResourcePack304 = 304,
328
329 kResourcePackInvalid = 0xFFF
330};
331
332#define MAKE_RESOURCE(pack, index) (ResourceId)((((pack) << 16) + 0x80000000) + (unsigned) (int32)(index))
333
334typedef int ResourceId;
335
336enum ResourcesId {
337 kResourceInvalid = -1,
338 kResourceNone = 0
339};
340
341#define kMusicStopped -666
342
344// Drawing
346enum DrawFlags {
347 kDrawFlagNone = 0,
348 kDrawFlagMirrorLeftRight = 2
349};
350
352// Actions
354enum ActionType {
355 kActionTypeNone = 0,
356 kActionTypeFind = 1,
357 kActionTypeTalk = 2,
358 kActionTypeGrab = 4,
359 kActionType8 = 8,
360 kActionType16 = 16
361};
362
364// Script
366enum OpcodeType {
367 kOpcodeReturn = 0,
368 kOpcodeSetGameFlag,
369 kOpcodeClearGameFlag,
370 kOpcodeToggleGameFlag,
371 kOpcodeJumpIfGameFlag,
372 kOpcodeHideCursor, // 5
373 kOpcodeShowCursor,
374 kOpcodePlayAnimation,
375 kOpcodeMoveScenePosition,
376 kOpcodeHideActor,
377 kOpcodeShowActor, // 10
378 kOpcodeSetActorPosition,
379 kOpcodeSetSceneMotionStatus,
380 kOpcodeDisableActor,
381 kOpcodeEnableActor,
382 kOpcodeEnableObjects, // 15
383 kOpcodeReturn1,
384 kOpcodeRemoveObject,
385 kOpcodeJumpActorSpeech,
386 kOpcodeJumpAndSetDirection,
387 kOpcodeJumpIfActorCoordinates, // 20
388 kOpcodeNop,
389 kOpcodeResetAnimation,
390 kOpcodeDisableObject,
391 kOpcodeJumpIfSoundPlayingAndPlaySound,
392 kOpcodeJumpIfActionFind, // 25
393 kOpcodeSetActionFind,
394 kOpcodeClearActionFind,
395 kOpcodeJumpIfActionGrab,
396 kOpcodeSetActionGrab,
397 kOpcodeClearActionGrab, // 30
398 kOpcodeJumpIfActionTalk,
399 kOpcodeSetActionTalk,
400 kOpcodeClearActionTalk,
401 kOpcodeAddToInventory,
402 kOpcodeRemoveFromInventory, // 35
403 kOpcodeJumpIfInventoryOmits,
404 kOpcodeRunEncounter,
405 kOpcodeJumpIfAction16,
406 kOpcodeSetAction16,
407 kOpcodeClearAction16, // 40
408 kOpcodeSelectInventoryItem,
409 kOpcodeJumpIfInventoryItemNotSelected,
410 kOpcodeChangeScene,
411 kOpcodeInteract,
412 kOpcodePlayMovie, // 45
413 kOpcodeStopAllObjectsSounds,
414 kOpcodeStopProcessing,
415 kOpcodeResumeProcessing,
416 kOpcodeResetSceneRect,
417 kOpcodeChangeMusicById, // 50
418 kOpcodeStopMusic,
419 kOpcodeIncrementParam1,
420 kOpcodeSetVolume,
421 kOpcodeJump,
422 kOpcodeRunPuzzle, // 55
423 kOpcodeJumpIfAction8,
424 kOpcodeSetAction8,
425 kOpcodeClearAction8,
426 kOpcodeCreatePalette,
427 kOpcodeIncrementParam2, // 60
428 kOpcodeWaitUntilFramePlayed,
429 kOpcodeUpdateWideScreen,
430 kOpcodeJumpIfActor,
431 kOpcodePlaySpeechScene,
432 kOpcodePlaySpeech, // 65
433 kOpcodePlaySpeechScene2,
434 kOpcodeMoveScenePositionFromActor,
435 kOpcodePaletteFade,
436 kOpcodeQueuePaletteFade,
437 kOpcodePlaySoundUpdateObject, // 70
438 kOpcodeActorFaceTarget,
439 kOpcodeHidMatteBars,
440 kOpcodeShowMatteBars,
441 kOpcodeJumpIfSoundPlaying,
442 kOpcodeChangePlayer, // 75
443 kOpcodeChangeActorStatus,
444 kOpcodeStopSound,
445 kOpcodeJumpRandom,
446 kOpcodeClearScreen,
447 kOpcodeQuit, // 80
448 kOpcodeJumpObjectFrame,
449 kOpcodeDeleteGraphics,
450 kOpcodeSetPlayerField944,
451 kOpcodeSetScriptField1BB0,
452 kOpcodeOnScriptField1BB0, // 85
453 kOpcodeWalkToActor,
454 kOpcodeSetResourcePalette,
455 kOpcodeSetObjectFrameIndexAndFlags,
456 kOpcodeSetObjectFlags,
457 kOpcodeSetActorActionIndex2, // 90
458 kOpcodeUpdateTransparency,
459 kOpcodeQueueScript,
460 kOpcodeProcessActor,
461 kOpcodeClearActorFields,
462 kOpcodeSetObjectLastFrameIndex, // 95
463 kOpcodeSetActionAreaFlags,
464 kOpcodeMorphActor,
465 kOpcodeShowMenu,
466 kOpcodeUpdateGlobalFlags
467};
468
470// Actor
472
473typedef int ActorIndex;
474
475enum ActorIndexes {
476 kActorInvalid = -1,
477 // TODO: check if the names match the actor type
478 kActorMax = 0,
479 kActorSarah = 1,
480 kActorCyclops = 2,
481 kActorAztec = 3
482};
483
484enum ActorStatus {
485 kActorStatusNone = 0,
486 kActorStatusWalking = 1, // Walking
487 kActorStatusWalkingTo, // Auto-walking to target
488 kActorStatusInteracting,
489 kActorStatusEnabled, // Standing Still
490 kActorStatusDisabled, // 5
491 kActorStatusShowingInventory,
492 kActorStatusStoppedInteracting,
493 kActorStatus8,
494 kActorStatusFidget,
495 kActorStatus10,
496 kActorStatus11,
497 kActorStatusWalking2,
498 kActorStatusWalkingTo2,
499 kActorStatusEnabled2,
500 kActorStatusAttacking, // 15
501 kActorStatusGettingHurt,
502 kActorStatusRestarting,
503 kActorStatus18,
504 kActorStatusHittingPumpkin,
505 kActorStatusStoppedHitting,
506 kActorStatusMorphingInto
507};
508
509enum ActorDirection {
510 kDirectionInvalid = -1,
511 kDirectionN = 0,
512 kDirectionNW = 1,
513 kDirectionW = 2,
514 kDirectionSW = 3,
515 kDirectionS = 4,
516 kDirectionSE = 5,
517 kDirectionE = 6,
518 kDirectionNE = 7,
519 kDirection8 = 8
520};
521
522enum ActorFlags {
523 kActorFlagVisible = 1,
524 kActorFlagMasked = 2
525};
526
527enum DirectionFrom {
528 kDirectionFromObject = 0,
529 kDirectionFromPolygons = 1,
530 kDirectionFromActor = 2,
531 kDirectionFromParameters = 3
532};
533
535// Object
537enum ObjectId {
538 kObjectInvalid = -1,
539 kObjectNone = 0,
540 kObjectHeadBanger = 101,
541 kObjectAngelFlares = 112,
542 kObjectTicaTac01 = 391,
543 kObjectGuyWobbles = 405,
544 kObjectGuyFalls = 434,
545 kObjectRocker = 441,
546 kObjectOpeningGate = 485,
547 kObjectTableRecordRoom = 659,
548 kObject703 = 703,
549 kObjectTree8 = 726,
550 kObjectSlab = 743,
551 kObjectDrMorgan = 801,
552 kObjectPreacherBobAssistant = 802,
553 kObjectPreacherBob = 803,
554 kObjectNPC024Church = 816,
555 kObjectNpc024TalkChurch = 817,
556 kObjectNpc024DanceAway = 820,
557 kObjectNpc024TalkFount = 824,
558 kObjectNPC024Fountain = 825,
559 kObjectNPC027Sit = 838,
560 kObjectNPC028Sit = 839,
561 kObjectNPC029Sit = 840,
562 kObjectNPC027Dancing = 844,
563 kObjectNPC028Dancing = 845,
564 kObjectNpc029Dancing = 846,
565 kObjectNPC026OutOfWay = 861,
566 kObjectNPC026Talking = 862,
567 kObjectNpc025Talking = 863,
568 kObjectNpc000Talking = 873,
569 kObjectOrangeRecord = 920,
570 kObjectNpc029Talk = 922,
571 kObjectNpc027Talk = 925,
572 kObjectNpc028Talk = 927,
573 kObjectJessieStatusQuo = 984,
574 kObjectMarty02 = 991,
575 kObjectEileenOnBench = 993,
576 kObject994 = 994,
577 kObjectFishingBoy = 1001,
578 kObjectDennisStatusQuo = 1011,
579 kObjectDennisTalk = 1012,
580 kObjectSailorBoy = 1013,
581 kObjectEleenOnGround = 1019,
582 kObjectSailorStatusQuo = 1021,
583 kObjectNPC026TalkStatusQuo = 1038,
584 kObjectDennisTalkHide = 1051,
585 kObjectDennisFoundSt = 1052,
586 kObjectBillyTalks = 1061,
587 kObjectJessieTalks = 1072,
588 kObjectSuckerTalks = 1082,
589 kObjectSuckerSittingStatusQuo = 1084,
590 kObjectBillyStatusUp = 1090,
591 kObjectJessieStatusWhileUp = 1091,
592 kObjectTalkToBallBoy = 1105,
593 kObjectIleanStatusFrame = 1125,
594 kObjectBubbles = 1185,
595 kObjectGlow = 1186,
596 kObjectDome = 1187,
597 kObjectRedLight = 1188,
598 kObjectRing = 1189,
599 kObjectBallMovesUpright = 1190,
600 kObjectGearsLightUp = 1191,
601 kObjectMarisStatusQuo = 1199,
602 kObjectMariaPointsLeft = 1200,
603 kObjectMariaPointsRight = 1201,
604 kObjectNPC032Sleeping = 1250,
605 kObjectNPC032StatusQuoOutside = 1254,
606 kObjectNpc032TalkOutside = 1255,
607 kObjectNPC032StatusQuoBigTop = 1256,
608 kObjectRingmasterTalkTent = 1257,
609 kObjectGlobe = 1261,
610 kObjectDrawers3 = 1276,
611 kObjectChalice = 1286,
612 kObjectFreezerHallInterior = 1337,
613 kObjectNPC033StartEnc = 1338,
614 kObjectNpc033Talking = 1339,
615 kObjectNpc033SqNoBook = 1341,
616 kObjectNPC033GetBook = 1343,
617 kObjectNPC033Reading = 1344,
618 kObjectBodyTalks = 1371,
619 kObjectBodyStat = 1373,
620 kObjectOldMan3 = 1377,
621 kObjectTattooingStrongMan = 1390,
622 kObjectTattooManStatusQuo = 1391, // NPC 34
623 kObjectTattooGuy034Talk = 1392,
624 kObjectStrongmanStatusQuo = 1402, // NPC 35
625 kObjectStrongman035Talk = 1403,
626 kObjectStrongmanStatusQuo2 = 1405, // NPC 35
627 kObjectInfernoStatusQuo = 1408, // NPC 36
628 kObjectInfernoTalk036 = 1409,
629 kObjectJugglerWithPin = 1423, // NPC 37
630 kObjectJuggler = 1424, // NPC 37
631 kObjectClown038Talk = 1427,
632 kObjectClownStatusQuo = 1428, // NPC 38
633 kObjectTrixieStatusQuo = 1432, // NPC 39
634 kObjectTrixie039Talk = 1433,
635 kObjectSimonStatusQuo = 1434, // NPC 40
636 kObjectSSimon040Talk = 1435,
637 kObjectBigTopBarrel = 1436,
638 kObjectFunTixStatusQuo = 1437, // NPC 44
639 kObjectStandBehindJuggler = 1438,
640 kObjectFreakTixStatusQuoUp = 1439, // NPC 45
641 kObjectFreakTixStatusQuoDown = 1440, // NPC 45
642 kObjectFortTellerStatusQuo = 1444, // NPC 45
643 kObjectStrongmanLeft = 1449, // NPC 35
644 kObjectStrongmanRight = 1450, // NPC 35
645 kObjectRingTossStatusQuo = 1451, // NPC 47
646 kObjectKnockDownStatusQuo = 1455, // NPC 47
647 kObjectPigShootStatusQuo = 1456, // NPC 47
648 kObjectPretzool048Talk = 1460,
649 kObjectPretZoolStatusQuo = 1461, // NPC 48
650 kObjectTimberStatusQuo = 1462, // NPC 49
651 kObjectTimber049Talk = 1463,
652 kObjectTwinsStatusQuo = 1465, // NPC 50
653 kObjectTwins050Talk = 1466,
654 kObjectSean051Talk = 1467,
655 kObjectSeanStatusQuo = 1468, // NPC 51
656 kObjectMom052Talk = 1469,
657 kObjectMomAndPopStatusQuo = 1470, // NPCs 52-53
658 kObjectPop053Talk = 1471,
659 kObjectCrow1FlysAway = 1485,
660 kObjectCrow1Pecks = 1486,
661 kObjectCrow2AmbientPecks = 1495,
662 kObjectCrow2FlysAway = 1500,
663 kObjectCrow3FlysAway = 1502,
664 kObjectCrow3Pecks = 1503,
665 kObjectCrow4FlysAway = 1506,
666 kObjectCrow4Pecks = 1507,
667 kObjectPumpkin1Loop = 1523,
668 kObjectPumpkin2Loop = 1524,
669 kObjectPumpkin3Loop = 1525,
670 kObjectPumpkin4Loop = 1526,
671 kObjectPumpkin5Loop = 1527,
672 kObjectPumpkin6Loop = 1528,
673 kObjectPumpkin7Loop = 1529,
674 kObjectPumpkin1Dies = 1530,
675 kObjectPumpkin2Dies = 1531,
676 kObjectPumpkin3Dies = 1532,
677 kObjectPumpkin4Dies = 1533,
678 kObjectPumpkin5Dies = 1534,
679 kObjectPumpkin6Dies = 1535,
680 kObjectPumpkin7Dies = 1536,
681 kObjectDennisStatus2 = 1580,
682 kObjectPreAlphaNut = 1582,
683 kObjectPreAlphaNut2 = 1584,
684 kObjectMotherTalking = 1587,
685 kObjectDeadMomFromOutside = 1589,
686 kObjectHeadOnTable = 1595,
687 kObjectNpc049Sq2 = 1658,
688 kObjectTreeTalks = 1671,
689 kObjectCave = 1763,
690 kObjectWitchDoctor = 1778,
691 kObjectWitchTalks = 1779,
692 kObjectStoneMaison = 1780,
693 kObjectStoneMaisonTalk = 1781,
694 kObjectStoneWifeStatuQuo = 1782,
695 kObjectStoneWifeTalks = 1783,
696 kObjectFishermanWidowStatusQuo = 1786,
697 kObjectFishermansWTalks = 1787,
698 kObjectOracleTalks = 1853,
699 kObjectOracleTalkStatus = 1854,
700 kObjectABarrier = 1899,
701 kObjectMonsterUp = 1956,
702 kObjectMonsterStatus = 1957,
703 kObjectMonsterDeath = 1958,
704 kObjectMonsterAttack = 1959,
705 kObjectPuke1 = 1960,
706 kObjectPuke2 = 1961,
707 kObjectPuke3 = 1962,
708 kObjectMonsterHurt = 1997,
709 kObjectBlinks = 2064,
710 kObjectWheel1 = 2113,
711 kObjectWheel2 = 2114,
712 kObjectWheel3 = 2115,
713 kObjectWheel4 = 2116,
714 kObjectWheel5 = 2117,
715 kObjectWheel6 = 2118,
716 kObjectWheel7 = 2119,
717 kObjectStoneMasonStatusHitt = 2123,
718 kObjectFlamingHeadLeftSide = 2129,
719 kObjectHook1B = 2131,
720 kObjectHook2B = 2132,
721 kObjectHook3B = 2133,
722 kObjectHook4B = 2134,
723 kObjectHook5B = 2135,
724 kObjectHook6B = 2136,
725 kObjectHook0Down = 2152,
726 kObjectHook2Down = 2154,
727 kObjectHook3Down = 2155,
728 kObjectHook4Down = 2156,
729 kObjectHook5Down = 2157,
730 kObjectHook6Down = 2158,
731 kObject2230 = 2230,
732 kObjectMotherTalkingSq = 2280,
733 kObjectGravinStatusQuoCyber = 2324,
734 kObjectGravinTalkCyber = 2325,
735 kObjectGravinSqGravins = 2327,
736 kObjectGravinTalkGravins = 2328,
737 kObjectGravinSqDoor = 2329,
738 kObjectGravinTalkDoor = 2330,
739 kObjectGravinSqGromnas = 2332,
740 kObjectGravinTalkGromnas = 2333,
741 kObjectGravinWorkMachine = 2337,
742 kObjectNPC062GritzaStatusQuo = 2399,
743 kObjectNpc062GritzaTalk = 2400,
744 kObjectNPC063GrundleStatusQuo = 2410,
745 kObjectNpc063GrundleTalk = 2411,
746 kObjectNPC064GrellaStatusQuo = 2418,
747 kObjectNpc064GrellaTalk = 2420,
748 kObjectSparkPuzzleLeft = 2427,
749 kObjectSparkPuzzleMiddle = 2429,
750 kObjectLavaBridge = 2445,
751 kObjectSparkPuzzleRight = 2451,
752 kObjectNpc065Talk = 2467,
753 kObjectNPC065StatusQuo = 2469,
754 kObjectFloorTrap1 = 2473,
755 kObjectFloorTrap2 = 2474,
756 kObjectFloorTrap3 = 2475,
757 kObjectFloorTrap4 = 2476,
758 kObjectFloorTrap5 = 2477,
759 kObjectGlow4 = 2478,
760 kObjectBugOnTable = 2480,
761 kObjectFloorTrap6 = 2481,
762 kObjectFloorTrap7 = 2482,
763 kObjectFloorTrap8 = 2483,
764 kObjectFloorTrap9 = 2484,
765 kObjectWadeThroughLava = 2500,
766 kObjectNPC066StatusQuo = 2504,
767 kObject2507 = 2507,
768 kObjectBrokenPipe = 2508,
769 kObjectBodySlides1 = 2514,
770 kObjectBodySlides2 = 2515,
771 kObjectBodySlides3 = 2516,
772 kObjectBodySlides4 = 2517,
773 kObjectBodySlides5 = 2518,
774 kObjectBodySlides6 = 2519,
775 kObjectEmberPopsOut = 2526,
776 kObjectBugCarriesEmber = 2527,
777 kObjectLittleGirlTalk = 2540,
778 kObjectGirlStatusQuo = 2541,
779 kObjectWitchWifeStirring = 2543,
780 kObjectWitchWifeTalking = 2546,
781 kObjectFurnaceHole = 2554,
782 kObjectInsidePipeCyberPod = 2555,
783 kObjectTopOfFurnace = 2566,
784 kObjectElderBugLimb = 2572,
785 kObjectQuetzlcaotlStatusQuo = 2578,
786 kObjectGhost1 = 2579,
787 kObjectGhost2 = 2580,
788 kObjectGhost3 = 2581,
789 kObjectGhost4 = 2582,
790 kObjectGhost5 = 2583,
791 kObjectGhost6 = 2584,
792 kObjectDiscardedBugPincer = 2587,
793 kObjectGong1 = 2590,
794 kObjectGong2 = 2591,
795 kObjectGong3 = 2592,
796 kObjectGong4 = 2593,
797 kObjectGong5 = 2594,
798 kObjectGong6 = 2596,
799 kObjectDeadShamanStill = 2604,
800 kObjectGhost2b = 2634,
801 kObjectJumpDown = 2648,
802 kObjectRitualLoop = 2674,
803 kObjectLine = 2859,
804 kObjectZapPattern1 = 2876,
805 kObjectZapPattern2 = 2877,
806 kObjectZapPattern3 = 2878,
807 kObjectBlanklPixelForWarrior = 2884,
808 kObjectPixelForHutWarrior = 2885,
809 kObjectPixelForWaterfallGhost = 2886,
810 kObjectPixelForQueztza = 2891,
811 kObjectZapPattern4 = 2892,
812 kObjectZapPattern5 = 2893,
813 kObjectZapPattern6 = 2894,
814 kObjectZapPattern7 = 2895,
815 kObjectZapPattern8 = 2896,
816 kObjectZapPattern9 = 2897,
817 kObjectObituary = 2990,
818 kObjectCarolsDiary = 2992,
819 kObjectTrixieSq2 = 3002,
820 kObjectSimonSq2 = 3003,
821 kObjectEileenTalkingWithShove = 3011,
822 kObjectStqEileenTalkWithShov = 3016,
823 kObjectLitLimbScanner = 3061,
824 kObjectOfficeWallNew = 3062,
825 kObjectCyberTable = 3065,
826
827 kObjectEnd
828};
829
830enum ObjectFlag {
831 kObjectFlagEnabled = 0x1,
832 kObjectFlag2 = 0x2,
833 kObjectFlag4 = 0x4,
834 kObjectFlag6 = 0x6,
835 kObjectFlag8 = 0x8,
836 kObjectFlag10 = 0x10,
837 kObjectFlag20 = 0x20,
838 kObjectFlag40 = 0x40,
839 kObjectFlag80 = 0x80,
840 kObjectFlagBF = 0xBF,
841 kObjectFlag1000 = 0x1000,
842 kObjectFlagC000 = 0xC000,
843 kObjectFlag10000 = 0x10000,
844 kObjectFlag10E38 = 0x10E38,
845 kObjectFlag20000 = 0x20000,
846 kObjectFlag40000 = 0x40000
847};
848
850// Puzzles
852enum PuzzleId {
853 kPuzzleVCR = 0,
854 kPuzzlePipes,
855 kPuzzleTicTacToe,
856 kPuzzleLock,
857 kPuzzle4,
858 kPuzzleWheel, // 5
859 kPuzzleBoardSalvation,
860 kPuzzleBoardYouth,
861 kPuzzleBoardKeyHidesTo,
862 kPuzzleWritings,
863 kPuzzle11, // 10
864 kPuzzleMorgueDoor,
865 kPuzzleClock,
866 kPuzzleTimeMachine,
867 kPuzzleFisherman,
868 kPuzzleHiveMachine, // 15
869 kPuzzleHiveControl
870};
871
873// Custom engine actions
875enum AsylumAction {
876 kAsylumActionShowVersion,
877 kAsylumActionQuickLoad,
878 kAsylumActionQuickSave,
879 kAsylumActionSwitchToSarah,
880 kAsylumActionSwitchToGrimwall,
881 kAsylumActionSwitchToOlmec,
882 kAsylumActionOpenInventory,
883 kAsylumActionShowMenu,
884 kAsylumActionMoveUp,
885 kAsylumActionMoveDown,
886 kAsylumActionMoveRight,
887 kAsylumActionMoveLeft,
888 kAsylumActionNextResource,
889 kAsylumActionPreviousResource,
890 kAsylumActionNextPalette,
891 kAsylumActionPreviousPalette,
892 kAsylumActionAnimate
893};
894
896// Helpers
898#define CLEAR_ARRAY(type, name) { \
899 for (Common::Array<type *>::iterator it = name.begin(); it != name.end(); it++) {\
900 delete *it; \
901 *it = NULL; \
902 } \
903 name.clear(); \
904}
905
907// Macros
909
910// Misc
911#define rnd(val) _vm->getRandom(val)
912
913// Engine subclasses
914#define getEncounter() _vm->encounter()
915#define getCursor() _vm->cursor()
916#define getMenu() _vm->menu()
917#define getPuzzles() _vm->puzzles()
918#define getReaction() _vm->reaction()
919#define getResource() _vm->resource()
920#define getSound() _vm->sound()
921#define getSaveLoad() _vm->savegame()
922#define getScene() _vm->scene()
923#define getScreen() _vm->screen()
924#define getScript() _vm->script()
925#define getSharedData() _vm->data()
926#define getSpecial() _vm->special()
927#define getSpeech() _vm->speech()
928#define getText() _vm->text()
929#define getVideo() _vm->video()
930#define getWorld() _vm->scene()->worldstats()
931
933// Sub-integer partial access macros
935#if defined SCUMM_LITTLE_ENDIAN
936#define LOBYTE(d) (*((char *)&(d)))
937#define BYTE1(d) (*((char *)&(d) + 1)) // Same as HIBYTE()
938#elif defined SCUMM_BIG_ENDIAN
939#define LOBYTE(d) (*((char *)&(d) + sizeof(d) - 1))
940#define BYTE1(d) (*((char *)&(d) + sizeof(d) - 2))
941#endif
942
944// Resource ID macros
946#define RESOURCE_PACK(id) (ResourcePackId)((((uint32)id) >> 16) & 0x7FFF)
947#define RESOURCE_INDEX(id) (uint16)(id)
948
949} // End of namespace Asylum
950
951#endif // ASYLUM_SHARED_H