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

tramboi bertrand_augereau at yahoo.fr
Sun Dec 4 16:30:57 CET 2011


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

Summary:
a201e1af33 DREAMWEB: 'standardLoadCPP' to load game data in malloc'ed buffers


Commit: a201e1af336ae75f37fcb5216d2166d084bb0d0a
    https://github.com/scummvm/scummvm/commit/a201e1af336ae75f37fcb5216d2166d084bb0d0a
Author: Bertrand Augereau (bertrand_augereau at yahoo.fr)
Date: 2011-12-04T09:29:34-08:00

Commit Message:
DREAMWEB: 'standardLoadCPP' to load game data in malloc'ed buffers

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



diff --git a/engines/dreamweb/stubs.cpp b/engines/dreamweb/stubs.cpp
index f67547c..efaa62c 100644
--- a/engines/dreamweb/stubs.cpp
+++ b/engines/dreamweb/stubs.cpp
@@ -760,6 +760,17 @@ uint16 DreamGenContext::standardLoad(const char *fileName, uint16 *outSizeInByte
 	return result;
 }
 
+void *DreamGenContext::standardLoadCPP(const char *fileName, uint16 *outSizeInBytes) {
+	uint16 sizeInBytes;
+	uint16 seg = standardLoad(fileName, &sizeInBytes);
+	void *buffer = malloc(sizeInBytes);
+	memcpy(buffer, getSegment(seg).ptr(0, 0), sizeInBytes);
+	deallocateMem(seg);
+	if (outSizeInBytes)
+		*outSizeInBytes = sizeInBytes;
+	return buffer;
+}
+
 void DreamGenContext::standardLoad() {
 	ax = standardLoad((const char *)cs.ptr(dx, 0), NULL);
 }
@@ -2468,18 +2479,9 @@ void DreamGenContext::loadRoomsSample() {
 void DreamGenContext::readSetData() {
 	data.word(kCharset1) = standardLoad("DREAMWEB.C00");
 
-	uint16 icons1SizeInBytes;
-	uint16 tempIcons1 = standardLoad("DREAMWEB.G00", &icons1SizeInBytes);
-	void *icons1Buffer = malloc(icons1SizeInBytes);
-	memcpy(icons1Buffer, getSegment(tempIcons1).ptr(0, 0), icons1SizeInBytes);
-	deallocateMem(tempIcons1);
+	void *icons1Buffer = standardLoadCPP("DREAMWEB.G00");
 	engine->setIcons1(icons1Buffer);
-
-	uint16 icons2SizeInBytes;
-	uint16 tempIcons2 = standardLoad("DREAMWEB.G01", &icons2SizeInBytes);
-	void *icons2Buffer = malloc(icons2SizeInBytes);
-	memcpy(icons2Buffer, getSegment(tempIcons2).ptr(0, 0), icons2SizeInBytes);
-	deallocateMem(tempIcons2);
+	void *icons2Buffer = standardLoadCPP("DREAMWEB.G01");
 	engine->setIcons2(icons2Buffer);
 
 	data.word(kMainsprites) = standardLoad("DREAMWEB.S00");
diff --git a/engines/dreamweb/stubs.h b/engines/dreamweb/stubs.h
index 83e375d..dc77781 100644
--- a/engines/dreamweb/stubs.h
+++ b/engines/dreamweb/stubs.h
@@ -33,6 +33,7 @@
 	void clearWork();
 	void standardLoad();
 	uint16 standardLoad(const char *fileName, uint16 *outSizeInBytes = NULL); // Returns a segment handle which needs to be freed with deallocatemem for symmetry
+	void *standardLoadCPP(const char *fileName, uint16 *outSizeInBytes = NULL); // And this one should be 'free'd
 	void loadIntoTemp();
 	void loadIntoTemp2();
 	void loadIntoTemp3();






More information about the Scummvm-git-logs mailing list