It was getting painful to go through the AKOS system without proper opcodes documentation, so here it is.
This was checked against COMI and SCUMM HE code, for names consistency.
Previously we had asserts instructions in place for this; they work under the assumption that the user
always has the sound files available. Unfortunately this assumption breaks in at least two cases:
- The user plays the COMI demo (small version, without sound files);
- The user copies the whole COMI game from the CDs/Steam to the device of choice (e.g. tablet),
and doesn't copy the BUN files over (e.g. for storage issues).
We simply remove the assertions and put a check in its place, and if that check fails we just exit
the function and resume normal execution. This fixes#13845.
Remove check if resource exists in the stream when loading a cast.
This check is already executed by `Archive::getMovieResourceIfPresent`.
Coverity found this as a Deference null return value due to not
checking if the stream was not a nullptr.
Fixes COVERITY: 1491676
Add check on currentSprite because if statement before does a
check if currentSprite exists, meaning currentSprite can be a nullptr.
Fixes COVERITY: 1487084
1839780513c05ad7b3e7cbc98a36e546021f8222 made a mistake by
confusing the IO-attributes with the non-IO_-attributes,
as there is a difference in the order of the flags between
these two sets.
Fixes bug: https://bugs.scummvm.org/ticket/13810
When the navigator head speaks, the v5 release forgot to adjust the
`Color(6)` parameter for the v5 palette changes, meaning that the text
wasn't displayed with the intended brown color, as in all other versions
(this was fixed in the v5 SegaCD release, though).
Previously the methods would pass by reference, then convert to a
pointer on success and take ownership. This isn't ideal, as a
reference suggests no transferral of ownership, and doesn't suggest
it needs to be a heap resource allocated by new.
* GROOVIE: Fix#2 possible crash with incorrect seeks to endpos in roq.cpp
Fix bug - https://bugs.scummvm.org/ticket/13809
* Optimization
* Next optimization & maintan appropriate debug log
* GROOVIE: Check end of stream before seek to avoid crash in roq.cpp
* GROOVIE: resolve %ld conflict
Co-authored-by: Die4Ever <30947252+Die4Ever@users.noreply.github.com>
When an error happens during go, for example with a nonexisting movie
the lingo callstack isn't cleaned up properly.
Now the callstack is cleaned up via `popContext(aborting=true)`.
This improves on commit:
DIRECTOR: fix memleak when lingo context is frozen
27b314cb25a786c9ecffcef6bc0589c500257b4d
The Lingo tests were failing because of memory leaks.
- `move` overwrote an existing cast without deleting it
- `puppetTransition` was set but not removed on class destruction
- the *.lingo test files were opened but never removed