[Scummvm-cvs-logs] CVS: scummvm/scumm intern.h,2.232,2.233 script_v7he.cpp,2.65,2.66
Travis Howell
kirben at users.sourceforge.net
Thu Sep 9 03:46:20 CEST 2004
Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16088/scumm
Modified Files:
intern.h script_v7he.cpp
Log Message:
Add HE 70 version changes.
Index: intern.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/intern.h,v
retrieving revision 2.232
retrieving revision 2.233
diff -u -d -r2.232 -r2.233
--- intern.h 9 Sep 2004 04:44:46 -0000 2.232
+++ intern.h 9 Sep 2004 10:44:17 -0000 2.233
@@ -617,6 +617,7 @@
byte stringLen(byte *);
int getCharsetOffset(int letter);
+ void arrrays_unk2(int dst, int src, int len2, int len);
/* HE version 70 script opcodes */
void o7_cursorCommand();
Index: script_v7he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v7he.cpp,v
retrieving revision 2.65
retrieving revision 2.66
diff -u -d -r2.65 -r2.66
--- script_v7he.cpp 9 Sep 2004 10:08:39 -0000 2.65
+++ script_v7he.cpp 9 Sep 2004 10:44:17 -0000 2.66
@@ -504,6 +504,9 @@
case 9:
_heSndLoop |= 4;
break;
+ case 23:
+ debug(1,"o7_startSound: case 29 (%d, %d, %d)", pop(), pop(), pop());
+ break;
case 164:
_heSndLoop |= 2;
break;
@@ -814,46 +817,49 @@
push(len);
}
+void ScummEngine_v7he::arrrays_unk2(int dst, int src, int len2, int len) {
+ int edi, value;
+ int i = 0;
+
+ if (len == -1) {
+ len = resStrLen(getStringAddress(src));
+ len2 = 0;
+ }
+
+ edi = resStrLen(getStringAddress(dst));
+
+ len -= len2;
+ len++;
+
+ while (i < len) {
+ writeVar(0, src);
+ value = readArray(0, 0, len2 + i);
+ writeVar(0, dst);
+ writeArray(0, 0, edi + i, value);
+ i++;
+ }
+
+ writeArray(0, 0, edi + i, 0);
+}
+
void ScummEngine_v7he::o7_unknownEF() {
- int value;
- int array, array2, len, len2, len3, offset;
- int b, size;
- len = pop();
- b = pop();
- array2 = pop();
+ int dst, size;
+ int b = pop();
+ int a = pop();
+ int src = pop();
- size = len - b + 2;
+ size = b - a + 2;
writeVar(0, 0);
defineArray(0, kStringArray, 0, size);
writeArray(0, 0, 0, 0);
- array = readVar(0);
-
- len2 = len;
- if (len == -1) {
- len2 = resStrLen(getStringAddress(array2));
- len = 0;
- } else {
- len = b;
- }
- len3 = resStrLen(getStringAddress(array));
-
- offset = 0;
- len2 -= len;
- len2++;
- while (offset < len2) {
- writeVar(0, array2);
- value = readArray(0, 0, offset + len);
- writeVar(0, array);
- writeArray(0, 0, offset + len3, value);
- offset++;
- }
+ dst = readVar(0);
- writeArray(0, 0, len3 + offset, 0);
+ arrrays_unk2(dst, src, a, b);
- push(array);
- debug(1,"stub o7_unknownEF (array %d, array2 %d)", array, array2);
+ push(dst);
+ debug(1,"stub o7_unknownEF");
}
void ScummEngine_v7he::o7_readINI() {
@@ -939,39 +945,39 @@
}
void ScummEngine_v7he::o7_unknownF6() {
- int len, len2, pos, value, array;
+ int len, edi, pos, value, id;
value = pop();
- len = pop();
+ edi = pop();
pos = pop();
- array = pop();
+ id = pop();
- if (len >= 0) {
- len2 = resStrLen(getStringAddress(array));
- if (len2 < len)
- len = len2;
+ if (edi >= 0) {
+ len = resStrLen(getStringAddress(id));
+ if (len < edi)
+ edi = len;
} else {
- len = 12;
+ edi = 0;
}
if (pos < 0)
pos = 0;
- writeVar(0, array);
- if (pos > len) {
- while (pos > len) {
+ writeVar(0, id);
+ if (edi > pos) {
+ while (edi >= pos) {
if (readArray(0, 0, pos) == value) {
push(pos);
return;
}
- pos--;
+ pos++;
}
} else {
- while (pos < len) {
+ while (edi <= pos) {
if (readArray(0, 0, pos) == value) {
push(pos);
return;
}
- pos++;
+ pos--;
}
}
More information about the Scummvm-git-logs
mailing list