mirror of
https://github.com/libretro/scummvm.git
synced 2025-02-12 22:51:11 +00:00
SAGA2: Organize hresmgr functions
This commit is contained in:
parent
3cb251421b
commit
58ad6895eb
@ -276,17 +276,20 @@ bool hResContext::get(hResID id, void *buffer, uint32 size) {
|
||||
|
||||
uint32 hResContext::getSize(hResID id, const char desc[]) {
|
||||
hResEntry *entry;
|
||||
|
||||
if ((entry = findEntry(id)) == nullptr) {
|
||||
warning("Resource %d, %s not found", id, desc);
|
||||
return 0;
|
||||
}
|
||||
debugC(3, kDebugResources, "Size for %x (%s): %d", id, desc, entry->size);
|
||||
|
||||
return entry->size;
|
||||
}
|
||||
|
||||
byte *hResContext::loadResource(hResID id, Common::String filename, const char desc[]) {
|
||||
byte *hResContext::loadResource(hResID id, const char desc[], Common::String filename) {
|
||||
hResEntry *entry;
|
||||
|
||||
debugC(3, kDebugResources, "Loading resource %x (%s)", id, desc);
|
||||
if ((entry = findEntry(id)) == nullptr) {
|
||||
warning("Resource %d, %s not found", id, desc);
|
||||
return nullptr;
|
||||
@ -294,6 +297,9 @@ byte *hResContext::loadResource(hResID id, Common::String filename, const char d
|
||||
|
||||
byte *res = (byte*)malloc(entry->size);
|
||||
|
||||
if (filename.equalsIgnoreCase(""))
|
||||
filename = _filename;
|
||||
|
||||
if (!_file.isOpen())
|
||||
_file.open(filename);
|
||||
|
||||
@ -359,6 +365,9 @@ byte *hResContext::loadIndexResource(int16 index, const char desc[], Common::Str
|
||||
|
||||
byte *res = (byte*)malloc(entry->size);
|
||||
|
||||
if (filename.equalsIgnoreCase(""))
|
||||
filename = _filename;
|
||||
|
||||
if (!_file.isOpen())
|
||||
_file.open(filename);
|
||||
|
||||
|
@ -162,8 +162,8 @@ public:
|
||||
bool get(hResID id, void *buffer, uint32 size);
|
||||
uint32 getSize(hResID id, const char desc[]);
|
||||
RHANDLE load(hResID id, const char [], bool async = false, bool cacheable = true);
|
||||
byte *loadResource(hResID id, Common::String filename, const char desc[]);
|
||||
byte *loadIndexResource(int16 index, const char desc[], Common::String filename);
|
||||
byte *loadResource(hResID id, const char desc[], Common::String filename);
|
||||
byte *loadIndexResource(int16 index, const char desc[], Common::String filename = "");
|
||||
RHANDLE loadIndex(int16 index, const char[], bool cacheable = true);
|
||||
void release(RHANDLE p);
|
||||
Common::File *resFileHandle(void) {
|
||||
|
@ -690,8 +690,7 @@ bool Thread::interpret(void) {
|
||||
|
||||
//RUnlockHandle((RHANDLE)codeSeg);
|
||||
codeSeg = scriptRes->loadIndexResource(programCounter.segment,
|
||||
"saga code segment",
|
||||
scriptRes->_filename);
|
||||
"saga code segment");
|
||||
pc = (codeSeg) + programCounter.offset;
|
||||
|
||||
n = *stack++; // get argument count from call
|
||||
@ -735,7 +734,7 @@ bool Thread::interpret(void) {
|
||||
IMMED_WORD(w); // pick up segment number
|
||||
programCounter.segment = w; // set current segment
|
||||
//RUnlockHandle((RHANDLE)codeSeg);
|
||||
codeSeg = scriptRes->loadIndexResource(w, "saga code segment", scriptRes->_filename);
|
||||
codeSeg = scriptRes->loadIndexResource(w, "saga code segment");
|
||||
IMMED_WORD(w); // pick up segment offset
|
||||
programCounter.offset = w; // store into pc
|
||||
|
||||
@ -821,7 +820,7 @@ bool Thread::interpret(void) {
|
||||
w = vtableEntry[ 0 ];
|
||||
programCounter.segment = w;
|
||||
//RUnlockHandle((RHANDLE)codeSeg);
|
||||
codeSeg = scriptRes->loadIndexResource(w, "saga code segment", scriptRes->_filename);
|
||||
codeSeg = scriptRes->loadIndexResource(w, "saga code segment");
|
||||
|
||||
// store pc-offset into pc
|
||||
programCounter.offset = vtableEntry[ 1 ];
|
||||
@ -1489,7 +1488,7 @@ Thread *getThreadAddress(ThreadID id) {
|
||||
// Thread constructor
|
||||
|
||||
Thread::Thread(uint16 segNum, uint16 segOff, scriptCallFrame &args) {
|
||||
codeSeg = scriptRes->loadIndexResource(segNum, "saga code segment", scriptRes->_filename);
|
||||
codeSeg = scriptRes->loadIndexResource(segNum, "saga code segment");
|
||||
|
||||
// initialize the thread
|
||||
stackSize = kStackSize;
|
||||
@ -1534,8 +1533,7 @@ Thread::Thread(void **buf) {
|
||||
bufferPtr = (int16 *)bufferPtr + 1;
|
||||
|
||||
codeSeg = scriptRes->loadIndexResource(programCounter.segment,
|
||||
"saga code segment",
|
||||
scriptRes->_filename);
|
||||
"saga code segment");
|
||||
|
||||
stackBase = (UBytePtr)malloc(stackSize);
|
||||
stackPtr = stackBase + stackSize - stackOffset;
|
||||
@ -1750,21 +1748,24 @@ void initScripts(void) {
|
||||
error("Unable to open script resource file!\n");
|
||||
|
||||
// Load the data segment
|
||||
dataSegment = scriptRes->loadResource(dataSegID, scriptResFile->_filename, "saga data segment");
|
||||
dataSegment = scriptRes->loadResource(dataSegID, "saga data segment", scriptResFile->_filename);
|
||||
|
||||
if (dataSegment == NULL)
|
||||
error("Unable to load the SAGA data segment");
|
||||
|
||||
dataSegSize = scriptRes->getSize(dataSegID, "saga data segment");
|
||||
debugC(2, kDebugScripts, "dataSegment loaded at 0x%08x: size: %d", dataSegment, dataSegSize);
|
||||
|
||||
// Common::hexdump(dataSegment, dataSegSize);
|
||||
|
||||
exportSegment = scriptRes->loadResource(exportSegID, scriptResFile->_filename, "saga export segment");
|
||||
exportSegment = scriptRes->loadResource(exportSegID, "saga export segment", scriptResFile->_filename);
|
||||
assert(exportSegment != NULL);
|
||||
|
||||
// Common::hexdump(exportSegment, scriptRes->getSize(exportSegID, "saga export segment"));
|
||||
|
||||
exportCount = (scriptRes->getSize(exportSegID, "saga export segment") / sizeof(uint32)) + 1;
|
||||
debugC(2, kDebugScripts, "exportSegment loaded at 0x%08x: size: %d, exportCount: %d",
|
||||
exportSegment, scriptRes->getSize(exportSegID, "saga export segment"), exportCount);
|
||||
}
|
||||
|
||||
void cleanupScripts(void) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user