mirror of
https://github.com/wheremyfoodat/Panda3DS.git
synced 2025-04-16 02:49:48 +12:00
Detect ROM format
This commit is contained in:
parent
bef634114d
commit
7ba5c5a1bc
3 changed files with 19 additions and 5 deletions
|
@ -50,7 +50,8 @@ public:
|
||||||
void run();
|
void run();
|
||||||
void runFrame();
|
void runFrame();
|
||||||
|
|
||||||
bool loadELF(std::filesystem::path& path);
|
bool loadROM(const std::filesystem::path& path);
|
||||||
|
bool loadELF(const std::filesystem::path& path);
|
||||||
bool loadELF(std::ifstream& file);
|
bool loadELF(std::ifstream& file);
|
||||||
void initGraphicsContext() { gpu.initGraphicsContext(); }
|
void initGraphicsContext() { gpu.initGraphicsContext(); }
|
||||||
};
|
};
|
|
@ -48,7 +48,20 @@ void Emulator::runFrame() {
|
||||||
cpu.runFrame();
|
cpu.runFrame();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Emulator::loadELF(std::filesystem::path& path) {
|
bool Emulator::loadROM(const std::filesystem::path& path) {
|
||||||
|
auto extension = path.extension();
|
||||||
|
|
||||||
|
if (extension == ".elf" || extension == ".axf")
|
||||||
|
return loadELF(path);
|
||||||
|
else if (extension == ".3ds")
|
||||||
|
Helpers::panic("3DS file");
|
||||||
|
else {
|
||||||
|
printf("Unknown file type\n");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Emulator::loadELF(const std::filesystem::path& path) {
|
||||||
loadedROM.open(path, std::ios_base::binary); // Open ROM in binary mode
|
loadedROM.open(path, std::ios_base::binary); // Open ROM in binary mode
|
||||||
romType = ROMType::ELF;
|
romType = ROMType::ELF;
|
||||||
|
|
||||||
|
|
|
@ -9,10 +9,10 @@ int main (int argc, char *argv[]) {
|
||||||
|
|
||||||
emu.initGraphicsContext();
|
emu.initGraphicsContext();
|
||||||
|
|
||||||
auto elfPath = std::filesystem::current_path() / (argc > 1 ? argv[1] : "sm64.elf");
|
auto elfPath = std::filesystem::current_path() / (argc > 1 ? argv[1] : "Metroid2.3ds");
|
||||||
if (!emu.loadELF(elfPath)) {
|
if (!emu.loadROM(elfPath)) {
|
||||||
// For some reason just .c_str() doesn't show the proper path
|
// For some reason just .c_str() doesn't show the proper path
|
||||||
Helpers::panic("Failed to load ELF file: %s", elfPath.string().c_str());
|
Helpers::panic("Failed to load ROM file: %s", elfPath.string().c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
emu.run();
|
emu.run();
|
||||||
|
|
Loading…
Add table
Reference in a new issue