diff options
Diffstat (limited to 'scumm')
-rw-r--r-- | scumm/intern.h | 1 | ||||
-rw-r--r-- | scumm/script_v6.cpp | 17 |
2 files changed, 15 insertions, 3 deletions
diff --git a/scumm/intern.h b/scumm/intern.h index 79e8e98f21..942588458a 100644 --- a/scumm/intern.h +++ b/scumm/intern.h @@ -514,6 +514,7 @@ protected: void o6_shuffle(); void o6_unknownFA(); void o6_unknownEA(); + void o6_readINI(); byte VAR_VIDEONAME; diff --git a/scumm/script_v6.cpp b/scumm/script_v6.cpp index 58b8e3043f..11f068f018 100644 --- a/scumm/script_v6.cpp +++ b/scumm/script_v6.cpp @@ -346,7 +346,7 @@ void Scumm_v6::setupOpcodes() { OPCODE(o6_invalid), OPCODE(o6_invalid), OPCODE(o6_invalid), - OPCODE(o6_invalid), + OPCODE(o6_readINI), /* F4 */ OPCODE(o6_invalid), OPCODE(o6_invalid), @@ -3019,7 +3019,7 @@ void Scumm_v6::o6_unknownEA() { edi = pop(); esi = pop(); - if (edi == 0) { + if ((edi | esi) == 0) { eax = esi; esi = edi; edi = eax; @@ -3042,6 +3042,17 @@ void Scumm_v6::unknownEA_func(int a, int b, int c, int d, int e) { warning("unknownEA_func(%d, %d, %d, %d, %d) stub", a, b, c, d, e); } +void Scumm_v6::o6_readINI() { + int len; + + len = resStrLen(_scriptPointer); + warning("stub o6_readINI(\"%s\")", _scriptPointer); + _scriptPointer += len + 1; + pop(); + push(0); + +} + void Scumm_v6::o6_localizeArray() { warning("stub localizeArray(%d)", pop()); } @@ -3116,6 +3127,6 @@ void Scumm_v6::decodeParseString(int m, int n) { _string[m].t_charset = _string[m].charset; return; default: - error("decodeParseString: default case"); + error("decodeParseString: default case 0x%x", b); } } |