1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115
|
/* 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.
*
* 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 2
* 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, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
*/
#ifndef DREAMWEB_DREAMWEB_H
#define DREAMWEB_DREAMWEB_H
#include "common/error.h"
#include "common/keyboard.h"
#include "common/random.h"
#include "common/rect.h"
#include "common/scummsys.h"
#include "common/system.h"
#include "engines/engine.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 Common {
class File;
}
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 kScreenheight = 200;
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;
// Engine Debug Flags
enum {
kDebugAnimation = (1 << 0),
kDebugSaveLoad = (1 << 1)
};
struct DreamWebGameDescription;
class DreamWebSound;
class DreamWebEngine : public Engine {
private:
DreamWebConsole *_console;
DreamWebSound *_sound;
bool _vSyncInterrupt;
protected:
// Engine APIs
virtual Common::Error run();
virtual bool hasFeature(EngineFeature f) const;
GUI::Debugger *getDebugger() { return _console; }
public:
DreamWebEngine(OSystem *syst, const DreamWebGameDescription *gameDesc);
virtual ~DreamWebEngine();
void setVSyncInterrupt(bool flag);
void waitForVSync();
Common::Error loadGameState(int slot);
Common::Error saveGameState(int slot, const Common::String &desc);
bool canLoadGameStateCurrently();
bool canSaveGameStateCurrently();
uint8 randomNumber() { return _rnd.getRandomNumber(255); }
void mouseCall(uint16 *x, uint16 *y, uint16 *state); //fill mouse pos and button state
void processEvents();
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);
Common::String getSavegameFilename(int slot) const;
void setShakePos(int pos) { _system->setShakePos(pos); }
void printUnderMonitor();
void quit();
bool loadSpeech(const Common::String &filename);
Common::Language getLanguage() const;
uint8 modifyChar(uint8 c) const;
Common::String modifyFileName(const char *);
const Common::String& getDatafilePrefix() { return _datafilePrefix; }
const Common::String& getSpeechDirName() { return _speechDirName; }
private:
// Keyboard buffer. _bufferIn and _bufferOut are indexes
// into this, making it a ring buffer
uint8 _keyBuffer[16];
uint16 _bufferIn;
uint16 _bufferOut;
void keyPressed(uint16 ascii);
void setSpeed(uint speed);
const DreamWebGameDescription *_gameDescription;
Common::RandomSource _rnd;
Common::String _datafilePrefix;
Common::String _speechDirName;
uint _speed;
bool _turbo;
uint _oldMouseState;
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[64];
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;
bool _speechLoaded;
// misc variables
uint8 _speechCount;
uint16 _charShift;
uint8 _kerning;
bool _brightPalette;
bool _copyProtection;
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 _colorPos;
uint8 _fadeDirection;
uint8 _numToFade;
uint8 _fadeCount;
uint8 _addToGreen;
uint8 _addToRed;
uint8 _addToBlue;
uint16 _lastSoundReel;
Common::KeyCode _lastHardKey;
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();
int findCommand(const char *const cmdList[]);
// from newplace.cpp
void getUnderCenter();
void putUnderCenter();
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 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 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 showDiaryPage();
void showDiaryKeys();
void dumpDiaryKeys();
void useMenu();
void incRyanPage();
void edensFlatReminders();
void dropError();
void cantDrop();
void entryAnims();
bool finishedWalking();
void emergencyPurge(uint8 from);
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 openYourNeighbor();
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 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
#endif
|