Update to v104r16 release.

byuu says:

Changelog:

  - processor/upd96050: always potentially update S1 on ALU ops, sans NOP
      - theory by Lord Nightmare. I'm impartial on this one, but may as
        well match his design
  - sfc: fixed save state hang [reported by FitzRoy; fixed by Cydrak]
  - icarus: do not save settings.bml file when in library mode
This commit is contained in:
Tim Allen 2017-10-02 19:04:28 +11:00
parent 92d86aef16
commit 5dbaec85a7
5 changed files with 9 additions and 4 deletions
higan
emulator
processor/upd96050
sfc/coprocessor/superfx
icarus

View File

@ -12,7 +12,7 @@ using namespace nall;
namespace Emulator {
static const string Name = "higan";
static const string Version = "104.15";
static const string Version = "104.16";
static const string Author = "byuu";
static const string License = "GPLv3";
static const string Website = "https://byuu.org/";

View File

@ -79,6 +79,7 @@ auto uPD96050::execOP(uint24 opcode) -> void {
flag.z = r == 0;
flag.s0 = r & 0x8000;
if(!flag.ov1) flag.s1 = flag.s0;
switch(alu) {
@ -110,7 +111,6 @@ auto uPD96050::execOP(uint24 opcode) -> void {
flag.ov0 = (q ^ r) & (q ^ p) & 0x8000;
flag.c = r > q;
}
if(!flag.ov1) flag.s1 = flag.s0;
flag.ov1 = flag.ov0 & flag.ov1 ? flag.s0 == flag.s1 : flag.ov0 | flag.ov1;
break;
}

View File

@ -3,6 +3,7 @@ auto SuperFX::read(uint24 addr, uint8 data) -> uint8 {
while(!regs.scmr.ron) {
step(6);
synchronize(cpu);
if(scheduler.synchronizing()) break;
}
return rom.read((((addr & 0x3f0000) >> 1) | (addr & 0x7fff)) & romMask);
}
@ -11,6 +12,7 @@ auto SuperFX::read(uint24 addr, uint8 data) -> uint8 {
while(!regs.scmr.ron) {
step(6);
synchronize(cpu);
if(scheduler.synchronizing()) break;
}
return rom.read(addr & romMask);
}
@ -19,6 +21,7 @@ auto SuperFX::read(uint24 addr, uint8 data) -> uint8 {
while(!regs.scmr.ran) {
step(6);
synchronize(cpu);
if(scheduler.synchronizing()) break;
}
return ram.read(addr & ramMask);
}
@ -31,6 +34,7 @@ auto SuperFX::write(uint24 addr, uint8 data) -> void {
while(!regs.scmr.ran) {
step(6);
synchronize(cpu);
if(scheduler.synchronizing()) break;
}
return ram.write(addr & ramMask, data);
}

View File

@ -127,6 +127,7 @@ auto nall::main(string_vector args) -> void {
#endif
scanDialog->show();
Application::run();
settings.save();
}
#endif

View File

@ -1,6 +1,6 @@
struct Settings : Markup::Node {
Settings();
~Settings();
auto save() -> void;
};
Settings::Settings() {
@ -19,6 +19,6 @@ Settings::Settings() {
set("icarus/UseHeuristics", true);
}
Settings::~Settings() {
auto Settings::save() -> void {
file::write(locate("settings.bml"), BML::serialize(*this));
}