mirror of
https://github.com/libretro/scummvm.git
synced 2024-12-19 16:18:45 +00:00
SCI: Fix kMessage REF subop ordering
Thanks to waltervn for testing values from running in DOSBox. Fixes bug #3034704
This commit is contained in:
parent
03882de79b
commit
829847cb88
@ -488,9 +488,9 @@ enum kMessageFunc {
|
||||
K_MESSAGE_GET,
|
||||
K_MESSAGE_NEXT,
|
||||
K_MESSAGE_SIZE,
|
||||
K_MESSAGE_REFCOND,
|
||||
K_MESSAGE_REFVERB,
|
||||
K_MESSAGE_REFNOUN,
|
||||
K_MESSAGE_REFVERB,
|
||||
K_MESSAGE_REFCOND,
|
||||
K_MESSAGE_PUSH,
|
||||
K_MESSAGE_POP,
|
||||
K_MESSAGE_LASTMESSAGE
|
||||
@ -511,16 +511,10 @@ reg_t kMessage(EngineState *s, int argc, reg_t *argv) {
|
||||
#ifdef ENABLE_SCI32
|
||||
if (getSciVersion() >= SCI_VERSION_2) {
|
||||
// In complete weirdness, SCI32 bumps up subops 3-8 to 4-9 and stubs off subop 3.
|
||||
// In addition, SCI32 reorders the REF* subops.
|
||||
if (func == 3)
|
||||
error("SCI32 kMessage(3)");
|
||||
else if (func > 3) {
|
||||
else if (func > 3)
|
||||
func--;
|
||||
if (func == K_MESSAGE_REFCOND)
|
||||
func = K_MESSAGE_REFNOUN;
|
||||
else if (func == K_MESSAGE_REFNOUN || func == K_MESSAGE_REFVERB)
|
||||
func--;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user