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