Commit graph

131 commits

Author SHA1 Message Date
Filippos Karapetis
ba6de1bcdf SCI: Added sanity checks for SCI3 scripts bigger than 64KB
- Extended the "verify_scripts" console command for SCI3 scripts
- Added a check for such large scripts when scripts are loaded, with
an error for now, till a mechanism to support such scripts with a
16-bit addressing scheme is in place (e.g. overlaying, or splitting
scripts). Either way, such scripts should span over more than one segment

svn-id: r54304
2010-11-17 20:46:59 +00:00
Lars Skovlund
e551f3bf33 SCI3: Handle script exports correctly
svn-id: r54302
2010-11-17 20:37:13 +00:00
Max Horn
3d7f7b49fe SCI: Make class table size OB1 workaround slightly more readable
svn-id: r54290
2010-11-17 13:01:58 +00:00
Filippos Karapetis
b707d6e7dc SCI: More work on SCI3, based on a patch by lskovlun
- Added SCI3 equivalents for access to object selectors
- Added SCI3 implementation of object relocation
- Added SCI3 implementation of Script::initialiseClasses()

svn-id: r54283
2010-11-17 11:15:52 +00:00
Filippos Karapetis
59ad5085bc SCI: Some more work on SCI3, based on a patch by lskovlun
- Added a SCI3 implementation of Script::load()
- Added a SCI3 implementation of Script::initialiseClasses()
- Removed some duplicate code

svn-id: r54282
2010-11-17 09:28:04 +00:00
Filippos Karapetis
e4c967a301 SCI: Added the SCI3 equivalent of initialiseObjects(), from a patch by lskovlun
svn-id: r54281
2010-11-17 09:10:43 +00:00
Filippos Karapetis
f44b084deb SCI: Some restructuring. Added some SCI3 placeholders/stubs
svn-id: r54280
2010-11-17 08:53:02 +00:00
Filippos Karapetis
0470e47145 SCI: The heap was a separate resource in SCI1.1 - SCI2.1 games only. It was later
merged into the script files again in SCI3

svn-id: r54279
2010-11-17 08:30:08 +00:00
Filippos Karapetis
7d71d07075 SCI: Renamed findBlock() to findBlockSCI0()
svn-id: r54077
2010-11-04 23:19:23 +00:00
Filippos Karapetis
e242814990 SCI: Proper fix for bug #3038837 - "HOYLE3: EGA/VGA Crashes" and some cleanup
System scripts (i.e. 0 and 900-999) are now protected and never destroyed during a
game

svn-id: r52702
2010-09-13 13:17:55 +00:00
Filippos Karapetis
b6488818a5 SCI: Bugfix for rev #52688.
We can't just set the lockers of script 0 to 1, as at that point
the objects associated with the script are marked to be deleted,
thus we need to reload the script

svn-id: r52693
2010-09-12 21:50:52 +00:00
Lars Skovlund
de6555663d Workaround for bug #038837: HOYLE3: EGA/VGA Crashes. Needs further
investigation and a proper fix post-release

svn-id: r52688
2010-09-12 18:13:14 +00:00
Filippos Karapetis
3daf588e08 SCI: Janitorial - fixed spaces and typos
svn-id: r52527
2010-09-04 17:16:41 +00:00
Filippos Karapetis
34195238bb SCI: Don't try to initialize non-existent scripts, error out instead
(Invalid scripts may be requested to be loaded when warping to an incorrect room)

svn-id: r52524
2010-09-04 15:38:24 +00:00
Filippos Karapetis
c34cec4e15 SCI: Fixed bug #3037595 - "KQ4: Crash reading message in the bottle (whale mouth)"
svn-id: r52516
2010-09-04 09:41:39 +00:00
Filippos Karapetis
190043e6b7 SCI: Resolved a FIXME concerning scripts with more than one export table (it only makes sense for SCI0-SCI1 games)
svn-id: r52179
2010-08-18 00:04:21 +00:00
Martin Kiewitz
c70f16c55d SCI: making camelot fix camelot-only for now
fixes kq6 getting assert as well (bug 3042866)

svn-id: r51970
2010-08-11 06:13:08 +00:00
Martin Kiewitz
3b9ebd6353 SCI: adding patch for eq1cd
fixes ego swimming left/right of room 660 and getting a "message not found" error and a GE? signature mismatch - in sierra sci this also resulted in "message not found" and a hang afterwards - bug #3038387

svn-id: r51951
2010-08-10 15:18:18 +00:00
Filippos Karapetis
57fd588327 SCI: Split the new script patch code in a separate file
svn-id: r51810
2010-08-06 22:36:46 +00:00
Martin Kiewitz
dfe4c8d9a0 SCI: fixing typo
svn-id: r51809
2010-08-06 22:14:38 +00:00
Martin Kiewitz
8ddcf3942b SCI: adding patch for lsl6 issue
fixes crashing when dieing at least in german lsl6, caused by temp memory space corruption. Also happened in sierra sci.

svn-id: r51807
2010-08-06 21:51:45 +00:00
Filippos Karapetis
96fd9e6c82 SCI: Added support for scripts that have more than one export table. Fixes bug #3039785 - "Conquests of Camelot: Crash in Glastonbury Tor"
svn-id: r51805
2010-08-06 21:21:39 +00:00
Martin Kiewitz
7b0a5ec099 SCI: adjusting patch to write 0 instead of 1
patch still worked, but 0 was meant to be there thx to lskovlun to point this out

svn-id: r51796
2010-08-06 19:13:19 +00:00
Martin Kiewitz
753c431937 SCI: adding script patching
including a patch for hoyle 4 and commenting out the workaround code inside kDisposeWindow

svn-id: r51795
2010-08-06 18:54:58 +00:00
Martin Kiewitz
afed447b6f SCI: fix warnings
svn-id: r51788
2010-08-06 15:12:03 +00:00
Martin Kiewitz
2a4768401e SCI: some work on the script patcher
signature matching is working (added hoyle 4 signature)

svn-id: r51787
2010-08-06 15:06:42 +00:00
Filippos Karapetis
c61ed6e3aa SCI: Removed the language check from the
KQ5 workaround, as there could be an issue
with other non-English versions, too (e.g. 
the Spanish floppy version)

svn-id: r51472
2010-07-29 15:50:53 +00:00
Filippos Karapetis
123d1f6bf6 Extended the workaround for KQ5 French floppy for the German floppy too. Fixes bug #3035396 - "KQ5: Crash when start the game"
svn-id: r51471
2010-07-29 15:40:09 +00:00
Martin Kiewitz
472dbc9f7d SCI: fix initializing script 99 of sq3
svn-id: r51097
2010-07-21 19:19:33 +00:00
Martin Kiewitz
bb1c722a0b SCI: adding workaround for sq3
fixing off-by-one error when initializing script 93

svn-id: r51091
2010-07-21 17:42:51 +00:00
Martin Kiewitz
dbc1607603 SCI: add script number to r51008 change
svn-id: r51009
2010-07-18 20:19:14 +00:00
Martin Kiewitz
8893d4ef23 SCI: add workaround for script 500 lsl3
svn-id: r51008
2010-07-18 20:14:18 +00:00
Martin Kiewitz
8410dbab53 SCI: stupid oversight fix r50446, too hot here :P
svn-id: r50447
2010-06-28 14:49:54 +00:00
Martin Kiewitz
66fb9e7a90 SCI: fixing valgrind issue in Script::initialiseClasses thx to wjp for valgrind testing
svn-id: r50446
2010-06-28 14:46:28 +00:00
Max Horn
4fdbd14a60 SCI: Move a few remaining Script methods to engine/script.cpp
svn-id: r50441
2010-06-28 12:28:46 +00:00
Max Horn
a278c07aa6 SCI: get rid of Script::allocateObject
svn-id: r50438
2010-06-28 12:27:48 +00:00
Max Horn
30218a2c32 SCI: Make Script member vars private; add const qualifiers
Only three Script members remain public (for now)

svn-id: r50428
2010-06-28 11:22:20 +00:00
Max Horn
85038e7d6c SCI: Change warning back to error in Script::initialiseObjectsSci0
Instead of turning the error into a warning globally, we now have
code which ignores the error in Script 202 of KQ5 French, but will
keep reporting if it turns up in other places.

svn-id: r50427
2010-06-28 11:21:55 +00:00
Max Horn
12099176f7 SCI: More formatting cleanup
svn-id: r50426
2010-06-28 11:21:39 +00:00
Filippos Karapetis
4a60ff4090 Made the script initialization/uninitialization methods part of the segment manager
svn-id: r50402
2010-06-27 21:18:19 +00:00
Filippos Karapetis
2843feeb9a SCI: Made the code for initializing script classes, objects and locals part of the Script class
svn-id: r50398
2010-06-27 21:00:34 +00:00
Filippos Karapetis
bb992b0b93 SCI: Moved all the script-related code inside script.cpp/.h, and all script opcode-related code inside vm.cpp/.h
svn-id: r50396
2010-06-27 20:38:43 +00:00
Filippos Karapetis
aa9b9dd08f SCI: Separated the code for initializing script classes from the code for initializing script objects
svn-id: r50390
2010-06-27 20:09:51 +00:00
Martin Kiewitz
303dc06388 SCI: fixing regression from one of the merges
svn-id: r50387
2010-06-27 18:41:07 +00:00
Filippos Karapetis
d7f212647a Turned the error when failing to locate an invalid object back to a warning (KQ5 French has an invalid object in script 202)
svn-id: r50379
2010-06-27 16:02:03 +00:00
Filippos Karapetis
daab502028 Cleanup
svn-id: r50359
2010-06-27 00:08:00 +00:00
Filippos Karapetis
7a14846bdd Removed the misleading getHeap() function (only valid for SCI0-SCI1), plus removed some unused defines
svn-id: r50358
2010-06-26 23:48:27 +00:00
Filippos Karapetis
3cf0114164 Moved script_instantiate_sci0() inside the segment manager, and renamed it to scriptInitialiseObjectsSci0()
svn-id: r50357
2010-06-26 23:13:05 +00:00
Filippos Karapetis
db70d66e4a Strict mode: Changed several warnings due to logic bugs into errors. If an error pops up from these ones, please add the game where it occurred and the steps to reproduce the error before turning it into a warning
svn-id: r49973
2010-06-17 23:50:28 +00:00
Filippos Karapetis
60d8cc5180 Removed the now unused EngineState parameter of script_adjust_opcode_formats(), as well as an obsolete TODO
svn-id: r49684
2010-06-15 07:21:52 +00:00