bsnes/higan/target-bsnes/program/paths.cpp

87 lines
2.0 KiB
C++
Raw Normal View History

auto Program::path(string type, string location, string extension) -> string {
auto pathname = Location::path(location);
auto filename = Location::file(location);
auto prefix = Location::prefix(filename);
auto suffix = extension;
if(type == "Games") {
if(auto path = settings["Path/Games"].text()) {
pathname = path;
}
}
if(type == "Patches") {
if(auto path = settings["Path/Patches"].text()) {
pathname = path;
}
}
if(type == "Saves") {
if(auto path = settings["Path/Saves"].text()) {
pathname = path;
}
}
if(type == "Cheats") {
if(auto path = settings["Path/Cheats"].text()) {
pathname = path;
}
}
if(type == "States") {
if(auto path = settings["Path/States"].text()) {
pathname = path;
}
}
if(type == "Screenshots") {
if(auto path = settings["Path/Screenshots"].text()) {
pathname = path;
}
}
return {pathname, prefix, suffix};
}
auto Program::gamePath() -> string {
if(!emulator->loaded()) return "";
if(gameBoy.location) return gameBoy.location;
Update to v106r42 release. byuu says: Changelog: - emulator: added `Thread::setHandle(cothread_t)` - icarus: added special heuristics support for the Tengai Maykou Zero fan translation - board identifier is: EXSPC7110-RAM-EPSONRTC (match on SPC7110 + ROM size=56mbit) - board ROM contents are: 8mbit program, 40mbit data, 8mbit expansion (sizes are fixed) - bsnes: show messages on game load, unload, and reset - bsnes: added support for BS Memory and Sufami Turbo games - bsnes: added support for region selection (Auto [default], NTSC, PAL) - bsnes: correct presentation window size from 223/239 to 224/240 - bsnes: add SA-1 internal RAM on cartridges with BS Memory slot - bsnes: fixed recovery state to store inside .bsz archive - bsnes: added support for custom manifests in both game pak and game ROM modes - bsnes: added icarus game database support (manifest → database → heuristics) - bsnes: added flexible SuperFX overclocking - bsnes: added IPS and BPS soft-patching support to all ROM types (sfc,smc,gb,gbc,bs,st) - can load patches inside of ZIP archives (matches first “.ips” or “.bps” file) - bsnes/ppu: cache interlace/overscan/vdisp (277 → 291fps with fast PPU) - hiro/Windows: faster painting of Label widget on expose - hiro/Windows: immediately apply LineEdit::setBackgroundColor changes - hiro/Qt: inherit Window backgroundColor when one is not assigned to Label Errata: - sfc/ppu-fast: remove `renderMode7Hires()` function (the body isn't in the codebase) - bsnes: advanced note label should probably use a lighter text color and/or smaller font size instead of italics I didn't test the soft-patching at all, as I don't have any patches on my dev box. If anyone wants to test, that'd be great. The Tengai Makyou Zero fan translation would be a great test case.
2018-06-26 03:17:26 +00:00
return superFamicom.location;
}
auto Program::cheatPath() -> string {
if(!emulator->loaded()) return "";
auto location = gamePath();
if(location.endsWith("/")) {
return {location, "cheats.bml"};
} else {
return path("Cheats", location, ".cht");
}
}
auto Program::statePath() -> string {
if(!emulator->loaded()) return "";
auto location = gamePath();
if(location.endsWith("/")) {
return {location, "bsnes/states/"};
} else {
return path("States", location, ".bsz");
}
}
auto Program::screenshotPath() -> string {
if(!emulator->loaded()) return "";
auto location = gamePath();
if(location.endsWith("/")) {
directory::create({location, "bsnes/screenshots/"});
location = {location, "bsnes/screenshots/capture"};
} else {
location = path("Screenshots", location);
}
for(uint n : range(1, 999)) {
string filename = {location, ".", pad(n, 3, '0'), ".bmp"};
if(!file::exists(filename)) return filename;
}
return {location, ".000.bmp"};
}