renamed class Scumm to ScummEngine (consisten with other engine names; also makes room for a potential 'Scumm' namespace)
svn-id: r10549
This commit is contained in:
parent
68810ac106
commit
3f55f2669d
57 changed files with 1008 additions and 1008 deletions
|
@ -33,9 +33,9 @@
|
||||||
#include "usage_bits.h"
|
#include "usage_bits.h"
|
||||||
|
|
||||||
byte Actor::kInvalidBox = 0;
|
byte Actor::kInvalidBox = 0;
|
||||||
Scumm *Actor::_vm = 0;
|
ScummEngine *Actor::_vm = 0;
|
||||||
|
|
||||||
void Actor::initActorClass(Scumm *scumm) {
|
void Actor::initActorClass(ScummEngine *scumm) {
|
||||||
_vm = scumm;
|
_vm = scumm;
|
||||||
if (_vm->_features & GF_SMALL_HEADER) {
|
if (_vm->_features & GF_SMALL_HEADER) {
|
||||||
kInvalidBox = 255;
|
kInvalidBox = 255;
|
||||||
|
@ -141,7 +141,7 @@ void Actor::setActorWalkSpeed(uint newSpeedX, uint newSpeedY) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int Scumm::getAngleFromPos(int x, int y) const {
|
int ScummEngine::getAngleFromPos(int x, int y) const {
|
||||||
if (_gameId == GID_DIG || _gameId == GID_CMI) {
|
if (_gameId == GID_DIG || _gameId == GID_CMI) {
|
||||||
double temp = atan2((double)x, (double)-y);
|
double temp = atan2((double)x, (double)-y);
|
||||||
return normalizeAngle((int)(temp * 180 / 3.1415926535));
|
return normalizeAngle((int)(temp * 180 / 3.1415926535));
|
||||||
|
@ -783,7 +783,7 @@ void Actor::showActor() {
|
||||||
needRedraw = true;
|
needRedraw = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::showActors() {
|
void ScummEngine::showActors() {
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 1; i < _numActors; i++) {
|
for (i = 1; i < _numActors; i++) {
|
||||||
|
@ -792,7 +792,7 @@ void Scumm::showActors() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::walkActors() {
|
void ScummEngine::walkActors() {
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 1; i < _numActors; i++) {
|
for (i = 1; i < _numActors; i++) {
|
||||||
|
@ -805,7 +805,7 @@ void Scumm::walkActors() {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Used in Scumm v5 only. Play sounds associated with actors */
|
/* Used in Scumm v5 only. Play sounds associated with actors */
|
||||||
void Scumm::playActorSounds() {
|
void ScummEngine::playActorSounds() {
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 1; i < _numActors; i++) {
|
for (i = 1; i < _numActors; i++) {
|
||||||
|
@ -820,7 +820,7 @@ void Scumm::playActorSounds() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Actor *Scumm::derefActor(int id, const char *errmsg) const {
|
Actor *ScummEngine::derefActor(int id, const char *errmsg) const {
|
||||||
if (id == 0)
|
if (id == 0)
|
||||||
debug(3, "derefActor(0, \"%s\") in script %d, opcode 0x%x", errmsg, vm.slot[_curExecScript].number, _opcode);
|
debug(3, "derefActor(0, \"%s\") in script %d, opcode 0x%x", errmsg, vm.slot[_curExecScript].number, _opcode);
|
||||||
if (id < 0 || id >= _numActors || _actors[id].number != id) {
|
if (id < 0 || id >= _numActors || _actors[id].number != id) {
|
||||||
|
@ -832,7 +832,7 @@ Actor *Scumm::derefActor(int id, const char *errmsg) const {
|
||||||
return &_actors[id];
|
return &_actors[id];
|
||||||
}
|
}
|
||||||
|
|
||||||
Actor *Scumm::derefActorSafe(int id, const char *errmsg) const {
|
Actor *ScummEngine::derefActorSafe(int id, const char *errmsg) const {
|
||||||
if (id == 0)
|
if (id == 0)
|
||||||
debug(3, "derefActorSafe(0, \"%s\") in script %d, opcode 0x%x", errmsg, vm.slot[_curExecScript].number, _opcode);
|
debug(3, "derefActorSafe(0, \"%s\") in script %d, opcode 0x%x", errmsg, vm.slot[_curExecScript].number, _opcode);
|
||||||
if (id < 0 || id >= _numActors || _actors[id].number != id) {
|
if (id < 0 || id >= _numActors || _actors[id].number != id) {
|
||||||
|
@ -871,7 +871,7 @@ static int compareDrawOrder(const void* a, const void* b)
|
||||||
return actor1->number - actor2->number;
|
return actor1->number - actor2->number;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::processActors() {
|
void ScummEngine::processActors() {
|
||||||
int numactors = 0;
|
int numactors = 0;
|
||||||
|
|
||||||
// TODO : put this actors as a member array. It never has to grow or shrink
|
// TODO : put this actors as a member array. It never has to grow or shrink
|
||||||
|
@ -912,7 +912,7 @@ void Scumm::processActors() {
|
||||||
|
|
||||||
// Used in Scumm v8, to allow the verb coin to be drawn over the inventory
|
// Used in Scumm v8, to allow the verb coin to be drawn over the inventory
|
||||||
// chest. I'm assuming that draw order won't matter here.
|
// chest. I'm assuming that draw order won't matter here.
|
||||||
void Scumm::processUpperActors() {
|
void ScummEngine::processUpperActors() {
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 1; i < _numActors; i++) {
|
for (i = 1; i < _numActors; i++) {
|
||||||
|
@ -1069,7 +1069,7 @@ void Actor::animateLimb(int limb, int f) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::setActorRedrawFlags() {
|
void ScummEngine::setActorRedrawFlags() {
|
||||||
int i, j;
|
int i, j;
|
||||||
|
|
||||||
if (_fullRedraw) {
|
if (_fullRedraw) {
|
||||||
|
@ -1090,7 +1090,7 @@ void Scumm::setActorRedrawFlags() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::resetActorBgs() {
|
void ScummEngine::resetActorBgs() {
|
||||||
int i, j;
|
int i, j;
|
||||||
|
|
||||||
for (i = 0; i < gdi._numStrips; i++) {
|
for (i = 0; i < gdi._numStrips; i++) {
|
||||||
|
@ -1112,7 +1112,7 @@ void Scumm::resetActorBgs() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int Scumm::getActorFromPos(int x, int y) {
|
int ScummEngine::getActorFromPos(int x, int y) {
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (!testGfxAnyUsageBits(x >> 3))
|
if (!testGfxAnyUsageBits(x >> 3))
|
||||||
|
@ -1127,7 +1127,7 @@ int Scumm::getActorFromPos(int x, int y) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::actorTalk() {
|
void ScummEngine::actorTalk() {
|
||||||
Actor *a;
|
Actor *a;
|
||||||
|
|
||||||
_msgPtrToAdd = _charsetBuffer;
|
_msgPtrToAdd = _charsetBuffer;
|
||||||
|
@ -1179,7 +1179,7 @@ void Scumm::actorTalk() {
|
||||||
CHARSET_1();
|
CHARSET_1();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::stopTalk() {
|
void ScummEngine::stopTalk() {
|
||||||
int act;
|
int act;
|
||||||
|
|
||||||
_sound->stopTalkSound();
|
_sound->stopTalkSound();
|
||||||
|
@ -1200,7 +1200,7 @@ void Scumm::stopTalk() {
|
||||||
restoreCharsetBg();
|
restoreCharsetBg();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::clearMsgQueue() {
|
void ScummEngine::clearMsgQueue() {
|
||||||
_messagePtr = (const byte *)" ";
|
_messagePtr = (const byte *)" ";
|
||||||
stopTalk();
|
stopTalk();
|
||||||
}
|
}
|
||||||
|
|
|
@ -79,7 +79,7 @@ class Actor {
|
||||||
public:
|
public:
|
||||||
static byte kInvalidBox;
|
static byte kInvalidBox;
|
||||||
|
|
||||||
static void initActorClass(Scumm *scumm);
|
static void initActorClass(ScummEngine *scumm);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Common::Point _pos;
|
Common::Point _pos;
|
||||||
|
@ -119,7 +119,7 @@ protected:
|
||||||
ActorWalkData walkdata;
|
ActorWalkData walkdata;
|
||||||
int16 animVariable[16];
|
int16 animVariable[16];
|
||||||
|
|
||||||
static Scumm *_vm;
|
static ScummEngine *_vm;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
|
|
@ -112,7 +112,7 @@ static bool akos_compare(int a, int b, byte cmd) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Scumm::akos_hasManyDirections(Actor *a) {
|
bool ScummEngine::akos_hasManyDirections(Actor *a) {
|
||||||
byte *akos;
|
byte *akos;
|
||||||
const AkosHeader *akhd;
|
const AkosHeader *akhd;
|
||||||
|
|
||||||
|
@ -123,14 +123,14 @@ bool Scumm::akos_hasManyDirections(Actor *a) {
|
||||||
return (akhd->flags & 2) != 0;
|
return (akhd->flags & 2) != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int Scumm::akos_frameToAnim(Actor *a, int frame) {
|
int ScummEngine::akos_frameToAnim(Actor *a, int frame) {
|
||||||
if (akos_hasManyDirections(a))
|
if (akos_hasManyDirections(a))
|
||||||
return toSimpleDir(1, a->getFacing()) + frame * 8;
|
return toSimpleDir(1, a->getFacing()) + frame * 8;
|
||||||
else
|
else
|
||||||
return newDirToOldDir(a->getFacing()) + frame * 4;
|
return newDirToOldDir(a->getFacing()) + frame * 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::akos_decodeData(Actor *a, int frame, uint usemask) {
|
void ScummEngine::akos_decodeData(Actor *a, int frame, uint usemask) {
|
||||||
uint anim;
|
uint anim;
|
||||||
const byte *akos, *r;
|
const byte *akos, *r;
|
||||||
const AkosHeader *akhd;
|
const AkosHeader *akhd;
|
||||||
|
@ -1057,7 +1057,7 @@ byte AkosRenderer::codec16(int xmoveCur, int ymoveCur) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Scumm::akos_increaseAnims(const byte *akos, Actor *a) {
|
bool ScummEngine::akos_increaseAnims(const byte *akos, Actor *a) {
|
||||||
const byte *aksq, *akfo;
|
const byte *aksq, *akfo;
|
||||||
int i;
|
int i;
|
||||||
uint size;
|
uint size;
|
||||||
|
@ -1080,7 +1080,7 @@ bool Scumm::akos_increaseAnims(const byte *akos, Actor *a) {
|
||||||
#define GUW(o) READ_LE_UINT16(aksq+curpos+(o))
|
#define GUW(o) READ_LE_UINT16(aksq+curpos+(o))
|
||||||
#define GB(o) aksq[curpos+(o)]
|
#define GB(o) aksq[curpos+(o)]
|
||||||
|
|
||||||
bool Scumm::akos_increaseAnim(Actor *a, int chan, const byte *aksq, const uint16 *akfo, int numakfo) {
|
bool ScummEngine::akos_increaseAnim(Actor *a, int chan, const byte *aksq, const uint16 *akfo, int numakfo) {
|
||||||
byte active;
|
byte active;
|
||||||
uint old_curpos, curpos, end;
|
uint old_curpos, curpos, end;
|
||||||
uint code;
|
uint code;
|
||||||
|
@ -1313,7 +1313,7 @@ bool Scumm::akos_increaseAnim(Actor *a, int chan, const byte *aksq, const uint16
|
||||||
return curpos != old_curpos;
|
return curpos != old_curpos;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::akos_queCommand(byte cmd, Actor *a, int param_1, int param_2) {
|
void ScummEngine::akos_queCommand(byte cmd, Actor *a, int param_1, int param_2) {
|
||||||
switch (cmd) {
|
switch (cmd) {
|
||||||
case 1:
|
case 1:
|
||||||
a->putActor(0, 0, 0);
|
a->putActor(0, 0, 0);
|
||||||
|
|
|
@ -63,7 +63,7 @@ protected:
|
||||||
} akos16;
|
} akos16;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
AkosRenderer(Scumm *scumm) : BaseCostumeRenderer(scumm) {
|
AkosRenderer(ScummEngine *scumm) : BaseCostumeRenderer(scumm) {
|
||||||
akos = 0;
|
akos = 0;
|
||||||
akhd = 0;
|
akhd = 0;
|
||||||
akpl = 0;
|
akpl = 0;
|
||||||
|
|
|
@ -41,7 +41,7 @@ struct CostumeInfo {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
class Actor;
|
class Actor;
|
||||||
class Scumm;
|
class ScummEngine;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Base class for both CostumeRenderer and AkosRenderer.
|
* Base class for both CostumeRenderer and AkosRenderer.
|
||||||
|
@ -64,7 +64,7 @@ public:
|
||||||
uint _outwidth, _outheight;
|
uint _outwidth, _outheight;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
Scumm *_vm;
|
ScummEngine *_vm;
|
||||||
int32 _numStrips;
|
int32 _numStrips;
|
||||||
|
|
||||||
// Source pointer
|
// Source pointer
|
||||||
|
@ -95,7 +95,7 @@ protected:
|
||||||
} v1;
|
} v1;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
BaseCostumeRenderer(Scumm *scumm) {
|
BaseCostumeRenderer(ScummEngine *scumm) {
|
||||||
_dirty_id = 0;
|
_dirty_id = 0;
|
||||||
_shadow_mode = 0;
|
_shadow_mode = 0;
|
||||||
_shadow_table = 0;
|
_shadow_table = 0;
|
||||||
|
|
|
@ -192,7 +192,7 @@ void bompScaleFuncX(byte *line_buffer, byte *scaling_x_ptr, byte skip, int32 siz
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::drawBomp(const BompDrawData &bd, bool mirror) {
|
void ScummEngine::drawBomp(const BompDrawData &bd, bool mirror) {
|
||||||
const byte *src;
|
const byte *src;
|
||||||
byte *dst;
|
byte *dst;
|
||||||
byte maskbit;
|
byte maskbit;
|
||||||
|
|
|
@ -80,7 +80,7 @@ static bool compareSlope(int X1, int Y1, int X2, int Y2, int X3, int Y3);
|
||||||
static Common::Point closestPtOnLine(int ulx, int uly, int llx, int lly, int x, int y);
|
static Common::Point closestPtOnLine(int ulx, int uly, int llx, int lly, int x, int y);
|
||||||
|
|
||||||
|
|
||||||
byte Scumm::getMaskFromBox(int box) {
|
byte ScummEngine::getMaskFromBox(int box) {
|
||||||
// Fix for bug #740244 and #755863. This appears to have been a
|
// Fix for bug #740244 and #755863. This appears to have been a
|
||||||
// long standing bug in the original engine?
|
// long standing bug in the original engine?
|
||||||
if (_version <= 3 && box == 255)
|
if (_version <= 3 && box == 255)
|
||||||
|
@ -98,7 +98,7 @@ byte Scumm::getMaskFromBox(int box) {
|
||||||
return ptr->old.mask;
|
return ptr->old.mask;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::setBoxFlags(int box, int val) {
|
void ScummEngine::setBoxFlags(int box, int val) {
|
||||||
debug(2, "setBoxFlags(%d, 0x%02x)", box, val);
|
debug(2, "setBoxFlags(%d, 0x%02x)", box, val);
|
||||||
|
|
||||||
/* FULL_THROTTLE stuff */
|
/* FULL_THROTTLE stuff */
|
||||||
|
@ -117,7 +117,7 @@ void Scumm::setBoxFlags(int box, int val) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
byte Scumm::getBoxFlags(int box) {
|
byte ScummEngine::getBoxFlags(int box) {
|
||||||
Box *ptr = getBoxBaseAddr(box);
|
Box *ptr = getBoxBaseAddr(box);
|
||||||
if (!ptr)
|
if (!ptr)
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -129,7 +129,7 @@ byte Scumm::getBoxFlags(int box) {
|
||||||
return ptr->old.flags;
|
return ptr->old.flags;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::setBoxScale(int box, int scale) {
|
void ScummEngine::setBoxScale(int box, int scale) {
|
||||||
Box *ptr = getBoxBaseAddr(box);
|
Box *ptr = getBoxBaseAddr(box);
|
||||||
assert(ptr);
|
assert(ptr);
|
||||||
if (_version == 8)
|
if (_version == 8)
|
||||||
|
@ -140,13 +140,13 @@ void Scumm::setBoxScale(int box, int scale) {
|
||||||
ptr->old.scale = TO_LE_16(scale);
|
ptr->old.scale = TO_LE_16(scale);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::setBoxScaleSlot(int box, int slot) {
|
void ScummEngine::setBoxScaleSlot(int box, int slot) {
|
||||||
Box *ptr = getBoxBaseAddr(box);
|
Box *ptr = getBoxBaseAddr(box);
|
||||||
assert(ptr);
|
assert(ptr);
|
||||||
ptr->v8.scaleSlot = TO_LE_32(slot);
|
ptr->v8.scaleSlot = TO_LE_32(slot);
|
||||||
}
|
}
|
||||||
|
|
||||||
int Scumm::getScale(int box, int x, int y) {
|
int ScummEngine::getScale(int box, int x, int y) {
|
||||||
if (_features & GF_NO_SCALING)
|
if (_features & GF_NO_SCALING)
|
||||||
return 255;
|
return 255;
|
||||||
|
|
||||||
|
@ -207,7 +207,7 @@ int Scumm::getScale(int box, int x, int y) {
|
||||||
return scale;
|
return scale;
|
||||||
}
|
}
|
||||||
|
|
||||||
int Scumm::getBoxScale(int box) {
|
int ScummEngine::getBoxScale(int box) {
|
||||||
if (_features & GF_NO_SCALING)
|
if (_features & GF_NO_SCALING)
|
||||||
return 255;
|
return 255;
|
||||||
Box *ptr = getBoxBaseAddr(box);
|
Box *ptr = getBoxBaseAddr(box);
|
||||||
|
@ -233,7 +233,7 @@ int Scumm::getBoxScale(int box) {
|
||||||
* To accomodate old savegames, we attempt here to convert rtScaleTable
|
* To accomodate old savegames, we attempt here to convert rtScaleTable
|
||||||
* resources to scale slots.
|
* resources to scale slots.
|
||||||
*/
|
*/
|
||||||
void Scumm::convertScaleTableToScaleSlot(int slot) {
|
void ScummEngine::convertScaleTableToScaleSlot(int slot) {
|
||||||
assert(1 <= slot && slot <= ARRAYSIZE(_scaleSlots));
|
assert(1 <= slot && slot <= ARRAYSIZE(_scaleSlots));
|
||||||
|
|
||||||
byte *resptr = getResourceAddress(rtScaleTable, slot);
|
byte *resptr = getResourceAddress(rtScaleTable, slot);
|
||||||
|
@ -333,7 +333,7 @@ void Scumm::convertScaleTableToScaleSlot(int slot) {
|
||||||
warning("scale item %d, variance %f exceeds 1 (room %d)\n", slot, variance, _currentRoom);
|
warning("scale item %d, variance %f exceeds 1 (room %d)\n", slot, variance, _currentRoom);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::setScaleSlot(int slot, int x1, int y1, int scale1, int x2, int y2, int scale2) {
|
void ScummEngine::setScaleSlot(int slot, int x1, int y1, int scale1, int x2, int y2, int scale2) {
|
||||||
assert(1 <= slot && slot <= ARRAYSIZE(_scaleSlots));
|
assert(1 <= slot && slot <= ARRAYSIZE(_scaleSlots));
|
||||||
ScaleSlot &s = _scaleSlots[slot-1];
|
ScaleSlot &s = _scaleSlots[slot-1];
|
||||||
s.x2 = x2;
|
s.x2 = x2;
|
||||||
|
@ -344,7 +344,7 @@ void Scumm::setScaleSlot(int slot, int x1, int y1, int scale1, int x2, int y2, i
|
||||||
s.scale1 = scale1;
|
s.scale1 = scale1;
|
||||||
}
|
}
|
||||||
|
|
||||||
byte Scumm::getNumBoxes() {
|
byte ScummEngine::getNumBoxes() {
|
||||||
byte *ptr = getResourceAddress(rtMatrix, 2);
|
byte *ptr = getResourceAddress(rtMatrix, 2);
|
||||||
if (!ptr)
|
if (!ptr)
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -354,7 +354,7 @@ byte Scumm::getNumBoxes() {
|
||||||
return ptr[0];
|
return ptr[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
Box *Scumm::getBoxBaseAddr(int box) {
|
Box *ScummEngine::getBoxBaseAddr(int box) {
|
||||||
byte *ptr = getResourceAddress(rtMatrix, 2);
|
byte *ptr = getResourceAddress(rtMatrix, 2);
|
||||||
if (!ptr || box == 255)
|
if (!ptr || box == 255)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -391,7 +391,7 @@ Box *Scumm::getBoxBaseAddr(int box) {
|
||||||
return (Box *)(ptr + box * SIZEOF_BOX + 2);
|
return (Box *)(ptr + box * SIZEOF_BOX + 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
int Scumm::getSpecialBox(int x, int y) {
|
int ScummEngine::getSpecialBox(int x, int y) {
|
||||||
int i;
|
int i;
|
||||||
int numOfBoxes;
|
int numOfBoxes;
|
||||||
byte flag;
|
byte flag;
|
||||||
|
@ -411,7 +411,7 @@ int Scumm::getSpecialBox(int x, int y) {
|
||||||
return (-1);
|
return (-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Scumm::checkXYInBoxBounds(int b, int x, int y) {
|
bool ScummEngine::checkXYInBoxBounds(int b, int x, int y) {
|
||||||
BoxCoords box;
|
BoxCoords box;
|
||||||
|
|
||||||
if (b < 0 || b == Actor::kInvalidBox)
|
if (b < 0 || b == Actor::kInvalidBox)
|
||||||
|
@ -455,7 +455,7 @@ bool Scumm::checkXYInBoxBounds(int b, int x, int y) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::getBoxCoordinates(int boxnum, BoxCoords *box) {
|
void ScummEngine::getBoxCoordinates(int boxnum, BoxCoords *box) {
|
||||||
Box *bp = getBoxBaseAddr(boxnum);
|
Box *bp = getBoxBaseAddr(boxnum);
|
||||||
assert(bp);
|
assert(bp);
|
||||||
|
|
||||||
|
@ -514,7 +514,7 @@ void Scumm::getBoxCoordinates(int boxnum, BoxCoords *box) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
uint Scumm::distanceFromPt(int x, int y, int ptx, int pty) {
|
uint ScummEngine::distanceFromPt(int x, int y, int ptx, int pty) {
|
||||||
int diffx, diffy;
|
int diffx, diffy;
|
||||||
|
|
||||||
diffx = abs(ptx - x);
|
diffx = abs(ptx - x);
|
||||||
|
@ -615,7 +615,7 @@ Common::Point closestPtOnLine(int ulx, int uly, int llx, int lly, int x, int y)
|
||||||
return pt;
|
return pt;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Scumm::inBoxQuickReject(int b, int x, int y, int threshold) {
|
bool ScummEngine::inBoxQuickReject(int b, int x, int y, int threshold) {
|
||||||
int t;
|
int t;
|
||||||
BoxCoords box;
|
BoxCoords box;
|
||||||
|
|
||||||
|
@ -640,7 +640,7 @@ bool Scumm::inBoxQuickReject(int b, int x, int y, int threshold) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
int Scumm::getClosestPtOnBox(int b, int x, int y, int16& outX, int16& outY) {
|
int ScummEngine::getClosestPtOnBox(int b, int x, int y, int16& outX, int16& outY) {
|
||||||
Common::Point pt;
|
Common::Point pt;
|
||||||
uint dist;
|
uint dist;
|
||||||
uint bestdist = 0xFFFFFF;
|
uint bestdist = 0xFFFFFF;
|
||||||
|
@ -683,7 +683,7 @@ int Scumm::getClosestPtOnBox(int b, int x, int y, int16& outX, int16& outY) {
|
||||||
return bestdist;
|
return bestdist;
|
||||||
}
|
}
|
||||||
|
|
||||||
byte *Scumm::getBoxMatrixBaseAddr() {
|
byte *ScummEngine::getBoxMatrixBaseAddr() {
|
||||||
byte *ptr = getResourceAddress(rtMatrix, 1);
|
byte *ptr = getResourceAddress(rtMatrix, 1);
|
||||||
assert(ptr);
|
assert(ptr);
|
||||||
if (*ptr == 0xFF)
|
if (*ptr == 0xFF)
|
||||||
|
@ -697,7 +697,7 @@ byte *Scumm::getBoxMatrixBaseAddr() {
|
||||||
* way to 'to' (this can be 'to' itself or a third box).
|
* way to 'to' (this can be 'to' itself or a third box).
|
||||||
* If there is no connection -1 is return.
|
* If there is no connection -1 is return.
|
||||||
*/
|
*/
|
||||||
int Scumm::getPathToDestBox(byte from, byte to) {
|
int ScummEngine::getPathToDestBox(byte from, byte to) {
|
||||||
const byte *boxm;
|
const byte *boxm;
|
||||||
byte i;
|
byte i;
|
||||||
const int numOfBoxes = getNumBoxes();
|
const int numOfBoxes = getNumBoxes();
|
||||||
|
@ -936,7 +936,7 @@ static void printMatrix2(byte *matrix, int num) {
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void Scumm::createBoxMatrix() {
|
void ScummEngine::createBoxMatrix() {
|
||||||
int num, i, j, k;
|
int num, i, j, k;
|
||||||
byte *adjacentMatrix, *itineraryMatrix;
|
byte *adjacentMatrix, *itineraryMatrix;
|
||||||
|
|
||||||
|
@ -1033,7 +1033,7 @@ void Scumm::createBoxMatrix() {
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Check if two boxes are neighbours. */
|
/** Check if two boxes are neighbours. */
|
||||||
bool Scumm::areBoxesNeighbours(int box1nr, int box2nr) {
|
bool ScummEngine::areBoxesNeighbours(int box1nr, int box2nr) {
|
||||||
int j, k, m, n;
|
int j, k, m, n;
|
||||||
int tmp_x, tmp_y;
|
int tmp_x, tmp_y;
|
||||||
bool result;
|
bool result;
|
||||||
|
@ -1183,7 +1183,7 @@ void Actor::findPathTowardsOld(byte trap1, byte trap2, byte final_trap, Common::
|
||||||
* This way the lines bound a 'corridor' between the two boxes, through which
|
* This way the lines bound a 'corridor' between the two boxes, through which
|
||||||
* the actor has to walk to get from trap1 to trap2.
|
* the actor has to walk to get from trap1 to trap2.
|
||||||
*/
|
*/
|
||||||
void Scumm::getGates(int trap1, int trap2, Common::Point gateA[2], Common::Point gateB[2]) {
|
void ScummEngine::getGates(int trap1, int trap2, Common::Point gateA[2], Common::Point gateB[2]) {
|
||||||
int i, j;
|
int i, j;
|
||||||
int dist[8];
|
int dist[8];
|
||||||
int minDist[3];
|
int minDist[3];
|
||||||
|
|
|
@ -25,7 +25,7 @@
|
||||||
#include "actor.h"
|
#include "actor.h"
|
||||||
#include "charset.h"
|
#include "charset.h"
|
||||||
|
|
||||||
void Scumm::setCameraAtEx(int at) {
|
void ScummEngine::setCameraAtEx(int at) {
|
||||||
if (!(_features & GF_NEW_CAMERA)) {
|
if (!(_features & GF_NEW_CAMERA)) {
|
||||||
camera._mode = CM_NORMAL;
|
camera._mode = CM_NORMAL;
|
||||||
camera._cur.x = at;
|
camera._cur.x = at;
|
||||||
|
@ -34,7 +34,7 @@ void Scumm::setCameraAtEx(int at) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::setCameraAt(int pos_x, int pos_y) {
|
void ScummEngine::setCameraAt(int pos_x, int pos_y) {
|
||||||
if (camera._mode != CM_FOLLOW_ACTOR || abs(pos_x - camera._cur.x) > (_screenWidth / 2)) {
|
if (camera._mode != CM_FOLLOW_ACTOR || abs(pos_x - camera._cur.x) > (_screenWidth / 2)) {
|
||||||
camera._cur.x = pos_x;
|
camera._cur.x = pos_x;
|
||||||
}
|
}
|
||||||
|
@ -59,7 +59,7 @@ void Scumm::setCameraAt(int pos_x, int pos_y) {
|
||||||
stopTalk();
|
stopTalk();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v7::setCameraAt(int pos_x, int pos_y) {
|
void ScummEngine_v7::setCameraAt(int pos_x, int pos_y) {
|
||||||
Common::Point old;
|
Common::Point old;
|
||||||
|
|
||||||
old = camera._cur;
|
old = camera._cur;
|
||||||
|
@ -83,7 +83,7 @@ void Scumm_v7::setCameraAt(int pos_x, int pos_y) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::setCameraFollows(Actor *a) {
|
void ScummEngine::setCameraFollows(Actor *a) {
|
||||||
|
|
||||||
int t, i;
|
int t, i;
|
||||||
|
|
||||||
|
@ -109,7 +109,7 @@ void Scumm::setCameraFollows(Actor *a) {
|
||||||
runInventoryScript(0);
|
runInventoryScript(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v7::setCameraFollows(Actor *a) {
|
void ScummEngine_v7::setCameraFollows(Actor *a) {
|
||||||
|
|
||||||
byte oldfollow = camera._follows;
|
byte oldfollow = camera._follows;
|
||||||
int ax, ay;
|
int ax, ay;
|
||||||
|
@ -133,7 +133,7 @@ void Scumm_v7::setCameraFollows(Actor *a) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Scumm::clampCameraPos(Common::Point *pt) {
|
void ScummEngine::clampCameraPos(Common::Point *pt) {
|
||||||
if (pt->x < VAR(VAR_CAMERA_MIN_X))
|
if (pt->x < VAR(VAR_CAMERA_MIN_X))
|
||||||
pt->x = (short) VAR(VAR_CAMERA_MIN_X);
|
pt->x = (short) VAR(VAR_CAMERA_MIN_X);
|
||||||
|
|
||||||
|
@ -147,7 +147,7 @@ void Scumm::clampCameraPos(Common::Point *pt) {
|
||||||
pt->y = (short) VAR(VAR_CAMERA_MAX_Y);
|
pt->y = (short) VAR(VAR_CAMERA_MAX_Y);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::moveCamera() {
|
void ScummEngine::moveCamera() {
|
||||||
int pos = camera._cur.x;
|
int pos = camera._cur.x;
|
||||||
int actorx, t;
|
int actorx, t;
|
||||||
Actor *a = NULL;
|
Actor *a = NULL;
|
||||||
|
@ -225,7 +225,7 @@ void Scumm::moveCamera() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v7::moveCamera() {
|
void ScummEngine_v7::moveCamera() {
|
||||||
Common::Point old = camera._cur;
|
Common::Point old = camera._cur;
|
||||||
Actor *a = NULL;
|
Actor *a = NULL;
|
||||||
|
|
||||||
|
@ -310,7 +310,7 @@ void Scumm_v7::moveCamera() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Scumm::cameraMoved() {
|
void ScummEngine::cameraMoved() {
|
||||||
if (_features & GF_NEW_CAMERA) {
|
if (_features & GF_NEW_CAMERA) {
|
||||||
assert(camera._cur.x >= (_screenWidth / 2) && camera._cur.y >= (_screenHeight / 2));
|
assert(camera._cur.x >= (_screenWidth / 2) && camera._cur.y >= (_screenHeight / 2));
|
||||||
} else {
|
} else {
|
||||||
|
@ -349,19 +349,19 @@ void Scumm::cameraMoved() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::panCameraTo(int x, int y) {
|
void ScummEngine::panCameraTo(int x, int y) {
|
||||||
camera._dest.x = x;
|
camera._dest.x = x;
|
||||||
camera._mode = CM_PANNING;
|
camera._mode = CM_PANNING;
|
||||||
camera._movingToActor = false;
|
camera._movingToActor = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v7::panCameraTo(int x, int y) {
|
void ScummEngine_v7::panCameraTo(int x, int y) {
|
||||||
VAR(VAR_CAMERA_FOLLOWED_ACTOR) = camera._follows = 0;
|
VAR(VAR_CAMERA_FOLLOWED_ACTOR) = camera._follows = 0;
|
||||||
VAR(VAR_CAMERA_DEST_X) = camera._dest.x = x;
|
VAR(VAR_CAMERA_DEST_X) = camera._dest.x = x;
|
||||||
VAR(VAR_CAMERA_DEST_Y) = camera._dest.y = y;
|
VAR(VAR_CAMERA_DEST_Y) = camera._dest.y = y;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::actorFollowCamera(int act) {
|
void ScummEngine::actorFollowCamera(int act) {
|
||||||
if (!(_features & GF_NEW_CAMERA)) {
|
if (!(_features & GF_NEW_CAMERA)) {
|
||||||
int old;
|
int old;
|
||||||
|
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
#include "nut_renderer.h"
|
#include "nut_renderer.h"
|
||||||
#include "base/gameDetector.h"
|
#include "base/gameDetector.h"
|
||||||
|
|
||||||
CharsetRenderer::CharsetRenderer(Scumm *vm) {
|
CharsetRenderer::CharsetRenderer(ScummEngine *vm) {
|
||||||
|
|
||||||
_nextLeft = 0;
|
_nextLeft = 0;
|
||||||
_nextTop = 0;
|
_nextTop = 0;
|
||||||
|
@ -1219,7 +1219,7 @@ void CharsetRendererCommon::drawBits1(VirtScreen *vs, byte *dst, const byte *src
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CharsetRendererNut::CharsetRendererNut(Scumm *vm)
|
CharsetRendererNut::CharsetRendererNut(ScummEngine *vm)
|
||||||
: CharsetRenderer(vm) {
|
: CharsetRenderer(vm) {
|
||||||
_current = 0;
|
_current = 0;
|
||||||
|
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
#include "common/rect.h"
|
#include "common/rect.h"
|
||||||
#include "common/scummsys.h"
|
#include "common/scummsys.h"
|
||||||
|
|
||||||
class Scumm;
|
class ScummEngine;
|
||||||
class NutRenderer;
|
class NutRenderer;
|
||||||
struct VirtScreen;
|
struct VirtScreen;
|
||||||
|
|
||||||
|
@ -51,13 +51,13 @@ public:
|
||||||
bool _disableOffsX;
|
bool _disableOffsX;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
Scumm *_vm;
|
ScummEngine *_vm;
|
||||||
byte _curId;
|
byte _curId;
|
||||||
|
|
||||||
virtual int getCharWidth(byte chr) = 0;
|
virtual int getCharWidth(byte chr) = 0;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CharsetRenderer(Scumm *vm);
|
CharsetRenderer(ScummEngine *vm);
|
||||||
virtual ~CharsetRenderer() {}
|
virtual ~CharsetRenderer() {}
|
||||||
|
|
||||||
virtual void printChar(int chr) = 0;
|
virtual void printChar(int chr) = 0;
|
||||||
|
@ -80,7 +80,7 @@ protected:
|
||||||
void drawBits1(VirtScreen *vs, byte *dst, const byte *src, byte *mask, int drawTop, int width, int height);
|
void drawBits1(VirtScreen *vs, byte *dst, const byte *src, byte *mask, int drawTop, int width, int height);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CharsetRendererCommon(Scumm *vm) : CharsetRenderer(vm) {}
|
CharsetRendererCommon(ScummEngine *vm) : CharsetRenderer(vm) {}
|
||||||
|
|
||||||
void setCurID(byte id);
|
void setCurID(byte id);
|
||||||
|
|
||||||
|
@ -94,7 +94,7 @@ protected:
|
||||||
void drawBitsN(VirtScreen *vs, byte *dst, const byte *src, byte *mask, byte bpp, int drawTop, int width, int height);
|
void drawBitsN(VirtScreen *vs, byte *dst, const byte *src, byte *mask, byte bpp, int drawTop, int width, int height);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CharsetRendererClassic(Scumm *vm) : CharsetRendererCommon(vm) {}
|
CharsetRendererClassic(ScummEngine *vm) : CharsetRendererCommon(vm) {}
|
||||||
|
|
||||||
void printChar(int chr);
|
void printChar(int chr);
|
||||||
};
|
};
|
||||||
|
@ -107,7 +107,7 @@ protected:
|
||||||
int getCharWidth(byte chr);
|
int getCharWidth(byte chr);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CharsetRendererV3(Scumm *vm) : CharsetRendererCommon(vm) {}
|
CharsetRendererV3(ScummEngine *vm) : CharsetRendererCommon(vm) {}
|
||||||
|
|
||||||
void printChar(int chr);
|
void printChar(int chr);
|
||||||
void setCurID(byte id);
|
void setCurID(byte id);
|
||||||
|
@ -120,7 +120,7 @@ protected:
|
||||||
int getCharWidth(byte chr) { return 8; }
|
int getCharWidth(byte chr) { return 8; }
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CharsetRendererV2(Scumm *vm) : CharsetRendererV3(vm) {}
|
CharsetRendererV2(ScummEngine *vm) : CharsetRendererV3(vm) {}
|
||||||
|
|
||||||
void setCurID(byte id);
|
void setCurID(byte id);
|
||||||
};
|
};
|
||||||
|
@ -133,7 +133,7 @@ protected:
|
||||||
NutRenderer *_current;
|
NutRenderer *_current;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CharsetRendererNut(Scumm *vm);
|
CharsetRendererNut(ScummEngine *vm);
|
||||||
~CharsetRendererNut();
|
~CharsetRendererNut();
|
||||||
|
|
||||||
void printChar(int chr);
|
void printChar(int chr);
|
||||||
|
|
|
@ -666,11 +666,11 @@ byte CostumeRenderer::drawLimb(const CostumeData &cost, int limb) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int Scumm::cost_frameToAnim(Actor *a, int frame) {
|
int ScummEngine::cost_frameToAnim(Actor *a, int frame) {
|
||||||
return newDirToOldDir(a->getFacing()) + frame * 4;
|
return newDirToOldDir(a->getFacing()) + frame * 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::cost_decodeData(Actor *a, int frame, uint usemask) {
|
void ScummEngine::cost_decodeData(Actor *a, int frame, uint usemask) {
|
||||||
const byte *r;
|
const byte *r;
|
||||||
uint mask, j;
|
uint mask, j;
|
||||||
int i;
|
int i;
|
||||||
|
@ -842,7 +842,7 @@ byte LoadedCostume::increaseAnim(Actor *a, int slot) {
|
||||||
} while (1);
|
} while (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Scumm::isCostumeInUse(int cost) const {
|
bool ScummEngine::isCostumeInUse(int cost) const {
|
||||||
int i;
|
int i;
|
||||||
Actor *a;
|
Actor *a;
|
||||||
|
|
||||||
|
|
|
@ -25,7 +25,7 @@
|
||||||
|
|
||||||
class LoadedCostume {
|
class LoadedCostume {
|
||||||
protected:
|
protected:
|
||||||
Scumm *_vm;
|
ScummEngine *_vm;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
int _id;
|
int _id;
|
||||||
|
@ -39,7 +39,7 @@ public:
|
||||||
byte _format;
|
byte _format;
|
||||||
bool _mirror;
|
bool _mirror;
|
||||||
|
|
||||||
LoadedCostume(Scumm *vm) :
|
LoadedCostume(ScummEngine *vm) :
|
||||||
_vm(vm), _id(-1), _baseptr(0), _animCmds(0), _dataOffsets(0), _palette(0),
|
_vm(vm), _id(-1), _baseptr(0), _animCmds(0), _dataOffsets(0), _palette(0),
|
||||||
_frameOffsets(0), _numColors(0), _numAnim(0), _format(0), _mirror(false) {}
|
_frameOffsets(0), _numColors(0), _numAnim(0), _format(0), _mirror(false) {}
|
||||||
|
|
||||||
|
@ -60,7 +60,7 @@ protected:
|
||||||
byte _palette[32];
|
byte _palette[32];
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CostumeRenderer(Scumm *vm) : BaseCostumeRenderer(vm), _loaded(vm) {}
|
CostumeRenderer(ScummEngine *vm) : BaseCostumeRenderer(vm), _loaded(vm) {}
|
||||||
|
|
||||||
void setPalette(byte *palette);
|
void setPalette(byte *palette);
|
||||||
void setFacing(Actor *a);
|
void setFacing(Actor *a);
|
||||||
|
|
|
@ -55,7 +55,7 @@ ScummDebugger::ScummDebugger() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Initialisation Functions
|
// Initialisation Functions
|
||||||
void ScummDebugger::attach(Scumm *s, char *entry) {
|
void ScummDebugger::attach(ScummEngine *s, char *entry) {
|
||||||
|
|
||||||
#ifdef _WIN32_WCE
|
#ifdef _WIN32_WCE
|
||||||
force_keyboard(true);
|
force_keyboard(true);
|
||||||
|
@ -850,7 +850,7 @@ void ScummDebugger::printBox(int box) {
|
||||||
static int gfxPrimitivesCompareInt(const void *a, const void *b);
|
static int gfxPrimitivesCompareInt(const void *a, const void *b);
|
||||||
|
|
||||||
|
|
||||||
static void hlineColor(Scumm *scumm, int x1, int x2, int y, byte color)
|
static void hlineColor(ScummEngine *scumm, int x1, int x2, int y, byte color)
|
||||||
{
|
{
|
||||||
VirtScreen *vs = &scumm->virtscr[0];
|
VirtScreen *vs = &scumm->virtscr[0];
|
||||||
byte *ptr;
|
byte *ptr;
|
||||||
|
@ -884,7 +884,7 @@ static int gfxPrimitivesCompareInt(const void *a, const void *b)
|
||||||
return (*(const int *)a) - (*(const int *)b);
|
return (*(const int *)a) - (*(const int *)b);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void fillQuad(Scumm *scumm, int16 vx[4], int16 vy[4], int color)
|
static void fillQuad(ScummEngine *scumm, int16 vx[4], int16 vy[4], int color)
|
||||||
{
|
{
|
||||||
const int N = 4;
|
const int N = 4;
|
||||||
int i;
|
int i;
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
// Choose between text console or ScummConsole
|
// Choose between text console or ScummConsole
|
||||||
#define USE_CONSOLE 1
|
#define USE_CONSOLE 1
|
||||||
|
|
||||||
class Scumm;
|
class ScummEngine;
|
||||||
class ScummDebugger;
|
class ScummDebugger;
|
||||||
|
|
||||||
typedef bool (ScummDebugger::*DebugProc)(int argc, const char **argv);
|
typedef bool (ScummDebugger::*DebugProc)(int argc, const char **argv);
|
||||||
|
@ -52,10 +52,10 @@ public:
|
||||||
ScummDebugger();
|
ScummDebugger();
|
||||||
|
|
||||||
void on_frame();
|
void on_frame();
|
||||||
void attach(Scumm *s, char *entry);
|
void attach(ScummEngine *s, char *entry);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
Scumm *_s;
|
ScummEngine *_s;
|
||||||
int _frame_countdown, _dvar_count, _dcmd_count;
|
int _frame_countdown, _dvar_count, _dcmd_count;
|
||||||
DVar _dvars[256];
|
DVar _dvars[256];
|
||||||
DCmd _dcmds[256];
|
DCmd _dcmds[256];
|
||||||
|
|
|
@ -227,7 +227,7 @@ enum {
|
||||||
kQuitCmd = 'QUIT'
|
kQuitCmd = 'QUIT'
|
||||||
};
|
};
|
||||||
|
|
||||||
SaveLoadDialog::SaveLoadDialog(NewGui *gui, Scumm *scumm)
|
SaveLoadDialog::SaveLoadDialog(NewGui *gui, ScummEngine *scumm)
|
||||||
: ScummDialog(gui, scumm, 20, 8, 280, 184) {
|
: ScummDialog(gui, scumm, 20, 8, 280, 184) {
|
||||||
const int x = _w - kButtonWidth - 8;
|
const int x = _w - kButtonWidth - 8;
|
||||||
int y = 20;
|
int y = 20;
|
||||||
|
@ -423,10 +423,10 @@ enum {
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifndef _WIN32_WCE
|
#ifndef _WIN32_WCE
|
||||||
OptionsDialog::OptionsDialog(NewGui *gui, Scumm *scumm)
|
OptionsDialog::OptionsDialog(NewGui *gui, ScummEngine *scumm)
|
||||||
: ScummDialog(gui, scumm, 40, 30, 240, 124) {
|
: ScummDialog(gui, scumm, 40, 30, 240, 124) {
|
||||||
#else
|
#else
|
||||||
OptionsDialog::OptionsDialog(NewGui *gui, Scumm *scumm)
|
OptionsDialog::OptionsDialog(NewGui *gui, ScummEngine *scumm)
|
||||||
: ScummDialog(gui, scumm, 40, 30, 240, 124 + kButtonHeight + 4) {
|
: ScummDialog(gui, scumm, 40, 30, 240, 124 + kButtonHeight + 4) {
|
||||||
#endif
|
#endif
|
||||||
//
|
//
|
||||||
|
@ -580,7 +580,7 @@ enum {
|
||||||
kPrevCmd = 'PREV'
|
kPrevCmd = 'PREV'
|
||||||
};
|
};
|
||||||
|
|
||||||
HelpDialog::HelpDialog(NewGui *gui, Scumm *scumm)
|
HelpDialog::HelpDialog(NewGui *gui, ScummEngine *scumm)
|
||||||
: ScummDialog(gui, scumm, 5, 5, 310, 190) {
|
: ScummDialog(gui, scumm, 5, 5, 310, 190) {
|
||||||
|
|
||||||
_page = 1;
|
_page = 1;
|
||||||
|
@ -650,12 +650,12 @@ void HelpDialog::handleCommand(CommandSender *sender, uint32 cmd, uint32 data) {
|
||||||
|
|
||||||
#pragma mark -
|
#pragma mark -
|
||||||
|
|
||||||
InfoDialog::InfoDialog(NewGui *gui, Scumm *scumm, int res)
|
InfoDialog::InfoDialog(NewGui *gui, ScummEngine *scumm, int res)
|
||||||
: ScummDialog(gui, scumm, 0, 80, 0, 16) { // dummy x and w
|
: ScummDialog(gui, scumm, 0, 80, 0, 16) { // dummy x and w
|
||||||
setInfoText(queryResString (res));
|
setInfoText(queryResString (res));
|
||||||
}
|
}
|
||||||
|
|
||||||
InfoDialog::InfoDialog(NewGui *gui, Scumm *scumm, const String& message)
|
InfoDialog::InfoDialog(NewGui *gui, ScummEngine *scumm, const String& message)
|
||||||
: ScummDialog(gui, scumm, 0, 80, 0, 16) { // dummy x and w
|
: ScummDialog(gui, scumm, 0, 80, 0, 16) { // dummy x and w
|
||||||
setInfoText(message);
|
setInfoText(message);
|
||||||
}
|
}
|
||||||
|
@ -671,11 +671,11 @@ void InfoDialog::setInfoText(const String& message) {
|
||||||
|
|
||||||
#pragma mark -
|
#pragma mark -
|
||||||
|
|
||||||
PauseDialog::PauseDialog(NewGui *gui, Scumm *scumm)
|
PauseDialog::PauseDialog(NewGui *gui, ScummEngine *scumm)
|
||||||
: InfoDialog(gui, scumm, 10) {
|
: InfoDialog(gui, scumm, 10) {
|
||||||
}
|
}
|
||||||
|
|
||||||
ConfirmExitDialog::ConfirmExitDialog(NewGui *gui, Scumm *scumm)
|
ConfirmExitDialog::ConfirmExitDialog(NewGui *gui, ScummEngine *scumm)
|
||||||
: InfoDialog(gui, scumm, "Do you really want to quit (y/n)?") {
|
: InfoDialog(gui, scumm, "Do you really want to quit (y/n)?") {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -699,7 +699,7 @@ enum {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
KeysDialog::KeysDialog(NewGui *gui, Scumm *scumm)
|
KeysDialog::KeysDialog(NewGui *gui, ScummEngine *scumm)
|
||||||
: ScummDialog(gui, scumm, 30, 20, 260, 160) {
|
: ScummDialog(gui, scumm, 30, 20, 260, 160) {
|
||||||
addButton(160, 20, queryCustomString(24), kMapCmd, 'M'); // Map
|
addButton(160, 20, queryCustomString(24), kMapCmd, 'M'); // Map
|
||||||
addButton(160, 40, "OK", kOKCmd, 'O'); // OK
|
addButton(160, 40, "OK", kOKCmd, 'O'); // OK
|
||||||
|
|
|
@ -30,17 +30,17 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
class ListWidget;
|
class ListWidget;
|
||||||
class Scumm;
|
class ScummEngine;
|
||||||
|
|
||||||
class ScummDialog : public Dialog {
|
class ScummDialog : public Dialog {
|
||||||
public:
|
public:
|
||||||
ScummDialog(NewGui *gui, Scumm *scumm, int x, int y, int w, int h)
|
ScummDialog(NewGui *gui, ScummEngine *scumm, int x, int y, int w, int h)
|
||||||
: Dialog(gui, x, y, w, h), _scumm(scumm) {}
|
: Dialog(gui, x, y, w, h), _scumm(scumm) {}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
typedef Common::String String;
|
typedef Common::String String;
|
||||||
|
|
||||||
Scumm *_scumm;
|
ScummEngine *_scumm;
|
||||||
|
|
||||||
void addResText(int x, int y, int w, int h, int resID);
|
void addResText(int x, int y, int w, int h, int resID);
|
||||||
|
|
||||||
|
@ -54,7 +54,7 @@ protected:
|
||||||
|
|
||||||
class SaveLoadDialog : public ScummDialog {
|
class SaveLoadDialog : public ScummDialog {
|
||||||
public:
|
public:
|
||||||
SaveLoadDialog(NewGui *gui, Scumm *scumm);
|
SaveLoadDialog(NewGui *gui, ScummEngine *scumm);
|
||||||
~SaveLoadDialog();
|
~SaveLoadDialog();
|
||||||
virtual void handleCommand(CommandSender *sender, uint32 cmd, uint32 data);
|
virtual void handleCommand(CommandSender *sender, uint32 cmd, uint32 data);
|
||||||
virtual void open();
|
virtual void open();
|
||||||
|
@ -84,7 +84,7 @@ protected:
|
||||||
|
|
||||||
class HelpDialog : public ScummDialog {
|
class HelpDialog : public ScummDialog {
|
||||||
public:
|
public:
|
||||||
HelpDialog(NewGui *gui, Scumm *scumm);
|
HelpDialog(NewGui *gui, ScummEngine *scumm);
|
||||||
virtual void handleCommand(CommandSender *sender, uint32 cmd, uint32 data);
|
virtual void handleCommand(CommandSender *sender, uint32 cmd, uint32 data);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
@ -112,7 +112,7 @@ protected:
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
public:
|
public:
|
||||||
OptionsDialog(NewGui *gui, Scumm *scumm);
|
OptionsDialog(NewGui *gui, ScummEngine *scumm);
|
||||||
~OptionsDialog();
|
~OptionsDialog();
|
||||||
|
|
||||||
virtual void open();
|
virtual void open();
|
||||||
|
@ -139,9 +139,9 @@ protected:
|
||||||
class InfoDialog : public ScummDialog {
|
class InfoDialog : public ScummDialog {
|
||||||
public:
|
public:
|
||||||
// arbitrary message
|
// arbitrary message
|
||||||
InfoDialog(NewGui *gui, Scumm *scumm, const String& message);
|
InfoDialog(NewGui *gui, ScummEngine *scumm, const String& message);
|
||||||
// from resources
|
// from resources
|
||||||
InfoDialog(NewGui *gui, Scumm *scumm, int res);
|
InfoDialog(NewGui *gui, ScummEngine *scumm, int res);
|
||||||
|
|
||||||
virtual void handleMouseDown(int x, int y, int button, int clickCount) {
|
virtual void handleMouseDown(int x, int y, int button, int clickCount) {
|
||||||
close();
|
close();
|
||||||
|
@ -157,7 +157,7 @@ protected:
|
||||||
|
|
||||||
class PauseDialog : public InfoDialog {
|
class PauseDialog : public InfoDialog {
|
||||||
public:
|
public:
|
||||||
PauseDialog(NewGui *gui, Scumm *scumm);
|
PauseDialog(NewGui *gui, ScummEngine *scumm);
|
||||||
virtual void handleKeyDown(uint16 ascii, int keycode, int modifiers)
|
virtual void handleKeyDown(uint16 ascii, int keycode, int modifiers)
|
||||||
{
|
{
|
||||||
if (ascii == ' ') // Close pause dialog if space key is pressed
|
if (ascii == ' ') // Close pause dialog if space key is pressed
|
||||||
|
@ -169,7 +169,7 @@ public:
|
||||||
|
|
||||||
class ConfirmExitDialog : public InfoDialog {
|
class ConfirmExitDialog : public InfoDialog {
|
||||||
public:
|
public:
|
||||||
ConfirmExitDialog(NewGui *gui, Scumm *scumm);
|
ConfirmExitDialog(NewGui *gui, ScummEngine *scumm);
|
||||||
virtual void handleKeyDown(uint16 ascii, int keycode, int modifiers);
|
virtual void handleKeyDown(uint16 ascii, int keycode, int modifiers);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -177,7 +177,7 @@ public:
|
||||||
|
|
||||||
class KeysDialog : public ScummDialog {
|
class KeysDialog : public ScummDialog {
|
||||||
public:
|
public:
|
||||||
KeysDialog(NewGui *gui, Scumm *scumm);
|
KeysDialog(NewGui *gui, ScummEngine *scumm);
|
||||||
|
|
||||||
virtual void handleCommand(CommandSender *sender, uint32 cmd, uint32 data);
|
virtual void handleCommand(CommandSender *sender, uint32 cmd, uint32 data);
|
||||||
virtual void handleKeyDown(uint16 ascii, int keycode, int modifiers);
|
virtual void handleKeyDown(uint16 ascii, int keycode, int modifiers);
|
||||||
|
|
124
scumm/gfx.cpp
124
scumm/gfx.cpp
|
@ -193,7 +193,7 @@ static inline uint colorWeight(int red, int green, int blue) {
|
||||||
return 3 * red * red + 6 * green * green + 2 * blue * blue;
|
return 3 * red * red + 6 * green * green + 2 * blue * blue;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::getGraphicsPerformance() {
|
void ScummEngine::getGraphicsPerformance() {
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 10; i != 0; i--) {
|
for (i = 10; i != 0; i--) {
|
||||||
|
@ -217,7 +217,7 @@ void Scumm::getGraphicsPerformance() {
|
||||||
initScreens(0, 16, _screenWidth, 144);
|
initScreens(0, 16, _screenWidth, 144);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::initScreens(int a, int b, int w, int h) {
|
void ScummEngine::initScreens(int a, int b, int w, int h) {
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 0; i < 3; i++) {
|
for (i = 0; i < 3; i++) {
|
||||||
|
@ -241,7 +241,7 @@ void Scumm::initScreens(int a, int b, int w, int h) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::initVirtScreen(int slot, int number, int top, int width, int height, bool twobufs,
|
void ScummEngine::initVirtScreen(int slot, int number, int top, int width, int height, bool twobufs,
|
||||||
bool scrollable) {
|
bool scrollable) {
|
||||||
VirtScreen *vs = &virtscr[slot];
|
VirtScreen *vs = &virtscr[slot];
|
||||||
int size;
|
int size;
|
||||||
|
@ -286,7 +286,7 @@ void Scumm::initVirtScreen(int slot, int number, int top, int width, int height,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
VirtScreen *Scumm::findVirtScreen(int y) {
|
VirtScreen *ScummEngine::findVirtScreen(int y) {
|
||||||
VirtScreen *vs = virtscr;
|
VirtScreen *vs = virtscr;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
@ -298,7 +298,7 @@ VirtScreen *Scumm::findVirtScreen(int y) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::updateDirtyRect(int virt, int left, int right, int top, int bottom, int dirtybit) {
|
void ScummEngine::updateDirtyRect(int virt, int left, int right, int top, int bottom, int dirtybit) {
|
||||||
VirtScreen *vs = &virtscr[virt];
|
VirtScreen *vs = &virtscr[virt];
|
||||||
int lp, rp;
|
int lp, rp;
|
||||||
|
|
||||||
|
@ -353,7 +353,7 @@ void Scumm::updateDirtyRect(int virt, int left, int right, int top, int bottom,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::drawDirtyScreenParts() {
|
void ScummEngine::drawDirtyScreenParts() {
|
||||||
int i;
|
int i;
|
||||||
VirtScreen *vs;
|
VirtScreen *vs;
|
||||||
byte *src;
|
byte *src;
|
||||||
|
@ -386,7 +386,7 @@ void Scumm::drawDirtyScreenParts() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::updateDirtyScreen(int slot) {
|
void ScummEngine::updateDirtyScreen(int slot) {
|
||||||
gdi.updateDirtyScreen(&virtscr[slot]);
|
gdi.updateDirtyScreen(&virtscr[slot]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -501,7 +501,7 @@ void Gdi::resetBackground(int top, int bottom, int strip) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::blit(byte *dst, const byte *src, int w, int h) {
|
void ScummEngine::blit(byte *dst, const byte *src, int w, int h) {
|
||||||
assert(h > 0);
|
assert(h > 0);
|
||||||
assert(src != NULL);
|
assert(src != NULL);
|
||||||
assert(dst != NULL);
|
assert(dst != NULL);
|
||||||
|
@ -518,7 +518,7 @@ void Scumm::blit(byte *dst, const byte *src, int w, int h) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::drawBox(int x, int y, int x2, int y2, int color) {
|
void ScummEngine::drawBox(int x, int y, int x2, int y2, int color) {
|
||||||
int width, height;
|
int width, height;
|
||||||
VirtScreen *vs;
|
VirtScreen *vs;
|
||||||
byte *backbuff, *bgbuff;
|
byte *backbuff, *bgbuff;
|
||||||
|
@ -581,7 +581,7 @@ void Scumm::drawBox(int x, int y, int x2, int y2, int color) {
|
||||||
|
|
||||||
#pragma mark -
|
#pragma mark -
|
||||||
|
|
||||||
void Scumm::initBGBuffers(int height) {
|
void ScummEngine::initBGBuffers(int height) {
|
||||||
const byte *ptr;
|
const byte *ptr;
|
||||||
int size, itemsize, i;
|
int size, itemsize, i;
|
||||||
byte *room;
|
byte *room;
|
||||||
|
@ -635,7 +635,7 @@ void Scumm::initBGBuffers(int height) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::drawFlashlight() {
|
void ScummEngine::drawFlashlight() {
|
||||||
int i, j, offset, x, y;
|
int i, j, offset, x, y;
|
||||||
|
|
||||||
// Remove the flash light first if it was previously drawn
|
// Remove the flash light first if it was previously drawn
|
||||||
|
@ -723,7 +723,7 @@ void Scumm::drawFlashlight() {
|
||||||
* Redraw background as needed, i.e. the left/right sides if scrolling took place etc.
|
* Redraw background as needed, i.e. the left/right sides if scrolling took place etc.
|
||||||
* Note that this only updated the virtual screen, not the actual display.
|
* Note that this only updated the virtual screen, not the actual display.
|
||||||
*/
|
*/
|
||||||
void Scumm::redrawBGAreas() {
|
void ScummEngine::redrawBGAreas() {
|
||||||
int i;
|
int i;
|
||||||
int val;
|
int val;
|
||||||
int diff;
|
int diff;
|
||||||
|
@ -773,7 +773,7 @@ void Scumm::redrawBGAreas() {
|
||||||
_BgNeedsRedraw = false;
|
_BgNeedsRedraw = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::redrawBGStrip(int start, int num) {
|
void ScummEngine::redrawBGStrip(int start, int num) {
|
||||||
int s = _screenStartStrip + start;
|
int s = _screenStartStrip + start;
|
||||||
|
|
||||||
assert(s >= 0 && (size_t) s < sizeof(gfxUsageBits) / (3 * sizeof(gfxUsageBits[0])));
|
assert(s >= 0 && (size_t) s < sizeof(gfxUsageBits) / (3 * sizeof(gfxUsageBits[0])));
|
||||||
|
@ -788,7 +788,7 @@ void Scumm::redrawBGStrip(int start, int num) {
|
||||||
&virtscr[0], s, 0, _roomWidth, virtscr[0].height, s, num, 0, _roomStrips);
|
&virtscr[0], s, 0, _roomWidth, virtscr[0].height, s, num, 0, _roomStrips);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::restoreCharsetBg() {
|
void ScummEngine::restoreCharsetBg() {
|
||||||
if (_charset->_hasMask) {
|
if (_charset->_hasMask) {
|
||||||
restoreBG(gdi._mask);
|
restoreBG(gdi._mask);
|
||||||
_charset->_hasMask = false;
|
_charset->_hasMask = false;
|
||||||
|
@ -802,7 +802,7 @@ void Scumm::restoreCharsetBg() {
|
||||||
_charset->_nextTop = _string[0].ypos;
|
_charset->_nextTop = _string[0].ypos;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::restoreBG(Common::Rect rect, byte backColor) {
|
void ScummEngine::restoreBG(Common::Rect rect, byte backColor) {
|
||||||
VirtScreen *vs;
|
VirtScreen *vs;
|
||||||
int topline, height, width;
|
int topline, height, width;
|
||||||
byte *backbuff, *bgbak;
|
byte *backbuff, *bgbak;
|
||||||
|
@ -872,13 +872,13 @@ void Scumm::restoreBG(Common::Rect rect, byte backColor) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Scumm::hasCharsetMask(int left, int top, int right, int bottom) {
|
bool ScummEngine::hasCharsetMask(int left, int top, int right, int bottom) {
|
||||||
Common::Rect rect(left, top, right, bottom);
|
Common::Rect rect(left, top, right, bottom);
|
||||||
|
|
||||||
return _charset->_hasMask && rect.intersects(gdi._mask);
|
return _charset->_hasMask && rect.intersects(gdi._mask);
|
||||||
}
|
}
|
||||||
|
|
||||||
byte *Scumm::getMaskBuffer(int x, int y, int z) {
|
byte *ScummEngine::getMaskBuffer(int x, int y, int z) {
|
||||||
return getResourceAddress(rtBuffer, 9)
|
return getResourceAddress(rtBuffer, 9)
|
||||||
+ _screenStartStrip + (x / 8) + y * gdi._numStrips + gdi._imgBufOffs[z];
|
+ _screenStartStrip + (x / 8) + y * gdi._numStrips + gdi._imgBufOffs[z];
|
||||||
}
|
}
|
||||||
|
@ -2172,7 +2172,7 @@ void Gdi::unkDecode11(byte *dst, const byte *src, int height) {
|
||||||
#pragma mark --- Transition effects ---
|
#pragma mark --- Transition effects ---
|
||||||
#pragma mark -
|
#pragma mark -
|
||||||
|
|
||||||
void Scumm::fadeIn(int effect) {
|
void ScummEngine::fadeIn(int effect) {
|
||||||
updatePalette();
|
updatePalette();
|
||||||
|
|
||||||
switch (effect) {
|
switch (effect) {
|
||||||
|
@ -2216,7 +2216,7 @@ void Scumm::fadeIn(int effect) {
|
||||||
_screenEffectFlag = true;
|
_screenEffectFlag = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::fadeOut(int effect) {
|
void ScummEngine::fadeOut(int effect) {
|
||||||
VirtScreen *vs = &virtscr[0];
|
VirtScreen *vs = &virtscr[0];
|
||||||
|
|
||||||
vs->setDirtyRange(0, 0);
|
vs->setDirtyRange(0, 0);
|
||||||
|
@ -2274,7 +2274,7 @@ void Scumm::fadeOut(int effect) {
|
||||||
* in a certain order; the exact order determines how the effect appears to the user.
|
* in a certain order; the exact order determines how the effect appears to the user.
|
||||||
* @param a the transition effect to perform
|
* @param a the transition effect to perform
|
||||||
*/
|
*/
|
||||||
void Scumm::transitionEffect(int a) {
|
void ScummEngine::transitionEffect(int a) {
|
||||||
int delta[16]; // Offset applied during each iteration
|
int delta[16]; // Offset applied during each iteration
|
||||||
int tab_2[16];
|
int tab_2[16];
|
||||||
int i, j;
|
int i, j;
|
||||||
|
@ -2335,7 +2335,7 @@ void Scumm::transitionEffect(int a) {
|
||||||
* dissolveEffect(8, 8) produces a square-by-square dissolve
|
* dissolveEffect(8, 8) produces a square-by-square dissolve
|
||||||
* dissolveEffect(virtsrc[0].width, 1) produces a line-by-line dissolve
|
* dissolveEffect(virtsrc[0].width, 1) produces a line-by-line dissolve
|
||||||
*/
|
*/
|
||||||
void Scumm::dissolveEffect(int width, int height) {
|
void ScummEngine::dissolveEffect(int width, int height) {
|
||||||
VirtScreen *vs = &virtscr[0];
|
VirtScreen *vs = &virtscr[0];
|
||||||
int *offsets;
|
int *offsets;
|
||||||
int blits_before_refresh, blits;
|
int blits_before_refresh, blits;
|
||||||
|
@ -2441,7 +2441,7 @@ void Scumm::dissolveEffect(int width, int height) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::scrollEffect(int dir) {
|
void ScummEngine::scrollEffect(int dir) {
|
||||||
VirtScreen *vs = &virtscr[0];
|
VirtScreen *vs = &virtscr[0];
|
||||||
|
|
||||||
int x, y;
|
int x, y;
|
||||||
|
@ -2518,7 +2518,7 @@ void Scumm::scrollEffect(int dir) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::unkScreenEffect6() {
|
void ScummEngine::unkScreenEffect6() {
|
||||||
// CD Loom (but not EGA Loom!) uses a more fine-grained dissolve
|
// CD Loom (but not EGA Loom!) uses a more fine-grained dissolve
|
||||||
if (_gameId == GID_LOOM256)
|
if (_gameId == GID_LOOM256)
|
||||||
dissolveEffect(1, 1);
|
dissolveEffect(1, 1);
|
||||||
|
@ -2526,7 +2526,7 @@ void Scumm::unkScreenEffect6() {
|
||||||
dissolveEffect(8, 4);
|
dissolveEffect(8, 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::unkScreenEffect5(int a) {
|
void ScummEngine::unkScreenEffect5(int a) {
|
||||||
// unkScreenEffect5(0), which is used by FOA during the opening
|
// unkScreenEffect5(0), which is used by FOA during the opening
|
||||||
// cutscene when Indy opens the small statue, has been replaced by
|
// cutscene when Indy opens the small statue, has been replaced by
|
||||||
// dissolveEffect(1, 1).
|
// dissolveEffect(1, 1).
|
||||||
|
@ -2537,7 +2537,7 @@ void Scumm::unkScreenEffect5(int a) {
|
||||||
warning("stub unkScreenEffect(%d)", a);
|
warning("stub unkScreenEffect(%d)", a);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::setShake(int mode) {
|
void ScummEngine::setShake(int mode) {
|
||||||
if (_shakeEnabled != (mode != 0))
|
if (_shakeEnabled != (mode != 0))
|
||||||
_fullRedraw = true;
|
_fullRedraw = true;
|
||||||
|
|
||||||
|
@ -2550,7 +2550,7 @@ void Scumm::setShake(int mode) {
|
||||||
#pragma mark --- Palette ---
|
#pragma mark --- Palette ---
|
||||||
#pragma mark -
|
#pragma mark -
|
||||||
|
|
||||||
void Scumm::setupAmigaPalette() {
|
void ScummEngine::setupAmigaPalette() {
|
||||||
setPalColor( 0, 0, 0, 0);
|
setPalColor( 0, 0, 0, 0);
|
||||||
setPalColor( 1, 0, 0, 187);
|
setPalColor( 1, 0, 0, 187);
|
||||||
setPalColor( 2, 0, 187, 0);
|
setPalColor( 2, 0, 187, 0);
|
||||||
|
@ -2569,7 +2569,7 @@ void Scumm::setupAmigaPalette() {
|
||||||
setPalColor(15, 255, 255, 255);
|
setPalColor(15, 255, 255, 255);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::setupEGAPalette() {
|
void ScummEngine::setupEGAPalette() {
|
||||||
setPalColor( 0, 0, 0, 0);
|
setPalColor( 0, 0, 0, 0);
|
||||||
setPalColor( 1, 0, 0, 168);
|
setPalColor( 1, 0, 0, 168);
|
||||||
setPalColor( 2, 0, 168, 0);
|
setPalColor( 2, 0, 168, 0);
|
||||||
|
@ -2588,7 +2588,7 @@ void Scumm::setupEGAPalette() {
|
||||||
setPalColor(15, 252, 252, 252);
|
setPalColor(15, 252, 252, 252);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::setupV1ManiacPalette() {
|
void ScummEngine::setupV1ManiacPalette() {
|
||||||
setPalColor( 0, 0, 0, 0);
|
setPalColor( 0, 0, 0, 0);
|
||||||
setPalColor( 1, 252, 252, 252);
|
setPalColor( 1, 252, 252, 252);
|
||||||
setPalColor( 2, 168, 0, 0);
|
setPalColor( 2, 168, 0, 0);
|
||||||
|
@ -2607,7 +2607,7 @@ void Scumm::setupV1ManiacPalette() {
|
||||||
setPalColor(15, 84, 84, 84);
|
setPalColor(15, 84, 84, 84);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::setupV1ZakPalette() {
|
void ScummEngine::setupV1ZakPalette() {
|
||||||
setPalColor( 0, 0, 0, 0);
|
setPalColor( 0, 0, 0, 0);
|
||||||
setPalColor( 1, 252, 252, 252);
|
setPalColor( 1, 252, 252, 252);
|
||||||
setPalColor( 2, 168, 0, 0);
|
setPalColor( 2, 168, 0, 0);
|
||||||
|
@ -2626,7 +2626,7 @@ void Scumm::setupV1ZakPalette() {
|
||||||
setPalColor(15, 168, 168, 168);
|
setPalColor(15, 168, 168, 168);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::setPaletteFromPtr(const byte *ptr) {
|
void ScummEngine::setPaletteFromPtr(const byte *ptr) {
|
||||||
int i;
|
int i;
|
||||||
byte *dest, r, g, b;
|
byte *dest, r, g, b;
|
||||||
int numcolor;
|
int numcolor;
|
||||||
|
@ -2668,20 +2668,20 @@ void Scumm::setPaletteFromPtr(const byte *ptr) {
|
||||||
setDirtyColors(0, numcolor - 1);
|
setDirtyColors(0, numcolor - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::setPaletteFromRes() {
|
void ScummEngine::setPaletteFromRes() {
|
||||||
byte *ptr;
|
byte *ptr;
|
||||||
ptr = getResourceAddress(rtRoom, _roomResource) + _CLUT_offs;
|
ptr = getResourceAddress(rtRoom, _roomResource) + _CLUT_offs;
|
||||||
setPaletteFromPtr(ptr);
|
setPaletteFromPtr(ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::setDirtyColors(int min, int max) {
|
void ScummEngine::setDirtyColors(int min, int max) {
|
||||||
if (_palDirtyMin > min)
|
if (_palDirtyMin > min)
|
||||||
_palDirtyMin = min;
|
_palDirtyMin = min;
|
||||||
if (_palDirtyMax < max)
|
if (_palDirtyMax < max)
|
||||||
_palDirtyMax = max;
|
_palDirtyMax = max;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::initCycl(const byte *ptr) {
|
void ScummEngine::initCycl(const byte *ptr) {
|
||||||
int j;
|
int j;
|
||||||
ColorCycle *cycl;
|
ColorCycle *cycl;
|
||||||
|
|
||||||
|
@ -2724,7 +2724,7 @@ void Scumm::initCycl(const byte *ptr) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::stopCycle(int i) {
|
void ScummEngine::stopCycle(int i) {
|
||||||
ColorCycle *cycl;
|
ColorCycle *cycl;
|
||||||
|
|
||||||
checkRange(16, 0, i, "Stop Cycle %d Out Of Range");
|
checkRange(16, 0, i, "Stop Cycle %d Out Of Range");
|
||||||
|
@ -2782,7 +2782,7 @@ static void cycleIndirectPalette(byte *palette, int cycleStart, int cycleEnd, bo
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Scumm::cyclePalette() {
|
void ScummEngine::cyclePalette() {
|
||||||
ColorCycle *cycl;
|
ColorCycle *cycl;
|
||||||
int valueToAdd;
|
int valueToAdd;
|
||||||
int i, j;
|
int i, j;
|
||||||
|
@ -2834,7 +2834,7 @@ void Scumm::cyclePalette() {
|
||||||
* Perform color cycling on the palManipulate data, too, otherwise
|
* Perform color cycling on the palManipulate data, too, otherwise
|
||||||
* color cycling will be disturbed by the palette fade.
|
* color cycling will be disturbed by the palette fade.
|
||||||
*/
|
*/
|
||||||
void Scumm::moveMemInPalRes(int start, int end, byte direction) {
|
void ScummEngine::moveMemInPalRes(int start, int end, byte direction) {
|
||||||
if (!_palManipCounter)
|
if (!_palManipCounter)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -2842,7 +2842,7 @@ void Scumm::moveMemInPalRes(int start, int end, byte direction) {
|
||||||
::cyclePalette(_palManipIntermediatePal, start, end, 6, !direction);
|
::cyclePalette(_palManipIntermediatePal, start, end, 6, !direction);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::palManipulateInit(int start, int end, int string_id, int time) {
|
void ScummEngine::palManipulateInit(int start, int end, int string_id, int time) {
|
||||||
byte *pal, *target, *between;
|
byte *pal, *target, *between;
|
||||||
byte *string1, *string2, *string3;
|
byte *string1, *string2, *string3;
|
||||||
int i;
|
int i;
|
||||||
|
@ -2888,7 +2888,7 @@ void Scumm::palManipulateInit(int start, int end, int string_id, int time) {
|
||||||
_palManipCounter = time;
|
_palManipCounter = time;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::palManipulate() {
|
void ScummEngine::palManipulate() {
|
||||||
byte *target, *pal, *between;
|
byte *target, *pal, *between;
|
||||||
int i, j;
|
int i, j;
|
||||||
|
|
||||||
|
@ -2914,7 +2914,7 @@ void Scumm::palManipulate() {
|
||||||
_palManipCounter--;
|
_palManipCounter--;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::setupShadowPalette(int slot, int redScale, int greenScale, int blueScale, int startColor, int endColor) {
|
void ScummEngine::setupShadowPalette(int slot, int redScale, int greenScale, int blueScale, int startColor, int endColor) {
|
||||||
byte *table;
|
byte *table;
|
||||||
int i;
|
int i;
|
||||||
byte *curpal;
|
byte *curpal;
|
||||||
|
@ -2940,7 +2940,7 @@ void Scumm::setupShadowPalette(int slot, int redScale, int greenScale, int blueS
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::setupShadowPalette(int redScale, int greenScale, int blueScale, int startColor, int endColor) {
|
void ScummEngine::setupShadowPalette(int redScale, int greenScale, int blueScale, int startColor, int endColor) {
|
||||||
const byte *basepal = getPalettePtr();
|
const byte *basepal = getPalettePtr();
|
||||||
const byte *pal = basepal;
|
const byte *pal = basepal;
|
||||||
const byte *compareptr;
|
const byte *compareptr;
|
||||||
|
@ -3014,7 +3014,7 @@ void Scumm::setupShadowPalette(int redScale, int greenScale, int blueScale, int
|
||||||
}
|
}
|
||||||
|
|
||||||
/** This function create the specialPalette used for semi-transparency in SamnMax */
|
/** This function create the specialPalette used for semi-transparency in SamnMax */
|
||||||
void Scumm::createSpecialPalette(int16 from, int16 to, int16 redScale, int16 greenScale, int16 blueScale,
|
void ScummEngine::createSpecialPalette(int16 from, int16 to, int16 redScale, int16 greenScale, int16 blueScale,
|
||||||
int16 startColor, int16 endColor) {
|
int16 startColor, int16 endColor) {
|
||||||
const byte *palPtr, *curPtr;
|
const byte *palPtr, *curPtr;
|
||||||
const byte *searchPtr;
|
const byte *searchPtr;
|
||||||
|
@ -3065,7 +3065,7 @@ void Scumm::createSpecialPalette(int16 from, int16 to, int16 redScale, int16 gre
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::darkenPalette(int redScale, int greenScale, int blueScale, int startColor, int endColor) {
|
void ScummEngine::darkenPalette(int redScale, int greenScale, int blueScale, int startColor, int endColor) {
|
||||||
if (_roomResource == 0) // FIXME - HACK to get COMI demo working
|
if (_roomResource == 0) // FIXME - HACK to get COMI demo working
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -3121,7 +3121,7 @@ static int value(int n1, int n2, int hue) {
|
||||||
* components of the palette colors. It's used in CMI when Guybrush
|
* components of the palette colors. It's used in CMI when Guybrush
|
||||||
* walks from the beach towards the swamp.
|
* walks from the beach towards the swamp.
|
||||||
*/
|
*/
|
||||||
void Scumm::desaturatePalette(int hueScale, int satScale, int lightScale, int startColor, int endColor) {
|
void ScummEngine::desaturatePalette(int hueScale, int satScale, int lightScale, int startColor, int endColor) {
|
||||||
|
|
||||||
if (startColor <= endColor) {
|
if (startColor <= endColor) {
|
||||||
const byte *cptr;
|
const byte *cptr;
|
||||||
|
@ -3195,7 +3195,7 @@ void Scumm::desaturatePalette(int hueScale, int satScale, int lightScale, int st
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int Scumm::remapPaletteColor(int r, int g, int b, uint threshold) {
|
int ScummEngine::remapPaletteColor(int r, int g, int b, uint threshold) {
|
||||||
int i;
|
int i;
|
||||||
int ar, ag, ab;
|
int ar, ag, ab;
|
||||||
uint sum, bestsum, bestitem = 0;
|
uint sum, bestsum, bestitem = 0;
|
||||||
|
@ -3244,7 +3244,7 @@ int Scumm::remapPaletteColor(int r, int g, int b, uint threshold) {
|
||||||
return bestitem;
|
return bestitem;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::swapPalColors(int a, int b) {
|
void ScummEngine::swapPalColors(int a, int b) {
|
||||||
byte *ap, *bp;
|
byte *ap, *bp;
|
||||||
byte t;
|
byte t;
|
||||||
|
|
||||||
|
@ -3268,7 +3268,7 @@ void Scumm::swapPalColors(int a, int b) {
|
||||||
setDirtyColors(b, b);
|
setDirtyColors(b, b);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::copyPalColor(int dst, int src) {
|
void ScummEngine::copyPalColor(int dst, int src) {
|
||||||
byte *dp, *sp;
|
byte *dp, *sp;
|
||||||
|
|
||||||
if ((uint) dst >= 256 || (uint) src >= 256)
|
if ((uint) dst >= 256 || (uint) src >= 256)
|
||||||
|
@ -3284,14 +3284,14 @@ void Scumm::copyPalColor(int dst, int src) {
|
||||||
setDirtyColors(dst, dst);
|
setDirtyColors(dst, dst);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::setPalColor(int idx, int r, int g, int b) {
|
void ScummEngine::setPalColor(int idx, int r, int g, int b) {
|
||||||
_currentPalette[idx * 3 + 0] = r;
|
_currentPalette[idx * 3 + 0] = r;
|
||||||
_currentPalette[idx * 3 + 1] = g;
|
_currentPalette[idx * 3 + 1] = g;
|
||||||
_currentPalette[idx * 3 + 2] = b;
|
_currentPalette[idx * 3 + 2] = b;
|
||||||
setDirtyColors(idx, idx);
|
setDirtyColors(idx, idx);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::setPalette(int palindex) {
|
void ScummEngine::setPalette(int palindex) {
|
||||||
const byte *pals;
|
const byte *pals;
|
||||||
|
|
||||||
_curPalIndex = palindex;
|
_curPalIndex = palindex;
|
||||||
|
@ -3299,7 +3299,7 @@ void Scumm::setPalette(int palindex) {
|
||||||
setPaletteFromPtr(pals);
|
setPaletteFromPtr(pals);
|
||||||
}
|
}
|
||||||
|
|
||||||
const byte *Scumm::findPalInPals(const byte *pal, int idx) {
|
const byte *ScummEngine::findPalInPals(const byte *pal, int idx) {
|
||||||
const byte *offs;
|
const byte *offs;
|
||||||
uint32 size;
|
uint32 size;
|
||||||
|
|
||||||
|
@ -3319,7 +3319,7 @@ const byte *Scumm::findPalInPals(const byte *pal, int idx) {
|
||||||
return offs + READ_LE_UINT32(offs + idx * sizeof(uint32));
|
return offs + READ_LE_UINT32(offs + idx * sizeof(uint32));
|
||||||
}
|
}
|
||||||
|
|
||||||
const byte *Scumm::getPalettePtr() {
|
const byte *ScummEngine::getPalettePtr() {
|
||||||
const byte *cptr;
|
const byte *cptr;
|
||||||
|
|
||||||
cptr = getResourceAddress(rtRoom, _roomResource);
|
cptr = getResourceAddress(rtRoom, _roomResource);
|
||||||
|
@ -3333,7 +3333,7 @@ const byte *Scumm::getPalettePtr() {
|
||||||
return cptr;
|
return cptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::updatePalette() {
|
void ScummEngine::updatePalette() {
|
||||||
if (_palDirtyMax == -1)
|
if (_palDirtyMax == -1)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -3388,7 +3388,7 @@ void Scumm::updatePalette() {
|
||||||
#pragma mark --- Cursor ---
|
#pragma mark --- Cursor ---
|
||||||
#pragma mark -
|
#pragma mark -
|
||||||
|
|
||||||
void Scumm::setupCursor() {
|
void ScummEngine::setupCursor() {
|
||||||
_cursor.animate = 1;
|
_cursor.animate = 1;
|
||||||
if (_gameId == GID_TENTACLE && res.roomno[rtRoom][60]) {
|
if (_gameId == GID_TENTACLE && res.roomno[rtRoom][60]) {
|
||||||
// HACK: For DOTT we manually set the default cursor. See also bug #786994
|
// HACK: For DOTT we manually set the default cursor. See also bug #786994
|
||||||
|
@ -3397,7 +3397,7 @@ void Scumm::setupCursor() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::grabCursor(int x, int y, int w, int h) {
|
void ScummEngine::grabCursor(int x, int y, int w, int h) {
|
||||||
VirtScreen *vs = findVirtScreen(y);
|
VirtScreen *vs = findVirtScreen(y);
|
||||||
|
|
||||||
if (vs == NULL) {
|
if (vs == NULL) {
|
||||||
|
@ -3409,7 +3409,7 @@ void Scumm::grabCursor(int x, int y, int w, int h) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::grabCursor(byte *ptr, int width, int height) {
|
void ScummEngine::grabCursor(byte *ptr, int width, int height) {
|
||||||
uint size;
|
uint size;
|
||||||
byte *dst;
|
byte *dst;
|
||||||
|
|
||||||
|
@ -3431,7 +3431,7 @@ void Scumm::grabCursor(byte *ptr, int width, int height) {
|
||||||
updateCursor();
|
updateCursor();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::useIm01Cursor(const byte *im, int w, int h) {
|
void ScummEngine::useIm01Cursor(const byte *im, int w, int h) {
|
||||||
VirtScreen *vs = &virtscr[0];
|
VirtScreen *vs = &virtscr[0];
|
||||||
byte *buf, *dst;
|
byte *buf, *dst;
|
||||||
const byte *src;
|
const byte *src;
|
||||||
|
@ -3471,14 +3471,14 @@ void Scumm::useIm01Cursor(const byte *im, int w, int h) {
|
||||||
free(buf);
|
free(buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::setCursor(int cursor) {
|
void ScummEngine::setCursor(int cursor) {
|
||||||
if (cursor >= 0 && cursor <= 3)
|
if (cursor >= 0 && cursor <= 3)
|
||||||
_currentCursor = cursor;
|
_currentCursor = cursor;
|
||||||
else
|
else
|
||||||
warning("setCursor(%d)", cursor);
|
warning("setCursor(%d)", cursor);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::setCursorHotspot(int x, int y) {
|
void ScummEngine::setCursorHotspot(int x, int y) {
|
||||||
_cursor.hotspotX = x;
|
_cursor.hotspotX = x;
|
||||||
_cursor.hotspotY = y;
|
_cursor.hotspotY = y;
|
||||||
// FIXME this hacks around offset cursor in the humongous games
|
// FIXME this hacks around offset cursor in the humongous games
|
||||||
|
@ -3488,12 +3488,12 @@ void Scumm::setCursorHotspot(int x, int y) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::updateCursor() {
|
void ScummEngine::updateCursor() {
|
||||||
_system->set_mouse_cursor(_grabbedCursor, _cursor.width, _cursor.height,
|
_system->set_mouse_cursor(_grabbedCursor, _cursor.width, _cursor.height,
|
||||||
_cursor.hotspotX, _cursor.hotspotY);
|
_cursor.hotspotX, _cursor.hotspotY);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::animateCursor() {
|
void ScummEngine::animateCursor() {
|
||||||
if (_cursor.animate) {
|
if (_cursor.animate) {
|
||||||
if (!(_cursor.animateIndex & 0x1)) {
|
if (!(_cursor.animateIndex & 0x1)) {
|
||||||
decompressDefaultCursor((_cursor.animateIndex >> 1) & 3);
|
decompressDefaultCursor((_cursor.animateIndex >> 1) & 3);
|
||||||
|
@ -3502,7 +3502,7 @@ void Scumm::animateCursor() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::useBompCursor(const byte *im, int width, int height) {
|
void ScummEngine::useBompCursor(const byte *im, int width, int height) {
|
||||||
uint size;
|
uint size;
|
||||||
|
|
||||||
width <<= 3;
|
width <<= 3;
|
||||||
|
@ -3527,7 +3527,7 @@ void Scumm::useBompCursor(const byte *im, int width, int height) {
|
||||||
updateCursor();
|
updateCursor();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::decompressDefaultCursor(int idx) {
|
void ScummEngine::decompressDefaultCursor(int idx) {
|
||||||
int i, j;
|
int i, j;
|
||||||
byte color;
|
byte color;
|
||||||
|
|
||||||
|
@ -3620,7 +3620,7 @@ void Scumm::decompressDefaultCursor(int idx) {
|
||||||
updateCursor();
|
updateCursor();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::makeCursorColorTransparent(int a) {
|
void ScummEngine::makeCursorColorTransparent(int a) {
|
||||||
int i, size;
|
int i, size;
|
||||||
|
|
||||||
size = _cursor.width * _cursor.height;
|
size = _cursor.width * _cursor.height;
|
||||||
|
|
|
@ -25,7 +25,7 @@
|
||||||
|
|
||||||
#include "common/rect.h"
|
#include "common/rect.h"
|
||||||
|
|
||||||
class Scumm;
|
class ScummEngine;
|
||||||
|
|
||||||
enum { /** Camera modes */
|
enum { /** Camera modes */
|
||||||
CM_NORMAL = 1,
|
CM_NORMAL = 1,
|
||||||
|
@ -81,7 +81,7 @@ struct BlastObject { /** BlastObjects to draw */
|
||||||
uint16 mode;
|
uint16 mode;
|
||||||
};
|
};
|
||||||
|
|
||||||
/** Bomp graphics data, used as parameter to Scumm::drawBomp. */
|
/** Bomp graphics data, used as parameter to ScummEngine::drawBomp. */
|
||||||
struct BompDrawData {
|
struct BompDrawData {
|
||||||
byte *out;
|
byte *out;
|
||||||
int outwidth, outheight;
|
int outwidth, outheight;
|
||||||
|
@ -107,9 +107,9 @@ struct StripTable {
|
||||||
};
|
};
|
||||||
|
|
||||||
class Gdi {
|
class Gdi {
|
||||||
friend class Scumm; // Mostly for the code in saveload.cpp ...
|
friend class ScummEngine; // Mostly for the code in saveload.cpp ...
|
||||||
public:
|
public:
|
||||||
Scumm *_vm;
|
ScummEngine *_vm;
|
||||||
|
|
||||||
int _numZBuffer;
|
int _numZBuffer;
|
||||||
int _imgBufOffs[8];
|
int _imgBufOffs[8];
|
||||||
|
|
|
@ -1298,7 +1298,7 @@ void *IMuseInternal::loadReference(void *me_ref, byte type, int ref) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int IMuseInternal::save_or_load(Serializer *ser, Scumm *scumm) {
|
int IMuseInternal::save_or_load(Serializer *ser, ScummEngine *scumm) {
|
||||||
const SaveLoadEntry mainEntries[] = {
|
const SaveLoadEntry mainEntries[] = {
|
||||||
MKLINE(IMuseInternal, _queue_end, sleUint8, VER(8)),
|
MKLINE(IMuseInternal, _queue_end, sleUint8, VER(8)),
|
||||||
MKLINE(IMuseInternal, _queue_pos, sleUint8, VER(8)),
|
MKLINE(IMuseInternal, _queue_pos, sleUint8, VER(8)),
|
||||||
|
@ -1415,7 +1415,7 @@ void IMuseInternal::fix_parts_after_load() {
|
||||||
|
|
||||||
// Only call this routine from the main thread,
|
// Only call this routine from the main thread,
|
||||||
// since it uses getResourceAddress
|
// since it uses getResourceAddress
|
||||||
void IMuseInternal::fix_players_after_load(Scumm *scumm) {
|
void IMuseInternal::fix_players_after_load(ScummEngine *scumm) {
|
||||||
Player *player = _players;
|
Player *player = _players;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
@ -1757,7 +1757,7 @@ inline void IMuse::out() const { _system->unlock_mutex(_mutex); }
|
||||||
|
|
||||||
void IMuse::on_timer(MidiDriver *midi) { in(); _target->on_timer(midi); out(); }
|
void IMuse::on_timer(MidiDriver *midi) { in(); _target->on_timer(midi); out(); }
|
||||||
void IMuse::pause(bool paused) { in(); _target->pause(paused); out(); }
|
void IMuse::pause(bool paused) { in(); _target->pause(paused); out(); }
|
||||||
int IMuse::save_or_load(Serializer *ser, Scumm *scumm) { in(); int ret = _target->save_or_load(ser, scumm); out(); return ret; }
|
int IMuse::save_or_load(Serializer *ser, ScummEngine *scumm) { in(); int ret = _target->save_or_load(ser, scumm); out(); return ret; }
|
||||||
int IMuse::set_music_volume(uint vol) { in(); int ret = _target->set_music_volume(vol); out(); return ret; }
|
int IMuse::set_music_volume(uint vol) { in(); int ret = _target->set_music_volume(vol); out(); return ret; }
|
||||||
int IMuse::get_music_volume() { in(); int ret = _target->get_music_volume(); out(); return ret; }
|
int IMuse::get_music_volume() { in(); int ret = _target->get_music_volume(); out(); return ret; }
|
||||||
void IMuse::setMasterVolume(int vol) { in(); _target->setMasterVolume(vol); out(); }
|
void IMuse::setMasterVolume(int vol) { in(); _target->setMasterVolume(vol); out(); }
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
class IMuseInternal;
|
class IMuseInternal;
|
||||||
class MidiDriver;
|
class MidiDriver;
|
||||||
class OSystem;
|
class OSystem;
|
||||||
class Scumm;
|
class ScummEngine;
|
||||||
class Serializer;
|
class Serializer;
|
||||||
class SoundMixer;
|
class SoundMixer;
|
||||||
|
|
||||||
|
@ -58,7 +58,7 @@ public:
|
||||||
|
|
||||||
void on_timer(MidiDriver *midi);
|
void on_timer(MidiDriver *midi);
|
||||||
void pause(bool paused);
|
void pause(bool paused);
|
||||||
int save_or_load(Serializer *ser, Scumm *scumm);
|
int save_or_load(Serializer *ser, ScummEngine *scumm);
|
||||||
int set_music_volume(uint vol);
|
int set_music_volume(uint vol);
|
||||||
int get_music_volume();
|
int get_music_volume();
|
||||||
void setMasterVolume(int vol);
|
void setMasterVolume(int vol);
|
||||||
|
|
|
@ -694,7 +694,7 @@ void IMuseDigital::timer_handler(void *refCon) {
|
||||||
imuseDigital->musicTimer();
|
imuseDigital->musicTimer();
|
||||||
}
|
}
|
||||||
|
|
||||||
IMuseDigital::IMuseDigital(Scumm *scumm)
|
IMuseDigital::IMuseDigital(ScummEngine *scumm)
|
||||||
: _scumm(scumm) {
|
: _scumm(scumm) {
|
||||||
memset(_channel, 0, sizeof(Channel) * MAX_DIGITAL_CHANNELS);
|
memset(_channel, 0, sizeof(Channel) * MAX_DIGITAL_CHANNELS);
|
||||||
for (int l = 0; l < MAX_DIGITAL_CHANNELS; l++) {
|
for (int l = 0; l < MAX_DIGITAL_CHANNELS; l++) {
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
#define MAX_IMUSE_JUMPS 1
|
#define MAX_IMUSE_JUMPS 1
|
||||||
#define MAX_IMUSE_REGIONS 3
|
#define MAX_IMUSE_REGIONS 3
|
||||||
|
|
||||||
class Scumm;
|
class ScummEngine;
|
||||||
|
|
||||||
class IMuseDigital : public MusicEngine {
|
class IMuseDigital : public MusicEngine {
|
||||||
private:
|
private:
|
||||||
|
@ -60,14 +60,14 @@ private:
|
||||||
|
|
||||||
Channel _channel[MAX_DIGITAL_CHANNELS];
|
Channel _channel[MAX_DIGITAL_CHANNELS];
|
||||||
|
|
||||||
Scumm *_scumm;
|
ScummEngine *_scumm;
|
||||||
bool _pause;
|
bool _pause;
|
||||||
|
|
||||||
static void timer_handler(void *engine);
|
static void timer_handler(void *engine);
|
||||||
void musicTimer();
|
void musicTimer();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
IMuseDigital(Scumm *scumm);
|
IMuseDigital(ScummEngine *scumm);
|
||||||
~IMuseDigital();
|
~IMuseDigital();
|
||||||
|
|
||||||
void setMasterVolume(int vol) {}
|
void setMasterVolume(int vol) {}
|
||||||
|
|
|
@ -43,7 +43,7 @@ class IMuseInternal;
|
||||||
|
|
||||||
// Some entities also referenced
|
// Some entities also referenced
|
||||||
class MidiParser;
|
class MidiParser;
|
||||||
class Scumm;
|
class ScummEngine;
|
||||||
class OSystem;
|
class OSystem;
|
||||||
class SoundMixer;
|
class SoundMixer;
|
||||||
|
|
||||||
|
@ -429,7 +429,7 @@ protected:
|
||||||
int set_volchan(int sound, int volchan);
|
int set_volchan(int sound, int volchan);
|
||||||
|
|
||||||
void fix_parts_after_load();
|
void fix_parts_after_load();
|
||||||
void fix_players_after_load(Scumm *scumm);
|
void fix_players_after_load(ScummEngine *scumm);
|
||||||
|
|
||||||
static int saveReference(void *me_ref, byte type, void *ref);
|
static int saveReference(void *me_ref, byte type, void *ref);
|
||||||
static void *loadReference(void *me_ref, byte type, int ref);
|
static void *loadReference(void *me_ref, byte type, int ref);
|
||||||
|
@ -451,7 +451,7 @@ public:
|
||||||
void pause(bool paused);
|
void pause(bool paused);
|
||||||
int terminate1();
|
int terminate1();
|
||||||
int terminate2();
|
int terminate2();
|
||||||
int save_or_load(Serializer *ser, Scumm *scumm);
|
int save_or_load(Serializer *ser, ScummEngine *scumm);
|
||||||
int set_music_volume(uint vol);
|
int set_music_volume(uint vol);
|
||||||
int get_music_volume();
|
int get_music_volume();
|
||||||
int setMasterVolume(uint vol);
|
int setMasterVolume(uint vol);
|
||||||
|
|
|
@ -26,9 +26,9 @@
|
||||||
#include "scumm.h"
|
#include "scumm.h"
|
||||||
class NutRenderer; // V8 Font Renderer
|
class NutRenderer; // V8 Font Renderer
|
||||||
|
|
||||||
class Scumm_v5 : public Scumm {
|
class ScummEngine_v5 : public ScummEngine {
|
||||||
protected:
|
protected:
|
||||||
typedef void (Scumm_v5::*OpcodeProcV5)();
|
typedef void (ScummEngine_v5::*OpcodeProcV5)();
|
||||||
struct OpcodeEntryV5 {
|
struct OpcodeEntryV5 {
|
||||||
OpcodeProcV5 proc;
|
OpcodeProcV5 proc;
|
||||||
const char *desc;
|
const char *desc;
|
||||||
|
@ -37,7 +37,7 @@ protected:
|
||||||
const OpcodeEntryV5 *_opcodesV5;
|
const OpcodeEntryV5 *_opcodesV5;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Scumm_v5(GameDetector *detector, OSystem *syst) : Scumm(detector, syst) {}
|
ScummEngine_v5(GameDetector *detector, OSystem *syst) : ScummEngine(detector, syst) {}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void setupOpcodes();
|
virtual void setupOpcodes();
|
||||||
|
@ -165,9 +165,9 @@ protected:
|
||||||
// FIXME - maybe we should move the opcodes from v5 to v3, and change the inheritance
|
// FIXME - maybe we should move the opcodes from v5 to v3, and change the inheritance
|
||||||
// accordingly - that would be more logical I guess. However, if you do so, take care
|
// accordingly - that would be more logical I guess. However, if you do so, take care
|
||||||
// of preserving the right readIndexFile / loadCharset !!!
|
// of preserving the right readIndexFile / loadCharset !!!
|
||||||
class Scumm_v3 : public Scumm_v5 {
|
class ScummEngine_v3 : public ScummEngine_v5 {
|
||||||
public:
|
public:
|
||||||
Scumm_v3(GameDetector *detector, OSystem *syst) : Scumm_v5(detector, syst) {}
|
ScummEngine_v3(GameDetector *detector, OSystem *syst) : ScummEngine_v5(detector, syst) {}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void readIndexFile();
|
void readIndexFile();
|
||||||
|
@ -177,7 +177,7 @@ protected:
|
||||||
void readGlobalObjects();
|
void readGlobalObjects();
|
||||||
};
|
};
|
||||||
|
|
||||||
class Scumm_v2 : public Scumm_v3 {
|
class ScummEngine_v2 : public ScummEngine_v3 {
|
||||||
protected:
|
protected:
|
||||||
void readIndexFile();
|
void readIndexFile();
|
||||||
void readClassicIndexFile(); // V1
|
void readClassicIndexFile(); // V1
|
||||||
|
@ -185,7 +185,7 @@ protected:
|
||||||
void loadCharset(int no);
|
void loadCharset(int no);
|
||||||
void readMAXS();
|
void readMAXS();
|
||||||
|
|
||||||
typedef void (Scumm_v2::*OpcodeProcV2)();
|
typedef void (ScummEngine_v2::*OpcodeProcV2)();
|
||||||
struct OpcodeEntryV2 {
|
struct OpcodeEntryV2 {
|
||||||
OpcodeProcV2 proc;
|
OpcodeProcV2 proc;
|
||||||
const char *desc;
|
const char *desc;
|
||||||
|
@ -194,7 +194,7 @@ protected:
|
||||||
const OpcodeEntryV2 *_opcodesV2;
|
const OpcodeEntryV2 *_opcodesV2;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Scumm_v2(GameDetector *detector, OSystem *syst) : Scumm_v3(detector, syst) {}
|
ScummEngine_v2(GameDetector *detector, OSystem *syst) : ScummEngine_v3(detector, syst) {}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void setupOpcodes();
|
virtual void setupOpcodes();
|
||||||
|
@ -300,17 +300,17 @@ protected:
|
||||||
byte VAR_BACKUP_VERB;
|
byte VAR_BACKUP_VERB;
|
||||||
};
|
};
|
||||||
|
|
||||||
class Scumm_v4 : public Scumm_v3 {
|
class ScummEngine_v4 : public ScummEngine_v3 {
|
||||||
public:
|
public:
|
||||||
Scumm_v4(GameDetector *detector, OSystem *syst) : Scumm_v3(detector, syst) {}
|
ScummEngine_v4(GameDetector *detector, OSystem *syst) : ScummEngine_v3(detector, syst) {}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void loadCharset(int no);
|
void loadCharset(int no);
|
||||||
};
|
};
|
||||||
|
|
||||||
class Scumm_v6 : public Scumm {
|
class ScummEngine_v6 : public ScummEngine {
|
||||||
protected:
|
protected:
|
||||||
typedef void (Scumm_v6::*OpcodeProcV6)();
|
typedef void (ScummEngine_v6::*OpcodeProcV6)();
|
||||||
struct OpcodeEntryV6 {
|
struct OpcodeEntryV6 {
|
||||||
OpcodeProcV6 proc;
|
OpcodeProcV6 proc;
|
||||||
const char *desc;
|
const char *desc;
|
||||||
|
@ -321,7 +321,7 @@ protected:
|
||||||
File _hFileTable[17];
|
File _hFileTable[17];
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Scumm_v6(GameDetector *detector, OSystem *syst) : Scumm(detector, syst)
|
ScummEngine_v6(GameDetector *detector, OSystem *syst) : ScummEngine(detector, syst)
|
||||||
{
|
{
|
||||||
VAR_VIDEONAME = 0xFF;
|
VAR_VIDEONAME = 0xFF;
|
||||||
|
|
||||||
|
@ -530,9 +530,9 @@ protected:
|
||||||
byte VAR_TIMEDATE_SECOND;
|
byte VAR_TIMEDATE_SECOND;
|
||||||
};
|
};
|
||||||
|
|
||||||
class Scumm_v7 : public Scumm_v6 {
|
class ScummEngine_v7 : public ScummEngine_v6 {
|
||||||
public:
|
public:
|
||||||
Scumm_v7(GameDetector *detector, OSystem *syst) : Scumm_v6(detector, syst) {}
|
ScummEngine_v7(GameDetector *detector, OSystem *syst) : ScummEngine_v6(detector, syst) {}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void setupScummVars();
|
virtual void setupScummVars();
|
||||||
|
@ -543,9 +543,9 @@ protected:
|
||||||
virtual void panCameraTo(int x, int y);
|
virtual void panCameraTo(int x, int y);
|
||||||
};
|
};
|
||||||
|
|
||||||
class Scumm_v8 : public Scumm_v7 {
|
class ScummEngine_v8 : public ScummEngine_v7 {
|
||||||
protected:
|
protected:
|
||||||
typedef void (Scumm_v8::*OpcodeProcV8)();
|
typedef void (ScummEngine_v8::*OpcodeProcV8)();
|
||||||
struct OpcodeEntryV8 {
|
struct OpcodeEntryV8 {
|
||||||
OpcodeProcV8 proc;
|
OpcodeProcV8 proc;
|
||||||
const char *desc;
|
const char *desc;
|
||||||
|
@ -554,7 +554,7 @@ protected:
|
||||||
const OpcodeEntryV8 *_opcodesV8;
|
const OpcodeEntryV8 *_opcodesV8;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Scumm_v8(GameDetector *detector, OSystem *syst) : Scumm_v7(detector, syst) {}
|
ScummEngine_v8(GameDetector *detector, OSystem *syst) : ScummEngine_v7(detector, syst) {}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void setupOpcodes();
|
virtual void setupOpcodes();
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
#include "bomp.h"
|
#include "bomp.h"
|
||||||
|
|
||||||
|
|
||||||
NutRenderer::NutRenderer(Scumm *vm) :
|
NutRenderer::NutRenderer(ScummEngine *vm) :
|
||||||
_vm(vm),
|
_vm(vm),
|
||||||
_initialized(false),
|
_initialized(false),
|
||||||
_loaded(false),
|
_loaded(false),
|
||||||
|
|
|
@ -23,11 +23,11 @@
|
||||||
|
|
||||||
#include "common/file.h"
|
#include "common/file.h"
|
||||||
|
|
||||||
class Scumm;
|
class ScummEngine;
|
||||||
|
|
||||||
class NutRenderer {
|
class NutRenderer {
|
||||||
protected:
|
protected:
|
||||||
Scumm *_vm;
|
ScummEngine *_vm;
|
||||||
bool _initialized;
|
bool _initialized;
|
||||||
bool _loaded;
|
bool _loaded;
|
||||||
int _nbChars;
|
int _nbChars;
|
||||||
|
@ -45,7 +45,7 @@ protected:
|
||||||
void draw2byte(byte *dst, byte *mask, int c, int x, int y, byte color);
|
void draw2byte(byte *dst, byte *mask, int c, int x, int y, byte color);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
NutRenderer(Scumm *vm);
|
NutRenderer(ScummEngine *vm);
|
||||||
virtual ~NutRenderer();
|
virtual ~NutRenderer();
|
||||||
int getNbChars() { return _nbChars; }
|
int getNbChars() { return _nbChars; }
|
||||||
|
|
||||||
|
|
110
scumm/object.cpp
110
scumm/object.cpp
|
@ -50,7 +50,7 @@ struct BompHeader { /* Bomp header */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
bool Scumm::getClass(int obj, int cls) const {
|
bool ScummEngine::getClass(int obj, int cls) const {
|
||||||
checkRange(_numGlobalObjects - 1, 0, obj, "Object %d out of range in getClass");
|
checkRange(_numGlobalObjects - 1, 0, obj, "Object %d out of range in getClass");
|
||||||
cls &= 0x7F;
|
cls &= 0x7F;
|
||||||
checkRange(32, 1, cls, "Class %d out of range in getClass");
|
checkRange(32, 1, cls, "Class %d out of range in getClass");
|
||||||
|
@ -77,7 +77,7 @@ bool Scumm::getClass(int obj, int cls) const {
|
||||||
return (_classData[obj] & (1 << (cls - 1))) != 0;
|
return (_classData[obj] & (1 << (cls - 1))) != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::putClass(int obj, int cls, bool set) {
|
void ScummEngine::putClass(int obj, int cls, bool set) {
|
||||||
checkRange(_numGlobalObjects - 1, 0, obj, "Object %d out of range in putClass");
|
checkRange(_numGlobalObjects - 1, 0, obj, "Object %d out of range in putClass");
|
||||||
cls &= 0x7F;
|
cls &= 0x7F;
|
||||||
checkRange(32, 1, cls, "Class %d out of range in putClass");
|
checkRange(32, 1, cls, "Class %d out of range in putClass");
|
||||||
|
@ -111,12 +111,12 @@ void Scumm::putClass(int obj, int cls, bool set) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int Scumm::getOwner(int obj) const {
|
int ScummEngine::getOwner(int obj) const {
|
||||||
checkRange(_numGlobalObjects - 1, 0, obj, "Object %d out of range in getOwner");
|
checkRange(_numGlobalObjects - 1, 0, obj, "Object %d out of range in getOwner");
|
||||||
return _objectOwnerTable[obj];
|
return _objectOwnerTable[obj];
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::putOwner(int obj, int owner) {
|
void ScummEngine::putOwner(int obj, int owner) {
|
||||||
checkRange(_numGlobalObjects - 1, 0, obj, "Object %d out of range in putOwner");
|
checkRange(_numGlobalObjects - 1, 0, obj, "Object %d out of range in putOwner");
|
||||||
checkRange(0xFF, 0, owner, "Owner %d out of range in putOwner");
|
checkRange(0xFF, 0, owner, "Owner %d out of range in putOwner");
|
||||||
_objectOwnerTable[obj] = owner;
|
_objectOwnerTable[obj] = owner;
|
||||||
|
@ -126,7 +126,7 @@ void Scumm::putOwner(int obj, int owner) {
|
||||||
#define BYPASS_COPY_PROT
|
#define BYPASS_COPY_PROT
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int Scumm::getState(int obj) {
|
int ScummEngine::getState(int obj) {
|
||||||
checkRange(_numGlobalObjects - 1, 0, obj, "Object %d out of range in getState");
|
checkRange(_numGlobalObjects - 1, 0, obj, "Object %d out of range in getState");
|
||||||
|
|
||||||
#if defined(BYPASS_COPY_PROT)
|
#if defined(BYPASS_COPY_PROT)
|
||||||
|
@ -146,18 +146,18 @@ int Scumm::getState(int obj) {
|
||||||
return _objectStateTable[obj];
|
return _objectStateTable[obj];
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::putState(int obj, int state) {
|
void ScummEngine::putState(int obj, int state) {
|
||||||
checkRange(_numGlobalObjects - 1, 0, obj, "Object %d out of range in putState");
|
checkRange(_numGlobalObjects - 1, 0, obj, "Object %d out of range in putState");
|
||||||
checkRange(0xFF, 0, state, "State %d out of range in putState");
|
checkRange(0xFF, 0, state, "State %d out of range in putState");
|
||||||
_objectStateTable[obj] = state;
|
_objectStateTable[obj] = state;
|
||||||
}
|
}
|
||||||
|
|
||||||
int Scumm::getObjectRoom(int obj) const {
|
int ScummEngine::getObjectRoom(int obj) const {
|
||||||
checkRange(_numGlobalObjects - 1, 0, obj, "Object %d out of range in getObjectRoom");
|
checkRange(_numGlobalObjects - 1, 0, obj, "Object %d out of range in getObjectRoom");
|
||||||
return _objectRoomTable[obj];
|
return _objectRoomTable[obj];
|
||||||
}
|
}
|
||||||
|
|
||||||
int Scumm::getObjectIndex(int object) const {
|
int ScummEngine::getObjectIndex(int object) const {
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (object < 1)
|
if (object < 1)
|
||||||
|
@ -170,7 +170,7 @@ int Scumm::getObjectIndex(int object) const {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int Scumm::whereIsObject(int object) const {
|
int ScummEngine::whereIsObject(int object) const {
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (object >= _numGlobalObjects)
|
if (object >= _numGlobalObjects)
|
||||||
|
@ -196,7 +196,7 @@ int Scumm::whereIsObject(int object) const {
|
||||||
return WIO_NOT_FOUND;
|
return WIO_NOT_FOUND;
|
||||||
}
|
}
|
||||||
|
|
||||||
int Scumm::getObjectOrActorXY(int object, int &x, int &y) {
|
int ScummEngine::getObjectOrActorXY(int object, int &x, int &y) {
|
||||||
if (object < _numActors) {
|
if (object < _numActors) {
|
||||||
Actor *act = derefActorSafe(object, "getObjectOrActorXY");
|
Actor *act = derefActorSafe(object, "getObjectOrActorXY");
|
||||||
if (act)
|
if (act)
|
||||||
|
@ -222,7 +222,7 @@ int Scumm::getObjectOrActorXY(int object, int &x, int &y) {
|
||||||
* Return the position of an object.
|
* Return the position of an object.
|
||||||
* Returns X, Y and direction in angles
|
* Returns X, Y and direction in angles
|
||||||
*/
|
*/
|
||||||
void Scumm::getObjectXYPos(int object, int &x, int &y, int &dir) {
|
void ScummEngine::getObjectXYPos(int object, int &x, int &y, int &dir) {
|
||||||
int idx = getObjectIndex(object);
|
int idx = getObjectIndex(object);
|
||||||
assert(idx >= 0);
|
assert(idx >= 0);
|
||||||
ObjectData &od = _objs[idx];
|
ObjectData &od = _objs[idx];
|
||||||
|
@ -271,7 +271,7 @@ static int getDist(int x, int y, int x2, int y2) {
|
||||||
return MAX(a, b);
|
return MAX(a, b);
|
||||||
}
|
}
|
||||||
|
|
||||||
int Scumm::getObjActToObjActDist(int a, int b) {
|
int ScummEngine::getObjActToObjActDist(int a, int b) {
|
||||||
int x, y, x2, y2, dist;
|
int x, y, x2, y2, dist;
|
||||||
Actor *acta = NULL;
|
Actor *acta = NULL;
|
||||||
Actor *actb = NULL;
|
Actor *actb = NULL;
|
||||||
|
@ -312,7 +312,7 @@ int Scumm::getObjActToObjActDist(int a, int b) {
|
||||||
return dist;
|
return dist;
|
||||||
}
|
}
|
||||||
|
|
||||||
int Scumm::findObject(int x, int y) {
|
int ScummEngine::findObject(int x, int y) {
|
||||||
int i, b;
|
int i, b;
|
||||||
byte a;
|
byte a;
|
||||||
const int mask = (_version <= 2) ? 0x8 : 0xF;
|
const int mask = (_version <= 2) ? 0x8 : 0xF;
|
||||||
|
@ -337,7 +337,7 @@ int Scumm::findObject(int x, int y) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::drawRoomObject(int i, int arg) {
|
void ScummEngine::drawRoomObject(int i, int arg) {
|
||||||
ObjectData *od;
|
ObjectData *od;
|
||||||
byte a;
|
byte a;
|
||||||
const int mask = (_version <= 2) ? 0x8 : 0xF;
|
const int mask = (_version <= 2) ? 0x8 : 0xF;
|
||||||
|
@ -356,7 +356,7 @@ void Scumm::drawRoomObject(int i, int arg) {
|
||||||
} while ((od->state & mask) == a);
|
} while ((od->state & mask) == a);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::drawRoomObjects(int arg) {
|
void ScummEngine::drawRoomObjects(int arg) {
|
||||||
int i;
|
int i;
|
||||||
const int mask = (_version <= 2) ? 0x8 : 0xF;
|
const int mask = (_version <= 2) ? 0x8 : 0xF;
|
||||||
|
|
||||||
|
@ -391,7 +391,7 @@ static const uint32 IMxx_tags[] = {
|
||||||
MKID('IM0F')
|
MKID('IM0F')
|
||||||
};
|
};
|
||||||
|
|
||||||
void Scumm::drawObject(int obj, int arg) {
|
void ScummEngine::drawObject(int obj, int arg) {
|
||||||
ObjectData &od = _objs[obj];
|
ObjectData &od = _objs[obj];
|
||||||
int xpos, ypos, height, width;
|
int xpos, ypos, height, width;
|
||||||
const byte *ptr;
|
const byte *ptr;
|
||||||
|
@ -455,7 +455,7 @@ void Scumm::drawObject(int obj, int arg) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::clearRoomObjects() {
|
void ScummEngine::clearRoomObjects() {
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (_features & GF_SMALL_HEADER) {
|
if (_features & GF_SMALL_HEADER) {
|
||||||
|
@ -483,7 +483,7 @@ void Scumm::clearRoomObjects() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::loadRoomObjects() {
|
void ScummEngine::loadRoomObjects() {
|
||||||
int i, j;
|
int i, j;
|
||||||
ObjectData *od;
|
ObjectData *od;
|
||||||
const byte *ptr;
|
const byte *ptr;
|
||||||
|
@ -575,7 +575,7 @@ void Scumm::loadRoomObjects() {
|
||||||
CHECK_HEAP
|
CHECK_HEAP
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::loadRoomObjectsOldBundle() {
|
void ScummEngine::loadRoomObjectsOldBundle() {
|
||||||
int i;
|
int i;
|
||||||
ObjectData *od;
|
ObjectData *od;
|
||||||
const byte *room, *ptr;
|
const byte *room, *ptr;
|
||||||
|
@ -615,7 +615,7 @@ void Scumm::loadRoomObjectsOldBundle() {
|
||||||
CHECK_HEAP
|
CHECK_HEAP
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::loadRoomObjectsSmall() {
|
void ScummEngine::loadRoomObjectsSmall() {
|
||||||
int i, j;
|
int i, j;
|
||||||
ObjectData *od;
|
ObjectData *od;
|
||||||
const byte *ptr;
|
const byte *ptr;
|
||||||
|
@ -675,7 +675,7 @@ void Scumm::loadRoomObjectsSmall() {
|
||||||
CHECK_HEAP
|
CHECK_HEAP
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::setupRoomObject(ObjectData *od, const byte *room, const byte *searchptr) {
|
void ScummEngine::setupRoomObject(ObjectData *od, const byte *room, const byte *searchptr) {
|
||||||
const CodeHeader *cdhd = NULL;
|
const CodeHeader *cdhd = NULL;
|
||||||
const ImageHeader *imhd = NULL;
|
const ImageHeader *imhd = NULL;
|
||||||
|
|
||||||
|
@ -789,7 +789,7 @@ void Scumm::setupRoomObject(ObjectData *od, const byte *room, const byte *search
|
||||||
od->fl_object_index = 0;
|
od->fl_object_index = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::fixObjectFlags() {
|
void ScummEngine::fixObjectFlags() {
|
||||||
int i;
|
int i;
|
||||||
ObjectData *od = &_objs[1];
|
ObjectData *od = &_objs[1];
|
||||||
for (i = 1; i < _numLocalObjects; i++, od++) {
|
for (i = 1; i < _numLocalObjects; i++, od++) {
|
||||||
|
@ -798,7 +798,7 @@ void Scumm::fixObjectFlags() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::processDrawQue() {
|
void ScummEngine::processDrawQue() {
|
||||||
int i, j;
|
int i, j;
|
||||||
for (i = 0; i < _drawObjectQueNr; i++) {
|
for (i = 0; i < _drawObjectQueNr; i++) {
|
||||||
j = _drawObjectQue[i];
|
j = _drawObjectQue[i];
|
||||||
|
@ -808,7 +808,7 @@ void Scumm::processDrawQue() {
|
||||||
_drawObjectQueNr = 0;
|
_drawObjectQueNr = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::clearOwnerOf(int obj) {
|
void ScummEngine::clearOwnerOf(int obj) {
|
||||||
int i, j;
|
int i, j;
|
||||||
uint16 *a;
|
uint16 *a;
|
||||||
|
|
||||||
|
@ -849,7 +849,7 @@ void Scumm::clearOwnerOf(int obj) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::removeObjectFromRoom(int obj) {
|
void ScummEngine::removeObjectFromRoom(int obj) {
|
||||||
int i, j, strip;
|
int i, j, strip;
|
||||||
|
|
||||||
for (i = 1; i < _numLocalObjects; i++) {
|
for (i = 1; i < _numLocalObjects; i++) {
|
||||||
|
@ -873,17 +873,17 @@ void Scumm::removeObjectFromRoom(int obj) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::addObjectToDrawQue(int object) {
|
void ScummEngine::addObjectToDrawQue(int object) {
|
||||||
_drawObjectQue[_drawObjectQueNr++] = object;
|
_drawObjectQue[_drawObjectQueNr++] = object;
|
||||||
if ((unsigned int)_drawObjectQueNr > ARRAYSIZE(_drawObjectQue))
|
if ((unsigned int)_drawObjectQueNr > ARRAYSIZE(_drawObjectQue))
|
||||||
error("Draw Object Que overflow");
|
error("Draw Object Que overflow");
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::clearDrawObjectQueue() {
|
void ScummEngine::clearDrawObjectQueue() {
|
||||||
_drawObjectQueNr = 0;
|
_drawObjectQueNr = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
const byte *Scumm::getObjOrActorName(int obj) {
|
const byte *ScummEngine::getObjOrActorName(int obj) {
|
||||||
byte *objptr;
|
byte *objptr;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
@ -920,7 +920,7 @@ const byte *Scumm::getObjOrActorName(int obj) {
|
||||||
return findResourceData(MKID('OBNA'), objptr);
|
return findResourceData(MKID('OBNA'), objptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32 Scumm::getOBCDOffs(int object) const {
|
uint32 ScummEngine::getOBCDOffs(int object) const {
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (_objectOwnerTable[object] != OF_OWNER_ROOM)
|
if (_objectOwnerTable[object] != OF_OWNER_ROOM)
|
||||||
|
@ -935,7 +935,7 @@ uint32 Scumm::getOBCDOffs(int object) const {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
byte *Scumm::getOBCDFromObject(int obj) {
|
byte *ScummEngine::getOBCDFromObject(int obj) {
|
||||||
int i;
|
int i;
|
||||||
byte *ptr;
|
byte *ptr;
|
||||||
|
|
||||||
|
@ -962,7 +962,7 @@ byte *Scumm::getOBCDFromObject(int obj) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
const byte *Scumm::getOBIMFromObject(const ObjectData &od) {
|
const byte *ScummEngine::getOBIMFromObject(const ObjectData &od) {
|
||||||
const byte *ptr;
|
const byte *ptr;
|
||||||
|
|
||||||
if (od.fl_object_index) {
|
if (od.fl_object_index) {
|
||||||
|
@ -976,7 +976,7 @@ const byte *Scumm::getOBIMFromObject(const ObjectData &od) {
|
||||||
return ptr;
|
return ptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
const byte *Scumm::getObjectImage(const byte *ptr, int state) {
|
const byte *ScummEngine::getObjectImage(const byte *ptr, int state) {
|
||||||
assert(ptr);
|
assert(ptr);
|
||||||
if (_features & GF_OLD_BUNDLE)
|
if (_features & GF_OLD_BUNDLE)
|
||||||
ptr += 0;
|
ptr += 0;
|
||||||
|
@ -1007,7 +1007,7 @@ const byte *Scumm::getObjectImage(const byte *ptr, int state) {
|
||||||
return ptr;
|
return ptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::addObjectToInventory(uint obj, uint room) {
|
void ScummEngine::addObjectToInventory(uint obj, uint room) {
|
||||||
int idx, slot;
|
int idx, slot;
|
||||||
uint32 size;
|
uint32 size;
|
||||||
const byte *ptr;
|
const byte *ptr;
|
||||||
|
@ -1042,7 +1042,7 @@ void Scumm::addObjectToInventory(uint obj, uint room) {
|
||||||
CHECK_HEAP
|
CHECK_HEAP
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::findObjectInRoom(FindObjectInRoom *fo, byte findWhat, uint id, uint room) {
|
void ScummEngine::findObjectInRoom(FindObjectInRoom *fo, byte findWhat, uint id, uint room) {
|
||||||
|
|
||||||
const CodeHeader *cdhd;
|
const CodeHeader *cdhd;
|
||||||
int i, numobj;
|
int i, numobj;
|
||||||
|
@ -1177,7 +1177,7 @@ void Scumm::findObjectInRoom(FindObjectInRoom *fo, byte findWhat, uint id, uint
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int Scumm::getInventorySlot() {
|
int ScummEngine::getInventorySlot() {
|
||||||
int i;
|
int i;
|
||||||
for (i = 1; i <= _maxInventoryItems; i++) {
|
for (i = 1; i <= _maxInventoryItems; i++) {
|
||||||
if (_inventory[i] == 0)
|
if (_inventory[i] == 0)
|
||||||
|
@ -1187,7 +1187,7 @@ int Scumm::getInventorySlot() {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::SamInventoryHack(int obj) {
|
void ScummEngine::SamInventoryHack(int obj) {
|
||||||
// FIXME: Sam and Max hack
|
// FIXME: Sam and Max hack
|
||||||
int base = 6;
|
int base = 6;
|
||||||
|
|
||||||
|
@ -1204,7 +1204,7 @@ void Scumm::SamInventoryHack(int obj) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::setOwnerOf(int obj, int owner) {
|
void ScummEngine::setOwnerOf(int obj, int owner) {
|
||||||
ScriptSlot *ss;
|
ScriptSlot *ss;
|
||||||
if (owner == 0) {
|
if (owner == 0) {
|
||||||
clearOwnerOf(obj);
|
clearOwnerOf(obj);
|
||||||
|
@ -1223,7 +1223,7 @@ void Scumm::setOwnerOf(int obj, int owner) {
|
||||||
runInventoryScript(0);
|
runInventoryScript(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
int Scumm::getObjX(int obj) {
|
int ScummEngine::getObjX(int obj) {
|
||||||
if (obj < _numActors) {
|
if (obj < _numActors) {
|
||||||
if (obj < 1)
|
if (obj < 1)
|
||||||
return 0; /* fix for indy4's map */
|
return 0; /* fix for indy4's map */
|
||||||
|
@ -1237,7 +1237,7 @@ int Scumm::getObjX(int obj) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int Scumm::getObjY(int obj) {
|
int ScummEngine::getObjY(int obj) {
|
||||||
if (obj < _numActors) {
|
if (obj < _numActors) {
|
||||||
if (obj < 1)
|
if (obj < 1)
|
||||||
return 0; /* fix for indy4's map */
|
return 0; /* fix for indy4's map */
|
||||||
|
@ -1251,11 +1251,11 @@ int Scumm::getObjY(int obj) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int Scumm::getObjOldDir(int obj) {
|
int ScummEngine::getObjOldDir(int obj) {
|
||||||
return newDirToOldDir(getObjNewDir(obj));
|
return newDirToOldDir(getObjNewDir(obj));
|
||||||
}
|
}
|
||||||
|
|
||||||
int Scumm::getObjNewDir(int obj) {
|
int ScummEngine::getObjNewDir(int obj) {
|
||||||
int dir;
|
int dir;
|
||||||
if (obj < _numActors) {
|
if (obj < _numActors) {
|
||||||
dir = derefActor(obj, "getObjNewDir")->getFacing();
|
dir = derefActor(obj, "getObjNewDir")->getFacing();
|
||||||
|
@ -1266,7 +1266,7 @@ int Scumm::getObjNewDir(int obj) {
|
||||||
return dir;
|
return dir;
|
||||||
}
|
}
|
||||||
|
|
||||||
int Scumm::findInventory(int owner, int idx) {
|
int ScummEngine::findInventory(int owner, int idx) {
|
||||||
int count = 1, i, obj;
|
int count = 1, i, obj;
|
||||||
for (i = 0; i != _maxInventoryItems; i++) {
|
for (i = 0; i != _maxInventoryItems; i++) {
|
||||||
obj = _inventory[i];
|
obj = _inventory[i];
|
||||||
|
@ -1276,7 +1276,7 @@ int Scumm::findInventory(int owner, int idx) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int Scumm::getInventoryCount(int owner) {
|
int ScummEngine::getInventoryCount(int owner) {
|
||||||
int i, obj;
|
int i, obj;
|
||||||
int count = 0;
|
int count = 0;
|
||||||
for (i = 0; i != _maxInventoryItems; i++) {
|
for (i = 0; i != _maxInventoryItems; i++) {
|
||||||
|
@ -1287,7 +1287,7 @@ int Scumm::getInventoryCount(int owner) {
|
||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::setObjectState(int obj, int state, int x, int y) {
|
void ScummEngine::setObjectState(int obj, int state, int x, int y) {
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
i = getObjectIndex(obj);
|
i = getObjectIndex(obj);
|
||||||
|
@ -1305,7 +1305,7 @@ void Scumm::setObjectState(int obj, int state, int x, int y) {
|
||||||
putState(obj, state);
|
putState(obj, state);
|
||||||
}
|
}
|
||||||
|
|
||||||
int Scumm::getDistanceBetween(bool is_obj_1, int b, int c, bool is_obj_2, int e, int f) {
|
int ScummEngine::getDistanceBetween(bool is_obj_1, int b, int c, bool is_obj_2, int e, int f) {
|
||||||
int i, j;
|
int i, j;
|
||||||
int x, y;
|
int x, y;
|
||||||
int x2, y2;
|
int x2, y2;
|
||||||
|
@ -1335,7 +1335,7 @@ int Scumm::getDistanceBetween(bool is_obj_1, int b, int c, bool is_obj_2, int e,
|
||||||
return getDist(x, y, x2, y2) * 0xFF / ((i + j) >> 1);
|
return getDist(x, y, x2, y2) * 0xFF / ((i + j) >> 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::setCursorImg(uint img, uint room, uint imgindex) {
|
void ScummEngine::setCursorImg(uint img, uint room, uint imgindex) {
|
||||||
int w, h;
|
int w, h;
|
||||||
const byte *dataptr, *bomp;
|
const byte *dataptr, *bomp;
|
||||||
uint32 size;
|
uint32 size;
|
||||||
|
@ -1382,7 +1382,7 @@ void Scumm::setCursorImg(uint img, uint room, uint imgindex) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::nukeFlObjects(int min, int max) {
|
void ScummEngine::nukeFlObjects(int min, int max) {
|
||||||
ObjectData *od;
|
ObjectData *od;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
@ -1396,7 +1396,7 @@ void Scumm::nukeFlObjects(int min, int max) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::enqueueObject(int objectNumber, int objectX, int objectY, int objectWidth,
|
void ScummEngine::enqueueObject(int objectNumber, int objectX, int objectY, int objectWidth,
|
||||||
int objectHeight, int scaleX, int scaleY, int image, int mode) {
|
int objectHeight, int scaleX, int scaleY, int image, int mode) {
|
||||||
BlastObject *eo;
|
BlastObject *eo;
|
||||||
ObjectData *od;
|
ObjectData *od;
|
||||||
|
@ -1433,7 +1433,7 @@ void Scumm::enqueueObject(int objectNumber, int objectX, int objectY, int object
|
||||||
eo->mode = mode;
|
eo->mode = mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::drawBlastObjects() {
|
void ScummEngine::drawBlastObjects() {
|
||||||
BlastObject *eo;
|
BlastObject *eo;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
@ -1443,7 +1443,7 @@ void Scumm::drawBlastObjects() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::drawBlastObject(BlastObject *eo) {
|
void ScummEngine::drawBlastObject(BlastObject *eo) {
|
||||||
VirtScreen *vs;
|
VirtScreen *vs;
|
||||||
const byte *bomp, *ptr;
|
const byte *bomp, *ptr;
|
||||||
int objnum;
|
int objnum;
|
||||||
|
@ -1517,7 +1517,7 @@ void Scumm::drawBlastObject(BlastObject *eo) {
|
||||||
updateDirtyRect(vs->number, bdd.x, bdd.x + bdd.srcwidth, bdd.y, bdd.y + bdd.srcheight, 0);
|
updateDirtyRect(vs->number, bdd.x, bdd.x + bdd.srcwidth, bdd.y, bdd.y + bdd.srcheight, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::removeBlastObjects() {
|
void ScummEngine::removeBlastObjects() {
|
||||||
BlastObject *eo;
|
BlastObject *eo;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
@ -1529,7 +1529,7 @@ void Scumm::removeBlastObjects() {
|
||||||
clearEnqueue();
|
clearEnqueue();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::removeBlastObject(BlastObject *eo) {
|
void ScummEngine::removeBlastObject(BlastObject *eo) {
|
||||||
VirtScreen *vs = &virtscr[0];
|
VirtScreen *vs = &virtscr[0];
|
||||||
|
|
||||||
int top, bottom, left, right;
|
int top, bottom, left, right;
|
||||||
|
@ -1571,7 +1571,7 @@ void Scumm::removeBlastObject(BlastObject *eo) {
|
||||||
updateDirtyRect(0, left, right, top, bottom, USAGE_BIT_RESTORED);
|
updateDirtyRect(0, left, right, top, bottom, USAGE_BIT_RESTORED);
|
||||||
}
|
}
|
||||||
|
|
||||||
int Scumm::findLocalObjectSlot() {
|
int ScummEngine::findLocalObjectSlot() {
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 1; i < _numLocalObjects; i++) {
|
for (i = 1; i < _numLocalObjects; i++) {
|
||||||
|
@ -1582,7 +1582,7 @@ int Scumm::findLocalObjectSlot() {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int Scumm::findFlObjectSlot() {
|
int ScummEngine::findFlObjectSlot() {
|
||||||
int i;
|
int i;
|
||||||
for (i = 1; i < _maxFLObject; i++) {
|
for (i = 1; i < _maxFLObject; i++) {
|
||||||
if (_baseFLObject[i] == NULL)
|
if (_baseFLObject[i] == NULL)
|
||||||
|
@ -1592,7 +1592,7 @@ int Scumm::findFlObjectSlot() {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::loadFlObject(uint object, uint room) {
|
void ScummEngine::loadFlObject(uint object, uint room) {
|
||||||
FindObjectInRoom foir;
|
FindObjectInRoom foir;
|
||||||
int slot, objslot;
|
int slot, objslot;
|
||||||
ObjectData *od;
|
ObjectData *od;
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
//
|
//
|
||||||
////////////////////////////////////////
|
////////////////////////////////////////
|
||||||
|
|
||||||
Player_MOD::Player_MOD(Scumm *scumm) {
|
Player_MOD::Player_MOD(ScummEngine *scumm) {
|
||||||
int i;
|
int i;
|
||||||
_mixer = scumm->_mixer;
|
_mixer = scumm->_mixer;
|
||||||
_samplerate = scumm->_system->property(OSystem::PROP_GET_SAMPLE_RATE, 0);
|
_samplerate = scumm->_system->property(OSystem::PROP_GET_SAMPLE_RATE, 0);
|
||||||
|
|
|
@ -32,7 +32,7 @@
|
||||||
|
|
||||||
class Player_MOD {
|
class Player_MOD {
|
||||||
public:
|
public:
|
||||||
Player_MOD(Scumm *scumm);
|
Player_MOD(ScummEngine *scumm);
|
||||||
virtual ~Player_MOD();
|
virtual ~Player_MOD();
|
||||||
virtual void setMasterVolume(int vol);
|
virtual void setMasterVolume(int vol);
|
||||||
|
|
||||||
|
|
|
@ -35,7 +35,7 @@
|
||||||
////////////////////////////////////////
|
////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
Player_V1::Player_V1(Scumm *scumm) : Player_V2(scumm) {
|
Player_V1::Player_V1(ScummEngine *scumm) : Player_V2(scumm) {
|
||||||
// Initialize channel code
|
// Initialize channel code
|
||||||
for (int i = 0; i < 4; ++i)
|
for (int i = 0; i < 4; ++i)
|
||||||
clear_channel(i);
|
clear_channel(i);
|
||||||
|
|
|
@ -44,7 +44,7 @@ struct channel_data_v1 {
|
||||||
|
|
||||||
class Player_V1 : public Player_V2 {
|
class Player_V1 : public Player_V2 {
|
||||||
public:
|
public:
|
||||||
Player_V1(Scumm *scumm);
|
Player_V1(ScummEngine *scumm);
|
||||||
~Player_V1();
|
~Player_V1();
|
||||||
|
|
||||||
void startSound(int nr);
|
void startSound(int nr);
|
||||||
|
|
|
@ -345,7 +345,7 @@ static const uint16 pcjr_freq_table[12] = {
|
||||||
////////////////////////////////////////
|
////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
Player_V2::Player_V2(Scumm *scumm) {
|
Player_V2::Player_V2(ScummEngine *scumm) {
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
// This simulates the pc speaker sound, which is driven
|
// This simulates the pc speaker sound, which is driven
|
||||||
|
|
|
@ -67,13 +67,13 @@ union ChannelInfo {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
class Scumm;
|
class ScummEngine;
|
||||||
class SoundMixer;
|
class SoundMixer;
|
||||||
|
|
||||||
|
|
||||||
class Player_V2 : public MusicEngine {
|
class Player_V2 : public MusicEngine {
|
||||||
public:
|
public:
|
||||||
Player_V2(Scumm *scumm);
|
Player_V2(ScummEngine *scumm);
|
||||||
virtual ~Player_V2();
|
virtual ~Player_V2();
|
||||||
|
|
||||||
virtual void setMasterVolume(int vol);
|
virtual void setMasterVolume(int vol);
|
||||||
|
@ -88,7 +88,7 @@ protected:
|
||||||
bool _isV3Game;
|
bool _isV3Game;
|
||||||
SoundMixer *_mixer;
|
SoundMixer *_mixer;
|
||||||
OSystem *_system;
|
OSystem *_system;
|
||||||
Scumm *_scumm;
|
ScummEngine *_scumm;
|
||||||
|
|
||||||
bool _pcjr;
|
bool _pcjr;
|
||||||
int _header_len;
|
int _header_len;
|
||||||
|
|
|
@ -1111,7 +1111,7 @@ static V2A_Sound *findSound (unsigned long crc) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
Player_V2A::Player_V2A(Scumm *scumm) {
|
Player_V2A::Player_V2A(ScummEngine *scumm) {
|
||||||
int i;
|
int i;
|
||||||
_scumm = scumm;
|
_scumm = scumm;
|
||||||
_system = scumm->_system;
|
_system = scumm->_system;
|
||||||
|
|
|
@ -30,14 +30,14 @@
|
||||||
|
|
||||||
#define V2A_MAXSLOTS 8
|
#define V2A_MAXSLOTS 8
|
||||||
|
|
||||||
class Scumm;
|
class ScummEngine;
|
||||||
class SoundMixer;
|
class SoundMixer;
|
||||||
|
|
||||||
class V2A_Sound;
|
class V2A_Sound;
|
||||||
|
|
||||||
class Player_V2A : public MusicEngine {
|
class Player_V2A : public MusicEngine {
|
||||||
public:
|
public:
|
||||||
Player_V2A(Scumm *scumm);
|
Player_V2A(ScummEngine *scumm);
|
||||||
virtual ~Player_V2A();
|
virtual ~Player_V2A();
|
||||||
|
|
||||||
virtual void setMasterVolume(int vol);
|
virtual void setMasterVolume(int vol);
|
||||||
|
@ -49,7 +49,7 @@ public:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
OSystem *_system;
|
OSystem *_system;
|
||||||
Scumm *_scumm;
|
ScummEngine *_scumm;
|
||||||
Player_MOD *_mod;
|
Player_MOD *_mod;
|
||||||
|
|
||||||
struct soundSlot
|
struct soundSlot
|
||||||
|
|
|
@ -38,7 +38,7 @@ static const uint16 note_freqs[4][12] = {
|
||||||
//
|
//
|
||||||
////////////////////////////////////////
|
////////////////////////////////////////
|
||||||
|
|
||||||
Player_V3A::Player_V3A(Scumm *scumm) {
|
Player_V3A::Player_V3A(ScummEngine *scumm) {
|
||||||
int i;
|
int i;
|
||||||
_scumm = scumm;
|
_scumm = scumm;
|
||||||
_system = scumm->_system;
|
_system = scumm->_system;
|
||||||
|
|
|
@ -31,12 +31,12 @@
|
||||||
#define V3A_MAXMUS 8
|
#define V3A_MAXMUS 8
|
||||||
#define V3A_MAXSFX 8
|
#define V3A_MAXSFX 8
|
||||||
|
|
||||||
class Scumm;
|
class ScummEngine;
|
||||||
class SoundMixer;
|
class SoundMixer;
|
||||||
|
|
||||||
class Player_V3A : public MusicEngine {
|
class Player_V3A : public MusicEngine {
|
||||||
public:
|
public:
|
||||||
Player_V3A(Scumm *scumm);
|
Player_V3A(ScummEngine *scumm);
|
||||||
virtual ~Player_V3A();
|
virtual ~Player_V3A();
|
||||||
|
|
||||||
virtual void setMasterVolume(int vol);
|
virtual void setMasterVolume(int vol);
|
||||||
|
@ -48,7 +48,7 @@ public:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
OSystem *_system;
|
OSystem *_system;
|
||||||
Scumm *_scumm;
|
ScummEngine *_scumm;
|
||||||
Player_MOD *_mod;
|
Player_MOD *_mod;
|
||||||
|
|
||||||
struct musChan
|
struct musChan
|
||||||
|
|
|
@ -38,7 +38,7 @@ static uint16 newTag2Old(uint32 oldTag);
|
||||||
static const char *resTypeFromId(int id);
|
static const char *resTypeFromId(int id);
|
||||||
|
|
||||||
/* Open a room */
|
/* Open a room */
|
||||||
void Scumm::openRoom(int room) {
|
void ScummEngine::openRoom(int room) {
|
||||||
int room_offs, roomlimit;
|
int room_offs, roomlimit;
|
||||||
bool result;
|
bool result;
|
||||||
char buf[128];
|
char buf[128];
|
||||||
|
@ -147,7 +147,7 @@ void Scumm::openRoom(int room) {
|
||||||
_fileOffset = 0; // start of file
|
_fileOffset = 0; // start of file
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::closeRoom() {
|
void ScummEngine::closeRoom() {
|
||||||
if (_lastLoadedRoom != -1) {
|
if (_lastLoadedRoom != -1) {
|
||||||
_lastLoadedRoom = -1;
|
_lastLoadedRoom = -1;
|
||||||
deleteRoomOffsets();
|
deleteRoomOffsets();
|
||||||
|
@ -156,7 +156,7 @@ void Scumm::closeRoom() {
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Delete the currently loaded room offsets. */
|
/** Delete the currently loaded room offsets. */
|
||||||
void Scumm::deleteRoomOffsets() {
|
void ScummEngine::deleteRoomOffsets() {
|
||||||
if (!(_features & GF_SMALL_HEADER) && !_dynamicRoomOffsets)
|
if (!(_features & GF_SMALL_HEADER) && !_dynamicRoomOffsets)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -167,7 +167,7 @@ void Scumm::deleteRoomOffsets() {
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Read room offsets */
|
/** Read room offsets */
|
||||||
void Scumm::readRoomsOffsets() {
|
void ScummEngine::readRoomsOffsets() {
|
||||||
int num, room, i;
|
int num, room, i;
|
||||||
byte *ptr;
|
byte *ptr;
|
||||||
|
|
||||||
|
@ -207,7 +207,7 @@ void Scumm::readRoomsOffsets() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Scumm::openResourceFile(const char *filename, byte encByte) {
|
bool ScummEngine::openResourceFile(const char *filename, byte encByte) {
|
||||||
debug(9, "openResourceFile(%s)", filename);
|
debug(9, "openResourceFile(%s)", filename);
|
||||||
|
|
||||||
if (_fileHandle.isOpen()) {
|
if (_fileHandle.isOpen()) {
|
||||||
|
@ -219,7 +219,7 @@ bool Scumm::openResourceFile(const char *filename, byte encByte) {
|
||||||
return _fileHandle.isOpen();
|
return _fileHandle.isOpen();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::askForDisk(const char *filename, int disknum) {
|
void ScummEngine::askForDisk(const char *filename, int disknum) {
|
||||||
char buf[128];
|
char buf[128];
|
||||||
|
|
||||||
if (_version == 8) {
|
if (_version == 8) {
|
||||||
|
@ -245,7 +245,7 @@ void Scumm::askForDisk(const char *filename, int disknum) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::readIndexFile() {
|
void ScummEngine::readIndexFile() {
|
||||||
uint32 blocktype, itemsize;
|
uint32 blocktype, itemsize;
|
||||||
int numblock = 0;
|
int numblock = 0;
|
||||||
int num, i;
|
int num, i;
|
||||||
|
@ -439,7 +439,7 @@ void Scumm::readIndexFile() {
|
||||||
closeRoom();
|
closeRoom();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::readArrayFromIndexFile() {
|
void ScummEngine::readArrayFromIndexFile() {
|
||||||
int num;
|
int num;
|
||||||
int a, b, c;
|
int a, b, c;
|
||||||
|
|
||||||
|
@ -472,7 +472,7 @@ void Scumm::readArrayFromIndexFile() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::readResTypeList(int id, uint32 tag, const char *name) {
|
void ScummEngine::readResTypeList(int id, uint32 tag, const char *name) {
|
||||||
int num;
|
int num;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
@ -528,7 +528,7 @@ void Scumm::readResTypeList(int id, uint32 tag, const char *name) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::allocResTypeData(int id, uint32 tag, int num, const char *name, int mode) {
|
void ScummEngine::allocResTypeData(int id, uint32 tag, int num, const char *name, int mode) {
|
||||||
debug(9, "allocResTypeData(%s/%s,%x,%d,%d)", resTypeFromId(id), name, FROM_LE_32(tag), num, mode);
|
debug(9, "allocResTypeData(%s/%s,%x,%d,%d)", resTypeFromId(id), name, FROM_LE_32(tag), num, mode);
|
||||||
assert(id >= 0 && id < (int)(ARRAYSIZE(res.mode)));
|
assert(id >= 0 && id < (int)(ARRAYSIZE(res.mode)));
|
||||||
|
|
||||||
|
@ -549,7 +549,7 @@ void Scumm::allocResTypeData(int id, uint32 tag, int num, const char *name, int
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::loadCharset(int no) {
|
void ScummEngine::loadCharset(int no) {
|
||||||
int i;
|
int i;
|
||||||
byte *ptr;
|
byte *ptr;
|
||||||
|
|
||||||
|
@ -572,12 +572,12 @@ void Scumm::loadCharset(int no) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::nukeCharset(int i) {
|
void ScummEngine::nukeCharset(int i) {
|
||||||
checkRange(_maxCharsets - 1, 1, i, "Nuking illegal charset %d");
|
checkRange(_maxCharsets - 1, 1, i, "Nuking illegal charset %d");
|
||||||
nukeResource(rtCharset, i);
|
nukeResource(rtCharset, i);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::ensureResourceLoaded(int type, int i) {
|
void ScummEngine::ensureResourceLoaded(int type, int i) {
|
||||||
void *addr = NULL;
|
void *addr = NULL;
|
||||||
|
|
||||||
debug(9, "ensureResourceLoaded(%s,%d)", resTypeFromId(type), i);
|
debug(9, "ensureResourceLoaded(%s,%d)", resTypeFromId(type), i);
|
||||||
|
@ -613,7 +613,7 @@ void Scumm::ensureResourceLoaded(int type, int i) {
|
||||||
VAR(VAR_ROOM_FLAG) = 1;
|
VAR(VAR_ROOM_FLAG) = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int Scumm::loadResource(int type, int idx) {
|
int ScummEngine::loadResource(int type, int idx) {
|
||||||
int roomNr;
|
int roomNr;
|
||||||
uint32 fileOffs;
|
uint32 fileOffs;
|
||||||
uint32 size, tag;
|
uint32 size, tag;
|
||||||
|
@ -696,7 +696,7 @@ int Scumm::loadResource(int type, int idx) {
|
||||||
error("Cannot read resource");
|
error("Cannot read resource");
|
||||||
}
|
}
|
||||||
|
|
||||||
int Scumm::readSoundResource(int type, int idx) {
|
int ScummEngine::readSoundResource(int type, int idx) {
|
||||||
uint32 pos, total_size, size, tag, basetag, max_total_size;
|
uint32 pos, total_size, size, tag, basetag, max_total_size;
|
||||||
int pri, best_pri;
|
int pri, best_pri;
|
||||||
uint32 best_size = 0, best_offs = 0;
|
uint32 best_size = 0, best_offs = 0;
|
||||||
|
@ -911,7 +911,7 @@ static const uint16 num_steps_table[] = {
|
||||||
240, 276, 340, 460,
|
240, 276, 340, 460,
|
||||||
600, 860, 1200, 1600
|
600, 860, 1200, 1600
|
||||||
};
|
};
|
||||||
int Scumm::convert_extraflags(byte * ptr, byte * src_ptr) {
|
int ScummEngine::convert_extraflags(byte * ptr, byte * src_ptr) {
|
||||||
int flags = src_ptr[0];
|
int flags = src_ptr[0];
|
||||||
|
|
||||||
int t1, t2, t3, t4, time;
|
int t1, t2, t3, t4, time;
|
||||||
|
@ -1039,7 +1039,7 @@ static inline byte Mac0ToGMInstrument(uint32 type) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::convertMac0Resource(int type, int idx, byte *src_ptr, int size) {
|
void ScummEngine::convertMac0Resource(int type, int idx, byte *src_ptr, int size) {
|
||||||
/*
|
/*
|
||||||
From Markus Magnuson (superqult) we got this information:
|
From Markus Magnuson (superqult) we got this information:
|
||||||
Mac0
|
Mac0
|
||||||
|
@ -1176,7 +1176,7 @@ void Scumm::convertMac0Resource(int type, int idx, byte *src_ptr, int size) {
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::convertADResource(int type, int idx, byte *src_ptr, int size) {
|
void ScummEngine::convertADResource(int type, int idx, byte *src_ptr, int size) {
|
||||||
|
|
||||||
// We will ignore the PPQN in the original resource, because
|
// We will ignore the PPQN in the original resource, because
|
||||||
// it's invalid anyway. We use a constant PPQN of 480.
|
// it's invalid anyway. We use a constant PPQN of 480.
|
||||||
|
@ -1565,7 +1565,7 @@ void Scumm::convertADResource(int type, int idx, byte *src_ptr, int size) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int Scumm::readSoundResourceSmallHeader(int type, int idx) {
|
int ScummEngine::readSoundResourceSmallHeader(int type, int idx) {
|
||||||
uint32 pos, total_size, size, tag;
|
uint32 pos, total_size, size, tag;
|
||||||
uint32 ad_size = 0, ad_offs = 0;
|
uint32 ad_size = 0, ad_offs = 0;
|
||||||
uint32 ro_size = 0, ro_offs = 0;
|
uint32 ro_size = 0, ro_offs = 0;
|
||||||
|
@ -1683,20 +1683,20 @@ int Scumm::readSoundResourceSmallHeader(int type, int idx) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int Scumm::getResourceRoomNr(int type, int idx) {
|
int ScummEngine::getResourceRoomNr(int type, int idx) {
|
||||||
if (type == rtRoom)
|
if (type == rtRoom)
|
||||||
return idx;
|
return idx;
|
||||||
return res.roomno[type][idx];
|
return res.roomno[type][idx];
|
||||||
}
|
}
|
||||||
|
|
||||||
int Scumm::getResourceSize(int type, int idx) {
|
int ScummEngine::getResourceSize(int type, int idx) {
|
||||||
byte *ptr = getResourceAddress(type, idx);
|
byte *ptr = getResourceAddress(type, idx);
|
||||||
MemBlkHeader *hdr = (MemBlkHeader *)(ptr - sizeof(MemBlkHeader));
|
MemBlkHeader *hdr = (MemBlkHeader *)(ptr - sizeof(MemBlkHeader));
|
||||||
|
|
||||||
return hdr->size;
|
return hdr->size;
|
||||||
}
|
}
|
||||||
|
|
||||||
byte *Scumm::getResourceAddress(int type, int idx) {
|
byte *ScummEngine::getResourceAddress(int type, int idx) {
|
||||||
byte *ptr;
|
byte *ptr;
|
||||||
|
|
||||||
CHECK_HEAP
|
CHECK_HEAP
|
||||||
|
@ -1723,7 +1723,7 @@ byte *Scumm::getResourceAddress(int type, int idx) {
|
||||||
return ptr + sizeof(MemBlkHeader);
|
return ptr + sizeof(MemBlkHeader);
|
||||||
}
|
}
|
||||||
|
|
||||||
byte *Scumm::getStringAddress(int i) {
|
byte *ScummEngine::getStringAddress(int i) {
|
||||||
byte *b = getResourceAddress(rtString, i);
|
byte *b = getResourceAddress(rtString, i);
|
||||||
if (!b)
|
if (!b)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -1733,7 +1733,7 @@ byte *Scumm::getStringAddress(int i) {
|
||||||
return b;
|
return b;
|
||||||
}
|
}
|
||||||
|
|
||||||
byte *Scumm::getStringAddressVar(int i) {
|
byte *ScummEngine::getStringAddressVar(int i) {
|
||||||
byte *addr;
|
byte *addr;
|
||||||
|
|
||||||
addr = getResourceAddress(rtString, _scummVars[i]);
|
addr = getResourceAddress(rtString, _scummVars[i]);
|
||||||
|
@ -1749,7 +1749,7 @@ byte *Scumm::getStringAddressVar(int i) {
|
||||||
return (addr);
|
return (addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::setResourceCounter(int type, int idx, byte flag) {
|
void ScummEngine::setResourceCounter(int type, int idx, byte flag) {
|
||||||
res.flags[type][idx] &= ~RF_USAGE;
|
res.flags[type][idx] &= ~RF_USAGE;
|
||||||
res.flags[type][idx] |= flag;
|
res.flags[type][idx] |= flag;
|
||||||
}
|
}
|
||||||
|
@ -1757,7 +1757,7 @@ void Scumm::setResourceCounter(int type, int idx, byte flag) {
|
||||||
/* 2 bytes safety area to make "precaching" of bytes in the gdi drawer easier */
|
/* 2 bytes safety area to make "precaching" of bytes in the gdi drawer easier */
|
||||||
#define SAFETY_AREA 2
|
#define SAFETY_AREA 2
|
||||||
|
|
||||||
byte *Scumm::createResource(int type, int idx, uint32 size) {
|
byte *ScummEngine::createResource(int type, int idx, uint32 size) {
|
||||||
byte *ptr;
|
byte *ptr;
|
||||||
|
|
||||||
CHECK_HEAP
|
CHECK_HEAP
|
||||||
|
@ -1783,7 +1783,7 @@ byte *Scumm::createResource(int type, int idx, uint32 size) {
|
||||||
return ptr + sizeof(MemBlkHeader); /* skip header */
|
return ptr + sizeof(MemBlkHeader); /* skip header */
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Scumm::validateResource(const char *str, int type, int idx) const {
|
bool ScummEngine::validateResource(const char *str, int type, int idx) const {
|
||||||
if (type < rtFirst || type > rtLast || (uint) idx >= (uint) res.num[type]) {
|
if (type < rtFirst || type > rtLast || (uint) idx >= (uint) res.num[type]) {
|
||||||
warning("%s Illegal Glob type %s (%d) num %d", str, resTypeFromId(type), type, idx);
|
warning("%s Illegal Glob type %s (%d) num %d", str, resTypeFromId(type), type, idx);
|
||||||
return false;
|
return false;
|
||||||
|
@ -1791,7 +1791,7 @@ bool Scumm::validateResource(const char *str, int type, int idx) const {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::nukeResource(int type, int idx) {
|
void ScummEngine::nukeResource(int type, int idx) {
|
||||||
byte *ptr;
|
byte *ptr;
|
||||||
|
|
||||||
CHECK_HEAP
|
CHECK_HEAP
|
||||||
|
@ -1816,7 +1816,7 @@ void Scumm::nukeResource(int type, int idx) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const byte *Scumm::findResourceData(uint32 tag, const byte *ptr) {
|
const byte *ScummEngine::findResourceData(uint32 tag, const byte *ptr) {
|
||||||
if (_features & GF_OLD_BUNDLE)
|
if (_features & GF_OLD_BUNDLE)
|
||||||
error("findResourceData must not be used in GF_OLD_BUNDLE games");
|
error("findResourceData must not be used in GF_OLD_BUNDLE games");
|
||||||
else if (_features & GF_SMALL_HEADER)
|
else if (_features & GF_SMALL_HEADER)
|
||||||
|
@ -1829,7 +1829,7 @@ const byte *Scumm::findResourceData(uint32 tag, const byte *ptr) {
|
||||||
return ptr + _resourceHeaderSize;
|
return ptr + _resourceHeaderSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
int Scumm::getResourceDataSize(const byte *ptr) const {
|
int ScummEngine::getResourceDataSize(const byte *ptr) const {
|
||||||
if (ptr == NULL)
|
if (ptr == NULL)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
@ -1841,7 +1841,7 @@ int Scumm::getResourceDataSize(const byte *ptr) const {
|
||||||
return READ_BE_UINT32(ptr - 4) - 8;
|
return READ_BE_UINT32(ptr - 4) - 8;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::lock(int type, int i) {
|
void ScummEngine::lock(int type, int i) {
|
||||||
if (!validateResource("Locking", type, i))
|
if (!validateResource("Locking", type, i))
|
||||||
return;
|
return;
|
||||||
res.flags[type][i] |= RF_LOCK;
|
res.flags[type][i] |= RF_LOCK;
|
||||||
|
@ -1849,7 +1849,7 @@ void Scumm::lock(int type, int i) {
|
||||||
// debug(1, "locking %d,%d", type, i);
|
// debug(1, "locking %d,%d", type, i);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::unlock(int type, int i) {
|
void ScummEngine::unlock(int type, int i) {
|
||||||
if (!validateResource("Unlocking", type, i))
|
if (!validateResource("Unlocking", type, i))
|
||||||
return;
|
return;
|
||||||
res.flags[type][i] &= ~RF_LOCK;
|
res.flags[type][i] &= ~RF_LOCK;
|
||||||
|
@ -1857,7 +1857,7 @@ void Scumm::unlock(int type, int i) {
|
||||||
// debug(1, "unlocking %d,%d", type, i);
|
// debug(1, "unlocking %d,%d", type, i);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Scumm::isResourceInUse(int type, int i) const {
|
bool ScummEngine::isResourceInUse(int type, int i) const {
|
||||||
if (!validateResource("isResourceInUse", type, i))
|
if (!validateResource("isResourceInUse", type, i))
|
||||||
return false;
|
return false;
|
||||||
switch (type) {
|
switch (type) {
|
||||||
|
@ -1876,7 +1876,7 @@ bool Scumm::isResourceInUse(int type, int i) const {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::increaseResourceCounter() {
|
void ScummEngine::increaseResourceCounter() {
|
||||||
int i, j;
|
int i, j;
|
||||||
byte counter;
|
byte counter;
|
||||||
|
|
||||||
|
@ -1890,7 +1890,7 @@ void Scumm::increaseResourceCounter() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::expireResources(uint32 size) {
|
void ScummEngine::expireResources(uint32 size) {
|
||||||
int i, j;
|
int i, j;
|
||||||
byte flag;
|
byte flag;
|
||||||
byte best_counter;
|
byte best_counter;
|
||||||
|
@ -1935,7 +1935,7 @@ void Scumm::expireResources(uint32 size) {
|
||||||
debug(5, "Expired resources, mem %d -> %d", oldAllocatedSize, _allocatedSize);
|
debug(5, "Expired resources, mem %d -> %d", oldAllocatedSize, _allocatedSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::freeResources() {
|
void ScummEngine::freeResources() {
|
||||||
int i, j;
|
int i, j;
|
||||||
for (i = rtFirst; i <= rtLast; i++) {
|
for (i = rtFirst; i <= rtLast; i++) {
|
||||||
for (j = res.num[i]; --j >= 0;) {
|
for (j = res.num[i]; --j >= 0;) {
|
||||||
|
@ -1949,7 +1949,7 @@ void Scumm::freeResources() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::loadPtrToResource(int type, int resindex, const byte *source) {
|
void ScummEngine::loadPtrToResource(int type, int resindex, const byte *source) {
|
||||||
byte *alloced;
|
byte *alloced;
|
||||||
int i, len;
|
int i, len;
|
||||||
|
|
||||||
|
@ -1972,13 +1972,13 @@ void Scumm::loadPtrToResource(int type, int resindex, const byte *source) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Scumm::isResourceLoaded(int type, int idx) const {
|
bool ScummEngine::isResourceLoaded(int type, int idx) const {
|
||||||
if (!validateResource("isLoaded", type, idx))
|
if (!validateResource("isLoaded", type, idx))
|
||||||
return false;
|
return false;
|
||||||
return res.address[type][idx] != NULL;
|
return res.address[type][idx] != NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::resourceStats() {
|
void ScummEngine::resourceStats() {
|
||||||
int i, j;
|
int i, j;
|
||||||
uint32 lockedSize = 0, lockedNum = 0;
|
uint32 lockedSize = 0, lockedNum = 0;
|
||||||
byte flag;
|
byte flag;
|
||||||
|
@ -1995,7 +1995,7 @@ void Scumm::resourceStats() {
|
||||||
debug(1, "Total allocated size=%d, locked=%d(%d)", _allocatedSize, lockedSize, lockedNum);
|
debug(1, "Total allocated size=%d, locked=%d(%d)", _allocatedSize, lockedSize, lockedNum);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::readMAXS() {
|
void ScummEngine::readMAXS() {
|
||||||
if (_version == 8) { // CMI
|
if (_version == 8) { // CMI
|
||||||
_fileHandle.seek(50 + 50, SEEK_CUR); // 176 - 8
|
_fileHandle.seek(50 + 50, SEEK_CUR); // 176 - 8
|
||||||
_numVariables = _fileHandle.readUint32LE(); // 1500
|
_numVariables = _fileHandle.readUint32LE(); // 1500
|
||||||
|
@ -2115,7 +2115,7 @@ void Scumm::readMAXS() {
|
||||||
_dynamicRoomOffsets = true;
|
_dynamicRoomOffsets = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::allocateArrays() {
|
void ScummEngine::allocateArrays() {
|
||||||
// Note: Buffers are now allocated in scummMain to allow for
|
// Note: Buffers are now allocated in scummMain to allow for
|
||||||
// early GUI init.
|
// early GUI init.
|
||||||
|
|
||||||
|
@ -2150,14 +2150,14 @@ void Scumm::allocateArrays() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool Scumm::isGlobInMemory(int type, int idx) const{
|
bool ScummEngine::isGlobInMemory(int type, int idx) const{
|
||||||
if (!validateResource("isGlobInMemory", type, idx))
|
if (!validateResource("isGlobInMemory", type, idx))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
return res.address[type][idx] != NULL;
|
return res.address[type][idx] != NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::dumpResource(const char *tag, int idx, const byte *ptr, int length) {
|
void ScummEngine::dumpResource(const char *tag, int idx, const byte *ptr, int length) {
|
||||||
char buf[256];
|
char buf[256];
|
||||||
File out;
|
File out;
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,7 @@
|
||||||
#include "resource.h"
|
#include "resource.h"
|
||||||
#include "sound/mididrv.h"
|
#include "sound/mididrv.h"
|
||||||
|
|
||||||
void Scumm_v2::readClassicIndexFile() {
|
void ScummEngine_v2::readClassicIndexFile() {
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (_gameId == GID_MANIAC) {
|
if (_gameId == GID_MANIAC) {
|
||||||
|
@ -104,7 +104,7 @@ void Scumm_v2::readClassicIndexFile() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::readEnhancedIndexFile() {
|
void ScummEngine_v2::readEnhancedIndexFile() {
|
||||||
|
|
||||||
if (!(_features & GF_AMIGA))
|
if (!(_features & GF_AMIGA))
|
||||||
_musicEngine = _playerV2 = new Player_V2(this);
|
_musicEngine = _playerV2 = new Player_V2(this);
|
||||||
|
@ -143,7 +143,7 @@ void Scumm_v2::readEnhancedIndexFile() {
|
||||||
readResTypeList(rtSound, MKID('SOUN'), "sound");
|
readResTypeList(rtSound, MKID('SOUN'), "sound");
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::readIndexFile() {
|
void ScummEngine_v2::readIndexFile() {
|
||||||
int magic = 0;
|
int magic = 0;
|
||||||
debug(9, "readIndexFile()");
|
debug(9, "readIndexFile()");
|
||||||
|
|
||||||
|
@ -177,7 +177,7 @@ void Scumm_v2::readIndexFile() {
|
||||||
closeRoom();
|
closeRoom();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::readMAXS() {
|
void ScummEngine_v2::readMAXS() {
|
||||||
// FIXME - I'm not sure for those values yet, they will have to be rechecked
|
// FIXME - I'm not sure for those values yet, they will have to be rechecked
|
||||||
|
|
||||||
_numVariables = 800; // 800
|
_numVariables = 800; // 800
|
||||||
|
@ -199,6 +199,6 @@ void Scumm_v2::readMAXS() {
|
||||||
allocateArrays();
|
allocateArrays();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::loadCharset(int num) {
|
void ScummEngine_v2::loadCharset(int num) {
|
||||||
// Stub, V2 font resources are hardcoded into the engine.
|
// Stub, V2 font resources are hardcoded into the engine.
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
#include "resource.h"
|
#include "resource.h"
|
||||||
|
|
||||||
|
|
||||||
void Scumm_v3::readIndexFile() {
|
void ScummEngine_v3::readIndexFile() {
|
||||||
if (_features & GF_OLD_BUNDLE) {
|
if (_features & GF_OLD_BUNDLE) {
|
||||||
int magic = 0;
|
int magic = 0;
|
||||||
debug(9, "readIndexFile()");
|
debug(9, "readIndexFile()");
|
||||||
|
@ -163,7 +163,7 @@ void Scumm_v3::readIndexFile() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v3::loadCharset(int no) {
|
void ScummEngine_v3::loadCharset(int no) {
|
||||||
uint32 size;
|
uint32 size;
|
||||||
memset(_charsetData, 0, sizeof(_charsetData));
|
memset(_charsetData, 0, sizeof(_charsetData));
|
||||||
|
|
||||||
|
@ -190,7 +190,7 @@ void Scumm_v3::loadCharset(int no) {
|
||||||
file.close();
|
file.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v3::readMAXS() {
|
void ScummEngine_v3::readMAXS() {
|
||||||
// FIXME - I'm not sure for those values yet, they will have to be rechecked
|
// FIXME - I'm not sure for those values yet, they will have to be rechecked
|
||||||
|
|
||||||
_numVariables = 800; // 800
|
_numVariables = 800; // 800
|
||||||
|
@ -212,7 +212,7 @@ void Scumm_v3::readMAXS() {
|
||||||
allocateArrays();
|
allocateArrays();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v3::readGlobalObjects() {
|
void ScummEngine_v3::readGlobalObjects() {
|
||||||
int num = _fileHandle.readUint16LE();
|
int num = _fileHandle.readUint16LE();
|
||||||
assert(num == _numGlobalObjects);
|
assert(num == _numGlobalObjects);
|
||||||
for (int i = 0; i != num; i++) {
|
for (int i = 0; i != num; i++) {
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
#include "scumm.h"
|
#include "scumm.h"
|
||||||
#include "intern.h"
|
#include "intern.h"
|
||||||
|
|
||||||
void Scumm_v4::loadCharset(int no) {
|
void ScummEngine_v4::loadCharset(int no) {
|
||||||
uint32 size;
|
uint32 size;
|
||||||
memset(_charsetData, 0, sizeof(_charsetData));
|
memset(_charsetData, 0, sizeof(_charsetData));
|
||||||
|
|
||||||
|
|
|
@ -46,20 +46,20 @@ struct SaveGameHeader {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
void Scumm::requestSave(int slot, const char *name) {
|
void ScummEngine::requestSave(int slot, const char *name) {
|
||||||
_saveLoadSlot = slot;
|
_saveLoadSlot = slot;
|
||||||
_saveLoadCompatible = false;
|
_saveLoadCompatible = false;
|
||||||
_saveLoadFlag = 1; // 1 for save
|
_saveLoadFlag = 1; // 1 for save
|
||||||
strcpy(_saveLoadName, name);
|
strcpy(_saveLoadName, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::requestLoad(int slot) {
|
void ScummEngine::requestLoad(int slot) {
|
||||||
_saveLoadSlot = slot;
|
_saveLoadSlot = slot;
|
||||||
_saveLoadCompatible = false;
|
_saveLoadCompatible = false;
|
||||||
_saveLoadFlag = 2; // 2 for load
|
_saveLoadFlag = 2; // 2 for load
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Scumm::saveState(int slot, bool compat, SaveFileManager *mgr) {
|
bool ScummEngine::saveState(int slot, bool compat, SaveFileManager *mgr) {
|
||||||
char filename[256];
|
char filename[256];
|
||||||
SaveFile *out;
|
SaveFile *out;
|
||||||
SaveGameHeader hdr;
|
SaveGameHeader hdr;
|
||||||
|
@ -84,7 +84,7 @@ bool Scumm::saveState(int slot, bool compat, SaveFileManager *mgr) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Scumm::loadState(int slot, bool compat, SaveFileManager *mgr) {
|
bool ScummEngine::loadState(int slot, bool compat, SaveFileManager *mgr) {
|
||||||
char filename[256];
|
char filename[256];
|
||||||
SaveFile *out;
|
SaveFile *out;
|
||||||
int i, j;
|
int i, j;
|
||||||
|
@ -225,18 +225,18 @@ bool Scumm::loadState(int slot, bool compat, SaveFileManager *mgr) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::makeSavegameName(char *out, int slot, bool compatible) {
|
void ScummEngine::makeSavegameName(char *out, int slot, bool compatible) {
|
||||||
sprintf(out, "%s.%c%.2d", _game_name, compatible ? 'c' : 's', slot);
|
sprintf(out, "%s.%c%.2d", _game_name, compatible ? 'c' : 's', slot);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::listSavegames(bool *marks, int num, SaveFileManager *mgr) {
|
void ScummEngine::listSavegames(bool *marks, int num, SaveFileManager *mgr) {
|
||||||
char prefix[256];
|
char prefix[256];
|
||||||
makeSavegameName(prefix, 99, false);
|
makeSavegameName(prefix, 99, false);
|
||||||
prefix[strlen(prefix)-2] = 0;
|
prefix[strlen(prefix)-2] = 0;
|
||||||
mgr->list_savefiles(prefix, getSavePath(), marks, num);
|
mgr->list_savefiles(prefix, getSavePath(), marks, num);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Scumm::getSavegameName(int slot, char *desc, SaveFileManager *mgr) {
|
bool ScummEngine::getSavegameName(int slot, char *desc, SaveFileManager *mgr) {
|
||||||
char filename[256];
|
char filename[256];
|
||||||
SaveFile *out;
|
SaveFile *out;
|
||||||
SaveGameHeader hdr;
|
SaveGameHeader hdr;
|
||||||
|
@ -267,7 +267,7 @@ bool Scumm::getSavegameName(int slot, char *desc, SaveFileManager *mgr) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::saveOrLoad(Serializer *s, uint32 savegameVersion) {
|
void ScummEngine::saveOrLoad(Serializer *s, uint32 savegameVersion) {
|
||||||
const SaveLoadEntry objectEntries[] = {
|
const SaveLoadEntry objectEntries[] = {
|
||||||
MKLINE(ObjectData, OBIMoffset, sleUint32, VER(8)),
|
MKLINE(ObjectData, OBIMoffset, sleUint32, VER(8)),
|
||||||
MKLINE(ObjectData, OBCDoffset, sleUint32, VER(8)),
|
MKLINE(ObjectData, OBCDoffset, sleUint32, VER(8)),
|
||||||
|
@ -317,154 +317,154 @@ void Scumm::saveOrLoad(Serializer *s, uint32 savegameVersion) {
|
||||||
};
|
};
|
||||||
|
|
||||||
const SaveLoadEntry mainEntries[] = {
|
const SaveLoadEntry mainEntries[] = {
|
||||||
MKLINE(Scumm, _roomWidth, sleUint16, VER(8)),
|
MKLINE(ScummEngine, _roomWidth, sleUint16, VER(8)),
|
||||||
MKLINE(Scumm, _roomHeight, sleUint16, VER(8)),
|
MKLINE(ScummEngine, _roomHeight, sleUint16, VER(8)),
|
||||||
MKLINE(Scumm, _ENCD_offs, sleUint32, VER(8)),
|
MKLINE(ScummEngine, _ENCD_offs, sleUint32, VER(8)),
|
||||||
MKLINE(Scumm, _EXCD_offs, sleUint32, VER(8)),
|
MKLINE(ScummEngine, _EXCD_offs, sleUint32, VER(8)),
|
||||||
MKLINE(Scumm, _IM00_offs, sleUint32, VER(8)),
|
MKLINE(ScummEngine, _IM00_offs, sleUint32, VER(8)),
|
||||||
MKLINE(Scumm, _CLUT_offs, sleUint32, VER(8)),
|
MKLINE(ScummEngine, _CLUT_offs, sleUint32, VER(8)),
|
||||||
MK_OBSOLETE(Scumm, _EPAL_offs, sleUint32, VER(8), VER(9)),
|
MK_OBSOLETE(ScummEngine, _EPAL_offs, sleUint32, VER(8), VER(9)),
|
||||||
MKLINE(Scumm, _PALS_offs, sleUint32, VER(8)),
|
MKLINE(ScummEngine, _PALS_offs, sleUint32, VER(8)),
|
||||||
MKLINE(Scumm, _curPalIndex, sleByte, VER(8)),
|
MKLINE(ScummEngine, _curPalIndex, sleByte, VER(8)),
|
||||||
MKLINE(Scumm, _currentRoom, sleByte, VER(8)),
|
MKLINE(ScummEngine, _currentRoom, sleByte, VER(8)),
|
||||||
MKLINE(Scumm, _roomResource, sleByte, VER(8)),
|
MKLINE(ScummEngine, _roomResource, sleByte, VER(8)),
|
||||||
MKLINE(Scumm, _numObjectsInRoom, sleByte, VER(8)),
|
MKLINE(ScummEngine, _numObjectsInRoom, sleByte, VER(8)),
|
||||||
MKLINE(Scumm, _currentScript, sleByte, VER(8)),
|
MKLINE(ScummEngine, _currentScript, sleByte, VER(8)),
|
||||||
MKARRAY(Scumm, _localScriptList[0], sleUint32, NUM_LOCALSCRIPT, VER(8)),
|
MKARRAY(ScummEngine, _localScriptList[0], sleUint32, NUM_LOCALSCRIPT, VER(8)),
|
||||||
|
|
||||||
|
|
||||||
// vm.localvar grew from 25 to 40 script entries and then from
|
// vm.localvar grew from 25 to 40 script entries and then from
|
||||||
// 16 to 32 bit variables (but that wasn't reflect here)... and
|
// 16 to 32 bit variables (but that wasn't reflect here)... and
|
||||||
// THEN from 16 to 25 variables.
|
// THEN from 16 to 25 variables.
|
||||||
MKARRAY2_OLD(Scumm, vm.localvar[0][0], sleUint16, 17, 25, (byte*)vm.localvar[1] - (byte*)vm.localvar[0], VER(8), VER(8)),
|
MKARRAY2_OLD(ScummEngine, vm.localvar[0][0], sleUint16, 17, 25, (byte*)vm.localvar[1] - (byte*)vm.localvar[0], VER(8), VER(8)),
|
||||||
MKARRAY2_OLD(Scumm, vm.localvar[0][0], sleUint16, 17, 40, (byte*)vm.localvar[1] - (byte*)vm.localvar[0], VER(9), VER(14)),
|
MKARRAY2_OLD(ScummEngine, vm.localvar[0][0], sleUint16, 17, 40, (byte*)vm.localvar[1] - (byte*)vm.localvar[0], VER(9), VER(14)),
|
||||||
|
|
||||||
// We used to save 25 * 40 = 1000 blocks; but actually, each 'row consisted of 26 entry,
|
// We used to save 25 * 40 = 1000 blocks; but actually, each 'row consisted of 26 entry,
|
||||||
// i.e. 26 * 40 = 1040. Thus the last 40 blocks of localvar where not saved at all. To be
|
// i.e. 26 * 40 = 1040. Thus the last 40 blocks of localvar where not saved at all. To be
|
||||||
// able to load this screwed format, we use a trick: We load 26 * 38 = 988 blocks.
|
// able to load this screwed format, we use a trick: We load 26 * 38 = 988 blocks.
|
||||||
// Then, we mark the followin 12 blocks (24 bytes) as obsolete.
|
// Then, we mark the followin 12 blocks (24 bytes) as obsolete.
|
||||||
MKARRAY2_OLD(Scumm, vm.localvar[0][0], sleUint16, 26, 38, (byte*)vm.localvar[1] - (byte*)vm.localvar[0], VER(15), VER(17)),
|
MKARRAY2_OLD(ScummEngine, vm.localvar[0][0], sleUint16, 26, 38, (byte*)vm.localvar[1] - (byte*)vm.localvar[0], VER(15), VER(17)),
|
||||||
MK_OBSOLETE_ARRAY(Scumm, vm.localvar[39][0], sleUint16, 12, VER(15), VER(17)),
|
MK_OBSOLETE_ARRAY(ScummEngine, vm.localvar[39][0], sleUint16, 12, VER(15), VER(17)),
|
||||||
|
|
||||||
// This was the first proper multi dimensional version of the localvars, with 32 bit values
|
// This was the first proper multi dimensional version of the localvars, with 32 bit values
|
||||||
MKARRAY2_OLD(Scumm, vm.localvar[0][0], sleUint32, 26, 40, (byte*)vm.localvar[1] - (byte*)vm.localvar[0], VER(18), VER(19)),
|
MKARRAY2_OLD(ScummEngine, vm.localvar[0][0], sleUint32, 26, 40, (byte*)vm.localvar[1] - (byte*)vm.localvar[0], VER(18), VER(19)),
|
||||||
|
|
||||||
// Then we doubled the script slots again, from 40 to 80
|
// Then we doubled the script slots again, from 40 to 80
|
||||||
MKARRAY2(Scumm, vm.localvar[0][0], sleUint32, 26, NUM_SCRIPT_SLOT, (byte*)vm.localvar[1] - (byte*)vm.localvar[0], VER(20)),
|
MKARRAY2(ScummEngine, vm.localvar[0][0], sleUint32, 26, NUM_SCRIPT_SLOT, (byte*)vm.localvar[1] - (byte*)vm.localvar[0], VER(20)),
|
||||||
|
|
||||||
|
|
||||||
MKARRAY(Scumm, _resourceMapper[0], sleByte, 128, VER(8)),
|
MKARRAY(ScummEngine, _resourceMapper[0], sleByte, 128, VER(8)),
|
||||||
MKARRAY(Scumm, _charsetColorMap[0], sleByte, 16, VER(8)),
|
MKARRAY(ScummEngine, _charsetColorMap[0], sleByte, 16, VER(8)),
|
||||||
|
|
||||||
// _charsetData grew from 10*16 to 15*16 bytes
|
// _charsetData grew from 10*16 to 15*16 bytes
|
||||||
MKARRAY_OLD(Scumm, _charsetData[0][0], sleByte, 10 * 16, VER(8), VER(9)),
|
MKARRAY_OLD(ScummEngine, _charsetData[0][0], sleByte, 10 * 16, VER(8), VER(9)),
|
||||||
MKARRAY(Scumm, _charsetData[0][0], sleByte, 15 * 16, VER(10)),
|
MKARRAY(ScummEngine, _charsetData[0][0], sleByte, 15 * 16, VER(10)),
|
||||||
|
|
||||||
MKLINE(Scumm, _curExecScript, sleUint16, VER(8)),
|
MKLINE(ScummEngine, _curExecScript, sleUint16, VER(8)),
|
||||||
|
|
||||||
MKLINE(Scumm, camera._dest.x, sleInt16, VER(8)),
|
MKLINE(ScummEngine, camera._dest.x, sleInt16, VER(8)),
|
||||||
MKLINE(Scumm, camera._dest.y, sleInt16, VER(8)),
|
MKLINE(ScummEngine, camera._dest.y, sleInt16, VER(8)),
|
||||||
MKLINE(Scumm, camera._cur.x, sleInt16, VER(8)),
|
MKLINE(ScummEngine, camera._cur.x, sleInt16, VER(8)),
|
||||||
MKLINE(Scumm, camera._cur.y, sleInt16, VER(8)),
|
MKLINE(ScummEngine, camera._cur.y, sleInt16, VER(8)),
|
||||||
MKLINE(Scumm, camera._last.x, sleInt16, VER(8)),
|
MKLINE(ScummEngine, camera._last.x, sleInt16, VER(8)),
|
||||||
MKLINE(Scumm, camera._last.y, sleInt16, VER(8)),
|
MKLINE(ScummEngine, camera._last.y, sleInt16, VER(8)),
|
||||||
MKLINE(Scumm, camera._accel.x, sleInt16, VER(8)),
|
MKLINE(ScummEngine, camera._accel.x, sleInt16, VER(8)),
|
||||||
MKLINE(Scumm, camera._accel.y, sleInt16, VER(8)),
|
MKLINE(ScummEngine, camera._accel.y, sleInt16, VER(8)),
|
||||||
MKLINE(Scumm, _screenStartStrip, sleInt16, VER(8)),
|
MKLINE(ScummEngine, _screenStartStrip, sleInt16, VER(8)),
|
||||||
MKLINE(Scumm, _screenEndStrip, sleInt16, VER(8)),
|
MKLINE(ScummEngine, _screenEndStrip, sleInt16, VER(8)),
|
||||||
MKLINE(Scumm, camera._mode, sleByte, VER(8)),
|
MKLINE(ScummEngine, camera._mode, sleByte, VER(8)),
|
||||||
MKLINE(Scumm, camera._follows, sleByte, VER(8)),
|
MKLINE(ScummEngine, camera._follows, sleByte, VER(8)),
|
||||||
MKLINE(Scumm, camera._leftTrigger, sleInt16, VER(8)),
|
MKLINE(ScummEngine, camera._leftTrigger, sleInt16, VER(8)),
|
||||||
MKLINE(Scumm, camera._rightTrigger, sleInt16, VER(8)),
|
MKLINE(ScummEngine, camera._rightTrigger, sleInt16, VER(8)),
|
||||||
MKLINE(Scumm, camera._movingToActor, sleUint16, VER(8)),
|
MKLINE(ScummEngine, camera._movingToActor, sleUint16, VER(8)),
|
||||||
|
|
||||||
MKLINE(Scumm, _actorToPrintStrFor, sleByte, VER(8)),
|
MKLINE(ScummEngine, _actorToPrintStrFor, sleByte, VER(8)),
|
||||||
MKLINE(Scumm, _charsetColor, sleByte, VER(8)),
|
MKLINE(ScummEngine, _charsetColor, sleByte, VER(8)),
|
||||||
|
|
||||||
// _charsetBufPos was changed from byte to int
|
// _charsetBufPos was changed from byte to int
|
||||||
MKLINE_OLD(Scumm, _charsetBufPos, sleByte, VER(8), VER(9)),
|
MKLINE_OLD(ScummEngine, _charsetBufPos, sleByte, VER(8), VER(9)),
|
||||||
MKLINE(Scumm, _charsetBufPos, sleInt16, VER(10)),
|
MKLINE(ScummEngine, _charsetBufPos, sleInt16, VER(10)),
|
||||||
|
|
||||||
MKLINE(Scumm, _haveMsg, sleByte, VER(8)),
|
MKLINE(ScummEngine, _haveMsg, sleByte, VER(8)),
|
||||||
MKLINE(Scumm, _useTalkAnims, sleByte, VER(8)),
|
MKLINE(ScummEngine, _useTalkAnims, sleByte, VER(8)),
|
||||||
|
|
||||||
MKLINE(Scumm, _talkDelay, sleInt16, VER(8)),
|
MKLINE(ScummEngine, _talkDelay, sleInt16, VER(8)),
|
||||||
MKLINE(Scumm, _defaultTalkDelay, sleInt16, VER(8)),
|
MKLINE(ScummEngine, _defaultTalkDelay, sleInt16, VER(8)),
|
||||||
MKLINE(Scumm, _numInMsgStack, sleInt16, VER(8)),
|
MKLINE(ScummEngine, _numInMsgStack, sleInt16, VER(8)),
|
||||||
MKLINE(Scumm, _sentenceNum, sleByte, VER(8)),
|
MKLINE(ScummEngine, _sentenceNum, sleByte, VER(8)),
|
||||||
|
|
||||||
MKLINE(Scumm, vm.cutSceneStackPointer, sleByte, VER(8)),
|
MKLINE(ScummEngine, vm.cutSceneStackPointer, sleByte, VER(8)),
|
||||||
MKARRAY(Scumm, vm.cutScenePtr[0], sleUint32, 5, VER(8)),
|
MKARRAY(ScummEngine, vm.cutScenePtr[0], sleUint32, 5, VER(8)),
|
||||||
MKARRAY(Scumm, vm.cutSceneScript[0], sleByte, 5, VER(8)),
|
MKARRAY(ScummEngine, vm.cutSceneScript[0], sleByte, 5, VER(8)),
|
||||||
MKARRAY(Scumm, vm.cutSceneData[0], sleInt16, 5, VER(8)),
|
MKARRAY(ScummEngine, vm.cutSceneData[0], sleInt16, 5, VER(8)),
|
||||||
MKLINE(Scumm, vm.cutSceneScriptIndex, sleInt16, VER(8)),
|
MKLINE(ScummEngine, vm.cutSceneScriptIndex, sleInt16, VER(8)),
|
||||||
|
|
||||||
MKLINE(Scumm, vm.numNestedScripts, sleByte, VER(8)),
|
MKLINE(ScummEngine, vm.numNestedScripts, sleByte, VER(8)),
|
||||||
MKLINE(Scumm, _userPut, sleByte, VER(8)),
|
MKLINE(ScummEngine, _userPut, sleByte, VER(8)),
|
||||||
MKLINE(Scumm, _userState, sleUint16, VER(17)),
|
MKLINE(ScummEngine, _userState, sleUint16, VER(17)),
|
||||||
MKLINE(Scumm, _cursor.state, sleByte, VER(8)),
|
MKLINE(ScummEngine, _cursor.state, sleByte, VER(8)),
|
||||||
MK_OBSOLETE(Scumm, gdi._cursorActive, sleByte, VER(8), VER(20)),
|
MK_OBSOLETE(ScummEngine, gdi._cursorActive, sleByte, VER(8), VER(20)),
|
||||||
MKLINE(Scumm, _currentCursor, sleByte, VER(8)),
|
MKLINE(ScummEngine, _currentCursor, sleByte, VER(8)),
|
||||||
MKARRAY(Scumm, _grabbedCursor[0], sleByte, 8192, VER(20)),
|
MKARRAY(ScummEngine, _grabbedCursor[0], sleByte, 8192, VER(20)),
|
||||||
MKLINE(Scumm, _cursor.width, sleInt16, VER(20)),
|
MKLINE(ScummEngine, _cursor.width, sleInt16, VER(20)),
|
||||||
MKLINE(Scumm, _cursor.height, sleInt16, VER(20)),
|
MKLINE(ScummEngine, _cursor.height, sleInt16, VER(20)),
|
||||||
MKLINE(Scumm, _cursor.hotspotX, sleInt16, VER(20)),
|
MKLINE(ScummEngine, _cursor.hotspotX, sleInt16, VER(20)),
|
||||||
MKLINE(Scumm, _cursor.hotspotY, sleInt16, VER(20)),
|
MKLINE(ScummEngine, _cursor.hotspotY, sleInt16, VER(20)),
|
||||||
MKLINE(Scumm, _cursor.animate, sleByte, VER(20)),
|
MKLINE(ScummEngine, _cursor.animate, sleByte, VER(20)),
|
||||||
MKLINE(Scumm, _cursor.animateIndex, sleByte, VER(20)),
|
MKLINE(ScummEngine, _cursor.animateIndex, sleByte, VER(20)),
|
||||||
MKLINE(Scumm, _mouse.x, sleInt16, VER(20)),
|
MKLINE(ScummEngine, _mouse.x, sleInt16, VER(20)),
|
||||||
MKLINE(Scumm, _mouse.y, sleInt16, VER(20)),
|
MKLINE(ScummEngine, _mouse.y, sleInt16, VER(20)),
|
||||||
|
|
||||||
MKLINE(Scumm, _doEffect, sleByte, VER(8)),
|
MKLINE(ScummEngine, _doEffect, sleByte, VER(8)),
|
||||||
MKLINE(Scumm, _switchRoomEffect, sleByte, VER(8)),
|
MKLINE(ScummEngine, _switchRoomEffect, sleByte, VER(8)),
|
||||||
MKLINE(Scumm, _newEffect, sleByte, VER(8)),
|
MKLINE(ScummEngine, _newEffect, sleByte, VER(8)),
|
||||||
MKLINE(Scumm, _switchRoomEffect2, sleByte, VER(8)),
|
MKLINE(ScummEngine, _switchRoomEffect2, sleByte, VER(8)),
|
||||||
MKLINE(Scumm, _BgNeedsRedraw, sleByte, VER(8)),
|
MKLINE(ScummEngine, _BgNeedsRedraw, sleByte, VER(8)),
|
||||||
|
|
||||||
// The state of palManipulate is stored only since V10
|
// The state of palManipulate is stored only since V10
|
||||||
MKLINE(Scumm, _palManipStart, sleByte, VER(10)),
|
MKLINE(ScummEngine, _palManipStart, sleByte, VER(10)),
|
||||||
MKLINE(Scumm, _palManipEnd, sleByte, VER(10)),
|
MKLINE(ScummEngine, _palManipEnd, sleByte, VER(10)),
|
||||||
MKLINE(Scumm, _palManipCounter, sleUint16, VER(10)),
|
MKLINE(ScummEngine, _palManipCounter, sleUint16, VER(10)),
|
||||||
|
|
||||||
// gfxUsageBits grew from 200 to 410 entries. Then 3 * 410 entries:
|
// gfxUsageBits grew from 200 to 410 entries. Then 3 * 410 entries:
|
||||||
MKARRAY_OLD(Scumm, gfxUsageBits[0], sleUint32, 200, VER(8), VER(9)),
|
MKARRAY_OLD(ScummEngine, gfxUsageBits[0], sleUint32, 200, VER(8), VER(9)),
|
||||||
MKARRAY_OLD(Scumm, gfxUsageBits[0], sleUint32, 410, VER(10), VER(13)),
|
MKARRAY_OLD(ScummEngine, gfxUsageBits[0], sleUint32, 410, VER(10), VER(13)),
|
||||||
MKARRAY(Scumm, gfxUsageBits[0], sleUint32, 3 * 410, VER(14)),
|
MKARRAY(ScummEngine, gfxUsageBits[0], sleUint32, 3 * 410, VER(14)),
|
||||||
|
|
||||||
MKLINE(Scumm, gdi._transparentColor, sleByte, VER(8)),
|
MKLINE(ScummEngine, gdi._transparentColor, sleByte, VER(8)),
|
||||||
MKARRAY(Scumm, _currentPalette[0], sleByte, 768, VER(8)),
|
MKARRAY(ScummEngine, _currentPalette[0], sleByte, 768, VER(8)),
|
||||||
|
|
||||||
MKARRAY(Scumm, _proc_special_palette[0], sleByte, 256, VER(8)),
|
MKARRAY(ScummEngine, _proc_special_palette[0], sleByte, 256, VER(8)),
|
||||||
|
|
||||||
MKARRAY(Scumm, _charsetBuffer[0], sleByte, 256, VER(8)),
|
MKARRAY(ScummEngine, _charsetBuffer[0], sleByte, 256, VER(8)),
|
||||||
|
|
||||||
MKLINE(Scumm, _egoPositioned, sleByte, VER(8)),
|
MKLINE(ScummEngine, _egoPositioned, sleByte, VER(8)),
|
||||||
|
|
||||||
// gdi._imgBufOffs grew from 4 to 5 entries :
|
// gdi._imgBufOffs grew from 4 to 5 entries :
|
||||||
MKARRAY_OLD(Scumm, gdi._imgBufOffs[0], sleUint16, 4, VER(8), VER(9)),
|
MKARRAY_OLD(ScummEngine, gdi._imgBufOffs[0], sleUint16, 4, VER(8), VER(9)),
|
||||||
MKARRAY(Scumm, gdi._imgBufOffs[0], sleUint16, 5, VER(10)),
|
MKARRAY(ScummEngine, gdi._imgBufOffs[0], sleUint16, 5, VER(10)),
|
||||||
|
|
||||||
MKLINE(Scumm, gdi._numZBuffer, sleByte, VER(8)),
|
MKLINE(ScummEngine, gdi._numZBuffer, sleByte, VER(8)),
|
||||||
|
|
||||||
MKLINE(Scumm, _screenEffectFlag, sleByte, VER(8)),
|
MKLINE(ScummEngine, _screenEffectFlag, sleByte, VER(8)),
|
||||||
|
|
||||||
MK_OBSOLETE(Scumm, _randSeed1, sleUint32, VER(8), VER(9)),
|
MK_OBSOLETE(ScummEngine, _randSeed1, sleUint32, VER(8), VER(9)),
|
||||||
MK_OBSOLETE(Scumm, _randSeed2, sleUint32, VER(8), VER(9)),
|
MK_OBSOLETE(ScummEngine, _randSeed2, sleUint32, VER(8), VER(9)),
|
||||||
|
|
||||||
// Converted _shakeEnabled to boolean and added a _shakeFrame field.
|
// Converted _shakeEnabled to boolean and added a _shakeFrame field.
|
||||||
MKLINE_OLD(Scumm, _shakeEnabled, sleInt16, VER(8), VER(9)),
|
MKLINE_OLD(ScummEngine, _shakeEnabled, sleInt16, VER(8), VER(9)),
|
||||||
MKLINE(Scumm, _shakeEnabled, sleByte, VER(10)),
|
MKLINE(ScummEngine, _shakeEnabled, sleByte, VER(10)),
|
||||||
MKLINE(Scumm, _shakeFrame, sleUint32, VER(10)),
|
MKLINE(ScummEngine, _shakeFrame, sleUint32, VER(10)),
|
||||||
|
|
||||||
MKLINE(Scumm, _keepText, sleByte, VER(8)),
|
MKLINE(ScummEngine, _keepText, sleByte, VER(8)),
|
||||||
|
|
||||||
MKLINE(Scumm, _screenB, sleUint16, VER(8)),
|
MKLINE(ScummEngine, _screenB, sleUint16, VER(8)),
|
||||||
MKLINE(Scumm, _screenH, sleUint16, VER(8)),
|
MKLINE(ScummEngine, _screenH, sleUint16, VER(8)),
|
||||||
|
|
||||||
MK_OBSOLETE(Scumm, _cd_track, sleInt16, VER(9), VER(9)),
|
MK_OBSOLETE(ScummEngine, _cd_track, sleInt16, VER(9), VER(9)),
|
||||||
MK_OBSOLETE(Scumm, _cd_loops, sleInt16, VER(9), VER(9)),
|
MK_OBSOLETE(ScummEngine, _cd_loops, sleInt16, VER(9), VER(9)),
|
||||||
MK_OBSOLETE(Scumm, _cd_frame, sleInt16, VER(9), VER(9)),
|
MK_OBSOLETE(ScummEngine, _cd_frame, sleInt16, VER(9), VER(9)),
|
||||||
MK_OBSOLETE(Scumm, _cd_end, sleInt16, VER(9), VER(9)),
|
MK_OBSOLETE(ScummEngine, _cd_end, sleInt16, VER(9), VER(9)),
|
||||||
|
|
||||||
MKEND()
|
MKEND()
|
||||||
};
|
};
|
||||||
|
@ -679,7 +679,7 @@ void Scumm::saveOrLoad(Serializer *s, uint32 savegameVersion) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::saveLoadResource(Serializer *ser, int type, int idx) {
|
void ScummEngine::saveLoadResource(Serializer *ser, int type, int idx) {
|
||||||
byte *ptr;
|
byte *ptr;
|
||||||
uint32 size;
|
uint32 size;
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
#include "scumm/scumm.h"
|
#include "scumm/scumm.h"
|
||||||
|
|
||||||
/* Start executing script 'script' with the given parameters */
|
/* Start executing script 'script' with the given parameters */
|
||||||
void Scumm::runScript(int script, bool freezeResistant, bool recursive, int *lvarptr) {
|
void ScummEngine::runScript(int script, bool freezeResistant, bool recursive, int *lvarptr) {
|
||||||
ScriptSlot *s;
|
ScriptSlot *s;
|
||||||
byte *scriptPtr;
|
byte *scriptPtr;
|
||||||
uint32 scriptOffs;
|
uint32 scriptOffs;
|
||||||
|
@ -71,7 +71,7 @@ void Scumm::runScript(int script, bool freezeResistant, bool recursive, int *lva
|
||||||
runScriptNested(slot);
|
runScriptNested(slot);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::runObjectScript(int object, int entry, bool freezeResistant, bool recursive, int *vars, int slot) {
|
void ScummEngine::runObjectScript(int object, int entry, bool freezeResistant, bool recursive, int *vars, int slot) {
|
||||||
ScriptSlot *s;
|
ScriptSlot *s;
|
||||||
uint32 obcd;
|
uint32 obcd;
|
||||||
int where, offs;
|
int where, offs;
|
||||||
|
@ -118,7 +118,7 @@ void Scumm::runObjectScript(int object, int entry, bool freezeResistant, bool re
|
||||||
#define BYPASS_COPY_PROT
|
#define BYPASS_COPY_PROT
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void Scumm::initializeLocals(int slot, int *vars) {
|
void ScummEngine::initializeLocals(int slot, int *vars) {
|
||||||
int i;
|
int i;
|
||||||
if (!vars) {
|
if (!vars) {
|
||||||
for (i = 0; i < 16; i++)
|
for (i = 0; i < 16; i++)
|
||||||
|
@ -129,7 +129,7 @@ void Scumm::initializeLocals(int slot, int *vars) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int Scumm::getVerbEntrypoint(int obj, int entry) {
|
int ScummEngine::getVerbEntrypoint(int obj, int entry) {
|
||||||
const byte *objptr, *verbptr;
|
const byte *objptr, *verbptr;
|
||||||
int verboffs;
|
int verboffs;
|
||||||
|
|
||||||
|
@ -194,7 +194,7 @@ int Scumm::getVerbEntrypoint(int obj, int entry) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Stop script 'script' */
|
/* Stop script 'script' */
|
||||||
void Scumm::stopScript(int script) {
|
void ScummEngine::stopScript(int script) {
|
||||||
ScriptSlot *ss;
|
ScriptSlot *ss;
|
||||||
NestedScript *nest;
|
NestedScript *nest;
|
||||||
int i, num;
|
int i, num;
|
||||||
|
@ -231,7 +231,7 @@ void Scumm::stopScript(int script) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Stop an object script 'script'*/
|
/* Stop an object script 'script'*/
|
||||||
void Scumm::stopObjectScript(int script) {
|
void ScummEngine::stopObjectScript(int script) {
|
||||||
ScriptSlot *ss;
|
ScriptSlot *ss;
|
||||||
NestedScript *nest;
|
NestedScript *nest;
|
||||||
int i, num;
|
int i, num;
|
||||||
|
@ -268,7 +268,7 @@ void Scumm::stopObjectScript(int script) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Return a free script slot */
|
/* Return a free script slot */
|
||||||
int Scumm::getScriptSlot() {
|
int ScummEngine::getScriptSlot() {
|
||||||
ScriptSlot *ss;
|
ScriptSlot *ss;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
@ -282,7 +282,7 @@ int Scumm::getScriptSlot() {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Run script 'script' nested - eg, within the parent script.*/
|
/* Run script 'script' nested - eg, within the parent script.*/
|
||||||
void Scumm::runScriptNested(int script) {
|
void ScummEngine::runScriptNested(int script) {
|
||||||
NestedScript *nest;
|
NestedScript *nest;
|
||||||
ScriptSlot *slot;
|
ScriptSlot *slot;
|
||||||
|
|
||||||
|
@ -329,7 +329,7 @@ void Scumm::runScriptNested(int script) {
|
||||||
_currentScript = 0xFF;
|
_currentScript = 0xFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::updateScriptPtr() {
|
void ScummEngine::updateScriptPtr() {
|
||||||
if (_currentScript == 0xFF)
|
if (_currentScript == 0xFF)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -337,7 +337,7 @@ void Scumm::updateScriptPtr() {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Get the code pointer to a script */
|
/* Get the code pointer to a script */
|
||||||
void Scumm::getScriptBaseAddress() {
|
void ScummEngine::getScriptBaseAddress() {
|
||||||
ScriptSlot *ss;
|
ScriptSlot *ss;
|
||||||
int idx;
|
int idx;
|
||||||
|
|
||||||
|
@ -386,14 +386,14 @@ void Scumm::getScriptBaseAddress() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Scumm::getScriptEntryPoint() {
|
void ScummEngine::getScriptEntryPoint() {
|
||||||
if (_currentScript == 0xFF)
|
if (_currentScript == 0xFF)
|
||||||
return;
|
return;
|
||||||
_scriptPointer = _scriptOrgPointer + vm.slot[_currentScript].offs;
|
_scriptPointer = _scriptOrgPointer + vm.slot[_currentScript].offs;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Execute a script - Read opcode, and execute it from the table */
|
/* Execute a script - Read opcode, and execute it from the table */
|
||||||
void Scumm::executeScript() {
|
void ScummEngine::executeScript() {
|
||||||
int c;
|
int c;
|
||||||
while (_currentScript != 0xFF) {
|
while (_currentScript != 0xFF) {
|
||||||
|
|
||||||
|
@ -422,7 +422,7 @@ void Scumm::executeScript() {
|
||||||
CHECK_HEAP;
|
CHECK_HEAP;
|
||||||
}
|
}
|
||||||
|
|
||||||
byte Scumm::fetchScriptByte() {
|
byte ScummEngine::fetchScriptByte() {
|
||||||
if (*_lastCodePtr + sizeof(MemBlkHeader) != _scriptOrgPointer) {
|
if (*_lastCodePtr + sizeof(MemBlkHeader) != _scriptOrgPointer) {
|
||||||
uint32 oldoffs = _scriptPointer - _scriptOrgPointer;
|
uint32 oldoffs = _scriptPointer - _scriptOrgPointer;
|
||||||
getScriptBaseAddress();
|
getScriptBaseAddress();
|
||||||
|
@ -431,7 +431,7 @@ byte Scumm::fetchScriptByte() {
|
||||||
return *_scriptPointer++;
|
return *_scriptPointer++;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint Scumm::fetchScriptWord() {
|
uint ScummEngine::fetchScriptWord() {
|
||||||
int a;
|
int a;
|
||||||
if (*_lastCodePtr + sizeof(MemBlkHeader) != _scriptOrgPointer) {
|
if (*_lastCodePtr + sizeof(MemBlkHeader) != _scriptOrgPointer) {
|
||||||
uint32 oldoffs = _scriptPointer - _scriptOrgPointer;
|
uint32 oldoffs = _scriptPointer - _scriptOrgPointer;
|
||||||
|
@ -443,11 +443,11 @@ uint Scumm::fetchScriptWord() {
|
||||||
return a;
|
return a;
|
||||||
}
|
}
|
||||||
|
|
||||||
int Scumm::fetchScriptWordSigned() {
|
int ScummEngine::fetchScriptWordSigned() {
|
||||||
return (int16)fetchScriptWord();
|
return (int16)fetchScriptWord();
|
||||||
}
|
}
|
||||||
|
|
||||||
int Scumm::readVar(uint var) {
|
int ScummEngine::readVar(uint var) {
|
||||||
int a;
|
int a;
|
||||||
#if defined(BYPASS_COPY_PROT)
|
#if defined(BYPASS_COPY_PROT)
|
||||||
static byte copyprotbypassed = false;
|
static byte copyprotbypassed = false;
|
||||||
|
@ -529,7 +529,7 @@ int Scumm::readVar(uint var) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::writeVar(uint var, int value) {
|
void ScummEngine::writeVar(uint var, int value) {
|
||||||
if (!(var & 0xF000)) {
|
if (!(var & 0xF000)) {
|
||||||
checkRange(_numVariables - 1, 0, var, "Variable %d out of range(w)");
|
checkRange(_numVariables - 1, 0, var, "Variable %d out of range(w)");
|
||||||
|
|
||||||
|
@ -592,7 +592,7 @@ void Scumm::writeVar(uint var, int value) {
|
||||||
error("Illegal varbits (w)");
|
error("Illegal varbits (w)");
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::getResultPos() {
|
void ScummEngine::getResultPos() {
|
||||||
int a;
|
int a;
|
||||||
|
|
||||||
_resultVarNumber = fetchScriptWord();
|
_resultVarNumber = fetchScriptWord();
|
||||||
|
@ -607,16 +607,16 @@ void Scumm::getResultPos() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::setResult(int value) {
|
void ScummEngine::setResult(int value) {
|
||||||
writeVar(_resultVarNumber, value);
|
writeVar(_resultVarNumber, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::push(int a) {
|
void ScummEngine::push(int a) {
|
||||||
assert(_scummStackPos >= 0 && _scummStackPos < ARRAYSIZE(_scummStack));
|
assert(_scummStackPos >= 0 && _scummStackPos < ARRAYSIZE(_scummStack));
|
||||||
_scummStack[_scummStackPos++] = a;
|
_scummStack[_scummStackPos++] = a;
|
||||||
}
|
}
|
||||||
|
|
||||||
int Scumm::pop() {
|
int ScummEngine::pop() {
|
||||||
if (_scummStackPos < 1 || _scummStackPos > ARRAYSIZE(_scummStack)) {
|
if (_scummStackPos < 1 || _scummStackPos > ARRAYSIZE(_scummStack)) {
|
||||||
error("No items on stack to pop() for %s (0x%X) at [%d-%d]", getOpcodeDesc(_opcode), _opcode, _roomResource, vm.slot[_currentScript].number);
|
error("No items on stack to pop() for %s (0x%X) at [%d-%d]", getOpcodeDesc(_opcode), _opcode, _roomResource, vm.slot[_currentScript].number);
|
||||||
}
|
}
|
||||||
|
@ -624,7 +624,7 @@ int Scumm::pop() {
|
||||||
return _scummStack[--_scummStackPos];
|
return _scummStack[--_scummStackPos];
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::stopObjectCode() {
|
void ScummEngine::stopObjectCode() {
|
||||||
ScriptSlot *ss;
|
ScriptSlot *ss;
|
||||||
|
|
||||||
ss = &vm.slot[_currentScript];
|
ss = &vm.slot[_currentScript];
|
||||||
|
@ -649,7 +649,7 @@ void Scumm::stopObjectCode() {
|
||||||
_currentScript = 0xFF;
|
_currentScript = 0xFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::runInventoryScript(int i) {
|
void ScummEngine::runInventoryScript(int i) {
|
||||||
if (_version <= 2) {
|
if (_version <= 2) {
|
||||||
redrawV2Inventory();
|
redrawV2Inventory();
|
||||||
} else {
|
} else {
|
||||||
|
@ -661,7 +661,7 @@ void Scumm::runInventoryScript(int i) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::freezeScripts(int flag) {
|
void ScummEngine::freezeScripts(int flag) {
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (_version <= 2) {
|
if (_version <= 2) {
|
||||||
|
@ -690,7 +690,7 @@ void Scumm::freezeScripts(int flag) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::unfreezeScripts() {
|
void ScummEngine::unfreezeScripts() {
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (_version <= 2) {
|
if (_version <= 2) {
|
||||||
|
@ -716,7 +716,7 @@ void Scumm::unfreezeScripts() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Scumm::runAllScripts() {
|
void ScummEngine::runAllScripts() {
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 0; i < NUM_SCRIPT_SLOT; i++)
|
for (i = 0; i < NUM_SCRIPT_SLOT; i++)
|
||||||
|
@ -737,7 +737,7 @@ void Scumm::runAllScripts() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::runExitScript() {
|
void ScummEngine::runExitScript() {
|
||||||
if (_version > 2 && VAR(VAR_EXIT_SCRIPT))
|
if (_version > 2 && VAR(VAR_EXIT_SCRIPT))
|
||||||
runScript(VAR(VAR_EXIT_SCRIPT), 0, 0, 0);
|
runScript(VAR(VAR_EXIT_SCRIPT), 0, 0, 0);
|
||||||
if (_EXCD_offs) {
|
if (_EXCD_offs) {
|
||||||
|
@ -770,7 +770,7 @@ void Scumm::runExitScript() {
|
||||||
runScript(VAR(VAR_EXIT_SCRIPT2), 0, 0, 0);
|
runScript(VAR(VAR_EXIT_SCRIPT2), 0, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::runEntryScript() {
|
void ScummEngine::runEntryScript() {
|
||||||
if (_version > 2 && VAR(VAR_ENTRY_SCRIPT))
|
if (_version > 2 && VAR(VAR_ENTRY_SCRIPT))
|
||||||
runScript(VAR(VAR_ENTRY_SCRIPT), 0, 0, 0);
|
runScript(VAR(VAR_ENTRY_SCRIPT), 0, 0, 0);
|
||||||
if (_ENCD_offs) {
|
if (_ENCD_offs) {
|
||||||
|
@ -789,7 +789,7 @@ void Scumm::runEntryScript() {
|
||||||
runScript(VAR(VAR_ENTRY_SCRIPT2), 0, 0, 0);
|
runScript(VAR(VAR_ENTRY_SCRIPT2), 0, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::killScriptsAndResources() {
|
void ScummEngine::killScriptsAndResources() {
|
||||||
ScriptSlot *ss;
|
ScriptSlot *ss;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
@ -823,14 +823,14 @@ void Scumm::killScriptsAndResources() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::killAllScriptsExceptCurrent() {
|
void ScummEngine::killAllScriptsExceptCurrent() {
|
||||||
for (int i = 0; i < NUM_SCRIPT_SLOT; i++) {
|
for (int i = 0; i < NUM_SCRIPT_SLOT; i++) {
|
||||||
if (i != _currentScript)
|
if (i != _currentScript)
|
||||||
vm.slot[i].status = ssDead;
|
vm.slot[i].status = ssDead;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::doSentence(int verb, int objectA, int objectB) {
|
void ScummEngine::doSentence(int verb, int objectA, int objectB) {
|
||||||
SentenceTab *st;
|
SentenceTab *st;
|
||||||
|
|
||||||
if (_version >= 7) {
|
if (_version >= 7) {
|
||||||
|
@ -858,7 +858,7 @@ void Scumm::doSentence(int verb, int objectA, int objectB) {
|
||||||
st->freezeCount = 0;
|
st->freezeCount = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::checkAndRunSentenceScript() {
|
void ScummEngine::checkAndRunSentenceScript() {
|
||||||
int i;
|
int i;
|
||||||
int localParamList[16];
|
int localParamList[16];
|
||||||
const ScriptSlot *ss;
|
const ScriptSlot *ss;
|
||||||
|
@ -900,7 +900,7 @@ void Scumm::checkAndRunSentenceScript() {
|
||||||
runScript(sentenceScript, 0, 0, localParamList);
|
runScript(sentenceScript, 0, 0, localParamList);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::runInputScript(int a, int cmd, int mode) {
|
void ScummEngine::runInputScript(int a, int cmd, int mode) {
|
||||||
int args[16];
|
int args[16];
|
||||||
int verbScript;
|
int verbScript;
|
||||||
|
|
||||||
|
@ -927,7 +927,7 @@ void Scumm::runInputScript(int a, int cmd, int mode) {
|
||||||
runScript(verbScript, 0, 0, args);
|
runScript(verbScript, 0, 0, args);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::decreaseScriptDelay(int amount) {
|
void ScummEngine::decreaseScriptDelay(int amount) {
|
||||||
ScriptSlot *ss = vm.slot;
|
ScriptSlot *ss = vm.slot;
|
||||||
int i;
|
int i;
|
||||||
for (i = 0; i < NUM_SCRIPT_SLOT; i++, ss++) {
|
for (i = 0; i < NUM_SCRIPT_SLOT; i++, ss++) {
|
||||||
|
@ -941,7 +941,7 @@ void Scumm::decreaseScriptDelay(int amount) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Scumm::isScriptInUse(int script) const {
|
bool ScummEngine::isScriptInUse(int script) const {
|
||||||
int i;
|
int i;
|
||||||
const ScriptSlot *ss = vm.slot;
|
const ScriptSlot *ss = vm.slot;
|
||||||
for (i = 0; i < NUM_SCRIPT_SLOT; i++, ss++)
|
for (i = 0; i < NUM_SCRIPT_SLOT; i++, ss++)
|
||||||
|
@ -950,7 +950,7 @@ bool Scumm::isScriptInUse(int script) const {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Scumm::isScriptRunning(int script) const {
|
bool ScummEngine::isScriptRunning(int script) const {
|
||||||
int i;
|
int i;
|
||||||
const ScriptSlot *ss = vm.slot;
|
const ScriptSlot *ss = vm.slot;
|
||||||
for (i = 0; i < NUM_SCRIPT_SLOT; i++, ss++)
|
for (i = 0; i < NUM_SCRIPT_SLOT; i++, ss++)
|
||||||
|
@ -959,7 +959,7 @@ bool Scumm::isScriptRunning(int script) const {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Scumm::isRoomScriptRunning(int script) const {
|
bool ScummEngine::isRoomScriptRunning(int script) const {
|
||||||
int i;
|
int i;
|
||||||
const ScriptSlot *ss = vm.slot;
|
const ScriptSlot *ss = vm.slot;
|
||||||
for (i = 0; i < NUM_SCRIPT_SLOT; i++, ss++)
|
for (i = 0; i < NUM_SCRIPT_SLOT; i++, ss++)
|
||||||
|
@ -968,7 +968,7 @@ bool Scumm::isRoomScriptRunning(int script) const {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
int Scumm::defineArray(int array, int type, int dim2, int dim1) {
|
int ScummEngine::defineArray(int array, int type, int dim2, int dim1) {
|
||||||
int id;
|
int id;
|
||||||
int size;
|
int size;
|
||||||
ArrayHeader *ah;
|
ArrayHeader *ah;
|
||||||
|
@ -1015,7 +1015,7 @@ int Scumm::defineArray(int array, int type, int dim2, int dim1) {
|
||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::nukeArray(int a) {
|
void ScummEngine::nukeArray(int a) {
|
||||||
int data;
|
int data;
|
||||||
|
|
||||||
data = readVar(a);
|
data = readVar(a);
|
||||||
|
@ -1026,7 +1026,7 @@ void Scumm::nukeArray(int a) {
|
||||||
writeVar(a, 0);
|
writeVar(a, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
int Scumm::getArrayId() {
|
int ScummEngine::getArrayId() {
|
||||||
byte **addr = _baseArrays;
|
byte **addr = _baseArrays;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
@ -1038,7 +1038,7 @@ int Scumm::getArrayId() {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::copyScriptString(byte *dst) {
|
void ScummEngine::copyScriptString(byte *dst) {
|
||||||
int len = resStrLen(_scriptPointer) + 1;
|
int len = resStrLen(_scriptPointer) + 1;
|
||||||
while (len--)
|
while (len--)
|
||||||
*dst++ = fetchScriptByte();
|
*dst++ = fetchScriptByte();
|
||||||
|
@ -1050,7 +1050,7 @@ void Scumm::copyScriptString(byte *dst) {
|
||||||
// special characters embedded into the string. The reason for this function is that
|
// special characters embedded into the string. The reason for this function is that
|
||||||
// sometimes this embedded data contains zero bytes, thus we can't just use strlen.
|
// sometimes this embedded data contains zero bytes, thus we can't just use strlen.
|
||||||
//
|
//
|
||||||
int Scumm::resStrLen(const byte *src) const {
|
int ScummEngine::resStrLen(const byte *src) const {
|
||||||
int num = 0;
|
int num = 0;
|
||||||
byte chr;
|
byte chr;
|
||||||
if (src == NULL)
|
if (src == NULL)
|
||||||
|
@ -1075,7 +1075,7 @@ int Scumm::resStrLen(const byte *src) const {
|
||||||
return num;
|
return num;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::beginCutscene(int *args) {
|
void ScummEngine::beginCutscene(int *args) {
|
||||||
int scr = _currentScript;
|
int scr = _currentScript;
|
||||||
vm.slot[scr].cutsceneOverride++;
|
vm.slot[scr].cutsceneOverride++;
|
||||||
|
|
||||||
|
@ -1092,7 +1092,7 @@ void Scumm::beginCutscene(int *args) {
|
||||||
vm.cutSceneScriptIndex = 0xFF;
|
vm.cutSceneScriptIndex = 0xFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::endCutscene() {
|
void ScummEngine::endCutscene() {
|
||||||
ScriptSlot *ss = &vm.slot[_currentScript];
|
ScriptSlot *ss = &vm.slot[_currentScript];
|
||||||
int args[16];
|
int args[16];
|
||||||
|
|
||||||
|
@ -1115,7 +1115,7 @@ void Scumm::endCutscene() {
|
||||||
runScript(VAR(VAR_CUTSCENE_END_SCRIPT), 0, 0, args);
|
runScript(VAR(VAR_CUTSCENE_END_SCRIPT), 0, 0, args);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::abortCutscene() {
|
void ScummEngine::abortCutscene() {
|
||||||
uint32 offs = vm.cutScenePtr[vm.cutSceneStackPointer];
|
uint32 offs = vm.cutScenePtr[vm.cutSceneStackPointer];
|
||||||
if (offs) {
|
if (offs) {
|
||||||
ScriptSlot *ss = &vm.slot[vm.cutSceneScript[vm.cutSceneStackPointer]];
|
ScriptSlot *ss = &vm.slot[vm.cutSceneScript[vm.cutSceneStackPointer]];
|
||||||
|
@ -1131,7 +1131,7 @@ void Scumm::abortCutscene() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::beginOverride() {
|
void ScummEngine::beginOverride() {
|
||||||
int idx;
|
int idx;
|
||||||
|
|
||||||
idx = vm.cutSceneStackPointer;
|
idx = vm.cutSceneStackPointer;
|
||||||
|
@ -1150,7 +1150,7 @@ void Scumm::beginOverride() {
|
||||||
VAR(VAR_OVERRIDE) = 0;
|
VAR(VAR_OVERRIDE) = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::endOverride() {
|
void ScummEngine::endOverride() {
|
||||||
int idx;
|
int idx;
|
||||||
|
|
||||||
idx = vm.cutSceneStackPointer;
|
idx = vm.cutSceneStackPointer;
|
||||||
|
|
|
@ -29,9 +29,9 @@
|
||||||
#include "scumm/sound.h"
|
#include "scumm/sound.h"
|
||||||
#include "scumm/verbs.h"
|
#include "scumm/verbs.h"
|
||||||
|
|
||||||
#define OPCODE(x) { &Scumm_v2::x, #x }
|
#define OPCODE(x) { &ScummEngine_v2::x, #x }
|
||||||
|
|
||||||
void Scumm_v2::setupOpcodes() {
|
void ScummEngine_v2::setupOpcodes() {
|
||||||
static const OpcodeEntryV2 opcodes[256] = {
|
static const OpcodeEntryV2 opcodes[256] = {
|
||||||
/* 00 */
|
/* 00 */
|
||||||
OPCODE(o5_stopObjectCode),
|
OPCODE(o5_stopObjectCode),
|
||||||
|
@ -360,22 +360,22 @@ void Scumm_v2::setupOpcodes() {
|
||||||
|
|
||||||
#define SENTENCE_SCRIPT 2
|
#define SENTENCE_SCRIPT 2
|
||||||
|
|
||||||
void Scumm_v2::executeOpcode(byte i) {
|
void ScummEngine_v2::executeOpcode(byte i) {
|
||||||
OpcodeProcV2 op = _opcodesV2[i].proc;
|
OpcodeProcV2 op = _opcodesV2[i].proc;
|
||||||
(this->*op) ();
|
(this->*op) ();
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *Scumm_v2::getOpcodeDesc(byte i) {
|
const char *ScummEngine_v2::getOpcodeDesc(byte i) {
|
||||||
return _opcodesV2[i].desc;
|
return _opcodesV2[i].desc;
|
||||||
}
|
}
|
||||||
|
|
||||||
int Scumm_v2::getVar() {
|
int ScummEngine_v2::getVar() {
|
||||||
return readVar(fetchScriptByte());
|
return readVar(fetchScriptByte());
|
||||||
}
|
}
|
||||||
|
|
||||||
int v1_mm_actor_speech_color[] = {1, 7, 2, 14, 8, 1, 3, 7, 7, 12, 1, 13, 1, 4, 5, 5, 4, 3, 1, 5, 1, 1, 1, 7, 7, 0};
|
int v1_mm_actor_speech_color[] = {1, 7, 2, 14, 8, 1, 3, 7, 7, 12, 1, 13, 1, 4, 5, 5, 4, 3, 1, 5, 1, 1, 1, 7, 7, 0};
|
||||||
|
|
||||||
void Scumm_v2::decodeParseString() {
|
void ScummEngine_v2::decodeParseString() {
|
||||||
byte buffer[512];
|
byte buffer[512];
|
||||||
byte *ptr = buffer;
|
byte *ptr = buffer;
|
||||||
byte c;
|
byte c;
|
||||||
|
@ -442,7 +442,7 @@ void Scumm_v2::decodeParseString() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int Scumm_v2::readVar(uint var) {
|
int ScummEngine_v2::readVar(uint var) {
|
||||||
if (var >= 14 && var <= 16)
|
if (var >= 14 && var <= 16)
|
||||||
var = _scummVars[var];
|
var = _scummVars[var];
|
||||||
|
|
||||||
|
@ -451,79 +451,79 @@ int Scumm_v2::readVar(uint var) {
|
||||||
return _scummVars[var];
|
return _scummVars[var];
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::writeVar(uint var, int value) {
|
void ScummEngine_v2::writeVar(uint var, int value) {
|
||||||
checkRange(_numVariables - 1, 0, var, "Variable %d out of range(r)");
|
checkRange(_numVariables - 1, 0, var, "Variable %d out of range(r)");
|
||||||
debug(6, "writeVar(%d) = %d", var, value);
|
debug(6, "writeVar(%d) = %d", var, value);
|
||||||
_scummVars[var] = value;
|
_scummVars[var] = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::getResultPosIndirect() {
|
void ScummEngine_v2::getResultPosIndirect() {
|
||||||
_resultVarNumber = _scummVars[fetchScriptByte()];
|
_resultVarNumber = _scummVars[fetchScriptByte()];
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::getResultPos() {
|
void ScummEngine_v2::getResultPos() {
|
||||||
_resultVarNumber = fetchScriptByte();
|
_resultVarNumber = fetchScriptByte();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::setStateCommon(byte type) {
|
void ScummEngine_v2::setStateCommon(byte type) {
|
||||||
int obj = getVarOrDirectWord(0x80);
|
int obj = getVarOrDirectWord(0x80);
|
||||||
putState(obj, getState(obj) | type);
|
putState(obj, getState(obj) | type);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::clearStateCommon(byte type) {
|
void ScummEngine_v2::clearStateCommon(byte type) {
|
||||||
int obj = getVarOrDirectWord(0x80);
|
int obj = getVarOrDirectWord(0x80);
|
||||||
putState(obj, getState(obj) & ~type);
|
putState(obj, getState(obj) & ~type);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_setState08() {
|
void ScummEngine_v2::o2_setState08() {
|
||||||
int obj = getVarOrDirectWord(0x80);
|
int obj = getVarOrDirectWord(0x80);
|
||||||
putState(obj, getState(obj) | 0x08);
|
putState(obj, getState(obj) | 0x08);
|
||||||
removeObjectFromRoom(obj);
|
removeObjectFromRoom(obj);
|
||||||
clearDrawObjectQueue();
|
clearDrawObjectQueue();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_clearState08() {
|
void ScummEngine_v2::o2_clearState08() {
|
||||||
int obj = getVarOrDirectWord(0x80);
|
int obj = getVarOrDirectWord(0x80);
|
||||||
putState(obj, getState(obj) & ~0x08);
|
putState(obj, getState(obj) & ~0x08);
|
||||||
removeObjectFromRoom(obj);
|
removeObjectFromRoom(obj);
|
||||||
clearDrawObjectQueue();
|
clearDrawObjectQueue();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_setState04() {
|
void ScummEngine_v2::o2_setState04() {
|
||||||
setStateCommon(0x04);
|
setStateCommon(0x04);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_clearState04() {
|
void ScummEngine_v2::o2_clearState04() {
|
||||||
clearStateCommon(0x04);
|
clearStateCommon(0x04);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_setState02() {
|
void ScummEngine_v2::o2_setState02() {
|
||||||
setStateCommon(0x02);
|
setStateCommon(0x02);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_clearState02() {
|
void ScummEngine_v2::o2_clearState02() {
|
||||||
clearStateCommon(0x02);
|
clearStateCommon(0x02);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_setState01() {
|
void ScummEngine_v2::o2_setState01() {
|
||||||
setStateCommon(0x01);
|
setStateCommon(0x01);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_clearState01() {
|
void ScummEngine_v2::o2_clearState01() {
|
||||||
clearStateCommon(0x01);
|
clearStateCommon(0x01);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_assignVarWordIndirect() {
|
void ScummEngine_v2::o2_assignVarWordIndirect() {
|
||||||
getResultPosIndirect();
|
getResultPosIndirect();
|
||||||
setResult(getVarOrDirectWord(0x80));
|
setResult(getVarOrDirectWord(0x80));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_assignVarByte() {
|
void ScummEngine_v2::o2_assignVarByte() {
|
||||||
getResultPos();
|
getResultPos();
|
||||||
setResult(fetchScriptByte());
|
setResult(fetchScriptByte());
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_setObjPreposition() {
|
void ScummEngine_v2::o2_setObjPreposition() {
|
||||||
int obj = getVarOrDirectWord(0x80);
|
int obj = getVarOrDirectWord(0x80);
|
||||||
int unk = fetchScriptByte();
|
int unk = fetchScriptByte();
|
||||||
|
|
||||||
|
@ -535,7 +535,7 @@ void Scumm_v2::o2_setObjPreposition() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_getObjPreposition() {
|
void ScummEngine_v2::o2_getObjPreposition() {
|
||||||
getResultPos();
|
getResultPos();
|
||||||
int obj = getVarOrDirectWord(0x80);
|
int obj = getVarOrDirectWord(0x80);
|
||||||
|
|
||||||
|
@ -547,7 +547,7 @@ void Scumm_v2::o2_getObjPreposition() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_setBitVar() {
|
void ScummEngine_v2::o2_setBitVar() {
|
||||||
int var = fetchScriptWord();
|
int var = fetchScriptWord();
|
||||||
byte a = getVarOrDirectByte(0x80);
|
byte a = getVarOrDirectByte(0x80);
|
||||||
|
|
||||||
|
@ -562,7 +562,7 @@ void Scumm_v2::o2_setBitVar() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_getBitVar() {
|
void ScummEngine_v2::o2_getBitVar() {
|
||||||
getResultPos();
|
getResultPos();
|
||||||
int var = fetchScriptWord();
|
int var = fetchScriptWord();
|
||||||
byte a = getVarOrDirectByte(0x80);
|
byte a = getVarOrDirectByte(0x80);
|
||||||
|
@ -574,7 +574,7 @@ void Scumm_v2::o2_getBitVar() {
|
||||||
setResult((_scummVars[bit_var] & (1 << bit_offset)) ? 1 : 0);
|
setResult((_scummVars[bit_var] & (1 << bit_offset)) ? 1 : 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::ifStateCommon(byte type) {
|
void ScummEngine_v2::ifStateCommon(byte type) {
|
||||||
int obj = getVarOrDirectWord(0x80);
|
int obj = getVarOrDirectWord(0x80);
|
||||||
|
|
||||||
if ((getState(obj) & type) == 0)
|
if ((getState(obj) & type) == 0)
|
||||||
|
@ -583,7 +583,7 @@ void Scumm_v2::ifStateCommon(byte type) {
|
||||||
ignoreScriptWord();
|
ignoreScriptWord();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::ifNotStateCommon(byte type) {
|
void ScummEngine_v2::ifNotStateCommon(byte type) {
|
||||||
int obj = getVarOrDirectWord(0x80);
|
int obj = getVarOrDirectWord(0x80);
|
||||||
|
|
||||||
if ((getState(obj) & type) != 0)
|
if ((getState(obj) & type) != 0)
|
||||||
|
@ -592,67 +592,67 @@ void Scumm_v2::ifNotStateCommon(byte type) {
|
||||||
ignoreScriptWord();
|
ignoreScriptWord();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_ifState08() {
|
void ScummEngine_v2::o2_ifState08() {
|
||||||
ifStateCommon(0x08);
|
ifStateCommon(0x08);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_ifNotState08() {
|
void ScummEngine_v2::o2_ifNotState08() {
|
||||||
ifNotStateCommon(0x08);
|
ifNotStateCommon(0x08);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_ifState04() {
|
void ScummEngine_v2::o2_ifState04() {
|
||||||
ifStateCommon(0x04);
|
ifStateCommon(0x04);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_ifNotState04() {
|
void ScummEngine_v2::o2_ifNotState04() {
|
||||||
ifNotStateCommon(0x04);
|
ifNotStateCommon(0x04);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_ifState02() {
|
void ScummEngine_v2::o2_ifState02() {
|
||||||
ifStateCommon(0x02);
|
ifStateCommon(0x02);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_ifNotState02() {
|
void ScummEngine_v2::o2_ifNotState02() {
|
||||||
ifNotStateCommon(0x02);
|
ifNotStateCommon(0x02);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_ifState01() {
|
void ScummEngine_v2::o2_ifState01() {
|
||||||
ifStateCommon(0x01);
|
ifStateCommon(0x01);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_ifNotState01() {
|
void ScummEngine_v2::o2_ifNotState01() {
|
||||||
ifNotStateCommon(0x01);
|
ifNotStateCommon(0x01);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_addIndirect() {
|
void ScummEngine_v2::o2_addIndirect() {
|
||||||
int a;
|
int a;
|
||||||
getResultPosIndirect();
|
getResultPosIndirect();
|
||||||
a = getVarOrDirectWord(0x80);
|
a = getVarOrDirectWord(0x80);
|
||||||
_scummVars[_resultVarNumber] += a;
|
_scummVars[_resultVarNumber] += a;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_subIndirect() {
|
void ScummEngine_v2::o2_subIndirect() {
|
||||||
int a;
|
int a;
|
||||||
getResultPosIndirect();
|
getResultPosIndirect();
|
||||||
a = getVarOrDirectWord(0x80);
|
a = getVarOrDirectWord(0x80);
|
||||||
_scummVars[_resultVarNumber] -= a;
|
_scummVars[_resultVarNumber] -= a;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_add() {
|
void ScummEngine_v2::o2_add() {
|
||||||
int a;
|
int a;
|
||||||
getResultPos();
|
getResultPos();
|
||||||
a = getVarOrDirectWord(0x80);
|
a = getVarOrDirectWord(0x80);
|
||||||
_scummVars[_resultVarNumber] += a;
|
_scummVars[_resultVarNumber] += a;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_subtract() {
|
void ScummEngine_v2::o2_subtract() {
|
||||||
int a;
|
int a;
|
||||||
getResultPos();
|
getResultPos();
|
||||||
a = getVarOrDirectWord(0x80);
|
a = getVarOrDirectWord(0x80);
|
||||||
_scummVars[_resultVarNumber] -= a;
|
_scummVars[_resultVarNumber] -= a;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_waitForActor() {
|
void ScummEngine_v2::o2_waitForActor() {
|
||||||
Actor *a = derefActor(getVarOrDirectByte(0x80), "o2_waitForActor");
|
Actor *a = derefActor(getVarOrDirectByte(0x80), "o2_waitForActor");
|
||||||
if (a->moving) {
|
if (a->moving) {
|
||||||
_scriptPointer -= 2;
|
_scriptPointer -= 2;
|
||||||
|
@ -660,7 +660,7 @@ void Scumm_v2::o2_waitForActor() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_waitForMessage() {
|
void ScummEngine_v2::o2_waitForMessage() {
|
||||||
|
|
||||||
if (VAR(VAR_HAVE_MSG)) {
|
if (VAR(VAR_HAVE_MSG)) {
|
||||||
_scriptPointer--;
|
_scriptPointer--;
|
||||||
|
@ -668,7 +668,7 @@ void Scumm_v2::o2_waitForMessage() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_waitForSentence() {
|
void ScummEngine_v2::o2_waitForSentence() {
|
||||||
if (!_sentenceNum && !isScriptInUse(SENTENCE_SCRIPT))
|
if (!_sentenceNum && !isScriptInUse(SENTENCE_SCRIPT))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -676,7 +676,7 @@ void Scumm_v2::o2_waitForSentence() {
|
||||||
o5_breakHere();
|
o5_breakHere();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_actorSet() {
|
void ScummEngine_v2::o2_actorSet() {
|
||||||
int act = getVarOrDirectByte(0x80);
|
int act = getVarOrDirectByte(0x80);
|
||||||
int arg = getVarOrDirectByte(0x40);
|
int arg = getVarOrDirectByte(0x40);
|
||||||
Actor *a;
|
Actor *a;
|
||||||
|
@ -721,11 +721,11 @@ void Scumm_v2::o2_actorSet() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_restart() {
|
void ScummEngine_v2::o2_restart() {
|
||||||
restart();
|
restart();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_drawObject() {
|
void ScummEngine_v2::o2_drawObject() {
|
||||||
int obj, idx, i;
|
int obj, idx, i;
|
||||||
ObjectData *od;
|
ObjectData *od;
|
||||||
uint16 x, y, w, h;
|
uint16 x, y, w, h;
|
||||||
|
@ -762,7 +762,7 @@ void Scumm_v2::o2_drawObject() {
|
||||||
putState(obj, getState(od->obj_nr) | 0x08);
|
putState(obj, getState(od->obj_nr) | 0x08);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_resourceRoutines() {
|
void ScummEngine_v2::o2_resourceRoutines() {
|
||||||
const ResTypes resTypes[] = {
|
const ResTypes resTypes[] = {
|
||||||
rtNumTypes, // Invalid
|
rtNumTypes, // Invalid
|
||||||
rtNumTypes, // Invalid
|
rtNumTypes, // Invalid
|
||||||
|
@ -792,7 +792,7 @@ void Scumm_v2::o2_resourceRoutines() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_verbOps() {
|
void ScummEngine_v2::o2_verbOps() {
|
||||||
int verb = fetchScriptByte();
|
int verb = fetchScriptByte();
|
||||||
int slot, state;
|
int slot, state;
|
||||||
|
|
||||||
|
@ -880,7 +880,7 @@ void Scumm_v2::o2_verbOps() {
|
||||||
verbMouseOver(0);
|
verbMouseOver(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_doSentence() {
|
void ScummEngine_v2::o2_doSentence() {
|
||||||
int a;
|
int a;
|
||||||
SentenceTab *st;
|
SentenceTab *st;
|
||||||
|
|
||||||
|
@ -914,7 +914,7 @@ void Scumm_v2::o2_doSentence() {
|
||||||
_sentenceNum--;
|
_sentenceNum--;
|
||||||
|
|
||||||
if (st->verb == 254) {
|
if (st->verb == 254) {
|
||||||
Scumm::stopObjectScript(st->objectA);
|
ScummEngine::stopObjectScript(st->objectA);
|
||||||
} else {
|
} else {
|
||||||
bool isBackgroundScript;
|
bool isBackgroundScript;
|
||||||
bool isSpecialVerb;
|
bool isSpecialVerb;
|
||||||
|
@ -970,7 +970,7 @@ void Scumm_v2::o2_doSentence() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_drawSentence() {
|
void ScummEngine_v2::o2_drawSentence() {
|
||||||
Common::Rect sentenceline;
|
Common::Rect sentenceline;
|
||||||
static char sentence[256];
|
static char sentence[256];
|
||||||
const byte *temp;
|
const byte *temp;
|
||||||
|
@ -1065,7 +1065,7 @@ void Scumm_v2::o2_drawSentence() {
|
||||||
drawString(2);
|
drawString(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_ifClassOfIs() {
|
void ScummEngine_v2::o2_ifClassOfIs() {
|
||||||
int obj = getVarOrDirectWord(0x80);
|
int obj = getVarOrDirectWord(0x80);
|
||||||
int clsop = getVarOrDirectByte(0x40);
|
int clsop = getVarOrDirectByte(0x40);
|
||||||
byte *obcd = getOBCDFromObject(obj);
|
byte *obcd = getOBCDFromObject(obj);
|
||||||
|
@ -1083,7 +1083,7 @@ void Scumm_v2::o2_ifClassOfIs() {
|
||||||
ignoreScriptWord();
|
ignoreScriptWord();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_walkActorTo() {
|
void ScummEngine_v2::o2_walkActorTo() {
|
||||||
int x, y;
|
int x, y;
|
||||||
Actor *a;
|
Actor *a;
|
||||||
a = derefActor(getVarOrDirectByte(0x80), "o2_walkActorTo");
|
a = derefActor(getVarOrDirectByte(0x80), "o2_walkActorTo");
|
||||||
|
@ -1094,7 +1094,7 @@ void Scumm_v2::o2_walkActorTo() {
|
||||||
a->startWalkActor(x, y, -1);
|
a->startWalkActor(x, y, -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_putActor() {
|
void ScummEngine_v2::o2_putActor() {
|
||||||
int act = getVarOrDirectByte(0x80);
|
int act = getVarOrDirectByte(0x80);
|
||||||
int x, y;
|
int x, y;
|
||||||
Actor *a;
|
Actor *a;
|
||||||
|
@ -1107,16 +1107,16 @@ void Scumm_v2::o2_putActor() {
|
||||||
a->putActor(x, y, a->room);
|
a->putActor(x, y, a->room);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_startScript() {
|
void ScummEngine_v2::o2_startScript() {
|
||||||
int script = getVarOrDirectByte(0x80);
|
int script = getVarOrDirectByte(0x80);
|
||||||
runScript(script, 0, 0, 0);
|
runScript(script, 0, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_panCameraTo() {
|
void ScummEngine_v2::o2_panCameraTo() {
|
||||||
panCameraTo(getVarOrDirectByte(0x80) * 8, 0);
|
panCameraTo(getVarOrDirectByte(0x80) * 8, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_walkActorToObject() {
|
void ScummEngine_v2::o2_walkActorToObject() {
|
||||||
int obj;
|
int obj;
|
||||||
Actor *a;
|
Actor *a;
|
||||||
|
|
||||||
|
@ -1129,7 +1129,7 @@ void Scumm_v2::o2_walkActorToObject() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_putActorAtObject() {
|
void ScummEngine_v2::o2_putActorAtObject() {
|
||||||
int obj, x, y;
|
int obj, x, y;
|
||||||
Actor *a;
|
Actor *a;
|
||||||
|
|
||||||
|
@ -1146,14 +1146,14 @@ void Scumm_v2::o2_putActorAtObject() {
|
||||||
a->putActor(x, y, a->room);
|
a->putActor(x, y, a->room);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_getActorElevation() {
|
void ScummEngine_v2::o2_getActorElevation() {
|
||||||
getResultPos();
|
getResultPos();
|
||||||
int act = getVarOrDirectByte(0x80);
|
int act = getVarOrDirectByte(0x80);
|
||||||
Actor *a = derefActor(act, "o2_getActorElevation");
|
Actor *a = derefActor(act, "o2_getActorElevation");
|
||||||
setResult(a->elevation / 2);
|
setResult(a->elevation / 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_setActorElevation() {
|
void ScummEngine_v2::o2_setActorElevation() {
|
||||||
int act = getVarOrDirectByte(0x80);
|
int act = getVarOrDirectByte(0x80);
|
||||||
int elevation = (int8)getVarOrDirectByte(0x40);
|
int elevation = (int8)getVarOrDirectByte(0x40);
|
||||||
|
|
||||||
|
@ -1161,7 +1161,7 @@ void Scumm_v2::o2_setActorElevation() {
|
||||||
a->elevation = elevation * 2;
|
a->elevation = elevation * 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_animateActor() {
|
void ScummEngine_v2::o2_animateActor() {
|
||||||
int act = getVarOrDirectByte(0x80);
|
int act = getVarOrDirectByte(0x80);
|
||||||
int anim = getVarOrDirectByte(0x40);
|
int anim = getVarOrDirectByte(0x40);
|
||||||
|
|
||||||
|
@ -1169,7 +1169,7 @@ void Scumm_v2::o2_animateActor() {
|
||||||
a->animateActor(anim);
|
a->animateActor(anim);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_actorFromPos() {
|
void ScummEngine_v2::o2_actorFromPos() {
|
||||||
int x, y;
|
int x, y;
|
||||||
getResultPos();
|
getResultPos();
|
||||||
x = getVarOrDirectByte(0x80) * 8;
|
x = getVarOrDirectByte(0x80) * 8;
|
||||||
|
@ -1177,14 +1177,14 @@ void Scumm_v2::o2_actorFromPos() {
|
||||||
setResult(getActorFromPos(x, y));
|
setResult(getActorFromPos(x, y));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_findObject() {
|
void ScummEngine_v2::o2_findObject() {
|
||||||
getResultPos();
|
getResultPos();
|
||||||
int x = getVarOrDirectByte(0x80) * 8;
|
int x = getVarOrDirectByte(0x80) * 8;
|
||||||
int y = getVarOrDirectByte(0x40) * 2;
|
int y = getVarOrDirectByte(0x40) * 2;
|
||||||
setResult(findObject(x, y));
|
setResult(findObject(x, y));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_getActorX() {
|
void ScummEngine_v2::o2_getActorX() {
|
||||||
int a;
|
int a;
|
||||||
getResultPos();
|
getResultPos();
|
||||||
|
|
||||||
|
@ -1192,7 +1192,7 @@ void Scumm_v2::o2_getActorX() {
|
||||||
setResult(getObjX(a) / 8);
|
setResult(getObjX(a) / 8);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_getActorY() {
|
void ScummEngine_v2::o2_getActorY() {
|
||||||
int a;
|
int a;
|
||||||
getResultPos();
|
getResultPos();
|
||||||
|
|
||||||
|
@ -1200,7 +1200,7 @@ void Scumm_v2::o2_getActorY() {
|
||||||
setResult(getObjY(a) / 2);
|
setResult(getObjY(a) / 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_isGreater() {
|
void ScummEngine_v2::o2_isGreater() {
|
||||||
uint16 a = getVar();
|
uint16 a = getVar();
|
||||||
uint16 b = getVarOrDirectWord(0x80);
|
uint16 b = getVarOrDirectWord(0x80);
|
||||||
if (b > a)
|
if (b > a)
|
||||||
|
@ -1209,7 +1209,7 @@ void Scumm_v2::o2_isGreater() {
|
||||||
o5_jumpRelative();
|
o5_jumpRelative();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_isGreaterEqual() {
|
void ScummEngine_v2::o2_isGreaterEqual() {
|
||||||
uint16 a = getVar();
|
uint16 a = getVar();
|
||||||
uint16 b = getVarOrDirectWord(0x80);
|
uint16 b = getVarOrDirectWord(0x80);
|
||||||
if (b >= a)
|
if (b >= a)
|
||||||
|
@ -1218,7 +1218,7 @@ void Scumm_v2::o2_isGreaterEqual() {
|
||||||
o5_jumpRelative();
|
o5_jumpRelative();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_isLess() {
|
void ScummEngine_v2::o2_isLess() {
|
||||||
uint16 a = getVar();
|
uint16 a = getVar();
|
||||||
uint16 b = getVarOrDirectWord(0x80);
|
uint16 b = getVarOrDirectWord(0x80);
|
||||||
|
|
||||||
|
@ -1228,7 +1228,7 @@ void Scumm_v2::o2_isLess() {
|
||||||
o5_jumpRelative();
|
o5_jumpRelative();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_isLessEqual() {
|
void ScummEngine_v2::o2_isLessEqual() {
|
||||||
uint16 a = getVar();
|
uint16 a = getVar();
|
||||||
uint16 b = getVarOrDirectWord(0x80);
|
uint16 b = getVarOrDirectWord(0x80);
|
||||||
if (b <= a)
|
if (b <= a)
|
||||||
|
@ -1237,7 +1237,7 @@ void Scumm_v2::o2_isLessEqual() {
|
||||||
o5_jumpRelative();
|
o5_jumpRelative();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_lights() {
|
void ScummEngine_v2::o2_lights() {
|
||||||
int a, b, c;
|
int a, b, c;
|
||||||
|
|
||||||
a = getVarOrDirectByte(0x80);
|
a = getVarOrDirectByte(0x80);
|
||||||
|
@ -1266,7 +1266,7 @@ void Scumm_v2::o2_lights() {
|
||||||
_fullRedraw = 1;
|
_fullRedraw = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_loadRoomWithEgo() {
|
void ScummEngine_v2::o2_loadRoomWithEgo() {
|
||||||
Actor *a;
|
Actor *a;
|
||||||
int obj, room, x, y, x2, y2, dir;
|
int obj, room, x, y, x2, y2, dir;
|
||||||
|
|
||||||
|
@ -1301,7 +1301,7 @@ void Scumm_v2::o2_loadRoomWithEgo() {
|
||||||
runScript(5, 0, 0, 0);
|
runScript(5, 0, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_setOwnerOf() {
|
void ScummEngine_v2::o2_setOwnerOf() {
|
||||||
int obj, owner;
|
int obj, owner;
|
||||||
|
|
||||||
obj = getVarOrDirectWord(0x80);
|
obj = getVarOrDirectWord(0x80);
|
||||||
|
@ -1310,7 +1310,7 @@ void Scumm_v2::o2_setOwnerOf() {
|
||||||
setOwnerOf(obj, owner);
|
setOwnerOf(obj, owner);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_delay() {
|
void ScummEngine_v2::o2_delay() {
|
||||||
int delay = fetchScriptByte();
|
int delay = fetchScriptByte();
|
||||||
delay |= fetchScriptByte() << 8;
|
delay |= fetchScriptByte() << 8;
|
||||||
delay |= fetchScriptByte() << 16;
|
delay |= fetchScriptByte() << 16;
|
||||||
|
@ -1321,7 +1321,7 @@ void Scumm_v2::o2_delay() {
|
||||||
o5_breakHere();
|
o5_breakHere();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_setBoxFlags() {
|
void ScummEngine_v2::o2_setBoxFlags() {
|
||||||
int a, b;
|
int a, b;
|
||||||
|
|
||||||
a = getVarOrDirectByte(0x80);
|
a = getVarOrDirectByte(0x80);
|
||||||
|
@ -1329,11 +1329,11 @@ void Scumm_v2::o2_setBoxFlags() {
|
||||||
setBoxFlags(a, b);
|
setBoxFlags(a, b);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_setCameraAt() {
|
void ScummEngine_v2::o2_setCameraAt() {
|
||||||
setCameraAtEx(getVarOrDirectByte(0x80) * 8);
|
setCameraAtEx(getVarOrDirectByte(0x80) * 8);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_roomOps() {
|
void ScummEngine_v2::o2_roomOps() {
|
||||||
int a = getVarOrDirectByte(0x80);
|
int a = getVarOrDirectByte(0x80);
|
||||||
int b = getVarOrDirectByte(0x40);
|
int b = getVarOrDirectByte(0x40);
|
||||||
|
|
||||||
|
@ -1367,7 +1367,7 @@ void Scumm_v2::o2_roomOps() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_cutscene() {
|
void ScummEngine_v2::o2_cutscene() {
|
||||||
//warning("TODO o2_cutscene()");
|
//warning("TODO o2_cutscene()");
|
||||||
|
|
||||||
vm.cutSceneData[0] = _userState | (_userPut ? 16 : 0);
|
vm.cutSceneData[0] = _userState | (_userPut ? 16 : 0);
|
||||||
|
@ -1391,7 +1391,7 @@ void Scumm_v2::o2_cutscene() {
|
||||||
vm.cutScenePtr[0] = 0;
|
vm.cutScenePtr[0] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_endCutscene() {
|
void ScummEngine_v2::o2_endCutscene() {
|
||||||
//warning("TODO o2_endCutscene()");
|
//warning("TODO o2_endCutscene()");
|
||||||
|
|
||||||
vm.cutSceneStackPointer = 0;
|
vm.cutSceneStackPointer = 0;
|
||||||
|
@ -1417,7 +1417,7 @@ void Scumm_v2::o2_endCutscene() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_beginOverride() {
|
void ScummEngine_v2::o2_beginOverride() {
|
||||||
vm.cutScenePtr[0] = _scriptPointer - _scriptOrgPointer;
|
vm.cutScenePtr[0] = _scriptPointer - _scriptOrgPointer;
|
||||||
vm.cutSceneScript[0] = _currentScript;
|
vm.cutSceneScript[0] = _currentScript;
|
||||||
|
|
||||||
|
@ -1426,14 +1426,14 @@ void Scumm_v2::o2_beginOverride() {
|
||||||
fetchScriptWord();
|
fetchScriptWord();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_chainScript() {
|
void ScummEngine_v2::o2_chainScript() {
|
||||||
int data = getVarOrDirectByte(0x80);
|
int data = getVarOrDirectByte(0x80);
|
||||||
stopScript(vm.slot[_currentScript].number);
|
stopScript(vm.slot[_currentScript].number);
|
||||||
_currentScript = 0xFF;
|
_currentScript = 0xFF;
|
||||||
runScript(data, 0, 0, 0);
|
runScript(data, 0, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_pickupObject() {
|
void ScummEngine_v2::o2_pickupObject() {
|
||||||
int obj = getVarOrDirectWord(0x80);
|
int obj = getVarOrDirectWord(0x80);
|
||||||
|
|
||||||
if (obj < 1) {
|
if (obj < 1) {
|
||||||
|
@ -1455,7 +1455,7 @@ void Scumm_v2::o2_pickupObject() {
|
||||||
runInventoryScript(1);
|
runInventoryScript(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_setObjectName() {
|
void ScummEngine_v2::o2_setObjectName() {
|
||||||
int obj = getVarOrDirectWord(0x80);
|
int obj = getVarOrDirectWord(0x80);
|
||||||
int size = 0;
|
int size = 0;
|
||||||
int a;
|
int a;
|
||||||
|
@ -1503,7 +1503,7 @@ void Scumm_v2::o2_setObjectName() {
|
||||||
runInventoryScript(0);
|
runInventoryScript(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_cursorCommand() { // TODO: Define the magic numbers
|
void ScummEngine_v2::o2_cursorCommand() { // TODO: Define the magic numbers
|
||||||
uint16 cmd = getVarOrDirectWord(0x80);
|
uint16 cmd = getVarOrDirectWord(0x80);
|
||||||
byte state = cmd >> 8;
|
byte state = cmd >> 8;
|
||||||
|
|
||||||
|
@ -1514,7 +1514,7 @@ void Scumm_v2::o2_cursorCommand() { // TODO: Define the magic numbers
|
||||||
setUserState(state);
|
setUserState(state);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::setUserState(byte state) {
|
void ScummEngine_v2::setUserState(byte state) {
|
||||||
if (state & 4) { // Userface
|
if (state & 4) { // Userface
|
||||||
_userState = state & (32 | 64 | 128);
|
_userState = state & (32 | 64 | 128);
|
||||||
}
|
}
|
||||||
|
@ -1549,20 +1549,20 @@ void Scumm_v2::setUserState(byte state) {
|
||||||
runInventoryScript(1);
|
runInventoryScript(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_getActorWalkBox() {
|
void ScummEngine_v2::o2_getActorWalkBox() {
|
||||||
Actor *a;
|
Actor *a;
|
||||||
getResultPos();
|
getResultPos();
|
||||||
a = derefActor(getVarOrDirectByte(0x80), "o2_getActorWalkbox");
|
a = derefActor(getVarOrDirectByte(0x80), "o2_getActorWalkbox");
|
||||||
setResult(a->walkbox);
|
setResult(a->walkbox);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_dummy() {
|
void ScummEngine_v2::o2_dummy() {
|
||||||
// Opcode 238 is used in Zak but has no purpose
|
// Opcode 238 is used in Zak but has no purpose
|
||||||
if (!(_gameId == GID_ZAK && _opcode == 238))
|
if (!(_gameId == GID_ZAK && _opcode == 238))
|
||||||
warning("o2_dummy invoked (opcode %d)", _opcode);
|
warning("o2_dummy invoked (opcode %d)", _opcode);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_switchCostumeSet() {
|
void ScummEngine_v2::o2_switchCostumeSet() {
|
||||||
// NES version of maniac uses this to switch between the two
|
// NES version of maniac uses this to switch between the two
|
||||||
// groups of costumes it has
|
// groups of costumes it has
|
||||||
if (_features & GF_NES) {
|
if (_features & GF_NES) {
|
||||||
|
@ -1572,7 +1572,7 @@ void Scumm_v2::o2_switchCostumeSet() {
|
||||||
o2_dummy();
|
o2_dummy();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::resetSentence() {
|
void ScummEngine_v2::resetSentence() {
|
||||||
VAR(VAR_SENTENCE_VERB) = VAR(VAR_BACKUP_VERB);
|
VAR(VAR_SENTENCE_VERB) = VAR(VAR_BACKUP_VERB);
|
||||||
VAR(VAR_SENTENCE_OBJECT1) = 0;
|
VAR(VAR_SENTENCE_OBJECT1) = 0;
|
||||||
VAR(VAR_SENTENCE_OBJECT2) = 0;
|
VAR(VAR_SENTENCE_OBJECT2) = 0;
|
||||||
|
|
|
@ -29,9 +29,9 @@
|
||||||
#include "scumm/sound.h"
|
#include "scumm/sound.h"
|
||||||
#include "scumm/verbs.h"
|
#include "scumm/verbs.h"
|
||||||
|
|
||||||
#define OPCODE(x) { &Scumm_v5::x, #x }
|
#define OPCODE(x) { &ScummEngine_v5::x, #x }
|
||||||
|
|
||||||
void Scumm_v5::setupOpcodes() {
|
void ScummEngine_v5::setupOpcodes() {
|
||||||
static const OpcodeEntryV5 opcodes[256] = {
|
static const OpcodeEntryV5 opcodes[256] = {
|
||||||
/* 00 */
|
/* 00 */
|
||||||
OPCODE(o5_stopObjectCode),
|
OPCODE(o5_stopObjectCode),
|
||||||
|
@ -358,36 +358,36 @@ void Scumm_v5::setupOpcodes() {
|
||||||
_opcodesV5 = opcodes;
|
_opcodesV5 = opcodes;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::executeOpcode(byte i) {
|
void ScummEngine_v5::executeOpcode(byte i) {
|
||||||
OpcodeProcV5 op = _opcodesV5[i].proc;
|
OpcodeProcV5 op = _opcodesV5[i].proc;
|
||||||
(this->*op) ();
|
(this->*op) ();
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *Scumm_v5::getOpcodeDesc(byte i) {
|
const char *ScummEngine_v5::getOpcodeDesc(byte i) {
|
||||||
return _opcodesV5[i].desc;
|
return _opcodesV5[i].desc;
|
||||||
}
|
}
|
||||||
|
|
||||||
int Scumm_v5::getVar() {
|
int ScummEngine_v5::getVar() {
|
||||||
return readVar(fetchScriptWord());
|
return readVar(fetchScriptWord());
|
||||||
}
|
}
|
||||||
|
|
||||||
int Scumm_v5::getVarOrDirectByte(byte mask) {
|
int ScummEngine_v5::getVarOrDirectByte(byte mask) {
|
||||||
if (_opcode & mask)
|
if (_opcode & mask)
|
||||||
return getVar();
|
return getVar();
|
||||||
return fetchScriptByte();
|
return fetchScriptByte();
|
||||||
}
|
}
|
||||||
|
|
||||||
int Scumm_v5::getVarOrDirectWord(byte mask) {
|
int ScummEngine_v5::getVarOrDirectWord(byte mask) {
|
||||||
if (_opcode & mask)
|
if (_opcode & mask)
|
||||||
return getVar();
|
return getVar();
|
||||||
return (int16)fetchScriptWord();
|
return (int16)fetchScriptWord();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_actorFollowCamera() {
|
void ScummEngine_v5::o5_actorFollowCamera() {
|
||||||
actorFollowCamera(getVarOrDirectByte(0x80));
|
actorFollowCamera(getVarOrDirectByte(0x80));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_actorFromPos() {
|
void ScummEngine_v5::o5_actorFromPos() {
|
||||||
int x, y;
|
int x, y;
|
||||||
getResultPos();
|
getResultPos();
|
||||||
x = getVarOrDirectWord(0x80);
|
x = getVarOrDirectWord(0x80);
|
||||||
|
@ -395,7 +395,7 @@ void Scumm_v5::o5_actorFromPos() {
|
||||||
setResult(getActorFromPos(x, y));
|
setResult(getActorFromPos(x, y));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_actorSet() {
|
void ScummEngine_v5::o5_actorSet() {
|
||||||
static const byte convertTable[20] =
|
static const byte convertTable[20] =
|
||||||
{ 1, 0, 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 20 };
|
{ 1, 0, 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 20 };
|
||||||
int act = getVarOrDirectByte(0x80);
|
int act = getVarOrDirectByte(0x80);
|
||||||
|
@ -527,7 +527,7 @@ void Scumm_v5::o5_actorSet() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_setClass() {
|
void ScummEngine_v5::o5_setClass() {
|
||||||
int obj = getVarOrDirectWord(0x80);
|
int obj = getVarOrDirectWord(0x80);
|
||||||
int newClass;
|
int newClass;
|
||||||
|
|
||||||
|
@ -546,7 +546,7 @@ void Scumm_v5::o5_setClass() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_add() {
|
void ScummEngine_v5::o5_add() {
|
||||||
int a;
|
int a;
|
||||||
getResultPos();
|
getResultPos();
|
||||||
a = getVarOrDirectWord(0x80);
|
a = getVarOrDirectWord(0x80);
|
||||||
|
@ -583,26 +583,26 @@ void Scumm_v5::o5_add() {
|
||||||
setResult(readVar(_resultVarNumber) + a);
|
setResult(readVar(_resultVarNumber) + a);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_and() {
|
void ScummEngine_v5::o5_and() {
|
||||||
int a;
|
int a;
|
||||||
getResultPos();
|
getResultPos();
|
||||||
a = getVarOrDirectWord(0x80);
|
a = getVarOrDirectWord(0x80);
|
||||||
setResult(readVar(_resultVarNumber) & a);
|
setResult(readVar(_resultVarNumber) & a);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_animateActor() {
|
void ScummEngine_v5::o5_animateActor() {
|
||||||
int act = getVarOrDirectByte(0x80);
|
int act = getVarOrDirectByte(0x80);
|
||||||
int anim = getVarOrDirectByte(0x40);
|
int anim = getVarOrDirectByte(0x40);
|
||||||
Actor *a = derefActor(act, "o5_animateActor");
|
Actor *a = derefActor(act, "o5_animateActor");
|
||||||
a->animateActor(anim);
|
a->animateActor(anim);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_breakHere() {
|
void ScummEngine_v5::o5_breakHere() {
|
||||||
updateScriptPtr();
|
updateScriptPtr();
|
||||||
_currentScript = 0xFF;
|
_currentScript = 0xFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_chainScript() {
|
void ScummEngine_v5::o5_chainScript() {
|
||||||
int vars[16];
|
int vars[16];
|
||||||
int script;
|
int script;
|
||||||
int cur;
|
int cur;
|
||||||
|
@ -630,7 +630,7 @@ void Scumm_v5::o5_chainScript() {
|
||||||
runScript(script, vm.slot[cur].freezeResistant, vm.slot[cur].recursive, vars);
|
runScript(script, vm.slot[cur].freezeResistant, vm.slot[cur].recursive, vars);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_cursorCommand() {
|
void ScummEngine_v5::o5_cursorCommand() {
|
||||||
int i, j, k;
|
int i, j, k;
|
||||||
int table[16];
|
int table[16];
|
||||||
switch ((_opcode = fetchScriptByte()) & 0x1F) {
|
switch ((_opcode = fetchScriptByte()) & 0x1F) {
|
||||||
|
@ -707,27 +707,27 @@ void Scumm_v5::o5_cursorCommand() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_cutscene() {
|
void ScummEngine_v5::o5_cutscene() {
|
||||||
int args[16];
|
int args[16];
|
||||||
getWordVararg(args);
|
getWordVararg(args);
|
||||||
beginCutscene(args);
|
beginCutscene(args);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_endCutscene() {
|
void ScummEngine_v5::o5_endCutscene() {
|
||||||
endCutscene();
|
endCutscene();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_debug() {
|
void ScummEngine_v5::o5_debug() {
|
||||||
int a = getVarOrDirectWord(0x80);
|
int a = getVarOrDirectWord(0x80);
|
||||||
debug(1, "o5_debug(%d)", a);
|
debug(1, "o5_debug(%d)", a);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_decrement() {
|
void ScummEngine_v5::o5_decrement() {
|
||||||
getResultPos();
|
getResultPos();
|
||||||
setResult(readVar(_resultVarNumber) - 1);
|
setResult(readVar(_resultVarNumber) - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_delay() {
|
void ScummEngine_v5::o5_delay() {
|
||||||
int delay = fetchScriptByte();
|
int delay = fetchScriptByte();
|
||||||
delay |= fetchScriptByte() << 8;
|
delay |= fetchScriptByte() << 8;
|
||||||
delay |= fetchScriptByte() << 16;
|
delay |= fetchScriptByte() << 16;
|
||||||
|
@ -736,13 +736,13 @@ void Scumm_v5::o5_delay() {
|
||||||
o5_breakHere();
|
o5_breakHere();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_delayVariable() {
|
void ScummEngine_v5::o5_delayVariable() {
|
||||||
vm.slot[_currentScript].delay = getVar();
|
vm.slot[_currentScript].delay = getVar();
|
||||||
vm.slot[_currentScript].status = ssPaused;
|
vm.slot[_currentScript].status = ssPaused;
|
||||||
o5_breakHere();
|
o5_breakHere();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_divide() {
|
void ScummEngine_v5::o5_divide() {
|
||||||
int a;
|
int a;
|
||||||
getResultPos();
|
getResultPos();
|
||||||
a = getVarOrDirectWord(0x80);
|
a = getVarOrDirectWord(0x80);
|
||||||
|
@ -753,7 +753,7 @@ void Scumm_v5::o5_divide() {
|
||||||
setResult(readVar(_resultVarNumber) / a);
|
setResult(readVar(_resultVarNumber) / a);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_doSentence() {
|
void ScummEngine_v5::o5_doSentence() {
|
||||||
int verb;
|
int verb;
|
||||||
SentenceTab *st;
|
SentenceTab *st;
|
||||||
|
|
||||||
|
@ -774,7 +774,7 @@ void Scumm_v5::o5_doSentence() {
|
||||||
st->freezeCount = 0;
|
st->freezeCount = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_drawBox() {
|
void ScummEngine_v5::o5_drawBox() {
|
||||||
int x, y, x2, y2, color;
|
int x, y, x2, y2, color;
|
||||||
|
|
||||||
x = getVarOrDirectWord(0x80);
|
x = getVarOrDirectWord(0x80);
|
||||||
|
@ -788,7 +788,7 @@ void Scumm_v5::o5_drawBox() {
|
||||||
drawBox(x, y, x2, y2, color);
|
drawBox(x, y, x2, y2, color);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_drawObject() {
|
void ScummEngine_v5::o5_drawObject() {
|
||||||
int state, obj, idx, i;
|
int state, obj, idx, i;
|
||||||
ObjectData *od;
|
ObjectData *od;
|
||||||
uint16 x, y, w, h;
|
uint16 x, y, w, h;
|
||||||
|
@ -845,7 +845,7 @@ void Scumm_v5::o5_drawObject() {
|
||||||
putState(obj, state);
|
putState(obj, state);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_getStringWidth() {
|
void ScummEngine_v5::o5_getStringWidth() {
|
||||||
// TODO - not sure if this is correct... needs testing
|
// TODO - not sure if this is correct... needs testing
|
||||||
int string, width = 0;
|
int string, width = 0;
|
||||||
byte *ptr;
|
byte *ptr;
|
||||||
|
@ -861,7 +861,7 @@ void Scumm_v5::o5_getStringWidth() {
|
||||||
warning("o5_getStringWidth, result %d", width);
|
warning("o5_getStringWidth, result %d", width);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_saveLoadVars() {
|
void ScummEngine_v5::o5_saveLoadVars() {
|
||||||
// TODO
|
// TODO
|
||||||
if (fetchScriptByte() == 1)
|
if (fetchScriptByte() == 1)
|
||||||
saveVars();
|
saveVars();
|
||||||
|
@ -869,7 +869,7 @@ void Scumm_v5::o5_saveLoadVars() {
|
||||||
loadVars();
|
loadVars();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::saveVars() {
|
void ScummEngine_v5::saveVars() {
|
||||||
int a, b;
|
int a, b;
|
||||||
|
|
||||||
while ((_opcode = fetchScriptByte()) != 0) {
|
while ((_opcode = fetchScriptByte()) != 0) {
|
||||||
|
@ -902,7 +902,7 @@ void Scumm_v5::saveVars() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::loadVars() {
|
void ScummEngine_v5::loadVars() {
|
||||||
int a, b;
|
int a, b;
|
||||||
|
|
||||||
hexdump(_scriptPointer, 64);
|
hexdump(_scriptPointer, 64);
|
||||||
|
@ -936,7 +936,7 @@ void Scumm_v5::loadVars() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_expression() {
|
void ScummEngine_v5::o5_expression() {
|
||||||
int dst, i;
|
int dst, i;
|
||||||
|
|
||||||
_scummStackPos = 0;
|
_scummStackPos = 0;
|
||||||
|
@ -978,28 +978,28 @@ void Scumm_v5::o5_expression() {
|
||||||
setResult(pop());
|
setResult(pop());
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_faceActor() {
|
void ScummEngine_v5::o5_faceActor() {
|
||||||
int act = getVarOrDirectByte(0x80);
|
int act = getVarOrDirectByte(0x80);
|
||||||
int obj = getVarOrDirectWord(0x40);
|
int obj = getVarOrDirectWord(0x40);
|
||||||
Actor *a = derefActor(act, "o5_faceActor");
|
Actor *a = derefActor(act, "o5_faceActor");
|
||||||
a->faceToObject(obj);
|
a->faceToObject(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_findInventory() {
|
void ScummEngine_v5::o5_findInventory() {
|
||||||
getResultPos();
|
getResultPos();
|
||||||
int x = getVarOrDirectByte(0x80);
|
int x = getVarOrDirectByte(0x80);
|
||||||
int y = getVarOrDirectByte(0x40);
|
int y = getVarOrDirectByte(0x40);
|
||||||
setResult(findInventory(x, y));
|
setResult(findInventory(x, y));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_findObject() {
|
void ScummEngine_v5::o5_findObject() {
|
||||||
getResultPos();
|
getResultPos();
|
||||||
int x = getVarOrDirectByte(0x80);
|
int x = getVarOrDirectByte(0x80);
|
||||||
int y = getVarOrDirectByte(0x40);
|
int y = getVarOrDirectByte(0x40);
|
||||||
setResult(findObject(x, y));
|
setResult(findObject(x, y));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_freezeScripts() {
|
void ScummEngine_v5::o5_freezeScripts() {
|
||||||
int scr = getVarOrDirectByte(0x80);
|
int scr = getVarOrDirectByte(0x80);
|
||||||
|
|
||||||
if (scr != 0)
|
if (scr != 0)
|
||||||
|
@ -1008,35 +1008,35 @@ void Scumm_v5::o5_freezeScripts() {
|
||||||
unfreezeScripts();
|
unfreezeScripts();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_getActorCostume() {
|
void ScummEngine_v5::o5_getActorCostume() {
|
||||||
getResultPos();
|
getResultPos();
|
||||||
int act = getVarOrDirectByte(0x80);
|
int act = getVarOrDirectByte(0x80);
|
||||||
Actor *a = derefActor(act, "o5_getActorCostume");
|
Actor *a = derefActor(act, "o5_getActorCostume");
|
||||||
setResult(a->costume);
|
setResult(a->costume);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_getActorElevation() {
|
void ScummEngine_v5::o5_getActorElevation() {
|
||||||
getResultPos();
|
getResultPos();
|
||||||
int act = getVarOrDirectByte(0x80);
|
int act = getVarOrDirectByte(0x80);
|
||||||
Actor *a = derefActor(act, "o5_getActorElevation");
|
Actor *a = derefActor(act, "o5_getActorElevation");
|
||||||
setResult(a->elevation);
|
setResult(a->elevation);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_getActorFacing() {
|
void ScummEngine_v5::o5_getActorFacing() {
|
||||||
getResultPos();
|
getResultPos();
|
||||||
int act = getVarOrDirectByte(0x80);
|
int act = getVarOrDirectByte(0x80);
|
||||||
Actor *a = derefActor(act, "o5_getActorFacing");
|
Actor *a = derefActor(act, "o5_getActorFacing");
|
||||||
setResult(newDirToOldDir(a->getFacing()));
|
setResult(newDirToOldDir(a->getFacing()));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_getActorMoving() {
|
void ScummEngine_v5::o5_getActorMoving() {
|
||||||
getResultPos();
|
getResultPos();
|
||||||
int act = getVarOrDirectByte(0x80);
|
int act = getVarOrDirectByte(0x80);
|
||||||
Actor *a = derefActor(act, "o5_getActorMoving");
|
Actor *a = derefActor(act, "o5_getActorMoving");
|
||||||
setResult(a->moving);
|
setResult(a->moving);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_getActorRoom() {
|
void ScummEngine_v5::o5_getActorRoom() {
|
||||||
getResultPos();
|
getResultPos();
|
||||||
int act = getVarOrDirectByte(0x80);
|
int act = getVarOrDirectByte(0x80);
|
||||||
// WORKAROUND bug #746349. This is a really odd bug in either the script
|
// WORKAROUND bug #746349. This is a really odd bug in either the script
|
||||||
|
@ -1051,7 +1051,7 @@ void Scumm_v5::o5_getActorRoom() {
|
||||||
setResult(a->room);
|
setResult(a->room);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_getActorScale() {
|
void ScummEngine_v5::o5_getActorScale() {
|
||||||
Actor *a;
|
Actor *a;
|
||||||
|
|
||||||
// dummy opcode in the loom
|
// dummy opcode in the loom
|
||||||
|
@ -1075,21 +1075,21 @@ void Scumm_v5::o5_getActorScale() {
|
||||||
setResult(a->scalex);
|
setResult(a->scalex);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_getActorWalkBox() {
|
void ScummEngine_v5::o5_getActorWalkBox() {
|
||||||
getResultPos();
|
getResultPos();
|
||||||
int act = getVarOrDirectByte(0x80);
|
int act = getVarOrDirectByte(0x80);
|
||||||
Actor *a = derefActor(act, "o5_getActorWalkBox");
|
Actor *a = derefActor(act, "o5_getActorWalkBox");
|
||||||
setResult(a->walkbox);
|
setResult(a->walkbox);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_getActorWidth() {
|
void ScummEngine_v5::o5_getActorWidth() {
|
||||||
getResultPos();
|
getResultPos();
|
||||||
int act = getVarOrDirectByte(0x80);
|
int act = getVarOrDirectByte(0x80);
|
||||||
Actor *a = derefActor(act, "o5_getActorWidth");
|
Actor *a = derefActor(act, "o5_getActorWidth");
|
||||||
setResult(a->width);
|
setResult(a->width);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_getActorX() {
|
void ScummEngine_v5::o5_getActorX() {
|
||||||
int a;
|
int a;
|
||||||
getResultPos();
|
getResultPos();
|
||||||
|
|
||||||
|
@ -1101,7 +1101,7 @@ void Scumm_v5::o5_getActorX() {
|
||||||
setResult(getObjX(a));
|
setResult(getObjX(a));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_getActorY() {
|
void ScummEngine_v5::o5_getActorY() {
|
||||||
int a;
|
int a;
|
||||||
getResultPos();
|
getResultPos();
|
||||||
|
|
||||||
|
@ -1119,7 +1119,7 @@ void Scumm_v5::o5_getActorY() {
|
||||||
setResult(getObjY(a));
|
setResult(getObjY(a));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_saveLoadGame() {
|
void ScummEngine_v5::o5_saveLoadGame() {
|
||||||
getResultPos();
|
getResultPos();
|
||||||
byte a = getVarOrDirectByte(0x80);
|
byte a = getVarOrDirectByte(0x80);
|
||||||
byte slot = (a & 0x1F) + 1;
|
byte slot = (a & 0x1F) + 1;
|
||||||
|
@ -1173,7 +1173,7 @@ void Scumm_v5::o5_saveLoadGame() {
|
||||||
setResult(result);
|
setResult(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_getAnimCounter() {
|
void ScummEngine_v5::o5_getAnimCounter() {
|
||||||
if (_version == 3) {
|
if (_version == 3) {
|
||||||
o5_saveLoadGame();
|
o5_saveLoadGame();
|
||||||
return;
|
return;
|
||||||
|
@ -1186,7 +1186,7 @@ void Scumm_v5::o5_getAnimCounter() {
|
||||||
setResult(a->cost.animCounter);
|
setResult(a->cost.animCounter);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_getClosestObjActor() {
|
void ScummEngine_v5::o5_getClosestObjActor() {
|
||||||
int obj;
|
int obj;
|
||||||
int act;
|
int act;
|
||||||
int dist;
|
int dist;
|
||||||
|
@ -1217,7 +1217,7 @@ void Scumm_v5::o5_getClosestObjActor() {
|
||||||
setResult(closest_obj);
|
setResult(closest_obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_getDist() {
|
void ScummEngine_v5::o5_getDist() {
|
||||||
int o1, o2;
|
int o1, o2;
|
||||||
int r;
|
int r;
|
||||||
getResultPos();
|
getResultPos();
|
||||||
|
@ -1232,17 +1232,17 @@ void Scumm_v5::o5_getDist() {
|
||||||
setResult(r);
|
setResult(r);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_getInventoryCount() {
|
void ScummEngine_v5::o5_getInventoryCount() {
|
||||||
getResultPos();
|
getResultPos();
|
||||||
setResult(getInventoryCount(getVarOrDirectByte(0x80)));
|
setResult(getInventoryCount(getVarOrDirectByte(0x80)));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_getObjectOwner() {
|
void ScummEngine_v5::o5_getObjectOwner() {
|
||||||
getResultPos();
|
getResultPos();
|
||||||
setResult(getOwner(getVarOrDirectWord(0x80)));
|
setResult(getOwner(getVarOrDirectWord(0x80)));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_getObjectState() {
|
void ScummEngine_v5::o5_getObjectState() {
|
||||||
if (_features & GF_SMALL_HEADER) {
|
if (_features & GF_SMALL_HEADER) {
|
||||||
o5_ifState();
|
o5_ifState();
|
||||||
} else {
|
} else {
|
||||||
|
@ -1251,7 +1251,7 @@ void Scumm_v5::o5_getObjectState() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_ifState() {
|
void ScummEngine_v5::o5_ifState() {
|
||||||
int a = getVarOrDirectWord(0x80);
|
int a = getVarOrDirectWord(0x80);
|
||||||
int b = getVarOrDirectByte(0x40);
|
int b = getVarOrDirectByte(0x40);
|
||||||
|
|
||||||
|
@ -1261,7 +1261,7 @@ void Scumm_v5::o5_ifState() {
|
||||||
ignoreScriptWord();
|
ignoreScriptWord();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_ifNotState() {
|
void ScummEngine_v5::o5_ifNotState() {
|
||||||
int a = getVarOrDirectWord(0x80);
|
int a = getVarOrDirectWord(0x80);
|
||||||
int b = getVarOrDirectByte(0x40);
|
int b = getVarOrDirectByte(0x40);
|
||||||
|
|
||||||
|
@ -1271,17 +1271,17 @@ void Scumm_v5::o5_ifNotState() {
|
||||||
ignoreScriptWord();
|
ignoreScriptWord();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_getRandomNr() {
|
void ScummEngine_v5::o5_getRandomNr() {
|
||||||
getResultPos();
|
getResultPos();
|
||||||
setResult(_rnd.getRandomNumber(getVarOrDirectByte(0x80)));
|
setResult(_rnd.getRandomNumber(getVarOrDirectByte(0x80)));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_isScriptRunning() {
|
void ScummEngine_v5::o5_isScriptRunning() {
|
||||||
getResultPos();
|
getResultPos();
|
||||||
setResult(isScriptRunning(getVarOrDirectByte(0x80)));
|
setResult(isScriptRunning(getVarOrDirectByte(0x80)));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_getVerbEntrypoint() {
|
void ScummEngine_v5::o5_getVerbEntrypoint() {
|
||||||
int a, b;
|
int a, b;
|
||||||
getResultPos();
|
getResultPos();
|
||||||
a = getVarOrDirectWord(0x80);
|
a = getVarOrDirectWord(0x80);
|
||||||
|
@ -1290,7 +1290,7 @@ void Scumm_v5::o5_getVerbEntrypoint() {
|
||||||
setResult(getVerbEntrypoint(a, b));
|
setResult(getVerbEntrypoint(a, b));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_ifClassOfIs() {
|
void ScummEngine_v5::o5_ifClassOfIs() {
|
||||||
int act, cls, b = 0;
|
int act, cls, b = 0;
|
||||||
bool cond = true;
|
bool cond = true;
|
||||||
|
|
||||||
|
@ -1313,12 +1313,12 @@ void Scumm_v5::o5_ifClassOfIs() {
|
||||||
o5_jumpRelative();
|
o5_jumpRelative();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_increment() {
|
void ScummEngine_v5::o5_increment() {
|
||||||
getResultPos();
|
getResultPos();
|
||||||
setResult(readVar(_resultVarNumber) + 1);
|
setResult(readVar(_resultVarNumber) + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_isActorInBox() {
|
void ScummEngine_v5::o5_isActorInBox() {
|
||||||
int act = getVarOrDirectByte(0x80);
|
int act = getVarOrDirectByte(0x80);
|
||||||
int box = getVarOrDirectByte(0x40);
|
int box = getVarOrDirectByte(0x40);
|
||||||
Actor *a = derefActor(act, "o5_isActorInBox");
|
Actor *a = derefActor(act, "o5_isActorInBox");
|
||||||
|
@ -1329,7 +1329,7 @@ void Scumm_v5::o5_isActorInBox() {
|
||||||
ignoreScriptWord();
|
ignoreScriptWord();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_isEqual() {
|
void ScummEngine_v5::o5_isEqual() {
|
||||||
int16 a, b;
|
int16 a, b;
|
||||||
int var;
|
int var;
|
||||||
|
|
||||||
|
@ -1355,7 +1355,7 @@ void Scumm_v5::o5_isEqual() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_isGreater() {
|
void ScummEngine_v5::o5_isGreater() {
|
||||||
int16 a = getVar();
|
int16 a = getVar();
|
||||||
int16 b = getVarOrDirectWord(0x80);
|
int16 b = getVarOrDirectWord(0x80);
|
||||||
if (b > a)
|
if (b > a)
|
||||||
|
@ -1364,7 +1364,7 @@ void Scumm_v5::o5_isGreater() {
|
||||||
o5_jumpRelative();
|
o5_jumpRelative();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_isGreaterEqual() {
|
void ScummEngine_v5::o5_isGreaterEqual() {
|
||||||
int16 a = getVar();
|
int16 a = getVar();
|
||||||
int16 b = getVarOrDirectWord(0x80);
|
int16 b = getVarOrDirectWord(0x80);
|
||||||
if (b >= a)
|
if (b >= a)
|
||||||
|
@ -1373,7 +1373,7 @@ void Scumm_v5::o5_isGreaterEqual() {
|
||||||
o5_jumpRelative();
|
o5_jumpRelative();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_isLess() {
|
void ScummEngine_v5::o5_isLess() {
|
||||||
int16 a = getVar();
|
int16 a = getVar();
|
||||||
int16 b = getVarOrDirectWord(0x80);
|
int16 b = getVarOrDirectWord(0x80);
|
||||||
|
|
||||||
|
@ -1383,7 +1383,7 @@ void Scumm_v5::o5_isLess() {
|
||||||
o5_jumpRelative();
|
o5_jumpRelative();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_lessOrEqual() {
|
void ScummEngine_v5::o5_lessOrEqual() {
|
||||||
int16 a = getVar();
|
int16 a = getVar();
|
||||||
int16 b = getVarOrDirectWord(0x80);
|
int16 b = getVarOrDirectWord(0x80);
|
||||||
if (b <= a)
|
if (b <= a)
|
||||||
|
@ -1392,7 +1392,7 @@ void Scumm_v5::o5_lessOrEqual() {
|
||||||
o5_jumpRelative();
|
o5_jumpRelative();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_isNotEqual() {
|
void ScummEngine_v5::o5_isNotEqual() {
|
||||||
int16 a = getVar();
|
int16 a = getVar();
|
||||||
int16 b = getVarOrDirectWord(0x80);
|
int16 b = getVarOrDirectWord(0x80);
|
||||||
if (b != a)
|
if (b != a)
|
||||||
|
@ -1401,7 +1401,7 @@ void Scumm_v5::o5_isNotEqual() {
|
||||||
o5_jumpRelative();
|
o5_jumpRelative();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_notEqualZero() {
|
void ScummEngine_v5::o5_notEqualZero() {
|
||||||
int a = getVar();
|
int a = getVar();
|
||||||
if (a != 0)
|
if (a != 0)
|
||||||
ignoreScriptWord();
|
ignoreScriptWord();
|
||||||
|
@ -1409,7 +1409,7 @@ void Scumm_v5::o5_notEqualZero() {
|
||||||
o5_jumpRelative();
|
o5_jumpRelative();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_equalZero() {
|
void ScummEngine_v5::o5_equalZero() {
|
||||||
int a = getVar();
|
int a = getVar();
|
||||||
if (a == 0)
|
if (a == 0)
|
||||||
ignoreScriptWord();
|
ignoreScriptWord();
|
||||||
|
@ -1417,11 +1417,11 @@ void Scumm_v5::o5_equalZero() {
|
||||||
o5_jumpRelative();
|
o5_jumpRelative();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_jumpRelative() {
|
void ScummEngine_v5::o5_jumpRelative() {
|
||||||
_scriptPointer += (int16)fetchScriptWord();
|
_scriptPointer += (int16)fetchScriptWord();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_lights() {
|
void ScummEngine_v5::o5_lights() {
|
||||||
int a, b, c;
|
int a, b, c;
|
||||||
|
|
||||||
a = getVarOrDirectByte(0x80);
|
a = getVarOrDirectByte(0x80);
|
||||||
|
@ -1437,7 +1437,7 @@ void Scumm_v5::o5_lights() {
|
||||||
_fullRedraw = 1;
|
_fullRedraw = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_loadRoom() {
|
void ScummEngine_v5::o5_loadRoom() {
|
||||||
int room;
|
int room;
|
||||||
|
|
||||||
room = getVarOrDirectByte(0x80);
|
room = getVarOrDirectByte(0x80);
|
||||||
|
@ -1451,7 +1451,7 @@ void Scumm_v5::o5_loadRoom() {
|
||||||
_fullRedraw = 1;
|
_fullRedraw = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_loadRoomWithEgo() {
|
void ScummEngine_v5::o5_loadRoomWithEgo() {
|
||||||
Actor *a;
|
Actor *a;
|
||||||
int obj, room, x, y;
|
int obj, room, x, y;
|
||||||
int x2, y2, dir, oldDir;
|
int x2, y2, dir, oldDir;
|
||||||
|
@ -1497,7 +1497,7 @@ void Scumm_v5::o5_loadRoomWithEgo() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_matrixOps() {
|
void ScummEngine_v5::o5_matrixOps() {
|
||||||
int a, b;
|
int a, b;
|
||||||
|
|
||||||
if (_version == 3) {
|
if (_version == 3) {
|
||||||
|
@ -1530,37 +1530,37 @@ void Scumm_v5::o5_matrixOps() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_move() {
|
void ScummEngine_v5::o5_move() {
|
||||||
getResultPos();
|
getResultPos();
|
||||||
setResult(getVarOrDirectWord(0x80));
|
setResult(getVarOrDirectWord(0x80));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_multiply() {
|
void ScummEngine_v5::o5_multiply() {
|
||||||
int a;
|
int a;
|
||||||
getResultPos();
|
getResultPos();
|
||||||
a = getVarOrDirectWord(0x80);
|
a = getVarOrDirectWord(0x80);
|
||||||
setResult(readVar(_resultVarNumber) * a);
|
setResult(readVar(_resultVarNumber) * a);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_or() {
|
void ScummEngine_v5::o5_or() {
|
||||||
int a;
|
int a;
|
||||||
getResultPos();
|
getResultPos();
|
||||||
a = getVarOrDirectWord(0x80);
|
a = getVarOrDirectWord(0x80);
|
||||||
setResult(readVar(_resultVarNumber) | a);
|
setResult(readVar(_resultVarNumber) | a);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_beginOverride() {
|
void ScummEngine_v5::o5_beginOverride() {
|
||||||
if (fetchScriptByte() != 0)
|
if (fetchScriptByte() != 0)
|
||||||
beginOverride();
|
beginOverride();
|
||||||
else
|
else
|
||||||
endOverride();
|
endOverride();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_panCameraTo() {
|
void ScummEngine_v5::o5_panCameraTo() {
|
||||||
panCameraTo(getVarOrDirectWord(0x80), 0);
|
panCameraTo(getVarOrDirectWord(0x80), 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_pickupObject() {
|
void ScummEngine_v5::o5_pickupObject() {
|
||||||
int obj, room;
|
int obj, room;
|
||||||
if (_version == 3 || _version == 4) {
|
if (_version == 3 || _version == 4) {
|
||||||
o5_drawObject();
|
o5_drawObject();
|
||||||
|
@ -1580,17 +1580,17 @@ void Scumm_v5::o5_pickupObject() {
|
||||||
runInventoryScript(1);
|
runInventoryScript(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_print() {
|
void ScummEngine_v5::o5_print() {
|
||||||
_actorToPrintStrFor = getVarOrDirectByte(0x80);
|
_actorToPrintStrFor = getVarOrDirectByte(0x80);
|
||||||
decodeParseString();
|
decodeParseString();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_printEgo() {
|
void ScummEngine_v5::o5_printEgo() {
|
||||||
_actorToPrintStrFor = (byte)VAR(VAR_EGO);
|
_actorToPrintStrFor = (byte)VAR(VAR_EGO);
|
||||||
decodeParseString();
|
decodeParseString();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_pseudoRoom() {
|
void ScummEngine_v5::o5_pseudoRoom() {
|
||||||
int i = fetchScriptByte(), j;
|
int i = fetchScriptByte(), j;
|
||||||
while ((j = fetchScriptByte()) != 0) {
|
while ((j = fetchScriptByte()) != 0) {
|
||||||
if (j >= 0x80) {
|
if (j >= 0x80) {
|
||||||
|
@ -1599,7 +1599,7 @@ void Scumm_v5::o5_pseudoRoom() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_putActor() {
|
void ScummEngine_v5::o5_putActor() {
|
||||||
int x, y;
|
int x, y;
|
||||||
Actor *a;
|
Actor *a;
|
||||||
|
|
||||||
|
@ -1609,7 +1609,7 @@ void Scumm_v5::o5_putActor() {
|
||||||
a->putActor(x, y, a->room);
|
a->putActor(x, y, a->room);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_putActorAtObject() {
|
void ScummEngine_v5::o5_putActorAtObject() {
|
||||||
int obj, x, y;
|
int obj, x, y;
|
||||||
Actor *a;
|
Actor *a;
|
||||||
|
|
||||||
|
@ -1624,7 +1624,7 @@ void Scumm_v5::o5_putActorAtObject() {
|
||||||
a->putActor(x, y, a->room);
|
a->putActor(x, y, a->room);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_putActorInRoom() {
|
void ScummEngine_v5::o5_putActorInRoom() {
|
||||||
Actor *a;
|
Actor *a;
|
||||||
int act = getVarOrDirectByte(0x80);
|
int act = getVarOrDirectByte(0x80);
|
||||||
int room = getVarOrDirectByte(0x40);
|
int room = getVarOrDirectByte(0x40);
|
||||||
|
@ -1655,7 +1655,7 @@ void Scumm_v5::o5_putActorInRoom() {
|
||||||
a->putActor(0, 0, 0);
|
a->putActor(0, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_quitPauseRestart() {
|
void ScummEngine_v5::o5_quitPauseRestart() {
|
||||||
byte subOp = fetchScriptByte();
|
byte subOp = fetchScriptByte();
|
||||||
switch (subOp) {
|
switch (subOp) {
|
||||||
case 1: // Restart
|
case 1: // Restart
|
||||||
|
@ -1672,7 +1672,7 @@ void Scumm_v5::o5_quitPauseRestart() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_resourceRoutines() {
|
void ScummEngine_v5::o5_resourceRoutines() {
|
||||||
const ResTypes resType[4] = { rtScript, rtSound, rtCostume, rtRoom };
|
const ResTypes resType[4] = { rtScript, rtSound, rtCostume, rtRoom };
|
||||||
int resid = 0;
|
int resid = 0;
|
||||||
int foo, bar;
|
int foo, bar;
|
||||||
|
@ -1799,7 +1799,7 @@ void Scumm_v5::o5_resourceRoutines() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_roomOps() {
|
void ScummEngine_v5::o5_roomOps() {
|
||||||
int a = 0, b = 0, c, d, e;
|
int a = 0, b = 0, c, d, e;
|
||||||
|
|
||||||
if (_version == 3) {
|
if (_version == 3) {
|
||||||
|
@ -2004,7 +2004,7 @@ void Scumm_v5::o5_roomOps() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_saveRestoreVerbs() {
|
void ScummEngine_v5::o5_saveRestoreVerbs() {
|
||||||
int a, b, c, slot, slot2;
|
int a, b, c, slot, slot2;
|
||||||
|
|
||||||
_opcode = fetchScriptByte();
|
_opcode = fetchScriptByte();
|
||||||
|
@ -2053,11 +2053,11 @@ void Scumm_v5::o5_saveRestoreVerbs() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_setCameraAt() {
|
void ScummEngine_v5::o5_setCameraAt() {
|
||||||
setCameraAtEx(getVarOrDirectWord(0x80));
|
setCameraAtEx(getVarOrDirectWord(0x80));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_setObjectName() {
|
void ScummEngine_v5::o5_setObjectName() {
|
||||||
int obj = getVarOrDirectWord(0x80);
|
int obj = getVarOrDirectWord(0x80);
|
||||||
int size;
|
int size;
|
||||||
int a;
|
int a;
|
||||||
|
@ -2165,7 +2165,7 @@ void Scumm_v5::o5_setObjectName() {
|
||||||
runInventoryScript(0);
|
runInventoryScript(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_setOwnerOf() {
|
void ScummEngine_v5::o5_setOwnerOf() {
|
||||||
int obj, owner;
|
int obj, owner;
|
||||||
|
|
||||||
obj = getVarOrDirectWord(0x80);
|
obj = getVarOrDirectWord(0x80);
|
||||||
|
@ -2174,7 +2174,7 @@ void Scumm_v5::o5_setOwnerOf() {
|
||||||
setOwnerOf(obj, owner);
|
setOwnerOf(obj, owner);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_setState() {
|
void ScummEngine_v5::o5_setState() {
|
||||||
int obj, state;
|
int obj, state;
|
||||||
obj = getVarOrDirectWord(0x80);
|
obj = getVarOrDirectWord(0x80);
|
||||||
state = getVarOrDirectByte(0x40);
|
state = getVarOrDirectByte(0x40);
|
||||||
|
@ -2184,7 +2184,7 @@ void Scumm_v5::o5_setState() {
|
||||||
clearDrawObjectQueue();
|
clearDrawObjectQueue();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_setVarRange() {
|
void ScummEngine_v5::o5_setVarRange() {
|
||||||
int a, b;
|
int a, b;
|
||||||
|
|
||||||
getResultPos();
|
getResultPos();
|
||||||
|
@ -2200,7 +2200,7 @@ void Scumm_v5::o5_setVarRange() {
|
||||||
} while (--a);
|
} while (--a);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_startMusic() {
|
void ScummEngine_v5::o5_startMusic() {
|
||||||
if (_features & GF_FMTOWNS) {
|
if (_features & GF_FMTOWNS) {
|
||||||
// In FM Towns games this is some kind of Audio CD status query function.
|
// In FM Towns games this is some kind of Audio CD status query function.
|
||||||
// See also bug #762589 (thanks to Hibernatus for providing the information).
|
// See also bug #762589 (thanks to Hibernatus for providing the information).
|
||||||
|
@ -2236,20 +2236,20 @@ void Scumm_v5::o5_startMusic() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_startSound() {
|
void ScummEngine_v5::o5_startSound() {
|
||||||
VAR(VAR_MUSIC_TIMER) = 0;
|
VAR(VAR_MUSIC_TIMER) = 0;
|
||||||
_sound->addSoundToQueue(getVarOrDirectByte(0x80));
|
_sound->addSoundToQueue(getVarOrDirectByte(0x80));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_stopMusic() {
|
void ScummEngine_v5::o5_stopMusic() {
|
||||||
_sound->stopAllSounds();
|
_sound->stopAllSounds();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_stopSound() {
|
void ScummEngine_v5::o5_stopSound() {
|
||||||
_sound->stopSound(getVarOrDirectByte(0x80));
|
_sound->stopSound(getVarOrDirectByte(0x80));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_isSoundRunning() {
|
void ScummEngine_v5::o5_isSoundRunning() {
|
||||||
int snd;
|
int snd;
|
||||||
getResultPos();
|
getResultPos();
|
||||||
snd = getVarOrDirectByte(0x80);
|
snd = getVarOrDirectByte(0x80);
|
||||||
|
@ -2258,7 +2258,7 @@ void Scumm_v5::o5_isSoundRunning() {
|
||||||
setResult(snd);
|
setResult(snd);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_soundKludge() {
|
void ScummEngine_v5::o5_soundKludge() {
|
||||||
int items[16];
|
int items[16];
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
@ -2282,7 +2282,7 @@ void Scumm_v5::o5_soundKludge() {
|
||||||
_sound->soundKludge(items, num);
|
_sound->soundKludge(items, num);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_startObject() {
|
void ScummEngine_v5::o5_startObject() {
|
||||||
int obj, script;
|
int obj, script;
|
||||||
int data[16];
|
int data[16];
|
||||||
|
|
||||||
|
@ -2293,7 +2293,7 @@ void Scumm_v5::o5_startObject() {
|
||||||
runObjectScript(obj, script, 0, 0, data);
|
runObjectScript(obj, script, 0, 0, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_startScript() {
|
void ScummEngine_v5::o5_startScript() {
|
||||||
int op, script;
|
int op, script;
|
||||||
int data[16];
|
int data[16];
|
||||||
|
|
||||||
|
@ -2305,15 +2305,15 @@ void Scumm_v5::o5_startScript() {
|
||||||
runScript(script, (op & 0x20) != 0, (op & 0x40) != 0, data);
|
runScript(script, (op & 0x20) != 0, (op & 0x40) != 0, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_stopObjectCode() {
|
void ScummEngine_v5::o5_stopObjectCode() {
|
||||||
stopObjectCode();
|
stopObjectCode();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_stopObjectScript() {
|
void ScummEngine_v5::o5_stopObjectScript() {
|
||||||
stopObjectScript(getVarOrDirectWord(0x80));
|
stopObjectScript(getVarOrDirectWord(0x80));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_stopScript() {
|
void ScummEngine_v5::o5_stopScript() {
|
||||||
int script;
|
int script;
|
||||||
|
|
||||||
script = getVarOrDirectByte(0x80);
|
script = getVarOrDirectByte(0x80);
|
||||||
|
@ -2332,7 +2332,7 @@ void Scumm_v5::o5_stopScript() {
|
||||||
stopScript(script);
|
stopScript(script);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_stringOps() {
|
void ScummEngine_v5::o5_stringOps() {
|
||||||
int a, b, c, i;
|
int a, b, c, i;
|
||||||
byte *ptr;
|
byte *ptr;
|
||||||
|
|
||||||
|
@ -2387,14 +2387,14 @@ void Scumm_v5::o5_stringOps() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_subtract() {
|
void ScummEngine_v5::o5_subtract() {
|
||||||
int a;
|
int a;
|
||||||
getResultPos();
|
getResultPos();
|
||||||
a = getVarOrDirectWord(0x80);
|
a = getVarOrDirectWord(0x80);
|
||||||
setResult(readVar(_resultVarNumber) - a);
|
setResult(readVar(_resultVarNumber) - a);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_verbOps() {
|
void ScummEngine_v5::o5_verbOps() {
|
||||||
int verb, slot;
|
int verb, slot;
|
||||||
VerbSlot *vs;
|
VerbSlot *vs;
|
||||||
int a, b;
|
int a, b;
|
||||||
|
@ -2565,7 +2565,7 @@ void Scumm_v5::o5_verbOps() {
|
||||||
verbMouseOver(0);
|
verbMouseOver(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_wait() {
|
void ScummEngine_v5::o5_wait() {
|
||||||
const byte *oldaddr = _scriptPointer - 1;
|
const byte *oldaddr = _scriptPointer - 1;
|
||||||
|
|
||||||
if ((_gameId == GID_INDY3) && !(_features & GF_MACINTOSH)) {
|
if ((_gameId == GID_INDY3) && !(_features & GF_MACINTOSH)) {
|
||||||
|
@ -2606,7 +2606,7 @@ void Scumm_v5::o5_wait() {
|
||||||
o5_breakHere();
|
o5_breakHere();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_walkActorTo() {
|
void ScummEngine_v5::o5_walkActorTo() {
|
||||||
int x, y;
|
int x, y;
|
||||||
Actor *a;
|
Actor *a;
|
||||||
|
|
||||||
|
@ -2616,7 +2616,7 @@ void Scumm_v5::o5_walkActorTo() {
|
||||||
a->startWalkActor(x, y, -1);
|
a->startWalkActor(x, y, -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_walkActorToActor() {
|
void ScummEngine_v5::o5_walkActorToActor() {
|
||||||
int x, y;
|
int x, y;
|
||||||
Actor *a, *a2;
|
Actor *a, *a2;
|
||||||
int nr = getVarOrDirectByte(0x80);
|
int nr = getVarOrDirectByte(0x80);
|
||||||
|
@ -2677,7 +2677,7 @@ void Scumm_v5::o5_walkActorToActor() {
|
||||||
a->startWalkActor(x, y, -1);
|
a->startWalkActor(x, y, -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_walkActorToObject() {
|
void ScummEngine_v5::o5_walkActorToObject() {
|
||||||
int obj;
|
int obj;
|
||||||
Actor *a;
|
Actor *a;
|
||||||
|
|
||||||
|
@ -2690,7 +2690,7 @@ void Scumm_v5::o5_walkActorToObject() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int Scumm_v5::getWordVararg(int *ptr) {
|
int ScummEngine_v5::getWordVararg(int *ptr) {
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 0; i < 16; i++)
|
for (i = 0; i < 16; i++)
|
||||||
|
@ -2703,7 +2703,7 @@ int Scumm_v5::getWordVararg(int *ptr) {
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::decodeParseString() {
|
void ScummEngine_v5::decodeParseString() {
|
||||||
int textSlot;
|
int textSlot;
|
||||||
|
|
||||||
switch (_actorToPrintStrFor) {
|
switch (_actorToPrintStrFor) {
|
||||||
|
@ -2739,7 +2739,7 @@ void Scumm_v5::decodeParseString() {
|
||||||
{
|
{
|
||||||
int a = getVarOrDirectWord(0x80);
|
int a = getVarOrDirectWord(0x80);
|
||||||
int b = getVarOrDirectWord(0x40);
|
int b = getVarOrDirectWord(0x40);
|
||||||
warning("Scumm_v5::decodeParseString: Unhandled case 3: %d, %d", a, b);
|
warning("ScummEngine_v5::decodeParseString: Unhandled case 3: %d, %d", a, b);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 4: /* center */
|
case 4: /* center */
|
||||||
|
@ -2821,7 +2821,7 @@ void Scumm_v5::decodeParseString() {
|
||||||
_scriptPointer = _messagePtr;
|
_scriptPointer = _messagePtr;
|
||||||
return;
|
return;
|
||||||
default:
|
default:
|
||||||
warning("Scumm_v5::decodeParseString: Unhandled case %d", _opcode & 0xF);
|
warning("ScummEngine_v5::decodeParseString: Unhandled case %d", _opcode & 0xF);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2835,7 +2835,7 @@ void Scumm_v5::decodeParseString() {
|
||||||
_string[textSlot].t_charset = _string[textSlot].charset;
|
_string[textSlot].t_charset = _string[textSlot].charset;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_oldRoomEffect() {
|
void ScummEngine_v5::o5_oldRoomEffect() {
|
||||||
int a;
|
int a;
|
||||||
|
|
||||||
_opcode = fetchScriptByte();
|
_opcode = fetchScriptByte();
|
||||||
|
@ -2907,7 +2907,7 @@ printf("o5_oldRoomEffect ODDBALL: _opcode = 0x%x, a = 0x%x\n", _opcode, a);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_pickupObjectOld() {
|
void ScummEngine_v5::o5_pickupObjectOld() {
|
||||||
int obj = getVarOrDirectWord(0x80);
|
int obj = getVarOrDirectWord(0x80);
|
||||||
|
|
||||||
if (obj < 1) {
|
if (obj < 1) {
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -33,9 +33,9 @@
|
||||||
#include "sound/mixer.h"
|
#include "sound/mixer.h"
|
||||||
|
|
||||||
|
|
||||||
#define OPCODE(x) { &Scumm_v8::x, #x }
|
#define OPCODE(x) { &ScummEngine_v8::x, #x }
|
||||||
|
|
||||||
void Scumm_v8::setupOpcodes() {
|
void ScummEngine_v8::setupOpcodes() {
|
||||||
static const OpcodeEntryV8 opcodes[256] = {
|
static const OpcodeEntryV8 opcodes[256] = {
|
||||||
/* 00 */
|
/* 00 */
|
||||||
OPCODE(o6_invalid),
|
OPCODE(o6_invalid),
|
||||||
|
@ -362,17 +362,17 @@ void Scumm_v8::setupOpcodes() {
|
||||||
_opcodesV8 = opcodes;
|
_opcodesV8 = opcodes;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v8::executeOpcode(byte i) {
|
void ScummEngine_v8::executeOpcode(byte i) {
|
||||||
OpcodeProcV8 op = _opcodesV8[i].proc;
|
OpcodeProcV8 op = _opcodesV8[i].proc;
|
||||||
(this->*op) ();
|
(this->*op) ();
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *Scumm_v8::getOpcodeDesc(byte i) {
|
const char *ScummEngine_v8::getOpcodeDesc(byte i) {
|
||||||
return _opcodesV8[i].desc;
|
return _opcodesV8[i].desc;
|
||||||
}
|
}
|
||||||
|
|
||||||
// In V8, the word size is 4 byte, not 2 bytes as in V6/V7 games
|
// In V8, the word size is 4 byte, not 2 bytes as in V6/V7 games
|
||||||
uint Scumm_v8::fetchScriptWord() {
|
uint ScummEngine_v8::fetchScriptWord() {
|
||||||
int a;
|
int a;
|
||||||
if (*_lastCodePtr + sizeof(MemBlkHeader) != _scriptOrgPointer) {
|
if (*_lastCodePtr + sizeof(MemBlkHeader) != _scriptOrgPointer) {
|
||||||
uint32 oldoffs = _scriptPointer - _scriptOrgPointer;
|
uint32 oldoffs = _scriptPointer - _scriptOrgPointer;
|
||||||
|
@ -384,11 +384,11 @@ uint Scumm_v8::fetchScriptWord() {
|
||||||
return a;
|
return a;
|
||||||
}
|
}
|
||||||
|
|
||||||
int Scumm_v8::fetchScriptWordSigned() {
|
int ScummEngine_v8::fetchScriptWordSigned() {
|
||||||
return (int32)fetchScriptWord();
|
return (int32)fetchScriptWord();
|
||||||
}
|
}
|
||||||
|
|
||||||
int Scumm_v8::readVar(uint var) {
|
int ScummEngine_v8::readVar(uint var) {
|
||||||
debug(9, "readvar(%d)", var);
|
debug(9, "readvar(%d)", var);
|
||||||
|
|
||||||
if (!(var & 0xF0000000)) {
|
if (!(var & 0xF0000000)) {
|
||||||
|
@ -412,7 +412,7 @@ int Scumm_v8::readVar(uint var) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v8::writeVar(uint var, int value) {
|
void ScummEngine_v8::writeVar(uint var, int value) {
|
||||||
debug(9, "writeVar(%d, %d)", var, value);
|
debug(9, "writeVar(%d, %d)", var, value);
|
||||||
|
|
||||||
if (!(var & 0xF0000000)) {
|
if (!(var & 0xF0000000)) {
|
||||||
|
@ -450,7 +450,7 @@ void Scumm_v8::writeVar(uint var, int value) {
|
||||||
error("Illegal varbits (w)");
|
error("Illegal varbits (w)");
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v8::decodeParseString(int m, int n) {
|
void ScummEngine_v8::decodeParseString(int m, int n) {
|
||||||
byte b;
|
byte b;
|
||||||
|
|
||||||
b = fetchScriptByte();
|
b = fetchScriptByte();
|
||||||
|
@ -531,12 +531,12 @@ void Scumm_v8::decodeParseString(int m, int n) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v8::o8_mod() {
|
void ScummEngine_v8::o8_mod() {
|
||||||
int a = pop();
|
int a = pop();
|
||||||
push(pop() % a);
|
push(pop() % a);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v8::o8_wait() {
|
void ScummEngine_v8::o8_wait() {
|
||||||
int actnum;
|
int actnum;
|
||||||
int offs = -2;
|
int offs = -2;
|
||||||
Actor *a;
|
Actor *a;
|
||||||
|
@ -589,7 +589,7 @@ void Scumm_v8::o8_wait() {
|
||||||
o6_breakHere();
|
o6_breakHere();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v8::o8_dim() {
|
void ScummEngine_v8::o8_dim() {
|
||||||
byte subOp = fetchScriptByte();
|
byte subOp = fetchScriptByte();
|
||||||
int array = fetchScriptWord();
|
int array = fetchScriptWord();
|
||||||
|
|
||||||
|
@ -608,7 +608,7 @@ void Scumm_v8::o8_dim() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v8::o8_dim2() {
|
void ScummEngine_v8::o8_dim2() {
|
||||||
byte subOp = fetchScriptByte();
|
byte subOp = fetchScriptByte();
|
||||||
int array = fetchScriptWord(), a, b;
|
int array = fetchScriptWord(), a, b;
|
||||||
|
|
||||||
|
@ -631,7 +631,7 @@ void Scumm_v8::o8_dim2() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v8::o8_arrayOps() {
|
void ScummEngine_v8::o8_arrayOps() {
|
||||||
byte subOp = fetchScriptByte();
|
byte subOp = fetchScriptByte();
|
||||||
int array = fetchScriptWord();
|
int array = fetchScriptWord();
|
||||||
int b, c, d, len;
|
int b, c, d, len;
|
||||||
|
@ -673,12 +673,12 @@ void Scumm_v8::o8_arrayOps() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v8::o8_blastText() {
|
void ScummEngine_v8::o8_blastText() {
|
||||||
// FIXME
|
// FIXME
|
||||||
decodeParseString(5, 0);
|
decodeParseString(5, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v8::o8_cursorCommand() {
|
void ScummEngine_v8::o8_cursorCommand() {
|
||||||
byte subOp = fetchScriptByte();
|
byte subOp = fetchScriptByte();
|
||||||
int a, i;
|
int a, i;
|
||||||
int args[16];
|
int args[16];
|
||||||
|
@ -757,7 +757,7 @@ void Scumm_v8::o8_cursorCommand() {
|
||||||
VAR(VAR_USERPUT) = _userPut;
|
VAR(VAR_USERPUT) = _userPut;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v8::o8_createBoxMatrix() {
|
void ScummEngine_v8::o8_createBoxMatrix() {
|
||||||
int i;
|
int i;
|
||||||
Actor *a;
|
Actor *a;
|
||||||
|
|
||||||
|
@ -770,7 +770,7 @@ void Scumm_v8::o8_createBoxMatrix() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v8::o8_resourceRoutines() {
|
void ScummEngine_v8::o8_resourceRoutines() {
|
||||||
byte subOp = fetchScriptByte();
|
byte subOp = fetchScriptByte();
|
||||||
int resid = pop();
|
int resid = pop();
|
||||||
|
|
||||||
|
@ -838,7 +838,7 @@ void Scumm_v8::o8_resourceRoutines() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v8::o8_roomOps() {
|
void ScummEngine_v8::o8_roomOps() {
|
||||||
byte subOp = fetchScriptByte();
|
byte subOp = fetchScriptByte();
|
||||||
int a, b, c, d, e;
|
int a, b, c, d, e;
|
||||||
|
|
||||||
|
@ -912,7 +912,7 @@ void Scumm_v8::o8_roomOps() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v8::o8_actorOps() {
|
void ScummEngine_v8::o8_actorOps() {
|
||||||
byte subOp = fetchScriptByte();
|
byte subOp = fetchScriptByte();
|
||||||
Actor *a;
|
Actor *a;
|
||||||
int i, j;
|
int i, j;
|
||||||
|
@ -1085,7 +1085,7 @@ void Scumm_v8::o8_actorOps() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v8::o8_cameraOps() {
|
void ScummEngine_v8::o8_cameraOps() {
|
||||||
// TODO
|
// TODO
|
||||||
byte subOp = fetchScriptByte();
|
byte subOp = fetchScriptByte();
|
||||||
switch (subOp) {
|
switch (subOp) {
|
||||||
|
@ -1100,7 +1100,7 @@ void Scumm_v8::o8_cameraOps() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v8::o8_verbOps() {
|
void ScummEngine_v8::o8_verbOps() {
|
||||||
byte subOp = fetchScriptByte();
|
byte subOp = fetchScriptByte();
|
||||||
VerbSlot *vs = NULL;
|
VerbSlot *vs = NULL;
|
||||||
int slot, a, b;
|
int slot, a, b;
|
||||||
|
@ -1218,7 +1218,7 @@ void Scumm_v8::o8_verbOps() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v8::o8_system() {
|
void ScummEngine_v8::o8_system() {
|
||||||
byte subOp = fetchScriptByte();
|
byte subOp = fetchScriptByte();
|
||||||
switch (subOp) {
|
switch (subOp) {
|
||||||
case 0x28: // SO_SYSTEM_RESTART Restart game
|
case 0x28: // SO_SYSTEM_RESTART Restart game
|
||||||
|
@ -1233,7 +1233,7 @@ void Scumm_v8::o8_system() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Scumm_v8::o8_startVideo() {
|
void ScummEngine_v8::o8_startVideo() {
|
||||||
int len = resStrLen(_scriptPointer);
|
int len = resStrLen(_scriptPointer);
|
||||||
|
|
||||||
debug(4, "o8_startVideo(%s/%s)", getGameDataPath(), (const char*)_scriptPointer);
|
debug(4, "o8_startVideo(%s/%s)", getGameDataPath(), (const char*)_scriptPointer);
|
||||||
|
@ -1245,7 +1245,7 @@ void Scumm_v8::o8_startVideo() {
|
||||||
_scriptPointer += len + 1;
|
_scriptPointer += len + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v8::o8_kernelSetFunctions() {
|
void ScummEngine_v8::o8_kernelSetFunctions() {
|
||||||
// TODO
|
// TODO
|
||||||
Actor *a;
|
Actor *a;
|
||||||
int args[30];
|
int args[30];
|
||||||
|
@ -1387,7 +1387,7 @@ void Scumm_v8::o8_kernelSetFunctions() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v8::o8_kernelGetFunctions() {
|
void ScummEngine_v8::o8_kernelGetFunctions() {
|
||||||
// TODO
|
// TODO
|
||||||
int args[30];
|
int args[30];
|
||||||
int len = getStackList(args, ARRAYSIZE(args));
|
int len = getStackList(args, ARRAYSIZE(args));
|
||||||
|
@ -1510,7 +1510,7 @@ void Scumm_v8::o8_kernelGetFunctions() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v8::o8_getActorChore() {
|
void ScummEngine_v8::o8_getActorChore() {
|
||||||
int actnum = pop();
|
int actnum = pop();
|
||||||
Actor *a = derefActor(actnum, "o8_getActorChore");
|
Actor *a = derefActor(actnum, "o8_getActorChore");
|
||||||
|
|
||||||
|
@ -1524,7 +1524,7 @@ void Scumm_v8::o8_getActorChore() {
|
||||||
push(a->frame);
|
push(a->frame);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v8::o8_getActorZPlane() {
|
void ScummEngine_v8::o8_getActorZPlane() {
|
||||||
int actnum = pop();
|
int actnum = pop();
|
||||||
Actor *a = derefActor(actnum, "o8_getActorZPlane");
|
Actor *a = derefActor(actnum, "o8_getActorZPlane");
|
||||||
|
|
||||||
|
@ -1539,27 +1539,27 @@ void Scumm_v8::o8_getActorZPlane() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Scumm_v8::o8_getObjectImageX() {
|
void ScummEngine_v8::o8_getObjectImageX() {
|
||||||
int i = getObjectIndex(pop());
|
int i = getObjectIndex(pop());
|
||||||
push(_objs[i].x_pos);
|
push(_objs[i].x_pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v8::o8_getObjectImageY() {
|
void ScummEngine_v8::o8_getObjectImageY() {
|
||||||
int i = getObjectIndex(pop());
|
int i = getObjectIndex(pop());
|
||||||
push(_objs[i].y_pos);
|
push(_objs[i].y_pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v8::o8_getObjectImageWidth() {
|
void ScummEngine_v8::o8_getObjectImageWidth() {
|
||||||
int i = getObjectIndex(pop());
|
int i = getObjectIndex(pop());
|
||||||
push(_objs[i].width);
|
push(_objs[i].width);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v8::o8_getObjectImageHeight() {
|
void ScummEngine_v8::o8_getObjectImageHeight() {
|
||||||
int i = getObjectIndex(pop());
|
int i = getObjectIndex(pop());
|
||||||
push(_objs[i].height);
|
push(_objs[i].height);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v8::o8_getStringWidth() {
|
void ScummEngine_v8::o8_getStringWidth() {
|
||||||
int charset = pop();
|
int charset = pop();
|
||||||
int oldID = _charset->getCurID();
|
int oldID = _charset->getCurID();
|
||||||
int width;
|
int width;
|
||||||
|
@ -1584,7 +1584,7 @@ void Scumm_v8::o8_getStringWidth() {
|
||||||
push(width);
|
push(width);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v8::o8_drawObject() {
|
void ScummEngine_v8::o8_drawObject() {
|
||||||
int state = pop(), y = pop(), x = pop(), obj = pop(), objnum = getObjectIndex(obj);
|
int state = pop(), y = pop(), x = pop(), obj = pop(), objnum = getObjectIndex(obj);
|
||||||
ObjectData *od;
|
ObjectData *od;
|
||||||
|
|
||||||
|
|
|
@ -45,7 +45,7 @@ class NewGui;
|
||||||
class Player_V2;
|
class Player_V2;
|
||||||
class Player_V2A;
|
class Player_V2A;
|
||||||
class Player_V3A;
|
class Player_V3A;
|
||||||
class Scumm;
|
class ScummEngine;
|
||||||
class ScummDebugger;
|
class ScummDebugger;
|
||||||
class Serializer;
|
class Serializer;
|
||||||
class Sound;
|
class Sound;
|
||||||
|
@ -57,7 +57,7 @@ struct FindObjectInRoom;
|
||||||
typedef Common::Map<Common::String, int> ObjectIDMap;
|
typedef Common::Map<Common::String, int> ObjectIDMap;
|
||||||
|
|
||||||
// Use g_scumm from error() ONLY
|
// Use g_scumm from error() ONLY
|
||||||
extern Scumm *g_scumm;
|
extern ScummEngine *g_scumm;
|
||||||
|
|
||||||
/* System Wide Constants */
|
/* System Wide Constants */
|
||||||
enum {
|
enum {
|
||||||
|
@ -250,7 +250,7 @@ struct LangIndexNode {
|
||||||
int32 offset;
|
int32 offset;
|
||||||
};
|
};
|
||||||
|
|
||||||
class Scumm : public Engine {
|
class ScummEngine : public Engine {
|
||||||
friend class ScummDebugger;
|
friend class ScummDebugger;
|
||||||
friend class SmushPlayer;
|
friend class SmushPlayer;
|
||||||
void errorString(const char *buf_input, char *buf_output);
|
void errorString(const char *buf_input, char *buf_output);
|
||||||
|
@ -291,8 +291,8 @@ protected:
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// Constructor / Destructor
|
// Constructor / Destructor
|
||||||
Scumm(GameDetector *detector, OSystem *syst);
|
ScummEngine(GameDetector *detector, OSystem *syst);
|
||||||
virtual ~Scumm();
|
virtual ~ScummEngine();
|
||||||
|
|
||||||
// Init functions
|
// Init functions
|
||||||
void scummInit();
|
void scummInit();
|
||||||
|
@ -715,7 +715,7 @@ protected:
|
||||||
void setVerbObject(uint room, uint object, uint verb);
|
void setVerbObject(uint room, uint object, uint verb);
|
||||||
|
|
||||||
|
|
||||||
// TODO: This should be moved into Scumm_v2 if possible
|
// TODO: This should be moved into ScummEngine_v2 if possible
|
||||||
V2MouseoverBox v2_mouseover_boxes[7];
|
V2MouseoverBox v2_mouseover_boxes[7];
|
||||||
int8 v2_mouseover_box;
|
int8 v2_mouseover_box;
|
||||||
|
|
||||||
|
|
|
@ -69,7 +69,7 @@ enum MouseButtonStatus {
|
||||||
};
|
};
|
||||||
|
|
||||||
// Use g_scumm from error() ONLY
|
// Use g_scumm from error() ONLY
|
||||||
Scumm *g_scumm = 0;
|
ScummEngine *g_scumm = 0;
|
||||||
ScummDebugger *g_debugger;
|
ScummDebugger *g_debugger;
|
||||||
|
|
||||||
extern NewGui *g_gui;
|
extern NewGui *g_gui;
|
||||||
|
@ -292,25 +292,25 @@ Engine *Engine_SCUMM_create(GameDetector *detector, OSystem *syst) {
|
||||||
switch (detector->_game.version) {
|
switch (detector->_game.version) {
|
||||||
case 1:
|
case 1:
|
||||||
case 2:
|
case 2:
|
||||||
engine = new Scumm_v2(detector, syst);
|
engine = new ScummEngine_v2(detector, syst);
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
engine = new Scumm_v3(detector, syst);
|
engine = new ScummEngine_v3(detector, syst);
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
engine = new Scumm_v4(detector, syst);
|
engine = new ScummEngine_v4(detector, syst);
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
engine = new Scumm_v5(detector, syst);
|
engine = new ScummEngine_v5(detector, syst);
|
||||||
break;
|
break;
|
||||||
case 6:
|
case 6:
|
||||||
engine = new Scumm_v6(detector, syst);
|
engine = new ScummEngine_v6(detector, syst);
|
||||||
break;
|
break;
|
||||||
case 7:
|
case 7:
|
||||||
engine = new Scumm_v7(detector, syst);
|
engine = new ScummEngine_v7(detector, syst);
|
||||||
break;
|
break;
|
||||||
case 8:
|
case 8:
|
||||||
engine = new Scumm_v8(detector, syst);
|
engine = new ScummEngine_v8(detector, syst);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
error("Engine_SCUMM_create(): Unknown version of game engine");
|
error("Engine_SCUMM_create(): Unknown version of game engine");
|
||||||
|
@ -321,7 +321,7 @@ Engine *Engine_SCUMM_create(GameDetector *detector, OSystem *syst) {
|
||||||
|
|
||||||
REGISTER_PLUGIN("Scumm Engine", Engine_SCUMM_targetList, Engine_SCUMM_create);
|
REGISTER_PLUGIN("Scumm Engine", Engine_SCUMM_targetList, Engine_SCUMM_create);
|
||||||
|
|
||||||
Scumm::Scumm (GameDetector *detector, OSystem *syst)
|
ScummEngine::ScummEngine(GameDetector *detector, OSystem *syst)
|
||||||
: Engine(detector, syst), _pauseDialog(0), _optionsDialog(0), _saveLoadDialog(0) {
|
: Engine(detector, syst), _pauseDialog(0), _optionsDialog(0), _saveLoadDialog(0) {
|
||||||
OSystem::Property prop;
|
OSystem::Property prop;
|
||||||
|
|
||||||
|
@ -824,7 +824,7 @@ Scumm::Scumm (GameDetector *detector, OSystem *syst)
|
||||||
_audioNames = NULL;
|
_audioNames = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
Scumm::~Scumm () {
|
ScummEngine::~ScummEngine() {
|
||||||
delete [] _actors;
|
delete [] _actors;
|
||||||
|
|
||||||
delete _2byteFontPtr;
|
delete _2byteFontPtr;
|
||||||
|
@ -868,7 +868,7 @@ Scumm::~Scumm () {
|
||||||
delete g_debugger;
|
delete g_debugger;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::go() {
|
void ScummEngine::go() {
|
||||||
launch();
|
launch();
|
||||||
mainRun();
|
mainRun();
|
||||||
}
|
}
|
||||||
|
@ -877,7 +877,7 @@ void Scumm::go() {
|
||||||
#pragma mark --- Initialization ---
|
#pragma mark --- Initialization ---
|
||||||
#pragma mark -
|
#pragma mark -
|
||||||
|
|
||||||
void Scumm::launch() {
|
void ScummEngine::launch() {
|
||||||
gdi._vm = this;
|
gdi._vm = this;
|
||||||
|
|
||||||
#ifdef __PALM_OS__
|
#ifdef __PALM_OS__
|
||||||
|
@ -961,7 +961,7 @@ void Scumm::launch() {
|
||||||
_saveLoadFlag = 0;
|
_saveLoadFlag = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::setFeatures (uint32 newFeatures) {
|
void ScummEngine::setFeatures (uint32 newFeatures) {
|
||||||
bool newCostumes = (_features & GF_NEW_COSTUMES) != 0;
|
bool newCostumes = (_features & GF_NEW_COSTUMES) != 0;
|
||||||
bool newNewCostumes = (newFeatures & GF_NEW_COSTUMES) != 0;
|
bool newNewCostumes = (newFeatures & GF_NEW_COSTUMES) != 0;
|
||||||
bool amigaPalette = (_features & GF_AMIGA) != 0;
|
bool amigaPalette = (_features & GF_AMIGA) != 0;
|
||||||
|
@ -985,7 +985,7 @@ void Scumm::setFeatures (uint32 newFeatures) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::scummInit() {
|
void ScummEngine::scummInit() {
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
tempMusic = 0;
|
tempMusic = 0;
|
||||||
|
@ -1152,7 +1152,7 @@ void Scumm::scummInit() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Scumm::initScummVars() {
|
void ScummEngine::initScummVars() {
|
||||||
|
|
||||||
// FIXME
|
// FIXME
|
||||||
if (_version <= 2) {
|
if (_version <= 2) {
|
||||||
|
@ -1237,7 +1237,7 @@ void Scumm::initScummVars() {
|
||||||
#pragma mark --- Main loop ---
|
#pragma mark --- Main loop ---
|
||||||
#pragma mark -
|
#pragma mark -
|
||||||
|
|
||||||
void Scumm::mainRun() {
|
void ScummEngine::mainRun() {
|
||||||
int delta = 0;
|
int delta = 0;
|
||||||
int diff = _system->get_msecs();
|
int diff = _system->get_msecs();
|
||||||
|
|
||||||
|
@ -1261,7 +1261,7 @@ void Scumm::mainRun() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::waitForTimer(int msec_delay) {
|
void ScummEngine::waitForTimer(int msec_delay) {
|
||||||
uint32 start_time;
|
uint32 start_time;
|
||||||
|
|
||||||
if (_fastMode & 2)
|
if (_fastMode & 2)
|
||||||
|
@ -1281,7 +1281,7 @@ void Scumm::waitForTimer(int msec_delay) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int Scumm::scummLoop(int delta) {
|
int ScummEngine::scummLoop(int delta) {
|
||||||
if (_debugger)
|
if (_debugger)
|
||||||
_debugger->on_frame();
|
_debugger->on_frame();
|
||||||
|
|
||||||
|
@ -1571,7 +1571,7 @@ load_game:
|
||||||
#pragma mark --- Events / Input ---
|
#pragma mark --- Events / Input ---
|
||||||
#pragma mark -
|
#pragma mark -
|
||||||
|
|
||||||
void Scumm::parseEvents() {
|
void ScummEngine::parseEvents() {
|
||||||
OSystem::Event event;
|
OSystem::Event event;
|
||||||
|
|
||||||
while (_system->poll_event(&event)) {
|
while (_system->poll_event(&event)) {
|
||||||
|
@ -1671,14 +1671,14 @@ void Scumm::parseEvents() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::clearClickedStatus() {
|
void ScummEngine::clearClickedStatus() {
|
||||||
_keyPressed = 0;
|
_keyPressed = 0;
|
||||||
_mouseButStat = 0;
|
_mouseButStat = 0;
|
||||||
_leftBtnPressed &= ~msClicked;
|
_leftBtnPressed &= ~msClicked;
|
||||||
_rightBtnPressed &= ~msClicked;
|
_rightBtnPressed &= ~msClicked;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::processKbd() {
|
void ScummEngine::processKbd() {
|
||||||
int saveloadkey;
|
int saveloadkey;
|
||||||
|
|
||||||
_lastKeyHit = _keyPressed;
|
_lastKeyHit = _keyPressed;
|
||||||
|
@ -1907,7 +1907,7 @@ void Scumm::processKbd() {
|
||||||
* Start a 'scene' by loading the specified room with the given main actor.
|
* Start a 'scene' by loading the specified room with the given main actor.
|
||||||
* The actor is placed next to the object indicated by objectNr.
|
* The actor is placed next to the object indicated by objectNr.
|
||||||
*/
|
*/
|
||||||
void Scumm::startScene(int room, Actor *a, int objectNr) {
|
void ScummEngine::startScene(int room, Actor *a, int objectNr) {
|
||||||
int i, where;
|
int i, where;
|
||||||
|
|
||||||
CHECK_HEAP;
|
CHECK_HEAP;
|
||||||
|
@ -2082,7 +2082,7 @@ void Scumm::startScene(int room, Actor *a, int objectNr) {
|
||||||
CHECK_HEAP;
|
CHECK_HEAP;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::initRoomSubBlocks() {
|
void ScummEngine::initRoomSubBlocks() {
|
||||||
int i;
|
int i;
|
||||||
const byte *ptr;
|
const byte *ptr;
|
||||||
byte *roomptr, *searchptr, *roomResPtr;
|
byte *roomptr, *searchptr, *roomResPtr;
|
||||||
|
@ -2430,15 +2430,15 @@ void Scumm::initRoomSubBlocks() {
|
||||||
initBGBuffers(_roomHeight);
|
initBGBuffers(_roomHeight);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::pauseGame() {
|
void ScummEngine::pauseGame() {
|
||||||
pauseDialog();
|
pauseDialog();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::shutDown() {
|
void ScummEngine::shutDown() {
|
||||||
_quit = true;
|
_quit = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::restart() {
|
void ScummEngine::restart() {
|
||||||
// TODO: Check this function - we should probably be reinitting a lot more stuff, and I suspect
|
// TODO: Check this function - we should probably be reinitting a lot more stuff, and I suspect
|
||||||
// this leaks memory like a sieve
|
// this leaks memory like a sieve
|
||||||
|
|
||||||
|
@ -2470,7 +2470,7 @@ void Scumm::restart() {
|
||||||
runScript(1, 0, 0, &_bootParam);
|
runScript(1, 0, 0, &_bootParam);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::startManiac() {
|
void ScummEngine::startManiac() {
|
||||||
warning("stub startManiac()");
|
warning("stub startManiac()");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2478,7 +2478,7 @@ void Scumm::startManiac() {
|
||||||
#pragma mark --- GUI ---
|
#pragma mark --- GUI ---
|
||||||
#pragma mark -
|
#pragma mark -
|
||||||
|
|
||||||
int Scumm::runDialog(Dialog &dialog) {
|
int ScummEngine::runDialog(Dialog &dialog) {
|
||||||
// Pause sound put
|
// Pause sound put
|
||||||
bool old_soundsPaused = _sound->_soundsPaused;
|
bool old_soundsPaused = _sound->_soundsPaused;
|
||||||
_sound->pauseSounds(true);
|
_sound->pauseSounds(true);
|
||||||
|
@ -2503,25 +2503,25 @@ int Scumm::runDialog(Dialog &dialog) {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::pauseDialog() {
|
void ScummEngine::pauseDialog() {
|
||||||
if (!_pauseDialog)
|
if (!_pauseDialog)
|
||||||
_pauseDialog = new PauseDialog(_newgui, this);
|
_pauseDialog = new PauseDialog(_newgui, this);
|
||||||
runDialog(*_pauseDialog);
|
runDialog(*_pauseDialog);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::saveloadDialog() {
|
void ScummEngine::saveloadDialog() {
|
||||||
if (!_saveLoadDialog)
|
if (!_saveLoadDialog)
|
||||||
_saveLoadDialog = new SaveLoadDialog(_newgui, this);
|
_saveLoadDialog = new SaveLoadDialog(_newgui, this);
|
||||||
runDialog(*_saveLoadDialog);
|
runDialog(*_saveLoadDialog);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::optionsDialog() {
|
void ScummEngine::optionsDialog() {
|
||||||
if (!_optionsDialog)
|
if (!_optionsDialog)
|
||||||
_optionsDialog = new OptionsDialog(_newgui, this);
|
_optionsDialog = new OptionsDialog(_newgui, this);
|
||||||
runDialog(*_optionsDialog);
|
runDialog(*_optionsDialog);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::confirmexitDialog() {
|
void ScummEngine::confirmexitDialog() {
|
||||||
if (!_confirmExitDialog)
|
if (!_confirmExitDialog)
|
||||||
_confirmExitDialog = new ConfirmExitDialog(_newgui, this);
|
_confirmExitDialog = new ConfirmExitDialog(_newgui, this);
|
||||||
|
|
||||||
|
@ -2530,7 +2530,7 @@ void Scumm::confirmexitDialog() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
char Scumm::displayError(bool showCancel, const char *message, ...) {
|
char ScummEngine::displayError(bool showCancel, const char *message, ...) {
|
||||||
#ifdef __PALM_OS__
|
#ifdef __PALM_OS__
|
||||||
char buf[256]; // 1024 is too big overflow the stack
|
char buf[256]; // 1024 is too big overflow the stack
|
||||||
#else
|
#else
|
||||||
|
@ -2550,7 +2550,7 @@ char Scumm::displayError(bool showCancel, const char *message, ...) {
|
||||||
#pragma mark --- Miscellaneous ---
|
#pragma mark --- Miscellaneous ---
|
||||||
#pragma mark -
|
#pragma mark -
|
||||||
|
|
||||||
byte *Scumm::get2byteCharPtr(int idx) {
|
byte *ScummEngine::get2byteCharPtr(int idx) {
|
||||||
/*
|
/*
|
||||||
switch(language)
|
switch(language)
|
||||||
case korean:
|
case korean:
|
||||||
|
@ -2565,7 +2565,7 @@ byte *Scumm::get2byteCharPtr(int idx) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const char *Scumm::getGameDataPath() const {
|
const char *ScummEngine::getGameDataPath() const {
|
||||||
#ifdef MACOSX
|
#ifdef MACOSX
|
||||||
if (_version == 8 && !memcmp(_gameDataPath, "/Volumes/MONKEY3_", 17)) {
|
if (_version == 8 && !memcmp(_gameDataPath, "/Volumes/MONKEY3_", 17)) {
|
||||||
// Special case for COMI on Mac OS X. The mount points on OS X depend
|
// Special case for COMI on Mac OS X. The mount points on OS X depend
|
||||||
|
@ -2594,7 +2594,7 @@ const char *Scumm::getGameDataPath() const {
|
||||||
return _gameDataPath;
|
return _gameDataPath;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::errorString(const char *buf1, char *buf2) {
|
void ScummEngine::errorString(const char *buf1, char *buf2) {
|
||||||
if (_currentScript != 0xFF) {
|
if (_currentScript != 0xFF) {
|
||||||
ScriptSlot *ss = &vm.slot[_currentScript];
|
ScriptSlot *ss = &vm.slot[_currentScript];
|
||||||
sprintf(buf2, "(%d:%d:0x%X): %s", _roomResource,
|
sprintf(buf2, "(%d:%d:0x%X): %s", _roomResource,
|
||||||
|
|
|
@ -196,7 +196,7 @@ static StringResource *getStrings(const char *file, const char *directory, bool
|
||||||
SmushPlayer *player;
|
SmushPlayer *player;
|
||||||
|
|
||||||
void SmushPlayer::timerCallback(void *refCon) {
|
void SmushPlayer::timerCallback(void *refCon) {
|
||||||
Scumm *scumm = (Scumm *)refCon;
|
ScummEngine *scumm = (ScummEngine *)refCon;
|
||||||
if (!scumm->_smushPlay)
|
if (!scumm->_smushPlay)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -205,7 +205,7 @@ void SmushPlayer::timerCallback(void *refCon) {
|
||||||
player->_smushProcessFrame = false;
|
player->_smushProcessFrame = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
SmushPlayer::SmushPlayer(Scumm *scumm, int speed, bool subtitles) {
|
SmushPlayer::SmushPlayer(ScummEngine *scumm, int speed, bool subtitles) {
|
||||||
player = this;
|
player = this;
|
||||||
|
|
||||||
_scumm = scumm;
|
_scumm = scumm;
|
||||||
|
|
|
@ -34,7 +34,7 @@ class StringResource;
|
||||||
|
|
||||||
class SmushPlayer {
|
class SmushPlayer {
|
||||||
private:
|
private:
|
||||||
Scumm *_scumm;
|
ScummEngine *_scumm;
|
||||||
int _version;
|
int _version;
|
||||||
int32 _nbframes;
|
int32 _nbframes;
|
||||||
SmushMixer *_smixer;
|
SmushMixer *_smixer;
|
||||||
|
@ -68,7 +68,7 @@ private:
|
||||||
volatile bool _smushProcessFrame;
|
volatile bool _smushProcessFrame;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
SmushPlayer(Scumm *, int, bool);
|
SmushPlayer(ScummEngine *, int, bool);
|
||||||
~SmushPlayer();
|
~SmushPlayer();
|
||||||
|
|
||||||
void play(const char *filename, const char *directory);
|
void play(const char *filename, const char *directory);
|
||||||
|
|
|
@ -90,7 +90,7 @@ public:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Sound::Sound(Scumm *parent) {
|
Sound::Sound(ScummEngine *parent) {
|
||||||
memset(this,0,sizeof(Sound)); // palmos
|
memset(this,0,sizeof(Sound)); // palmos
|
||||||
|
|
||||||
_scumm = parent;
|
_scumm = parent;
|
||||||
|
@ -640,7 +640,7 @@ int Sound::isSoundRunning(int sound) const {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check whether the sound resource with the specified ID is still
|
* Check whether the sound resource with the specified ID is still
|
||||||
* used. This is invoked by Scumm::isResourceInUse, to determine
|
* used. This is invoked by ScummEngine::isResourceInUse, to determine
|
||||||
* which resources can be expired from memory.
|
* which resources can be expired from memory.
|
||||||
* Technically, this works very similar to isSoundRunning, however it
|
* Technically, this works very similar to isSoundRunning, however it
|
||||||
* calls IMuse::get_sound_active() instead of IMuse::getSoundStatus().
|
* calls IMuse::get_sound_active() instead of IMuse::getSoundStatus().
|
||||||
|
@ -1060,7 +1060,7 @@ void Sound::stopBundleMusic() {
|
||||||
_musicBundleToBeRemoved = true;
|
_musicBundleToBeRemoved = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Sound::bundleMusicHandler(Scumm *scumm) {
|
void Sound::bundleMusicHandler(ScummEngine *scumm) {
|
||||||
byte *ptr;
|
byte *ptr;
|
||||||
int32 l, num = _numberSamplesBundleMusic, length, k;
|
int32 l, num = _numberSamplesBundleMusic, length, k;
|
||||||
int32 rate = 22050;
|
int32 rate = 22050;
|
||||||
|
@ -1399,7 +1399,7 @@ void Sound::playSfxSound_Vorbis(File *file, uint32 size, PlayingSoundHandle *han
|
||||||
// necessary for games like Loom CD.
|
// necessary for games like Loom CD.
|
||||||
|
|
||||||
static void cd_timer_handler(void *refCon) {
|
static void cd_timer_handler(void *refCon) {
|
||||||
Scumm *scumm = (Scumm *)refCon;
|
ScummEngine *scumm = (ScummEngine *)refCon;
|
||||||
|
|
||||||
// FIXME: Turn off the timer when it's no longer needed. In theory, it
|
// FIXME: Turn off the timer when it's no longer needed. In theory, it
|
||||||
// should be possible to check with pollCD(), but since CD sound isn't
|
// should be possible to check with pollCD(), but since CD sound isn't
|
||||||
|
|
|
@ -27,7 +27,7 @@
|
||||||
class Bundle;
|
class Bundle;
|
||||||
class DigitalTrackInfo;
|
class DigitalTrackInfo;
|
||||||
class File;
|
class File;
|
||||||
class Scumm;
|
class ScummEngine;
|
||||||
|
|
||||||
struct MP3OffsetTable;
|
struct MP3OffsetTable;
|
||||||
|
|
||||||
|
@ -93,7 +93,7 @@ protected:
|
||||||
DigitalTrackInfo *_track_info[CACHE_TRACKS];
|
DigitalTrackInfo *_track_info[CACHE_TRACKS];
|
||||||
int _current_cache;
|
int _current_cache;
|
||||||
|
|
||||||
Scumm *_scumm;
|
ScummEngine *_scumm;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
int32 _bundleMusicPosition;
|
int32 _bundleMusicPosition;
|
||||||
|
@ -106,10 +106,10 @@ public:
|
||||||
// update iMuse/iMuseDigi/Player_v2/SoundMIxer, too
|
// update iMuse/iMuseDigi/Player_v2/SoundMIxer, too
|
||||||
int16 _sound_volume_master, _sound_volume_music, _sound_volume_sfx;
|
int16 _sound_volume_master, _sound_volume_music, _sound_volume_sfx;
|
||||||
|
|
||||||
Bundle *_bundle; // FIXME: should be protected but is used by Scumm::askForDisk
|
Bundle *_bundle; // FIXME: should be protected but is used by ScummEngine::askForDisk
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Sound(Scumm *parent);
|
Sound(ScummEngine *parent);
|
||||||
~Sound();
|
~Sound();
|
||||||
void addSoundToQueue(int sound);
|
void addSoundToQueue(int sound);
|
||||||
void addSoundToQueue2(int sound);
|
void addSoundToQueue2(int sound);
|
||||||
|
@ -131,7 +131,7 @@ public:
|
||||||
|
|
||||||
void playBundleMusic(const char *song);
|
void playBundleMusic(const char *song);
|
||||||
void pauseBundleMusic(bool state);
|
void pauseBundleMusic(bool state);
|
||||||
void bundleMusicHandler(Scumm *scumm);
|
void bundleMusicHandler(ScummEngine *scumm);
|
||||||
void stopBundleMusic();
|
void stopBundleMusic();
|
||||||
void playBundleSound(char *sound, PlayingSoundHandle *handle);
|
void playBundleSound(char *sound, PlayingSoundHandle *handle);
|
||||||
|
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
#include "verbs.h"
|
#include "verbs.h"
|
||||||
#include "scumm/sound.h"
|
#include "scumm/sound.h"
|
||||||
|
|
||||||
void Scumm::setStringVars(int slot) {
|
void ScummEngine::setStringVars(int slot) {
|
||||||
StringTab *st = &_string[slot];
|
StringTab *st = &_string[slot];
|
||||||
st->xpos = st->t_xpos;
|
st->xpos = st->t_xpos;
|
||||||
st->ypos = st->t_ypos;
|
st->ypos = st->t_ypos;
|
||||||
|
@ -40,7 +40,7 @@ void Scumm::setStringVars(int slot) {
|
||||||
st->charset = st->t_charset;
|
st->charset = st->t_charset;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::unkMessage1() {
|
void ScummEngine::unkMessage1() {
|
||||||
byte buffer[100];
|
byte buffer[100];
|
||||||
_msgPtrToAdd = buffer;
|
_msgPtrToAdd = buffer;
|
||||||
_messagePtr = addMessageToStack(_messagePtr);
|
_messagePtr = addMessageToStack(_messagePtr);
|
||||||
|
@ -66,7 +66,7 @@ void Scumm::unkMessage1() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::unkMessage2() {
|
void ScummEngine::unkMessage2() {
|
||||||
byte buf[100];
|
byte buf[100];
|
||||||
const byte *tmp;
|
const byte *tmp;
|
||||||
|
|
||||||
|
@ -84,7 +84,7 @@ void Scumm::unkMessage2() {
|
||||||
_messagePtr = tmp;
|
_messagePtr = tmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::CHARSET_1() {
|
void ScummEngine::CHARSET_1() {
|
||||||
uint32 talk_sound_a = 0;
|
uint32 talk_sound_a = 0;
|
||||||
uint32 talk_sound_b = 0;
|
uint32 talk_sound_b = 0;
|
||||||
int s, i, t, c;
|
int s, i, t, c;
|
||||||
|
@ -344,7 +344,7 @@ void Scumm::CHARSET_1() {
|
||||||
gdi._mask = _charset->_str;
|
gdi._mask = _charset->_str;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::drawString(int a) {
|
void ScummEngine::drawString(int a) {
|
||||||
byte buf[256];
|
byte buf[256];
|
||||||
byte *space;
|
byte *space;
|
||||||
int i, c;
|
int i, c;
|
||||||
|
@ -460,7 +460,7 @@ void Scumm::drawString(int a) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const byte *Scumm::addMessageToStack(const byte *msg) {
|
const byte *ScummEngine::addMessageToStack(const byte *msg) {
|
||||||
int num, numorg;
|
int num, numorg;
|
||||||
unsigned char *ptr, chr;
|
unsigned char *ptr, chr;
|
||||||
|
|
||||||
|
@ -580,14 +580,14 @@ const byte *Scumm::addMessageToStack(const byte *msg) {
|
||||||
return msg;
|
return msg;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::addIntToStack(int var) {
|
void ScummEngine::addIntToStack(int var) {
|
||||||
int num;
|
int num;
|
||||||
|
|
||||||
num = readVar(var);
|
num = readVar(var);
|
||||||
_msgPtrToAdd += sprintf((char *)_msgPtrToAdd, "%d", num);
|
_msgPtrToAdd += sprintf((char *)_msgPtrToAdd, "%d", num);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::addVerbToStack(int var)
|
void ScummEngine::addVerbToStack(int var)
|
||||||
{
|
{
|
||||||
int num, k;
|
int num, k;
|
||||||
|
|
||||||
|
@ -606,7 +606,7 @@ void Scumm::addVerbToStack(int var)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::addNameToStack(int var)
|
void ScummEngine::addNameToStack(int var)
|
||||||
{
|
{
|
||||||
int num;
|
int num;
|
||||||
const byte *ptr = 0;
|
const byte *ptr = 0;
|
||||||
|
@ -626,7 +626,7 @@ void Scumm::addNameToStack(int var)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::addStringToStack(int var) {
|
void ScummEngine::addStringToStack(int var) {
|
||||||
const byte *ptr;
|
const byte *ptr;
|
||||||
|
|
||||||
if (_version == 3 || _version >= 6)
|
if (_version == 3 || _version >= 6)
|
||||||
|
@ -646,7 +646,7 @@ void Scumm::addStringToStack(int var) {
|
||||||
addMessageToStack((const byte *)"");
|
addMessageToStack((const byte *)"");
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::initCharset(int charsetno) {
|
void ScummEngine::initCharset(int charsetno) {
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (!getResourceAddress(rtCharset, charsetno))
|
if (!getResourceAddress(rtCharset, charsetno))
|
||||||
|
@ -659,7 +659,7 @@ void Scumm::initCharset(int charsetno) {
|
||||||
_charsetColorMap[i] = _charsetData[charsetno][i];
|
_charsetColorMap[i] = _charsetData[charsetno][i];
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::enqueueText(const byte *text, int x, int y, byte color, byte charset, bool center) {
|
void ScummEngine::enqueueText(const byte *text, int x, int y, byte color, byte charset, bool center) {
|
||||||
// The Dig will keep enqueueing texts long after they've scrolled off
|
// The Dig will keep enqueueing texts long after they've scrolled off
|
||||||
// the screen, eventually overflowing the blast text queue if left
|
// the screen, eventually overflowing the blast text queue if left
|
||||||
// unchecked.
|
// unchecked.
|
||||||
|
@ -688,7 +688,7 @@ void Scumm::enqueueText(const byte *text, int x, int y, byte color, byte charset
|
||||||
bt.center = center;
|
bt.center = center;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::drawBlastTexts() {
|
void ScummEngine::drawBlastTexts() {
|
||||||
byte *buf;
|
byte *buf;
|
||||||
int c;
|
int c;
|
||||||
int i;
|
int i;
|
||||||
|
@ -733,7 +733,7 @@ void Scumm::drawBlastTexts() {
|
||||||
_charset->_ignoreCharsetMask = false;
|
_charset->_ignoreCharsetMask = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::removeBlastTexts() {
|
void ScummEngine::removeBlastTexts() {
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 0; i < _blastTextQueuePos; i++) {
|
for (i = 0; i < _blastTextQueuePos; i++) {
|
||||||
|
@ -749,7 +749,7 @@ int indexCompare(const void *p1, const void *p2) {
|
||||||
return strcmp(i1->tag, i2->tag);
|
return strcmp(i1->tag, i2->tag);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::loadLanguageBundle() {
|
void ScummEngine::loadLanguageBundle() {
|
||||||
File file;
|
File file;
|
||||||
int32 size;
|
int32 size;
|
||||||
|
|
||||||
|
@ -883,7 +883,7 @@ void Scumm::loadLanguageBundle() {
|
||||||
qsort(_languageIndex, _languageIndexSize, sizeof(LangIndexNode), indexCompare);
|
qsort(_languageIndex, _languageIndexSize, sizeof(LangIndexNode), indexCompare);
|
||||||
}
|
}
|
||||||
|
|
||||||
const byte *Scumm::translateTextAndPlaySpeech(const byte *ptr) {
|
const byte *ScummEngine::translateTextAndPlaySpeech(const byte *ptr) {
|
||||||
if ((_gameId == GID_DIG || _gameId == GID_CMI) && (ptr[0] == '/')) {
|
if ((_gameId == GID_DIG || _gameId == GID_CMI) && (ptr[0] == '/')) {
|
||||||
char pointer[20];
|
char pointer[20];
|
||||||
int i, j;
|
int i, j;
|
||||||
|
@ -903,7 +903,7 @@ const byte *Scumm::translateTextAndPlaySpeech(const byte *ptr) {
|
||||||
return ptr;
|
return ptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::translateText(const byte *text, byte *trans_buff) {
|
void ScummEngine::translateText(const byte *text, byte *trans_buff) {
|
||||||
int l;
|
int l;
|
||||||
|
|
||||||
if ((text[0] == '/') && _existLanguageFile) {
|
if ((text[0] == '/') && _existLanguageFile) {
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
#include "scumm.h"
|
#include "scumm.h"
|
||||||
#include "usage_bits.h"
|
#include "usage_bits.h"
|
||||||
|
|
||||||
void Scumm::upgradeGfxUsageBits() {
|
void ScummEngine::upgradeGfxUsageBits() {
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 409; i >= 0; i--) {
|
for (i = 409; i >= 0; i--) {
|
||||||
|
@ -35,25 +35,25 @@ void Scumm::upgradeGfxUsageBits() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::setGfxUsageBit(int strip, int bit) {
|
void ScummEngine::setGfxUsageBit(int strip, int bit) {
|
||||||
assert(1 <= bit && bit <= 96);
|
assert(1 <= bit && bit <= 96);
|
||||||
bit--;
|
bit--;
|
||||||
gfxUsageBits[3 * strip + bit / 32] |= (1 << (bit % 32));
|
gfxUsageBits[3 * strip + bit / 32] |= (1 << (bit % 32));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::clearGfxUsageBit(int strip, int bit) {
|
void ScummEngine::clearGfxUsageBit(int strip, int bit) {
|
||||||
assert(1 <= bit && bit <= 96);
|
assert(1 <= bit && bit <= 96);
|
||||||
bit--;
|
bit--;
|
||||||
gfxUsageBits[3 * strip + bit / 32] &= ~(1 << (bit % 32));
|
gfxUsageBits[3 * strip + bit / 32] &= ~(1 << (bit % 32));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Scumm::testGfxUsageBit(int strip, int bit) {
|
bool ScummEngine::testGfxUsageBit(int strip, int bit) {
|
||||||
assert(1 <= bit && bit <= 96);
|
assert(1 <= bit && bit <= 96);
|
||||||
bit--;
|
bit--;
|
||||||
return (gfxUsageBits[3 * strip + bit / 32] & (1 << (bit % 32))) != 0;
|
return (gfxUsageBits[3 * strip + bit / 32] & (1 << (bit % 32))) != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Scumm::testGfxAnyUsageBits(int strip) {
|
bool ScummEngine::testGfxAnyUsageBits(int strip) {
|
||||||
// Exclude the DIRTY and RESTORED bits from the test
|
// Exclude the DIRTY and RESTORED bits from the test
|
||||||
uint32 bitmask[3] = { 0xFFFFFFFF, 0xFFFFFFFF, 0x3FFFFFFF };
|
uint32 bitmask[3] = { 0xFFFFFFFF, 0xFFFFFFFF, 0x3FFFFFFF };
|
||||||
int i;
|
int i;
|
||||||
|
@ -65,7 +65,7 @@ bool Scumm::testGfxAnyUsageBits(int strip) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Scumm::testGfxOtherUsageBits(int strip, int bit) {
|
bool ScummEngine::testGfxOtherUsageBits(int strip, int bit) {
|
||||||
// Don't exclude the DIRTY and RESTORED bits from the test
|
// Don't exclude the DIRTY and RESTORED bits from the test
|
||||||
uint32 bitmask[3] = { 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF };
|
uint32 bitmask[3] = { 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF };
|
||||||
int i;
|
int i;
|
||||||
|
|
|
@ -25,7 +25,7 @@
|
||||||
#include "scumm.h"
|
#include "scumm.h"
|
||||||
#include "intern.h"
|
#include "intern.h"
|
||||||
|
|
||||||
void Scumm::setupScummVars() {
|
void ScummEngine::setupScummVars() {
|
||||||
VAR_KEYPRESS = 0;
|
VAR_KEYPRESS = 0;
|
||||||
VAR_EGO = 1;
|
VAR_EGO = 1;
|
||||||
VAR_CAMERA_POS_X = 2;
|
VAR_CAMERA_POS_X = 2;
|
||||||
|
@ -99,7 +99,7 @@ void Scumm::setupScummVars() {
|
||||||
VAR_VERSION = 75;
|
VAR_VERSION = 75;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::setupScummVars() {
|
void ScummEngine_v2::setupScummVars() {
|
||||||
VAR_EGO = 0;
|
VAR_EGO = 0;
|
||||||
VAR_CAMERA_POS_X = 2;
|
VAR_CAMERA_POS_X = 2;
|
||||||
VAR_HAVE_MSG = 3;
|
VAR_HAVE_MSG = 3;
|
||||||
|
@ -136,9 +136,9 @@ void Scumm_v2::setupScummVars() {
|
||||||
VAR_TALK_ACTOR = 41;
|
VAR_TALK_ACTOR = 41;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v6::setupScummVars() {
|
void ScummEngine_v6::setupScummVars() {
|
||||||
// Many vars are the same as in V5 games, so just call the inherited method first
|
// Many vars are the same as in V5 games, so just call the inherited method first
|
||||||
Scumm::setupScummVars();
|
ScummEngine::setupScummVars();
|
||||||
|
|
||||||
VAR_V6_SCREEN_WIDTH = 41;
|
VAR_V6_SCREEN_WIDTH = 41;
|
||||||
VAR_V6_SCREEN_HEIGHT = 54;
|
VAR_V6_SCREEN_HEIGHT = 54;
|
||||||
|
@ -154,7 +154,7 @@ void Scumm_v6::setupScummVars() {
|
||||||
VAR_TIMEDATE_MINUTE = 126;
|
VAR_TIMEDATE_MINUTE = 126;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v7::setupScummVars() {
|
void ScummEngine_v7::setupScummVars() {
|
||||||
VAR_MOUSE_X = 1;
|
VAR_MOUSE_X = 1;
|
||||||
VAR_MOUSE_Y = 2;
|
VAR_MOUSE_Y = 2;
|
||||||
VAR_VIRT_MOUSE_X = 3;
|
VAR_VIRT_MOUSE_X = 3;
|
||||||
|
@ -238,7 +238,7 @@ void Scumm_v7::setupScummVars() {
|
||||||
VAR_STRING2DRAW = 130;
|
VAR_STRING2DRAW = 130;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v8::setupScummVars() {
|
void ScummEngine_v8::setupScummVars() {
|
||||||
// VAR_ROOM_HEIGHT = 1;
|
// VAR_ROOM_HEIGHT = 1;
|
||||||
// VAR_ROOM_WIDTH = 2;
|
// VAR_ROOM_WIDTH = 2;
|
||||||
|
|
||||||
|
|
|
@ -33,7 +33,7 @@ enum {
|
||||||
kSentenceLine = 6
|
kSentenceLine = 6
|
||||||
};
|
};
|
||||||
|
|
||||||
void Scumm::initV2MouseOver() {
|
void ScummEngine::initV2MouseOver() {
|
||||||
int i;
|
int i;
|
||||||
int arrow_color, color, hi_color;
|
int arrow_color, color, hi_color;
|
||||||
|
|
||||||
|
@ -99,7 +99,7 @@ void Scumm::initV2MouseOver() {
|
||||||
v2_mouseover_boxes[kSentenceLine].hicolor = hi_color;
|
v2_mouseover_boxes[kSentenceLine].hicolor = hi_color;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::checkV2MouseOver(Common::Point pos) {
|
void ScummEngine::checkV2MouseOver(Common::Point pos) {
|
||||||
VirtScreen *vs = &virtscr[2];
|
VirtScreen *vs = &virtscr[2];
|
||||||
Common::Rect rect;
|
Common::Rect rect;
|
||||||
byte *ptr, *dst;
|
byte *ptr, *dst;
|
||||||
|
@ -159,7 +159,7 @@ void Scumm::checkV2MouseOver(Common::Point pos) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::checkV2Inventory(int x, int y) {
|
void ScummEngine::checkV2Inventory(int x, int y) {
|
||||||
int object = 0;
|
int object = 0;
|
||||||
|
|
||||||
y -= virtscr[2].topline;
|
y -= virtscr[2].topline;
|
||||||
|
@ -194,7 +194,7 @@ void Scumm::checkV2Inventory(int x, int y) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::redrawV2Inventory() {
|
void ScummEngine::redrawV2Inventory() {
|
||||||
int i;
|
int i;
|
||||||
int max_inv;
|
int max_inv;
|
||||||
Common::Rect inventoryBox;
|
Common::Rect inventoryBox;
|
||||||
|
@ -259,7 +259,7 @@ void Scumm::redrawV2Inventory() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::redrawVerbs() {
|
void ScummEngine::redrawVerbs() {
|
||||||
if (_version <= 2 && !(_userState & 128)) // Don't draw verbs unless active
|
if (_version <= 2 && !(_userState & 128)) // Don't draw verbs unless active
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -274,7 +274,7 @@ void Scumm::redrawVerbs() {
|
||||||
_verbMouseOver = verb;
|
_verbMouseOver = verb;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::checkExecVerbs() {
|
void ScummEngine::checkExecVerbs() {
|
||||||
int i, over;
|
int i, over;
|
||||||
VerbSlot *vs;
|
VerbSlot *vs;
|
||||||
|
|
||||||
|
@ -317,7 +317,7 @@ void Scumm::checkExecVerbs() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::verbMouseOver(int verb) {
|
void ScummEngine::verbMouseOver(int verb) {
|
||||||
// Don't do anything unless verbs are active
|
// Don't do anything unless verbs are active
|
||||||
if (_version <= 2 && !(_userState & 128))
|
if (_version <= 2 && !(_userState & 128))
|
||||||
return;
|
return;
|
||||||
|
@ -336,7 +336,7 @@ void Scumm::verbMouseOver(int verb) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int Scumm::checkMouseOver(int x, int y) const {
|
int ScummEngine::checkMouseOver(int x, int y) const {
|
||||||
VerbSlot *vs;
|
VerbSlot *vs;
|
||||||
int i = _maxVerbs - 1;
|
int i = _maxVerbs - 1;
|
||||||
|
|
||||||
|
@ -358,7 +358,7 @@ int Scumm::checkMouseOver(int x, int y) const {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::drawVerb(int verb, int mode) {
|
void ScummEngine::drawVerb(int verb, int mode) {
|
||||||
VerbSlot *vs;
|
VerbSlot *vs;
|
||||||
bool tmp;
|
bool tmp;
|
||||||
|
|
||||||
|
@ -418,7 +418,7 @@ void Scumm::drawVerb(int verb, int mode) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::restoreVerbBG(int verb) {
|
void ScummEngine::restoreVerbBG(int verb) {
|
||||||
VerbSlot *vs;
|
VerbSlot *vs;
|
||||||
|
|
||||||
vs = &_verbs[verb];
|
vs = &_verbs[verb];
|
||||||
|
@ -429,7 +429,7 @@ void Scumm::restoreVerbBG(int verb) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::drawVerbBitmap(int verb, int x, int y) {
|
void ScummEngine::drawVerbBitmap(int verb, int x, int y) {
|
||||||
VirtScreen *vs;
|
VirtScreen *vs;
|
||||||
VerbSlot *vst;
|
VerbSlot *vst;
|
||||||
byte twobufs;
|
byte twobufs;
|
||||||
|
@ -499,7 +499,7 @@ void Scumm::drawVerbBitmap(int verb, int x, int y) {
|
||||||
vs->alloctwobuffers = twobufs;
|
vs->alloctwobuffers = twobufs;
|
||||||
}
|
}
|
||||||
|
|
||||||
int Scumm::getVerbSlot(int id, int mode) const {
|
int ScummEngine::getVerbSlot(int id, int mode) const {
|
||||||
int i;
|
int i;
|
||||||
for (i = 1; i < _maxVerbs; i++) {
|
for (i = 1; i < _maxVerbs; i++) {
|
||||||
if (_verbs[i].verbid == id && _verbs[i].saveid == mode) {
|
if (_verbs[i].verbid == id && _verbs[i].saveid == mode) {
|
||||||
|
@ -509,7 +509,7 @@ int Scumm::getVerbSlot(int id, int mode) const {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::killVerb(int slot) {
|
void ScummEngine::killVerb(int slot) {
|
||||||
VerbSlot *vs;
|
VerbSlot *vs;
|
||||||
|
|
||||||
if (slot == 0)
|
if (slot == 0)
|
||||||
|
@ -528,7 +528,7 @@ void Scumm::killVerb(int slot) {
|
||||||
vs->saveid = 0;
|
vs->saveid = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::setVerbObject(uint room, uint object, uint verb) {
|
void ScummEngine::setVerbObject(uint room, uint object, uint verb) {
|
||||||
const byte *obimptr;
|
const byte *obimptr;
|
||||||
const byte *obcdptr;
|
const byte *obcdptr;
|
||||||
uint32 size, size2;
|
uint32 size, size2;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue