from the MM/Zak scripts, the code etc. it's clear that unk2 is the sentence preposition
svn-id: r7827
This commit is contained in:
parent
711c698948
commit
a9788c771a
7 changed files with 19 additions and 17 deletions
|
@ -240,7 +240,7 @@ protected:
|
||||||
void o2_getActorX();
|
void o2_getActorX();
|
||||||
void o2_getActorY();
|
void o2_getActorY();
|
||||||
void o2_getBitVar();
|
void o2_getBitVar();
|
||||||
void o2_getObjUnknown();
|
void o2_getObjPreposition();
|
||||||
void o2_ifClassOfIs();
|
void o2_ifClassOfIs();
|
||||||
void o2_ifNotState01();
|
void o2_ifNotState01();
|
||||||
void o2_ifNotState02();
|
void o2_ifNotState02();
|
||||||
|
@ -264,7 +264,7 @@ protected:
|
||||||
void o2_setBitVar();
|
void o2_setBitVar();
|
||||||
void o2_setCameraAt();
|
void o2_setCameraAt();
|
||||||
void o2_setObjectName();
|
void o2_setObjectName();
|
||||||
void o2_setObjUnknown();
|
void o2_setObjPreposition();
|
||||||
void o2_setOwnerOf();
|
void o2_setOwnerOf();
|
||||||
void o2_setState01();
|
void o2_setState01();
|
||||||
void o2_setState02();
|
void o2_setState02();
|
||||||
|
@ -282,6 +282,7 @@ protected:
|
||||||
byte VAR_SENTENCE_VERB;
|
byte VAR_SENTENCE_VERB;
|
||||||
byte VAR_SENTENCE_OBJECT1;
|
byte VAR_SENTENCE_OBJECT1;
|
||||||
byte VAR_SENTENCE_OBJECT2;
|
byte VAR_SENTENCE_OBJECT2;
|
||||||
|
byte VAR_SENTENCE_PREPOSITION;
|
||||||
byte VAR_BACKUP_VERB;
|
byte VAR_BACKUP_VERB;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -532,7 +532,7 @@ void Scumm::saveOrLoad(Serializer *s, uint32 savegameVersion) {
|
||||||
|
|
||||||
const SaveLoadEntry sentenceTabEntries[] = {
|
const SaveLoadEntry sentenceTabEntries[] = {
|
||||||
MKLINE(SentenceTab, verb, sleUint8, VER_V8),
|
MKLINE(SentenceTab, verb, sleUint8, VER_V8),
|
||||||
MKLINE(SentenceTab, unk2, sleUint8, VER_V8),
|
MKLINE(SentenceTab, preposition, sleUint8, VER_V8),
|
||||||
MKLINE(SentenceTab, objectA, sleUint16, VER_V8),
|
MKLINE(SentenceTab, objectA, sleUint16, VER_V8),
|
||||||
MKLINE(SentenceTab, objectB, sleUint16, VER_V8),
|
MKLINE(SentenceTab, objectB, sleUint16, VER_V8),
|
||||||
MKLINE(SentenceTab, freezeCount, sleUint8, VER_V8),
|
MKLINE(SentenceTab, freezeCount, sleUint8, VER_V8),
|
||||||
|
|
|
@ -818,7 +818,7 @@ void Scumm::doSentence(int verb, int objectA, int objectB) {
|
||||||
st->verb = verb;
|
st->verb = verb;
|
||||||
st->objectA = objectA;
|
st->objectA = objectA;
|
||||||
st->objectB = objectB;
|
st->objectB = objectB;
|
||||||
st->unk2 = (objectB & 0xFF00) != 0;
|
st->preposition = (objectB & 0xFF00) != 0;
|
||||||
st->freezeCount = 0;
|
st->freezeCount = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -845,7 +845,7 @@ void Scumm::checkAndRunSentenceScript() {
|
||||||
_sentenceNum--;
|
_sentenceNum--;
|
||||||
|
|
||||||
if (!(_features & GF_AFTER_V7))
|
if (!(_features & GF_AFTER_V7))
|
||||||
if (_sentence[_sentenceNum].unk2 && _sentence[_sentenceNum].objectB == _sentence[_sentenceNum].objectA)
|
if (_sentence[_sentenceNum].preposition && _sentence[_sentenceNum].objectB == _sentence[_sentenceNum].objectA)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (_features & GF_AFTER_V2) {
|
if (_features & GF_AFTER_V2) {
|
||||||
|
|
|
@ -46,7 +46,7 @@ void Scumm_v2::setupOpcodes() {
|
||||||
OPCODE(o5_isNotEqual),
|
OPCODE(o5_isNotEqual),
|
||||||
OPCODE(o5_faceActor),
|
OPCODE(o5_faceActor),
|
||||||
OPCODE(o2_assignVarWordIndirect),
|
OPCODE(o2_assignVarWordIndirect),
|
||||||
OPCODE(o2_setObjUnknown),
|
OPCODE(o2_setObjPreposition),
|
||||||
/* 0C */
|
/* 0C */
|
||||||
OPCODE(o2_resourceRoutines),
|
OPCODE(o2_resourceRoutines),
|
||||||
OPCODE(o5_walkActorToActor),
|
OPCODE(o5_walkActorToActor),
|
||||||
|
@ -126,7 +126,7 @@ void Scumm_v2::setupOpcodes() {
|
||||||
OPCODE(o5_isEqual),
|
OPCODE(o5_isEqual),
|
||||||
OPCODE(o5_faceActor),
|
OPCODE(o5_faceActor),
|
||||||
OPCODE(o2_chainScript),
|
OPCODE(o2_chainScript),
|
||||||
OPCODE(o2_setObjUnknown),
|
OPCODE(o2_setObjPreposition),
|
||||||
/* 4C */
|
/* 4C */
|
||||||
OPCODE(o2_waitForSentence),
|
OPCODE(o2_waitForSentence),
|
||||||
OPCODE(o5_walkActorToActor),
|
OPCODE(o5_walkActorToActor),
|
||||||
|
@ -168,7 +168,7 @@ void Scumm_v2::setupOpcodes() {
|
||||||
OPCODE(o2_subIndirect),
|
OPCODE(o2_subIndirect),
|
||||||
OPCODE(o2_dummy),
|
OPCODE(o2_dummy),
|
||||||
/* 6C */
|
/* 6C */
|
||||||
OPCODE(o2_getObjUnknown),
|
OPCODE(o2_getObjPreposition),
|
||||||
OPCODE(o5_putActorInRoom),
|
OPCODE(o5_putActorInRoom),
|
||||||
OPCODE(o2_dummy),
|
OPCODE(o2_dummy),
|
||||||
OPCODE(o2_ifState04),
|
OPCODE(o2_ifState04),
|
||||||
|
@ -206,7 +206,7 @@ void Scumm_v2::setupOpcodes() {
|
||||||
OPCODE(o5_isNotEqual),
|
OPCODE(o5_isNotEqual),
|
||||||
OPCODE(o5_faceActor),
|
OPCODE(o5_faceActor),
|
||||||
OPCODE(o2_assignVarWordIndirect),
|
OPCODE(o2_assignVarWordIndirect),
|
||||||
OPCODE(o2_setObjUnknown),
|
OPCODE(o2_setObjPreposition),
|
||||||
/* 8C */
|
/* 8C */
|
||||||
OPCODE(o2_resourceRoutines),
|
OPCODE(o2_resourceRoutines),
|
||||||
OPCODE(o5_walkActorToActor),
|
OPCODE(o5_walkActorToActor),
|
||||||
|
@ -286,7 +286,7 @@ void Scumm_v2::setupOpcodes() {
|
||||||
OPCODE(o5_isEqual),
|
OPCODE(o5_isEqual),
|
||||||
OPCODE(o5_faceActor),
|
OPCODE(o5_faceActor),
|
||||||
OPCODE(o2_chainScript),
|
OPCODE(o2_chainScript),
|
||||||
OPCODE(o2_setObjUnknown),
|
OPCODE(o2_setObjPreposition),
|
||||||
/* CC */
|
/* CC */
|
||||||
OPCODE(o5_pseudoRoom),
|
OPCODE(o5_pseudoRoom),
|
||||||
OPCODE(o5_walkActorToActor),
|
OPCODE(o5_walkActorToActor),
|
||||||
|
@ -328,7 +328,7 @@ void Scumm_v2::setupOpcodes() {
|
||||||
OPCODE(o2_subIndirect),
|
OPCODE(o2_subIndirect),
|
||||||
OPCODE(o2_dummy),
|
OPCODE(o2_dummy),
|
||||||
/* EC */
|
/* EC */
|
||||||
OPCODE(o2_getObjUnknown),
|
OPCODE(o2_getObjPreposition),
|
||||||
OPCODE(o5_putActorInRoom),
|
OPCODE(o5_putActorInRoom),
|
||||||
OPCODE(o2_dummy),
|
OPCODE(o2_dummy),
|
||||||
OPCODE(o2_ifState04),
|
OPCODE(o2_ifState04),
|
||||||
|
@ -512,7 +512,7 @@ void Scumm_v2::o2_assignVarByte() {
|
||||||
setResult(fetchScriptByte());
|
setResult(fetchScriptByte());
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_setObjUnknown() {
|
void Scumm_v2::o2_setObjPreposition() {
|
||||||
int obj = getVarOrDirectWord(0x80);
|
int obj = getVarOrDirectWord(0x80);
|
||||||
int unk = fetchScriptByte();
|
int unk = fetchScriptByte();
|
||||||
|
|
||||||
|
@ -522,7 +522,7 @@ void Scumm_v2::o2_setObjUnknown() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v2::o2_getObjUnknown() {
|
void Scumm_v2::o2_getObjPreposition() {
|
||||||
getResultPos();
|
getResultPos();
|
||||||
int obj = getVarOrDirectWord(0x80);
|
int obj = getVarOrDirectWord(0x80);
|
||||||
|
|
||||||
|
@ -859,7 +859,7 @@ void Scumm_v2::o2_doSentence() {
|
||||||
st->verb = a;
|
st->verb = a;
|
||||||
st->objectA = getVarOrDirectWord(0x40);
|
st->objectA = getVarOrDirectWord(0x40);
|
||||||
st->objectB = getVarOrDirectWord(0x20);
|
st->objectB = getVarOrDirectWord(0x20);
|
||||||
st->unk2 = (st->objectB != 0);
|
st->preposition = (st->objectB != 0);
|
||||||
st->freezeCount = 0;
|
st->freezeCount = 0;
|
||||||
|
|
||||||
// TODO
|
// TODO
|
||||||
|
@ -1363,5 +1363,5 @@ void Scumm_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;
|
||||||
_scummVars[29] = 0;
|
VAR(VAR_SENTENCE_PREPOSITION) = 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -749,7 +749,7 @@ void Scumm_v5::o5_doSentence() {
|
||||||
st->verb = a;
|
st->verb = a;
|
||||||
st->objectA = getVarOrDirectWord(0x40);
|
st->objectA = getVarOrDirectWord(0x40);
|
||||||
st->objectB = getVarOrDirectWord(0x20);
|
st->objectB = getVarOrDirectWord(0x20);
|
||||||
st->unk2 = (st->objectB != 0);
|
st->preposition = (st->objectB != 0);
|
||||||
st->freezeCount = 0;
|
st->freezeCount = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -218,7 +218,7 @@ struct ArrayHeader {
|
||||||
|
|
||||||
struct SentenceTab {
|
struct SentenceTab {
|
||||||
byte verb;
|
byte verb;
|
||||||
byte unk2;
|
byte preposition;
|
||||||
uint16 objectA;
|
uint16 objectA;
|
||||||
uint16 objectB;
|
uint16 objectB;
|
||||||
uint8 freezeCount;
|
uint8 freezeCount;
|
||||||
|
|
|
@ -123,6 +123,7 @@ void Scumm_v2::setupScummVars() {
|
||||||
VAR_SENTENCE_VERB = 26;
|
VAR_SENTENCE_VERB = 26;
|
||||||
VAR_SENTENCE_OBJECT1 = 27;
|
VAR_SENTENCE_OBJECT1 = 27;
|
||||||
VAR_SENTENCE_OBJECT2 = 28;
|
VAR_SENTENCE_OBJECT2 = 28;
|
||||||
|
VAR_SENTENCE_PREPOSITION = 29;
|
||||||
VAR_VIRT_MOUSE_X = 30;
|
VAR_VIRT_MOUSE_X = 30;
|
||||||
VAR_VIRT_MOUSE_Y = 31;
|
VAR_VIRT_MOUSE_Y = 31;
|
||||||
VAR_CLICK_AREA = 32;
|
VAR_CLICK_AREA = 32;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue