Add NES emulation support with bundled FCEUmm core

Implement NesCore with FCEUmm/Nestopia/Mesen libretro core support.
Generalize native frontend to handle cores that require ROM data in
memory (need_fullpath=false) and move PS1-specific config out of C++
into Ps1Core. Bundle both core .so files as APK assets with automatic
extraction. Fix cover art fetching for GoodNES-named ROMs by expanding
region codes (U)->(USA, Europe) to match LibRetro thumbnail naming.
This commit is contained in:
2026-04-09 21:34:49 -04:00
parent 547d1501c0
commit d502304d95
12 changed files with 353 additions and 23 deletions

View File

@@ -9,6 +9,7 @@
#include <string>
#include <thread>
#include <unordered_map>
#include <vector>
enum class DisplayMode : int {
STRETCH = 0,
@@ -43,6 +44,8 @@ public:
void setSystemDir(const char* dir);
void setSaveDir(const char* dir);
void setControllerPortDevice(unsigned port, unsigned device);
void setCoreOption(const char* key, const char* value);
bool isRunning() const { return running_.load(); }
@@ -114,6 +117,10 @@ private:
std::string system_dir_;
std::string save_dir_;
// ROM data (kept alive for cores with need_fullpath=false)
std::vector<uint8_t> rom_data_;
bool need_fullpath_ = true;
// Frame timing
double target_fps_ = 60.0;
int frame_skip_ = 0;