Age | Commit message (Collapse) | Author |
|
In GK2, restoring a save game causes the segment manager to reset
in the middle of a kListFirstTrue call, which invalidates all
pointers and reg_ts to stored data. This means that when
kListFirstTrue tries to decrement the list recursion counter at
the end of iteration, it is writing to freed memory, potentially
resulting in heap corruption.
SCI3 added checks to prevent this from happening, but these checks
seem like they should have also been applied to some SCI2.1 games
as well (like GK2).
Since there should be no negative side-effect to this check, it
is applied universally to all SCI32 games.
|
|
|
|
transparentColor -> skipColor
displace -> origin
scaledWidth -> xResolution
scaledHeight -> yResolution
|
|
This change invalidates earlier SCI32 save games, which separated
arrays and strings in an incompatible manner. Old save games
contain invalid references to a string segment which no longer
exists, and contain incompatible array structures that lack
critical type information.
|
|
|
|
|
|
Bitmaps in ScrollWindow and Robot code are managed by the kernel
and not by game scripts, although they must be able to be
referenced through a reg_t. To prevent incorrect GC of bitmaps
that are in use but not referenced by any game script, explicit
memory management of hunk entries can be enabled.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
When resetting the segment manager, sometimes the locals block for a
script is placed in a segment smaller than the script itself. This
shouldn't be happening, but it isn't fatal, however it should be resolved
in a proper manner
|
|
The caller offset is never actually used inside the function
|
|
|
|
|
|
|
|
|
|
|
|
svn-id: r54925
|
|
simplified version, thus greatly simplifying handling of system strings
svn-id: r54805
|
|
- Maintain the state of the string heap space in saved games
- Merged SegManager::reconstructScripts() inside SegManager::saveLoadWithSerializer()
- Disabled a now unnecessary script patch for the cipher puzzle in Castle of Dr. Brain, and performed some cleanup for another disabled patch
- Removed direct access to the _baseObj variable of objects
svn-id: r54133
|
|
conversation dialog with esc (doesn't affect gameplay in any manner)
svn-id: r51572
|
|
kAnimate may refer to unfrozen objects which have been deleted, thus handle that case accordingly.
svn-id: r51152
|
|
svn-id: r50552
|
|
This require a small tweak to the save/load code: I moved the syncing
logic for _classtable from EngineState::saveLoadWithSerializer to
SegManager::saveLoadWithSerializer, which in theory should have no
effect (luckily, _classtable was being synced right after the
segment manager).
svn-id: r50551
|
|
svn-id: r50550
|
|
svn-id: r50549
|
|
svn-id: r50439
|
|
manager
svn-id: r50402
|
|
of the Script class
svn-id: r50398
|
|
opcode-related code inside vm.cpp/.h
svn-id: r50396
|
|
initializing script objects
svn-id: r50390
|
|
to scriptInitialiseObjectsSci0()
svn-id: r50357
|
|
svn-id: r49843
|
|
svn-id: r49649
|
|
loaded, thus we no longer need to save it. Merged scriptInitialiseLocals() with scriptInitialiseLocalsZero()
svn-id: r49640
|
|
svn-id: r49503
|
|
doesn't change during the game, thus move all the system strings code and variables inside the segment manager
svn-id: r49372
|
|
inside saveLoadWithSerializer()
svn-id: r49318
|
|
svn-id: r49312
|
|
exports are accessed, since for SCI11 and newer exports can be functions and objects (first step in removing scriptRelocateExportsSci11(), which is a gross hack and it fails in QFG1VGA)
svn-id: r49308
|
|
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
|
|
and moved validateExportFunc() in the Script class, thus resolving a TODO
svn-id: r49093
|
|
Segment manager functions allocateHunkEntry, getHunkPointer and freeHunkEntry are used directly (which are more descriptive, anyway)
- Replaced the GET_SEGMENT macro by a method of the segment manager
- Removed the unused reference to the created hunk in allocateHunkEntry(), only the reg_t reference to it is returned now
svn-id: r49078
|
|
svn-id: r47836
|
|
svn-id: r47541
|
|
- Fully implement kArray and kIsHiRes and mostly implement kString (printf and atoi subfunctions still missing).
- Add a dummy SciGui class for SCI32 to bypass the views. Gabriel Knight 1 will now play the Sierra logo music and the main menu music.
- Some other minor SCI32 changes.
svn-id: r46462
|