mirror of
https://github.com/bsnes-emu/bsnes.git
synced 2025-02-24 23:22:25 +01:00
[No prior releases were posted to the WIP thread. -Ed.] byuu says: Super Famicom mapping system has been reworked as discussed with the mask= changes. offset becomes base, mode is gone. Also added support for comma-separated fields in the address fields, to reduce the number of map lines needed. <?xml version="1.0" encoding="UTF-8"?> <cartridge region="NTSC"> <superfx revision="2"> <rom name="program.rom" size="0x200000"/> <ram name="save.rwm" size="0x8000"/> <map id="io" address="00-3f,80-bf:3000-32ff"/> <map id="rom" address="00-3f:8000-ffff" mask="0x8000"/> <map id="rom" address="40-5f:0000-ffff"/> <map id="ram" address="00-3f,80-bf:6000-7fff" size="0x2000"/> <map id="ram" address="70-71:0000-ffff"/> </superfx> </cartridge> Or in BML: cartridge region=NTSC superfx revision=2 rom name=program.rom size=0x200000 ram name=save.rwm size=0x8000 map id=io address=00-3f,80-bf:3000-32ff map id=rom address=00-3f:8000-ffff mask=0x8000 map id=rom address=40-5f:0000-ffff map id=ram address=00-3f,80-bf:6000-7fff size=0x2000 map id=ram address=70-71:0000-ffff As a result of the changes, old mappings will no longer work. The above XML example will run Super Mario World 2: Yoshi's Island. Otherwise, you'll have to write your own. All that's left now is to work some sort of database mapping system in, so I can start dumping carts en masse. The NES changes that FitzRoy asked for are mostly in as well. Also, part of the reason I haven't released a WIP ... but fuck it, I'm not going to wait forever to post a new WIP. I've added a skeleton driver to emulate Campus Challenge '92 and Powerfest '94. There's no actual emulation, except for the stuff I can glean from looking at the pictures of the board. It has a DSP-1 (so SR/DR registers), four ROMs that map in and out, RAM, etc. I've also added preliminary mapping to upload high scores to a website, but obviously I need the ROMs first.
76 lines
1.6 KiB
C++
Executable File
76 lines
1.6 KiB
C++
Executable File
#ifdef NALL_STRING_INTERNAL_HPP
|
|
|
|
namespace nall {
|
|
|
|
string activepath() {
|
|
string result;
|
|
#ifdef _WIN32
|
|
wchar_t path[PATH_MAX] = L"";
|
|
_wgetcwd(path, PATH_MAX);
|
|
result = (const char*)utf8_t(path);
|
|
result.transform("\\", "/");
|
|
#else
|
|
char path[PATH_MAX] = "";
|
|
getcwd(path, PATH_MAX);
|
|
result = path;
|
|
#endif
|
|
if(result.empty()) result = ".";
|
|
if(result.endswith("/") == false) result.append("/");
|
|
return result;
|
|
}
|
|
|
|
string realpath(const string &name) {
|
|
string result;
|
|
#ifdef _WIN32
|
|
wchar_t path[PATH_MAX] = L"";
|
|
if(_wfullpath(path, utf16_t(name), PATH_MAX)) result = (const char*)utf8_t(path);
|
|
result.transform("\\", "/");
|
|
#else
|
|
char path[PATH_MAX] = "";
|
|
if(::realpath(name, path)) result = path;
|
|
#endif
|
|
if(result.empty()) result = {activepath(), name};
|
|
return result;
|
|
}
|
|
|
|
string userpath() {
|
|
string result;
|
|
#ifdef _WIN32
|
|
wchar_t path[PATH_MAX] = L"";
|
|
SHGetFolderPathW(0, CSIDL_APPDATA | CSIDL_FLAG_CREATE, 0, 0, path);
|
|
result = (const char*)utf8_t(path);
|
|
result.transform("\\", "/");
|
|
#else
|
|
char path[PATH_MAX] = "";
|
|
struct passwd *userinfo = getpwuid(getuid());
|
|
if(userinfo) strcpy(path, userinfo->pw_dir);
|
|
result = path;
|
|
#endif
|
|
if(result.empty()) result = ".";
|
|
if(result.endswith("/") == false) result.append("/");
|
|
return result;
|
|
}
|
|
|
|
string configpath() {
|
|
#ifdef _WIN32
|
|
return userpath();
|
|
#else
|
|
return {userpath(), ".config/"};
|
|
#endif
|
|
}
|
|
|
|
string temppath() {
|
|
#ifdef _WIN32
|
|
wchar_t path[PATH_MAX] = L"";
|
|
GetTempPathW(PATH_MAX, path);
|
|
//path.transform("\\", "/");
|
|
return (const char*)utf8_t(path);
|
|
#else
|
|
return "/tmp/";
|
|
#endif
|
|
}
|
|
|
|
}
|
|
|
|
#endif
|