From 19888030043e28b961586c8648f2d3f9d85c8ba8 Mon Sep 17 00:00:00 2001 From: Jean-Philip Desjardins Date: Tue, 17 Sep 2024 16:45:15 -0400 Subject: [PATCH] Add another missing ACCDVD function. --- Source/iop/Iop_Cdvdman.h | 2 +- Source/iop/namco_sys246/Iop_NamcoAcCdvd.cpp | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/Source/iop/Iop_Cdvdman.h b/Source/iop/Iop_Cdvdman.h index 6bd9d4be97..e3b975c0e2 100644 --- a/Source/iop/Iop_Cdvdman.h +++ b/Source/iop/Iop_Cdvdman.h @@ -57,6 +57,7 @@ namespace Iop uint32 CdStandby(); uint32 CdRead(uint32, uint32, uint32, uint32); + uint32 CdSeek(uint32); uint32 CdCallback(uint32); uint32 CdSync(uint32); uint32 CdStatus(); @@ -82,7 +83,6 @@ namespace Iop }; uint32 CdInit(uint32); - uint32 CdSeek(uint32); uint32 CdGetError(); uint32 CdSearchFile(uint32, uint32); uint32 CdGetDiskType(); diff --git a/Source/iop/namco_sys246/Iop_NamcoAcCdvd.cpp b/Source/iop/namco_sys246/Iop_NamcoAcCdvd.cpp index ae35abf666..4f6c9e76f9 100644 --- a/Source/iop/namco_sys246/Iop_NamcoAcCdvd.cpp +++ b/Source/iop/namco_sys246/Iop_NamcoAcCdvd.cpp @@ -17,6 +17,7 @@ using namespace Iop::Namco; #define FUNCTION_CDGETERROR "IopCdGetError" #define FUNCTION_CDGETDISKTYPE "IopCdGetDiskType" #define FUNCTION_CDSTATUS "IopCdStatus" +#define FUNCTION_CDSEEK "IopCdSeek" #define FUNCTION_CDSTANDBY "IopCdStandby" #define FUNCTION_CDSETMMODE "IopCdSetMmode" @@ -60,6 +61,8 @@ std::string CAcCdvd::GetFunctionName(unsigned int functionId) const return FUNCTION_CDGETDISKTYPE; case 22: return FUNCTION_CDSTATUS; + case 25: + return FUNCTION_CDSEEK; case 26: return FUNCTION_CDSTANDBY; case 37: @@ -140,6 +143,14 @@ void CAcCdvd::Invoke(CMIPS& context, unsigned int functionId) CLog::GetInstance().Print(LOG_NAME, FUNCTION_CDSTATUS "();\r\n"); context.m_State.nGPR[CMIPS::V0].nV0 = m_cdvdman.CdStatus(); break; + case 25: + //CdSeek + { + uint32 sector = context.m_State.nGPR[CMIPS::A0].nV0; + CLog::GetInstance().Print(LOG_NAME, FUNCTION_CDSEEK "(sector = 0x%08X);\r\n", sector); + context.m_State.nGPR[CMIPS::V0].nV0 = m_cdvdman.CdSeek(sector); + } + break; case 26: CLog::GetInstance().Print(LOG_NAME, FUNCTION_CDSTANDBY "();\r\n"); context.m_State.nGPR[CMIPS::V0].nV0 = m_cdvdman.CdStandby();