* fix EXLOROM detection
* fix new CPU masking error
This commit is contained in:
byuu 2019-07-28 06:44:38 +09:00
parent 6b284bb247
commit 296f2c094d
7 changed files with 14 additions and 12 deletions

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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

View File

@ -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();

View File

@ -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()

View File

@ -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;