mirror of
https://github.com/bsnes-emu/bsnes.git
synced 2025-08-16 22:44:10 +02:00
Update to v094r17 release.
byuu says: This updates higan to use the new Markup::Node changes. This is a really big change, and one slight typo anywhere could break certain classes of games from playing. I don't have ananke hooked up again yet, so I don't have the ability to test this much. If anyone with some v094 game folders wouldn't mind testing, I'd help out a great deal. I'm most concerned about testing one of each SNES special chip game. Most notably, systems like the SA-1, HitachiDSP and NEC-DSP were using the fancier lookups, eg node["rom[0]/name"], which I had to convert to a rather ugly node["rom"].at(0)["name"], which I'm fairly confident won't work. I'm going to blame that on the fumes from the shelves I just stained >.> Might work with node.find("rom[0]/name")(0) though ...? But so ugly ... ugh. That aside, this WIP adds the accuracy-PPU inlining, so the accuracy profile should run around 7.5% faster than before.
This commit is contained in:
@@ -12,32 +12,32 @@ void OpenGL::shader(const char* pathname) {
|
||||
|
||||
unsigned historySize = 0;
|
||||
if(pathname) {
|
||||
auto document = Markup::Document(file::read({pathname, "manifest.bml"}));
|
||||
auto document = BML::unserialize(file::read({pathname, "manifest.bml"}));
|
||||
|
||||
for(auto& node : document["settings"]) {
|
||||
settings.insert({node.name, node.text()});
|
||||
for(auto node : document["settings"]) {
|
||||
settings.insert({node.name(), node.text()});
|
||||
}
|
||||
|
||||
for(auto& node : document["input"]) {
|
||||
if(node.name == "history") historySize = node.decimal();
|
||||
if(node.name == "format") format = glrFormat(node.text());
|
||||
if(node.name == "filter") filter = glrFilter(node.text());
|
||||
if(node.name == "wrap") wrap = glrWrap(node.text());
|
||||
for(auto node : document["input"]) {
|
||||
if(node.name() == "history") historySize = node.decimal();
|
||||
if(node.name() == "format") format = glrFormat(node.text());
|
||||
if(node.name() == "filter") filter = glrFilter(node.text());
|
||||
if(node.name() == "wrap") wrap = glrWrap(node.text());
|
||||
}
|
||||
|
||||
for(auto& node : document["output"]) {
|
||||
for(auto node : document["output"]) {
|
||||
string text = node.text();
|
||||
if(node.name == "width") {
|
||||
if(node.name() == "width") {
|
||||
if(text.endsWith("%")) relativeWidth = real(text.rtrim("%")) / 100.0;
|
||||
else absoluteWidth = decimal(text);
|
||||
}
|
||||
if(node.name == "height") {
|
||||
if(node.name() == "height") {
|
||||
if(text.endsWith("%")) relativeHeight = real(text.rtrim("%")) / 100.0;
|
||||
else absoluteHeight = decimal(text);
|
||||
}
|
||||
}
|
||||
|
||||
for(auto& node : document.find("program")) {
|
||||
for(auto node : document.find("program")) {
|
||||
unsigned n = programs.size();
|
||||
programs(n).bind(this, node, pathname);
|
||||
}
|
||||
|
@@ -54,9 +54,9 @@ void OpenGLProgram::bind(OpenGL* instance, const Markup::Node& node, const strin
|
||||
pixmaps(n).format = format;
|
||||
pixmaps(n).filter = filter;
|
||||
pixmaps(n).wrap = wrap;
|
||||
if(leaf["format"].exists()) pixmaps(n).format = glrFormat(leaf["format"].text());
|
||||
if(leaf["filter"].exists()) pixmaps(n).filter = glrFilter(leaf["filter"].text());
|
||||
if(leaf["wrap"].exists()) pixmaps(n).wrap = glrWrap(leaf["wrap"].text());
|
||||
if(leaf["format"]) pixmaps(n).format = glrFormat(leaf["format"].text());
|
||||
if(leaf["filter"]) pixmaps(n).filter = glrFilter(leaf["filter"].text());
|
||||
if(leaf["wrap"]) pixmaps(n).wrap = glrWrap(leaf["wrap"].text());
|
||||
|
||||
unsigned w = glrSize(image.width), h = glrSize(image.height);
|
||||
uint32_t* buffer = new uint32_t[w * h]();
|
||||
|
Reference in New Issue
Block a user