aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVincent Hamm2002-02-23 23:23:28 +0000
committerVincent Hamm2002-02-23 23:23:28 +0000
commitcef0ef44d35f9cc05fe51050c116adb86edc66ea (patch)
tree25c718282287d9bec9eb5d285590c482aee67072
parentb4123064b491aafc8de04da50da85daa116b1cfd (diff)
downloadscummvm-rg350-cef0ef44d35f9cc05fe51050c116adb86edc66ea.tar.gz
scummvm-rg350-cef0ef44d35f9cc05fe51050c116adb86edc66ea.tar.bz2
scummvm-rg350-cef0ef44d35f9cc05fe51050c116adb86edc66ea.zip
Changed the scummVar system to a dynamic one. Started to remove all the reference to FULL_TROTTLE define.
svn-id: r3624
-rw-r--r--Makefile2
-rw-r--r--debug.cpp2
-rw-r--r--resource.cpp12
-rw-r--r--script_v2.cpp331
-rw-r--r--scumm.h280
-rw-r--r--scummvm.cpp10
-rw-r--r--vars.cpp171
7 files changed, 456 insertions, 352 deletions
diff --git a/Makefile b/Makefile
index 4bb73e9f2e..dc59521700 100644
--- a/Makefile
+++ b/Makefile
@@ -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 \
diff --git a/debug.cpp b/debug.cpp
index 76a11c4548..8b9ea334c4 100644
--- a/debug.cpp
+++ b/debug.cpp
@@ -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;
}
diff --git a/resource.cpp b/resource.cpp
index 52dea3e68e..77f983e40d 100644
--- a/resource.cpp
+++ b/resource.cpp
@@ -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)
diff --git a/script_v2.cpp b/script_v2.cpp
index 30a7982851..19450dff9d 100644
--- a/script_v2.cpp
+++ b/script_v2.cpp
@@ -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;
- }
-
-#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;
+ 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;
- 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 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 107: /* set actor scale */
+ a = derefActorSafe(args[1], "o6_miscops: 107");
+ a->scalex = args[2];
+ a->needBgReset = true;
+ a->needRedraw = true;
+ break;
- case 110:
- gdi.clearUpperMask();
- 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 111:
- a = derefActorSafe(args[1], "o6_miscops: 111");
- a->shadow_mode = args[2] + args[3];
- break;
+ case 110:
+ gdi.clearUpperMask();
+ 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 111:
+ a = derefActorSafe(args[1], "o6_miscops: 111");
+ a->shadow_mode = args[2] + args[3];
+ 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 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 117:
+ error("stub o6_miscOps_117()");
+ break;
- case 119:
- enqueueObject(args[1], args[2], args[3], args[4], args[5],
- args[6], args[7], args[8], 0);
- 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 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() {
diff --git a/scumm.h b/scumm.h
index e18942c987..dc3a13d34a 100644
--- a/scumm.h
+++ b/scumm.h
@@ -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{
diff --git a/scummvm.cpp b/scummvm.cpp
index 81a38edbe5..87e99912ad 100644
--- a/scummvm.cpp
+++ b/scummvm.cpp
@@ -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}
diff --git a/vars.cpp b/vars.cpp
new file mode 100644
index 0000000000..0a16d0a62b
--- /dev/null
+++ b/vars.cpp
@@ -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;
+} \ No newline at end of file