[Scummvm-cvs-logs] CVS: scummvm/scumm gfx.cpp,1.92,1.93 intern.h,2.16,2.17 module.mk,1.6,1.7 script.cpp,1.24,1.25 script_v5.cpp,1.6,1.7 script_v6.cpp,1.19,1.20 script_v8.cpp,2.34,2.35 scumm.h,1.102,1.103 sound.cpp,1.54,1.55 sound.h,1.20,1.21
Max Horn
fingolfin at users.sourceforge.net
Wed Dec 25 06:47:02 CET 2002
Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1:/tmp/cvs-serv5254
Modified Files:
gfx.cpp intern.h module.mk script.cpp script_v5.cpp
script_v6.cpp script_v8.cpp scumm.h sound.cpp sound.h
Log Message:
converted heaps of int16 to int for V8 compatibility; fixed defineArray for V8; added some work in o8_kludge2
Index: gfx.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/gfx.cpp,v
retrieving revision 1.92
retrieving revision 1.93
diff -u -d -r1.92 -r1.93
Index: intern.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/intern.h,v
retrieving revision 2.16
retrieving revision 2.17
diff -u -d -r2.16 -r2.17
--- intern.h 25 Dec 2002 14:31:17 -0000 2.16
+++ intern.h 25 Dec 2002 14:46:38 -0000 2.17
@@ -46,7 +46,7 @@
virtual const char *getOpcodeDesc(int i);
void decodeParseString();
- int getWordVararg(int16 *ptr);
+ int getWordVararg(int *ptr);
int getVarOrDirectWord(byte mask);
int getVarOrDirectByte(byte mask);
@@ -210,7 +210,7 @@
int popRoomAndObj(int *room);
void decodeParseString(int a, int b);
- int getStackList(int16 *args, uint maxnum);
+ int getStackList(int *args, uint maxnum);
/* Version 6 script opcodes */
void o6_setBlastObjectWindow();
Index: module.mk
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/module.mk,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- module.mk 25 Dec 2002 13:51:01 -0000 1.6
+++ module.mk 25 Dec 2002 14:46:39 -0000 1.7
@@ -11,6 +11,7 @@
scumm/gfx.o \
scumm/imuse.o \
scumm/instrument.o \
+ scumm/nut_renderer.o \
scumm/object.o \
scumm/resource.o \
scumm/resource_v2.o \
@@ -25,8 +26,7 @@
scumm/sound.o \
scumm/string.o \
scumm/vars.o \
- scumm/verbs.o \
- scumm/nut_renderer.o
+ scumm/verbs.o
SMUSH_OBJS = \
scumm/smush/blitter.o \
Index: script.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script.cpp,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -d -r1.24 -r1.25
--- script.cpp 25 Dec 2002 13:51:01 -0000 1.24
+++ script.cpp 25 Dec 2002 14:46:39 -0000 1.25
@@ -35,7 +35,7 @@
/* Start executing script 'script' with parameters 'a' and 'b' */
-void Scumm::runScript(int script, int a, int b, int16 *lvarptr)
+void Scumm::runScript(int script, int a, int b, int *lvarptr)
{
byte *scriptPtr;
uint32 scriptOffs;
@@ -592,7 +592,7 @@
void Scumm::runHook(int i)
{
- int16 tmp[16];
+ int tmp[16];
tmp[0] = i;
if (_vars[VAR_HOOK_SCRIPT]) {
runScript(_vars[VAR_HOOK_SCRIPT], 0, 0, tmp);
@@ -781,7 +781,7 @@
void Scumm::runInputScript(int a, int cmd, int mode)
{
- int16 args[16];
+ int args[16];
memset(args, 0, sizeof(args));
args[0] = a;
args[1] = cmd;
@@ -805,7 +805,7 @@
}
}
-void Scumm::runVerbCode(int object, int entry, int a, int b, int16 *vars)
+void Scumm::runVerbCode(int object, int entry, int a, int b, int *vars)
{
uint32 obcd;
int slot, where, offs;
@@ -843,7 +843,7 @@
runScriptNested(slot);
}
-void Scumm::initializeLocals(int slot, int16 *vars)
+void Scumm::initializeLocals(int slot, int *vars)
{
int i;
if (!vars) {
@@ -897,7 +897,7 @@
{
ScriptSlot *ss = &vm.slot[_currentScript];
uint32 *csptr;
- int16 args[16];
+ int args[16];
memset(args, 0, sizeof(args));
@@ -919,7 +919,7 @@
runScript(_vars[VAR_CUTSCENE_END_SCRIPT], 0, 0, args);
}
-void Scumm::cutscene(int16 *args)
+void Scumm::cutscene(int *args)
{
int scr = _currentScript;
vm.slot[scr].cutsceneOverride++;
@@ -1016,21 +1016,30 @@
id = getArrayId();
- if (array & 0x4000) {
- _arrays[id] = (char)vm.slot[_currentScript].number;
- }
-
- if (array & 0x8000) {
- error("Can't define bit variable as array pointer");
- }
-
- writeVar(array, id);
-
if (_features & GF_AFTER_V8) {
+ if (array & 0x40000000) {
+ _arrays[id] = (char)vm.slot[_currentScript].number;
+ }
+
+ if (array & 0x80000000) {
+ error("Can't define bit variable as array pointer");
+ }
+
size = (type == 5) ? 32 : 8;
} else {
+ if (array & 0x4000) {
+ _arrays[id] = (char)vm.slot[_currentScript].number;
+ }
+
+ if (array & 0x8000) {
+ error("Can't define bit variable as array pointer");
+ }
+
size = (type == 5) ? 16 : 8;
}
+
+ writeVar(array, id);
+
size *= dim2 + 1;
size *= dim1 + 1;
size >>= 3;
Index: script_v5.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v5.cpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- script_v5.cpp 25 Dec 2002 12:01:01 -0000 1.6
+++ script_v5.cpp 25 Dec 2002 14:46:39 -0000 1.7
@@ -466,7 +466,7 @@
case 15: /* unk */
error("o5_actorset:unk not implemented");
#if 0
- int16 args[16] =
+ int args[16] =
{
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
@@ -583,7 +583,7 @@
void Scumm_v5::o5_chainScript()
{
- int16 vars[16];
+ int vars[16];
int data;
int cur;
@@ -603,7 +603,7 @@
void Scumm_v5::o5_cursorCommand()
{
int i, j, k;
- int16 table[16];
+ int table[16];
switch ((_opcode = fetchScriptByte()) & 0x1F) {
case 1: /* cursor show */
_cursor.state = 1;
@@ -665,7 +665,7 @@
void Scumm_v5::o5_cutscene()
{
- int16 args[16];
+ int args[16];
getWordVararg(args);
cutscene(args);
}
@@ -2030,7 +2030,7 @@
void Scumm_v5::o5_soundKludge()
{
- int16 items[15];
+ int items[15];
int i;
if (_features & GF_SMALL_HEADER) { // Is WaitForSentence in SCUMM V3
@@ -2048,9 +2048,9 @@
for (i = 0; i < 15; i++)
items[i] = 0;
- getWordVararg(items);
+ int num = getWordVararg(items);
- _sound->soundKludge(items);
+ _sound->soundKludge(items, num);
}
void Scumm_v5::o5_startMusic()
@@ -2061,7 +2061,7 @@
void Scumm_v5::o5_startObject()
{
int obj, script;
- int16 data[16];
+ int data[16];
obj = getVarOrDirectWord(0x80);
script = getVarOrDirectByte(0x40);
@@ -2073,7 +2073,7 @@
void Scumm_v5::o5_startScript()
{
int op, script;
- int16 data[16];
+ int data[16];
int a, b;
op = _opcode;
@@ -2449,7 +2449,7 @@
}
}
-int Scumm_v5::getWordVararg(int16 *ptr)
+int Scumm_v5::getWordVararg(int *ptr)
{
int i;
Index: script_v6.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v6.cpp,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -d -r1.19 -r1.20
--- script_v6.cpp 25 Dec 2002 12:01:02 -0000 1.19
+++ script_v6.cpp 25 Dec 2002 14:46:39 -0000 1.20
@@ -410,7 +410,6 @@
if (ah->type == 4) {
return ah->data[base];
} else if (_features & GF_AFTER_V8) {
- // FIXME - this is just a guess, might be wrong
return (int32)READ_LE_UINT32(ah->data + base * 4);
} else {
return (int16)READ_LE_UINT16(ah->data + base * 2);
@@ -436,7 +435,7 @@
}
}
-int Scumm_v6::getStackList(int16 *args, uint maxnum)
+int Scumm_v6::getStackList(int *args, uint maxnum)
{
uint num, i;
@@ -720,7 +719,7 @@
void Scumm_v6::o6_startScriptEx()
{
- int16 args[16];
+ int args[16];
int script, flags;
getStackList(args, sizeof(args) / sizeof(args[0]));
@@ -731,7 +730,7 @@
void Scumm_v6::o6_jumpToScript()
{
- int16 args[16];
+ int args[16];
int script, flags;
getStackList(args, sizeof(args) / sizeof(args[0]));
@@ -743,7 +742,7 @@
void Scumm_v6::o6_startScript()
{
- int16 args[16];
+ int args[16];
int script;
getStackList(args, sizeof(args) / sizeof(args[0]));
script = pop();
@@ -752,7 +751,7 @@
void Scumm_v6::o6_startObject()
{
- int16 args[16];
+ int args[16];
int script, entryp;
int flags;
getStackList(args, sizeof(args) / sizeof(args[0]));
@@ -794,7 +793,7 @@
void Scumm_v6::o6_cutscene()
{
- int16 args[16];
+ int args[16];
getStackList(args, sizeof(args) / sizeof(args[0]));
cutscene(args);
}
@@ -816,7 +815,7 @@
void Scumm_v6::o6_cursorCommand()
{
int a, i;
- int16 args[16];
+ int args[16];
switch (fetchScriptByte()) {
case 0x90:
@@ -885,7 +884,7 @@
void Scumm_v6::o6_ifClassOfIs()
{
- int16 args[16];
+ int args[16];
int num, obj, cls;
bool b;
int cond = 1;
@@ -904,7 +903,7 @@
void Scumm_v6::o6_setClass()
{
- int16 args[16];
+ int args[16];
int num, obj, cls;
num = getStackList(args, sizeof(args) / sizeof(args[0]));
@@ -1355,7 +1354,7 @@
void Scumm_v6::o6_setBoxFlags()
{
- int16 table[65];
+ int table[65];
int num, value;
value = pop();
@@ -1608,7 +1607,7 @@
{
Actor *a;
int i, j, k;
- int16 args[8];
+ int args[8];
byte b;
b = fetchScriptByte();
@@ -1907,7 +1906,7 @@
void Scumm_v6::o6_pseudoRoom()
{
- int16 list[100];
+ int list[100];
int num, a, value;
num = getStackList(list, sizeof(list) / sizeof(list[0]));
@@ -1946,7 +1945,7 @@
void Scumm_v6::o6_arrayOps()
{
int a, b, c, d, num;
- int16 list[128];
+ int list[128];
switch (fetchScriptByte()) {
case 205:
@@ -2140,15 +2139,15 @@
void Scumm_v6::o6_soundKludge()
{
- int16 list[16];
- getStackList(list, sizeof(list) / sizeof(list[0]));
+ int list[16];
+ int num = getStackList(list, sizeof(list) / sizeof(list[0]));
- _sound->soundKludge(list);
+ _sound->soundKludge(list, num);
}
void Scumm_v6::o6_isAnyOf()
{
- int16 list[100];
+ int list[100];
int num;
int16 val;
@@ -2350,7 +2349,7 @@
void Scumm_v6::o6_startObjectQuick()
{
- int16 args[16];
+ int args[16];
int script, entryp;
getStackList(args, sizeof(args) / sizeof(args[0]));
entryp = pop();
@@ -2360,7 +2359,7 @@
void Scumm_v6::o6_startScriptQuick()
{
- int16 args[16];
+ int args[16];
int script;
getStackList(args, sizeof(args) / sizeof(args[0]));
script = pop();
@@ -2430,7 +2429,7 @@
void Scumm_v6::o6_drawBlastObject()
{
- int16 args[16];
+ int args[16];
int a, b, c, d, e;
getStackList(args, sizeof(args) / sizeof(args[0]));
@@ -2459,7 +2458,7 @@
void Scumm_v6::o6_miscOps()
{
- int16 args[30];
+ int args[30];
int i;
Actor *a;
@@ -2758,7 +2757,7 @@
void Scumm_v6::o6_kernelFunction()
{
- int16 args[30];
+ int args[30];
int i;
Actor *a;
@@ -2858,7 +2857,7 @@
void Scumm_v6::o6_pickOneOf()
{
- int16 args[100];
+ int args[100];
int i, num;
num = getStackList(args, sizeof(args) / sizeof(args[0]));
@@ -2870,7 +2869,7 @@
void Scumm_v6::o6_pickOneOfDefault()
{
- int16 args[100];
+ int args[100];
int i, num, def;
def = pop();
Index: script_v8.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v8.cpp,v
retrieving revision 2.34
retrieving revision 2.35
diff -u -d -r2.34 -r2.35
--- script_v8.cpp 25 Dec 2002 14:31:17 -0000 2.34
+++ script_v8.cpp 25 Dec 2002 14:46:39 -0000 2.35
@@ -627,7 +627,7 @@
byte subOp = fetchScriptByte();
int array = fetchScriptWord();
int b, c, d, len;
- int16 list[128];
+ int list[128];
switch (subOp) {
case 0x14: // SO_ASSIGN_STRING
@@ -706,7 +706,7 @@
// TODO
byte subOp = fetchScriptByte();
int a, i;
- int16 args[16];
+ int args[16];
switch (subOp) {
case 0xDC: // SO_CURSOR_ON Turn cursor on
@@ -744,8 +744,6 @@
int idx = pop();
int room, obj;
obj = popRoomAndObj(&room);
- // FIXME
- printf("setCursorImg(%d, %d, %d)\n", obj, room, idx);
setCursorImg(obj, room, idx);
}
break;
@@ -1131,11 +1129,10 @@
void Scumm_v8::o8_soundKludge()
{
- int16 args[16];
- getStackList(args, sizeof(args) / sizeof(args[0]));
+ int args[16];
+ int num = getStackList(args, sizeof(args) / sizeof(args[0]));
- // FIXME - is this right?
- _sound->soundKludge(args);
+ _sound->soundKludge(args, num);
}
void Scumm_v8::o8_system()
@@ -1151,8 +1148,8 @@
void Scumm_v8::o8_kludge()
{
// TODO
- int16 args[30];
- getStackList(args, sizeof(args) / sizeof(args[0]));
+ int args[30];
+ int len = getStackList(args, sizeof(args) / sizeof(args[0]));
switch (args[0]) {
case 11:
@@ -1196,15 +1193,15 @@
case 34:
case 109:
default:
- warning("o8_kludge: default case %d", args[0]);
+ warning("o8_kludge: default case (len = %d)", len);
}
}
void Scumm_v8::o8_kludge2()
{
// TODO
- int16 args[30];
- getStackList(args, sizeof(args) / sizeof(args[0]));
+ int args[30];
+ int len = getStackList(args, sizeof(args) / sizeof(args[0]));
switch (args[0]) {
case 0xCE: // getRGBSlot
@@ -1215,14 +1212,34 @@
case 0xDA: // lipSyncWidth
case 0xDB: // lipSyncHeight
case 0xDC: // actorTalkAnimation
+ // FIXME - hack!
+ push(0);
+ break;
case 0xDD: // getMasterSFXVol
+ push(_sound->_sound_volume_sfx / 2);
+ break;
case 0xDE: // getMasterVoiceVol
+ push(_sound->_sound_volume_sfx / 2);
+ break;
case 0xDF: // getMasterMusicVol
+ push(_sound->_sound_volume_music / 2);
+ break;
case 0xE0: // readRegistryValue
+ {
+ printf("readRegistryValue(%d)\n", args[1]);
+ int array = args[1];
+ // FIXME - hack: for some reasons the wrong variable ID arrives here, compared to the
+ // scripts. Probably a wrong push/pop somewhere. For now override to correct value.
+ array = 658;
+ ArrayHeader *ah = (ArrayHeader *)getResourceAddress(rtString, readVar(array));
+ if (!strcmp((char *)ah->data, "Saveload Page"))
+ push(1);
+ else
+ push(0);
+ }
+ break;
default:
- // FIXME - hack!
- push(0);
-// warning("o8_kludge2: default case %d", args[0]);
+ error("o8_kludge2: default case (len = %d)", len);
}
}
Index: scumm.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/scumm.h,v
retrieving revision 1.102
retrieving revision 1.103
diff -u -d -r1.102 -r1.103
--- scumm.h 25 Dec 2002 14:31:17 -0000 1.102
+++ scumm.h 25 Dec 2002 14:46:39 -0000 1.103
@@ -400,7 +400,8 @@
uint16 _mouseButStat;
byte _leftBtnPressed, _rightBtnPressed;
- int16 _virtual_mouse_x, _virtual_mouse_y, _bootParam;
+ int16 _virtual_mouse_x, _virtual_mouse_y;
+ int _bootParam;
uint16 _debugMode, _soundCardType;
/* Not sure where this stuff goes */
@@ -464,15 +465,15 @@
uint16 _curExecScript;
byte **_lastCodePtr;
int _resultVarNumber, _scummStackPos;
- int16 _localParamList[16], _scummStack[150];
+ int _localParamList[16], _scummStack[150];
virtual void setupOpcodes() = 0;
virtual void executeOpcode(int i) = 0;
virtual const char *getOpcodeDesc(int i) = 0;
- void initializeLocals(int slot, int16 *vars);
+ void initializeLocals(int slot, int *vars);
int getScriptSlot();
- void runScript(int script, int a, int b, int16 *lvarptr);
+ void runScript(int script, int a, int b, int *lvarptr);
void stopScriptNr(int script);
void runScriptNested(int script);
void executeScript();
@@ -497,7 +498,7 @@
void freezeScripts(int scr);
void unfreezeScripts();
void runAllScripts();
- void cutscene(int16 *args);
+ void cutscene(int *args);
void endCutscene();
void exitCutscene();
void runExitScript();
@@ -648,7 +649,7 @@
int getVerbEntrypoint(int obj, int entry);
int getVerbSlot(int id, int mode);
void killVerb(int slot);
- void runVerbCode(int script, int entry, int a, int b, int16 *vars);
+ void runVerbCode(int script, int entry, int a, int b, int *vars);
void setVerbObject(uint room, uint object, uint verb);
/* Should be in Actor class */
Index: sound.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/sound.cpp,v
retrieving revision 1.54
retrieving revision 1.55
diff -u -d -r1.54 -r1.55
--- sound.cpp 5 Dec 2002 21:45:55 -0000 1.54
+++ sound.cpp 25 Dec 2002 14:46:39 -0000 1.55
@@ -684,7 +684,7 @@
memset(_soundQue2, 0, sizeof(_soundQue2));
}
-void Sound::soundKludge(int16 * list) {
+void Sound::soundKludge(int *list, int num) {
int16 *ptr;
int i;
Index: sound.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/sound.h,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -d -r1.20 -r1.21
--- sound.h 25 Dec 2002 00:36:04 -0000 1.20
+++ sound.h 25 Dec 2002 14:46:39 -0000 1.21
@@ -148,7 +148,7 @@
void stopSound(int a);
void stopAllSounds();
void clearSoundQue();
- void soundKludge(int16 * list);
+ void soundKludge(int *list, int num);
void talkSound(uint32 a, uint32 b, int mode, int frame);
void setupSound();
void pauseSounds(bool pause);
More information about the Scummvm-git-logs
mailing list