mirror of
https://github.com/libretro/scummvm.git
synced 2025-02-25 05:34:27 +00:00
DRAGONS: Implementing opcode 15
This commit is contained in:
parent
28a75525fd
commit
deecd24582
@ -108,6 +108,7 @@ void ScriptOpcodes::initOpcodes() {
|
||||
OPCODE(0x12, opUnk12LoadScene);
|
||||
OPCODE(0x13, opUnk13PropertiesRelated);
|
||||
OPCODE(0x14, opUnk14PropertiesRelated);
|
||||
OPCODE(0x15, opUnk15PropertiesRelated);
|
||||
|
||||
OPCODE(0x16, opUnk16);
|
||||
OPCODE(0x17, opUnk17);
|
||||
@ -292,8 +293,7 @@ void ScriptOpcodes::opUnk13PropertiesRelated(ScriptOpCall &scriptOpCall) {
|
||||
void ScriptOpcodes::opUnk14PropertiesRelated(ScriptOpCall &scriptOpCall) {
|
||||
if (checkPropertyFlag(scriptOpCall)) {
|
||||
ScriptOpCall localScriptOpCall;
|
||||
byte *codePtrOffset2 = scriptOpCall._code + 4;
|
||||
localScriptOpCall._code = codePtrOffset2;
|
||||
localScriptOpCall._code = scriptOpCall._code + 4;
|
||||
localScriptOpCall._codeEnd = localScriptOpCall._code + READ_LE_UINT32(scriptOpCall._code);
|
||||
localScriptOpCall._field8 = scriptOpCall._field8;
|
||||
localScriptOpCall._result = 0;
|
||||
@ -314,6 +314,24 @@ void ScriptOpcodes::opUnk14PropertiesRelated(ScriptOpCall &scriptOpCall) {
|
||||
}
|
||||
}
|
||||
|
||||
void ScriptOpcodes::opUnk15PropertiesRelated(ScriptOpCall &scriptOpCall) {
|
||||
while (true) {
|
||||
if (checkPropertyFlag(scriptOpCall)) {
|
||||
ScriptOpCall localScriptOpCall;
|
||||
localScriptOpCall._code = scriptOpCall._code + 4;
|
||||
localScriptOpCall._codeEnd = localScriptOpCall._code + READ_LE_UINT32(scriptOpCall._code);
|
||||
|
||||
runScript(localScriptOpCall);
|
||||
|
||||
scriptOpCall._code = (scriptOpCall._code - ((uint)*(scriptOpCall._code + 2) + 2));
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
scriptOpCall._code += 4 + READ_LE_UINT16(scriptOpCall._code);
|
||||
}
|
||||
|
||||
bool ScriptOpcodes::checkPropertyFlag(ScriptOpCall &scriptOpCall) {
|
||||
byte *codePtrOffsetA = scriptOpCall._code + 0xA;
|
||||
byte *codePtrOffset2 = scriptOpCall._code + 2;
|
||||
@ -839,10 +857,6 @@ void ScriptOpcodes::setINIField(uint32 iniIndex, uint16 fieldOffset, uint16 valu
|
||||
|
||||
}
|
||||
|
||||
void ScriptOpcodes::opUnk15(ScriptOpCall &scriptOpCall) {
|
||||
|
||||
}
|
||||
|
||||
void ScriptOpcodes::opUnk16(ScriptOpCall &scriptOpCall) {
|
||||
if (scriptOpCall._field8 == 4) {
|
||||
scriptOpCall._result |= 1;
|
||||
|
@ -97,7 +97,7 @@ protected:
|
||||
void opUnk12LoadScene(ScriptOpCall &scriptOpCall);
|
||||
void opUnk13PropertiesRelated(ScriptOpCall &scriptOpCall);
|
||||
void opUnk14PropertiesRelated(ScriptOpCall &scriptOpCall);
|
||||
void opUnk15(ScriptOpCall &scriptOpCall);
|
||||
void opUnk15PropertiesRelated(ScriptOpCall &scriptOpCall);
|
||||
void opUnk16(ScriptOpCall &scriptOpCall);
|
||||
void opUnk17(ScriptOpCall &scriptOpCall);
|
||||
void opPlayMusic(ScriptOpCall &scriptOpCall);
|
||||
|
Loading…
x
Reference in New Issue
Block a user