From f3522b7b70af213a5cb0ec4bfca2865f97bd7e02 Mon Sep 17 00:00:00 2001 From: Albert Liu <45282415+ggrtk@users.noreply.github.com> Date: Sun, 8 Nov 2020 22:19:25 -0800 Subject: [PATCH 1/3] Bus: Stub out EXP3 and unknown EXP accesses --- src/core/bus.cpp | 42 ++++++++++++++++++++++++++++++++++++++++++ src/core/bus.h | 3 +++ 2 files changed, 45 insertions(+) diff --git a/src/core/bus.cpp b/src/core/bus.cpp index 7b2b8f09a..2739538f0 100644 --- a/src/core/bus.cpp +++ b/src/core/bus.cpp @@ -638,6 +638,40 @@ ALWAYS_INLINE static TickCount DoEXP2Access(u32 offset, u32& value) } } +template +ALWAYS_INLINE static TickCount DoEXP3Access(u32 offset, u32& value) +{ + if constexpr (type == MemoryAccessType::Read) + { + Log_WarningPrintf("EXP3 read: 0x%08X -> 0x%08X", EXP3_BASE | offset); + value = UINT32_C(0xFFFFFFFF); + + return 0; + } + else + { + if (offset == 0) + Log_WarningPrintf("BIOS POST3 status: %02X", value & UINT32_C(0x0F)); + + return 0; + } +} + +template +ALWAYS_INLINE static TickCount DoUnknownEXPAccess(u32 address, u32& value) +{ + if constexpr (type == MemoryAccessType::Read) + { + Log_ErrorPrintf("Unknown EXP read: 0x%08X", address); + return -1; + } + else + { + Log_WarningPrintf("Unknown EXP write: 0x%08X <- 0x%08X", address, value); + return 0; + } +} + template ALWAYS_INLINE static TickCount DoMemoryControlAccess(u32 offset, u32& value) { @@ -1289,6 +1323,14 @@ static ALWAYS_INLINE TickCount DoMemoryAccess(VirtualMemoryAddress address, u32& { return DoEXP2Access(address & EXP2_MASK, value); } + else if (address < EXP3_BASE) + { + return DoUnknownEXPAccess(address, value); + } + else if (address < (EXP3_BASE + EXP3_SIZE)) + { + return DoEXP3Access(address & EXP3_MASK, value); + } else { return DoInvalidAccess(type, size, address, value); diff --git a/src/core/bus.h b/src/core/bus.h index 4be96a83b..05982edd0 100644 --- a/src/core/bus.h +++ b/src/core/bus.h @@ -56,6 +56,9 @@ enum : u32 EXP2_BASE = 0x1F802000, EXP2_SIZE = 0x2000, EXP2_MASK = EXP2_SIZE - 1, + EXP3_BASE = 0x1FA00000, + EXP3_SIZE = 0x1, + EXP3_MASK = EXP3_SIZE - 1, BIOS_BASE = 0x1FC00000, BIOS_SIZE = 0x80000, BIOS_MASK = 0x7FFFF, From c698519d4499f1380805da2143cd578731df2496 Mon Sep 17 00:00:00 2001 From: Albert Liu <45282415+ggrtk@users.noreply.github.com> Date: Mon, 9 Nov 2020 08:02:01 -0800 Subject: [PATCH 2/3] Bus: Log writes to additional POST registers --- src/core/bus.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/core/bus.cpp b/src/core/bus.cpp index 2739538f0..aa01e9b05 100644 --- a/src/core/bus.cpp +++ b/src/core/bus.cpp @@ -625,10 +625,14 @@ ALWAYS_INLINE static TickCount DoEXP2Access(u32 offset, u32& value) m_tty_line_buffer += static_cast(Truncate8(value)); } } - else if (offset == 0x41) + else if (offset == 0x41 || offset == 0x42) { Log_WarningPrintf("BIOS POST status: %02X", value & UINT32_C(0x0F)); } + else if (offset == 0x70) + { + Log_WarningPrintf("BIOS POST2 status: %02X", value & UINT32_C(0x0F)); + } else { Log_WarningPrintf("EXP2 write: 0x%08X <- 0x%08X", EXP2_BASE | offset, value); From d0443e3165cf97b2d16367ec04a489ea3d0cab55 Mon Sep 17 00:00:00 2001 From: Albert Liu <45282415+ggrtk@users.noreply.github.com> Date: Fri, 30 Oct 2020 23:19:25 -0700 Subject: [PATCH 3/3] BIOS: Add BIOS image info for PS1 on PS3 --- src/core/bios.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/core/bios.cpp b/src/core/bios.cpp index 32f69f6d6..c079c6df4 100644 --- a/src/core/bios.cpp +++ b/src/core/bios.cpp @@ -37,7 +37,7 @@ std::string Hash::ToString() const return str; } -static constexpr std::array s_image_infos = {{ +static constexpr std::array s_image_infos = {{ {"SCPH-1000, DTL-H1000 (v1.0)", ConsoleRegion::NTSC_J, MakeHashFromString("239665b1a3dade1b5a52c06338011044")}, {"SCPH-1001, 5003, DTL-H1201, H3001 (v2.2 12-04-95 A)", ConsoleRegion::NTSC_U, MakeHashFromString("924e392ed05558ffdb115408c263dccf")}, @@ -74,7 +74,8 @@ static constexpr std::array s_image_infos = {{ {"SCPH-102 (v4.4 03-24-00 E)", ConsoleRegion::PAL, MakeHashFromString("b10f5e0e3d9eb60e5159690680b1e774")}, {"SCPH-102 (v4.5 05-25-00 E)", ConsoleRegion::PAL, MakeHashFromString("de93caec13d1a141a40a79f5c86168d6")}, {"PSP, SCPH-1000R (v4.5 05-25-00 J)", ConsoleRegion::Auto, MakeHashFromString("c53ca5908936d412331790f4426c6c33")}, - {"SCPH-1000R (v4.5 05-25-00 J)", ConsoleRegion::NTSC_J, MakeHashFromString("476d68a94ccec3b9c8303bbd1daf2810")} + {"SCPH-1000R (v4.5 05-25-00 J)", ConsoleRegion::NTSC_J, MakeHashFromString("476d68a94ccec3b9c8303bbd1daf2810")}, + {"PS3 (v5.0 06-23-03 A)", ConsoleRegion::Auto, MakeHashFromString("81bbe60ba7a3d1cea1d48c14cbcc647b")} }}; Hash GetHash(const Image& image)