ScummVM API documentation
global_flags.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  * Additional copyright for this file:
8  * Copyright (C) 1995 Presto Studios, Inc.
9  *
10  * This program is free software: you can redistribute it and/or modify
11  * it under the terms of the GNU General Public License as published by
12  * the Free Software Foundation, either version 3 of the License, or
13  * (at your option) any later version.
14 
15  * This program is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18  * GNU General Public License for more details.
19 
20  * You should have received a copy of the GNU General Public License
21  * along with this program. If not, see <http://www.gnu.org/licenses/>.
22  *
23  */
24 
25 #ifndef BURIED_GLOBAL_FLAGS_H
26 #define BURIED_GLOBAL_FLAGS_H
27 
28 #include "common/scummsys.h"
29 
30 namespace Buried {
31 
32 // This is the struct that holds all the global variables for the game
33 // Originally, it was just a 1024 byte block of data with offsets into it
34 
35 struct GlobalFlags {
36  byte cgWallExploded; // 0
37  byte cgHookPresent; // 1
38  byte cgArrowPresent; // 2
39  byte cgHammerPresent; // 3
40  byte cgSmithyStatus; // 4
41  byte cgSmithyGuard; // 5
42  byte cgBaileyOneWayGuard; // 6
43  byte cgBaileyTwoWayGuards; // 7
44  byte cgTapestryFlag; // 8
45  byte cgBurnedLetterPresent; // 9
46  byte cgGoldCoinsPresent; // 10
47  byte cgStorageRoomVisit; // 11
48  byte bcTranslateEnabled; // 12
49  byte bcCloakingEnabled; // 13
50  byte bcLocateEnabled; // 14
51  byte myPickedUpCeramicBowl; // 15
52  byte myTPCodeWheelStatus; // 16
53  byte myTPCodeWheelLeftIndex; // 17
54  byte myTPCodeWheelRightIndex; // 18
55  byte myMCPickedUpSkull; // 19
56  byte myMCDeathGodOfferings; // 20
57  byte myWGPlacedRope; // 21
58  byte myWGRetrievedJadeBlock; // 22
59  byte myWTRetrievedLimestoneBlock; // 23
60  byte myWTCurrentBridgeStatus; // 24
61  byte myAGRetrievedEntrySkull; // 25
62  byte myAGRetrievedSpearSkull; // 26
63  byte myAGRetrievedCopperMedal; // 27
64  byte myAGRetrievedObsidianBlock; // 28
65  byte myAGHeadAStatus; // 29
66  byte myAGHeadBStatus; // 30
67  byte myAGHeadCStatus; // 31
68  byte myAGHeadDStatus; // 32
69  byte myAGHeadAStatusSkullID; // 33
70  byte myAGHeadBStatusSkullID; // 34
71  byte myAGHeadCStatusSkullID; // 35
72  byte myAGHeadDStatusSkullID; // 36
73  byte myAGTimerHeadID; // 37
74  uint32 myAGTimerStartTime; // 38-41
75  byte myDGOfferedHeart; // 42
76  byte takenEnvironCart; // 43
77  byte alRDTakenLiveCore; // 44
78  byte alRDTakenDeadCore; // 45
79  byte alNMWrongAlienPrefixCode; // 46
80  byte faKIOvenStatus; // 47
81  byte faKIPostBoxSlotA; // 48
82  byte faKIPostBoxSlotB; // 49
83  byte faKIPostBoxSlotC; // 50
84  byte faERCurrentCartridge; // 51
85  byte faERTakenRemoteControl; // 52
86  byte myMCStingerID; // 53
87  byte myMCStingerChannelID; // 54
88  byte faStingerID; // 55
89  byte faStingerChannelID; // 56
90  uint16 curItem; // ScummVM enhancement, originally unused bytes 57-58
91  byte unused0; // 59
92  uint32 cgMWCatapultData; // 60-63
93  uint32 cgMWCatapultOffset; // 64-67
94  byte cgTSTriedDoor; // 68
95  byte cgMBCrossedMoat; // 69
96  byte cgKSSmithyEntryRead; // 70
97  byte cgKSSmithyEntryTranslated; // 71
98  byte cgBSFoundMold; // 72
99  byte readBurnedLetter; // 73
100  byte evcapNumCaptured; // 74
101  byte evcapBaseID[12]; // 75-86
102  byte unused1[3]; // 87-89
103  byte faMNEnvironDoor; // 90
104  byte faMNClockClicked; // 91
105  byte faMNBooksClicked; // 92
106  byte faMNTazClicked; // 93
107  byte faMNPongClicked; // 94
108  byte faKIBirdsBobbed; // 95
109  byte faKICoffeeSpilled; // 96
110  byte cgViewedKeepPlans; // 97
111  byte cgFoundChestPanel; // 98
112  byte cgTRFoundSword; // 99
113  byte faHeardAgentFigure; // 100
114  byte jumpBCNoInfoMessageCycle; // 101
115  byte myTPCalendarTopTranslated; // 102
116  byte myTPCalendarListTranslated; // 103
117  byte myTPTextTranslated; // 104
118  byte myMCTransDoor; // 105
119  byte myMCTransAGOffering; // 106
120  byte myMCTransWGOffering; // 107
121  byte myMCTransWTOffering; // 108
122  byte myMCTransDGOffering; // 109
123  byte myMCTransMadeAnOffering; // 110
124  byte myWGTransDoorTop; // 111
125  byte myWGSeenLowerPassage; // 112
126  byte myWGCrossedRopeBridge; // 113
127  byte myMCViewedDeathGodDoor; // 114
128  byte myTPTransBreathOfItzamna; // 115
129  uint32 myAGHeadAOpenedTime; // 116-119
130  uint32 myAGHeadBOpenedTime; // 120-123
131  uint32 myAGHeadCOpenedTime; // 124-127
132  uint32 myAGHeadDOpenedTime; // 128-131
133  byte myAGHeadATouched; // 132
134  byte myAGHeadBTouched; // 133
135  byte myAGHeadCTouched; // 134
136  byte myAGHeadDTouched; // 135
137  byte lensFilterActivated; // 136
138  byte dsPTElevatorPresent; // 137
139  byte dsPTElevatorLeverA; // 138
140  byte dsPTElevatorLeverB; // 139
141  byte dsPTDoorLocked; // 140
142  byte dsWSPickedUpWheelAssembly; // 141
143  byte dsWSPickedUpGearAssembly; // 142
144  byte dsWSPickedUpPegs; // 143
145  byte dsWSSiegeCycleStatus; // 144
146  byte dsWSGrabbedSiegeCycle; // 145
147  byte dsPTUseElevatorControls; // 146
148  byte dsPTTransElevatorControls; // 147
149  byte dsGDTakenCoilOfRope; // 148
150  byte dsCTUnlockedDoor; // 149
151  byte dsCTViewedAgent3; // 150
152  byte dsPTViewedAgent3; // 151
153  byte dsCTRetrievedLens; // 152
154  byte dsCTTakenHeart; // 153
155  byte dsCYFiredCannon; // 154
156  byte dsCYBallistaStatus; // 155
157  byte dsCYPlacedSiegeCycle; // 156
158  byte dsCYBallistaXPos; // 157
159  byte dsCYBallistaYPos; // 158
160  byte aiHWStingerID; // 159
161  byte aiHWStingerChannelID; // 160
162  byte aiCRStingerID; // 161
163  byte aiCRStingerChannelID; // 162
164  byte aiDBStingerID; // 163
165  byte aiDBStingerChannelID; // 164
166  byte aiCRGrabbedMetalBar; // 165
167  byte aiICGrabbedWaterCanister; // 166
168  byte aiOxygenTimer; // 167
169  byte aiCRPressurized; // 168
170  byte aiCRPressurizedAttempted; // 169
171  byte aiMRPressurized; // 170
172  byte aiIceMined; // 171
173  byte aiOxygenReserves; // 172
174  byte aiSCHeardInitialSpeech; // 173
175  byte aiSCInitialAudioChannel; // 174
176  byte aiSCDBDoorWarning; // 175
177  byte aiSCMoveCenterWarning; // 176
178  byte aiSCConversationStatus; // 177
179  byte aiHWIceDoorUnlocked; // 178
180  byte aiICWaterInFillHandle; // 179
181  byte aiICTakenWaterCanister; // 180
182  byte aiSWStingerID; // 181
183  byte aiSWStingerChannelID; // 182
184  byte aiMRCorrectFreqSet; // 183
185  byte aiSCHeardNexusDoorComment; // 184
186  byte aiSCHeardNexusDoorCode; // 185
187  byte asInitialGuardsPass; // 186
188  byte asRBPodAStatus; // 187
189  byte asRBPodBStatus; // 188
190  byte asRBPodCStatus; // 189
191  byte asRBPodDStatus; // 190
192  byte asRBPodEStatus; // 191
193  byte asRBPodFStatus; // 192
194  byte asRBPodATakenEnvironCart; // 193
195  byte asRBPodBTakenPuzzleBox; // 194
196  byte asRBPodCTakenCodex; // 195
197  byte asRBPodDTakenSculpture; // 196
198  byte asRBPodETakenSword; // 197
199  byte asTakenEvidenceThisTrip; // 198
200  byte asDangerDoorASealed; // 199
201  byte asDoorBGuardsSeen; // 200
202  byte asAmbassadorEncounter; // 201
203  byte dsCTTriedLockedDoor; // 202
204  byte dsCTCodexTranslateAttempted; // 203
205  byte dsCTCodexFormulaeFound; // 204
206  byte dsCTCodexAtlanticusPage2; // 205
207  byte dsCTTriedElevatorControls; // 206
208  byte aiDBPlayedMomComment; // 207
209  byte aiDBPlayedFirstArthur; // 208
210  byte aiDBPlayedSecondArthur; // 209
211  byte aiDBPlayedThirdArthur; // 210
212  byte aiDBPlayedFourthArthur; // 211
213  byte aiSCPlayedNoStinger; // 212
214  byte faKITakenPostboxItem; // 213
215  byte cgMBVisited; // 214
216  byte cgKCVisited; // 215
217  byte cgTRVisited; // 216
218  byte cgKSReadJournal; // 217
219  byte cgSRClickedOnLockedChest; // 218
220  byte cgSROpenedChest; // 219
221  byte dsVisitedCodexTower; // 220
222  byte dsPTRaisedPlatform; // 221
223  byte dsPTWalkedDownElevator; // 222
224  byte dsPTBeenOnBalcony; // 223
225  byte dsGDClickedOnCodexDoor; // 224
226  byte dsWSSeenCycleSketch; // 225
227  byte dsWSSeenBallistaSketch; // 226
228  byte genHadSiegeCycle; // 227
229  byte genHadDriveAssembly; // 228
230  byte genHadWheelAssembly; // 229
231  byte dsCYNeverConnectedHook; // 230
232  byte dsCYNeverShotBallista; // 231
233  byte dsCYNeverUsedCrank; // 232
234  byte dsCYNeverOpenedBalconyDoor; // 233
235  byte dsCYTranslatedCodex; // 234
236  byte dsCYTriedOpeningDoor; // 235
237  byte dsCYTriedElevator; // 236
238  byte dsCYFoundCodexes; // 237
239  byte myVisitedMainCavern; // 238
240  byte myVisitedArrowGod; // 239
241  byte myVisitedWaterGod; // 240
242  byte myVisitedWealthGod; // 241
243  byte myVisitedDeathGod; // 242
244  byte myVisitedSpecRooms; // 243
245  byte myWTSteppedOnSwings; // 244
246  byte myWTSteppedOnFarLedge; // 245
247  byte myDGOpenedPuzzleBox; // 246
248  byte myAGVisitedAltar; // 247
249  byte dsCTPlayedBallistaFalling; // 248
250  byte cgTSTriedDoorA; // 249
251  byte cgTSTriedDoorB; // 250
252  byte aiHWLastCommentPlayed; // 251
253  byte aiNXPlayedBrainComment; // 252
254  byte asRBLastStingerID; // 253
255  byte asRBStingerID; // 254
256  byte aiICProcessedOxygen; // 255
257  byte dsCYWeebleClicked; // 256
258  byte aiICUsedMiningControls; // 257
259  byte aiSWAttemptedPresMR; // 258
260  byte aiICRefilledOxygen; // 259
261  byte aiMRUsedHarmonicsInterface; // 260
262  byte alRestoreSkipAgent3Initial; // 261
263  byte unused2[38]; // 262-299
264  byte scoreGotTranslateBioChip; // 300
265  byte scoreEnteredSpaceStation; // 301
266  byte scoreDownloadedArthur; // 302
267  byte scoreFoundSculptureDiagram; // 303
268  byte scoreEnteredKeep; // 304
269  byte scoreGotKeyFromSmithy; // 305
270  byte scoreEnteredTreasureRoom; // 306
271  byte scoreFoundSwordDiamond; // 307
272  byte scoreMadeSiegeCycle; // 308
273  byte scoreEnteredCodexTower; // 309
274  byte scoreLoggedCodexEvidence; // 310
275  byte scoreEnteredMainCavern; // 311
276  byte scoreGotWealthGodPiece; // 312
277  byte scoreGotRainGodPiece; // 313
278  byte scoreGotWarGodPiece; // 314
279  byte scoreCompletedDeathGod; // 315
280  byte scoreEliminatedAgent3; // 316
281  byte scoreTransportToKrynn; // 317
282  byte scoreGotKrynnArtifacts; // 318
283  byte scoreDefeatedIcarus; // 319
284 
285  // This data was modified between 1.01 and 1.03, without changing
286  // the saved game version field just to add the Louvre research
287  // boolean. The 1.01 offsets are in parentheses.
288  byte scoreResearchINNLouvreReport; // 320 (---)
289  byte scoreResearchINNHighBidder; // 321 (320)
290  byte scoreResearchINNAppeal; // 322 (321)
291  byte scoreResearchINNUpdate; // 323 (322)
292  byte scoreResearchINNJumpsuit; // 324 (323)
293  byte scoreResearchBCJumpsuit; // 325 (324)
294  byte scoreResearchMichelle; // 326 (325)
295  byte scoreResearchMichelleBkg; // 327 (326)
296  byte scoreResearchLensFilter; // 328 (327)
297  byte scoreResearchCastleFootprint; // 329 (328)
298  byte scoreResearchDaVinciFootprint; // 330 (329)
299  byte scoreResearchMorphSculpture; // 331 (330)
300  byte scoreResearchEnvironCart; // 332 (331)
301  byte scoreResearchAgent3Note; // 333 (332)
302  byte scoreResearchAgent3DaVinci; // 334 (333)
303  uint16 scoreHintsTotal; // 335-336 (334-335)
304  byte unused3[53]; // 337-389 (336-389)
305 
306  byte genJumpCastleBriefing; // 390
307  byte genJumpMayanBriefing; // 391
308  byte genJumpDaVinciBriefing; // 392
309  byte genJumpStationBriefing; // 393
310  byte unused4[106]; // 394-499
311  byte generalWalkthroughMode; // 500
312  byte unused5[11]; // 501-511
313  byte aiData[512]; // 512-1023
314 };
315 
316 enum {
317  kAIHWStartingValue = 100,
318  kAIICStartingValue = 100,
319  kAIOTWalkDecrement = 2,
320  kAIOTTurnDecrement = 1,
321  kAIOTWaitDecrement = 1,
322  kAIOTWaitTimePeriod = 10000
323 };
324 
325 } // End of namespace Buried
326 
327 #endif
Definition: global_flags.h:35
Definition: agent_evaluation.h:31