diff options
Diffstat (limited to 'engines/dreamweb/dreamweb.h')
-rw-r--r-- | engines/dreamweb/dreamweb.h | 1045 |
1 files changed, 1020 insertions, 25 deletions
diff --git a/engines/dreamweb/dreamweb.h b/engines/dreamweb/dreamweb.h index 97f6007f9d..13a27449dc 100644 --- a/engines/dreamweb/dreamweb.h +++ b/engines/dreamweb/dreamweb.h @@ -34,23 +34,71 @@ #include "audio/audiostream.h" #include "audio/mixer.h" -#include "engines/advancedDetector.h" #include "engines/engine.h" -#include "dreamweb/dreamgen.h" #include "dreamweb/console.h" +#include "dreamweb/structs.h" + +#define SCUMMVM_HEADER MKTAG('S', 'C', 'V', 'M') +#define SCUMMVM_BLOCK_MAGIC_SIZE 0x1234 +#define SAVEGAME_VERSION 1 + namespace DreamWeb { +const unsigned int kNumReelRoutines = 57; +const unsigned int kUnderTextSizeX = 180; +const unsigned int kUnderTextSizeY = 10; +const unsigned int kUnderTimedTextSizeY = 24; +const unsigned int kUnderTextSizeX_f = 228; // foreign version +const unsigned int kUnderTextSizeY_f = 13; // foreign version +const unsigned int kUnderTimedTextSizeY_f = 30; +const unsigned int kUnderTextBufSize = kUnderTextSizeX_f * kUnderTextSizeY_f; +const unsigned int kUnderTimedTextBufSize = 256 * kUnderTimedTextSizeY_f; +const unsigned int kLengthOfVars = 68; +const unsigned int kNumChanges = 250; +const unsigned int kLenOfMapStore = 22*8*20*8; +const unsigned int kMapWidth = 66; +const unsigned int kMapHeight = 60; +const unsigned int kLengthOfMap = kMapWidth * kMapHeight; +const unsigned int kNumExObjects = 114; +const unsigned int kScreenwidth = 320; +const unsigned int kDiaryx = (68+24); +const unsigned int kDiaryy = (48+12); +const unsigned int kInventx = 80; +const unsigned int kInventy = 58; +const unsigned int kMenux = (80+40); +const unsigned int kMenuy = 60; +const unsigned int kOpsx = 60; +const unsigned int kOpsy = 52; +const unsigned int kSymbolx = 64; +const unsigned int kSymboly = 56; +const unsigned int kLengthofvars = 68; +const unsigned int kFrameBlocksize = 2080; +const unsigned int kGraphicsFileFrameSize = 347; // ceil(2080 / sizeof(Frame)) +const unsigned int kNumexobjects = 114; +const unsigned int kNumExTexts = kNumexobjects + 2; +const uint16 kExtextlen = 18000; +const uint16 kExframeslen = 30000; +const unsigned int kLengthofextra = kFrameBlocksize + kExframeslen + sizeof(DynObject)*kNumexobjects + sizeof(uint16)*kNumExTexts + kExtextlen; +const unsigned int kItempicsize = 44; +const unsigned int kNumSetTexts = 130; +const unsigned int kNumBlockTexts = 98; +const unsigned int kNumRoomTexts = 38; +const unsigned int kNumFreeTexts = 82; +const unsigned int kNumPersonTexts = 1026; + +// Keyboard buffer. data.word(kBufferin) and data.word(kBufferout) are indexes +// into this, making it a ring buffer +extern uint8 g_keyBuffer[16]; + // Engine Debug Flags enum { kDebugAnimation = (1 << 0), kDebugSaveLoad = (1 << 1) }; -struct DreamWebGameDescription { - ADGameDescription desc; -}; +struct DreamWebGameDescription; class DreamWebEngine : public Engine { private: @@ -77,42 +125,35 @@ public: uint8 randomNumber() { return _rnd.getRandomNumber(255); } - void openFile(const Common::String &name); - uint32 readFromFile(uint8 *data, unsigned size); - uint32 skipBytes(uint32 bytes); - void closeFile(); - void mouseCall(uint16 *x, uint16 *y, uint16 *state); //fill mouse pos and button state void processEvents(); - void setPalette(); - void fadeDos(); void blit(const uint8 *src, int pitch, int x, int y, int w, int h); void cls(); + bool isCD(); + bool hasSpeech(); void getPalette(uint8 *data, uint start, uint count); void setPalette(const uint8 *data, uint start, uint count); - void openSaveFileForWriting(const Common::String &name); - uint writeToSaveFile(const uint8 *data, uint size); - - bool openSaveFileForReading(const Common::String &name); - uint readFromSaveFile(uint8 *data, uint size); + Common::String getSavegameFilename(int slot) const; void setShakePos(int pos) { _system->setShakePos(pos); } void printUnderMonitor(); void quit(); - void loadSounds(uint bank, const Common::String &file); + void loadSounds(uint bank, const Common::String &suffix); bool loadSpeech(const Common::String &filename); void enableSavingOrLoading(bool enable = true) { _enableSavingOrLoading = enable; } - Common::Language getLanguage() const { return _language; } + Common::Language getLanguage() const; uint8 modifyChar(uint8 c) const; void stopSound(uint8 channel); + const Common::String& getDatafilePrefix() { return _datafilePrefix; }; + private: void keyPressed(uint16 ascii); void setSpeed(uint speed); @@ -121,16 +162,12 @@ private: const DreamWebGameDescription *_gameDescription; Common::RandomSource _rnd; - - Common::File _file; - Common::OutSaveFile *_outSaveFile; - Common::InSaveFile *_inSaveFile; + Common::String _datafilePrefix; uint _speed; bool _turbo; uint _oldMouseState; bool _enableSavingOrLoading; - Common::Language _language; struct Sample { uint offset; @@ -148,7 +185,965 @@ private: Audio::SoundHandle _channelHandle[2]; uint8 _channel0, _channel1; - DreamGen::DreamGenContext _context; +protected: + GameVars _vars; // saved variables + + // from backdrop.cpp + uint8 *_backdropBlocks; + BackdropMapFlag _backdropFlags[96]; + uint8 _mapData[kLengthOfMap + 32]; + + // from keypad.cpp + uint8 _pressList[6]; + uint8 _pressed; + uint16 _pressPointer; + uint8 _graphicPress; + uint8 _pressCount; + uint8 _lightCount; + uint8 _folderPage; + uint8 _diaryPage; + uint8 _menuCount; + uint8 _symbolTopX; + uint8 _symbolTopNum; + int8 _symbolTopDir; + uint8 _symbolBotX; + uint8 _symbolBotNum; + int8 _symbolBotDir; + + // from monitor.cpp + char _inputLine[64]; + char _operand1[14]; + char _currentFile[14]; + + // from newplace.cpp + uint8 _roomsCanGo[16]; + + // from object.cpp + uint16 _openChangeSize; + ObjectRef _oldSubject; + + // from pathfind.cpp + Common::Point _lineData[200]; // Output of Bresenham + + // from saveload.cpp + char _saveNames[17*21]; + char _saveNamesOld[17*21]; + + // from vgagrafx.cpp + uint8 _workspace[(0x1000 + 2) * 16]; + uint8 _mapStore[kLenOfMapStore + 32]; + + // from people.cpp + ReelRoutine _reelRoutines[kNumReelRoutines+1]; + ReelRoutine *_personData; + + // from Buffers + uint8 _textUnder[kUnderTextBufSize]; + ObjectRef _openInvList[16]; + ObjectRef _ryanInvList[30]; + uint8 _pointerBack[32*32]; + MapFlag _mapFlags[11*10]; + uint8 _startPal[3*256]; + uint8 _endPal[3*256]; + uint8 _mainPal[3*256]; + Common::List<Sprite> _spriteTable; + Common::List<ObjPos> _setList; + Common::List<ObjPos> _freeList; + Common::List<ObjPos> _exList; + Common::List<People> _peopleList; + uint8 _zoomSpace[46*40]; + // _printedList (unused?) + Change _listOfChanges[kNumChanges]; // Note: this array is saved + uint8 _underTimedText[kUnderTimedTextBufSize]; + Common::List<Rain> _rainList; + + // textfiles + TextFile _textFile1; + TextFile _textFile2; + TextFile _textFile3; + TextFile _travelText; + TextFile _puzzleText; + TextFile _commandText; + + // local graphics files + GraphicsFile _keypadGraphics; + GraphicsFile _menuGraphics; + GraphicsFile _menuGraphics2; + GraphicsFile _folderGraphics; + GraphicsFile _folderGraphics2; + GraphicsFile _folderGraphics3; + GraphicsFile _folderCharset; + GraphicsFile _symbolGraphics; + GraphicsFile _diaryGraphics; + GraphicsFile _diaryCharset; + GraphicsFile _monitorGraphics; + GraphicsFile _monitorCharset; + GraphicsFile _newplaceGraphics; + GraphicsFile _newplaceGraphics2; + GraphicsFile _newplaceGraphics3; + GraphicsFile _cityGraphics; + GraphicsFile _saveGraphics; + + // global graphics files + GraphicsFile _icons1; + GraphicsFile _icons2; + GraphicsFile _charset1; + GraphicsFile _mainSprites; + const GraphicsFile *_currentCharset; + + // room files + GraphicsFile _setFrames; + GraphicsFile _freeFrames; + GraphicsFile _reel1; + GraphicsFile _reel2; + GraphicsFile _reel3; + TextFile _setDesc; + TextFile _blockDesc; + TextFile _roomDesc; + TextFile _freeDesc; + TextFile _personText; + uint16 _personFramesLE[12]; + RoomPaths _pathData[36]; + Reel *_reelList; + SetObject _setDat[128]; + DynObject _freeDat[80]; + + // Extras segment (NB: this is saved) + GraphicsFile _exFrames; + DynObject _exData[kNumExObjects]; + TextFile _exText; + +public: + DreamWebEngine(/*DreamWeb::DreamWebEngine *en*/); + + bool _quitRequested; + bool _subtitles; + bool _foreignRelease; + + bool _wonGame; + bool _hasSpeech; + + // sound related + uint8 _roomsSample; + uint8 _currentSample; + uint8 _channel0Playing; + uint8 _channel0Repeat; + uint8 _channel1Playing; + + uint8 _volume; + uint8 _volumeTo; + int8 _volumeDirection; + uint8 _volumeCount; + + bool _speechLoaded; + + // misc variables + uint8 _speechCount; + uint16 _charShift; + uint8 _kerning; + bool _brightPalette; + uint8 _roomLoaded; + uint8 _didZoom; + uint16 _lineSpacing; + uint16 _textAddressX; + uint16 _textAddressY; + uint8 _textLen; + uint16 _lastXPos; + uint8 _itemFrame; + uint8 _withObject; + uint8 _withType; + uint16 _lookCounter; + uint8 _command; + uint8 _commandType; + uint8 _objectType; + uint8 _getBack; + uint8 _invOpen; + uint8 _mainMode; + uint8 _pickUp; + uint8 _lastInvPos; + uint8 _examAgain; + uint8 _newTextLine; + uint8 _openedOb; + uint8 _openedType; + uint16 _mapAdX; + uint16 _mapAdY; + uint16 _mapOffsetX; + uint16 _mapOffsetY; + uint16 _mapXStart; + uint16 _mapYStart; + uint8 _mapXSize; + uint8 _mapYSize; + uint8 _haveDoneObs; + uint8 _manIsOffScreen; + uint8 _facing; + uint8 _leaveDirection; + uint8 _turnToFace; + uint8 _turnDirection; + uint16 _mainTimer; + uint8 _introCount; + uint8 _currentKey; + uint8 _timerCount; + uint8 _mapX; + uint8 _mapY; + uint8 _ryanX; + uint8 _ryanY; + uint8 _lastFlag; + uint8 _destPos; + uint8 _realLocation; + uint8 _roomNum; + uint8 _nowInNewRoom; + uint8 _resetManXY; + uint8 _newLocation; + uint8 _autoLocation; + uint16 _mouseX; + uint16 _mouseY; + uint16 _mouseButton; + uint16 _oldButton; + uint16 _oldX; + uint16 _oldY; + uint16 _oldPointerX; + uint16 _oldPointerY; + uint16 _delHereX; + uint16 _delHereY; + uint8 _pointerXS; + uint8 _pointerYS; + uint8 _delXS; + uint8 _delYS; + uint8 _pointerFrame; + uint8 _pointerPower; + uint8 _pointerMode; + uint8 _pointerSpeed; + uint8 _pointerCount; + uint8 _inMapArea; + uint8 _talkMode; + uint8 _talkPos; + uint8 _character; + uint8 _watchDump; + uint8 _logoNum; + uint8 _oldLogoNum; + uint8 _walkAndExam; + uint8 _walkExamType; + uint8 _walkExamNum; + uint16 _cursLocX; + uint16 _cursLocY; + uint16 _curPos; + uint16 _monAdX; + uint16 _monAdY; + uint16 _timeCount; + uint8 _needToDumpTimed; + TimedTemp _previousTimedTemp; + TimedTemp _timedTemp; + uint8 _loadingOrSave; + uint8 _saveLoadPage; + uint8 _currentSlot; + uint8 _cursorPos; + uint8 _colourPos; + uint8 _fadeDirection; + uint8 _numToFade; + uint8 _fadeCount; + uint8 _addToGreen; + uint8 _addToRed; + uint8 _addToBlue; + uint16 _lastSoundReel; + uint8 _lastHardKey; + uint16 _bufferIn; + uint16 _bufferOut; + uint8 _blinkFrame; + uint8 _blinkCount; + uint8 _reAssesChanges; + uint8 _pointersPath; + uint8 _mansPath; + uint8 _pointerFirstPath; + uint8 _finalDest; + uint8 _destination; + uint16 _lineStartX; + uint16 _lineStartY; + uint16 _lineEndX; + uint16 _lineEndY; + uint8 _linePointer; + uint8 _lineDirection; + uint8 _lineLength; + + // from backdrop.cpp + void doBlocks(); + uint8 getXAd(const uint8 *setData, uint8 *result); + uint8 getYAd(const uint8 *setData, uint8 *result); + uint8 getMapAd(const uint8 *setData, uint16 *x, uint16 *y); + void calcFrFrame(const Frame &frame, uint8* width, uint8* height, uint16 x, uint16 y, ObjPos *objPos); + void makeBackOb(SetObject *objData, uint16 x, uint16 y); + void showAllObs(); + void getDimension(uint8 *mapXstart, uint8 *mapYstart, uint8 *mapXsize, uint8 *mapYsize); + void calcMapAd(); + void showAllFree(); + void drawFlags(); + void showAllEx(); + + // from keypad.cpp + void getUnderMenu(); + void putUnderMenu(); + void singleKey(uint8 key, uint16 x, uint16 y); + void loadKeypad(); + void showKeypad(); + bool isItRight(uint8 digit0, uint8 digit1, uint8 digit2, uint8 digit3); + void addToPressList(); + void buttonOne(); + void buttonTwo(); + void buttonThree(); + void buttonFour(); + void buttonFive(); + void buttonSix(); + void buttonSeven(); + void buttonEight(); + void buttonNine(); + void buttonNought(); + void buttonEnter(); + void buttonPress(uint8 buttonId); + void showOuterPad(); + void dumpKeypad(); + void dumpSymbol(); + void quitSymbol(); + void enterCode(uint8 digit0, uint8 digit1, uint8 digit2, uint8 digit3); + + // from monitor.cpp + void input(); + byte makeCaps(byte c); + void delChar(); + void monMessage(uint8 index); + void netError(); + void monitorLogo(); + void randomAccess(uint16 count); + void printOuterMon(); + void showCurrentFile(); + void accessLightOn(); + void accessLightOff(); + void turnOnPower(); + void powerLightOn(); + void powerLightOff(); + void printLogo(); + void scrollMonitor(); + const char *monPrint(const char *string); + void lockLightOn(); + void lockLightOff(); + void loadPersonal(); + void loadNews(); + void loadCart(); + void showKeys(); + const char *parser(); + const char *searchForString(const char *topic, const char *text); + const char *getKeyAndLogo(const char *foundString); + void read(); + void dirFile(const char *dirName); + void dirCom(); + void useMon(); + bool execCommand(); + + // from newplace.cpp + void getUnderCentre(); + void putUnderCentre(); + void showArrows(); + uint8 getLocation(uint8 index); + void setLocation(uint8 index); + void clearLocation(uint8 index); + void resetLocation(uint8 index); + void readCityPic(); + void readDestIcon(); + void showCity(); + void locationPic(); + void selectLocation(); + void newPlace(); + void nextDest(); + void lastDest(); + void destSelect(); + void lookAtPlace(); + + // from object.cpp + void obIcons(); + void fillRyan(); + void findAllRyan(); + void obToInv(uint8 index, uint8 flag, uint16 x, uint16 y); + void obPicture(); + void removeObFromInv(); + void deleteExObject(uint8 index); + void deleteExFrame(uint8 frameNum); + void deleteExText(uint8 textNum); + void purgeALocation(uint8 index); + const uint8 *getObTextStart(); + void wornError(); + void makeWorn(DynObject *object); + void dropObject(); + ObjectRef findOpenPos(); + byte getOpenedSlotSize(); + byte getOpenedSlotCount(); + void openOb(); + void findAllOpen(); + void fillOpen(); + ObjectRef findInvPos(); + void reExFromInv(); + void swapWithInv(); + void transferText(uint8 from, uint8 to); + void pickupConts(uint8 from, uint8 containerEx); + byte transferToEx(uint8 from); + void swapWithOpen(); + void outOfOpen(); + void inToInv(); + void outOfInv(); + bool checkObjectSize(); + void useOpened(); + void setPickup(); + void selectOpenOb(); + void examineOb(bool examineAgain = true); + void selectOb(); + void inventory(); + void identifyOb(); + + // from pathfind.cpp + void turnPathOn(uint8 param); + void turnPathOff(uint8 param); + void turnAnyPathOn(uint8 param, uint8 room); + void turnAnyPathOff(uint8 param, uint8 room); + RoomPaths *getRoomsPaths(); + void faceRightWay(); + void setWalk(); + void autoSetWalk(); + void checkDest(const RoomPaths *roomsPaths); + void findXYFromPath(); + bool checkIfPathIsOn(uint8 index); + void bresenhams(); + void workoutFrames(); + byte findFirstPath(byte x, byte y); + byte findPathOfPoint(byte x, byte y); + + // from people.cpp + void setupInitialReelRoutines(); + void updatePeople(); + void madmanText(); + void madman(ReelRoutine &routine); + void madMode(); + void addToPeopleList(ReelRoutine *routine); + bool checkSpeed(ReelRoutine &routine); + void sparkyDrip(ReelRoutine &routine); + void genericPerson(ReelRoutine &routine); + void gamer(ReelRoutine &routine); + void eden(ReelRoutine &routine); + void sparky(ReelRoutine &routine); + void rockstar(ReelRoutine &routine); + void madmansTelly(ReelRoutine &routine); + void smokeBloke(ReelRoutine &routine); + void manAsleep(ReelRoutine &routine); + void drunk(ReelRoutine &routine); + void introMagic1(ReelRoutine &routine); + void introMagic2(ReelRoutine &routine); + void introMagic3(ReelRoutine &routine); + void introMusic(ReelRoutine &routine); + void candles(ReelRoutine &routine); + void candles1(ReelRoutine &routine); + void candles2(ReelRoutine &routine); + void smallCandle(ReelRoutine &routine); + void gates(ReelRoutine &routine); + void security(ReelRoutine &routine); + void edenInBath(ReelRoutine &routine); + void louis(ReelRoutine &routine); + void handClap(ReelRoutine &routine); + void carParkDrip(ReelRoutine &routine); + void foghornSound(ReelRoutine &routine); + void train(ReelRoutine &routine); + void attendant(ReelRoutine &routine); + void keeper(ReelRoutine &routine); + void interviewer(ReelRoutine &routine); + void drinker(ReelRoutine &routine); + void alleyBarkSound(ReelRoutine &routine); + void louisChair(ReelRoutine &routine); + void bossMan(ReelRoutine &routine); + void priest(ReelRoutine &routine); + void monkAndRyan(ReelRoutine &routine); + void copper(ReelRoutine &routine); + void introMonks1(ReelRoutine &routine); + void introMonks2(ReelRoutine &routine); + void soldier1(ReelRoutine &routine); + void receptionist(ReelRoutine &routine); + void bartender(ReelRoutine &routine); + void heavy(ReelRoutine &routine); + void helicopter(ReelRoutine &routine); + void mugger(ReelRoutine &routine); + void businessMan(ReelRoutine &routine); + void endGameSeq(ReelRoutine &routine); + void poolGuard(ReelRoutine &routine); + + // from print.cpp + uint8 getNextWord(const GraphicsFile &charSet, const uint8 *string, uint8 *totalWidth, uint8 *charCount); + void printChar(const GraphicsFile &charSet, uint16 *x, uint16 y, uint8 c, uint8 nextChar, uint8 *width, uint8 *height); + void printChar(const GraphicsFile &charSet, uint16 x, uint16 y, uint8 c, uint8 nextChar, uint8 *width, uint8 *height); + void printBoth(const GraphicsFile &charSet, uint16 *x, uint16 y, uint8 c, uint8 nextChar); + uint8 printDirect(const uint8** string, uint16 x, uint16 *y, uint8 maxWidth, bool centered); + uint8 printDirect(const uint8* string, uint16 x, uint16 y, uint8 maxWidth, bool centered); + uint8 getNumber(const GraphicsFile &charSet, const uint8 *string, uint16 maxWidth, bool centered, uint16 *offset); + uint8 kernChars(uint8 firstChar, uint8 secondChar, uint8 width); + uint8 printSlow(const uint8 *string, uint16 x, uint16 y, uint8 maxWidth, bool centered); + uint16 waitFrames(); + void printCurs(); + void delCurs(); + void rollEndCreditsGameWon(); + void rollEndCreditsGameLost(); + + // from saveload.cpp + void loadGame(); + void doLoad(int slot); + void saveGame(); + void namesToOld(); + void oldToNames(); + void saveLoad(); + void doSaveLoad(); + void showMainOps(); + void showDiscOps(); + void discOps(); + void actualSave(); + void actualLoad(); + void loadPosition(unsigned int slot); + void savePosition(unsigned int slot, const char *descbuf); + uint scanForNames(); + void loadOld(); + void showDecisions(); + void loadSaveBox(); + void showNames(); + void checkInput(); + void selectSaveLoadPage(); + void selectSlot(); + void showSlots(); + void showOpBox(); + void showSaveOps(); + void showLoadOps(); + + // from sound.cpp + bool loadSpeech(byte type1, int idx1, byte type2, int idx2); + void volumeAdjust(); + void cancelCh0(); + void cancelCh1(); + void loadRoomsSample(); + void playChannel0(uint8 index, uint8 repeat); + void playChannel1(uint8 index); + + // from sprite.cpp + void printSprites(); + void printASprite(const Sprite *sprite); + void clearSprites(); + Sprite *makeSprite(uint8 x, uint8 y, bool _mainManCallback, const GraphicsFile *frameData); + void initMan(); + void walking(Sprite *sprite); + void aboutTurn(Sprite *sprite); + void backObject(Sprite *sprite); + void constant(Sprite *sprite, SetObject *objData); + void randomSprite(Sprite *sprite, SetObject *objData); + void doorway(Sprite *sprite, SetObject *objData); + void wideDoor(Sprite *sprite, SetObject *objData); + void doDoor(Sprite *sprite, SetObject *objData, Common::Rect check); + void steady(Sprite *sprite, SetObject *objData); + void lockedDoorway(Sprite *sprite, SetObject *objData); + void liftSprite(Sprite *sprite, SetObject *objData); + + Reel *getReelStart(uint16 reelPointer); + const GraphicsFile *findSource(uint16 &frame); + void showReelFrame(Reel *reel); + void showGameReel(ReelRoutine *routine); + const Frame *getReelFrameAX(uint16 frame); + void moveMap(uint8 param); + void checkOne(uint8 x, uint8 y, uint8 *flag, uint8 *flagEx, uint8 *type, uint8 *flagX, uint8 *flagY); + + uint8 getBlockOfPixel(uint8 x, uint8 y); + void splitIntoLines(uint8 x, uint8 y); + void initRain(); + + void intro1Text(); + void intro2Text(uint16 nextReelPointer); + void intro3Text(uint16 nextReelPointer); + + void monks2text(); + void textForEnd(); + void textForMonkHelper(uint8 textIndex, uint8 voiceIndex, uint8 x, uint8 y, uint16 countToTimed, uint16 timeCount); + void textForMonk(); + void priestText(ReelRoutine &routine); + void soundOnReels(uint16 reelPointer); + void clearBeforeLoad(); + void clearReels(); + void getRidOfReels(); + void liftNoise(uint8 index); + void checkForExit(Sprite *sprite); + void mainMan(Sprite *sprite); + void spriteUpdate(); + void showRain(); + void reconstruct(); + void reelsOnScreen(); + + // from stubs.cpp + void setupInitialVars(); + void crosshair(); + void delTextLine(); + void showBlink(); + void dumpBlink(); + void dumpPointer(); + void showPointer(); + void delPointer(); + void showRyanPage(); + void switchRyanOn(); + void switchRyanOff(); + void middlePanel(); + void showDiary(); + void readMouse(); + uint16 readMouseState(); + void hangOn(uint16 frameCount); + void lockMon(); + uint8 *textUnder(); + void readKey(); + void findOrMake(uint8 index, uint8 value, uint8 type); + DynObject *getFreeAd(uint8 index); + DynObject *getExAd(uint8 index); + DynObject *getEitherAd(); + void *getAnyAdDir(uint8 index, uint8 flag); + void showWatch(); + void showTime(); + void showExit(); + void showMan(); + void panelIcons1(); + SetObject *getSetAd(uint8 index); + void *getAnyAd(uint8 *slotSize, uint8 *slotCount); + const uint8 *getTextInFile1(uint16 index); + uint8 findNextColon(const uint8 **string); + void allocateBuffers(); + void loadTextFile(TextFile &file, const char *suffix); + void loadGraphicsFile(GraphicsFile &file, const char *suffix); + void loadGraphicsSegment(GraphicsFile &file, Common::File &inFile, unsigned int len); + void loadTextSegment(TextFile &file, Common::File &inFile, unsigned int len); + void loadTravelText(); + void loadTempText(const char *suffix); + void sortOutMap(); + void loadRoomData(const Room &room, bool skipDat); + void useTempCharset(GraphicsFile *charset); + void useCharset1(); + void printMessage(uint16 x, uint16 y, uint8 index, uint8 maxWidth, bool centered); + void printMessage2(uint16 x, uint16 y, uint8 index, uint8 maxWidth, bool centered, uint8 count); + bool isItDescribed(const ObjPos *objPos); + void zoomIcon(); + void roomName(); + void showIcon(); + void eraseOldObs(); + void commandOnlyCond(uint8 command, uint8 commandType); + void commandOnly(uint8 command); + void commandWithOb(uint8 command, uint8 type, uint8 index); + void blank(); + void setTopLeft(); + void setTopRight(); + void setBotLeft(); + void setBotRight(); + void examIcon(); + void animPointer(); + void getFlagUnderP(uint8 *flag, uint8 *flagEx); + void workToScreenM(); + void quitKey(); + void restoreReels(); + void loadFolder(); + void folderHints(); + void folderExit(); + void showFolder(); + void showLeftPage(); + void showRightPage(); + void underTextLine(); + void hangOnP(uint16 count); + void getUnderZoom(); + void putUnderZoom(); + void examineInventory(); + void openInv(); + void getBack1(); + void getBackFromOb(); + void getBackFromOps(); + void getBackToOps(); + void DOSReturn(); + bool isItWorn(const DynObject *object); + bool compare(uint8 index, uint8 flag, const char id[4]); + void hangOnW(uint16 frameCount); + void getRidOfTempText(); + void getRidOfAll(); + void placeSetObject(uint8 index); + void removeSetObject(uint8 index); + bool isSetObOnMap(uint8 index); + void dumpZoom(); + void diaryKeyP(); + void diaryKeyN(); + void findRoomInLoc(); + void loadMenu(); + void showMenu(); + void dumpMenu(); + void dealWithSpecial(uint8 firstParam, uint8 secondParam); + void plotReel(uint16 &reelPointer); + void setupTimedTemp(uint8 textIndex, uint8 voiceIndex, uint8 x, uint8 y, uint16 countToTimed, uint16 timeCount); + void getUnderTimed(); + void putUnderTimed(); + void dumpTextLine(); + void useTimedText(); + void dumpTimedText(); + void getTime(); + void doChange(uint8 index, uint8 value, uint8 type); + bool isRyanHolding(const char *id); + void clearBuffers(); + void clearChanges(); + void drawFloor(); + uint16 findSetObject(const char *id); + void hangOnCurs(uint16 frameCount); + const uint8 *findObName(uint8 type, uint8 index); + void copyName(uint8 type, uint8 index, uint8 *dst); + uint16 findExObject(const char *id); + void makeMainScreen(); + void showWatchReel(); + void watchReel(); + void examineObText(); + void blockNameText(); + void personNameText(); + void walkToText(); + void entryTexts(); + void setAllChanges(); + void restoreAll(); + void redrawMainScrn(); + void checkCoords(const RectWithCallback *rectWithCallbacks); + void newGame(); + void deleteTaken(); + void autoAppear(); + void loadRoom(); + void startLoading(const Room &room); + void startup(); + void atmospheres(); + bool objectMatches(void *object, const char *id); + void checkFolderCoords(); + void nextFolder(); + void lastFolder(); + void lookAtCard(); + void obsThatDoThings(); + void describeOb(); + void putBackObStuff(); + void reExFromOpen(); + void showDiaryPage(); + void showDiaryKeys(); + void dumpDiaryKeys(); + void useMenu(); + void incRyanPage(); + void edensFlatReminders(); + void dropError(); + void cantDrop(); + void entryAnims(); + bool finishedWalking(); + void emergencyPurge(); + void purgeAnItem(); + uint8 nextSymbol(uint8 symbol); + void enterSymbol(); + void showSymbol(); + void updateSymbolTop(); + void updateSymbolBot(); + void pickupOb(uint8 command, uint8 pos); + void errorMessage1(); + void errorMessage2(); + void errorMessage3(); + void decide(); + void allPointer(); + void dumpWatch(); + void watchCount(); + void signOn(); + void searchForFiles(const char *filesString); + void triggerMessage(uint16 index); + void processTrigger(); + void dreamwebFinalize(); + void dreamweb(); + void screenUpdate(); + void startup1(); + void readOneBlock(); + bool checkIfPerson(uint8 x, uint8 y); + bool checkIfFree(uint8 x, uint8 y); + bool checkIfEx(uint8 x, uint8 y); + void walkAndExamine(); + void obName(uint8 command, uint8 commandType); + bool checkIfSet(uint8 x, uint8 y); + void readSetData(); + void look(); + void autoLook(); + void doLook(); + void mainScreen(); + void zoomOnOff(); + void initialInv(); + void walkIntoRoom(); + void afterNewRoom(); + void madmanRun(); + void showGun(); + + // from talk.cpp + void talk(); + void convIcons(); + uint16 getPersFrame(uint8 index); + const uint8 *getPersonText(uint8 index, uint8 talkPos); + void startTalk(); + void moreTalk(); + void doSomeTalk(); + bool hangOnPQ(); + void redes(); + + // from titles.cpp + void endGame(); + void monkSpeaking(); + void gettingShot(); + void bibleQuote(); + void hangOne(uint16 delay); + void intro(); + void runIntroSeq(); + void runEndSeq(); + void loadIntroRoom(); + void set16ColPalette(); + void realCredits(); + uint8 getExPos(); + + // from use.cpp + void useRoutine(); + void useObject(); + void placeFreeObject(uint8 index); + void removeFreeObject(uint8 index); + void setupTimedUse(uint16 offset, uint16 countToTimed, uint16 timeCount, byte x, byte y); + void withWhat(); + uint16 checkInside(uint16 command, uint16 type); + void showPuzText(uint16 command, uint16 count); + void useText(const uint8 *string); + void showFirstUse(); + void showSecondUse(); + void viewFolder(); + void edensCDPlayer(); + void hotelBell(); + void playGuitar(); + void useElevator1(); + void useElevator2(); + void useElevator3(); + void useElevator4(); + void useElevator5(); + void useHatch(); + void wheelSound(); + void callHotelLift(); + void useShield(); + void useCoveredBox(); + void useRailing(); + void useChurchHole(); + void sitDownInBar(); + void useBalcony(); + void useWindow(); + void trapDoor(); + void useDryer(); + void callEdensDLift(); + void callEdensLift(); + void openYourNeighbour(); + void openRyan(); + void openPoolBoss(); + void openEden(); + void openSarters(); + void openLouis(); + void useWall(); + void useChurchGate(); + void useLadder(); + void useLadderB(); + bool defaultUseHandler(const char *id); + void slabDoorA(); + void slabDoorB(); + void slabDoorC(); + void slabDoorE(); + void slabDoorD(); + void slabDoorF(); + void useGun(); + void useFullCart(); + void useClearBox(); + void openTVDoor(); + void usePlate(); + void usePlinth(); + void useElvDoor(); + void useWinch(); + void useCart(); + void useHole(); + void openHotelDoor(); + void openHotelDoor2(); + void grafittiDoor(); + void useCardReader1(); + void useCardReader2(); + void useCardReader3(); + void usePoolReader(); + void useLighter(); + void useWire(); + void openTomb(); + void hotelControl(); + void useCooker(); + void useDiary(); + void useControl(); + void useSlab(); + void usePipe(); + void useOpenBox(); + void runTap(); + void useAxe(); + void useHandle(); + void useAltar(); + void notHeldError(); + void useCashCard(); + void useButtonA(); + void wearWatch(); + void wearShades(); + void useTrainer(); + void useStereo(); + void chewy(); + void delEverything(); + void afterIntroRoom(); + + // from vgafades.cpp + void clearStartPal(); + void clearEndPal(); + void palToStartPal(); + void endPalToStart(); + void startPalToEnd(); + void palToEndPal(); + void fadeDOS(); + void doFade(); + void fadeCalculation(); + void fadeUpYellows(); + void fadeUpMonFirst(); + void fadeUpMon(); + void fadeDownMon(); + void initialMonCols(); + void fadeScreenUp(); + void fadeScreenUps(); + void fadeScreenUpHalf(); + void fadeScreenDown(); + void fadeScreenDowns(); + void fadeScreenDownHalf(); + void clearPalette(); + void greyscaleSum(); + void allPalette(); + void dumpCurrent(); + + // from vgagrafx.cpp + inline uint8 *workspace() { return _workspace; } + void clearWork(); + + void panelToMap(); + void mapToPanel(); + void dumpMap(); + void transferFrame(uint8 from, uint8 to, uint8 offset); + void zoom(); + void multiGet(uint8 *dst, uint16 x, uint16 y, uint8 width, uint8 height); + void multiPut(const uint8 *src, uint16 x, uint16 y, uint8 width, uint8 height); + void multiDump(uint16 x, uint16 y, uint8 width, uint8 height); + void workToScreen(); + void frameOutV(uint8 *dst, const uint8 *src, uint16 pitch, uint16 width, uint16 height, int16 x, int16 y); + void frameOutNm(uint8 *dst, const uint8 *src, uint16 pitch, uint16 width, uint16 height, uint16 x, uint16 y); + void frameOutBh(uint8 *dst, const uint8 *src, uint16 pitch, uint16 width, uint16 height, uint16 x, uint16 y); + void frameOutFx(uint8 *dst, const uint8 *src, uint16 pitch, uint16 width, uint16 height, uint16 x, uint16 y); + void doShake(); + void vSync(); + void setMode(); + void showPCX(const Common::String &suffix); + void showFrameInternal(const uint8 *pSrc, uint16 x, uint16 y, uint8 effectsFlag, uint8 width, uint8 height); + void showFrame(const GraphicsFile &frameData, uint16 x, uint16 y, uint16 frameNumber, uint8 effectsFlag, uint8 *width, uint8 *height); + void showFrame(const GraphicsFile &frameData, uint16 x, uint16 y, uint16 frameNumber, uint8 effectsFlag); + bool pixelCheckSet(const ObjPos *pos, uint8 x, uint8 y); + void loadPalFromIFF(); + void createPanel(); + void createPanel2(); + void showPanel(); }; } // End of namespace DreamWeb |