[Scummvm-cvs-logs] CVS: scummvm/scumm intern.h,2.210,2.211 script_v72he.cpp,2.38,2.39 script_v7he.cpp,2.58,2.59
Travis Howell
kirben at users.sourceforge.net
Tue Aug 31 21:08:06 CEST 2004
Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19750/scumm
Modified Files:
intern.h script_v72he.cpp script_v7he.cpp
Log Message:
Add HE 72 versions, still not working right yet.
Index: intern.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/intern.h,v
retrieving revision 2.210
retrieving revision 2.211
diff -u -d -r2.210 -r2.211
--- intern.h 31 Aug 2004 07:47:34 -0000 2.210
+++ intern.h 1 Sep 2004 03:58:04 -0000 2.211
@@ -723,10 +723,12 @@
void o72_getPixel();
void o72_pickVarRandom();
void o72_redimArray();
+ void o72_unknownED();
void o72_unknownEF();
void o72_unknownF1();
void o72_readINI();
void o72_unknownF4();
+ void o72_unknownF6();
void o72_unknownF8();
void o72_unknownF9();
void o72_unknownFA();
Index: script_v72he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v72he.cpp,v
retrieving revision 2.38
retrieving revision 2.39
diff -u -d -r2.38 -r2.39
--- script_v72he.cpp 31 Aug 2004 08:35:10 -0000 2.38
+++ script_v72he.cpp 1 Sep 2004 03:58:04 -0000 2.39
@@ -342,7 +342,7 @@
OPCODE(o6_readFilePos),
/* EC */
OPCODE(o6_invalid),
- OPCODE(o6_invalid),
+ OPCODE(o72_unknownED),
OPCODE(o7_stringLen),
OPCODE(o72_unknownEF),
/* F0 */
@@ -353,7 +353,7 @@
/* F4 */
OPCODE(o72_unknownF4),
OPCODE(o6_invalid),
- OPCODE(o6_invalid),
+ OPCODE(o72_unknownF6),
OPCODE(o6_invalid),
/* F8 */
OPCODE(o72_unknownF8),
@@ -1213,6 +1213,31 @@
}
+void ScummEngine_v72he::o72_unknownED() {
+ int array, pos, len;
+ int letter = 0, result = 0;
+
+ len = pop();
+ pos = pop();
+ array = pop();
+
+ if (len == -1) {
+ pos = 0;
+ len = resStrLen(getStringAddress(array));
+ }
+
+ writeVar(0, array);
+ while (len >= pos) {
+ letter = readArray(0, 0, pos);
+ if (letter)
+ result += getCharsetOffset(letter);
+ pos++;
+ }
+
+ push(result);
+ debug(1,"stub o72_unknownED");
+}
+
void ScummEngine_v72he::o72_unknownEF() {
int value;
int array, array2, len, len2, len3, offset;
@@ -1305,6 +1330,47 @@
}
}
+void ScummEngine_v72he::o72_unknownF6() {
+ int len, len2, pos, value, array;
+ value = pop();
+ len = pop();
+ pos = pop();
+ array = pop();
+
+ if (len >= 0) {
+ len2 = resStrLen(getStringAddress(array));
+ if (len2 < len)
+ len = len2;
+ } else {
+ len = 12;
+ }
+
+ if (pos < 0)
+ pos = 0;
+
+ writeVar(0, array);
+ if (pos > len) {
+ while (pos > len) {
+ if (readArray(0, 0, pos) == value) {
+ push(pos);
+ return;
+ }
+ pos--;
+ }
+ } else {
+ while (pos < len) {
+ if (readArray(0, 0, pos) == value) {
+ push(pos);
+ return;
+ }
+ pos++;
+ }
+ }
+
+ push(-1);
+ debug(1,"stub o72_unknownF6");
+}
+
void ScummEngine_v72he::o72_unknownF8() {
int a = fetchScriptByte();
push(1);
Index: script_v7he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v7he.cpp,v
retrieving revision 2.58
retrieving revision 2.59
diff -u -d -r2.58 -r2.59
--- script_v7he.cpp 31 Aug 2004 07:47:34 -0000 2.58
+++ script_v7he.cpp 1 Sep 2004 03:58:04 -0000 2.59
@@ -415,7 +415,7 @@
if (!ptr)
error("getCharsetOffset: charset %d not found!", id);
- offset = READ_LE_UINT32(ptr + 29 + letter);
+ offset = READ_LE_UINT32(ptr + 29 + letter + 4);
if (offset == 0)
return 0;
@@ -673,6 +673,7 @@
case 122:
case 123:
case 203:
+ case 239:
debug(5,"stub queueload (%d) resource %d", op, pop());
break;
case 159:
@@ -924,7 +925,7 @@
len = resStrLen(getStringAddress(array));
writeVar(0, array);
- while (len <= pos) {
+ while (len < pos) {
letter = readArray(0, 0, pos);
result += getCharsetOffset(letter);
if (result >= ebx)
@@ -933,25 +934,30 @@
}
push(result);
- debug(1,"stub o7_unknownF5");
+ debug(1,"stub o7_unknownF5 (%d)", result);
}
void ScummEngine_v7he::o7_unknownF6() {
- int len, pos, value, array;
+ int len, len2, pos, value, array;
value = pop();
len = pop();
pos = pop();
array = pop();
- if (len < 0)
- len = resStrLen(getStringAddress(array));
+ if (len >= 0) {
+ len2 = resStrLen(getStringAddress(array));
+ if (len2 < len)
+ len = len2;
+ } else {
+ len = 12;
+ }
if (pos < 0)
pos = 0;
writeVar(0, array);
- if (len < pos) {
- while (len < pos) {
+ if (pos > len) {
+ while (pos > len) {
if (readArray(0, 0, pos) == value) {
push(pos);
return;
@@ -959,7 +965,7 @@
pos--;
}
} else {
- while (len >= pos) {
+ while (pos < len) {
if (readArray(0, 0, pos) == value) {
push(pos);
return;
More information about the Scummvm-git-logs
mailing list