mirror of
https://github.com/bsnes-emu/bsnes.git
synced 2025-02-23 14:42:33 +01:00
byuu says: Changelog: - Super Famicom: fixed loading of BS Memory and Sufami Turbo cartridges - Super Famicom: renamed NSS to DIP; as that's really all it is, it's not true NSS emulation - Super Famicom: slot loading now happens inside of board parsing instead of generically in loadCartridge() - Super Famicom: BS-X cartridges with flash memory now serialize their data and write it out to disk¹ - icarus: fixed Famicom game importing (hopefully) and set file import title to “Load ROM File” ¹: there's no emulation of write commands yet, so the data is never going to change anyway. This is just in preparation for more advanced emulation of BS Memory cartridges.
135 lines
3.3 KiB
C++
135 lines
3.3 KiB
C++
#include <nall/nall.hpp>
|
|
using namespace nall;
|
|
|
|
#include <hiro/hiro.hpp>
|
|
using namespace hiro;
|
|
|
|
auto locate(string name) -> string {
|
|
string location = {Path::program(), name};
|
|
if(inode::exists(location)) return location;
|
|
|
|
directory::create({Path::local(), "icarus/"});
|
|
return {Path::local(), "icarus/", name};
|
|
}
|
|
|
|
#include "settings.cpp"
|
|
Settings settings;
|
|
|
|
#include "heuristics/heuristics.hpp"
|
|
#include "heuristics/heuristics.cpp"
|
|
#include "heuristics/famicom.cpp"
|
|
#include "heuristics/super-famicom.cpp"
|
|
#include "heuristics/master-system.cpp"
|
|
#include "heuristics/mega-drive.cpp"
|
|
#include "heuristics/pc-engine.cpp"
|
|
#include "heuristics/supergrafx.cpp"
|
|
#include "heuristics/game-boy.cpp"
|
|
#include "heuristics/game-boy-advance.cpp"
|
|
#include "heuristics/game-gear.cpp"
|
|
#include "heuristics/wonderswan.cpp"
|
|
#include "heuristics/bs-memory.cpp"
|
|
#include "heuristics/sufami-turbo.cpp"
|
|
|
|
#include "core/core.hpp"
|
|
#include "core/core.cpp"
|
|
#include "core/famicom.cpp"
|
|
#include "core/super-famicom.cpp"
|
|
#include "core/master-system.cpp"
|
|
#include "core/mega-drive.cpp"
|
|
#include "core/pc-engine.cpp"
|
|
#include "core/supergrafx.cpp"
|
|
#include "core/game-boy.cpp"
|
|
#include "core/game-boy-color.cpp"
|
|
#include "core/game-boy-advance.cpp"
|
|
#include "core/game-gear.cpp"
|
|
#include "core/wonderswan.cpp"
|
|
#include "core/wonderswan-color.cpp"
|
|
#include "core/pocket-challenge-v2.cpp"
|
|
#include "core/bs-memory.cpp"
|
|
#include "core/sufami-turbo.cpp"
|
|
|
|
#if !defined(ICARUS_LIBRARY)
|
|
|
|
Icarus icarus;
|
|
#include "ui/ui.hpp"
|
|
#include "ui/scan-dialog.cpp"
|
|
#include "ui/settings-dialog.cpp"
|
|
#include "ui/import-dialog.cpp"
|
|
#include "ui/error-dialog.cpp"
|
|
|
|
#include <nall/main.hpp>
|
|
auto nall::main(string_vector args) -> void {
|
|
Application::setName("icarus");
|
|
|
|
if(args.size() == 2 && args[1] == "--name") {
|
|
return print("icarus");
|
|
}
|
|
|
|
if(args.size() == 3 && args[1] == "--manifest" && directory::exists(args[2])) {
|
|
return print(icarus.manifest(args[2]));
|
|
}
|
|
|
|
if(args.size() == 3 && args[1] == "--import" && file::exists(args[2])) {
|
|
if(string target = icarus.import(args[2])) {
|
|
return print(target, "\n");
|
|
}
|
|
return;
|
|
}
|
|
|
|
if(args.size() == 2 && args[1] == "--import") {
|
|
if(string source = BrowserDialog()
|
|
.setTitle("Load ROM File")
|
|
.setPath(settings["icarus/Path"].text())
|
|
.setFilters("ROM Files|"
|
|
"*.fc:*.nes:"
|
|
"*.sfc:*.smc:"
|
|
"*.ms:*.sms:"
|
|
"*.md:*.smd:*.gen:"
|
|
"*.pce:"
|
|
"*.sg:*.sgx:"
|
|
"*.gb:"
|
|
"*.gbc:"
|
|
"*.gba:"
|
|
"*.gg:"
|
|
"*.ws:"
|
|
"*.wsc:"
|
|
"*.pc2:"
|
|
"*.bs:"
|
|
"*.st:"
|
|
"*.zip"
|
|
).openFile()) {
|
|
if(string target = icarus.import(source)) {
|
|
settings["icarus/Path"].setValue(Location::path(source));
|
|
return print(target, "\n");
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
new ScanDialog;
|
|
new SettingsDialog;
|
|
new ImportDialog;
|
|
new ErrorDialog;
|
|
#if defined(PLATFORM_MACOS)
|
|
Application::Cocoa::onAbout([&] {
|
|
MessageDialog().setTitle("About icarus").setText({
|
|
"icarus\n\n"
|
|
"Author: byuu\n"
|
|
"License: GPLv3\n"
|
|
"Website: https://byuu.org/\n"
|
|
}).information();
|
|
});
|
|
Application::Cocoa::onPreferences([&] {
|
|
scanDialog->settingsButton.doActivate();
|
|
});
|
|
Application::Cocoa::onQuit([&] {
|
|
Application::quit();
|
|
});
|
|
#endif
|
|
scanDialog->show();
|
|
Application::run();
|
|
settings.save();
|
|
}
|
|
|
|
#endif
|