mirror of
https://github.com/bsnes-emu/bsnes.git
synced 2025-02-24 07:02:27 +01:00
byuu says: Changelog: - moved Thread, Scheduler, Cheat functionality into emulator/ for all cores - start of actual Mega Drive emulation (two 68K instructions) I'm going to be rather terse on MD emulation, as it's too early for any meaningful dialogue here.
104 lines
2.7 KiB
C++
104 lines
2.7 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;
|
|
|
|
location = {Path::config(), "icarus/", name};
|
|
if(inode::exists(location)) return location;
|
|
|
|
directory::create({Path::local(), "icarus/"});
|
|
return {Path::local(), "icarus/", name};
|
|
}
|
|
|
|
#include "settings.cpp"
|
|
Settings settings;
|
|
|
|
#include "heuristics/famicom.cpp"
|
|
#include "heuristics/super-famicom.cpp"
|
|
#include "heuristics/mega-drive.cpp"
|
|
#include "heuristics/game-boy.cpp"
|
|
#include "heuristics/game-boy-advance.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/mega-drive.cpp"
|
|
#include "core/game-boy.cpp"
|
|
#include "core/game-boy-color.cpp"
|
|
#include "core/game-boy-advance.cpp"
|
|
#include "core/wonderswan.cpp"
|
|
#include "core/wonderswan-color.cpp"
|
|
#include "core/bs-memory.cpp"
|
|
#include "core/sufami-turbo.cpp"
|
|
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 {
|
|
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 Image")
|
|
.setPath(settings["icarus/Path"].text())
|
|
.setFilters("ROM Files|*.fc:*.nes:*.sfc:*.smc:*.md:*.gb:*.gbc:*.gba:*.ws:*.wsc:*.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_MACOSX)
|
|
Application::Cocoa::onAbout([&] {
|
|
MessageDialog().setTitle("About icarus").setText({
|
|
"icarus\n\n"
|
|
"Author: byuu\n"
|
|
"License: GPLv3\n"
|
|
"Website: http://byuu.org/\n"
|
|
}).information();
|
|
});
|
|
Application::Cocoa::onPreferences([&] {
|
|
scanDialog->settingsButton.doActivate();
|
|
});
|
|
Application::Cocoa::onQuit([&] {
|
|
Application::quit();
|
|
});
|
|
#endif
|
|
scanDialog->show();
|
|
Application::run();
|
|
}
|