From 19063d428852c9ca63ffc998ad48a3c363ffe2d0 Mon Sep 17 00:00:00 2001 From: Stenzek <stenzek@gmail.com> Date: Thu, 18 Jul 2024 18:07:06 +1000 Subject: [PATCH] Bus: Mirror BIOS area up to 4MB Fixes bus error when using PS2 BIOS. --- src/core/bus.cpp | 6 +++--- src/core/bus.h | 1 + 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/core/bus.cpp b/src/core/bus.cpp index fb956b16a..6d931ab27 100644 --- a/src/core/bus.cpp +++ b/src/core/bus.cpp @@ -1652,7 +1652,7 @@ void Bus::SetHandlers() // Cache isolated appears to affect KUSEG+KSEG0. SET(g_memory_handlers, KUSEG | RAM_BASE, RAM_MIRROR_SIZE, RAMReadHandler, RAMWriteHandler); SET(g_memory_handlers, KUSEG | CPU::SCRATCHPAD_ADDR, 0x1000, ScratchpadReadHandler, ScratchpadWriteHandler); - SET(g_memory_handlers, KUSEG | BIOS_BASE, BIOS_SIZE, BIOSReadHandler, IgnoreWriteHandler); + SET(g_memory_handlers, KUSEG | BIOS_BASE, BIOS_MIRROR_SIZE, BIOSReadHandler, IgnoreWriteHandler); SET(g_memory_handlers, KUSEG | EXP1_BASE, EXP1_SIZE, EXP1ReadHandler, EXP1WriteHandler); SET(g_memory_handlers, KUSEG | HW_BASE, HW_SIZE, HardwareReadHandler, HardwareWriteHandler); SET(g_memory_handlers, KUSEG | EXP2_BASE, EXP2_SIZE, EXP2ReadHandler, EXP2WriteHandler); @@ -1662,7 +1662,7 @@ void Bus::SetHandlers() // KSEG0 - Cached SET(g_memory_handlers, KSEG0 | RAM_BASE, RAM_MIRROR_SIZE, RAMReadHandler, RAMWriteHandler); SET(g_memory_handlers, KSEG0 | CPU::SCRATCHPAD_ADDR, 0x1000, ScratchpadReadHandler, ScratchpadWriteHandler); - SET(g_memory_handlers, KSEG0 | BIOS_BASE, BIOS_SIZE, BIOSReadHandler, IgnoreWriteHandler); + SET(g_memory_handlers, KSEG0 | BIOS_BASE, BIOS_MIRROR_SIZE, BIOSReadHandler, IgnoreWriteHandler); SET(g_memory_handlers, KSEG0 | EXP1_BASE, EXP1_SIZE, EXP1ReadHandler, EXP1WriteHandler); SET(g_memory_handlers, KSEG0 | HW_BASE, HW_SIZE, HardwareReadHandler, HardwareWriteHandler); SET(g_memory_handlers, KSEG0 | EXP2_BASE, EXP2_SIZE, EXP2ReadHandler, EXP2WriteHandler); @@ -1671,7 +1671,7 @@ void Bus::SetHandlers() // KSEG1 - Uncached SETUC(KSEG1 | RAM_BASE, RAM_MIRROR_SIZE, RAMReadHandler, RAMWriteHandler); - SETUC(KSEG1 | BIOS_BASE, BIOS_SIZE, BIOSReadHandler, IgnoreWriteHandler); + SETUC(KSEG1 | BIOS_BASE, BIOS_MIRROR_SIZE, BIOSReadHandler, IgnoreWriteHandler); SETUC(KSEG1 | EXP1_BASE, EXP1_SIZE, EXP1ReadHandler, EXP1WriteHandler); SETUC(KSEG1 | HW_BASE, HW_SIZE, HardwareReadHandler, HardwareWriteHandler); SETUC(KSEG1 | EXP2_BASE, EXP2_SIZE, EXP2ReadHandler, EXP2WriteHandler); diff --git a/src/core/bus.h b/src/core/bus.h index 319852f44..30023e315 100644 --- a/src/core/bus.h +++ b/src/core/bus.h @@ -75,6 +75,7 @@ enum : u32 EXP3_MASK = EXP3_SIZE - 1, BIOS_BASE = 0x1FC00000, BIOS_SIZE = 0x80000, + BIOS_MIRROR_SIZE = 0x400000, BIOS_MASK = 0x7FFFF, };