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"},
{0xea382a27,0,"scePowerGetPllClockFrequencyFloat"},
{0xebd177d6,0,"scePower_driver_EBD177D6"},
{0x469989ad,0,"scePower_469989ad"},
{0xa85880d0,0,"scePower_a85880d0"},
};
//890129c in tyshooter looks bogus

View File

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

View File

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

View File

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