GBA Context: Make slightly better sense of ROM loading

This commit is contained in:
Jeffrey Pfau 2015-12-29 07:25:28 -05:00
parent 04d542e241
commit 8e5df9473d
1 changed files with 7 additions and 8 deletions

View File

@ -74,7 +74,13 @@ void GBAContextDeinit(struct GBAContext* context) {
}
bool GBAContextLoadROM(struct GBAContext* context, const char* path, bool autoloadSave) {
struct VDir* dir = VDirOpenArchive(path);
context->rom = VFileOpen(path, O_RDONLY);
struct VDir* dir = 0;
if (!GBAIsROM(context->rom)) {
context->rom->close(context->rom);
context->rom = 0;
dir = VDirOpenArchive(path);
}
if (dir) {
struct VDirEntry* de;
while ((de = dir->listNext(dir))) {
@ -94,19 +100,12 @@ bool GBAContextLoadROM(struct GBAContext* context, const char* path, bool autolo
context->romDir = dir;
}
} else {
context->rom = VFileOpen(path, O_RDONLY);
}
if (!context->rom) {
return false;
}
if (!GBAIsROM(context->rom)) {
context->rom->close(context->rom);
context->rom = 0;
return false;
}
context->fname = path;
if (autoloadSave) {
context->save = VDirOptionalOpenFile(0, path, 0, ".sav", O_RDWR | O_CREAT);