aboutsummaryrefslogtreecommitdiff
path: root/engines/scumm/insane/insane.h
diff options
context:
space:
mode:
authorMax Horn2006-02-11 22:45:04 +0000
committerMax Horn2006-02-11 22:45:04 +0000
commit26ee630756ebdd7c96bccede0881a8c8b98e8f2b (patch)
tree26e378d5cf990a2b81c2c96e9e683a7f333b62e8 /engines/scumm/insane/insane.h
parent2a9a0d4211b1ea5723f1409d91cb95de8984429e (diff)
downloadscummvm-rg350-26ee630756ebdd7c96bccede0881a8c8b98e8f2b.tar.gz
scummvm-rg350-26ee630756ebdd7c96bccede0881a8c8b98e8f2b.tar.bz2
scummvm-rg350-26ee630756ebdd7c96bccede0881a8c8b98e8f2b.zip
Moved engines to the new engines/ directory
svn-id: r20582
Diffstat (limited to 'engines/scumm/insane/insane.h')
-rw-r--r--engines/scumm/insane/insane.h456
1 files changed, 456 insertions, 0 deletions
diff --git a/engines/scumm/insane/insane.h b/engines/scumm/insane/insane.h
new file mode 100644
index 0000000000..36567ae06e
--- /dev/null
+++ b/engines/scumm/insane/insane.h
@@ -0,0 +1,456 @@
+/* ScummVM - Scumm Interpreter
+ * Copyright (C) 2002-2006 The ScummVM project
+ *
+ * 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.
+ *
+ * $URL$
+ * $Id$
+ *
+ */
+
+#if !defined(INSANE_H) && !defined(DISABLE_SCUMM_7_8)
+#define INSANE_H
+
+#include "base/engine.h"
+#include "scumm/intern.h"
+#include "scumm/nut_renderer.h"
+
+#include "scumm/smush/smush_player.h"
+#include "scumm/smush/chunk.h"
+
+namespace Scumm {
+
+#define INV_CHAIN 0
+#define INV_CHAINSAW 1
+#define INV_MACE 2
+#define INV_2X4 3
+#define INV_WRENCH 4
+#define INV_BOOT 5
+#define INV_HAND 6
+#define INV_DUST 7
+
+#define EN_ROTT1 0 // rottwheeler
+#define EN_ROTT2 1 // rottwheeler
+#define EN_ROTT3 2 // rottwheeler
+#define EN_VULTF1 3 // vulture (redhead female1)
+#define EN_VULTM1 4 // vulture (male with glasses)
+#define EN_VULTF2 5 // vulture (redhead female2)
+#define EN_VULTM2 6 // vulture (initialized as rottwheeler) (male)
+#define EN_CAVEFISH 7 // Cavefish Maximum Fish
+#define EN_TORQUE 8 // Father Torque
+#define EN_BEN 9 // used only with handler
+
+class Insane {
+ public:
+ Insane(ScummEngine_v6 *scumm);
+ ~Insane();
+
+ void setSmushParams(int speed);
+ void runScene(int arraynum);
+
+ void procPreRendering(void);
+ void procPostRendering(byte *renderBitmap, int32 codecparam, int32 setupsan12,
+ int32 setupsan13, int32 curFrame, int32 maxFrame);
+ void procIACT(byte *renderBitmap, int32 codecparam, int32 setupsan12,
+ int32 setupsan13, Chunk &b, int32 size, int32 flags);
+ void procSKIP(Chunk &b);
+ void escapeKeyHandler(void);
+
+ private:
+
+ ScummEngine_v6 *_vm;
+ SmushPlayer *_player;
+
+ int32 _speed;
+ bool _insaneIsRunning;
+
+ int32 _numberArray;
+ int32 _emulTimerId;
+ int32 _emulateInterrupt;
+ byte _errbuf[0x7d0];
+ int32 _flag1d;
+ int32 _mainTimerId;
+ int32 _objArray1Idx;
+ int32 _objArray1Idx2;
+ int32 _objArray1[101];
+ int32 _objArray2Idx;
+ int32 _objArray2Idx2;
+ int32 _objArray2[101];
+ byte _currSceneId;
+ int32 _timer1Flag;
+ int32 _timer3Id;
+ int32 _timer4Id;
+ int32 _timer6Id;
+ int32 _timer7Id;
+ int32 _timerSpriteId;
+ byte _temp2SceneId;
+ byte _tempSceneId;
+ int32 _currEnemy;
+ int32 _currScenePropIdx;
+ int32 _currScenePropSubIdx;
+ const char *_currTrsMsg;
+ int16 _sceneData2Loaded;
+ int16 _sceneData1Loaded;
+ int16 _keyboardDisable;
+ bool _needSceneSwitch;
+ int32 _idx2Exceeded;
+ int32 _lastKey;
+ bool _beenCheated;
+ bool _tiresRustle;
+ int _keybOldDx;
+ int _keybOldDy;
+ int _velocityX;
+ int _velocityY;
+ int _keybX;
+ int _keybY;
+ int32 _firstBattle;
+ bool _weaponBenJustSwitched;
+ bool _kickBenProgress;
+ int32 _battleScene;
+ bool _kickEnemyProgress;
+ bool _weaponEnemyJustSwitched;
+ int32 _enHdlVar[9][9];
+ int32 _smlayer_room;
+ int32 _smlayer_room2;
+ byte *_smush_roadrashRip; // FIXME: combine them in array
+ byte *_smush_roadrsh2Rip;
+ byte *_smush_roadrsh3Rip;
+ byte *_smush_goglpaltRip;
+ byte *_smush_tovista1Flu;
+ byte *_smush_tovista2Flu;
+ byte *_smush_toranchFlu;
+ byte *_smush_minedrivFlu;
+ byte *_smush_minefiteFlu;
+ NutRenderer *_smush_bencutNut;
+ NutRenderer *_smush_bensgoggNut;
+ NutRenderer *_smush_iconsNut;
+ NutRenderer *_smush_icons2Nut;
+ bool _smush_isSanFileSetup;
+ bool _isBenCut;
+ int _smush_smushState;
+ int _continueFrame;
+ int _continueFrame1;
+ int _counter1;
+ int _iactSceneId;
+ int _iactSceneId2;
+ int _smush_setupsan17;
+ int32 _smush_setupsan1;
+ int16 _smush_setupsan2;
+ int32 _smush_setupsan4;
+ int16 _smush_frameStep;
+ int16 _smush_curFrame;
+ int16 _smush_frameNum1;
+ int16 _smush_frameNum2;
+ byte _smush_earlyFluContents[0x31a];
+ int16 _enemyState[10][10];
+ byte _iactBits[0x80];
+ int16 _mainRoadPos;
+ int16 _posBrokenCar;
+ int16 _posBrokenTruck;
+ int16 _posFatherTorque;
+ int16 _posCave;
+ int16 _posVista;
+ bool _roadBranch;
+ bool _roadStop;
+ bool _carIsBroken;
+ bool _benHasGoggles;
+ bool _mineCaveIsNear;
+ bool _objectDetected;
+ bool _roadBumps;
+ int32 _approachAnim;
+ int32 _val54d;
+ int32 _val57d;
+ bool _val115_;
+ int32 _val211d;
+ int32 _val213d;
+ int32 _metEnemiesListTail;
+ int32 _metEnemiesList[12];
+
+ struct enemy {
+ int32 handler;
+ int32 initializer;
+ int16 occurences;
+ int32 maxdamage;
+ int32 isEmpty;
+ int32 weapon;
+ int32 sound;
+ char filename[20];
+ int32 costume4;
+ int32 costume6;
+ int32 costume5;
+ int16 costumevar;
+ int32 maxframe;
+ int32 apprAnim;
+ };
+
+ struct enemy _enemy[9];
+
+ struct fluConf {
+ int sceneId;
+ byte **fluPtr;
+ const char *filenamePtr;
+ int startFrame;
+ int numFrames;
+ };
+
+ struct fluConf _fluConf[21];
+
+ struct sceneProp {
+ int32 actor; // main actor number, -1 if not applicable
+ int32 sound;
+ int32 trsId;
+ byte r;
+ byte g;
+ byte b;
+ int32 counter;
+ int32 maxCounter;
+ int32 index;
+ };
+
+ struct sceneProp _sceneProp[139];
+
+ struct act {
+ int32 actor;
+ byte state;
+ int32 room;
+ int32 animTilt;
+ int32 tilt;
+ int32 frame;
+ };
+
+ struct actor {
+ int32 damage;
+ int32 maxdamage;
+ int32 field_8;
+ int32 frame;
+ int32 tilt;
+ int32 cursorX;
+ int32 speed;
+ int32 x;
+ int32 y;
+ int32 y1;
+ int32 x1;
+ int16 weaponClass;
+ int16 animWeaponClass;
+ int16 newFacingFlag;
+ int16 curFacingFlag;
+ bool lost;
+ bool kicking;
+ bool field_44;
+ bool field_48; // unused
+ bool defunct;
+ int32 scenePropSubIdx;
+ int32 field_54;
+ int32 runningSound;
+ int32 weapon;
+ bool inventory[8];
+ int32 probability;
+ int32 enemyHandler;
+ struct act act[4];
+ };
+
+ struct actor _actor[2];
+
+ void initvars(void);
+ void readFileToMem(const char *name, byte **buf);
+ void startVideo(const char *filename, int num, int argC, int frameRate,
+ int doMainLoop, byte *fluPtr = 0, int32 startFrame = 0);
+ void smush_warpMouse(int x, int y, int buttons);
+ void putActors(void);
+ void readState(void);
+ int initScene(int sceneId);
+ void stopSceneSounds(int sceneId);
+ void shutCurrentScene(void);
+ int loadSceneData(int scene, int flag, int phase);
+ void setSceneCostumes(int sceneId);
+ void setupValues(void);
+ void setEnemyCostumes (void);
+ void smlayer_stopSound (int idx);
+ int smlayer_loadSound(int id, int flag, int phase);
+ int smlayer_loadCostume(int id, int phase);
+ void smlayer_setActorCostume(int actornum, int act, int costume);
+ void smlayer_putActor(int actornum, int act, int x, int y, byte room);
+ void smlayer_setActorLayer(int actornum, int act, int layer);
+ void smlayer_setFluPalette(byte *pal, int shut_flag);
+
+ int32 readArray(int item);
+ void writeArray(int item, int value);
+
+ bool idx1Compare(void);
+ bool idx2Compare(void);
+ int32 idx1Tweak(void);
+ int32 idx2Tweak(void);
+ void smush_setToFinish(void);
+ void postCase11(byte *renderBitmap, int32 codecparam, int32 setupsan12,
+ int32 setupsan13, int32 curFrame, int32 maxFrame);
+ void postCase0(byte *renderBitmap, int32 codecparam, int32 setupsan12,
+ int32 setupsan13, int32 curFrame, int32 maxFrame);
+ void postCase17(byte *renderBitmap, int32 codecparam, int32 setupsan12,
+ int32 setupsan13, int32 curFrame, int32 maxFrame);
+ void postCase16(byte *renderBitmap, int32 codecparam, int32 setupsan12,
+ int32 setupsan13, int32 curFrame, int32 maxFrame);
+ void postCase1(byte *renderBitmap, int32 codecparam, int32 setupsan12,
+ int32 setupsan13, int32 curFrame, int32 maxFrame);
+ void postCase2(byte *renderBitmap, int32 codecparam, int32 setupsan12,
+ int32 setupsan13, int32 curFrame, int32 maxFrame);
+ void postCase20(byte *renderBitmap, int32 codecparam, int32 setupsan12,
+ int32 setupsan13, int32 curFrame, int32 maxFrame);
+ void postCase3(byte *renderBitmap, int32 codecparam, int32 setupsan12,
+ int32 setupsan13, int32 curFrame, int32 maxFrame);
+ void postCase5(byte *renderBitmap, int32 codecparam, int32 setupsan12,
+ int32 setupsan13, int32 curFrame, int32 maxFrame);
+ void postCase6(byte *renderBitmap, int32 codecparam, int32 setupsan12,
+ int32 setupsan13, int32 curFrame, int32 maxFrame);
+ void postCase8(byte *renderBitmap, int32 codecparam, int32 setupsan12,
+ int32 setupsan13, int32 curFrame, int32 maxFrame);
+ void postCase9(byte *renderBitmap, int32 codecparam, int32 setupsan12,
+ int32 setupsan13, int32 curFrame, int32 maxFrame);
+ void postCase10(byte *renderBitmap, int32 codecparam, int32 setupsan12,
+ int32 setupsan13, int32 curFrame, int32 maxFrame);
+ void postCase12(byte *renderBitmap, int32 codecparam, int32 setupsan12,
+ int32 setupsan13, int32 curFrame, int32 maxFrame);
+ void postCase23(byte *renderBitmap, int32 codecparam, int32 setupsan12,
+ int32 setupsan13, int32 curFrame, int32 maxFrame);
+ void postCase14(byte *renderBitmap, int32 codecparam, int32 setupsan12,
+ int32 setupsan13, int32 curFrame, int32 maxFrame);
+ void postCaseAll(byte *renderBitmap, int32 codecparam, int32 setupsan12,
+ int32 setupsan13, int32 curFrame, int32 maxFrame);
+ void postCaseMore(byte *renderBitmap, int32 codecparam, int32 setupsan12,
+ int32 setupsan13, int32 curFrame, int32 maxFrame);
+ void switchSceneIfNeeded(void);
+ int smush_changeState(int state);
+ void init_actStruct(int actornum, int actnum, int32 actorval, byte state,
+ int32 room, int32 animtilt, int32 tilt, int32 frame);
+ void init_enemyStruct(int n, int32 handler, int32 initializer,
+ int16 occurences, int32 maxdamage, int32 isEmpty,
+ int32 field_14, int32 sound, const char *filename,
+ int32 costume4, int32 costume6, int32 costume5,
+ int16 field_2C, int32 field_30, int32 field_34);
+ int32 enemyHandler(int n, int32, int32, int32);
+ int32 enemyInitializer(int n, int32, int32, int32);
+ int32 enemy0handler(int32, int32, int32);
+ int32 enemy0initializer(int32, int32, int32);
+ int32 enemy1handler(int32, int32, int32);
+ int32 enemy1initializer(int32, int32, int32);
+ int32 enemy2handler(int32, int32, int32);
+ int32 enemy2initializer(int32, int32, int32);
+ int32 enemy3handler(int32, int32, int32);
+ int32 enemy3initializer(int32, int32, int32);
+ int32 enemy4handler(int32, int32, int32);
+ int32 enemy4initializer(int32, int32, int32);
+ int32 enemy5handler(int32, int32, int32);
+ int32 enemy5initializer(int32, int32, int32);
+ int32 enemy6handler(int32, int32, int32);
+ int32 enemy6initializer(int32, int32, int32);
+ int32 enemy7handler(int32, int32, int32);
+ int32 enemy7initializer(int32, int32, int32);
+ int32 enemy8handler(int32, int32, int32);
+ int32 enemy8initializer(int32, int32, int32);
+ int32 enemyBenHandler(int32, int32, int32);
+ bool smlayer_isSoundRunning(int32 sound);
+ bool smlayer_startSfx(int32 sound);
+ bool smlayer_startVoice(int32 sound);
+ void smlayer_soundSetPan(int32 sound, int32 pan);
+ void smlayer_soundSetPriority(int32 sound, int32 priority);
+ void smlayer_drawSomething(byte *renderBitmap, int32 codecparam,
+ int32 arg_8, int32 arg_C, int32 arg_10, NutRenderer *nutfileptr,
+ int32 arg_18, int32 arg_1C, int32 arg_20);
+ void smlayer_overrideDrawActorAt(byte *, byte, byte);
+ void queueSceneSwitch(int32 sceneId, byte *fluPtr, const char *filename,
+ int32 arg_C, int32 arg_10, int32 startFrame, int32 numFrames);
+ void turnBen(bool battle);
+ void smush_rewindCurrentSan(int arg_0, int arg_4, int arg_8);
+ void smlayer_showStatusMsg(int32 arg_0, byte *renderBitmap, int32 codecparam,
+ int32 x, int32 y, int32 arg_14, int32 arg_18,
+ int32 arg_1C, const char *formatString, const char *str);
+ void init_fluConfStruct(int n, int sceneId, byte **fluPtr,
+ const char *filenamePtr, int startFrame, int numFrames);
+ int32 processBenOnRoad(bool flag);
+ void mineChooseRoad(int32 arg_0);
+ void actor02Reaction(int32 buttons);
+ void actor00Reaction(int32 buttons);
+ void actor01Reaction(int32 buttons);
+ void actor03Reaction(int32 buttons);
+ void turnEnemy(bool battle);
+ int32 actionBen(void);
+ void chooseBenWeaponAnim(int buttons);
+ void setBenAnimation(int32 actornum, int anim);
+ int calcTilt(int speed);
+ bool smush_eitherNotStartNewFrame(void);
+ void smlayer_setActorFacing(int actornum, int actnum, int frame, int direction);
+ int32 weaponMaxRange(int32 actornum);
+ int32 weaponMinRange(int32 actornum);
+ void switchBenWeapon(void);
+ void prepareScenePropScene(int32 scenePropNum, bool arg_4, bool arg_8);
+ int32 calcBenDamage(bool arg_0, bool arg_4);
+ int32 weaponDamage(int32 actornum);
+ void proc47(int32 actornum, int32 val);
+ bool weaponBenIsEffective(void);
+ bool actor1StateFlags(int state);
+ bool actor0StateFlags1(int state);
+ bool actor0StateFlags2(int state);
+ bool loadScenePropSounds(int32 scenePropNum);
+ void init_scenePropStruct(int32 n, int32 n1, int32 actornum, int32 sound, int32 trsId,
+ byte r, byte g, byte b, int32 counter, int32 maxCounter,
+ int32 index);
+ int32 setBenState(void);
+ bool smlayer_actorNeedRedraw(int actornum, int actnum);
+ void reinitActors(void);
+ const char *handleTrsTag(int32 trsId);
+ void ouchSoundBen(void);
+ int32 smush_setupSanWithFlu(const char *filename, int32 setupsan2, int32 step1,
+ int32 step2, int32 setupsan1, byte *fluPtr, int32 numFrames);
+ void smush_setupSanFromStart(const char *filename, int32 setupsan2, int32 step1,
+ int32 step2, int32 setupsan1);
+ void smush_setFrameSteps(int32 step1, int32 step2);
+ void smush_setupSanFile(const char *filename, int32 offset, int32 contFrame);
+ int32 getLastKey(bool arg_0);
+ void drawSpeedyActor(int32 arg_0);
+ void actor11Reaction(int32 buttons);
+ void actor12Reaction(int32 buttons);
+ void actor13Reaction(int32 buttons);
+ void actor10Reaction(int32 buttons);
+ int32 actionEnemy(void);
+ int32 processKeyboard(void);
+ int32 processMouse(void);
+ void setEnemyAnimation(int32 actornum, int anim);
+ void chooseEnemyWeaponAnim(int32 buttons);
+ void switchEnemyWeapon(void);
+ void setEnemyState(void);
+ int32 calcEnemyDamage(bool arg_0, bool arg_4);
+ void ouchSoundEnemy(void);
+ bool weaponEnemyIsEffective(void);
+ void iactScene1(byte *renderBitmap, int32 codecparam, int32 setupsan12,
+ int32 setupsan13, Chunk &b, int32 size, int32 flags);
+ void iactScene3(byte *renderBitmap, int32 codecparam, int32 setupsan12,
+ int32 setupsan13, Chunk &b, int32 size, int32 flags);
+ void iactScene4(byte *renderBitmap, int32 codecparam, int32 setupsan12,
+ int32 setupsan13, Chunk &b, int32 size, int32 flags);
+ void iactScene6(byte *renderBitmap, int32 codecparam, int32 setupsan12,
+ int32 setupsan13, Chunk &b, int32 size, int32 flags);
+ void iactScene17(byte *renderBitmap, int32 codecparam, int32 setupsan12,
+ int32 setupsan13, Chunk &b, int32 size, int32 flags);
+ void iactScene21(byte *renderBitmap, int32 codecparam, int32 setupsan12,
+ int32 setupsan13, Chunk &b, int32 size, int32 flags);
+ bool isBitSet(int n);
+ void setBit(int n);
+ void clearBit(int n);
+ void chooseEnemy(void);
+ void removeEmptyEnemies(void);
+ void removeEnemyFromMetList(int32);
+};
+} // End of namespace Insane
+
+#endif