diff --git a/src/libretro/StellaLIBRETRO.cxx b/src/libretro/StellaLIBRETRO.cxx index f475fbc0b..e3cb5073a 100644 --- a/src/libretro/StellaLIBRETRO.cxx +++ b/src/libretro/StellaLIBRETRO.cxx @@ -61,8 +61,6 @@ bool StellaLIBRETRO::create(bool logging) { system_ready = false; - FilesystemNode rom("rom"); - // build play system destroy(); @@ -115,6 +113,8 @@ bool StellaLIBRETRO::create(bool logging) settings.setValue(AudioSettings::SETTING_VOLUME, 100); settings.setValue(AudioSettings::SETTING_STEREO, audio_mode); + FilesystemNode rom(rom_path); + if(myOSystem->createConsole(rom) != EmptyString) return false; @@ -334,8 +334,10 @@ bool StellaLIBRETRO::getVideoResize() } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void StellaLIBRETRO::setROM(const void* data, size_t size) +void StellaLIBRETRO::setROM(const char* path, const void* data, size_t size) { + rom_path = path; + memcpy(rom_image.get(), data, size); rom_size = static_cast(size); diff --git a/src/libretro/StellaLIBRETRO.hxx b/src/libretro/StellaLIBRETRO.hxx index 79ea4da0b..f48a13708 100644 --- a/src/libretro/StellaLIBRETRO.hxx +++ b/src/libretro/StellaLIBRETRO.hxx @@ -96,7 +96,7 @@ class StellaLIBRETRO Int16* getAudioBuffer() { return audio_buffer.get(); } public: - void setROM(const void* data, size_t size); + void setROM(const char* path, const void* data, size_t size); void setConsoleFormat(uInt32 mode); @@ -139,6 +139,7 @@ class StellaLIBRETRO unique_ptr rom_image; uInt32 rom_size; + string rom_path; ConsoleTiming console_timing; string console_format; diff --git a/src/libretro/libretro.cxx b/src/libretro/libretro.cxx index 6d1dc0f89..6babbf07f 100644 --- a/src/libretro/libretro.cxx +++ b/src/libretro/libretro.cxx @@ -574,7 +574,7 @@ bool retro_load_game(const struct retro_game_info *info) } - stella.setROM(info->data, info->size); + stella.setROM(info->path, info->data, info->size); return reset_system(); }