ScummVM API documentation
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
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 
25 namespace Asylum {
26 
28 // Global
30 enum 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 
283 enum 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 
305 enum 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 
334 typedef int ResourceId;
335 
336 enum ResourcesId {
337  kResourceInvalid = -1,
338  kResourceNone = 0
339 };
340 
341 #define kMusicStopped -666
342 
344 // Drawing
346 enum DrawFlags {
347  kDrawFlagNone = 0,
348  kDrawFlagMirrorLeftRight = 2
349 };
350 
352 // Actions
354 enum ActionType {
355  kActionTypeNone = 0,
356  kActionTypeFind = 1,
357  kActionTypeTalk = 2,
358  kActionTypeGrab = 4,
359  kActionType8 = 8,
360  kActionType16 = 16
361 };
362 
364 // Script
366 enum 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 
473 typedef int ActorIndex;
474 
475 enum 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 
484 enum 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 
509 enum 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 
522 enum ActorFlags {
523  kActorFlagVisible = 1,
524  kActorFlagMasked = 2
525 };
526 
527 enum DirectionFrom {
528  kDirectionFromObject = 0,
529  kDirectionFromPolygons = 1,
530  kDirectionFromActor = 2,
531  kDirectionFromParameters = 3
532 };
533 
535 // Object
537 enum 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 
830 enum 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
852 enum 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
875 enum 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
Definition: asylum.h:53