diff --git a/src/nostalgia/core/media.cpp b/src/nostalgia/core/media.cpp index 8a29ce58..49634ca5 100644 --- a/src/nostalgia/core/media.cpp +++ b/src/nostalgia/core/media.cpp @@ -10,15 +10,15 @@ namespace nostalgia::core { -ox::Result loadRomFs(const char *path) noexcept { +ox::Result> loadRomFs(const char *path) noexcept { const auto lastDot = ox_lastIndexOf(path, '.'); const auto fsExt = lastDot != -1 ? path + lastDot : ""; if (ox_strcmp(fsExt, ".oxfs") == 0) { oxRequire(rom, core::loadRom(path)); - return new ox::FileSystem32(rom, 32 * ox::units::MB, unloadRom); + return {ox::make_unique(rom, 32 * ox::units::MB, unloadRom)}; } else { #ifdef OX_HAS_PASSTHROUGHFS - return new ox::PassThroughFS(path); + return {ox::make_unique(path)}; #else return OxError(2); #endif diff --git a/src/nostalgia/core/media.hpp b/src/nostalgia/core/media.hpp index 26ae9beb..904e245b 100644 --- a/src/nostalgia/core/media.hpp +++ b/src/nostalgia/core/media.hpp @@ -12,7 +12,7 @@ namespace nostalgia::core { -ox::Result loadRomFs(const char *path) noexcept; +ox::Result> loadRomFs(const char *path) noexcept; ox::Result loadRom(const char *path = "") noexcept; diff --git a/src/nostalgia/player/main.cpp b/src/nostalgia/player/main.cpp index b2a9d141..4004ef5c 100644 --- a/src/nostalgia/player/main.cpp +++ b/src/nostalgia/player/main.cpp @@ -11,19 +11,19 @@ #include "app.hpp" -int main(int argc, const char **argv) { - if (argc > 1) { - ox::trace::init(); - auto path = argv[1]; - auto [fs, err] = nostalgia::core::loadRomFs(path); - if (err) { - oxAssert(err, "Something went wrong..."); - return static_cast(err); - } - err = run(fs); - oxAssert(err, "Something went wrong..."); - delete fs; - return static_cast(err); +ox::Error run(int argc, const char **argv) { + if (argc < 2) { + oxErrf("Please provide path to project directory or OxFS file."); + return OxError(1); } - return 1; + const auto path = argv[1]; + oxRequire(fs, nostalgia::core::loadRomFs(path)); + return run(fs.get()); +} + +int main(int argc, const char **argv) { + ox::trace::init(); + const auto err = run(argc, argv); + oxAssert(err, "Something went wrong..."); + return static_cast(err); }