[Scummvm-cvs-logs] scummvm master -> a38018c5f49ff4a7c9014749c65ebaca4973a0f1

wjp wjp at usecode.org
Sat Dec 3 16:58:29 CET 2011


This automated email contains information about 3 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
23576c8f15 DREAMWEB: Clean up
720f3587cb DREAMWEB: Move 'loadOld' from dreamgen
a38018c5f4 DREAMWEB: Convert 'loadOld' and clean up 'doLoad' calls


Commit: 23576c8f155833614f5207b14005f9a69f1c8d4f
    https://github.com/scummvm/scummvm/commit/23576c8f155833614f5207b14005f9a69f1c8d4f
Author: Willem Jan Palenstijn (wjp at usecode.org)
Date: 2011-12-03T07:56:37-08:00

Commit Message:
DREAMWEB: Clean up

Changed paths:
    engines/dreamweb/saveload.cpp
    engines/dreamweb/stubs.cpp



diff --git a/engines/dreamweb/saveload.cpp b/engines/dreamweb/saveload.cpp
index b520150..6af4071 100644
--- a/engines/dreamweb/saveload.cpp
+++ b/engines/dreamweb/saveload.cpp
@@ -60,7 +60,7 @@ void DreamGenContext::doLoad() {
 		namesToOld();
 		data.byte(kGetback) = 0;
 
-		while (true) {
+		while (data.byte(kGetback) == 0) {
 			if (quitRequested())
 				return;
 			delPointer();
@@ -77,8 +77,6 @@ void DreamGenContext::doLoad() {
 				{ 0xFFFF,0,0,0,0 }
 			};
 			checkCoords(loadlist);
-			if (data.byte(kGetback) == 1)
-				break; // This signalled that actualLoad loaded a game
 			if (data.byte(kGetback) == 2)
 				return; // "quitloaded"
 		}
@@ -114,8 +112,6 @@ void DreamGenContext::doLoad() {
 	if (data.word(kTempgraphics) != 0xFFFF)
 		getRidOfTemp();
 
-	dx = data;
-	es = dx;
 	const Room *room = (const Room *)cs.ptr(kMadeuproomdat, sizeof(Room));
 	startLoading(*room);
 	loadRoomsSample();
@@ -160,7 +156,7 @@ void DreamGenContext::saveGame() {
 		data.word(kBufferout) = 0;
 		data.byte(kGetback) = 0;
 
-		while (true) {
+		while (data.byte(kGetback) == 0) {
 			if (quitRequested())
 				return;
 			delPointer();
@@ -179,10 +175,6 @@ void DreamGenContext::saveGame() {
 				{ 0xFFFF,0,0,0,0 }
 			};
 			checkCoords(savelist);
-			_cmp(data.byte(kGetback), 0);
-			if (flags.z())
-				continue;
-			break;
 		}
 		return;
 	} else {
@@ -340,7 +332,7 @@ void DreamGenContext::savePosition(unsigned int slot, const uint8 *descbuf) {
 	for (int i = 0; i < 6; ++i)
 		header.setLen(i, len[i]);
 
-	engine->writeToSaveFile((const uint8 *)&header, kHeaderlen);
+	engine->writeToSaveFile((const uint8 *)&header, sizeof(FileHeader));
 	engine->writeToSaveFile(descbuf, len[0]);
 	engine->writeToSaveFile(data.ptr(kStartvars, len[1]), len[1]);
 	engine->writeToSaveFile(getSegment(data.word(kExtras)).ptr(kExframedata, len[2]), len[2]);
@@ -362,7 +354,7 @@ void DreamGenContext::loadPosition(unsigned int slot) {
 
 	FileHeader header;
 
-	engine->readFromSaveFile((uint8 *)&header, kHeaderlen);
+	engine->readFromSaveFile((uint8 *)&header, sizeof(FileHeader));
 
 	// read segment lengths from savegame file header
 	int len[6];
@@ -383,6 +375,8 @@ void DreamGenContext::loadPosition(unsigned int slot) {
 	engine->readFromSaveFile(getSegment(data.word(kBuffers)).ptr(kListofchanges, len[3]), len[3]);
 
 	// len[4] == 48, which is sizeof(Room) plus 16 for 'Roomscango'
+	// Note: the values read into Madeuproomdat are only used in actualLoad,
+	// which is (almost) immediately called after this function
 	engine->readFromSaveFile(data.ptr(kMadeuproomdat, sizeof(Room)), sizeof(Room));
 	engine->readFromSaveFile(data.ptr(kRoomscango, 16), 16);
 
@@ -403,7 +397,7 @@ unsigned int DreamGenContext::scanForNames() {
 
 		++count;
 
-		engine->readFromSaveFile((uint8 *)&header, kHeaderlen);
+		engine->readFromSaveFile((uint8 *)&header, sizeof(FileHeader));
 
 		if (header.len(0) != 17) {
 			::warning("Error loading save: description buffer isn't 17 bytes");
diff --git a/engines/dreamweb/stubs.cpp b/engines/dreamweb/stubs.cpp
index 4b3428e..2db75ee 100644
--- a/engines/dreamweb/stubs.cpp
+++ b/engines/dreamweb/stubs.cpp
@@ -583,7 +583,7 @@ uint16 DreamGenContext::standardLoad(const char *fileName) {
 	FileHeader header;
 
 	engine->openFile(fileName);
-	engine->readFromFile((uint8 *)&header, kHeaderlen);
+	engine->readFromFile((uint8 *)&header, sizeof(FileHeader));
 	uint16 sizeInBytes = header.len(0);
 	uint16 result = allocateMem((sizeInBytes + 15) / 16);
 	engine->readFromFile(getSegment(result).ptr(0, 0), sizeInBytes);
@@ -2425,7 +2425,7 @@ void DreamGenContext::loadRoomData(const Room &room, bool skipDat) {
 	flags._c = false;
 
 	FileHeader header;
-	engine->readFromFile((uint8 *)&header, kHeaderlen);
+	engine->readFromFile((uint8 *)&header, sizeof(FileHeader));
 
 	// read segment lengths from room file header
 	int len[15];


Commit: 720f3587cba66c176657c7953f3df3ac07baabe7
    https://github.com/scummvm/scummvm/commit/720f3587cba66c176657c7953f3df3ac07baabe7
Author: Willem Jan Palenstijn (wjp at usecode.org)
Date: 2011-12-03T07:57:42-08:00

Commit Message:
DREAMWEB: Move 'loadOld' from dreamgen

Changed paths:
    devtools/tasmrecover/tasm-recover
    engines/dreamweb/dreamgen.cpp
    engines/dreamweb/dreamgen.h
    engines/dreamweb/saveload.cpp
    engines/dreamweb/stubs.h



diff --git a/devtools/tasmrecover/tasm-recover b/devtools/tasmrecover/tasm-recover
index 22df4f1..9a533c8 100755
--- a/devtools/tasmrecover/tasm-recover
+++ b/devtools/tasmrecover/tasm-recover
@@ -368,6 +368,7 @@ generator = cpp(context, "DreamGen", blacklist = [
 	'entercode',
 	'scanfornames',
 	'checkforemm',
+	'loadold',
 	], skip_output = [
 	# These functions are processed but not output
 	'dreamweb',
diff --git a/engines/dreamweb/dreamgen.cpp b/engines/dreamweb/dreamgen.cpp
index 00d6b94..6ade575 100644
--- a/engines/dreamweb/dreamgen.cpp
+++ b/engines/dreamweb/dreamgen.cpp
@@ -10278,32 +10278,6 @@ alreadynewgame:
 	data.byte(kGetback) = 3;
 }
 
-void DreamGenContext::loadOld() {
-	STACK_CHECK;
-	_cmp(data.byte(kCommandtype), 252);
-	if (flags.z())
-		goto alreadyloadold;
-	data.byte(kCommandtype) = 252;
-	al = 48;
-	commandOnly();
-alreadyloadold:
-	ax = data.word(kMousebutton);
-	_and(ax, 1);
-	if (flags.z())
-		return /* (noloadold) */;
-	ax = 0x0ffff;
-	doLoad();
-	_cmp(data.byte(kGetback), 4);
-	if (flags.z())
-		return /* (noloadold) */;
-	_cmp(data.byte(kQuitrequested),  0);
-	if (!flags.z())
-		return /* (noloadold) */;
-	showDecisions();
-	workToScreenM();
-	data.byte(kGetback) = 0;
-}
-
 void DreamGenContext::createName() {
 	STACK_CHECK;
 	push(ax);
diff --git a/engines/dreamweb/dreamgen.h b/engines/dreamweb/dreamgen.h
index 2fd2b00..b0cb21f 100644
--- a/engines/dreamweb/dreamgen.h
+++ b/engines/dreamweb/dreamgen.h
@@ -707,7 +707,7 @@ public:
 	void sLabDoorE();
 	void sLabDoorD();
 	void adjustUp();
-	void sLabDoorF();
+	void fadeScreenDownHalf();
 	void loadIntroRoom();
 	void mouseCall();
 	void train();
@@ -715,6 +715,7 @@ public:
 	void loadCart();
 	void bartender();
 	void showDiary();
+	void sLabDoorF();
 	void outOfOpen();
 	void dirCom();
 	void dumpKeypad();
@@ -722,7 +723,6 @@ public:
 	void endGameSeq();
 	void setBotLeft();
 	void findFirstPath();
-	void loadOld();
 	void useSLab();
 	void useAltar();
 	void manAsleep2();
@@ -746,7 +746,6 @@ public:
 	void disableSoundInt();
 	void priestText();
 	void openPoolBoss();
-	void fadeScreenDownHalf();
 	void usePlate();
 	void lookInInterface();
 	void manAsleep();
@@ -921,7 +920,6 @@ public:
 	void showOpBox();
 	void clearBeforeLoad();
 	void bibleQuote();
-	void doLoad();
 	void showExit();
 	void useTrainer();
 	void dumpCurrent();
diff --git a/engines/dreamweb/saveload.cpp b/engines/dreamweb/saveload.cpp
index 6af4071..ccf70aa 100644
--- a/engines/dreamweb/saveload.cpp
+++ b/engines/dreamweb/saveload.cpp
@@ -416,5 +416,32 @@ unsigned int DreamGenContext::scanForNames() {
 	return count;
 }
 
+void DreamGenContext::loadOld() {
+	STACK_CHECK;
+	_cmp(data.byte(kCommandtype), 252);
+	if (flags.z())
+		goto alreadyloadold;
+	data.byte(kCommandtype) = 252;
+	al = 48;
+	commandOnly();
+alreadyloadold:
+	ax = data.word(kMousebutton);
+	_and(ax, 1);
+	if (flags.z())
+		return /* (noloadold) */;
+	ax = 0x0ffff;
+	doLoad();
+	_cmp(data.byte(kGetback), 4);
+	if (flags.z())
+		return /* (noloadold) */;
+	_cmp(data.byte(kQuitrequested),  0);
+	if (!flags.z())
+		return /* (noloadold) */;
+	showDecisions();
+	workToScreenM();
+	data.byte(kGetback) = 0;
+}
+
+
 } /*namespace dreamgen */
 
diff --git a/engines/dreamweb/stubs.h b/engines/dreamweb/stubs.h
index 36b499a..3bbe0dd 100644
--- a/engines/dreamweb/stubs.h
+++ b/engines/dreamweb/stubs.h
@@ -406,4 +406,6 @@
 	void enterCode(uint8 digit0, uint8 digit1, uint8 digit2, uint8 digit3);
 	void enterCode();
 	unsigned int scanForNames();
+	void doLoad();
+	void loadOld();
 


Commit: a38018c5f49ff4a7c9014749c65ebaca4973a0f1
    https://github.com/scummvm/scummvm/commit/a38018c5f49ff4a7c9014749c65ebaca4973a0f1
Author: Willem Jan Palenstijn (wjp at usecode.org)
Date: 2011-12-03T07:57:42-08:00

Commit Message:
DREAMWEB: Convert 'loadOld' and clean up 'doLoad' calls

Changed paths:
    devtools/tasmrecover/dreamweb/saveload.asm
    engines/dreamweb/saveload.cpp
    engines/dreamweb/stubs.cpp
    engines/dreamweb/stubs.h



diff --git a/devtools/tasmrecover/dreamweb/saveload.asm b/devtools/tasmrecover/dreamweb/saveload.asm
index 6c98774..f3c92d3 100644
--- a/devtools/tasmrecover/dreamweb/saveload.asm
+++ b/devtools/tasmrecover/dreamweb/saveload.asm
@@ -1502,7 +1502,6 @@ Loadold	proc	near
 alreadyloadold:	mov	ax,mousebutton
 	and	ax,1
 	jz	noloadold
-	mov ax,0ffffh
 	call	doload
 	cmp	getback,4
 	jz	noloadold
diff --git a/engines/dreamweb/saveload.cpp b/engines/dreamweb/saveload.cpp
index ccf70aa..6f1691f 100644
--- a/engines/dreamweb/saveload.cpp
+++ b/engines/dreamweb/saveload.cpp
@@ -35,18 +35,13 @@ void DreamGenContext::loadGame() {
 	}
 	if (data.word(kMousebutton) == data.word(kOldbutton))
 		return; // "noload"
-	if (data.word(kMousebutton) == 1) {
-		ax = 0xFFFF;
-		doLoad();
-	}
+	if (data.word(kMousebutton) == 1)
+		doLoad(-1);
 }
 
-// input: ax = savegameId
 // if -1, open menu to ask for slot to load
 // if >= 0, directly load from that slot
-void DreamGenContext::doLoad() {
-	int savegameId = (int16)ax;
-
+void DreamGenContext::doLoad(int savegameId) {
 	data.byte(kLoadingorsave) = 1;
 
 	if (ConfMan.getBool("dreamweb_originalsaveload") && savegameId == -1) {
@@ -417,26 +412,19 @@ unsigned int DreamGenContext::scanForNames() {
 }
 
 void DreamGenContext::loadOld() {
-	STACK_CHECK;
-	_cmp(data.byte(kCommandtype), 252);
-	if (flags.z())
-		goto alreadyloadold;
-	data.byte(kCommandtype) = 252;
-	al = 48;
-	commandOnly();
-alreadyloadold:
-	ax = data.word(kMousebutton);
-	_and(ax, 1);
-	if (flags.z())
-		return /* (noloadold) */;
-	ax = 0x0ffff;
-	doLoad();
-	_cmp(data.byte(kGetback), 4);
-	if (flags.z())
-		return /* (noloadold) */;
-	_cmp(data.byte(kQuitrequested),  0);
-	if (!flags.z())
-		return /* (noloadold) */;
+	if (data.byte(kCommandtype) != 252) {
+		data.byte(kCommandtype) = 252;
+		commandOnly(48);
+	}
+
+	if (!(data.word(kMousebutton) & 1))
+		return;
+
+	doLoad(-1);
+
+	if (data.byte(kGetback) == 4 || quitRequested())
+		return;
+
 	showDecisions();
 	workToScreenM();
 	data.byte(kGetback) = 0;
diff --git a/engines/dreamweb/stubs.cpp b/engines/dreamweb/stubs.cpp
index 2db75ee..846937b 100644
--- a/engines/dreamweb/stubs.cpp
+++ b/engines/dreamweb/stubs.cpp
@@ -348,8 +348,7 @@ void DreamGenContext::dreamweb() {
 			loadPalFromIFF();
 			clearPalette();
 
-			ax = savegameId;
-			doLoad();
+			doLoad(savegameId);
 			workToScreen();
 			fadeScreenUp();
 			startNewGame = false;
diff --git a/engines/dreamweb/stubs.h b/engines/dreamweb/stubs.h
index 3bbe0dd..de9335f 100644
--- a/engines/dreamweb/stubs.h
+++ b/engines/dreamweb/stubs.h
@@ -406,6 +406,6 @@
 	void enterCode(uint8 digit0, uint8 digit1, uint8 digit2, uint8 digit3);
 	void enterCode();
 	unsigned int scanForNames();
-	void doLoad();
+	void doLoad(int slot);
 	void loadOld();
 






More information about the Scummvm-git-logs mailing list