UMD callbacks, a couple of NIDs

This commit is contained in:
Henrik Rydgard 2012-11-07 15:44:13 +01:00
parent a1de133d3e
commit cf098dfd67
4 changed files with 27 additions and 8 deletions

View file

@ -179,6 +179,8 @@ static const HLEFunction scePower[] =
{0x34f9c463,0,"scePowerGetPllClockFrequencyInt"}, {0x34f9c463,0,"scePowerGetPllClockFrequencyInt"},
{0xea382a27,0,"scePowerGetPllClockFrequencyFloat"}, {0xea382a27,0,"scePowerGetPllClockFrequencyFloat"},
{0xebd177d6,0,"scePower_driver_EBD177D6"}, {0xebd177d6,0,"scePower_driver_EBD177D6"},
{0x469989ad,0,"scePower_469989ad"},
{0xa85880d0,0,"scePower_a85880d0"},
}; };
//890129c in tyshooter looks bogus //890129c in tyshooter looks bogus

View file

@ -106,6 +106,8 @@ const HLEFunction scePsmfPlayer[] =
{0xe792cd94,0,"scePsmfPlayerReleasePsmfFunction"}, {0xe792cd94,0,"scePsmfPlayerReleasePsmfFunction"},
{0xf3efaa91,0,"scePsmfPlayerGetCurrentPlayMode"}, {0xf3efaa91,0,"scePsmfPlayerGetCurrentPlayMode"},
{0xf8ef08a6,0,"scePsmfPlayerGetCurrentStatus"}, {0xf8ef08a6,0,"scePsmfPlayerGetCurrentStatus"},
{0x2D0E4E0A,0,"scePsmfPlayerSetTempBufFunction"},
{0x58B83577,0,"scePsmfPlayerSetPsmfCBFunction"},
}; };
void Register_scePsmf() { void Register_scePsmf() {

View file

@ -161,7 +161,7 @@ void SasInstance::mix(u32 outAddr)
{ {
Voice &voice = sas.voices[v]; Voice &voice = sas.voices[v];
if (voice.playing) if (voice.playing && voice.vagAddr != 0)
{ {
for (int i = 0; i < grainSize; i++) for (int i = 0; i < grainSize; i++)
{ {
@ -419,6 +419,7 @@ const HLEFunction sceSasCore[] =
{0xe175ef66, sceSasGetOutputMode, "__sceSasGetOutputmode"}, {0xe175ef66, sceSasGetOutputMode, "__sceSasGetOutputmode"},
{0xe855bf76, 0, "__sceSasSetOutputmode"}, {0xe855bf76, 0, "__sceSasSetOutputmode"},
{0x07f58c24, 0, "__sceSasGetAllEnvelopeHeights"}, // (int sasCore, int heightAddr) 32-bit heights, 0-0x40000000 {0x07f58c24, 0, "__sceSasGetAllEnvelopeHeights"}, // (int sasCore, int heightAddr) 32-bit heights, 0-0x40000000
{0xE1CD9561, 0, "__sceSasSetVoicePCM"},
}; };
void Register_sceSasCore() void Register_sceSasCore()

View file

@ -18,7 +18,7 @@
#include "HLE.h" #include "HLE.h"
#include "../MIPS/MIPS.h" #include "../MIPS/MIPS.h"
#include "sceUmd.h" #include "sceUmd.h"
#include "sceKernelThread.h"
#define UMD_NOT_PRESENT 0x01 #define UMD_NOT_PRESENT 0x01
#define UMD_PRESENT 0x02 #define UMD_PRESENT 0x02
@ -69,7 +69,7 @@ void __KernelUmdDeactivate()
void sceUmdCheckMedium() void sceUmdCheckMedium()
{ {
DEBUG_LOG(HLE,"1=sceUmdCheckMedium(?)"); DEBUG_LOG(HLE,"1=sceUmdCheckMedium(?)");
//ignore PARAM(0) //ignore PARAM(0)
RETURN(1); //non-zero: disc in drive RETURN(1); //non-zero: disc in drive
} }
@ -86,20 +86,34 @@ void sceUmdActivate()
u32 retVal = 0; u32 retVal = 0;
__KernelUmdActivate(); __KernelUmdActivate();
DEBUG_LOG(HLE,"%i=sceUmdActivate(%08x, %s)", retVal, unknown, name); DEBUG_LOG(HLE,"%i=sceUmdActivate(%08x, %s)", retVal, unknown, name);
u32 notifyArg = UMD_PRESENT | UMD_READABLE;
__KernelNotifyCallbackType(THREAD_CALLBACK_UMD, -1, notifyArg);
RETURN(retVal); RETURN(retVal);
} }
void sceUmdDeactivate() void sceUmdDeactivate()
{ {
ERROR_LOG(HLE,"sceUmdDeactivate()"); ERROR_LOG(HLE,"sceUmdDeactivate()");
bool triggerCallback = umdActivated;
__KernelUmdDeactivate(); __KernelUmdDeactivate();
if (triggerCallback) {
u32 notifyArg = UMD_PRESENT | UMD_READY;
__KernelNotifyCallbackType(THREAD_CALLBACK_UMD, -1, notifyArg);
}
RETURN(0); RETURN(0);
} }
void sceUmdRegisterUMDCallBack() u32 sceUmdRegisterUMDCallBack(u32 cbId)
{ {
ERROR_LOG(HLE,"UNIMPL 0=sceUmdRegisterUMDCallback(id=%i)",PARAM(0)); DEBUG_LOG(HLE,"0=sceUmdRegisterUMDCallback(id=%i)",PARAM(0));
RETURN(0); return __KernelRegisterCallback(THREAD_CALLBACK_UMD, cbId);
}
u32 sceUmdUnRegisterUMDCallBack(u32 cbId)
{
DEBUG_LOG(HLE,"0=sceUmdUnRegisterUMDCallBack(id=%i)",PARAM(0));
return __KernelUnregisterCallback(THREAD_CALLBACK_UMD, cbId);
} }
void sceUmdGetDriveStat() void sceUmdGetDriveStat()
@ -163,8 +177,8 @@ const HLEFunction sceUmdUser[] =
{0x6B4A146C,sceUmdGetDriveStat,"sceUmdGetDriveStat"}, {0x6B4A146C,sceUmdGetDriveStat,"sceUmdGetDriveStat"},
{0x20628E6F,0,"sceUmdGetErrorStat"}, {0x20628E6F,0,"sceUmdGetErrorStat"},
{0x340B7686,sceUmdGetDiscInfo,"sceUmdGetDiscInfo"}, {0x340B7686,sceUmdGetDiscInfo,"sceUmdGetDiscInfo"},
{0xAEE7404D,sceUmdRegisterUMDCallBack,"sceUmdRegisterUMDCallBack"}, {0xAEE7404D,&WrapU_U<sceUmdRegisterUMDCallBack>,"sceUmdRegisterUMDCallBack"},
{0xBD2BDE07,0,"sceUmdUnRegisterUMDCallBack"}, {0xBD2BDE07,&WrapU_U<sceUmdUnRegisterUMDCallBack>,"sceUmdUnRegisterUMDCallBack"},
{0x87533940,0,"sceUmdReplaceProhibit"}, // ??? sounds bogus {0x87533940,0,"sceUmdReplaceProhibit"}, // ??? sounds bogus
}; };