diff options
author | Vincent Hamm | 2002-02-23 23:23:28 +0000 |
---|---|---|
committer | Vincent Hamm | 2002-02-23 23:23:28 +0000 |
commit | cef0ef44d35f9cc05fe51050c116adb86edc66ea (patch) | |
tree | 25c718282287d9bec9eb5d285590c482aee67072 | |
parent | b4123064b491aafc8de04da50da85daa116b1cfd (diff) | |
download | scummvm-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-- | Makefile | 2 | ||||
-rw-r--r-- | debug.cpp | 2 | ||||
-rw-r--r-- | resource.cpp | 12 | ||||
-rw-r--r-- | script_v2.cpp | 331 | ||||
-rw-r--r-- | scumm.h | 280 | ||||
-rw-r--r-- | scummvm.cpp | 10 | ||||
-rw-r--r-- | vars.cpp | 171 |
7 files changed, 456 insertions, 352 deletions
@@ -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 \ @@ -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() { @@ -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 |