aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/engine/vm.cpp
AgeCommit message (Collapse)Author
2009-08-26Added a safeguard to avoid getting stuck in an endless loop when ↵Filippos Karapetis
initializing some problematic scripts in certain demos (e.g. the EcoQuest 1 demo), and fixed the return values of script_instantiate_sci0() in the process svn-id: r43759
2009-08-26FormattingFilippos Karapetis
svn-id: r43754
2009-08-25- Replaced more cases of EngineState parametersFilippos Karapetis
- Made some version comparisons for old SCI0 versions easier to read - Removed the GET_SEL32SV macro svn-id: r43729
2009-08-25Silenced warnings (thanks wjp)Filippos Karapetis
svn-id: r43725
2009-08-25- Simplified the parameters of some functionsFilippos Karapetis
- Replaced some EngineState parameters - The SCI version is now obtained from the resource manager or the segment manager, thereby simplifying several functions - Plugged 2 leaks in the fallback detector - Renamed the segment manager and resource manager to "segmentManager" and "resourceManager" in all places, for consistency svn-id: r43722
2009-08-24SCI: Read class table from vocab resource instead of scanning. This fixesWalter van Niftrik
several "invalid selector" VM crashes caused by duplicate classes. svn-id: r43680
2009-08-23- Added more mappings from Sierra's internal IDs to our own ones. Hopefully, ↵Filippos Karapetis
all SCI0-SCI11 games can now be detected correctly from the fallback detector - Simplified some checks for old script types svn-id: r43678
2009-08-20remove \n's from error() callsJoost Peters
svn-id: r43571
2009-08-18- Added game ID detection to the fallback detector. We still need to map ↵Filippos Karapetis
some of Sierra's internal IDs to our own ones - The class table is now created in the segment manager constructor svn-id: r43504
2009-08-17- Simplified some functions to accept only the parts of the EngineState they ↵Filippos Karapetis
need as parameters, instead of the whole EngineState - Moved the class table in the Segment manager - it's the only class using it directly - Removed the sci11 flag from save games (we already know this, we don't need to store it) - Moved script_get_segment() and get_class_address() inside the segment manager class - Removed the script_locate_by_segment wrapper - Simplified script_lookup_export() a lot by removing some paranoia checks - Added some WIP code for automatically determining the game id in the fallback detector (still not working) - General cleanup svn-id: r43458
2009-08-11SCI: Added a crude speed throttler.Walter van Niftrik
svn-id: r43289
2009-08-10SCI: Fix warnings.Walter van Niftrik
svn-id: r43218
2009-07-19SCI: check shouldQuit() in main loopWillem Jan Palenstijn
svn-id: r42609
2009-07-18SCI: Fix breakpointsWillem Jan Palenstijn
svn-id: r42599
2009-07-18SCI: Fix stepping in debuggerWillem Jan Palenstijn
svn-id: r42587
2009-07-11Moved the kernel and the vocabulary outside of the engine state (they're ↵Filippos Karapetis
static data, which never changes during a game) svn-id: r42398
2009-07-11Fixed regression in the script parser from commit 42260Filippos Karapetis
svn-id: r42371
2009-07-08- Moved printObject inside the Console classFilippos Karapetis
- Enabled the parts where disassemble() is called svn-id: r42263
2009-07-08Some cleanup for the script debugger code:Filippos Karapetis
- Renamed struct DebugState to ScriptState and r_amp_rest to restAdjust inside EngineState. Changed restAdjust to be a uint16 (actually it is a uint16, but it was being casted back and forth from an unsigned integer, so this clears up its type and size) - Moved the script state variables from inside the run_vm() into the ScriptState struct, so that they can be accessed by the console commands and the script debugger all the time, and removed the weird isValid code svn-id: r42260
2009-07-07Added auto-detection for games with older headers for script blocks, and ↵Filippos Karapetis
removed game flag GF_SCI0_OLD svn-id: r42211
2009-07-07Added a SCI1.1 case in the lofss opcode, like in the lofsa opcode ↵Filippos Karapetis
(essentially, lofss and lofsa both load an offset, with lofsa loading it in the accumulator and lofss in the stack). lofss is rarely used in SCI1.1 games, which explains why no lofss-related crashes have been observed in SCI1.1 svn-id: r42209
2009-07-06Replaced sciprintf() calls with printf, DebugPrintf, warning and error callsFilippos Karapetis
svn-id: r42167
2009-07-05SCI1 games with absolute parameters to lofs instructions are automatically ↵Filippos Karapetis
detected now. Removed the GF_SCI1_LOFSABSOLUTE game flag svn-id: r42118
2009-07-03Replaced script_error and CORE_ERROR with error()Filippos Karapetis
svn-id: r42079
2009-07-03- Pushed debugstate into debug.hFilippos Karapetis
- When an error occurs, manipulate the execution stack before error() opens the console inside getDebugger(), like FreeSCI did. Added another method for obtaining the SCI console for use by the engine itself. svn-id: r42062
2009-07-02Moved some more debug state related variables in the DebugState structFilippos Karapetis
svn-id: r42044
2009-06-18PatchMax Horn
svn-id: r41647
2009-06-07SCI: Got rid of g_EngineStateMax Horn
svn-id: r41359
2009-06-07SCI: Moved resource36 handling into resource manager.Walter van Niftrik
svn-id: r41349
2009-06-07SCI: Fixed the broken SciEngine::pauseEngineIntern code by ensuring that ↵Max Horn
SciEngine::_gamestate is updated whenever the EngineState gets changed (due to loading a savestate) svn-id: r41346
2009-06-06Store long-term pointers to object variables in a new ObjVarRef struct.Willem Jan Palenstijn
Storing them as reg_t* could cause the pointers to become invalid when they pointed into CloneTable since CloneTable can be re-allocated. svn-id: r41220
2009-06-05Moved some more debug commands to ScummVM's coneole and removed some unused codeFilippos Karapetis
svn-id: r41198
2009-06-04SCI: Renamed EngineState::flags and version to _flags and _version ↵Max Horn
(following our conventions); also slightly changed the EngineState constructor to init _version & _flags, and used this to make them constant svn-id: r41177
2009-06-04SCI: Renamed _kfuncTable -> _kernelFuncs; and simplified/streamlined the ↵Max Horn
kernel func map in kernel.cpp a bit svn-id: r41176
2009-06-04SCI: Renamed various debug related global variables to have a g_ prefix; and ↵Max Horn
moved any 'extern' decls of them into a new header file svn-id: r41163
2009-06-04Turned debug_weak_validations on by default again, as apparently some games ↵Filippos Karapetis
like SQ3 fail in some validations (e.g. when loading). Also, fixed a potential out of bounds access when copying the value of __FILE__ into a buffer (as its value can be quite long in some cases). svn-id: r41154
2009-06-03- Sorted the console commands a bit more Filippos Karapetis
- Removed the commands which manipulated variables and turned them into debug variables instead - Rewrote help so that it's more organized and easier to read - Unified the debug variable names svn-id: r41136
2009-06-02Moved some more console commands to ScummVM's debug consoleFilippos Karapetis
svn-id: r41129
2009-06-02Moved some more console commands to ScummVM's debug consoleFilippos Karapetis
svn-id: r41126
2009-06-02Removed the gfxw_new_visual and gfxw_new_port wrappers, moved _kfuncTable ↵Filippos Karapetis
inside the Kernel class and moved gfxw_find_port inside the GfxVisual struct svn-id: r41125
2009-06-01Split the kernel functions away from the vocabulary functions (WIP, ↵Filippos Karapetis
saving/loading is broken) svn-id: r41101
2009-05-31Removed script_error_flag and script_debug_flag, which were used to error ↵Filippos Karapetis
out if something went wrong and open the debugger console. Changed all the places where they were used to error() out instead, as ScummVM's debugger console can open on error() svn-id: r41073
2009-05-31- Further objectification of the SCI vocabulary functionsFilippos Karapetis
- Rewrote the sci_opcodes enum so that it's easier to read - Made the engine error out if data is sent to an invalid selector (which is a fatal condition) svn-id: r41069
2009-05-31The error() and warning() functions add ! and newline automatically. (I didn'tTorbjörn Andersson
look at debug() and debugC(), since I'm really bored with this now. :-) svn-id: r41061
2009-05-31More objectification of the Vocabulary functionsFilippos Karapetis
svn-id: r41057
2009-05-30Started objectifying the vocabulary functions (WIP)Filippos Karapetis
svn-id: r41051
2009-05-30- Removed debug_mode from the engine stateFilippos Karapetis
- Turned all SCIkwarn and SCIkdebug functions to ScummVM's debugC function - Placed some debug code in appropriate defines: DEBUG_PARSER, DEBUG_AVOIDPATH and DEBUG_SOUND - Removed the "debuglog" command and the "script_checkloads_flag" and "sci_debug_flags" variables svn-id: r41033
2009-05-29SCI: Converted several fprintf(stderr) calls to warning/error (the remaining ↵Max Horn
fprintf calls should probably be replaced by suitable debug/debugC/debugN invocations) svn-id: r40993
2009-05-28SCI: Fix potential dangling pointer more robustly,Willem Jan Palenstijn
by changing the executionStack implementation to a list. svn-id: r40971
2009-05-28SCI: Merged SfxPlayer/NewPlayer code into sfx/core.cppMax Horn
svn-id: r40965