[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