Changed the scummVar system to a dynamic one. Started to remove all the reference to FULL_TROTTLE define.

svn-id: r3624
This commit is contained in:
Vincent Hamm 2002-02-23 23:23:28 +00:00
parent b4123064b4
commit cef0ef44d3
7 changed files with 456 additions and 352 deletions

View file

@ -15,7 +15,7 @@ OBJS = actor.o boxes.o costume.o gfx.o object.o resource.o \
saveload.o script.o scummvm.o sound.o string.o \
sys.o verbs.o sdl.o script_v1.o script_v2.o debug.o gui.o \
sound/imuse.o sound/fmopl.o sound/adlib.o sound/gmidi.o debugrl.o \
akos.o
akos.o vars.o
DISTFILES=$(OBJS:.o=.cpp) Makefile scumm.h scummsys.h stdafx.h stdafx.cpp \
windows.cpp debugrl.h whatsnew.txt readme.txt copying.txt \

View file

@ -101,7 +101,7 @@ bool ScummDebugger::do_command() {
printf("Enter a room number...\n");
} else {
int room=atoi(_parameters);
_s->actor[_s->_vars[VAR_EGO]].room=room;
_s->actor[_s->_vars[_s->VAR_EGO]].room=room;
_s->startScene(room, 0, 0);
_s->_fullRedraw = 1;
}

View file

@ -62,14 +62,11 @@ void Scumm::openRoom(int room) {
_fileOffset = _roomFileOffsets[room];
return;
}
#if defined(FULL_THROTTLE)
sprintf(buf, "%s.la%d", _exe_name,
room==0 ? 0 : res.roomno[rtRoom][room]);
_encbyte = (_features & GF_USE_KEY) ? 0x69 : 0;
#else
if (!(_features & GF_SMALL_HEADER)) {
sprintf(buf, "%s.%.3d", _exe_name, room==0 ? 0 : res.roomno[rtRoom][room]);
if(_features & GF_AFTER_V7)
sprintf(buf, "%s.la%d", _exe_name, room==0 ? 0 : res.roomno[rtRoom][room]);
else
sprintf(buf, "%s.%.3d", _exe_name, room==0 ? 0 : res.roomno[rtRoom][room]);
_encbyte = (_features & GF_USE_KEY) ? 0x69 : 0;
} else if(!(_features & GF_SMALL_NAMES)) {
if(room==0 || room>=900) {
@ -91,7 +88,6 @@ void Scumm::openRoom(int room) {
else
_encbyte = 0;
}
#endif
if (openResourceFile(buf)) {
if (room==0)

View file

@ -2143,189 +2143,186 @@ void Scumm::o6_miscOps() {
getStackList(args,sizeof(args)/sizeof(args[0]));
#if defined(FULL_THROTTLE)
switch(args[0]) {
case 4:
grabCursor(args[1], args[2], args[3], args[4]);
break;
case 6:
warning("o6_miscOps: startVideo(%d,%s)", args[1], getStringAddress(_vars[0xf6/2]));
break;
case 7:
warning("o6_miscOps: stub7()");
break;
case 10:
warning("o6_miscOps: stub10(%d,%d,%d,%d)",args[1],args[2],args[3],args[4]);
break;
case 11:
warning("o6_miscOps: stub11(%d)", args[1]);
break;
case 12:
setCursorImg(args[1], -1, args[2]);
break;
case 13:
warning("o6_miscOps: stub13(%d,%d,%d,%d)",args[1],args[2],args[3],args[4]);
break;
case 14:
remapActor(derefActorSafe(args[1], "o6_miscOps:14"), args[2],args[3],args[4],args[5]);
break;
case 15:
warning("o6_miscOps: stub15(%d)", args[1]);
break;
case 16: {
byte buf[200];
_msgPtrToAdd = buf;
addMessageToStack(getStringAddress(_vars[VAR_STRING2DRAW]));
warning("o6_miscOps: drawString(%s,charset=%d,color=%d,x=%d,y=%d)",buf, args[1],args[2],args[3],args[4]);
break;
}
case 17:
warning("o6_miscOps: stub17(%d,%d,%d,%d)",args[1],args[2],args[3],args[4]);
break;
case 18:
warning("o6_miscOps: stub18(%d,%d)", args[1], args[2]);
break;
case 107:
a = derefActorSafe(args[1], "o6_miscops: 107");
a->scalex = args[2];
a->needBgReset = true;
a->needRedraw = true;
break;
case 108:
setupShadowPalette(args[1],args[2],args[3],args[4],args[5],args[6]);
break;
case 109:
setupShadowPalette(0, args[1],args[2],args[3],args[4],args[5]);
break;
case 114:
warning("o6_miscOps: stub114()");
break;
case 117:
freezeScripts(2);
break;
case 118:
enqueueObject(args[1],args[2],args[3],args[4],args[5],args[6],args[7],args[8], 3);
break;
case 119:
enqueueObject(args[1],args[2],args[3],args[4],args[5],args[6],args[7],args[8], 0);
break;
case 120:
warning("o6_miscOps: stub120(%d,%d)", args[1], args[2]);
break;
case 124:
warning("o6_miscOps: stub124(%d)", args[1]);
break;
}
if(_features & GF_AFTER_V7) {
switch(args[0]) {
case 4:
grabCursor(args[1], args[2], args[3], args[4]);
break;
case 6:
warning("o6_miscOps: startVideo(%d,%s)", args[1], getStringAddress(_vars[0xf6/2]));
break;
case 7:
warning("o6_miscOps: stub7()");
break;
case 10:
warning("o6_miscOps: stub10(%d,%d,%d,%d)",args[1],args[2],args[3],args[4]);
break;
case 11:
warning("o6_miscOps: stub11(%d)", args[1]);
break;
case 12:
setCursorImg(args[1], -1, args[2]);
break;
case 13:
warning("o6_miscOps: stub13(%d,%d,%d,%d)",args[1],args[2],args[3],args[4]);
break;
case 14:
remapActor(derefActorSafe(args[1], "o6_miscOps:14"), args[2],args[3],args[4],args[5]);
break;
case 15:
warning("o6_miscOps: stub15(%d)", args[1]);
break;
case 16: {
byte buf[200];
_msgPtrToAdd = buf;
addMessageToStack(getStringAddress(_vars[VAR_STRING2DRAW]));
warning("o6_miscOps: drawString(%s,charset=%d,color=%d,x=%d,y=%d)",buf, args[1],args[2],args[3],args[4]);
break;
}
case 17:
warning("o6_miscOps: stub17(%d,%d,%d,%d)",args[1],args[2],args[3],args[4]);
break;
case 18:
warning("o6_miscOps: stub18(%d,%d)", args[1], args[2]);
break;
case 107:
a = derefActorSafe(args[1], "o6_miscops: 107");
a->scalex = args[2];
a->needBgReset = true;
a->needRedraw = true;
break;
case 108:
setupShadowPalette(args[1],args[2],args[3],args[4],args[5],args[6]);
break;
case 109:
setupShadowPalette(0, args[1],args[2],args[3],args[4],args[5]);
break;
case 114:
warning("o6_miscOps: stub114()");
break;
case 117:
freezeScripts(2);
break;
case 118:
enqueueObject(args[1],args[2],args[3],args[4],args[5],args[6],args[7],args[8], 3);
break;
case 119:
enqueueObject(args[1],args[2],args[3],args[4],args[5],args[6],args[7],args[8], 0);
break;
case 120:
warning("o6_miscOps: stub120(%d,%d)", args[1], args[2]);
break;
case 124:
warning("o6_miscOps: stub124(%d)", args[1]);
break;
}
} else {
switch(args[0]) {
case 3:
warning("o6_miscOps: nothing in 3");
break;
case 4:
grabCursor(args[1], args[2], args[3], args[4]);
break;
case 5:
unkVirtScreen4(args[1]);
break;
case 6:
_fullRedraw = 1;
redrawBGAreas();
for (i=0; i<NUM_ACTORS; i++)
derefActor(i)->needRedraw = true;
processActors();
screenEffect(args[1]);
break;
case 8:
startManiac();
break;
case 9:
unkMiscOp9();
break;
#else
switch(args[0]) {
case 3:
warning("o6_miscOps: nothing in 3");
break;
case 4:
grabCursor(args[1], args[2], args[3], args[4]);
break;
case 5:
unkVirtScreen4(args[1]);
break;
case 6:
_fullRedraw = 1;
redrawBGAreas();
for (i=0; i<NUM_ACTORS; i++)
derefActor(i)->needRedraw = true;
processActors();
screenEffect(args[1]);
break;
case 8:
startManiac();
break;
case 9:
unkMiscOp9();
break;
case 124: /* samnmax */
warning("o6_miscOps: _saveSound=%d", args[1]);
break;
case 124: /* samnmax */
warning("o6_miscOps: _saveSound=%d", args[1]);
break;
case 104: /* samnmax */
nukeFlObjects(args[2], args[3]);
break;
case 104: /* samnmax */
nukeFlObjects(args[2], args[3]);
break;
case 106:
error("stub o6_miscOps_106()");
break;
case 106:
error("stub o6_miscOps_106()");
break;
case 107: /* set actor scale */
a = derefActorSafe(args[1], "o6_miscops: 107");
a->scalex = args[2];
a->needBgReset = true;
a->needRedraw = true;
break;
case 107: /* set actor scale */
a = derefActorSafe(args[1], "o6_miscops: 107");
a->scalex = args[2];
a->needBgReset = true;
a->needRedraw = true;
break;
case 108:
case 109:
warning("stub o6_miscOps_108(%d,%d,%d,%d,%d,%d,%d)",
args[1], args[2], args[3], args[4], args[5],
0,256);
break;
case 108:
case 109:
warning("stub o6_miscOps_108(%d,%d,%d,%d,%d,%d,%d)",args[1], args[2], args[3], args[4], args[5],0,256);
break;
case 110:
gdi.clearUpperMask();
break;
case 110:
gdi.clearUpperMask();
break;
case 111:
a = derefActorSafe(args[1], "o6_miscops: 111");
a->shadow_mode = args[2] + args[3];
break;
case 111:
a = derefActorSafe(args[1], "o6_miscops: 111");
a->shadow_mode = args[2] + args[3];
break;
case 112:
error("stub o6_miscOps_112(%d,%d,%d,%d,%d,%d,%d)",
args[1], args[2], args[3], args[4], args[5],
args[6], args[7]);
break;
case 114: /* palette? */
error("stub o6_miscOps_114()");
break;
case 112:
error("stub o6_miscOps_112(%d,%d,%d,%d,%d,%d,%d)",
args[1], args[2], args[3], args[4], args[5],
args[6], args[7]);
break;
case 114: /* palette? */
error("stub o6_miscOps_114()");
break;
case 117:
error("stub o6_miscOps_117()");
break;
case 117:
error("stub o6_miscOps_117()");
break;
case 118:
error("stub o6_miscOps_118(%d,%d,%d,%d,%d,%d,%d)",
args[1], args[2], args[3], args[4], args[5],
args[6], args[7]);
break;
case 118:
error("stub o6_miscOps_118(%d,%d,%d,%d,%d,%d,%d)",
args[1], args[2], args[3], args[4], args[5],
args[6], args[7]);
break;
case 119:
enqueueObject(args[1], args[2], args[3], args[4], args[5],
args[6], args[7], args[8], 0);
break;
case 119:
enqueueObject(args[1], args[2], args[3], args[4], args[5],
args[6], args[7], args[8], 0);
break;
case 120:
swapPalColors(args[1],args[2]);
break;
case 120:
swapPalColors(args[1],args[2]);
break;
case 121:
error("stub o6_miscOps_121(%d)", args[1]);
break;
case 121:
error("stub o6_miscOps_121(%d)", args[1]);
break;
case 122:
error("stub o6_miscOps_122(%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d)",
args[1],args[2],args[3],args[4],
args[5],args[6],args[7],args[8],
args[9],args[10],args[11],args[12]);
break;
case 122:
error("stub o6_miscOps_122(%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d)",
args[1],args[2],args[3],args[4],
args[5],args[6],args[7],args[8],
args[9],args[10],args[11],args[12]);
break;
case 123:
error("stub o6_miscOps_123(%d,%d)", args[1], args[2]);
break;
case 123:
error("stub o6_miscOps_123(%d,%d)", args[1], args[2]);
break;
default:
error("o6_miscOps: default case %d", args[0]);
default:
error("o6_miscOps: default case %d", args[0]);
}
}
#endif
}
void Scumm::o6_kernelFunction() {

280
scumm.h
View file

@ -294,179 +294,6 @@ enum {
sleUint32 = 5
};
#if !defined(FULL_THROTTLE)
enum ScummVars {
VAR_EGO = 1,
VAR_CAMERA_POS_X = 2,
VAR_HAVE_MSG = 3,
VAR_ROOM = 4,
VAR_OVERRIDE = 5,
VAR_MACHINE_SPEED = 6,
VAR_ME = 7,
VAR_NUM_ACTOR = 8,
VAR_CURRENT_LIGHTS = 9,
VAR_CURRENTDRIVE = 10,
VAR_TMR_1 = 11,
VAR_TMR_2 = 12,
VAR_TMR_3 = 13,
VAR_MUSIC_FLAG = 14,
VAR_ACTOR_RANGE_MIN = 15,
VAR_ACTOR_RANGE_MAX = 16,
VAR_CAMERA_MIN_X = 17,
VAR_CAMERA_MAX_X = 18,
VAR_TIMER_NEXT = 19,
VAR_VIRT_MOUSE_X = 20,
VAR_VIRT_MOUSE_Y = 21,
VAR_ROOM_RESOURCE = 22,
VAR_LAST_SOUND = 23,
VAR_CUTSCENEEXIT_KEY = 24,
VAR_TALK_ACTOR = 25,
VAR_CAMERA_FAST_X = 26,
VAR_SCROLL_SCRIPT = 27,
VAR_ENTRY_SCRIPT = 28,
VAR_ENTRY_SCRIPT2 = 29,
VAR_EXIT_SCRIPT = 30,
VAR_EXIT_SCRIPT2 = 31,
VAR_VERB_SCRIPT = 32,
VAR_SENTENCE_SCRIPT = 33,
VAR_HOOK_SCRIPT = 34,
VAR_CUTSCENE_START_SCRIPT = 35,
VAR_CUTSCENE_END_SCRIPT = 36,
VAR_CHARINC = 37,
VAR_WALKTO_OBJ = 38,
VAR_DEBUGMODE = 39,
VAR_HEAPSPACE = 40,
VAR_RESTART_KEY = 42,
VAR_PAUSE_KEY = 43,
VAR_MOUSE_X = 44,
VAR_MOUSE_Y = 45,
VAR_TIMER = 46,
VAR_TMR_4 = 47,
VAR_SOUNDCARD = 48,
VAR_VIDEOMODE = 49,
VAR_SAVELOADDIALOG_KEY = 50,
VAR_FIXEDDISK = 51,
VAR_CURSORSTATE = 52,
VAR_USERPUT = 53,
VAR_SOUNDRESULT = 56,
VAR_TALKSTOP_KEY = 57,
VAR_59 = 59,
VAR_SOUNDPARAM = 64,
VAR_SOUNDPARAM2 = 65,
VAR_SOUNDPARAM3 = 66,
VAR_MOUSEPRESENT = 67,
VAR_PERFORMANCE_1 = 68,
VAR_PERFORMANCE_2 = 69,
VAR_ROOM_FLAG = 70,
VAR_GAME_LOADED = 71,
VAR_NEW_ROOM = 72,
VAR_VERSION = 75,
VAR_V5_DRAWFLAGS = 9,
VAR_MI1_TIMER = 14,
VAR_V5_OBJECT_LO = 15,
VAR_V5_OBJECT_HI = 16,
VAR_V5_TALK_STRING_Y = 54,
VAR_V5_CHARFLAG = 60,
VAR_V6_SCREEN_WIDTH = 41,
VAR_V6_SCREEN_HEIGHT = 54,
VAR_V6_EMSSPACE = 76,
VAR_V6_RANDOM_NR = 118,
};
#else
enum ScummVars {
VAR_MOUSE_X = 1,
VAR_MOUSE_Y = 2,
VAR_VIRT_MOUSE_X = 3,
VAR_VIRT_MOUSE_Y = 4,
VAR_V6_SCREEN_WIDTH = 5,
VAR_V6_SCREEN_HEIGHT = 6,
VAR_CAMERA_POS_X = 7,
VAR_CAMERA_POS_Y = 8,
VAR_OVERRIDE = 9,
VAR_ROOM = 10,
VAR_ROOM_RESOURCE = 11,
VAR_TALK_ACTOR = 12,
VAR_HAVE_MSG = 13,
VAR_TIMER = 14,
VAR_TMR_4 = 15,
VAR_LEFTBTN_DOWN = 22,
VAR_RIGHTBTN_DOWN = 23,
VAR_LEFTBTN_HOLD = 24,
VAR_RIGHTBTN_HOLD = 25,
VAR_PERFORMANCE_1 = 26,
VAR_PERFORMANCE_2 = 27,
VAR_GAME_LOADED = 29,
VAR_V6_RANDOM_NR = 34,
VAR_NEW_ROOM = 35,
VAR_WALKTO_OBJ = 36,
VAR_SCROLL_SCRIPT = 50,
VAR_ENTRY_SCRIPT = 51,
VAR_ENTRY_SCRIPT2 = 52,
VAR_EXIT_SCRIPT = 53,
VAR_EXIT_SCRIPT2 = 54,
VAR_VERB_SCRIPT = 55,
VAR_SENTENCE_SCRIPT = 56,
VAR_HOOK_SCRIPT = 57,
VAR_CUTSCENE_START_SCRIPT = 58,
VAR_CUTSCENE_END_SCRIPT = 59,
VAR_UNK_SCRIPT = 60,
VAR_UNK_SCRIPT_2 = 61,
VAR_PAUSE_KEY = 63,
VAR_RESTART_KEY = 64, /* ?? */
VAR_TALKSTOP_KEY = 65, /* ?? */
VAR_SAVELOADDIALOG_KEY = 66, /* ?? */
VAR_CUTSCENEEXIT_KEY = 24,
VAR_TIMER_NEXT = 97,
VAR_TMR_1 = 98,
VAR_TMR_2 = 99,
VAR_TMR_3 = 100,
VAR_CAMERA_MIN_X = 101,
VAR_CAMERA_MAX_X = 102,
VAR_CAMERA_MIN_Y = 103,
VAR_CAMERA_MAX_Y = 104,
VAR_CAMERA_THRESHOLD_X = 105,
VAR_CAMERA_THRESHOLD_Y = 106,
VAR_CAMERA_SPEED_X = 107,
VAR_CAMERA_SPEED_Y = 108,
VAR_CAMERA_ACCEL_X = 109,
VAR_CAMERA_ACCEL_Y = 110,
VAR_EGO = 111,
VAR_CURSORSTATE = 112,
VAR_USERPUT = 113,
VAR_DEFAULT_TALK_DELAY = 114,
VAR_CHARINC = 115,
VAR_DEBUGMODE = 116,
VAR_CHARSET_MASK = 119,
//VAR_V5_DRAWFLAGS = 9,
VAR_MI1_TIMER = 14,
VAR_V5_OBJECT_LO = 15,
VAR_V5_OBJECT_HI = 16,
VAR_V5_TALK_STRING_Y = 54,
VAR_V5_CHARFLAG = 60,
VAR_V6_EMSSPACE = 76,
VAR_STRING2DRAW = 130,
};
#endif
enum ResTypes {
rtFirst = 1,
rtRoom = 1,
@ -913,6 +740,8 @@ enum GameId {
GID_ZAK256 = 8,
GID_INDY3_256 = 9,
GID_LOOM = 10,
GID_FT = 11,
GID_DIG = 12,
};
enum GameFeatures {
@ -2102,6 +1931,111 @@ struct Scumm {
void cost_decodeData(Actor *a, int frame, uint usemask);
void redrawLines(int from, int to);
void setupScummVarsOld();
void setupScummVarsNew();
byte VAR_EGO;
byte VAR_CAMERA_POS_X;
byte VAR_HAVE_MSG;
byte VAR_ROOM;
byte VAR_OVERRIDE;
byte VAR_MACHINE_SPEED;
byte VAR_ME;
byte VAR_NUM_ACTOR;
byte VAR_CURRENT_LIGHTS;
byte VAR_CURRENTDRIVE;
byte VAR_TMR_1;
byte VAR_TMR_2;
byte VAR_TMR_3;
byte VAR_MUSIC_FLAG;
byte VAR_ACTOR_RANGE_MIN;
byte VAR_ACTOR_RANGE_MAX;
byte VAR_CAMERA_MIN_X;
byte VAR_CAMERA_MAX_X;
byte VAR_TIMER_NEXT;
byte VAR_VIRT_MOUSE_X;
byte VAR_VIRT_MOUSE_Y;
byte VAR_ROOM_RESOURCE;
byte VAR_LAST_SOUND;
byte VAR_CUTSCENEEXIT_KEY;
byte VAR_TALK_ACTOR;
byte VAR_CAMERA_FAST_X;
byte VAR_SCROLL_SCRIPT;
byte VAR_ENTRY_SCRIPT;
byte VAR_ENTRY_SCRIPT2;
byte VAR_EXIT_SCRIPT;
byte VAR_EXIT_SCRIPT2;
byte VAR_VERB_SCRIPT;
byte VAR_SENTENCE_SCRIPT;
byte VAR_HOOK_SCRIPT;
byte VAR_CUTSCENE_START_SCRIPT;
byte VAR_CUTSCENE_END_SCRIPT;
byte VAR_CHARINC;
byte VAR_WALKTO_OBJ;
byte VAR_DEBUGMODE;
byte VAR_HEAPSPACE;
byte VAR_RESTART_KEY;
byte VAR_PAUSE_KEY;
byte VAR_MOUSE_X;
byte VAR_MOUSE_Y;
byte VAR_TIMER;
byte VAR_TMR_4;
byte VAR_SOUNDCARD;
byte VAR_VIDEOMODE;
byte VAR_SAVELOADDIALOG_KEY;
byte VAR_FIXEDDISK;
byte VAR_CURSORSTATE;
byte VAR_USERPUT;
byte VAR_SOUNDRESULT;
byte VAR_TALKSTOP_KEY;
byte VAR_59;
byte VAR_SOUNDPARAM;
byte VAR_SOUNDPARAM2;
byte VAR_SOUNDPARAM3;
byte VAR_MOUSEPRESENT;
byte VAR_PERFORMANCE_1;
byte VAR_PERFORMANCE_2;
byte VAR_ROOM_FLAG;
byte VAR_GAME_LOADED;
byte VAR_NEW_ROOM;
byte VAR_VERSION;
byte VAR_V5_DRAWFLAGS;
byte VAR_MI1_TIMER;
byte VAR_V5_OBJECT_LO;
byte VAR_V5_OBJECT_HI;
byte VAR_V5_TALK_STRING_Y;
byte VAR_V5_CHARFLAG;
byte VAR_V6_SCREEN_WIDTH;
byte VAR_V6_SCREEN_HEIGHT;
byte VAR_V6_EMSSPACE;
byte VAR_V6_RANDOM_NR;
byte VAR_STRING2DRAW;
byte VAR_CAMERA_POS_Y;
byte VAR_CAMERA_MIN_Y;
byte VAR_CAMERA_MAX_Y;
byte VAR_CAMERA_THRESHOLD_X;
byte VAR_CAMERA_THRESHOLD_Y;
byte VAR_CAMERA_SPEED_X;
byte VAR_CAMERA_SPEED_Y;
byte VAR_CAMERA_ACCEL_X;
byte VAR_CAMERA_ACCEL_Y;
byte VAR_LEFTBTN_DOWN;
byte VAR_RIGHTBTN_DOWN;
byte VAR_LEFTBTN_HOLD;
byte VAR_RIGHTBTN_HOLD;
byte VAR_UNK_SCRIPT;
byte VAR_UNK_SCRIPT_2;
byte VAR_DEFAULT_TALK_DELAY;
byte VAR_CHARSET_MASK;
};
enum AkosOpcodes{

View file

@ -206,6 +206,11 @@ void Scumm::scummMain(int argc, char **argv) {
_features = GF_DEFAULT;
}
if(_features & GF_AFTER_V7)
setupScummVarsNew();
else
setupScummVarsOld();
if (_gameId==GID_INDY4 && _bootParam==0) {
_bootParam = -7873;
}
@ -465,8 +470,9 @@ static const VersionSettings version_settings[] = {
{"snmdemo", "Sam & Max (Demo)", GID_SAMNMAX, 6, 3, 0, GF_NEW_OPCODES|GF_AFTER_V6|GF_USE_KEY},
/* Scumm Version 7 */
{"ft", "Full Throttle", GID_SAMNMAX, 7, 3, 0, GF_NEW_OPCODES|GF_AFTER_V6|GF_AFTER_V7},
{"ft", "Full Throttle", GID_FT, 7, 3, 0, GF_NEW_OPCODES|GF_AFTER_V6|GF_AFTER_V7},
{"dig", "The Dig", GID_DIG, 7, 5, 0, GF_NEW_OPCODES|GF_AFTER_V6|GF_AFTER_V7},
/* Scumm Version 8 */
// {"curse", "The Curse of Monkey Island", GID_CMI, 8, 1, 0,},
{NULL,NULL}

171
vars.cpp Normal file
View file

@ -0,0 +1,171 @@
#include "stdafx.h"
#include "scumm.h"
void Scumm::setupScummVarsOld(){
VAR_EGO = 1;
VAR_CAMERA_POS_X = 2;
VAR_HAVE_MSG = 3;
VAR_ROOM = 4;
VAR_OVERRIDE = 5;
VAR_MACHINE_SPEED = 6;
VAR_ME = 7;
VAR_NUM_ACTOR = 8;
VAR_CURRENT_LIGHTS = 9;
VAR_CURRENTDRIVE = 10;
VAR_TMR_1 = 11;
VAR_TMR_2 = 12;
VAR_TMR_3 = 13;
VAR_MUSIC_FLAG = 14;
VAR_ACTOR_RANGE_MIN = 15;
VAR_ACTOR_RANGE_MAX = 16;
VAR_CAMERA_MIN_X = 17;
VAR_CAMERA_MAX_X = 18;
VAR_TIMER_NEXT = 19;
VAR_VIRT_MOUSE_X = 20;
VAR_VIRT_MOUSE_Y = 21;
VAR_ROOM_RESOURCE = 22;
VAR_LAST_SOUND = 23;
VAR_CUTSCENEEXIT_KEY = 24;
VAR_TALK_ACTOR = 25;
VAR_CAMERA_FAST_X = 26;
VAR_SCROLL_SCRIPT = 27;
VAR_ENTRY_SCRIPT = 28;
VAR_ENTRY_SCRIPT2 = 29;
VAR_EXIT_SCRIPT = 30;
VAR_EXIT_SCRIPT2 = 31;
VAR_VERB_SCRIPT = 32;
VAR_SENTENCE_SCRIPT = 33;
VAR_HOOK_SCRIPT = 34;
VAR_CUTSCENE_START_SCRIPT = 35;
VAR_CUTSCENE_END_SCRIPT = 36;
VAR_CHARINC = 37;
VAR_WALKTO_OBJ = 38;
VAR_DEBUGMODE = 39;
VAR_HEAPSPACE = 40;
VAR_RESTART_KEY = 42;
VAR_PAUSE_KEY = 43;
VAR_MOUSE_X = 44;
VAR_MOUSE_Y = 45;
VAR_TIMER = 46;
VAR_TMR_4 = 47;
VAR_SOUNDCARD = 48;
VAR_VIDEOMODE = 49;
VAR_SAVELOADDIALOG_KEY = 50;
VAR_FIXEDDISK = 51;
VAR_CURSORSTATE = 52;
VAR_USERPUT = 53;
VAR_SOUNDRESULT = 56;
VAR_TALKSTOP_KEY = 57;
VAR_59 = 59;
VAR_SOUNDPARAM = 64;
VAR_SOUNDPARAM2 = 65;
VAR_SOUNDPARAM3 = 66;
VAR_MOUSEPRESENT = 67;
VAR_PERFORMANCE_1 = 68;
VAR_PERFORMANCE_2 = 69;
VAR_ROOM_FLAG = 70;
VAR_GAME_LOADED = 71;
VAR_NEW_ROOM = 72;
VAR_VERSION = 75;
VAR_V5_DRAWFLAGS = 9;
VAR_MI1_TIMER = 14;
VAR_V5_OBJECT_LO = 15;
VAR_V5_OBJECT_HI = 16;
VAR_V5_TALK_STRING_Y = 54;
VAR_V5_CHARFLAG = 60;
VAR_V6_SCREEN_WIDTH = 41;
VAR_V6_SCREEN_HEIGHT = 54;
VAR_V6_EMSSPACE = 76;
VAR_V6_RANDOM_NR = 118;
}
void Scumm::setupScummVarsNew() {
VAR_MOUSE_X = 1;
VAR_MOUSE_Y = 2;
VAR_VIRT_MOUSE_X = 3;
VAR_VIRT_MOUSE_Y = 4;
VAR_V6_SCREEN_WIDTH = 5;
VAR_V6_SCREEN_HEIGHT = 6;
VAR_CAMERA_POS_X = 7;
VAR_CAMERA_POS_Y = 8;
VAR_OVERRIDE = 9;
VAR_ROOM = 10;
VAR_ROOM_RESOURCE = 11;
VAR_TALK_ACTOR = 12;
VAR_HAVE_MSG = 13;
VAR_TIMER = 14;
VAR_TMR_4 = 15;
VAR_LEFTBTN_DOWN = 22;
VAR_RIGHTBTN_DOWN = 23;
VAR_LEFTBTN_HOLD = 24;
VAR_RIGHTBTN_HOLD = 25;
VAR_PERFORMANCE_1 = 26;
VAR_PERFORMANCE_2 = 27;
VAR_GAME_LOADED = 29;
VAR_V6_RANDOM_NR = 34;
VAR_NEW_ROOM = 35;
VAR_WALKTO_OBJ = 36;
VAR_SCROLL_SCRIPT = 50;
VAR_ENTRY_SCRIPT = 51;
VAR_ENTRY_SCRIPT2 = 52;
VAR_EXIT_SCRIPT = 53;
VAR_EXIT_SCRIPT2 = 54;
VAR_VERB_SCRIPT = 55;
VAR_SENTENCE_SCRIPT = 56;
VAR_HOOK_SCRIPT = 57;
VAR_CUTSCENE_START_SCRIPT = 58;
VAR_CUTSCENE_END_SCRIPT = 59;
VAR_UNK_SCRIPT = 60;
VAR_UNK_SCRIPT_2 = 61;
VAR_PAUSE_KEY = 63;
VAR_RESTART_KEY = 64; /* ?? */
VAR_TALKSTOP_KEY = 65; /* ?? */
VAR_SAVELOADDIALOG_KEY = 66; /* ?? */
VAR_CUTSCENEEXIT_KEY = 24;
VAR_TIMER_NEXT = 97;
VAR_TMR_1 = 98;
VAR_TMR_2 = 99;
VAR_TMR_3 = 100;
VAR_CAMERA_MIN_X = 101;
VAR_CAMERA_MAX_X = 102;
VAR_CAMERA_MIN_Y = 103;
VAR_CAMERA_MAX_Y = 104;
VAR_CAMERA_THRESHOLD_X = 105;
VAR_CAMERA_THRESHOLD_Y = 106;
VAR_CAMERA_SPEED_X = 107;
VAR_CAMERA_SPEED_Y = 108;
VAR_CAMERA_ACCEL_X = 109;
VAR_CAMERA_ACCEL_Y = 110;
VAR_EGO = 111;
VAR_CURSORSTATE = 112;
VAR_USERPUT = 113;
VAR_DEFAULT_TALK_DELAY = 114;
VAR_CHARINC = 115;
VAR_DEBUGMODE = 116;
VAR_CHARSET_MASK = 119;
//VAR_V5_DRAWFLAGS = 9;
VAR_MI1_TIMER = 14;
VAR_V5_OBJECT_LO = 15;
VAR_V5_OBJECT_HI = 16;
VAR_V5_TALK_STRING_Y = 54;
VAR_V5_CHARFLAG = 60;
VAR_V6_EMSSPACE = 76;
VAR_STRING2DRAW = 130;
}