aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/engine/vm.h
AgeCommit message (Collapse)Author
2017-04-21SCI: Improve audio volume & settings sync codeColin Snover
This patch includes enhancements to the ScummVM integration with SCI engine, with particular focus on SCI32 support. 1. Fixes audio volumes syncing erroneously to ScummVM in games that modify the audio volume without user action (e.g. SCI1.1 talkies that reduce music volume during speech playback). Now, volumes will only be synchronised when the user interacts with the game's audio settings. This mechanism works by looking for a known volume control object in the stack, and only syncing when the control object is present. (Ports and planes were researched and found unreliable.) 2. Fixes audio syncing in SCI32 games that do not set game volumes through kDoSoundMasterVolume/kDoAudioVolume, like GK1, GK2, Phant1, and Torin. 3. Fixes speech/subtitles syncing in SCI32 games that do not use global 90, like LSL6hires. 4. Fixes in-game volume controls in SCI32 games reflecting outdated audio volumes when a change is made during the game from the ScummVM launcher. 5. Fixes SCI32 games that would restore volumes from save games or reset volumes on startup, which caused game volumes to be out-of-sync with ScummVM when started. 6. ScummVM integration code for audio sync has been abstracted into a new GuestAdditions class. This keeps the ScummVM- specific code all in one place, with only small hooks into the engine code. ScummVM integrated save/load code should probably also go here in the future. Fixes Trac#9700.
2017-03-30SCI: Whitespace alignmentColin Snover
2017-03-30SCI: Replace magic numbers in reg_t handling with symbolsColin Snover
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-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-09-30SCI32: Sync subtitle text speed with ScummVM GUIColin Snover
2016-09-29SCI: Add prefix to global variable constantsColin Snover
2016-09-29SCI32: Emulate Shivers 1 game score metadataColin Snover
2016-09-29SCI: Replace magic numbers for globals with named constantsColin 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: 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-02-05SCI: Clean up the op_infoToa and op_superToa SCI3 opcodesFilippos Karapetis
2014-02-18SCI: Make GPL headers consistent in themselves.Johannes Schickel
2012-07-04SCI: make g_base_opcode_formats and SciOpcodes a bit more readableFilippos 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-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: Replace RAW_IS_OBJECT with a methodFilippos Karapetis
2012-05-20SCI: Fix case of the SciOpcodes enumFilippos Karapetis
2012-05-20SCI: Change sci_opcodes to CamelCaseFilippos Karapetis
2011-11-29SCI: Fix restarting SCI engine with different SCI versionWillem Jan Palenstijn
2011-05-12GIT: Clean up: Suppress SVN tags, now uselessstrangerke
2011-03-28SCI: Set the GC_INTERVAL define to its hexadecimal equivalentmd5
2011-03-26SCI: Refactored and cleaned up the VM call stack handling codemd5
- Removed the CallsStruct intermediate stack. Calls are inserted directly in the execution stack - Added a constructor for the ExecStack struct and removed add_exec_stack_varselector() and add_exec_stack_entry()
2010-07-20SCI: Removed the restoring parameter of the run_vm() functionFilippos Karapetis
svn-id: r51076
2010-06-28SCI: cleanup of execstack, output of backtrace slightly modified, is now ↵Martin Kiewitz
also displaying local calls and exports svn-id: r50445
2010-06-28SCI: Make Script member vars private; add const qualifiersMax Horn
Only three Script members remain public (for now) svn-id: r50428
2010-06-27SCI: Moved all the script-related code inside script.cpp/.h, and all script ↵Filippos Karapetis
opcode-related code inside vm.cpp/.h svn-id: r50396
2010-06-26Removed the misleading getHeap() function (only valid for SCI0-SCI1), plus ↵Filippos Karapetis
removed some unused defines svn-id: r50358
2010-06-26SCI: adding capability to resolve local calls as well for valgrind-sci, ↵Martin Kiewitz
adding another workaround for a script bug in sq1 (this time export 1 gets called locally) svn-id: r50308
2010-06-25SCI: adding capability for detecting export-calls into valgrind-sci, adding ↵Martin Kiewitz
workaround for export 1 of script 703 in sq1 (gets called from various objects) svn-id: r50292
2010-06-24Cleanup uninitialized read workaround(s).Matthew Hoops
svn-id: r50225
2010-06-24SCI: created a workaround table for uninitialized reads, removing old ↵Martin Kiewitz
commented out workarounds for pharkas and laura bow 2 svn-id: r50214
2010-06-23Moved the SelectorCache struct inside selector.h, where it belongs, and ↵Filippos Karapetis
fixed some header dependencies in the process svn-id: r50183
2010-06-23SCI: adding some more global scaling code, adding vanishingY and vanishingX ↵Martin Kiewitz
as selectors svn-id: r50180
2010-06-23SCI: some initial work on global scalingMartin Kiewitz
svn-id: r50179
2010-06-10Moved all of the game init/run/exit logic inside the SciEngine classFilippos Karapetis
svn-id: r49559
2010-06-09Merged script_init_engine() and game_init() and cleaned up SciEngine::run() ↵Filippos Karapetis
a bit svn-id: r49537
2010-06-08Merged _game_run() inside game_run(). Some cleanupFilippos Karapetis
svn-id: r49513
2010-06-06Now that EngineState is not deleted when loading games, we can move some ↵Filippos Karapetis
more state-related variables to it, and remove several FIXME's about non-const global variables. Also, the entries in the data stack are now deleted when loading (fixes a memory leak - thanks to digitall for this). svn-id: r49465
2010-06-03The setCursor selector is no longer used for the detection of the ↵Filippos Karapetis
kSetCursor() kernel function semantics svn-id: r49408
2010-06-03Moved several object-related defines inside vm.h into segment.h, where the ↵Filippos Karapetis
Object class resides. Also, removed several unused defines svn-id: r49406
2010-05-29Limit access to the _classTable array (now it's directly accessible only ↵Filippos Karapetis
inside saveLoadWithSerializer() svn-id: r49318
2010-05-29Mass renaming of selector-related functions, and removed some defines which ↵Filippos Karapetis
were just cloaking functions with a different name - GET_SEL32 -> readSelector - GET_SEL32V -> readSelectorValue - PUT_SEL32 -> writeSelector - PUT_SEL32V -> writeSelectorValue Also, changed some selector-related function names and variables to CamelCase svn-id: r49317
2010-05-24Add support for showing the icon bar in SCI1.1 Mac.Matthew Hoops
svn-id: r49196
2010-05-23Made shrink_execution_stack() a member of EngineStateFilippos Karapetis
svn-id: r49159
2010-05-19Moved the breakpoint information inside the DebugState structFilippos Karapetis
svn-id: r49092
2010-05-18- Removed the wrapper kalloc, kmem and kfree functions. Now, the associated ↵Filippos Karapetis
Segment manager functions allocateHunkEntry, getHunkPointer and freeHunkEntry are used directly (which are more descriptive, anyway) - Replaced the GET_SEGMENT macro by a method of the segment manager - Removed the unused reference to the created hunk in allocateHunkEntry(), only the reg_t reference to it is returned now svn-id: r49078
2010-05-18Moved breakpointWasHit inside the DebugState struct, thus resolving a FIXMEFilippos Karapetis
svn-id: r49071
2010-05-18Add initial support for KQ6 Mac. Wrapper functions for read/writing to ↵Matthew Hoops
pointers are now used (found in util.*) for code that has different endianness in SCI1.1+ Mac games. Add support for Mac 'snd ' and 'CURS' resources. QFG1 Mac is not yet playable due to script compression. svn-id: r49070