From 47ba3f828276d7cc3547d12f669aa24df31d7f05 Mon Sep 17 00:00:00 2001 From: Sour Date: Mon, 6 Aug 2018 19:48:57 -0400 Subject: [PATCH] Libretro: Enable softpatching support --- Core/VirtualFile.cpp | 8 ++++++++ Core/VirtualFile.h | 1 + Libretro/libretro.cpp | 6 ++++-- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/Core/VirtualFile.cpp b/Core/VirtualFile.cpp index 09ef4818..c8594df5 100644 --- a/Core/VirtualFile.cpp +++ b/Core/VirtualFile.cpp @@ -36,6 +36,14 @@ VirtualFile::VirtualFile(const string & file) } } +VirtualFile::VirtualFile(const void *buffer, size_t bufferSize, string fileName) +{ + _path = fileName; + + _data.resize(bufferSize); + memcpy(_data.data(), buffer, bufferSize); +} + VirtualFile::VirtualFile(std::istream & input, string filePath) { _path = filePath; diff --git a/Core/VirtualFile.h b/Core/VirtualFile.h index bf0bf542..590bf1c6 100644 --- a/Core/VirtualFile.h +++ b/Core/VirtualFile.h @@ -20,6 +20,7 @@ public: VirtualFile(); VirtualFile(const string &archivePath, const string innerFile); VirtualFile(const string &file); + VirtualFile(const void *buffer, size_t bufferSize, string fileName = "noname"); VirtualFile(std::istream &input, string filePath); operator std::string() const; diff --git a/Libretro/libretro.cpp b/Libretro/libretro.cpp index 2db4f2f4..94cd6a82 100644 --- a/Libretro/libretro.cpp +++ b/Libretro/libretro.cpp @@ -977,7 +977,9 @@ extern "C" { _console->GetSettings()->SetControllerType(1, ControllerType::StandardController); _console->GetSettings()->SetControllerType(2, ControllerType::None); _console->GetSettings()->SetControllerType(3, ControllerType::None); - bool result = _console->Initialize(game->path); + + VirtualFile romData(game->data, game->size, game->path); + bool result = _console->Initialize(romData); if(result) { //Set default dipswitches for some VS System games @@ -1026,7 +1028,7 @@ extern "C" { info->library_name = "Mesen"; info->library_version = _mesenVersion.c_str(); - info->need_fullpath = true; + info->need_fullpath = false; info->valid_extensions = "nes|fds|unf|unif"; info->block_extract = false; }