Correct string for temp save/load, original load/save screens now displays in HE 71+ games.
svn-id: r15346
This commit is contained in:
parent
468758fa6c
commit
fa149a52d4
4 changed files with 115 additions and 11 deletions
|
@ -755,6 +755,7 @@ protected:
|
||||||
void o72_printWizImage();
|
void o72_printWizImage();
|
||||||
void o72_getArrayDimSize();
|
void o72_getArrayDimSize();
|
||||||
void o72_getNumFreeArrays();
|
void o72_getNumFreeArrays();
|
||||||
|
void o72_roomOps();
|
||||||
void o72_actorOps();
|
void o72_actorOps();
|
||||||
void o72_verbOps();
|
void o72_verbOps();
|
||||||
void o72_findObject();
|
void o72_findObject();
|
||||||
|
|
|
@ -240,7 +240,7 @@ void ScummEngine_v72he::setupOpcodes() {
|
||||||
OPCODE(o6_invalid),
|
OPCODE(o6_invalid),
|
||||||
OPCODE(o70_resourceRoutines),
|
OPCODE(o70_resourceRoutines),
|
||||||
/* 9C */
|
/* 9C */
|
||||||
OPCODE(o60_roomOps),
|
OPCODE(o72_roomOps),
|
||||||
OPCODE(o72_actorOps),
|
OPCODE(o72_actorOps),
|
||||||
OPCODE(o72_verbOps),
|
OPCODE(o72_verbOps),
|
||||||
OPCODE(o6_getActorFromXY),
|
OPCODE(o6_getActorFromXY),
|
||||||
|
@ -905,12 +905,111 @@ void ScummEngine_v72he::o72_getNumFreeArrays() {
|
||||||
push (num);
|
push (num);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ScummEngine_v72he::o72_roomOps() {
|
||||||
|
int a, b, c, d, e;
|
||||||
|
byte op;
|
||||||
|
byte filename[100];
|
||||||
|
|
||||||
|
op = fetchScriptByte();
|
||||||
|
|
||||||
|
switch (op) {
|
||||||
|
case 172: // SO_ROOM_SCROLL
|
||||||
|
b = pop();
|
||||||
|
a = pop();
|
||||||
|
if (a < (_screenWidth / 2))
|
||||||
|
a = (_screenWidth / 2);
|
||||||
|
if (b < (_screenWidth / 2))
|
||||||
|
b = (_screenWidth / 2);
|
||||||
|
if (a > _roomWidth - (_screenWidth / 2))
|
||||||
|
a = _roomWidth - (_screenWidth / 2);
|
||||||
|
if (b > _roomWidth - (_screenWidth / 2))
|
||||||
|
b = _roomWidth - (_screenWidth / 2);
|
||||||
|
VAR(VAR_CAMERA_MIN_X) = a;
|
||||||
|
VAR(VAR_CAMERA_MAX_X) = b;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 174: // SO_ROOM_SCREEN
|
||||||
|
b = pop();
|
||||||
|
a = pop();
|
||||||
|
initScreens(a, _screenHeight);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 175: // SO_ROOM_PALETTE
|
||||||
|
d = pop();
|
||||||
|
c = pop();
|
||||||
|
b = pop();
|
||||||
|
a = pop();
|
||||||
|
setPalColor(d, a, b, c);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 179: // SO_ROOM_INTENSITY
|
||||||
|
c = pop();
|
||||||
|
b = pop();
|
||||||
|
a = pop();
|
||||||
|
darkenPalette(a, a, a, b, c);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 180: // SO_ROOM_SAVEGAME
|
||||||
|
_saveTemporaryState = true;
|
||||||
|
_saveLoadSlot = pop();
|
||||||
|
_saveLoadFlag = pop();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 181: // SO_ROOM_FADE
|
||||||
|
// Defaults to 1 but doesn't use fade effects
|
||||||
|
a = pop();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 182: // SO_RGB_ROOM_INTENSITY
|
||||||
|
e = pop();
|
||||||
|
d = pop();
|
||||||
|
c = pop();
|
||||||
|
b = pop();
|
||||||
|
a = pop();
|
||||||
|
darkenPalette(a, b, c, d, e);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 213: // SO_ROOM_NEW_PALETTE
|
||||||
|
a = pop();
|
||||||
|
setPalette(a);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 220:
|
||||||
|
a = pop();
|
||||||
|
b = pop();
|
||||||
|
copyPalColor(a, b);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 221:
|
||||||
|
copyScriptString(filename);
|
||||||
|
_saveLoadFlag = pop();
|
||||||
|
_saveLoadSlot = 1;
|
||||||
|
_saveTemporaryState = true;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 234:
|
||||||
|
b = pop();
|
||||||
|
a = pop();
|
||||||
|
swapObjects(a, b);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 236:
|
||||||
|
b = pop();
|
||||||
|
a = pop();
|
||||||
|
warning("o72_roomOps: case %d (%d, %d)", op, b, a);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
error("o72_roomOps: default case %d", op);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void ScummEngine_v72he::o72_actorOps() {
|
void ScummEngine_v72he::o72_actorOps() {
|
||||||
Actor *a;
|
Actor *a;
|
||||||
int i, j, k;
|
int i, j, k;
|
||||||
int args[32];
|
int args[32];
|
||||||
byte b;
|
byte b;
|
||||||
byte name[256];
|
byte string[256];
|
||||||
|
|
||||||
b = fetchScriptByte();
|
b = fetchScriptByte();
|
||||||
if (b == 197) {
|
if (b == 197) {
|
||||||
|
@ -1007,8 +1106,8 @@ void ScummEngine_v72he::o72_actorOps() {
|
||||||
a->talkColor = pop();
|
a->talkColor = pop();
|
||||||
break;
|
break;
|
||||||
case 88: // SO_ACTOR_NAME
|
case 88: // SO_ACTOR_NAME
|
||||||
copyScriptString(name);
|
copyScriptString(string);
|
||||||
loadPtrToResource(rtActorName, a->number, name);
|
loadPtrToResource(rtActorName, a->number, string);
|
||||||
break;
|
break;
|
||||||
case 89: // SO_INIT_ANIMATION
|
case 89: // SO_INIT_ANIMATION
|
||||||
a->_initFrame = pop();
|
a->_initFrame = pop();
|
||||||
|
@ -1091,7 +1190,6 @@ void ScummEngine_v72he::o72_actorOps() {
|
||||||
break;
|
break;
|
||||||
case 225:
|
case 225:
|
||||||
{
|
{
|
||||||
byte string[128];
|
|
||||||
copyScriptString(string);
|
copyScriptString(string);
|
||||||
int slot = pop();
|
int slot = pop();
|
||||||
|
|
||||||
|
@ -1737,13 +1835,13 @@ void ScummEngine_v72he::o72_openFile() {
|
||||||
mode = pop();
|
mode = pop();
|
||||||
copyScriptString(filename);
|
copyScriptString(filename);
|
||||||
|
|
||||||
debug(1,"File %s", filename);
|
|
||||||
|
|
||||||
for (r = strlen((char*)filename); r != 0; r--) {
|
for (r = strlen((char*)filename); r != 0; r--) {
|
||||||
if (filename[r - 1] == '\\')
|
if (filename[r - 1] == '\\')
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
debug(1,"File %s", filename + r);
|
||||||
|
|
||||||
slot = -1;
|
slot = -1;
|
||||||
for (l = 0; l < 17; l++) {
|
for (l = 0; l < 17; l++) {
|
||||||
if (_hFileTable[l].isOpen() == false) {
|
if (_hFileTable[l].isOpen() == false) {
|
||||||
|
@ -1758,7 +1856,7 @@ void ScummEngine_v72he::o72_openFile() {
|
||||||
else if (mode == 2)
|
else if (mode == 2)
|
||||||
_hFileTable[slot].open((char*)filename + r, File::kFileWriteMode);
|
_hFileTable[slot].open((char*)filename + r, File::kFileWriteMode);
|
||||||
else
|
else
|
||||||
error("o60_openFile(): wrong open file mode %d", mode);
|
error("o72_openFile(): wrong open file mode %d", mode);
|
||||||
|
|
||||||
if (_hFileTable[slot].isOpen() == false)
|
if (_hFileTable[slot].isOpen() == false)
|
||||||
slot = -1;
|
slot = -1;
|
||||||
|
@ -1867,10 +1965,15 @@ void ScummEngine_v72he::o72_findAllObjects() {
|
||||||
|
|
||||||
void ScummEngine_v72he::o72_deleteFile() {
|
void ScummEngine_v72he::o72_deleteFile() {
|
||||||
byte filename[100];
|
byte filename[100];
|
||||||
|
int r;
|
||||||
|
|
||||||
copyScriptString(filename);
|
copyScriptString(filename);
|
||||||
|
for (r = strlen((char*)filename); r != 0; r--) {
|
||||||
|
if (filename[r - 1] == '\\')
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
debug(1, "stub o72_deleteFile(%s)", filename);
|
debug(1, "stub o72_deleteFile(%s)", filename + r);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScummEngine_v72he::o72_getPixel() {
|
void ScummEngine_v72he::o72_getPixel() {
|
||||||
|
|
|
@ -240,7 +240,7 @@ void ScummEngine_v80he::setupOpcodes() {
|
||||||
OPCODE(o6_invalid),
|
OPCODE(o6_invalid),
|
||||||
OPCODE(o70_resourceRoutines),
|
OPCODE(o70_resourceRoutines),
|
||||||
/* 9C */
|
/* 9C */
|
||||||
OPCODE(o60_roomOps),
|
OPCODE(o72_roomOps),
|
||||||
OPCODE(o72_actorOps),
|
OPCODE(o72_actorOps),
|
||||||
OPCODE(o72_verbOps),
|
OPCODE(o72_verbOps),
|
||||||
OPCODE(o6_getActorFromXY),
|
OPCODE(o6_getActorFromXY),
|
||||||
|
|
|
@ -240,7 +240,7 @@ void ScummEngine_v90he::setupOpcodes() {
|
||||||
OPCODE(o6_invalid),
|
OPCODE(o6_invalid),
|
||||||
OPCODE(o70_resourceRoutines),
|
OPCODE(o70_resourceRoutines),
|
||||||
/* 9C */
|
/* 9C */
|
||||||
OPCODE(o60_roomOps),
|
OPCODE(o72_roomOps),
|
||||||
OPCODE(o72_actorOps),
|
OPCODE(o72_actorOps),
|
||||||
OPCODE(o90_unknown9E),
|
OPCODE(o90_unknown9E),
|
||||||
OPCODE(o6_getActorFromXY),
|
OPCODE(o6_getActorFromXY),
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue