[Scummvm-git-logs] scummvm master -> 97ff73172d790060c7277a9db26a2c3978c93f1c

bluegr bluegr at gmail.com
Tue Oct 26 23:14:09 UTC 2021


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

Summary:
7407089e05 GROOVIE: Remove unused parameter
97ff73172d GROOVIE: Add file dumping functionality via console and dump_resources


Commit: 7407089e051cbd77bf9bdaf1077fc5f7310cfc8b
    https://github.com/scummvm/scummvm/commit/7407089e051cbd77bf9bdaf1077fc5f7310cfc8b
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2021-10-27T02:13:50+03:00

Commit Message:
GROOVIE: Remove unused parameter

Changed paths:
    engines/groovie/resource.cpp
    engines/groovie/resource.h
    engines/groovie/script.cpp


diff --git a/engines/groovie/resource.cpp b/engines/groovie/resource.cpp
index 3023df1c67..0ecf1a36df 100644
--- a/engines/groovie/resource.cpp
+++ b/engines/groovie/resource.cpp
@@ -92,7 +92,7 @@ ResMan_t7g::ResMan_t7g(Common::MacResManager *macResFork) : _macResFork(macResFo
 	}
 }
 
-uint32 ResMan_t7g::getRef(Common::String name, Common::String scriptname) {
+uint32 ResMan_t7g::getRef(Common::String name) {
 	// Get the name of the RL file
 	Common::String rlFileName(t7g_gjds[_lastGjd]);
 	rlFileName += ".rl";
@@ -219,12 +219,12 @@ ResMan_v2::ResMan_v2() {
 	indexfile.close();
 }
 
-uint32 ResMan_v2::getRef(Common::String name, Common::String scriptname) {
+uint32 ResMan_v2::getRef(Common::String name) {
 	// Open the RL file
 	Common::File rlFile;
 	if (!rlFile.open("dir.rl")) {
 		error("Groovie::Resource: Couldn't open dir.rl");
-		return false;
+		return (uint32)-1;
 	}
 
 	// resources are always in lowercase
diff --git a/engines/groovie/resource.h b/engines/groovie/resource.h
index 8d76ee4e2d..d551e6c80f 100644
--- a/engines/groovie/resource.h
+++ b/engines/groovie/resource.h
@@ -43,7 +43,7 @@ public:
 
 	Common::SeekableReadStream *open(uint32 fileRef);
 
-	virtual uint32 getRef(Common::String name, Common::String scriptname = "") = 0;
+	virtual uint32 getRef(Common::String name) = 0;
 	virtual bool getResInfo(uint32 fileRef, ResInfo &resInfo) = 0;
 
 protected:
@@ -57,7 +57,7 @@ public:
 	ResMan_t7g(Common::MacResManager *macResFork = 0);
 	~ResMan_t7g() override {}
 
-	uint32 getRef(Common::String name, Common::String scriptname) override;
+	uint32 getRef(Common::String name) override;
 	bool getResInfo(uint32 fileRef, ResInfo &resInfo) override;
 
 private:
@@ -69,7 +69,7 @@ public:
 	ResMan_v2();
 	~ResMan_v2() override {}
 
-	uint32 getRef(Common::String name, Common::String scriptname) override;
+	uint32 getRef(Common::String name) override;
 	bool getResInfo(uint32 fileRef, ResInfo &resInfo) override;
 };
 
diff --git a/engines/groovie/script.cpp b/engines/groovie/script.cpp
index 3a0f606ffd..a669b1c74a 100644
--- a/engines/groovie/script.cpp
+++ b/engines/groovie/script.cpp
@@ -429,11 +429,8 @@ uint32 Script::getVideoRefString(Common::String &resName) {
 
 	debugCN(0, kDebugScript, "%s", resName.c_str());
 
-	// Extract the script name.
-	Common::String scriptname(_scriptFile.c_str(), _scriptFile.size() - 4);
-
 	// Get the fileref of the resource
-	return _vm->_resMan->getRef(resName, scriptname);
+	return _vm->_resMan->getRef(resName);
 }
 
 bool Script::hotspot(Common::Rect rect, uint16 address, uint8 cursor) {


Commit: 97ff73172d790060c7277a9db26a2c3978c93f1c
    https://github.com/scummvm/scummvm/commit/97ff73172d790060c7277a9db26a2c3978c93f1c
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2021-10-27T02:13:51+03:00

Commit Message:
GROOVIE: Add file dumping functionality via console and dump_resources

It's now possible to dump resource files using the "dumpfile" command
in the debug console and the --dump-scripts command line option

Changed paths:
    engines/groovie/debug.cpp
    engines/groovie/debug.h
    engines/groovie/resource.cpp
    engines/groovie/resource.h


diff --git a/engines/groovie/debug.cpp b/engines/groovie/debug.cpp
index 63aa6ff39d..3ef4d811dd 100644
--- a/engines/groovie/debug.cpp
+++ b/engines/groovie/debug.cpp
@@ -23,6 +23,7 @@
 #include "groovie/debug.h"
 #include "groovie/graphics.h"
 #include "groovie/groovie.h"
+#include "groovie/resource.h"
 #include "groovie/script.h"
 
 #include "common/debug-channels.h"
@@ -46,6 +47,7 @@ Debugger::Debugger(GroovieEngine *vm) :
 	registerCmd("save", WRAP_METHOD(Debugger, cmd_savegame));
 	registerCmd("playref", WRAP_METHOD(Debugger, cmd_playref));
 	registerCmd("dumppal", WRAP_METHOD(Debugger, cmd_dumppal));
+	registerCmd("dumpfile", WRAP_METHOD(Debugger, cmd_dumpfile));
 }
 
 Debugger::~Debugger() {
@@ -144,4 +146,15 @@ bool Debugger::cmd_dumppal(int argc, const char **argv) {
 	return true;
 }
 
+bool Debugger::cmd_dumpfile(int argc, const char **argv) {
+	if (argc == 2) {
+		Common::String fileName = argv[1];
+		debugPrintf("Dumping %s...\n", argv[1]);
+		_vm->_resMan->dumpResource(fileName);
+	} else {
+		debugPrintf("Syntax: %s <filename>\n", argv[0]);
+	}
+	return true;
+}
+
 } // End of Groovie namespace
diff --git a/engines/groovie/debug.h b/engines/groovie/debug.h
index 2d6b3ce14f..c48561bc17 100644
--- a/engines/groovie/debug.h
+++ b/engines/groovie/debug.h
@@ -51,6 +51,7 @@ private:
 	bool cmd_savegame(int argc, const char **argv);
 	bool cmd_playref(int argc, const char **argv);
 	bool cmd_dumppal(int argc, const char **argv);
+	bool cmd_dumpfile(int argc, const char **argv);
 };
 
 } // End of Groovie namespace
diff --git a/engines/groovie/resource.cpp b/engines/groovie/resource.cpp
index 0ecf1a36df..e03a45ff2e 100644
--- a/engines/groovie/resource.cpp
+++ b/engines/groovie/resource.cpp
@@ -26,6 +26,7 @@
 #include "common/macresman.h"
 #include "common/substream.h"
 #include "common/textconsole.h"
+#include "common/config-manager.h"
 
 #include "groovie/resource.h"
 #include "groovie/groovie.h"
@@ -69,9 +70,38 @@ Common::SeekableReadStream *ResMan::open(uint32 fileRef) {
 	}
 
 	// Returning the resource substream
-	return new Common::SeekableSubReadStream(gjdFile, resInfo.offset, resInfo.offset + resInfo.size, DisposeAfterUse::YES);
+	Common::SeekableSubReadStream *file = new Common::SeekableSubReadStream(gjdFile, resInfo.offset, resInfo.offset + resInfo.size, DisposeAfterUse::YES);
+	if (ConfMan.getBool("dump_resources")) {
+		dumpResource(file, resInfo.filename);
+	}
+	return file;
+}
+
+void ResMan::dumpResource(Common::String &fileName) {
+	uint32 fileRef = getRef(fileName);
+	dumpResource(fileRef, fileName);
+}
+
+void ResMan::dumpResource(uint32 fileRef, Common::String &fileName) {
+	Common::SeekableReadStream *inFile = open(fileRef);
+	dumpResource(inFile, fileName);
 }
 
+void ResMan::dumpResource(Common::SeekableReadStream *inFile, Common::String &fileName) {
+	Common::DumpFile outFile;
+	outFile.open(fileName);
+
+	int64 totalSize = inFile->size();
+	byte *data = new byte[totalSize];
+	inFile->read(data, totalSize);
+
+	outFile.write(data, totalSize);
+	outFile.flush();
+
+	delete[] data;
+	delete inFile;
+	outFile.close();
+}
 
 // ResMan_t7g
 
diff --git a/engines/groovie/resource.h b/engines/groovie/resource.h
index d551e6c80f..7068739366 100644
--- a/engines/groovie/resource.h
+++ b/engines/groovie/resource.h
@@ -42,6 +42,9 @@ public:
 	virtual ~ResMan() {}
 
 	Common::SeekableReadStream *open(uint32 fileRef);
+	void dumpResource(Common::String &fileName);
+	void dumpResource(uint32 fileRef, Common::String &fileName);
+	void dumpResource(Common::SeekableReadStream *inFile, Common::String &fileName);
 
 	virtual uint32 getRef(Common::String name) = 0;
 	virtual bool getResInfo(uint32 fileRef, ResInfo &resInfo) = 0;




More information about the Scummvm-git-logs mailing list