fix bug in memory: was using fastmem's read pages for writes too.

This commit is contained in:
CocoSimone
2023-02-19 12:17:04 +01:00
parent f56e1bafa2
commit e335304b23

View File

@@ -242,7 +242,7 @@ void Mem::Write64(Registers& regs, n64::JIT::Dynarec& dyn, u32 paddr, u64 val) {
void Mem::Write8(Registers& regs, u32 paddr, u32 val) { void Mem::Write8(Registers& regs, u32 paddr, u32 val) {
const auto page = paddr >> 12; const auto page = paddr >> 12;
auto offset = paddr & 0xFFF; auto offset = paddr & 0xFFF;
const auto pointer = readPages[page]; const auto pointer = writePages[page];
if(pointer) { if(pointer) {
((u8*)pointer)[BYTE_ADDRESS(offset)] = val; ((u8*)pointer)[BYTE_ADDRESS(offset)] = val;
@@ -287,13 +287,9 @@ void Mem::Write8(Registers& regs, u32 paddr, u32 val) {
} }
void Mem::Write16(Registers& regs, u32 paddr, u32 val) { void Mem::Write16(Registers& regs, u32 paddr, u32 val) {
if(paddr >= 0x04000000 && paddr <= 0x0403FFFF) {
}
const auto page = paddr >> 12; const auto page = paddr >> 12;
auto offset = paddr & 0xFFF; auto offset = paddr & 0xFFF;
const auto pointer = readPages[page]; const auto pointer = writePages[page];
if(pointer) { if(pointer) {
Util::WriteAccess<u16>((u8*)pointer, HALF_ADDRESS(offset), val); Util::WriteAccess<u16>((u8*)pointer, HALF_ADDRESS(offset), val);
@@ -340,7 +336,7 @@ void Mem::Write16(Registers& regs, u32 paddr, u32 val) {
void Mem::Write32(Registers& regs, u32 paddr, u32 val) { void Mem::Write32(Registers& regs, u32 paddr, u32 val) {
const auto page = paddr >> 12; const auto page = paddr >> 12;
auto offset = paddr & 0xFFF; auto offset = paddr & 0xFFF;
const auto pointer = readPages[page]; const auto pointer = writePages[page];
if(pointer) { if(pointer) {
Util::WriteAccess<u32>((u8*)pointer, offset, val); Util::WriteAccess<u32>((u8*)pointer, offset, val);
@@ -385,7 +381,7 @@ void Mem::Write32(Registers& regs, u32 paddr, u32 val) {
void Mem::Write64(Registers& regs, u32 paddr, u64 val) { void Mem::Write64(Registers& regs, u32 paddr, u64 val) {
const auto page = paddr >> 12; const auto page = paddr >> 12;
auto offset = paddr & 0xFFF; auto offset = paddr & 0xFFF;
const auto pointer = readPages[page]; const auto pointer = writePages[page];
if(pointer) { if(pointer) {
Util::WriteAccess<u64>((u8*)pointer, offset, val); Util::WriteAccess<u64>((u8*)pointer, offset, val);