diff --git a/bsnes/processor/wdc65816/wdc65816.hpp b/bsnes/processor/wdc65816/wdc65816.hpp index 4bed5c97..4fd2db2d 100755 --- a/bsnes/processor/wdc65816/wdc65816.hpp +++ b/bsnes/processor/wdc65816/wdc65816.hpp @@ -10,8 +10,8 @@ struct WDC65816 { virtual auto idle() -> void = 0; virtual auto idleBranch() -> void {} virtual auto idleJump() -> void {} - virtual auto read(uint addr) -> uint8 = 0; - virtual auto write(uint addr, uint8 data) -> void = 0; + virtual auto read(uint24 addr) -> uint8 = 0; + virtual auto write(uint24 addr, uint8 data) -> void = 0; virtual auto lastCycle() -> void = 0; virtual auto interruptPending() const -> bool = 0; virtual auto interrupt() -> void; diff --git a/bsnes/sfc/coprocessor/sa1/memory.cpp b/bsnes/sfc/coprocessor/sa1/memory.cpp index d82d974b..bf4a28f8 100644 --- a/bsnes/sfc/coprocessor/sa1/memory.cpp +++ b/bsnes/sfc/coprocessor/sa1/memory.cpp @@ -18,7 +18,7 @@ auto SA1::idleBranch() -> void { if(r.pc.d & 1) idleJump(); } -auto SA1::read(uint address) -> uint8 { +auto SA1::read(uint24 address) -> uint8 { r.mar = address; uint8 data = r.mdr; @@ -62,7 +62,7 @@ auto SA1::read(uint address) -> uint8 { return data; } -auto SA1::write(uint address, uint8 data) -> void { +auto SA1::write(uint24 address, uint8 data) -> void { r.mar = address; r.mdr = data; diff --git a/bsnes/sfc/coprocessor/sa1/sa1.hpp b/bsnes/sfc/coprocessor/sa1/sa1.hpp index 038a6e4a..14eef0aa 100644 --- a/bsnes/sfc/coprocessor/sa1/sa1.hpp +++ b/bsnes/sfc/coprocessor/sa1/sa1.hpp @@ -36,8 +36,8 @@ struct SA1 : Processor::WDC65816, Thread { alwaysinline auto idle() -> void override; alwaysinline auto idleJump() -> void override; alwaysinline auto idleBranch() -> void override; - alwaysinline auto read(uint address) -> uint8 override; - alwaysinline auto write(uint address, uint8 data) -> void override; + alwaysinline auto read(uint24 address) -> uint8 override; + alwaysinline auto write(uint24 address, uint8 data) -> void override; auto readVBR(uint address, uint8 data = 0) -> uint8; auto readDisassembler(uint address) -> uint8 override; diff --git a/bsnes/sfc/cpu/cpu.hpp b/bsnes/sfc/cpu/cpu.hpp index ad9967d4..57cb62a5 100644 --- a/bsnes/sfc/cpu/cpu.hpp +++ b/bsnes/sfc/cpu/cpu.hpp @@ -22,8 +22,8 @@ struct CPU : Processor::WDC65816, Thread, PPUcounter { //memory.cpp auto idle() -> void override; - auto read(uint addr) -> uint8 override; - auto write(uint addr, uint8 data) -> void override; + auto read(uint24 addr) -> uint8 override; + auto write(uint24 addr, uint8 data) -> void override; auto readDisassembler(uint addr) -> uint8 override; //io.cpp diff --git a/bsnes/sfc/cpu/memory.cpp b/bsnes/sfc/cpu/memory.cpp index 55a2227c..254cc529 100644 --- a/bsnes/sfc/cpu/memory.cpp +++ b/bsnes/sfc/cpu/memory.cpp @@ -6,7 +6,7 @@ auto CPU::idle() -> void { aluEdge(); } -auto CPU::read(uint address) -> uint8 { +auto CPU::read(uint24 address) -> uint8 { status.irqLock = false; if(address & 0x408000) { @@ -46,7 +46,7 @@ auto CPU::read(uint address) -> uint8 { return data; } -auto CPU::write(uint address, uint8 data) -> void { +auto CPU::write(uint24 address, uint8 data) -> void { status.irqLock = false; aluEdge(); diff --git a/hiro/gtk/application.cpp b/hiro/gtk/application.cpp index c86dd914..98cb2c99 100755 --- a/hiro/gtk/application.cpp +++ b/hiro/gtk/application.cpp @@ -11,7 +11,7 @@ auto Log_Filter(const char* logDomain, GLogLevelFlags logLevel, const char* mess //FreeBSD 12.0: caused by gtk_combo_box_size_allocate() internal function being defective if(string{message}.find("gtk_widget_size_allocate():")) return; - //prin all other messages + //print all other messages print(terminal::color::yellow("hiro: "), logDomain, "::", message, "\n"); } @@ -102,7 +102,7 @@ auto pApplication::initialize() -> void { //prevent useless terminal messages: //GVFS-RemoteVolumeMonitor: "invoking List() failed for type GProxyVolumeMonitorHal: method not implemented" g_log_set_handler("GVFS-RemoteVolumeMonitor", G_LOG_LEVEL_MASK, Log_Ignore, nullptr); - //Gtk: gtk_widget_size_allocate(): attempt to allocate widget with (width or height < 1) + //Gtk: "gtk_widget_size_allocate(): attempt to allocate widget with (width or height < 1)" g_log_set_handler("Gtk", G_LOG_LEVEL_MASK, Log_Filter, nullptr); //set WM_CLASS to Application::name() diff --git a/icarus/heuristics/super-famicom.cpp b/icarus/heuristics/super-famicom.cpp index e8db3f5f..5a93548e 100644 --- a/icarus/heuristics/super-famicom.cpp +++ b/icarus/heuristics/super-famicom.cpp @@ -248,6 +248,8 @@ auto SuperFamicom::board() const -> string { if(headerAddress == 0x40ffb0) mode = "EXHIROM-"; } + if(mode == "LOROM-" && headerAddress == 0x407fb0) mode = "EXLOROM-"; + bool epsonRTC = false; bool sharpRTC = false;