aboutsummaryrefslogtreecommitdiff
path: root/scumm.h
diff options
context:
space:
mode:
Diffstat (limited to 'scumm.h')
-rw-r--r--scumm.h299
1 files changed, 10 insertions, 289 deletions
diff --git a/scumm.h b/scumm.h
index a83a0fcd87..1b55117911 100644
--- a/scumm.h
+++ b/scumm.h
@@ -20,16 +20,11 @@
*/
#include "scummsys.h"
+#include "system.h"
#ifdef COMPRESSED_SOUND_FILE
#include <mad.h>
#endif
-#include "system.h"
-
-#if defined(macintosh) && !defined(__APPLE__CW)
- #define Point SCUMM_Point
-#endif
-
#define SCUMMVM_VERSION "0.2.0 devel"
#define SCUMMVM_CVS "031402"
@@ -38,8 +33,8 @@
class Scumm;
struct Actor;
-
-#include "smush.h"
+struct ScummDebugger;
+struct Serializer;
typedef void (Scumm::*OpcodeProc)();
@@ -55,8 +50,6 @@ enum {
KEY_SET_OPTIONS = 3456 // WinCE
};
-
-
/* Script status type (slot.status) */
enum {
ssDead = 0,
@@ -101,31 +94,6 @@ struct RoomHeader {
} GCC_PACK;
} GCC_PACK;
-struct BompHeader {
- uint16 unk;
- uint16 width,height;
-} GCC_PACK;
-
-struct AkosHeader {
- byte x_1[2];
- byte flags;
- byte x_2;
- uint16 num_anims;
- uint16 x_3;
- uint16 codec;
-} GCC_PACK;
-
-struct AkosOffset {
- uint32 akcd;
- uint16 akci;
-} GCC_PACK;
-
-struct AkosCI {
- uint16 width,height;
- int16 rel_x, rel_y;
- int16 move_x, move_y;
-} GCC_PACK;
-
struct CodeHeader {
union {
struct {
@@ -233,28 +201,6 @@ struct CostumeData {
uint16 frame[16];
};
-struct EnqueuedObject {
- uint16 a,b,c,d,e;
- int16 x,y;
- uint16 width,height;
- uint16 j,k,l;
-};
-
-struct VirtScreen {
- int number;
- uint16 unk1;
- uint16 topline;
- uint16 width,height;
- uint16 size;
- byte alloctwobuffers;
- byte scrollable;
- uint16 xstart;
- byte tdirty[40];
- byte bdirty[40];
- byte *screenPtr;
- byte *backBuf;
-};
-
struct ActorWalkData {
int16 destx,desty;
byte destbox;
@@ -266,12 +212,6 @@ struct ActorWalkData {
int point3x, point3y;
};
-struct MouseCursor {
- int8 hotspot_x, hotspot_y;
- byte colors[4];
- byte data[32];
-};
-
struct ScriptSlot {
uint32 offs;
int32 delay;
@@ -329,13 +269,6 @@ enum {
OF_STATE_SHL = 4
};
-/* Camera Modes */
-enum {
- CM_NORMAL = 1,
- CM_FOLLOW_ACTOR = 2,
- CM_PANNING = 3
-};
-
enum {
MBS_LEFT_CLICK = 0x8000,
MBS_RIGHT_CLICK = 0x4000,
@@ -425,68 +358,6 @@ struct CharsetRenderer {
void addLinebreaks(int a, byte *str, int pos, int maxwidth);
};
-struct AkosRenderer {
- CostumeData *cd;
- int x,y; /* where to draw costume */
- byte scale_x, scale_y; /* scaling */
- byte clipping; /* clip mask */
- bool charsetmask;
- byte shadow_mode;
- uint16 codec;
- bool mirror; /* draw actor mirrored */
- byte dirty_id;
- byte *outptr;
- uint outwidth, outheight;
-
- /* pointer to various parts of the costume resource */
- byte *akos;
- AkosHeader *akhd;
-
- /* current move offset */
- int move_x, move_y;
- /* movement of cel to decode */
- int move_x_cur, move_y_cur;
- /* width and height of cel to decode */
- int width,height;
-
- byte *srcptr;
- byte *shadow_table;
-
- struct {
- /* codec stuff */
- const byte *scaletable;
- byte mask,shl;
- bool doContinue;
- byte repcolor;
- byte replen;
- int scaleXstep;
- int x,y;
- int tmp_x, tmp_y;
- int y_pitch;
- int skip_width;
- byte *destptr;
- byte *mask_ptr;
- int imgbufoffs;
- } v1;
-
- /* put less used stuff at the bottom to optimize opcodes */
- int draw_top, draw_bottom;
- byte *akpl,*akci,*aksq;
- AkosOffset *akof;
- byte *akcd;
-
- byte palette[256];
-};
-
-struct BompDrawData {
- byte *out;
- int outwidth, outheight;
- int x,y;
- byte scale_x, scale_y;
- byte *dataptr;
- int srcwidth, srcheight;
-};
-
struct LoadedCostume {
byte *_ptr;
byte *_dataptr;
@@ -584,16 +455,6 @@ struct Actor {
byte palette[64];
};
-struct CameraData {
- ScummPoint _cur;
- ScummPoint _dest;
- ScummPoint _accel;
- ScummPoint _last;
- int _leftTrigger, _rightTrigger;
- byte _follows, _mode;
- bool _movingToActor;
-};
-
#define ARRAY_HDR_SIZE 6
struct ArrayHeader {
int16 dim1_size;
@@ -623,92 +484,6 @@ struct StringTab {
bool no_talk_anim,t_no_talk_anim;
};
-struct ColorCycle {
- uint16 delay;
- uint16 counter;
- uint16 flags;
- byte start;
- byte end;
-};
-
-struct Gdi {
- Scumm *_vm;
-
- byte *_readPtr;
- uint _readOffs;
-
- int8 _cursorActive;
-
- int _numZBuffer;
- int _imgBufOffs[4];
- byte _disable_zbuffer;
-
- bool _useOrDecompress;
- byte _numLinesToProcess;
- byte _tempNumLines;
- byte _currentX;
- byte _hotspot_x;
- byte _hotspot_y;
- int16 _drawMouseX;
- int16 _drawMouseY;
- int16 _mask_top, _mask_bottom, _mask_right, _mask_left;
- byte _currentCursor;
- byte _mouseColors[4];
- byte _mouseColor;
- byte _mouseClipMask1, _mouseClipMask2, _mouseClipMask3;
- byte _mouseColorIndex;
- byte *_mouseMaskPtr;
- byte *_smap_ptr;
- byte *_backbuff_ptr;
- byte *_bgbak_ptr;
- byte *_mask_ptr;
- byte *_mask_ptr_dest;
- byte *_z_plane_ptr;
-
- byte _decomp_shr, _decomp_mask;
- byte _transparency;
- uint16 _vertStripNextInc;
- byte *_backupIsWhere;
-
- void unkDecode1();
- void unkDecode2();
- void unkDecode3();
- void unkDecode4();
- void unkDecode5();
- void unkDecode6();
- void unkDecode7();
- void unkDecode8();
- void unkDecode9();
- void unkDecode10();
- void unkDecode11();
-
- void decompressBitmap();
-
- void drawBitmap(byte *ptr, VirtScreen *vs, int x, int y, int h, int stripnr, int numstrip, byte flag);
- void clearUpperMask();
-
- void disableZBuffer() { _disable_zbuffer++; }
- void enableZBuffer() { _disable_zbuffer--; }
-
- void draw8ColWithMasking();
- void clear8ColWithMasking();
- void clear8Col();
- void decompressMaskImgOr();
- void decompressMaskImg();
-
- void resetBackground(byte top, byte bottom, int strip);
- void drawStripToScreen(VirtScreen *vs, int x, int w, int t, int b);
- void updateDirtyScreen(VirtScreen *vs);
-
-
- enum DrawBitmapFlags {
- dbAllowMaskOr = 1,
- dbDrawMaskOnBoth = 2,
- dbClear = 4
- };
-};
-
-
enum GameId {
GID_TENTACLE = 1,
GID_MONKEY2 = 2,
@@ -746,9 +521,6 @@ enum GameFeatures {
GF_NO_SCALLING = 2048
};
-struct ScummDebugger;
-struct Serializer;
-
enum WhereIsObject {
WIO_NOT_FOUND = -1,
WIO_INVENTORY = 0,
@@ -763,15 +535,12 @@ enum MouseButtonStatus {
msClicked = 2
};
-enum VideoMode {
- VIDEO_SCALE = 0,
- VIDEO_2XSAI = 1,
- VIDEO_SUPERSAI = 2,
- VIDEO_SUPEREAGLE = 3
-};
-
+#include "gfx.h"
#include "boxes.h"
#include "sound.h"
+#include "akos.h"
+#include "smush.h"
+
class Scumm {
public:
@@ -1124,8 +893,6 @@ public:
byte *getOBCDFromObject(int obj);
int getDistanceBetween(bool is_obj_1, int b, int c, bool is_obj_2, int e, int f);
-
-
/* Should be in akos class */
bool akos_drawCostume(AkosRenderer *ar);
void akos_setPalette(AkosRenderer *ar, byte *palette);
@@ -1444,12 +1211,10 @@ public:
/* Walkbox / Navigation class */
- int _maxBoxVertexHeap;
- byte *_boxMatrixPtr4, *_boxMatrixPtr1, *_boxMatrixPtr3;
- int _boxPathVertexHeapIndex;
- int _boxMatrixItem;
+ int _maxBoxVertexHeap, _boxPathVertexHeapIndex, _boxMatrixItem;
+ byte *_boxMatrixPtr4, *_boxMatrixPtr1, *_boxMatrixPtr3;
- gate_location p[5];
+ ScummPoint p[5]; /* Gate locations */
int gate1ax, gate1ay, gate1bx, gate1by, gate2ax, gate2ay, gate2bx, gate2by;
uint16 _extraBoxFlags[65];
int16 _foundPathX, _foundPathY;
@@ -1486,7 +1251,6 @@ public:
void createBoxMatrix();
-
/* String class */
CharsetRenderer charset;
byte _charsetColor;
@@ -1901,49 +1665,6 @@ public:
};
-enum AkosOpcodes{
- AKC_Return = 0xC001,
- AKC_SetVar = 0xC010,
- AKC_CmdQue3 = 0xC015,
- AKC_ComplexChan = 0xC020,
- AKC_Jump = 0xC030,
- AKC_JumpIfSet = 0xC031,
- AKC_AddVar = 0xC040,
- AKC_Ignore = 0xC050,
- AKC_IncVar = 0xC060,
- AKC_CmdQue3Quick = 0xC061,
- AKC_SkipStart = 0xC070,
- AKC_SkipE = 0xC070,
- AKC_SkipNE = 0xC071,
- AKC_SkipL = 0xC072,
- AKC_SkipLE = 0xC073,
- AKC_SkipG = 0xC074,
- AKC_SkipGE = 0xC075,
- AKC_StartAnim = 0xC080,
- AKC_StartVarAnim = 0xC081,
- AKC_Random = 0xC082,
- AKC_SetActorClip = 0xC083,
- AKC_StartAnimInActor = 0xC084,
- AKC_SetVarInActor = 0xC085,
- AKC_HideActor = 0xC086,
- AKC_SetDrawOffs = 0xC087,
- AKC_JumpTable = 0xC088,
- AKC_SoundStuff = 0xC089,
- AKC_Flip = 0xC08A,
- AKC_Cmd3 = 0xC08B,
- AKC_Ignore3 = 0xC08C,
- AKC_Ignore2 = 0xC08D,
- AKC_JumpStart = 0xC090,
- AKC_JumpE = 0xC090,
- AKC_JumpNE = 0xC091,
- AKC_JumpL = 0xC092,
- AKC_JumpLE = 0xC093,
- AKC_JumpG = 0xC094,
- AKC_JumpGE = 0xC095,
- AKC_ClearFlag = 0xC09F
-};
-
-
struct ScummDebugger {
Scumm *_s;
byte _command;