[Scummvm-tracker] [ScummVM :: Bugs] #16454: GOB: WEEN - unimplemented opcodeGob

ScummVM :: Bugs trac at scummvm.org
Thu Jan 15 18:48:46 UTC 2026


#16454: GOB: WEEN - unimplemented opcodeGob
-------------------+-------------------------
Reporter:  joshas  |      Owner:  (none)
    Type:  defect  |     Status:  new
Priority:  low     |  Component:  Engine: Gob
 Version:          |   Keywords:  opcode
    Game:  Ween    |
-------------------+-------------------------
 Start the game, from "CONTROL PANEL" select "QUIT" and click "I CONFIRM".
 After confirmation two warnings appear in console:
 {{{
 Running Ween: The Prophecy (DOS/English (US))
 intro.stk: de92e5c6a8c163007ffceebef6e67f7d, 7117568 bytes.
 WARNING: unimplemented opcodeGob: 3 [0x3]!
 WARNING: unimplemented opcodeGob: 13 [0xD]!
 }}}

 While this is not a game breaking bug, I am curious, how to approach
 figuring out what opcodes are missing and what are they supposed to be
 doing exactly? As they run on quit command, it could be something very
 insignificant, related to freeing memory or something.
 It would be great to document all opcodes, so game could run without any
 warnings. Even if that means adding stubs instead of any functions for
 them.

 I tried using debug mode, and found on which lines in the script
 unimplemented opcodes are:
 {{{
 MENU.tot:00007917: opcodeFunc 0.9 [0x0.0x9] (o2_assign)
 var parse = 23
 oper = 277
 MENU.tot:00007924: opcodeFunc 2.7 [0x2.0x7] (o1_freeSprite)
 MENU.tot:00007927: opcodeFunc 2.5 [0x2.0x5] (o2_goblinFunc)
 opcodeGoblin 2 [0x2] (o2_stopInfogrames)
 MENU.tot:00007934: opcodeFunc 2.5 [0x2.0x5] (o2_goblinFunc)
 opcodeGoblin 3 [0x3] ()
 WARNING: unimplemented opcodeGob: 3 [0x3]!
 MENU.tot:00007941: opcodeFunc 2.5 [0x2.0x5] (o2_goblinFunc)
 opcodeGoblin 13 [0xD] ()
 WARNING: unimplemented opcodeGob: 13 [0xD]!
 MENU.tot:00007948: opcodeFunc 3.9 [0x3.0x9] (o2_stopSound)
 }}}

 But after decompiling MENU.TOT with `degob` from scummvm-tools, I cannot
 find the lines 7934 and 7941 in script.

 {{{
 00007917:                       var32_240 = 1;
 00007924:                       o1_freeSprite(0);
 00007927:                       o2_stopInfogrames(0);
 00007948:                       o2_stopSound(-1);
 00007952:                       o1_freeSoundSlot(19);
 00007956:                       o1_loadTot(END.tot);
 }}}

 Does this mean, that `degob` skips unknown opcodes?

 ScummVM version: 2.9.1 and latest version from git.
 Game language: US
 Game version: floppy
 Platform and Compiler: Linux
-- 
Ticket URL: <https://bugs.scummvm.org/ticket/16454>
ScummVM :: Bugs <https://bugs.scummvm.org>
ScummVM


More information about the Scummvm-tracker mailing list