aboutsummaryrefslogtreecommitdiff
path: root/scummvm.cpp
diff options
context:
space:
mode:
authorLudvig Strigeus2001-10-10 10:02:33 +0000
committerLudvig Strigeus2001-10-10 10:02:33 +0000
commit061f9c1289fac34d45887a8cd6ffd627446dcd7f (patch)
treeb389a05921a175b1499a0a6664e56095bc92a3c8 /scummvm.cpp
parent1fb297d3f62a3334999b1ccf408f27deacbada8d (diff)
downloadscummvm-rg350-061f9c1289fac34d45887a8cd6ffd627446dcd7f.tar.gz
scummvm-rg350-061f9c1289fac34d45887a8cd6ffd627446dcd7f.tar.bz2
scummvm-rg350-061f9c1289fac34d45887a8cd6ffd627446dcd7f.zip
alternative mouse cursor
basic save&load svn-id: r3416
Diffstat (limited to 'scummvm.cpp')
-rw-r--r--scummvm.cpp52
1 files changed, 38 insertions, 14 deletions
diff --git a/scummvm.cpp b/scummvm.cpp
index 3010e95f76..0f69609b3e 100644
--- a/scummvm.cpp
+++ b/scummvm.cpp
@@ -17,6 +17,10 @@
*
* Change Log:
* $Log$
+ * Revision 1.4 2001/10/10 10:02:33 strigeus
+ * alternative mouse cursor
+ * basic save&load
+ *
* Revision 1.3 2001/10/09 19:02:28 strigeus
* command line parameter support
*
@@ -83,8 +87,6 @@ void Scumm::scummInit() {
memset(vm.vars, 0, sizeof(vm.vars));
memset(vm.bitvars, 0, sizeof(vm.bitvars));
- memset(vm.scriptoffs, 0, sizeof(vm.scriptoffs));
- memset(vm.inventory, 0, sizeof(vm.inventory));
_defaultTalkDelay = 60;
vm.vars[37] = 4;
@@ -165,7 +167,7 @@ void Scumm::scummInit() {
_numInMsgStack = 0;
- createResource(0xC, 6, 500);
+ createResource(12, 6, 500);
initScummVars();
@@ -200,8 +202,6 @@ void Scumm::scummMain(int argc, char **argv) {
charset._vm = this;
cost._vm = this;
- _exe_name = "monkey2";
-
_fileHandle = NULL;
_bootParam = 0;
@@ -262,7 +262,14 @@ void Scumm::scummMain(int argc, char **argv) {
vm.vars[VAR_DEBUGMODE] = _debugMode;
if (_saveLoadFlag) {
- error("Loading/saving not implemented");
+ char buf[256];
+ sprintf(buf, "savegame.%d", _saveLoadSlot);
+ if (_saveLoadFlag==1) {
+ saveState(buf);
+ } else {
+ loadState(buf);
+ }
+ _saveLoadFlag = 0;
}
if (_completeScreenRedraw) {
@@ -275,9 +282,13 @@ void Scumm::scummMain(int argc, char **argv) {
a->needRedraw = 1;
}
+ checkHeap();
runAllScripts();
+ checkHeap();
checkExecVerbs();
+ checkHeap();
checkAndRunVar33();
+ checkHeap();
if (_currentRoom==0) {
gdi.unk4 = 0;
@@ -288,25 +299,38 @@ void Scumm::scummMain(int argc, char **argv) {
continue;
}
+ checkHeap();
walkActors();
+ checkHeap();
moveCamera();
+ checkHeap();
fixObjectFlags();
+ checkHeap();
CHARSET_1();
+ checkHeap();
if (camera._curPos != camera._lastPos || _BgNeedsRedraw || _fullRedraw) {
redrawBGAreas();
+ checkHeap();
}
processDrawQue();
+ checkHeap();
setActorRedrawFlags();
+ checkHeap();
resetActorBgs();
+ checkHeap();
if (!(vm.vars[VAR_DRAWFLAGS]&2) && vm.vars[VAR_DRAWFLAGS]&4) {
error("Flashlight not implemented in this version");
}
processActors(); /* process actors makes the heap invalid */
+ checkHeap();
clear_fullRedraw();
+ checkHeap();
cyclePalette();
+ checkHeap();
palManipulate();
+ checkHeap();
if (dseg_4F8A) {
screenEffect(_newEffect);
@@ -369,7 +393,6 @@ void Scumm::startScene(int room, Actor *a, int objectNr) {
checkHeap();
- removeMouseCursor();
clearMsgQueue();
unkVirtScreen4(_switchRoomEffect2);
@@ -511,7 +534,7 @@ void Scumm::initRoomSubBlocks() {
ptr = findResource(MKID('BOXD'), roomptr);
if (ptr) {
int size = READ_BE_UINT32_UNALIGNED(ptr+4);
- createResource(0xE, 2, size);
+ createResource(14, 2, size);
roomptr = getResourceAddress(1, _roomResource);
ptr = findResource(MKID('BOXD'), roomptr);
memcpy(getResourceAddress(0xE, 2), ptr, size);
@@ -520,7 +543,7 @@ void Scumm::initRoomSubBlocks() {
ptr = findResource(MKID('BOXM'), roomptr);
if (ptr) {
int size = READ_BE_UINT32_UNALIGNED(ptr+4);
- createResource(0xE, 1, size);
+ createResource(14, 1, size);
roomptr = getResourceAddress(1, _roomResource);
ptr = findResource(MKID('BOXM'), roomptr);
memcpy(getResourceAddress(0xE, 1), ptr, size);
@@ -579,7 +602,7 @@ void Scumm::setScaleItem(int slot, int a, int b, int c, int d) {
byte *ptr;
int cur,amounttoadd,i,tmp;
- ptr = createResource(0xB, slot, 200);
+ ptr = createResource(11, slot, 200);
if (a==c)
return;
@@ -835,10 +858,11 @@ void CDECL debug(int level, const char *s, ...) {
}
void checkHeap() {
-#if 0
- if (_heapchk() != _HEAPOK) {
- error("Heap is invalid!");
- }
+#if 1
+
+//if (_heapchk() != _HEAPOK) {
+// error("Heap is invalid!");
+// }
#endif
}