Add support for flashlight in v1 maniac by converting older values.
Prevent warning about dummy function (Which has no purpose) in zak svn-id: r9756
This commit is contained in:
parent
034ea25fa6
commit
9b5eb1137f
3 changed files with 45 additions and 13 deletions
|
@ -344,18 +344,16 @@ void CostumeRenderer::procC64(int actor) {
|
||||||
|
|
||||||
byte palette[4] = { 0, 0, 0, 0 };
|
byte palette[4] = { 0, 0, 0, 0 };
|
||||||
|
|
||||||
if (_vm->_gameId == GID_MANIAC) {
|
|
||||||
palette[1] = v1_mm_actor_palatte_1[actor];
|
|
||||||
palette[2] = v1_mm_actor_palatte_2[actor];
|
|
||||||
} else {
|
|
||||||
if (!(_vm->VAR(_vm->VAR_CURRENT_LIGHTS) & LIGHTMODE_actor_color)) {
|
if (!(_vm->VAR(_vm->VAR_CURRENT_LIGHTS) & LIGHTMODE_actor_color)) {
|
||||||
palette[2] = 11;
|
palette[2] = 11;
|
||||||
palette[3] = 11;
|
palette[3] = 11;
|
||||||
|
} else if (_vm->_gameId == GID_MANIAC) {
|
||||||
|
palette[1] = v1_mm_actor_palatte_1[actor];
|
||||||
|
palette[2] = v1_mm_actor_palatte_2[actor];
|
||||||
} else {
|
} else {
|
||||||
palette[1] = 8;
|
palette[1] = 8;
|
||||||
palette[2] = _palette[0];
|
palette[2] = _palette[0];
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
v1.skip_width >>= 3;
|
v1.skip_width >>= 3;
|
||||||
|
|
||||||
|
@ -735,7 +733,6 @@ void CostumeRenderer::setPalette(byte *palette) {
|
||||||
|
|
||||||
if (_loaded._format == 0x57) {
|
if (_loaded._format == 0x57) {
|
||||||
_palette[0] = palette[0];
|
_palette[0] = palette[0];
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -261,6 +261,7 @@ protected:
|
||||||
void o2_isGreaterEqual();
|
void o2_isGreaterEqual();
|
||||||
void o2_isLess();
|
void o2_isLess();
|
||||||
void o2_isLessEqual();
|
void o2_isLessEqual();
|
||||||
|
void o2_lights();
|
||||||
void o2_loadRoomWithEgo();
|
void o2_loadRoomWithEgo();
|
||||||
void o2_setBoxFlags();
|
void o2_setBoxFlags();
|
||||||
void o2_panCameraTo();
|
void o2_panCameraTo();
|
||||||
|
|
|
@ -173,7 +173,7 @@ void Scumm_v2::setupOpcodes() {
|
||||||
OPCODE(o2_dummy),
|
OPCODE(o2_dummy),
|
||||||
OPCODE(o2_ifState04),
|
OPCODE(o2_ifState04),
|
||||||
/* 70 */
|
/* 70 */
|
||||||
OPCODE(o5_lights),
|
OPCODE(o2_lights),
|
||||||
OPCODE(o5_getActorCostume),
|
OPCODE(o5_getActorCostume),
|
||||||
OPCODE(o5_loadRoom),
|
OPCODE(o5_loadRoom),
|
||||||
OPCODE(o2_roomOps),
|
OPCODE(o2_roomOps),
|
||||||
|
@ -333,7 +333,7 @@ void Scumm_v2::setupOpcodes() {
|
||||||
OPCODE(o2_dummy),
|
OPCODE(o2_dummy),
|
||||||
OPCODE(o2_ifState04),
|
OPCODE(o2_ifState04),
|
||||||
/* F0 */
|
/* F0 */
|
||||||
OPCODE(o5_lights),
|
OPCODE(o2_lights),
|
||||||
OPCODE(o5_getActorCostume),
|
OPCODE(o5_getActorCostume),
|
||||||
OPCODE(o5_loadRoom),
|
OPCODE(o5_loadRoom),
|
||||||
OPCODE(o2_roomOps),
|
OPCODE(o2_roomOps),
|
||||||
|
@ -1214,6 +1214,38 @@ void Scumm_v2::o2_isLessEqual() {
|
||||||
o5_jumpRelative();
|
o5_jumpRelative();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Scumm_v2::o2_lights() {
|
||||||
|
warning("o2_lights");
|
||||||
|
int a, b, c;
|
||||||
|
|
||||||
|
a = getVarOrDirectByte(0x80);
|
||||||
|
b = fetchScriptByte();
|
||||||
|
c = fetchScriptByte();
|
||||||
|
|
||||||
|
if (c == 0) {
|
||||||
|
if (_gameId == GID_MANIAC && _version == 1) {
|
||||||
|
// Convert older light mode values into
|
||||||
|
// equivalent values.of later games
|
||||||
|
// 0 Darkness
|
||||||
|
// 1 Flashlight
|
||||||
|
// 2 Lighted area
|
||||||
|
if (a == 2)
|
||||||
|
VAR(VAR_CURRENT_LIGHTS) = 11;
|
||||||
|
else if (a == 1)
|
||||||
|
VAR(VAR_CURRENT_LIGHTS) = 4;
|
||||||
|
else if (a == 0)
|
||||||
|
VAR(VAR_CURRENT_LIGHTS) = 0;
|
||||||
|
else
|
||||||
|
warning("o2_lights: light mode %d unknown", a);
|
||||||
|
; } else
|
||||||
|
VAR(VAR_CURRENT_LIGHTS) = a;
|
||||||
|
} else if (c == 1) {
|
||||||
|
_flashlight.xStrips = a;
|
||||||
|
_flashlight.yStrips = b;
|
||||||
|
}
|
||||||
|
_fullRedraw = 1;
|
||||||
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_loadRoomWithEgo() {
|
void Scumm_v2::o2_loadRoomWithEgo() {
|
||||||
Actor *a;
|
Actor *a;
|
||||||
int obj, room, x, y;
|
int obj, room, x, y;
|
||||||
|
@ -1500,6 +1532,8 @@ void Scumm_v2::o2_getActorWalkBox() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_dummy() {
|
void Scumm_v2::o2_dummy() {
|
||||||
|
// Opcode 238 is used in Zak but has no purpose
|
||||||
|
if (!(_gameId == GID_ZAK && _opcode == 238))
|
||||||
warning("o2_dummy invoked (opcode %d)", _opcode);
|
warning("o2_dummy invoked (opcode %d)", _opcode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue