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

wjp wjp at usecode.org
Sun Dec 11 16:01:04 CET 2011


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

Summary:
cd44631ffd DREAMWEB: Add FIXME about errors on quit
b8d18d8ba8 DREAMWEB: Fix namesToOld/oldToNames
11adaf6d69 DREAMWEB: Convert 'showNames'
05a2713874 DREAMWEB: Convert checkInput
fcf2aa8e2f DREAMWEB: Move Savenames out of opaque data blob


Commit: cd44631ffd7a84837dc4b5c30cb84cf76a44b483
    https://github.com/scummvm/scummvm/commit/cd44631ffd7a84837dc4b5c30cb84cf76a44b483
Author: Willem Jan Palenstijn (wjp at usecode.org)
Date: 2011-12-11T02:48:32-08:00

Commit Message:
DREAMWEB: Add FIXME about errors on quit

Changed paths:
    engines/dreamweb/stubs.cpp



diff --git a/engines/dreamweb/stubs.cpp b/engines/dreamweb/stubs.cpp
index 388118a..a339856 100644
--- a/engines/dreamweb/stubs.cpp
+++ b/engines/dreamweb/stubs.cpp
@@ -640,6 +640,8 @@ void DreamGenContext::dreamweb() {
 
 	}
 done: // The engine will need some cleaner finalization, let's put it here for now
+	// FIXME: This triggers "Deallocating non existent segment" errors when
+	// quitting from a menu.
 	getRidOfAll();
 	engine->freeIcons1();
 	engine->freeIcons2();


Commit: b8d18d8ba88f0635f766902daf1105cd3f5788a1
    https://github.com/scummvm/scummvm/commit/b8d18d8ba88f0635f766902daf1105cd3f5788a1
Author: Willem Jan Palenstijn (wjp at usecode.org)
Date: 2011-12-11T06:10:11-08:00

Commit Message:
DREAMWEB: Fix namesToOld/oldToNames

They only saved the first four savegame descriptions. (Bug from the
original game.)

Changed paths:
    engines/dreamweb/saveload.cpp



diff --git a/engines/dreamweb/saveload.cpp b/engines/dreamweb/saveload.cpp
index 40b6451..916c2b5 100644
--- a/engines/dreamweb/saveload.cpp
+++ b/engines/dreamweb/saveload.cpp
@@ -218,11 +218,11 @@ void DreamGenContext::saveGame() {
 }
 
 void DreamGenContext::namesToOld() {
-	memcpy(getSegment(data.word(kBuffers)).ptr(kZoomspace, 0), data.ptr(kSavenames, 0), 17*4);
+	memcpy(getSegment(data.word(kBuffers)).ptr(kZoomspace, 0), data.ptr(kSavenames, 0), 17*7);
 }
 
 void DreamGenContext::oldToNames() {
-	memcpy(data.ptr(kSavenames, 0), getSegment(data.word(kBuffers)).ptr(kZoomspace, 0), 17*4);
+	memcpy(data.ptr(kSavenames, 0), getSegment(data.word(kBuffers)).ptr(kZoomspace, 0), 17*7);
 }
 
 void DreamGenContext::saveLoad() {


Commit: 11adaf6d695c1c6b436ce2cd18d4c59f729c542d
    https://github.com/scummvm/scummvm/commit/11adaf6d695c1c6b436ce2cd18d4c59f729c542d
Author: Willem Jan Palenstijn (wjp at usecode.org)
Date: 2011-12-11T06:33:34-08:00

Commit Message:
DREAMWEB: Convert 'showNames'

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



diff --git a/devtools/tasmrecover/tasm-recover b/devtools/tasmrecover/tasm-recover
index e1d94d6..9c3d150 100755
--- a/devtools/tasmrecover/tasm-recover
+++ b/devtools/tasmrecover/tasm-recover
@@ -643,6 +643,7 @@ generator = cpp(context, "DreamGen", blacklist = [
 	'showmainops',
 	'showman',
 	'showmenu',
+	'shownames',
 	'showopbox',
 	'showoutermenu',
 	'showouterpad',
diff --git a/engines/dreamweb/dreambase.h b/engines/dreamweb/dreambase.h
index bc272c1..d0bcc91 100644
--- a/engines/dreamweb/dreambase.h
+++ b/engines/dreamweb/dreambase.h
@@ -90,6 +90,9 @@ public:
 	void printCurs();
 	void delCurs();
 
+	// from saveload.cpp
+	void showNames();
+
 	// from sound.cpp
 	void volumeAdjust();
 	void cancelCh0();
diff --git a/engines/dreamweb/dreamgen.cpp b/engines/dreamweb/dreamgen.cpp
index c135861..fac388b 100644
--- a/engines/dreamweb/dreamgen.cpp
+++ b/engines/dreamweb/dreamgen.cpp
@@ -5656,76 +5656,6 @@ nomatchslot:
 		goto slotloop;
 }
 
-void DreamGenContext::showNames() {
-	STACK_CHECK;
-	dx = data;
-	es = dx;
-	si = 1521+1;
-	di = (60)+21;
-	bx = (52)+10;
-	cl = 0;
-shownameloop:
-	push(cx);
-	push(di);
-	push(es);
-	push(bx);
-	push(si);
-	al = 4;
-	_cmp(cl, data.byte(kCurrentslot));
-	if (!flags.z())
-		goto nomatchslot2;
-	_cmp(data.byte(kLoadingorsave), 2);
-	if (!flags.z())
-		goto loadmode;
-	dx = si;
-	cx = 15;
-	_add(si, 15);
-zerostill:
-	_dec(si);
-	_dec(cl);
-	_cmp(es.byte(si), 1);
-	if (!flags.z())
-		goto foundcharacter;
-	goto zerostill;
-foundcharacter:
-	data.byte(kCursorpos) = cl;
-	es.byte(si) = '/';
-	es.byte(si+1) = 0;
-	push(si);
-	si = dx;
-	dl = 200;
-	ah = 0;
-	printDirect();
-	si = pop();
-	es.byte(si) = 0;
-	es.byte(si+1) = 1;
-	goto afterprintname;
-loadmode:
-	al = 0;
-	dl = 200;
-	ah = 0;
-	data.word(kCharshift) = 91;
-	printDirect();
-	data.word(kCharshift) = 0;
-	goto afterprintname;
-nomatchslot2:
-	dl = 200;
-	ah = 0;
-	printDirect();
-afterprintname:
-	si = pop();
-	bx = pop();
-	es = pop();
-	di = pop();
-	cx = pop();
-	_add(si, 17);
-	_add(bx, 10);
-	_inc(cl);
-	_cmp(cl, 7);
-	if (!flags.z())
-		goto shownameloop;
-}
-
 void DreamGenContext::createName() {
 	STACK_CHECK;
 	push(ax);
diff --git a/engines/dreamweb/dreamgen.h b/engines/dreamweb/dreamgen.h
index 9d83762..889a60b 100644
--- a/engines/dreamweb/dreamgen.h
+++ b/engines/dreamweb/dreamgen.h
@@ -663,7 +663,6 @@ public:
 	void createName();
 	void getPersonText();
 	void parser();
-	void showNames();
 	void emergencyPurge();
 	void quitKey();
 	void processTrigger();
diff --git a/engines/dreamweb/saveload.cpp b/engines/dreamweb/saveload.cpp
index 916c2b5..9060a3f 100644
--- a/engines/dreamweb/saveload.cpp
+++ b/engines/dreamweb/saveload.cpp
@@ -457,4 +457,28 @@ void DreamGenContext::loadSaveBox() {
 	loadIntoTemp("DREAMWEB.G08");
 }
 
+// show savegame names (original interface), and set kCursorpos
+void DreamBase::showNames() {
+	for (int slot = 0; slot < 7; ++slot) {
+		// The first character of the savegame name is unused
+		Common::String name((char *)data.ptr(kSavenames + 17*slot + 1, 16));
+
+		if (slot != data.byte(kCurrentslot)) {
+			printDirect((const uint8 *)name.c_str(), kOpsx + 21, kOpsy + 10*slot + 10, 200, false);
+			continue;
+		}
+		if (data.byte(kLoadingorsave) != 2) {
+			data.word(kCharshift) = 91;
+			printDirect((const uint8 *)name.c_str(), kOpsx + 21, kOpsy + 10*slot + 10, 200, false);
+			data.word(kCharshift) = 0;
+			continue;
+		}
+
+		int pos = name.size();
+		data.byte(kCursorpos) = pos;
+		name += '/'; // cursor character
+		printDirect((const uint8 *)name.c_str(), kOpsx + 21, kOpsy + 10*slot + 10, 200, false);
+	}
+}
+
 } // End of namespace DreamGen


Commit: 05a27138744e3d5fe80602c2c97b6bea547863d9
    https://github.com/scummvm/scummvm/commit/05a27138744e3d5fe80602c2c97b6bea547863d9
Author: Willem Jan Palenstijn (wjp at usecode.org)
Date: 2011-12-11T06:45:53-08:00

Commit Message:
DREAMWEB: Convert checkInput

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 9c3d150..41dca53 100755
--- a/devtools/tasmrecover/tasm-recover
+++ b/devtools/tasmrecover/tasm-recover
@@ -227,6 +227,7 @@ generator = cpp(context, "DreamGen", blacklist = [
 	'checkifpathison',
 	'checkifperson',
 	'checkifset',
+	'checkinput',
 	'checkone',
 	'checksoundint',
 	'checkspeed',
@@ -363,6 +364,7 @@ generator = cpp(context, "DreamGen", blacklist = [
 	'getflagunderp',
 	'getlocation',
 	'getmapad',
+	'getnamepos',
 	'getnextword',
 	'getnumber',
 	'getpersframe',
diff --git a/engines/dreamweb/dreamgen.cpp b/engines/dreamweb/dreamgen.cpp
index fac388b..8975c26 100644
--- a/engines/dreamweb/dreamgen.cpp
+++ b/engines/dreamweb/dreamgen.cpp
@@ -5509,68 +5509,6 @@ void DreamGenContext::findText1() {
 	si = ax;
 }
 
-void DreamGenContext::checkInput() {
-	STACK_CHECK;
-	_cmp(data.byte(kLoadingorsave), 3);
-	if (flags.z())
-		return /* (nokeypress) */;
-	readKey();
-	al = data.byte(kCurrentkey);
-	_cmp(al, 0);
-	if (flags.z())
-		return /* (nokeypress) */;
-	_cmp(al, 13);
-	if (!flags.z())
-		goto notret;
-	data.byte(kLoadingorsave) = 3;
-	goto afterkey;
-notret:
-	_cmp(al, 8);
-	if (!flags.z())
-		goto nodel2;
-	_cmp(data.byte(kCursorpos), 0);
-	if (flags.z())
-		return /* (nokeypress) */;
-	getNamePos();
-	_dec(data.byte(kCursorpos));
-	es.byte(bx) = 0;
-	es.byte(bx+1) = 1;
-	goto afterkey;
-nodel2:
-	_cmp(data.byte(kCursorpos), 14);
-	if (flags.z())
-		return /* (nokeypress) */;
-	getNamePos();
-	_inc(data.byte(kCursorpos));
-	al = data.byte(kCurrentkey);
-	es.byte(bx+1) = al;
-	es.byte(bx+2) = 0;
-	es.byte(bx+3) = 1;
-	goto afterkey;
-	return;
-afterkey:
-	showOpBox();
-	showNames();
-	showSlots();
-	showSaveOps();
-	workToScreenM();
-}
-
-void DreamGenContext::getNamePos() {
-	STACK_CHECK;
-	al = data.byte(kCurrentslot);
-	ah = 0;
-	cx = 17;
-	_mul(cx);
-	dx = data;
-	es = dx;
-	bx = 1521;
-	_add(bx, ax);
-	al = data.byte(kCursorpos);
-	ah = 0;
-	_add(bx, ax);
-}
-
 void DreamGenContext::selectSlot() {
 	STACK_CHECK;
 	_cmp(data.byte(kCommandtype), 244);
diff --git a/engines/dreamweb/dreamgen.h b/engines/dreamweb/dreamgen.h
index 889a60b..1df283c 100644
--- a/engines/dreamweb/dreamgen.h
+++ b/engines/dreamweb/dreamgen.h
@@ -526,7 +526,6 @@ public:
 #include "stubs.h" // Allow hand-reversed functions to have a signature different than void f()
 
 	void useWire();
-	void getNamePos();
 	void identifyOb();
 	void useLighter();
 	void runEndSeq();
@@ -535,7 +534,6 @@ public:
 	void getObTextStart();
 	void dumpDiaryKeys();
 	void entryTexts();
-	void checkInput();
 	void putUnderCentre();
 	void checkObjectSize();
 	void findText1();
diff --git a/engines/dreamweb/saveload.cpp b/engines/dreamweb/saveload.cpp
index 9060a3f..2a8b8be 100644
--- a/engines/dreamweb/saveload.cpp
+++ b/engines/dreamweb/saveload.cpp
@@ -481,4 +481,41 @@ void DreamBase::showNames() {
 	}
 }
 
+void DreamGenContext::checkInput() {
+	if (data.byte(kLoadingorsave) == 3)
+		return;
+
+	readKey();
+
+	char *name = (char *)data.ptr(kSavenames + 17*data.byte(kCurrentslot) + 1, 16);
+
+	if (data.byte(kCurrentkey) == 0) {
+		return;
+	} else if (data.byte(kCurrentkey) == 13) {
+		data.byte(kLoadingorsave) = 3;
+	} else if (data.byte(kCurrentkey) == 8) {
+		if (data.byte(kCursorpos) == 0)
+			return;
+
+		--data.byte(kCursorpos);
+		name[data.byte(kCursorpos)] = 0;
+		name[data.byte(kCursorpos)+1] = 1;
+	} else {
+		if (data.byte(kCursorpos) == 14)
+			return;
+
+		name[data.byte(kCursorpos)] = data.byte(kCurrentkey);
+		name[data.byte(kCursorpos)+1] = 0;
+		name[data.byte(kCursorpos)+2] = 1;
+		++data.byte(kCursorpos);
+	}
+
+	showOpBox();
+	showNames();
+	showSlots();
+	showSaveOps();
+	workToScreenM();
+}
+
+
 } // End of namespace DreamGen
diff --git a/engines/dreamweb/stubs.h b/engines/dreamweb/stubs.h
index 5d99e23..c63b244 100644
--- a/engines/dreamweb/stubs.h
+++ b/engines/dreamweb/stubs.h
@@ -559,5 +559,6 @@
 	void quitSymbol();
 	void diaryKeyP();
 	void diaryKeyN();
+	void checkInput();
 
 #endif


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

Commit Message:
DREAMWEB: Move Savenames out of opaque data blob

Changed paths:
    devtools/tasmrecover/tasm-recover
    engines/dreamweb/dreambase.h
    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 41dca53..074d34e 100755
--- a/devtools/tasmrecover/tasm-recover
+++ b/devtools/tasmrecover/tasm-recover
@@ -46,6 +46,7 @@ p = parser(skip_binary_data = [
 	'spritename1',
 	'icongraphics0',
 	'icongraphics1',
+	'savenames',
 	# keypad.asm
 	'keypadlist',
 	'symbollist',
diff --git a/engines/dreamweb/dreambase.h b/engines/dreamweb/dreambase.h
index d0bcc91..38665a0 100644
--- a/engines/dreamweb/dreambase.h
+++ b/engines/dreamweb/dreambase.h
@@ -91,6 +91,8 @@ public:
 	void delCurs();
 
 	// from saveload.cpp
+	char _saveNames[17*7];
+	char _saveNamesOld[17*7];
 	void showNames();
 
 	// from sound.cpp
diff --git a/engines/dreamweb/dreamgen.cpp b/engines/dreamweb/dreamgen.cpp
index 8975c26..b4e73a2 100644
--- a/engines/dreamweb/dreamgen.cpp
+++ b/engines/dreamweb/dreamgen.cpp
@@ -6287,21 +6287,7 @@ void DreamGenContext::__start() {
 		//0x05d0: .... .... .... ....
 		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 
 		//0x05e0: .... .... .... ....
-		0xff, 0x02, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 
-		//0x05f0: .... .... .... ....
-		0x01, 0x01, 0x02, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 
-		//0x0600: .... .... .... ....
-		0x01, 0x01, 0x01, 0x02, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 
-		//0x0610: .... .... .... ....
-		0x01, 0x01, 0x01, 0x01, 0x02, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 
-		//0x0620: .... .... .... ....
-		0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 
-		//0x0630: .... .... .... ....
-		0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 
-		//0x0640: .... .... .... ....
-		0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 
-		//0x0650: .... .... .... ....
-		0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, };
+		0xff, 0x00, 0x00, 0x00, };
 	ds.assign(src, src + sizeof(src));
 	dreamweb(); 
 }
diff --git a/engines/dreamweb/dreamgen.h b/engines/dreamweb/dreamgen.h
index 1df283c..761dde8 100644
--- a/engines/dreamweb/dreamgen.h
+++ b/engines/dreamweb/dreamgen.h
@@ -420,10 +420,9 @@ static const uint16 kRoompics = 1369;
 static const uint16 kOplist = 1384;
 static const uint16 kInputline = 1387;
 static const uint16 kPresslist = 1515;
-static const uint16 kSavenames = 1521;
-static const uint16 kQuitrequested = 1640;
-static const uint16 kSubtitles = 1641;
-static const uint16 kForeignrelease = 1642;
+static const uint16 kQuitrequested = 1521;
+static const uint16 kSubtitles = 1522;
+static const uint16 kForeignrelease = 1523;
 static const uint16 kBlocktextdat = (0);
 static const uint16 kPersonframes = (0);
 static const uint16 kDebuglevel1 = (0);
diff --git a/engines/dreamweb/saveload.cpp b/engines/dreamweb/saveload.cpp
index 2a8b8be..f0fd477 100644
--- a/engines/dreamweb/saveload.cpp
+++ b/engines/dreamweb/saveload.cpp
@@ -190,8 +190,7 @@ void DreamGenContext::saveGame() {
 			return;
 		}
 
-		// TODO: Check if this 2 is a constant
-		uint8 descbuf[17] = { 2, 0 };
+		char descbuf[17] = { 2, 0 };
 		strncpy((char*)descbuf+1, game_description.c_str(), 16);
 		unsigned int desclen = game_description.size();
 		if (desclen > 15)
@@ -201,7 +200,7 @@ void DreamGenContext::saveGame() {
 		while (desclen < 17)
 			descbuf[++desclen] = 1;
 		if (savegameId < 7)
-			memcpy(data.ptr(kSavenames + 17*savegameId, 17), descbuf, 17);
+			memcpy(&_saveNames[17*savegameId], descbuf, 17);
 
 		savePosition(savegameId, descbuf);
 
@@ -218,11 +217,11 @@ void DreamGenContext::saveGame() {
 }
 
 void DreamGenContext::namesToOld() {
-	memcpy(getSegment(data.word(kBuffers)).ptr(kZoomspace, 0), data.ptr(kSavenames, 0), 17*7);
+	memcpy(_saveNamesOld, _saveNames, 17*7);
 }
 
 void DreamGenContext::oldToNames() {
-	memcpy(data.ptr(kSavenames, 0), getSegment(data.word(kBuffers)).ptr(kZoomspace, 0), 17*7);
+	memcpy(_saveNames, _saveNamesOld, 17*7);
 }
 
 void DreamGenContext::saveLoad() {
@@ -262,7 +261,7 @@ void DreamGenContext::actualSave() {
 
 	unsigned int slot = data.byte(kCurrentslot);
 
-	const uint8 *desc = data.ptr(kSavenames + 17*slot, 16);
+	const char *desc = &_saveNames[17*slot];
 	if (desc[1] == 0) // The actual description string starts at desc[1]
 		return;
 
@@ -289,7 +288,7 @@ void DreamGenContext::actualLoad() {
 
 	unsigned int slot = data.byte(kCurrentslot);
 
-	const uint8 *desc = data.ptr(kSavenames + 17*slot, 16);
+	const char *desc = &_saveNames[17*slot];
 	if (desc[1] == 0) // The actual description string starts at desc[1]
 		return;
 
@@ -297,7 +296,7 @@ void DreamGenContext::actualLoad() {
 	data.byte(kGetback) = 1;
 }
 
-void DreamGenContext::savePosition(unsigned int slot, const uint8 *descbuf) {
+void DreamGenContext::savePosition(unsigned int slot, const char *descbuf) {
 
 	const Room &currentRoom = g_roomData[data.byte(kLocation)];
 
@@ -378,7 +377,7 @@ void DreamGenContext::loadPosition(unsigned int slot) {
 		::error("Error loading save: description buffer isn't 17 bytes");
 
 	if (slot < 7) {
-		inSaveFile->read(data.ptr(kSavenames + 17*slot, len[0]), len[0]);
+		inSaveFile->read(&_saveNames[17*slot], len[0]);
 	} else {
 		// The savenames buffer only has room for 7 descriptions
 		uint8 namebuf[17];
@@ -399,7 +398,7 @@ void DreamGenContext::loadPosition(unsigned int slot) {
 	delete inSaveFile;
 }
 
-// Count number of save files, and load their descriptions into kSavenames
+// Count number of save files, and load their descriptions into _saveNames
 unsigned int DreamGenContext::scanForNames() {
 	unsigned int count = 0;
 
@@ -407,6 +406,11 @@ unsigned int DreamGenContext::scanForNames() {
 
 	// TODO: Change this to use SaveFileManager::listSavefiles()
 	for (unsigned int slot = 0; slot < 7; ++slot) {
+		_saveNames[17*slot+0] = 2;
+		_saveNames[17*slot+1] = 0;
+		for (int i = 2; i < 17; ++i)
+			_saveNames[17*slot+i] = 1;
+
 		// Try opening savegame with the given slot id
 		Common::String filename = engine->getSavegameFilename(slot);
 		Common::InSaveFile *inSaveFile = engine->getSaveFileManager()->openForLoading(filename);
@@ -424,7 +428,7 @@ unsigned int DreamGenContext::scanForNames() {
 		}
 
 		// NB: Only possible if slot < 7
-		inSaveFile->read(data.ptr(kSavenames + 17*slot, 17), 17);
+		inSaveFile->read(&_saveNames[17*slot], 17);
 
 		delete inSaveFile;
 	}
@@ -461,7 +465,7 @@ void DreamGenContext::loadSaveBox() {
 void DreamBase::showNames() {
 	for (int slot = 0; slot < 7; ++slot) {
 		// The first character of the savegame name is unused
-		Common::String name((char *)data.ptr(kSavenames + 17*slot + 1, 16));
+		Common::String name(&_saveNames[17*slot + 1]);
 
 		if (slot != data.byte(kCurrentslot)) {
 			printDirect((const uint8 *)name.c_str(), kOpsx + 21, kOpsy + 10*slot + 10, 200, false);
@@ -487,7 +491,8 @@ void DreamGenContext::checkInput() {
 
 	readKey();
 
-	char *name = (char *)data.ptr(kSavenames + 17*data.byte(kCurrentslot) + 1, 16);
+	// The first character of the savegame name is unused
+	char *name = &_saveNames[17*data.byte(kCurrentslot) + 1];
 
 	if (data.byte(kCurrentkey) == 0) {
 		return;
diff --git a/engines/dreamweb/stubs.h b/engines/dreamweb/stubs.h
index c63b244..5225878 100644
--- a/engines/dreamweb/stubs.h
+++ b/engines/dreamweb/stubs.h
@@ -305,7 +305,7 @@
 	void actualSave();
 	void actualLoad();
 	void loadPosition(unsigned int slot);
-	void savePosition(unsigned int slot, const uint8 *descbuf);
+	void savePosition(unsigned int slot, const char *descbuf);
 	uint16 allocateAndLoad(unsigned int size);
 	void clearAndLoad(uint8 *buf, uint8 c, unsigned int size, unsigned int maxSize);
 	void clearAndLoad(uint16 seg, uint8 c, unsigned int size, unsigned int maxSize);






More information about the Scummvm-git-logs mailing list