Editing PSP Emulation
Jump to navigation
Jump to search
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 1: | Line 1: | ||
=='''PSPHD'''== | =='''PSPHD'''== | ||
The new ps plus psp emulator has a lot of undiscovered functionality. it even allows patches directly to the Allegrex cpu. | |||
The | Sadly sony has not made it easy for users to use CLI commands, since sony mostly uses lua patches. that has led to many cli command becoming redundant. very few commands have a description to their usage inside of the eboot.bin. everything else is just guesswork from the scene. The psp emulator has not gained the same popularity as the ps2 emulator since currently there is an unofficial PPSSPP core in the unofficial retroarch port. and as far as the compatibility and performance goes. the retroarch core is second to no one. But this emulator contains great potential. though sadly it does not seem to have support for gamedata installation. and that has lead to many games becoming currently unusable. | ||
== Commands == | == Commands == | ||
'''Known functions:''' Require cleanup. | '''Known functions:''' Require cleanup. | ||
<br>The rest of the cli and lua commands can all be found inside of an emu's decrypted '''eboot.bin'''. | |||
=== config-emu-ps4.txt commands === | |||
{| cellspacing="0" cellpadding="2" border="1" class="wikitable" style="text-align: center;" | {| cellspacing="0" cellpadding="2" border="1" class="wikitable" style="text-align: center;" | ||
! Command !! Values !! Notes !! Usage | ! Command !! Values !! Notes !! Usage | ||
|- | |- | ||
| --boot || || Set directory of psp game's boot.bin || [disc0:/PSP_GAME/SYSDIR/BOOT.BIN] | | --boot || || Set directory of psp game's boot.bin || [disc0:/PSP_GAME/SYSDIR/BOOT.BIN] | ||
|- | |||
| --volume || Range from 0.0 to 1 || Adjust volume level, seems pretty redundant || --volume="0.25" | |||
|- | |- | ||
| --notrophies || || Enable/disable trophies|| | | --notrophies || || Enable/disable trophies|| | ||
|- | |- | ||
| --locale || || || | | --locale || || || | ||
Line 82: | Line 22: | ||
|- | |- | ||
| --vms || ? || ? || | | --vms || ? || ? || | ||
|- | |||
| --texreplace || Directory || Set directory of texture replacement folder || --texreplace="host0:texreplace" | |||
|- | |||
| --samplereplace || || || | |||
|- | |- | ||
| --addon || || || | | --addon || || || | ||
|- | |- | ||
| --host || Sets host directory || --host="/hostapp/" | | --host || || Sets host directory || --host="/hostapp/" | ||
|- | |- | ||
| -- | | --texswitch||true, false|| Enables Texture replacement || --texswitch=true | ||
|- | |- | ||
| --xobuttonmode || oenter, ocancel || Switcher between x and circle button, made specifically for japanese gamers | | --texsave || || || | ||
|- | |||
| --texmissingsave || || || | |||
|- | |||
| --loglevel || none, all, warn, info, error, debug, trace || debug logging | |||
|- | |||
| --xobuttonmode || oenter, ocancel || Switcher between x and circle button, made specifically for japanese gamers | |||
|- | |- | ||
| --lang || Including but not limited to "en" "jp" "fr" "it" || Language selector || --lang="en" | | --lang || Including but not limited to "en" "jp" "fr" "it" || Language selector || --lang="en" | ||
|- | |||
| --parappareplacecolor || The command expects 8 Hex values || (rgb?) || | |||
|- | |||
| --autoresampler || true, false|| Turns on the auto-resampler. Assumes textures in texreplace are at 8x resolution and resamples them at load, May only work on new LocoRoco Midnight Carnival emu || --autoresampler=true | |||
|- | |- | ||
| --savedata-mode || ? || ? || | | --savedata-mode || ? || ? || | ||
Line 99: | Line 53: | ||
| --multisaves || true, false || Enable Multiple Savegames || --multisaves=true | | --multisaves || true, false || Enable Multiple Savegames || --multisaves=true | ||
|- | |- | ||
| -- | | --savedatamulti-size-game || || || | ||
|- | |- | ||
| -- | | --savedatamulti-size-user || || || | ||
|- | |- | ||
| -- | | --samplesave || ? || ? || | ||
|- | |- | ||
| -- | | --vramcopyback || 0, 10000000 || || --vramcopyback=45 | ||
|- | |- | ||
| -- | | --replacementfilter || true, false || This forces alpha blending to on for replaced textures. || --replacementfilter=true | ||
|- | |- | ||
| -- | | --clamp-line-thickness-min || ? || ? || | ||
|- | |- | ||
| -- | | --clamp-line-thickness-max || ? || ? || | ||
|- | |- | ||
| -- | | --spu2Trace || true, false || || --spu2Trace=true | ||
|- | |- | ||
| -- | | --spu2-c1-memin-to-bgm || ? || || --spu2-c1-memin-to-bgm=true | ||
|- | |- | ||
| -- | | --replacementalpha || true, false || || --replacementalpha=true | ||
|- | |- | ||
| -- | | --parappaalphahack || true?, false? || || --parappaalphahack=true | ||
|- | |- | ||
| --parappajapanesefonthack || true?, false? || Enables Support For Japanese Fonts ??|| --parappajapanesefonthack=true | | --parappajapanesefonthack || true?, false? || Enables Support For Japanese Fonts ??|| --parappajapanesefonthack=true | ||
|- | |- | ||
| -- | | --locorocomeshsmooth || true, false || Custom mesh smoothing for loco roco games|| --locorocomeshsmooth=true | ||
|- | |- | ||
| -- | | --godofwarhack || true?, false? || Seems specifically made for god of war, unknown effect || --godofwarhack=true | ||
|- | |- | ||
| -- | | --locorocomeshsmoothnonindexed || true, false || Non-indexed mesh smoothing ||--locorocomeshsmoothnonindexed=true | ||
|- | |- | ||
| -- | | --gputhread || true, false || Run the PSP GPU on a separate thread || --gputhread=true | ||
|- | |- | ||
| -- | | --antialias || off, MSAA4x, SSAA4x|| Anti-aliasing options || --antialias=off | ||
|- | |- | ||
| -- | | --texcachemode || patchworkheroes drawbounds, drawboundsloco, patchworkheroes, locoroco2, rondo || Seems to be a selector of texture caching method|| --texcachemode=patchworkheroes | ||
|- | |- | ||
| -- | | --texclutmode || filter, full || || --texclutmode=full | ||
|- | |- | ||
|- | | --texloadmode || launch, ondemand_lz4 || Seems to be a selector of when to load textures, either before the game requires it, or once the game requires it || | ||
| | |||
|- | |- | ||
| -- | | --texloadcores || 0, 100 || textures to load || texloadcores=2 | ||
|- | |- | ||
| -- | | --depthscalehack || true?, false? || ||--depthscalehack=true | ||
|- | |- | ||
| -- | | --forcenobilinear || true, false || Turn bilinear filtering on/off ||--forcenobilinear=true | ||
|- | |- | ||
| -- | | --smoothlevel || 0, 100 || Mesh smoothing level? || --smoothlevel=0 | ||
|- | |- | ||
| -- | | --anisolevel || 0, 100 || Anisotropic filtering level?? || | ||
|- | |- | ||
| -- | | --msxxadhoc || true?, false? || ad hoc support ? || | ||
|- | |- | ||
| -- | | --umddelay || true?, false?|| Seems to be I/O timing method, Some games need a delay to work properly. [https://github.com/hrydgard/ppsspp/issues/7647 More here] || | ||
|- | |- | ||
|} | |} | ||
==== | |||
==== Speedhacks ==== | |||
{| cellspacing="0" cellpadding="2" border="1" class="wikitable" style="text-align: center;" | {| cellspacing="0" cellpadding="2" border="1" class="wikitable" style="text-align: center;" | ||
! Command !! Values !! Notes !! Usage | ! Command !! Values !! Notes !! Usage | ||
|- | |- | ||
| -- | | --antialias || off || Turning Anti-Alias Off Improves Performance||--antialias=off | ||
|- | |- | ||
| -- | | --texclutmode || full || Turns on filtering of CLUT hashes to avoid repeat indexed textures ||--texclutmode=full | ||
|- | |- | ||
| -- | | --texloadcores || 0 || Textures to load ||--texloadcores=12 | ||
|- | |- | ||
| -- | | --smoothlevel || 0 || Set mesh smooth level||--smoothlevel=0 | ||
|- | |- | ||
| -- | | --texcachemode || patchworkheroes drawbounds, drawboundsloco, patchworkheroes, locoroco2, rondo || Set texture caching method ||--texcachemode=patchworkheroes | ||
|- | |- | ||
| -- | | --present || vblankstart, setframebuf, drawsync|| Display on draw to reduce latency ||--present=setframebuf | ||
|- | |- | ||
| --texrecent || true || Optimize texture hashes ||--texrecent=true | |||
|} | |} | ||
=== | ===XXXXYYYYY_patches.lua=== | ||
Your lua can be placed as '''Image0\Patches\XXXXYYYYY\XXXXYYYYY_patches.lua''' | |||
<br>'''XXXXYYYYY''' being the game's Region code | |||
<br>'''Requires Cleanup'''. | |||
{| cellspacing="0" cellpadding="2" border="1" class="wikitable" style="text-align: center;" | {| cellspacing="0" cellpadding="2" border="1" class="wikitable" style="text-align: center;" | ||
! Command !! | ! Command !! Usage !! Notes - Example | ||
|- | |||
| apiRequest || '''apiRequest(<api version>)''' || example: apiRequest(0.1) | |||
Calling api is mandatory. some commands require higher versions. | |||
|- | |||
! !! getEmuObject class !! | |||
|- | |- | ||
| | |getEmuObject || '''local emuObj = getEmuObject()''' || Required for all functions using emuObj | ||
|- | |- | ||
| | | AddVsyncHook ||emuObj.AddVsyncHook()|| Set function to be done on every vsync | ||
|- | |- | ||
| | | RemoveVsyncHook ||emuObj.RemoveVsyncHook()|| Remove vsynchook | ||
|- | |- | ||
| | | AddBootHook ||emuObj.AddBootHook()|| Set function to be done when the game boots up | ||
|- | |- | ||
| | |RemoveBootHook||emuObj.RemoveBootHook()|| remove function to be done when the game boots up | ||
|- | |- | ||
| | |PadRead || emuObj.PadRead() || | ||
|- | |- | ||
| | |PadReadPitch || emuObj.PadReadPitch() || | ||
|- | |- | ||
| | |PadReadRoll || emuObj.PadReadRoll()|| | ||
|- | |- | ||
| | |PadRegisterSamples || emuObj.PadRegisterSamples()|| | ||
|- | |- | ||
|LoadSlideshow ||emuObj.LoadSlideshow()|| | |LoadSlideshow ||emuObj.LoadSlideshow()|| | ||
Line 259: | Line 185: | ||
| SaveState ||emuObj.SaveState()|| | | SaveState ||emuObj.SaveState()|| | ||
|- | |- | ||
| SetFDExtraDelay ||emuObj.SetFDExtraDelay()|| | | SetFDExtraDelay ||emuObj.SetFDExtraDelay()|| | ||
|- | |- | ||
| MeshSmooth ||emuObj.MeshSmooth()|| | | MeshSmooth ||emuObj.MeshSmooth()|| | ||
Line 292: | Line 218: | ||
|- | |- | ||
| PlayVideo||emuObj.PlayVideo()|| | | PlayVideo||emuObj.PlayVideo()|| | ||
|- | |||
| AddGPUHook ||emuObj.AddGPUHook()|| | |||
|- | |- | ||
| RescaleUForUpscale ||emuObj.RescaleUForUpscale()|| | | RescaleUForUpscale ||emuObj.RescaleUForUpscale()|| | ||
Line 304: | Line 232: | ||
|- | |- | ||
| OverrideFBSize||emuObj.OverrideFBSize()|| Override framebuffer size ? | | OverrideFBSize||emuObj.OverrideFBSize()|| Override framebuffer size ? | ||
|- | |||
| PadSetButtonsMode || emuObj.PadSetButtonsMode() || emuObj.PadSetButtonsMode(pad.BUTTONS_MODE_OPTION_IS_SELECT) | |||
|- | |- | ||
|RemapSavedata || emuObj.RemapSavedata() ||emuObj.RemapSavedata("UCUS98711", "CUSA06171", "504e802b04a1838c32b616abbe0b475fbea1c823825ef0df06cc2bad129ce2f7") | |RemapSavedata || emuObj.RemapSavedata() ||emuObj.RemapSavedata("UCUS98711", "CUSA06171", "504e802b04a1838c32b616abbe0b475fbea1c823825ef0df06cc2bad129ce2f7") | ||
|- | |||
| PadVibrate|| emuObj.PadVibrate() || emuObj.PadVibrate(5,180,180) | |||
|- | |- | ||
| NeoMode || emuObj.NeoMode() || Checks whether or not the ps4 is pro | | NeoMode || emuObj.NeoMode() || Checks whether or not the ps4 is pro | ||
|- | |- | ||
| ThrottleMax || emuObj.ThrottleMax() || Disable framelimiter | | ThrottleMax || emuObj.ThrottleMax() || Disable framelimiter During loading screens, This setting can sometimes be harmful when used globally in config files. Loading times are faster, but the game also runs faster than it should when the PS4 has enough free cpu power. | ||
|- | |- | ||
| ThrottleFast|| emuObj.ThrottleFast() || Faster than default, but exact value is unknown. | | ThrottleFast|| emuObj.ThrottleFast() || Faster than default, but exact value is unknown. | ||
Line 328: | Line 260: | ||
|- | |- | ||
| CopyFB || emuObj.CopyFB() || | | CopyFB || emuObj.CopyFB() || | ||
|- | |- | ||
! !! getAXObject class !! | |||
|- | |- | ||
| | | getAXObject ||'''local axObj = getAXObject()''' || Required for all functions using AXObject | ||
|- | |- | ||
| | | AddHook || axObj.AddHook() || | ||
|- | |- | ||
| | | RemoveHook || axObj.RemoveHook() || | ||
|- | |- | ||
| | |SetPC|| axObj.SetPC() || | ||
|- | |- | ||
| | |GetPC|| axObj.GetPC() || | ||
|- | |- | ||
| | | ReadMem32 || axObj.ReadMem32() || Read 4 bytes from offset | ||
|- | |- | ||
| | | WriteMem32 || axObj.WriteMem32() || Write 4 bytes to offset | ||
|- | |- | ||
| | | ReadMem16 || axObj.ReadMem16() || Read 2 bytes from offset | ||
|- | |- | ||
| | | WriteMem16 || axObj.WriteMem16() || Write 2 bytes to offset | ||
|- | |- | ||
| | | ReadMem8 || axObj.ReadMem8() || Read 1 byte from offset | ||
|- | |- | ||
| | | WriteMem8 || axObj.WriteMem8() || Write 1 byte to offset | ||
|- | |- | ||
| | | ReadMemString || axObj.ReadMemString() || | ||
|- | |- | ||
| | | WriteMemString || axObj.WriteMemString() || | ||
|- | |- | ||
| | | WriteMemStr16 || axObj.WriteMemStr16() || | ||
|- | |- | ||
| | |WriteMemStr16Z ||axObj.WriteMemStr16Z() || | ||
|- | |- | ||
| | | WriteMemStringZ ||axobj.WriteMemStringZ || | ||
|- | |- | ||
| | |ReadMemFloat || axObj.ReadMemFloat() || | ||
|- | |- | ||
| | |WriteMemFloat || axObj.WriteMemFloat() || | ||
|- | |- | ||
| GetGpr || axObj.GetGpr() || | | GetGpr || axObj.GetGpr() || | ||
Line 423: | Line 318: | ||
|- | |- | ||
|GetReg||axObj.GetReg()|| | |GetReg||axObj.GetReg()|| | ||
|- | |- | ||
| | | BurnCycles|| axobj.BurnCycles() || Could be an option to overclock cpu at a hooked offset | ||
|- | |- | ||
| | |AddAOTBlock ||axObj.AddAOTBlock()|| Ahead of time compilation block ? | ||
|- | |- | ||
| | |Overlay ||axObj.Overlay()|| | ||
|- | |- | ||
! !! Other/Unknown/Standalone Commands !! | ! !! Other/Unknown/Standalone Commands !! | ||
Line 459: | Line 332: | ||
|- | |- | ||
|} | |} | ||
====Examples==== | ====Examples==== | ||
=====User made lua===== | |||
''A custom lua made by a user'' | |||
<pre> | <pre> | ||
apiRequest(0.1) | |||
local axObj = getAXObject() | local axObj = getAXObject() | ||
local emuObj = getEmuObject() | local emuObj = getEmuObject() | ||
local patcher = function() | local patcher = function() | ||
axobj.WriteMem32(0x0053d5d4,0x21c828bd) | |||
end | end | ||
Line 476: | Line 346: | ||
</pre> | </pre> | ||
=====Patches.lua===== | =====Patches.lua===== | ||
'''An official lua created by sony for Patapon 2''' | |||
<pre> | <pre> | ||
-- Lua 5.3 | -- Lua 5.3 | ||
Line 954: | Line 752: | ||
</pre> | </pre> | ||
== | ====LUA paths: ==== | ||
*XXXXYYYYY_patches.lua | |||
<pre> | <pre> | ||
Image0\patches\XXXXYYYYY_patches.lua | |||
</pre> | </pre> | ||
*XXXXYYYYY_features.lua | |||
<pre> | <pre> | ||
*Image0\feature_data\*XXXXYYYYY_features.lua | |||
</pre> | </pre> | ||
*XXXXYYYYY_tooling.lua | |||
<pre> | <pre> | ||
*Image0\tooling\XXXXYYYYY_tooling.lua | |||
</pre> | </pre> | ||
*XXXXYYYYY_trophies.lua | |||
<pre> | <pre> | ||
Image0\trophy_data\XXXXYYYYY_trophies.lua | |||
</pre> | </pre> | ||
==Information== | |||
====other==== | |||
*XXXXYYYYY_config.txt | |||
*videos/ | |||
*.mp4 | |||
*videos/%08x.mp4 | |||
*audio/%08x.ogg | |||
XXXXYYYYY_config.txt | |||
videos/ | |||
.mp4 | |||
videos/%08x.mp4 | |||
audio/%08x.ogg | |||
Paths: | Paths: | ||
/app0/ | */app0/ | ||
/download0/ | */download0/ | ||
/savedata | */savedata | ||
/host/ | */host/ | ||
/hostapp/ | */hostapp/ | ||
/data/ | */data/ | ||
== | ====sample==== | ||
<pre>; PS4 configuration file for PSPHD | <pre>; PS4 configuration file for PSPHD | ||
Line 1,666: | Line 836: | ||
; Parappa Alpha Hack | ; Parappa Alpha Hack | ||
--parappaalphahack=true | --parappaalphahack=true | ||
</pre> | |||
==NIDs in HLE== | ; Adjust overall volume level (does not include pad speaker volume). Range from 0.0 (min) to 1.0 (max) | ||
--volume="0.25"</pre> | |||
===NIDs in HLE=== | |||
=====HLEInterruptManager===== | |||
*sceKernelRegisterSubIntrHandler | |||
*sceKernelReleaseSubIntrHandler | |||
*sceKernelEnableSubIntr | |||
=====HLEStdioForUser===== | |||
*sceIoOpen | |||
*sceIoClose | |||
*sceIoRead | |||
*sceIoWrite | |||
*sceIoLseek | |||
*sceIoLseek32 | |||
*sceIoDopen | |||
*sceIoDread | |||
*sceIoDclose | |||
*sceIoChdir | |||
*sceIoGetstat | |||
*sceIoDevctl | |||
*sceIoRename | |||
*sceIoMkDir | |||
*sceIoChstat | |||
*sceIoRemove | |||
*sceIoRmdir | |||
*sceIoOpenAsync | |||
*sceIoReadAsync | |||
*sceIoIoctlAsync | |||
*sceIoWaitAsync | |||
*sceIoWaitAsyncCB | |||
*sceIoCloseAsync | |||
*sceIoSetAsyncCallback | |||
*sceIoPollAsync | |||
*sceIoLseekAsync | |||
*sceIoGetAsyncStat | |||
*asyncWaitTimerCallback | |||
*asyncCallbackTimerCallback | |||
*sceKernelStdin | |||
*sceKernelStdout | |||
*sceKernelStderr | |||
=====HLELoadExecForUser===== | |||
*sceKernelCpuSuspendIntr | |||
*sceKernelCpuResumeIntr | |||
*sceKernelIsCpuIntrEnable | |||
*sceKernelExitGame | |||
*sceKernelRegisterExitCallback | |||
*sceKernelLoadModule | |||
*sceKernelUnloadModule | |||
*sceKernelStartModule | |||
*sceKernelStopModule | |||
*sceKernelStopUnloadSelfModule | |||
*sceKernelGetModuleIdByAddress | |||
*sceKernelStopUnloadSelfModuleWithStatus | |||
*sceKernelGetModuleId | |||
=====HLEsceAtrac3plus===== | |||
*sceAtracReinit | |||
*sceAtracDecodeData | |||
*sceAtracGetNextDecodePosition | |||
*sceAtracSetHalfwayBufferAndGetID | |||
*sceAtracGetSoundSample | |||
*sceAtracGetStreamDataInfo | |||
*sceAtracGetRemainFrame | |||
*sceAtracSetLoopNum | |||
*sceAtracResetPlayPosition | |||
*sceAtracReleaseAtracID | |||
*sceAtracGetAtracID | |||
*sceAtracGetNextSample | |||
*sceAtracSetData | |||
*sceAtracAddStreamData | |||
=====HLEsceAudio===== | |||
*sceAudioChReserve | |||
*sceAudioChRelease | |||
*sceAudioOutputBlocking | |||
*sceAudioChangeChannelConfig | |||
*sceAudioGetChannelRestLength | |||
*sceAudioChangeChannelVolume | |||
*sceAudioSetChannelDataLen | |||
*sceAudioOutputPanned | |||
*sceAudioOutputPannedBlocking | |||
*sceAudioGetChannelRestLen | |||
*sceAudioOutput2Reserve | |||
*sceAudioOutput2OutputBlocking | |||
*sceAudioOutput2Release | |||
*outputCallback | |||
=====HLEsceCtrl===== | |||
*sceCtrlSetSamplingCycle | |||
*sceCtrlSetSamplingMode | |||
*sceCtrlReadBufferPositive | |||
*sceCtrlReadBufferNegative | |||
*sceCtrlPeekBufferPositive | |||
*sceCtrlPeekBufferNegative | |||
*sceCtrlGetIdleCancelThreshold | |||
*sceCtrlSetIdleCancelThreshold | |||
*sceCtrlReadLatch | |||
*sceCtrlPeekLatch | |||
*sampleControllerCallback | |||
*vibrationControllerCallback | |||
=====HLEsceDisplay===== | |||
*sceDisplaySetMode | |||
*sceDisplaySetFramebuf | |||
*sceDisplayGetFramebuf | |||
*sceDisplayGetVcount | |||
*sceDisplayWaitVblankStart | |||
*sceDisplayWaitVblankStartCB | |||
*sceDisplayGetCurrentHcount | |||
*sceDisplayGetAccumulatedHcount | |||
*sceDisplayGetFramePerSec | |||
*sceDisplayWaitVblank | |||
*sceDisplayWaitVblankCB | |||
*sceDisplayIsVblank | |||
*sceDisplaySetHoldMode | |||
*vblankStart | |||
*vblankEnd | |||
=====HLEsceGe_user===== | |||
*sceGeEdramGetAddr | |||
*sceGeEdramGetSize | |||
*sceGeGetCmd | |||
*sceGeGetMtx | |||
*sceGeListEnQueue | |||
*sceGeListEnQueueHead | |||
*sceGeListDeQueue | |||
*sceGeListSync | |||
*sceGeListUpdateStallAddr | |||
*sceGeDrawSync | |||
*sceGeSetCallback | |||
*sceGeUnsetCallback | |||
*sceGeBreak | |||
*sceGeContinue | |||
*interruptCallback | |||
=====HLEsceImpose===== | |||
*sceImposeGetLanguageMode | |||
*sceImposeSetLanguageMode | |||
*sceImposeSetUMDPopup | |||
=====HLEsceMpeg===== | |||
*sceMpegInit | |||
*sceMpegFinish | |||
*sceMpegCreate | |||
*sceMpegDelete | |||
*sceMpegQueryMemSize | |||
*sceMpegMallocAvcEsBuf | |||
*sceMpegFreeAvcEsBuf | |||
*sceMpegInitAu | |||
*sceMpegGetAvcAu | |||
*sceMpegGetAtracAu | |||
*sceMpegQueryAtracEsSize | |||
*sceMpegAtracDecode | |||
*sceMpegRingbufferQueryMemSize | |||
*sceMpegRingbufferConstruct | |||
*sceMpegRingbufferDestruct | |||
*sceMpegRingbufferPut | |||
*sceMpegRingbufferAvailableSize | |||
*sceMpegAvcCsc | |||
*sceMpegAvcDecodeMode | |||
*sceMpegAvcDecodeDetail | |||
*sceMpegAvcDecodeFlush | |||
*sceMpegAvcQueryYCbCrSize | |||
*sceMpegAvcInitYCbCr | |||
*sceMpegAvcDecodeYCbCr | |||
*sceMpegAvcDecodeStopYCbCr | |||
*sceMpegRegistStream | |||
*sceMpegUnRegistStream | |||
*sceMpegQueryStreamSize | |||
*sceMpegQueryStreamOffset | |||
*sceMpegFlushAllStream | |||
=====HLEsceNet===== | |||
*sceNetInit | |||
*sceNetInetGetsockopt | |||
*sceNetInetSetsockopt | |||
*sceNetInetGetErrno | |||
=====HLEscePower===== | |||
*scePowerRegisterCallback | |||
*scePowerUnregisterCallback | |||
*scePowerSetClockFrequency | |||
*scePowerSetCpuClockFrequency | |||
*scePowerSetBusClockFrequency | |||
=====HLEscePsmf===== | |||
*scePsmfVerifyPsmf | |||
*scePsmfSetPsmf | |||
*scePsmfSpecifyStreamWithStreamTypeNumber | |||
*scePsmfCheckEPmap | |||
*scePsmfGetVideoInfo | |||
*scePsmfGetNumberOfStreams | |||
*scePsmfGetNumberOfEPentries | |||
*scePsmfGetEPWithId | |||
*scePsmfGetPsmfVersion | |||
*scePsmfGetNumberOfSpecificStreams | |||
*scePsmfSpecifyStream | |||
*scePsmfGetCurrentStreamType | |||
=====HLEscePsmfPlayer===== | |||
*scePsmfPlayerCreate | |||
*scePsmfPlayerDelete | |||
*scePsmfPlayerSetPsmf | |||
*scePsmfPlayerReleasePsmf | |||
*scePsmfPlayerStart | |||
*scePsmfPlayerGetAudioOutSize | |||
*scePsmfPlayerStop | |||
*scePsmfPlayerUpdate | |||
*scePsmfPlayerGetVideoData | |||
*scePsmfPlayerGetAudioData | |||
*scePsmfPlayerGetCurrentStatus | |||
*scePsmfPlayerGetPsmfInfo | |||
*scePsmfPlayerConfigPlayer | |||
*scePsmfPlayerBreak | |||
*scePsmfPlayerChangePlayMode | |||
=====HLEsceRtc===== | |||
*sceRtcGetCurrentTick | |||
*sceRtcGetAccumulativeTime | |||
*sceRtcGetCurrentClockLocalTime | |||
=====HLEsceSasCore===== | |||
*sceSasInit | |||
*sceSasCore | |||
*sceSasCoreWithMix | |||
*sceSasGetEndFlag | |||
*sceSasGetPauseFlag | |||
*sceSasGetEnvelopeHeight | |||
*sceSasGetAllEnvelopeHeights | |||
*sceSasGetOutputMode | |||
*sceSasSetOutputMode | |||
*sceSasGetGrain | |||
*sceSasSetGrain | |||
*sceSasSetVoice | |||
*sceSasSetNoise | |||
*sceSasSetPitch | |||
*sceSasSetVolume | |||
*sceSasSetSimpleADSR | |||
*sceSasSetKeyOn | |||
*sceSasSetKeyOff | |||
*sceSasSetPause | |||
*sceSasSetSL | |||
*sceSasSetADSR | |||
*sceSasSetADSRMode | |||
*sceSasRevEVOL | |||
*sceSasRevType | |||
*sceSasRevParam | |||
*sceSasRevVON | |||
=====HLEsceSuspendForUser===== | |||
*sceKernelPowerTick | |||
*sceKernelPowerLock | |||
*sceKernelPowerUnlock | |||
*sceKernelVolatileMemTryLock | |||
*sceKernelVolatileMemUnlock | |||
*sceKernelVolatileMemLock | |||
=====HLEsceUmdUser===== | |||
*sceUmdActivate | |||
*sceUmdGetDriveStat | |||
*sceUmdCheckMedium | |||
*sceUmdRegisterUMDCallback | |||
*sceUmdUnRegisterUMDCallBack | |||
*sceUmdWaitDriveStat | |||
*sceUmdWaitDriveStatWithTimer | |||
*sceUmdWaitDriveStatCB | |||
*sceUmdCancelWaitDriveStat | |||
*_UmdWaitDriveTimeout | |||
=====HLEsceUtility===== | |||
*sceUtilityLoadModule | |||
*sceUtilityUnloadModule | |||
*sceUtilityLoadNetModule | |||
*sceUtilityUnloadNetModule | |||
*sceUtilityLoadAvModule | |||
*sceUtilityUnloadAvModule | |||
*sceUtilityGetSystemParamInt | |||
*sceUtilityGetSystemParamString | |||
*sceUtilitySavedataGetStatus | |||
*sceUtilitySavedataShutdownStart | |||
*sceUtilitySavedataInitStart | |||
*sceUtilitySavedataUpdate | |||
*sceUtilityMsgDialogGetStatus | |||
*sceUtilityMsgDialogShutdownStart | |||
*sceUtilityMsgDialogInitStart | |||
*sceUtilityMsgDialogUpdate | |||
*sceUtilityMsgDialogAbort | |||
*sceUtilityOskGetStatus | |||
*sceUtilityOskShutdownStart | |||
*sceUtilityOskInitStart | |||
*sceUtilityOskUpdate | |||
*saveDataUpdateCallback | |||
*oskUpdateCallback | |||
=====HLEsceWlanDrv===== | |||
*sceWlanGetSwitchState | |||
*sceWlanGetEtherAddr | |||
=====HLESysMemUserForUser===== | |||
*sceKernelMaxFreeMemSize | |||
*sceKernelTotalFreeMemSize | |||
*sceKernelQueryMemoryInfo | |||
*sceKernelDevkitVersion | |||
*sceKernelPrintf | |||
*sceKernelGetPTRIG | |||
*sceKernelSetPTRIG | |||
*sceKernelAllocPartitionMemory | |||
*sceKernelFreePartitionMemory | |||
*sceKernelGetBlockHeadAddr | |||
*sceKernelGetMemoryBlockAddr | |||
*sceKernelAllocMemoryBlock | |||
*sceKernelFreeMemoryBlock | |||
*sceKernelSetCompilerVersion | |||
*sceKernelGetCompiledSdkVersion | |||
*sceKernelSetCompiledSdkVersion | |||
*sceKernelSetCompiledSdkVersion370 | |||
*sceKernelSetCompiledSdkVersion380_390 | |||
*sceKernelSetCompiledSdkVersion395 | |||
*sceKernelSetCompiledSdkVersion401_402 | |||
*sceKernelSetCompiledSdkVersion500_505 | |||
*sceKernelSetCompiledSdkVersion507 | |||
*sceKernelSetCompiledSdkVersion600_602 | |||
*sceKernelSetCompiledSdkVersion603_605 | |||
*sceKernelSetCompiledSdkVersion606 | |||
*sceKernelSetUsersystemLibWork | |||
*sceKernelSysMemUserForUser_ACBD88CA | |||
*sceKernelSysMemUserForUser_D8DE5C1E | |||
*sceKernelSysMemUserForUser_945E45DA | |||
=====HLEThreadManForUser===== | |||
*sceKernelDelayThread | |||
*sceKernelDelayThreadCB | |||
*sceKernelCreateCallback | |||
*sceKernelDeleteCallback | |||
*sceKernelSleepThread | |||
*sceKernelSleepThreadCB | |||
*sceKernelWakeupThread | |||
*sceKernelCreateMsgPipe | |||
*sceKernelDeleteMsgPipe | |||
*sceKernelSendMsgPipe | |||
*sceKernelTrySendMsgPipe | |||
*sceKernelReceiveMsgPipe | |||
*sceKernelTryReceiveMsgPipe | |||
*sceKernelReferMsgPipeStatus | |||
*sceKernelCreateThread | |||
*sceKernelStartThread | |||
*sceKernelExitThread | |||
*sceKernelDeleteThread | |||
*sceKernelExitDeleteThread | |||
*sceKernelGetThreadExitStatus | |||
*sceKernelTerminateThread | |||
*sceKernelTerminateDeleteThread | |||
*sceKernelWaitThreadEnd | |||
*sceKernelWaitThreadEndCB | |||
*sceKernelRotateThreadReadyQueue | |||
*sceKernelReferThreadStatus | |||
*sceKernelSuspendDispatchThread | |||
*sceKernelResumeDispatchThread | |||
*sceKernelSuspendThread | |||
*sceKernelResumeThread | |||
*sceKernelCancelWakeupThread | |||
*sceKernelGetThreadStackFreeSize | |||
*sceKernelGetSystemTimeLow | |||
*sceKernelGetSystemTime | |||
*sceKernelGetSystemTimeWide | |||
*sceKernelGetThreadCurrentPriority | |||
*sceKernelChangeCurrentThreadAttr | |||
*sceKernelGetThreadId | |||
*sceKernelChangeThreadPriority | |||
*sceKernelReferThreadProfiler | |||
*sceKernelCheckCallback | |||
*sceKernelCancelSema | |||
*sceKernelCreateSema | |||
*sceKernelDeleteSema | |||
*sceKernelPollSema | |||
*sceKernelSignalSema | |||
*sceKernelReferSemaStatus | |||
*sceKernelWaitSema | |||
*sceKernelWaitSemaCB | |||
*sceKernelCreateFpl | |||
*sceKernelDeleteFpl | |||
*sceKernelAllocateFpl | |||
*sceKernelAllocateFplCB | |||
*sceKernelTryAllocateFpl | |||
*sceKernelFreeFpl | |||
*sceKernelCancelFpl | |||
*sceKernelReferFplStatus | |||
*sceKernelCreateVpl | |||
*sceKernelDeleteVpl | |||
*sceKernelAllocateVpl | |||
*sceKernelAllocateVplCB | |||
*sceKernelTryAllocateVpl | |||
*sceKernelFreeVpl | |||
*sceKernelCancelVpl | |||
*sceKernelReferVplStatus | |||
*sceKernelCreateEventFlag | |||
*sceKernelSetEventFlag | |||
*sceKernelDeleteEventFlag | |||
*sceKernelClearEventFlag | |||
*sceKernelWaitEventFlag | |||
*sceKernelWaitEventFlagCB | |||
*sceKernelPollEventFlag | |||
*sceKernelCancelEventFlag | |||
*sceKernelReferEventFlagStatus | |||
*sceKernelCreateMbx | |||
*sceKernelDeleteMbx | |||
*sceKernelSendMbx | |||
*sceKernelReceiveMbx | |||
*sceKernelReceiveMbxCB | |||
*sceKernelPollMbx | |||
*sceKernelCancelReceiveMbx | |||
*sceKernelReferMbxStatus | |||
*sceKernelCreateMutex | |||
*sceKernelDeleteMutex | |||
*sceKernelLockMutex | |||
*sceKernelLockMutexCB | |||
*sceKernelTryLockMutex | |||
*sceKernelUnlockMutex | |||
*sceKernelCancelMutex | |||
*sceKernelReferMutexStatus | |||
*_sceKernelDelayThreadCallback | |||
*_sceKernelWaitThreadEndTimeout | |||
*_sceKernelAllocateFplTimeout | |||
*_sceKernelAllocateVplTimeout | |||
*_sceKernelWaitEventFlagTimeout | |||
*_sceKernelMsgPipeTimeout | |||
*_sceKernelLockMutexTimeout | |||
=====HLEUtilsForKernel===== | |||
*sceKernelIcacheInvalidateRange | |||
=====HLEUtilsForUser===== | |||
sceKernelIcacheInvalidateRange | *sceKernelIcacheInvalidateRange | ||
*sceKernelDcacheInvalidateRange | |||
*sceKernelDcacheWritebackInvalidateRange | |||
*sceKernelDcacheWritebackAll | |||
*sceKernelDcacheWritebackRange | |||
*sceKernelDcacheWritebackInvalidateAll | |||
*sceKernelSetGPO | |||
*sceKernelGetGPI | |||
*sceKernelLibcClock | |||
*sceKernelLibcTime | |||
*sceKernelLibcGettimeofday 0x71EC4271 | |||
===Unimplemented functions=== | |||
*sceIoChdir() unimplemented, ignoring | |||
*sceIoChstat unimplemented, ignoring | |||
*sceKernelExitGame() unimplemented | |||
*sceKernelStopUnloadSelfModule() unimplemented | |||
*sceKernelStopUnloadSelfModuleWithStatus() unimplemented | |||
*sceGeGetMtx() unimplemented | |||
*sceGeListDeQueue() unimplemented | |||
*sceGeBreak unimplemented | |||
*sceGeContinue unimplemented | |||
*sceNetInetGetsockopt() unimplemented | |||
*sceNetInetSetsockopt() unimplemented | |||
*sceNetInetGetErrno() unimplemented | |||
*sceWlanGetEtherAddr unimplemented | |||
*sceKernelQueryMemoryInfo() unimplemented | |||
*sceKernelGetPTRIG() unimplemented | |||
*sceKernelSetPTRIG() unimplemented | |||
*sceKernelSetCompiledSdkVersion401_402() unimplemented | |||
*sceKernelSetCompiledSdkVersion507() unimplemented | |||
*sceKernelSetCompiledSdkVersion600_602() unimplemented | |||
*sceKernelSetCompiledSdkVersion603_605() unimplemented | |||
*sceKernelSetUsersystemLibWork() unimplemented | |||
*sceKernelSysMemUserForUser_ACBD88CA() unimplemented | |||
*sceKernelSysMemUserForUser_D8DE5C1E() unimplemented -- sceKernelSafetyCheck0 | |||
*sceKernelSysMemUserForUser_945E45DA() unimplemented | |||
*sceKernelTerminateDeleteThread() unimplemented | |||
*sceKernelCancelSema unimplemented | |||
*sceKernelCancelFpl unimplemented | |||
*sceKernelReferFplStatus unimplemented | |||
*sceKernelCancelVpl unimplemented | |||
*sceKernelCreateMbx unimplemented | |||
*sceKernelDeleteMbx unimplemented | |||
*sceKernelSendMbx unimplemented | |||
*sceKernelReceiveMbx unimplemented | |||
*sceKernelReceiveMbxCB unimplemented | |||
*sceKernelPollMbx unimplemented | |||
*sceKernelCancelReceiveMbx unimplemented | |||
*sceKernelReferMbxStatus unimplemented | |||
===Partially Supported=== | ===Partially Supported=== | ||
'''sceIoIoctl''' | |||
supported: | supported: | ||
* 0x1010005 (UMD file seek set) | |||
* 0x1020006 (Get UMD file start sector) | |||
'''sceIoDevctl''' | |||
supported: | supported: | ||
* 0x1F100A4 (Prepare UMD data into cache) | |||
* 0x2415821 (MScmRegisterMSInsertEjectCallback) | |||
* 0x2415822 (MScmUnregisterMSInsertEjectCallback) | |||
* 0x2025806 (Check if the device is inserted (mscmhc0)) | |||
* 0x2425823 (Check if FAT enabled) | |||
* 0x2415823 (Set FAT as enabled), supported | |||
==Restricted== | ===Restricted=== | ||
*scePowerRegisterCallback - ignoring | |||
scePowerRegisterCallback - ignoring | *scePowerUnregisterCallback - ignoring | ||
scePowerUnregisterCallback - ignoring | *scePowerSetClockFrequency - ignoring | ||
scePowerSetClockFrequency - ignoring | *scePowerSetCpuClockFrequency(%d) - ignoring | ||
scePowerSetCpuClockFrequency(%d) - ignoring | *scePowerSetBusClockFrequency(%d) - ignoring | ||
scePowerSetBusClockFrequency(%d) - ignoring | *sceUtilityMsgDialogInitStart ignored | ||
sceUtilityMsgDialogInitStart ignored | |||
=== | ===More Information:=== | ||
* https://forums.ppsspp.org/showthread.php?tid=1473 | * https://forums.ppsspp.org/showthread.php?tid=1473 | ||
* https://forums.ppsspp.org/showthread.php?tid=11961 | * https://forums.ppsspp.org/showthread.php?tid=11961 | ||
* https://gbatemp.net/threads/wip-psp-injection.503103/ | * https://gbatemp.net/threads/wip-psp-injection.503103/ | ||
* https://twitter.com/zordon605/status/993758941627772929 | * https://twitter.com/zordon605/status/993758941627772929 | ||
* https://forums.ppsspp.org/showthread.php?tid=22787 | * https://forums.ppsspp.org/showthread.php?tid=22787 | ||
** https://pastebin.com/CXRpVLdd (by [[User:DarkElement]]) | |||
* https://twitter.com/notzecoxao/status/993950722600460296 | * https://twitter.com/notzecoxao/status/993950722600460296 | ||
* https://twitter.com/ZiL0G80/status/994112249810866176 | * https://twitter.com/ZiL0G80/status/994112249810866176 |