aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/engine/kernel.h
AgeCommit message (Collapse)Author
2016-07-10SCI32: Implement kPlayVMDColin Snover
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-06-26SCI32: Fix broken Remap implementationColin Snover
Remap would crash SCI2.1early games with 19 remap slots, and did not actually work in most cases in SCI2.1mid+ games. The SCI16 implementation was moved to its own separate file but was otherwise touched as little as possible, so may still have similar problems to the SCI32 code. 1. Split SCI16 and SCI32 code into separate files 2. Use -32 prefixes for SCI32 code and no prefix for SCI16 code, where possible, to match other existing code 3. Avoid accidental corruption of values from the VM that may be valid when signed or larger than 8 bits 4. Added documentation 5. Add missing remap CelObj calls 6. Inline where possible in performance-critical code paths 7. Fix bad `matchColor` function, and move it from GfxPalette to GfxRemap32 since it is only used by GfxRemap32 8. Fix bad capitalisation in getCycleMap 9. Remove unnecessary initialisation of SingleRemaps 10. Update architecture to more closely mirror how SSCI worked 11. Clarify the purpose of each type of remap type (and associated variable names) 12. Split large `apply` function into smaller units 13. Fix buffer overrun when loading a SCI2.1early game with remap 14. Remove use of `#define` constants 15. Warn instead of crashing with an error on invalid input (to match SSCI more closely) 16. Change the collision avoidance mechanism between the RemapType enum and remap kernel functions 17. Add save/load function
2016-06-21SCI32: Implement basic kMessageBoxColin Snover
This kernel call seems only to be used by KQ7 1.51 (which was Windows-only) to send warnings to the user. It was easy enough to do a basic implementation in the ScummVM GUI rather than just make it an empty call, so now it is a thing.
2016-06-21SCI32: Implement kScrollWindowWillem Jan Palenstijn
These should be all the actually used subfunctions. Co-authored-by: Colin Snover <github.com@zetafleet.com>
2016-06-20SCI: Minor cleanup of kDoSoundColin Snover
Replaces unused kernel calls to use kEmpty, and set correct signatures for SCI32 kernel calls.
2016-06-20SCI32: Rewrite digital audio engineColin Snover
This provides a complete implementation of kDoAudio through SCI2.1mid, plus partial implementation of SCI3 features. Digital audio calls shunted through kDoSound have also been updated to go through the SCI32 audio mixer, though these shunts are a bit hacky because the ScummVM implementation of kDoSound does not currently match how SSCI kDoSound is designed. It is probably possible in the future to just replace the SCI1.1 audio code (audio.cpp) with the new SCI32 code, since the major differences seem to be that (1) SCI1.1 only supported one digital audio playback channel (this is configurable already), (2) it had extra commands for CD audio playback and queued sample playback.
2016-03-13SCI32: Implement kCelHigh and kCelWide SCI32 versionsColin Snover
The SCI16 versions do not implement the scaling algorithm used by SCI32 so would be off by one in some cases.
2016-03-11SCI32: Initial implementation of kRemapColorsFilippos Karapetis
applyRemap() is still not finished, so nothing is actually visible yet
2016-03-10SCI32: Implement kMovePlaneItemsColin Snover
2016-03-10SCI32: Implement kSetNowSeenColin Snover
2016-03-10SCI32: Implement kCantBeHereColin Snover
2016-03-03SCI32: Add all kBitmap signaturesColin Snover
Not all SCI2.1late/SCI3 function signatures are fully known yet, but all subops are now represented in the kernel tables.
2016-02-28SCI32: Non-titled text bitmap implementationColin Snover
This implementation is not 100% engine accurate, but it is more accurate than what was there, and hopefully the differences between this and the engine code are merely cosmetic. The known (intentional) differences are: 1. Uses ScummVM rects inside the engine code, converting to/from SCI rects on the kernel edges and when scaling 2. Fewer side effects when performing operations that *should* have been pure from the start (like text dimension calculation). Still not side-effect-free, but at least things like colours and alignment do not need to be reset every time a measurement is taken, unlike in the actual engine. Editor controls and some other kBitmap code are temporarily disabled as a result of changes to GfxText32 until they can be updated to be engine-accurate.
2016-02-22SCI32: Document purpose of 993.vocLars Skovlund
2016-02-18SCI: Build kernel table for ScrollWindow and stub seen functionsColin Snover
Signatures in subops table are correct for length but unknown types are marked as . instead of the correct type.
2016-02-18SCI: Remove wrong comments in kernel.h and break apart logical sectionsColin Snover
2016-01-14SCI: Implement SCI32 kPalVary and kPalette setFadeColin Snover
This also fixes kPalCycle signatures to be more accurate.
2016-01-14SCI: Add kPalMorph stubColin Snover
2016-01-08Merge pull request #644 from csnover/sci32-kPalCycleFilippos Karapetis
SCI32: palette management (full kPalCycle, partial kSetPalStyleRange and kPalFade)
2016-01-07SCI32: Add kSetPalStyleRange stub codeColin Snover
2016-01-04SCI32: fix kString calling from within kArrayMartin Kiewitz
(didn't work since the introduction of kString signatures and the kString split-up)
2015-12-29SCI32: split up SCI2.1 into EARLY/MIDDLE/LATEMartin Kiewitz
- Detection works via signatures (couldn't find a better way) - new kString subcalls were introduced SCI2.1 LATE - kString now has signatures and is split via subcall table - kString fix, so that KQ7 doesn't crash, when starting a chapter - Sci2StringFunctionType removed, because no longer needed
2015-03-20SCI: improve debug output for signature mismatchMartin Kiewitz
dump parameter list to debugger as well
2014-10-28SCI: Remove trailing whitespaceFilippos Karapetis
2014-02-18SCI: Make GPL headers consistent in themselves.Johannes Schickel
2013-11-21SCI: fix script patcher for games w/o vocabMartin Kiewitz
2013-04-28SCI: Fix Phantasmagoria Mac's kDoSoundMatthew Hoops
2013-01-11SCI: Add subop 9 of kPalVary (used in SCI32, e.g. QFG4 when exiting the caves)Filippos Karapetis
2012-07-24SCI: Separate the early SCI11 version of kRemapColors from the SCI32 oneFilippos Karapetis
2012-07-05SCI: Some updates to SCI32 kernel graphics functionsFilippos Karapetis
- Added a stub for kSetScroll, which sets the target picture immediately for now - Added an initial stub of kPalCycle (doesn't work correctly yet) - Adjusted the signatures of kUpdateLine and kDeleteLine for LSL6 - Unmapped kSetHotRectangles again, with updated information on how it is used in Phantasmagoria
2012-07-04SCI: Merge and simplify the code that sets the kernel functionsFilippos Karapetis
2012-06-13SCI: Use the later SCI file functions for the SCI0 onesFilippos Karapetis
They are essentially the same (with the exception of the return values), so unifying them reduces code duplication
2012-06-13SCI: Change kSave() to be a kernel function with subopsFilippos Karapetis
2012-06-13SCI: Move all file-related functions in file.*Filippos Karapetis
This way, there is a clear separation of the actual SCI kernel file functions and the file classes and wrappers of ScummVM
2012-06-09SCI: Initial implementation of AddLine, UpdateLine, DeleteLineFilippos Karapetis
2012-05-26SCI: Implement kGetConfig and kGetSierraProfileIntFilippos Karapetis
This fixes the sluggish game speed in Phantasmagoria (DOS/Windows)
2012-05-14SCI: Implement savegame deletion functionality in SCI32Filippos Karapetis
This is based on two kernel functions, kMakeSaveCatName and kMakeSaveFileName
2011-10-28SCI: Added skeleton code for kEditText (still not working)Filippos Karapetis
2011-10-19SCI: Implemented kObjectIntersect()Filippos Karapetis
2011-10-18SCI: Initial implementation of kPlayDuck for Phantasmagoria 2Filippos Karapetis
2011-10-11SCI: Proper implementation of text drawing for SCI2+Filippos Karapetis
2011-10-10SCI: SCI32 kernel functions kRepaintPlane and kInputText are unusedFilippos Karapetis
2011-10-07SCI21: Some initial work on kBitmapFilippos Karapetis
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-05-12GIT: Clean up: Suppress SVN tags, now uselessstrangerke
2011-03-12SCI: Added automatic detection for several selectorsmd5
This ensures that these selectors will be detected regardless of the game ID, when they're missing
2011-02-03SCI: Add a stub for kFont which calls kSetFontRes as a subopMatthew Hoops
svn-id: r55755
2011-02-03SCI: Add support for GK1 Mac high-res fontsMatthew Hoops
svn-id: r55754
2011-01-08SCI2.1: Some stubs used by SQ6Filippos Karapetis
- Added a stub and some info about the (large) kScrollWindow kernel call - Added info about kMovePlaneItems svn-id: r55163