116 Commits

Author SHA1 Message Date
Johannes Schickel
8fc7d60feb SCI: Make GPL headers consistent in themselves. 2014-02-18 02:39:37 +01:00
Willem Jan Palenstijn
f279cc0e51 SCI: Add extra sanity check 2013-04-20 23:53:06 +02:00
Filippos Karapetis
2ef3f5e695 SCI: Update the virtual file selected in the QFG4 character import screen
This makes the character import screen in QFG4 functional, as the virtual
file index was never updated
2012-07-08 16:15:45 +03:00
Filippos Karapetis
2b50824133 SCI: Add setter/getter methods to reg_t's
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-18 05:24:06 +03:00
Filippos Karapetis
ea06210b92 SCI: Add support for variable selectors in kListFirstTrue / kListAllTrue
This is used by Torin's Passage (e.g. when trying to open the menu).
Based on a slightly modified patch by LePhilousophe
2012-06-11 21:17:21 +03:00
Filippos Karapetis
96aa86a60b SCI: Remove wrong script-to-array copying code in kArray 2012-01-15 20:58:14 +02:00
Eugene Sandulenko
7e298f13a1 SCI: Fix copy/paste error 2011-11-03 01:06:56 +00:00
Filippos Karapetis
7708a4ddbb SCI: Added some hacks related to new functionality in Phantasmagoria 2
The game will now start (but won't do anything exciting - it'll display
its main menu, which doesn't work yet)
2011-10-18 03:10:19 +03:00
strangerke
69b1485a22 GIT: Clean up: Suppress SVN tags, now useless 2011-05-12 01:16:22 +02:00
Filippos Karapetis
32d7e687ee SCI: debugC calls no longer require a debug level of 2 to show output
svn-id: r55086
2011-01-01 12:48:12 +00:00
Filippos Karapetis
d44a105e7f SCI: Disable continuous list checking by default
svn-id: r55085
2011-01-01 12:43:09 +00:00
Filippos Karapetis
5a3ed29a4b SCI: Changed the check for NULL values inside kArray(Cpy) to only ignore such values in SCI3
svn-id: r55002
2010-12-22 13:17:19 +00:00
Filippos Karapetis
7680ed0be7 Added back the null check in kArray(cpy): it happens in SCI3
svn-id: r54990
2010-12-21 20:54:33 +00:00
Filippos Karapetis
de2ef2edc0 SCI: Removed the system strings code and replaced it with a much more simplified version, thus greatly simplifying handling of system strings
svn-id: r54805
2010-12-07 00:47:05 +00:00
Filippos Karapetis
ac7c488c7c SCI: kArray wasn't changed in late SCI2.1/SCI3 games (thanks to waltervn)
svn-id: r54402
2010-11-21 02:06:20 +00:00
Filippos Karapetis
cd69472be9 SCI: Adapted kArray/kString to use the new heuristic for late SCI2.1/SCI3 games, and updated their subops accordingly
svn-id: r54399
2010-11-21 00:47:56 +00:00
Filippos Karapetis
5d53673e93 SCI: Also send system strings to kString(). This makes LSL7 continue into the actual game! :D
svn-id: r54377
2010-11-19 13:23:20 +00:00
Lars Skovlund
84d4a4a89f Implement a couple of NULL checks in kArray
svn-id: r54373
2010-11-19 12:49:46 +00:00
Filippos Karapetis
6ec8ec416b SCI: Added support for script -> string copying (used by late SCI2.1 and SCI3 games)
svn-id: r54364
2010-11-19 10:27:22 +00:00
Filippos Karapetis
c2bdba2ea6 SCI2: Treat SCI2 raw arrays (type 3) as strings in kArray
SCI2 strings inherit from arrays, plus kArray and kString are almost the
same, so this is all possible. This is needed, as SCI scripts copy 
strings on arrays and then process them as such (e.g. in RAMA and LSL7)
However, we really need to merge SCI2 array types with the SCI2 string
types, and ultimately merge the code with the SCI1 array and string types.

svn-id: r54340
2010-11-18 19:18:11 +00:00
Filippos Karapetis
bd844a8c92 SCI: Call lookupArray() after allocateArray() when duplicating arrays
This ensures that the pointer to the element that lookupArray() returned
won't be invalidated in case the array is reallocated because of
allocateArray() - same issue as in kClone()

svn-id: r54306
2010-11-17 21:47:05 +00:00
Filippos Karapetis
98a8c01dbb SCI: Fixed bug #3038433 - "HOYLE1: Crashes"
svn-id: r52182
2010-08-18 07:14:17 +00:00
Filippos Karapetis
50c2fbbb48 SCI: Also allow checkListPointer() to check the result of lookupNode() itself
svn-id: r51156
2010-07-22 18:13:05 +00:00
Filippos Karapetis
b4a704c342 SCI: allow isSaneNodePointer to handle invalid node references itself
svn-id: r51153
2010-07-22 17:41:42 +00:00
Filippos Karapetis
9862f3fe24 SCI: Moved the SCI32 kernel functions out of kernel32.cpp and into their respective files
svn-id: r51108
2010-07-21 21:18:21 +00:00
Martin Kiewitz
cb4072f978 SCI: added special case for iceman when plotting course inside isSaneNodePointer
svn-id: r50960
2010-07-17 13:27:07 +00:00
Filippos Karapetis
2bfee401d2 SCI:
- Split SCI2 from SCI2.1 signature checks
- Added signature checking for the subops of the SCI2.1 kernel call kList
- Added support for calls to kAddToFront and kAddToEnd with 3 parameters (unimplemented code uncovered by the signature checks)
- Added a FIXME for a potential incorrect subop (uncovered by the signature checks), which might be related to the crashes in the demo of Torin's Passage

svn-id: r50861
2010-07-14 00:57:48 +00:00
Max Horn
3f429d64a2 SCI: Rename some variables to match our naming conventions
svn-id: r50549
2010-07-01 16:04:29 +00:00
Filippos Karapetis
b85fd471a6 Added support for kAddAfter with 4 parameters (used in Torin's Passage, for example)
svn-id: r50537
2010-06-30 17:36:52 +00:00
Filippos Karapetis
cb897a1a15 Changed an error back to a warning - Torin's Passage calls kAddAfter with 4 parameters, and we don't know what the 4th parameter is yet
svn-id: r50528
2010-06-30 11:08:23 +00:00
Filippos Karapetis
8752eed8f2 SCI: Reverting r50516, SSCI didn't reset the node value when deleting the node. Also, a slight fix in VM debug code.
svn-id: r50521
2010-06-30 09:51:21 +00:00
Filippos Karapetis
1e8b74f9de Updated incorrect comment
svn-id: r50517
2010-06-30 07:34:37 +00:00
Filippos Karapetis
7c5b31eb6d Also erase the value of the list node itself when deleting it inside kDeleteKey, as it might be referenced again before the GC is invoked
svn-id: r50516
2010-06-30 07:28:30 +00:00
Filippos Karapetis
9f1413b338 When deleting a list node, erase its references to predecessor and successor nodes. Fixes cases where game scripts could reference a list node after it was deleted (e.g. QFG1 intro, Longbow when exiting the cave). Some slight cleanup
svn-id: r50515
2010-06-30 07:18:43 +00:00
Max Horn
8ae9774a00 SCI: Turn more warnings into errors.
If one of these is triggered for you, you can add an exception to
the error, together with a comment explaining why this exception
is necessary. Ideally after verifying that the cause is a script
bug and not a bug in our code...

svn-id: r50442
2010-06-28 12:29:06 +00:00
Filippos Karapetis
4785e1fd3f Renamed some variables
svn-id: r50284
2010-06-25 19:09:19 +00:00
Filippos Karapetis
0fb5429318 Initialize the stack with 'S' or 's' characters, like SSCI does (ultimately, we should not change the stack again like we do in op_link - this is what Sierra is doing). Some cleanup
svn-id: r50207
2010-06-24 09:52:08 +00:00
Filippos Karapetis
01cb1cf011 Turned more warnings into errors, some cleanup
svn-id: r49990
2010-06-18 02:03:28 +00:00
Filippos Karapetis
39e77edbb7 Process kAddAfter with 4 parameters (Torin's Passage)
svn-id: r49976
2010-06-18 00:05:41 +00:00
Filippos Karapetis
a4ac9347d4 Fixed regression from commit #49251, and added an explanation. Calls to kNewNode with 1 parameter are handled properly again. Fixes the demo of Phantasmagoria 1. Thanks to lskovlun and waltervn for spotting this
svn-id: r49638
2010-06-13 21:43:13 +00:00
Filippos Karapetis
cc6f5eb3e4 Unified invokeSelector() and invokeSelectorArgv(), and removed the INV_SEL kludge. Also, removed the selectorInvocation parameter - if invokeSelector() fails, the error is in most cases unrecoverable, and the error description thrown covers all cases where kContinueOnInvalidSelector was used. This uncovered a bug too: in some places, non reg_t parameters were parsed
svn-id: r49564
2010-06-10 09:22:30 +00:00
Filippos Karapetis
67de5b1bd3 Mass renaming of selector-related functions, and removed some defines which 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-29 23:37:15 +00:00
Filippos Karapetis
2c2a1fa1ba Made _k_new_node() a method of the segment manager, and fixed a bug with the rarely used SCI0 kernel function kSort in the process (_k_new_node was called with key, value instead of value, key inside kSort)
svn-id: r49251
2010-05-26 22:05:51 +00:00
Max Horn
38bf3d0d3c SCI: Make EngineState parameter to INV_SEL explicit
svn-id: r48202
2010-03-08 21:54:07 +00:00
Max Horn
5e8743d0d6 SCI: Made some stuff static
svn-id: r48199
2010-03-08 20:12:17 +00:00
Walter van Niftrik
a3a07f19fc SCI: Revert r47929 (bad idea, as we may run out of offsets). Instead, adapt SCI32 list iteration code to store node successor before invoking.
svn-id: r48036
2010-02-12 02:23:28 +00:00
Filippos Karapetis
788f375703 Added a sanity check for kListAt and made the hack for displaying text work in SCI2 only
svn-id: r47931
2010-02-06 16:12:19 +00:00
Max Horn
f86618f92b SCI: Add a 'SELECTOR' macro
svn-id: r47918
2010-02-05 22:55:18 +00:00
Willem Jan Palenstijn
06bd17ee71 SCI: Remove extra '\n's in debugC messages
svn-id: r47707
2010-01-30 11:59:05 +00:00
Max Horn
4ffec28103 SCI: Move selector stuff to new header; reorder k_argc & k_argp param of invoke_selector
svn-id: r47665
2010-01-29 11:03:54 +00:00