Commit Graph
33 Commits
Author SHA1 Message Date
Colin Snover a4eb6a5ca5 SCI: Remove old SCI32 view scaling code from SCI16 graphics code 2017-09-27 20:27:34 -05:00
Colin Snover 6600fb77ea SCI: Use containers in GfxView and remove some SCI32 code 2017-03-27 19:42:31 -05:00
Colin Snover 31daa956d6 SCI: Implement bounds-checked reads of game resources 2017-03-27 19:42:31 -05:00
Colin Snover 4e1a9be816 SCI32: Remove CoordAdjuster32, at least for the moment
This may come back in the future to deduplicate some gfx code,
but SCI32 had two different inlined ways of doing coordinate
conversions with different rounding methods, so CoordAdjuster32
didn't get used when the graphics system was rewritten.

At the moment, SCI32 code uses the mulru/mulinc methods from
helper.h for scaling up/down coordinates.
2016-08-19 15:23:10 -05:00
Colin Snover cfda8b9ecd SCI32: Fix broken Remap implementation
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-26 12:42:58 -05:00
Filippos Karapetis 75527e3df5 SCI32: Remove getColorAtCoordinate()
The only calling code for this was removed in commit 3f2469c33e
2016-03-16 01:51:06 +02:00
Johannes Schickel 8fc7d60feb SCI: Make GPL headers consistent in themselves. 2014-02-18 02:39:37 +01:00
Heather Douglass 084b2deccc SCI: Implementation of kCelInfo subop 4
kCelInfo subop 4 returns the pixel color at the
passed in x,y coordinates for the passed in view,
loop, cel.  Shivers uses this function for the
red door puzzle, room 23601 to determine what
blocks on the puzzle board are already occupied
by pieces.
2011-10-12 02:50:28 +03:00
strangerke 69b1485a22 GIT: Clean up: Suppress SVN tags, now useless 2011-05-12 01:16:22 +02:00
Lars Skovlund 40d922206b SCI32: Support for views with 640x400 native resolution
(fixes Wolfgang closeup, room 720)
2011-03-30 21:30:51 +02:00
Martin Kiewitz d078a4d235 SCI: fix gfx issues when giving out cards hoyle4
bit 2 actually triggers special drawing of cels in sierra sci

svn-id: r53855
2010-10-26 20:19:17 +00:00
Martin Kiewitz 09f4562551 SCI: adding non-scaleable view capability
fixes laura bow 2 (especially floppy but CD is also affected somewhat by this)

svn-id: r51660
2010-08-02 21:04:09 +00:00
Martin Kiewitz fd7bc29536 SCI: adjusting inside view::getCelRect for sci0early
fixes cels being placed wrongly, sci0early didnt have the z adjust.

svn-id: r51537
2010-07-31 13:13:46 +00:00
Martin Kiewitz d5ced8ab9e SCI: using coordadjuster in GfxView
svn-id: r51276
2010-07-25 16:37:36 +00:00
Martin Kiewitz 2047e75d2b SCI: kCelWide/kCelHigh now adjust on hires views
somewhat fixes gk1 hires inventory issue

svn-id: r51245
2010-07-24 15:15:38 +00:00
Martin Kiewitz 4e999c8295 SCI: support for hires views in gk1
svn-id: r50533
2010-06-30 14:26:47 +00:00
Max Horn 2c01d10a36 SCI: Remove GfxView::getLoopInfo; add assert to GfxView::getCelInfo
The return value of GfxView::getCelInfo was used virtually everywhere
without a check for it being non-NULL. Hence instead of returning
NULL when the loop count is zero, it makes more sense to assert out
(instead of a segfault, or worse, random data being used).

svn-id: r50422
2010-06-28 11:20:33 +00:00
Max Horn 9f48a37671 SCI: Add const qualifiers to many GfxView methods and their return values.
This helps to ensure proper data encapsulation.
Also reformatted some overlong comments to 80 chars per line, and
fixed some other code formatting issues.

svn-id: r50421
2010-06-28 11:20:14 +00:00
Martin Kiewitz f0145e6dcd SCI: implementing boundary checking for GfxPalette::createFromData(), sq5 has a broken picture 0 resource, which would result in either crash or at least bad read from memory depending on whats read there
svn-id: r50178
2010-06-23 11:47:14 +00:00
Martin Kiewitz ab2941bb52 SCI: adding some minor documentation for the various graphic classes
svn-id: r47904
2010-02-05 15:48:45 +00:00
Martin Kiewitz cabd18da9e SCI: renaming class View to GfxView
svn-id: r47891
2010-02-04 22:17:58 +00:00
Martin Kiewitz a79330e6d8 SCI: fix support for cels that are larger than 64k (sierra logo animation in sq6)
svn-id: r47873
2010-02-04 11:54:48 +00:00
Martin Kiewitz 72c2d360f7 SCI: renamed SciPalette to GfxPalette, Screen to GfxScreen, GfxPalette is now called directly w/o SciGui
svn-id: r47752
2010-01-31 16:21:11 +00:00
Martin Kiewitz 7929255cd9 SCI: cleaned up graphics classes, removed gfx&windowmgr, added gfxports, gfxcompare, gfxpaint16, gfxcache. kernel uses gfxports directly w/o going through SciGui
svn-id: r47745
2010-01-31 12:35:15 +00:00
Martin Kiewitz 981252b1fe SCI: view class fix for hires views that are larger than 64k (fixes kq7 cel corruption)
svn-id: r47661
2010-01-29 00:03:10 +00:00
Martin Kiewitz e29c4e7af7 SCI: View::drawScaled() created (doesnt do scaling yet), removed scaling variables from View::draw, gfx calls drawScaled() when scaleX/Y != 128, getting scaled rect inside kAnimate()
svn-id: r47322
2010-01-16 16:17:45 +00:00
Martin Kiewitz 944774e9f5 SCI: created getCelScaledRect() inside view class
svn-id: r47319
2010-01-16 14:20:00 +00:00
Martin Kiewitz 52eb58a3e5 SCI: View::getCelCount now validates input
svn-id: r47267
2010-01-12 18:24:37 +00:00
Martin Kiewitz 3145ee5379 SCI: changed displaceY and displaceX for cels to int16, also inserted cast to signed char for sci1 displaceX - should fix wii flickering and incorrect cel placement problems
svn-id: r47257
2010-01-11 20:31:12 +00:00
Martin Kiewitz 519e80ca8b SCI: implemented additional drawCel for hires views, fixes menu bar of kq6 - still need to fix coordinates and implement save/restoreBits for hires
svn-id: r47116
2010-01-07 14:46:29 +00:00
Filippos Karapetis 254850aa23 - Some work on kLocalToGlobal and kGlobalToLocal for SCI2+
- Removed the custom types MemoryHandle, LoopNo, CelNo (cause we ended up having code like LoopNo loopNo = ...)
- Improved the sanity checks in frameOut()

svn-id: r47087
2010-01-06 17:25:54 +00:00
Filippos Karapetis 9606e7fca7 Some initial work on SCI1.1 view scaling (not working yet)
svn-id: r47027
2010-01-05 14:19:53 +00:00
Filippos Karapetis d99aa0f126 More renaming
svn-id: r47009
2010-01-05 01:37:57 +00:00