aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/engine/vm.h
AgeCommit message (Collapse)Author
2019-03-27SCI: Synchronize QFG4 control panel audio settingssluicebox
Fixes Audio button in control panel getting out of sync with the message mode set by ScummVM.
2018-09-04SCI32: Add more workarounds for Hoyle Classic GamesFilippos Karapetis
This fixes issues with Bridge and Backgammon. Now, Hoyle 5 and its variants should be in a very good state for testing
2018-09-01SCI32: Add a game option to double the videos in KQ7 by defaultFilippos Karapetis
Scaling works correctly with the Windows variant, which uses AVI files, but the DOS variant uses Robot videos, and the way scaling is done there is different, and is not working yet with KQ7 DOS. Nonetheless, both versions are included in the game, so it's not a major issue.
2018-08-30SCI32: Add audio volume sync support for Hoyle5Filippos Karapetis
2018-08-25SCI32: Remove reg32_t and use reg_t in all casesFilippos Karapetis
reg32_t was a transitive solution, before reg_t's were adapted to use 32-bit addresses internally, and before support for SCI3 was added. It was introduced as another way to handle large script offsets in SCI3, and was only used for the program counter (PC). It's no longer needed, as we now support SCI3 script offsets using reg_t's, so we can use make_reg32 in all cases where we need to access offsets over 64KB
2017-09-28SCI32: Add audio volume sync support for RAMAColin Snover
2017-09-23SCI32: Support RAMA's custom save games through kFileIOColin Snover
2017-09-09SCI32: Fix Phant2 movie-vs-game playback volumesColin Snover
This update should give the game the default mix it receives in Windows. If necessary, the half-volume audio bug in the DOS interpreter can be added as an additional hack for this game, since there are still some sub-par audio mixes that might need additional correction (like Curtis talking to Blob when taking her out of the cage in his apartment at the start of the game) which were also bad in the Windows version of the game. Fixes Trac#10165.
2017-09-08SCI32: Toggle Phant2 content censoring from game optionsColin Snover
To enable the optional content censoring mode, Phant2 looks for a RESDUK.PAT file, which is normally placed by the game's installer if the user chose to enable censorship. If the file exists, the game reads an unlock password out of the file and asks the user to enter the password when starting a new game to create an uncensored game, or to click a "less intense" button to start the game with censoring. The censorship state of the game is then persisted in the save game file, and installations with the RESDUK.PAT file need to enter the password again in order to restore any of the uncensored saves. Since we do not have an installer that can enable this feature, add a game option toggle to enable/disable censoring (for the releases that have the optional censorship mode) instead so the censored content feature is available for anyone that wants to use it. This flag is restored from ScummVM whenever a save game is loaded, so it can be toggled on or off at any point without needing a separate save game, unlike in the original interpreter.
2017-07-30SCI32: Implement Phant2 save/load integrationColin Snover
2017-07-30SCI32: Implement guest additions volume sync for Phant2Colin Snover
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