Sync HE100.

Minor cleanup.

svn-id: r18215
This commit is contained in:
Travis Howell 2005-05-22 10:04:10 +00:00
parent 8314fc2d22
commit 76f8021a28
2 changed files with 24 additions and 29 deletions

View file

@ -578,26 +578,27 @@ void ScummEngine_v100he::o100_actorOps() {
}
void ScummEngine_v100he::o100_arrayOps() {
ArrayHeader *ah;
byte string[1024];
int dim1end, dim1start, dim2end, dim2start;
int id, len, b, c, list[128];
int offs, tmp, tmp2;
uint tmp3;
byte subOp = fetchScriptByte();
int array = fetchScriptWord();
int offs, tmp, tmp2, tmp3;
int dim1end, dim1start, dim2end, dim2start;
int id, len, b, c;
ArrayHeader *ah;
int list[128];
byte string[1024];
debug(1,"o100_arrayOps: array %d case %d", array, subOp);
debug(1,"o100_arrayOps: case %d", subOp);
switch (subOp) {
case 35:
decodeScriptString(string);
len = resStrLen(string) + 1;
len = resStrLen(string);
ah = defineArray(array, kStringArray, 0, 0, 0, len);
memcpy(ah->data, string, len);
break;
case 77: // SO_ASSIGN_STRING
copyScriptString(string, sizeof(string));
len = resStrLen(string) + 1;
len = resStrLen(string);
ah = defineArray(array, kStringArray, 0, 0, 0, len);
memcpy(ah->data, string, len);
break;
@ -606,7 +607,7 @@ void ScummEngine_v100he::o100_arrayOps() {
len = getStackList(list, ARRAYSIZE(list));
id = readVar(array);
if (id == 0)
error("o100_arrayOps: Must DIM a two dimensional array before assigning");
error("Must DIM a two dimensional array before assigning");
c = pop();
while (--len >= 0) {
writeArray(array, c, len, list[len]);
@ -617,7 +618,7 @@ void ScummEngine_v100he::o100_arrayOps() {
c = pop();
id = readVar(array);
if (id == 0) {
defineArray(array, kDwordArray, 0, 0, 0, b + c);
defineArray(array, kDwordArray, 0, 0, 0, b + c - 1);
}
while (c--) {
writeArray(array, 0, b + c, pop());
@ -657,7 +658,7 @@ void ScummEngine_v100he::o100_arrayOps() {
int a1_dim2end = pop();
int a1_dim2start = pop();
if (a1_dim1end - a1_dim1start != a2_dim1end - a2_dim1start || a2_dim2end - a2_dim2start != a1_dim2end - a1_dim2start) {
warning("Source and dest ranges size are mismatched");
error("Source and dest ranges size are mismatched");
}
copyArray(array, a1_dim2start, a1_dim2end, a1_dim1start, a1_dim1end, array2, a2_dim2start, a2_dim2end, a2_dim1start, a2_dim1end);
}
@ -674,12 +675,9 @@ void ScummEngine_v100he::o100_arrayOps() {
defineArray(array, kDwordArray, dim2start, dim2end, dim1start, dim1end);
}
len = c - b;
len |= dim2end;
len = len - dim2end + 1;
offs = (b >= c) ? 1 : -1;
tmp2 = c;
tmp3 = len;
tmp3 = c - b + 1;;
while (dim2start <= dim2end) {
tmp = dim1start;
while (tmp <= dim1end) {