aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/engine/vm.cpp
AgeCommit message (Collapse)Author
2017-01-09SCI32: Clean up SCI3-only opcodesColin Snover
SCI3 includes four new opcodes: * op_info[0x26][0] puts -info- flag in accumulator * op_infoSP[0x26][1] pushes -info- flag to stack * op_superP[0x27][0] puts -super- reference in accumulator * op_superPSP[0x27][1] pushes -super- reference to stack The implementation of these opcodes was correct already, but the opcode names given were a bit misleading (the value is not always stored to accumulator), and magic numbers were used for these opcodes in places. A review of the opcode table in Phant2 indicates that there are no other new opcodes for SCI3.
2016-12-03SCI: Remove unnecessary duplicate shadowing variableColin Snover
2016-12-03SCI32: Fix LSL6hires text speed sliderColin Snover
For whatever reason, this game uses a different global for specifying the text speed.
2016-11-20SCI: Improve disassembly outputColin Snover
1. pushi opcode now displays decimal value and selector value (if one exists) in-line 2. lofsa, lofss, and super opcodes now display resolved object/class names 3. Opcode arguments are visually aligned
2016-11-20SCI: Add code-address breakpoints to debuggerColin Snover
2016-11-19SCI: Warn more loudly about uninitialised parameter readsColin Snover
Silently returning zero values can cause games to break. e.g. Shivers 1 room 35170 has a script bug where vJoystick::handleEvent makes a super call which causes doVerb to be called a second time with no arguments. In the original game this happened to work because the value already on the stack happened to be 1. In ScummVM this silently (unless VM debug messages were enabled) failed because the uninitialised read value was forced to 0.
2016-11-19SCI32: Add missing updateInfoFlagViewVisible callWillem Jan Palenstijn
I missed the one for varselector sends handled by the secondary loop in op_ret. This fixes #9641.
2016-10-14SCI: Ensure export breakpoints always trigger on export callsColin Snover
Previously, export calls to non-existing functions would act like there was never an export call, and the breakpoint would never be triggered.
2016-09-30SCI32: Sync subtitle text speed with ScummVM GUIColin Snover
2016-09-29SCI: Deduplicate call origin formattingColin Snover
2016-09-29SCI: Add prefix to global variable constantsColin Snover
2016-09-29SCI: Replace magic numbers for globals with named constantsColin Snover
2016-09-29SCI: Generalize code for getting information on the current callColin Snover
2016-08-12SCI32: Implement kShowMovieColin Snover
2016-08-11SCI32: Temporarily revert kShowMovie due to buildbot failuresColin Snover
Revert "SCI32: Fix KQ7 1.51 video background" This reverts commit c8affb54cca259f37522216bad739be085bf9caa. Revert "SCI32: Fix crash when kShowMovie is called but the video cannot be found" This reverts commit 93b06f4a9e08de281ee7eb9c780ceac147c3fb23. Revert "SCI32: Fix KQ7 1.51 basic video playback" This reverts commit cdab24aa07c18ad4a25a1659f7fca15cca5e358e. Revert "SCI32: Additional Video32 documentation" This reverts commit 4ff0924e57a9bc9101ee0799a967fe3373dd2574. Revert "SCI32: Implement kShowMovie" This reverts commit 13297c19298c5ad73c9e996c5c31ca91de124911.
2016-08-11SCI32: Implement kShowMovieColin Snover
2016-07-02SCI: Remove unexpected side effect from ExecStack constructorWillem Jan Palenstijn
The ExecStack constructor set argp[0] to argc before. This is now moved to the caller, to make this action more explicit.
2016-07-02SCI: Remove unclear &rest handlingWillem Jan Palenstijn
Modifying a value above the stack pointer doesn't seem to make much sense. This was added in FreeSCI back in 2002 in a pair of commits that did not make clear what the purpose of this was. My guess is that it attempted to adjust argc, but failed. This wouldn't have been noticed since argc was always set correctly by make_exec_stack_entry (which is now the ExecStack constructor).
2016-07-02SCI: Improve kernel subfunction loggingWillem Jan Palenstijn
ExecStack now stores the kernel call number as well as the subfunction. This allows kStub and backtraces to log the actual subfunction called. The kernel call number in ExecStack used to be stored in the debugSelector field. It now has its own field, to avoid confusion.
2016-03-01SCI32: Fix index/offset mixup in updateInfoFlagViewVisibleWillem Jan Palenstijn
2016-02-27SCI32: Update InfoFlagViewVisible from send_selectorWillem Jan Palenstijn
2016-02-27SCI32: Update InfoFlagViewVisible in VM opcodesWillem Jan Palenstijn
2016-02-05SCI: Clean up the op_infoToa and op_superToa SCI3 opcodesFilippos Karapetis
2015-03-20SCI: improve debug output for signature mismatchMartin Kiewitz
dump parameter list to debugger as well
2014-02-18SCI: Make GPL headers consistent in themselves.Johannes Schickel
2013-10-31SCI: Update ScummVM's game audio options for SCI1.1 CD gamesFilippos Karapetis
This ensures that ScummVM's game audio options for speech and subtitles get updated when they are changed in the game GUI
2012-09-26JANITORIAL: Remove trailing whitespaces.Johannes Schickel
Powered by: git ls-files "*.cpp" "*.h" "*.m" "*.mm" | xargs sed -i -e 's/[ \t]*$//'
2012-07-26SCI: Add some debug code to op_lineFilippos Karapetis
2012-06-23SCI: Change the program counter (PC) to be a 32-bit variableFilippos Karapetis
This is needed for future support of large SCI3 scripts. The program counter is isolated and does not interfere with other parts of the VM, plus it does not get stored in saved games, so it's pretty straightforward to convert
2012-06-23SCI: Clean up validateExportFunc() and related functionsFilippos Karapetis
Also renamed some SCI3 related code to indicate when it's SCI3 specific
2012-06-18SCI: Add setter/getter methods to reg_t'sFilippos Karapetis
No functionality change has been made with this commit. This avoids setting and getting the reg_t members directly, and is the basis of any future work on large SCI3 scripts (larger than 64KB)
2012-06-15SCI: Change getClassAddress() to only require the caller segmentFilippos Karapetis
The caller offset is never actually used inside the function
2012-01-15SCI: Ignore an invalid export in a script in the demo of RAMAFilippos Karapetis
2011-11-29SCI: Fix restarting SCI engine with different SCI versionWillem Jan Palenstijn
2011-11-28SCI: Added handling of invalid jump offsets (e.g. QFG2, script 260)Filippos Karapetis
2011-11-05SCI: Made more fields of the Script class private. Some cleanup.Filippos Karapetis
2011-10-16SCI: Script 64036 in Torin's passage contains an invalid exportFilippos Karapetis
2011-09-22SCI: Fixed compilation with VM_DEBUG_SEND definedFilippos Karapetis
2011-06-25SCI: Fix incorrect usage of sizeofWillem Jan Palenstijn
Thanks to salty-horse for the reports.
2011-06-20ALL: Remove trailing whitespacesMax Horn
This tries to make our code a bit more compliant with our code formatting conventions. For future use, this is the command I used: git ls-files "*.cpp" "*.h" | xargs sed -i -e 's/[ \t]*$//'
2011-06-11SCI: Changed order of script and room in error messagesmd5
This matches the order in which workarounds are stored in workarounds.cpp
2011-05-27Revert "SCI: Don't attempt to modify null/disposed objects."Lars Skovlund
This fix for bug #3303802 is a potential cause of unreproducible bugs in all SCI games that taint savegames. This reverts commit 48140a012d69d76de5ae80de7ca926e71c39cd03.
2011-05-27SCI: Don't attempt to modify null/disposed objects.md5
These cases occur usually because of script bugs. Fixes script bug #3303802 - "SCI: PQ1VGA - Crash at the jail"
2011-05-13SCI: Don't include several debug tables when REDUCE_MEMORY_USAGE is definedmd5
2011-05-12GIT: Clean up: Suppress SVN tags, now uselessstrangerke
2011-04-28JANITORIAL: Reduce header dependencies in shared codeOri Avtalion
Some backends may break as I only compiled SDL
2011-03-28SCI: Fix Compilation with --enable-release set.D G Turner
2011-03-28SCI: Renamed restAdjust to r_rest (like r_acc and r_prev)md5
2011-03-27SCI: Moved some debug functions from vm.cpp to scriptdebug.cppmd5
2011-03-26SCI: Removed the READ_VAR and WRITE_VAR wrappersmd5