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'''== | ||
<pre>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. with an official retroarch release coming our way it seems delving deeper into the PSPHD emulator and the PS1's new psplus emulator is pretty useless.</pre> | ||
== 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'''. | |||
<br>The rest of the | === config-emu-ps4.txt commands === | ||
''General purpose CLI commands, or unknown usage'' | |||
=== | |||
{| 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] | ||
|- | |- | ||
| --notrophies || || Enable/disable trophies|| | | --notrophies || || Enable/disable trophies|| | ||
|- | |- | ||
| --locale || || || | | --locale || || || | ||
Line 85: | Line 23: | ||
| --addon || || || | | --addon || || || | ||
|- | |- | ||
| --host || Sets host directory || --host="/hostapp/" | | --host || || Sets host directory || --host="/hostapp/" | ||
|- | |- | ||
| --loglevel || none, all, warn, info, error, debug, trace || debug logging | | --loglevel || none, all, warn, info, error, debug, trace || debug logging | ||
|- | |- | ||
| --xobuttonmode || oenter, ocancel || Switcher between x and circle button, made specifically for japanese gamers | | --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" | ||
Line 100: | Line 38: | ||
|- | |- | ||
| --samplesave || ? || ? || | | --samplesave || ? || ? || | ||
|- | |- | ||
| -- | | --vramcopyback || 0, 10000000 || || --vramcopyback=45 | ||
|- | |||
| --msxxadhoc || true?, false? || ad hoc support ? || | |||
|- | |||
|} | |||
====Graphics==== | |||
''Commands that serve the purpose of improving / fixing graphics and textures'' | |||
{| cellspacing="0" cellpadding="2" border="1" class="wikitable" style="text-align: center;" | |||
! Command !! Values !! Notes !! Usage | |||
|- | |||
| --locorocomeshsmooth || true, false || Custom mesh smoothing for loco roco games|| --locorocomeshsmooth=true | |||
|- | |- | ||
| -- | | --locorocomeshsmoothnonindexed || true, false || Non-indexed mesh smoothing ||--locorocomeshsmoothnonindexed=true | ||
|- | |- | ||
| -- | | --parappareplacecolor || The command expects 8 Hex values || (rgb?) || | ||
|- | |- | ||
| -- | | --parappajapanesefonthack || true?, false? || Enables Support For Japanese Fonts ??|| --parappajapanesefonthack=true | ||
|- | |- | ||
| -- | | --antialias || off, MSAA4x, SSAA4x|| Anti-aliasing options || --antialias=off | ||
|- | |- | ||
| -- | | --clamp-line-thickness-min || ? || ? || | ||
|- | |- | ||
| -- | | --clamp-line-thickness-max || ? || ? || | ||
|- | |- | ||
| -- | | --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 | | --texloadcores || 0, 100 || textures to load || texloadcores=2 | ||
|- | |||
| --depthscalehack || true?, false? || ||--depthscalehack=true | |||
|- | |- | ||
| --smoothlevel || 0, 100 || Mesh smoothing level? || --smoothlevel=0 | | --smoothlevel || 0, 100 || Mesh smoothing level? || --smoothlevel=0 | ||
Line 133: | Line 77: | ||
| --anisolevel || 0, 100 || Anisotropic filtering level?? || | | --anisolevel || 0, 100 || Anisotropic filtering level?? || | ||
|- | |- | ||
| -- | | --forcenobilinear || true, false || Turn bilinear filtering on/off, setting it to True will fix many graphical glitches in games that use 2D Images ||--forcenobilinear=true | ||
|- | |- | ||
| -- | |} | ||
==== Gamefixes / Hacks ==== | |||
''Commands that serve the purpose of fixing broken games'' | |||
{| cellspacing="0" cellpadding="2" border="1" class="wikitable" style="text-align: center;" | |||
! Command !! Values !! Notes !! Usage | |||
|- | |||
| --umddelay || ? || Seems to be I/O timing method, Some games need a delay to work properly. [https://github.com/hrydgard/ppsspp/issues/7647 More here] || | |||
|- | |- | ||
| -- | | --depthscalehack || true?, false? || ||--depthscalehack=true | ||
|- | |- | ||
| -- | | --godofwarhack || true?, false? || Seems specifically made for god of war, unknown effect || --godofwarhack=true | ||
|- | |- | ||
| -- | | --parappaalphahack || true?, false? || || --parappaalphahack=true | ||
|- | |- | ||
| | |} | ||
==== Speedhacks ==== | |||
| | ''Commands that imrpove the game's performance'' | ||
{| cellspacing="0" cellpadding="2" border="1" class="wikitable" style="text-align: center;" | |||
! Command !! Values !! Notes !! Usage | |||
|- | |- | ||
| --antialias || off || Turning Anti-Alias Off Improves Performance||--antialias=off | | --antialias || off || Turning Anti-Alias Off Improves Performance||--antialias=off | ||
Line 160: | Line 109: | ||
| --smoothlevel || 0 || Set mesh smooth level||--smoothlevel=0 | | --smoothlevel || 0 || Set mesh smooth level||--smoothlevel=0 | ||
|- | |- | ||
| --gputhread || true, false || | | --gputhread || true, false || Run the PSP GPU on a separate thread || --gputhread=true | ||
|- | |- | ||
| --texcachemode || patchworkheroes drawbounds, drawboundsloco, patchworkheroes, locoroco2, rondo || Set texture caching method ||--texcachemode=patchworkheroes | | --texcachemode || patchworkheroes drawbounds, drawboundsloco, patchworkheroes, locoroco2, rondo || Set texture caching method ||--texcachemode=patchworkheroes | ||
Line 166: | Line 115: | ||
| --anisolevel || 0, 100 || Anisotropic filtering level?? || | | --anisolevel || 0, 100 || Anisotropic filtering level?? || | ||
|- | |- | ||
| --present || vblankstart, setframebuf, drawsync|| | | --present || vblankstart, setframebuf, drawsync|| Display on draw to reduce latency ||--present=setframebuf | ||
|- | |- | ||
| --texrecent || true || Optimize texture hashes ||--texrecent=true | | --texrecent || true || Optimize texture hashes ||--texrecent=true | ||
|} | |} | ||
====Texture replacement==== | ====Texture replacement==== | ||
{| cellspacing="0" cellpadding="2" border="1" class="wikitable" style="text-align: center;" | {| cellspacing="0" cellpadding="2" border="1" class="wikitable" style="text-align: center;" | ||
Line 225: | Line 140: | ||
===XXXXYYYYY_patches.lua=== | ===XXXXYYYYY_patches.lua=== | ||
Your lua can be placed as '''Image0\Patches\XXXXYYYYY\XXXXYYYYY_patches.lua''' | |||
<br>'''Requires Cleanup'''. | |||
{| cellspacing="0" cellpadding="2" border="1" class="wikitable" style="text-align: center;" | |||
! Command !! Usage !! Notes - Example | |||
|- | |||
| apiRequest || '''apiRequest(<api version>)''' || example: apiRequest(0.1) | |||
Calling api is mandatory. some commands require higher versions. | |||
|- | |||
====Emulator commands==== | ====Emulator commands==== | ||
Line 232: | Line 155: | ||
|- | |- | ||
|getEmuObject || '''local emuObj = getEmuObject()''' || Required for all functions using emuObj | |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 198: | ||
| SaveState ||emuObj.SaveState()|| | | SaveState ||emuObj.SaveState()|| | ||
|- | |- | ||
| SetFDExtraDelay ||emuObj.SetFDExtraDelay()|| | | SetFDExtraDelay ||emuObj.SetFDExtraDelay()|| | ||
|- | |- | ||
| MeshSmooth ||emuObj.MeshSmooth()|| | | MeshSmooth ||emuObj.MeshSmooth()|| | ||
Line 292: | Line 231: | ||
|- | |- | ||
| PlayVideo||emuObj.PlayVideo()|| | | PlayVideo||emuObj.PlayVideo()|| | ||
|- | |||
| AddGPUHook ||emuObj.AddGPUHook()|| | |||
|- | |- | ||
| RescaleUForUpscale ||emuObj.RescaleUForUpscale()|| | | RescaleUForUpscale ||emuObj.RescaleUForUpscale()|| | ||
Line 304: | Line 245: | ||
|- | |- | ||
| 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 273: | ||
|- | |- | ||
| CopyFB || emuObj.CopyFB() || | | CopyFB || emuObj.CopyFB() || | ||
|- | |- | ||
| | |} | ||
====Allegrex commands==== | |||
{| cellspacing="0" cellpadding="2" border="1" class="wikitable" style="text-align: center;" | |||
! Command !! Usage !! Notes - Example | |||
|- | |||
| 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() || | ||
|- | |- | ||
| BurnCycles|| axobj.BurnCycles() || Could be an option to overclock cpu at a hooked offset | | BurnCycles|| axobj.BurnCycles() || Could be an option to overclock cpu at a hooked offset | ||
Line 395: | Line 320: | ||
|- | |- | ||
|Overlay ||axObj.Overlay()|| | |Overlay ||axObj.Overlay()|| | ||
|- | |- | ||
| gpr require || '''local gpr = require("ax-gpr-alias")''' || Required for any command that includes gpr registers | | gpr require || '''local gpr = require("ax-gpr-alias")''' || Required for any command that includes gpr registers | ||
|- | |- | ||
| GetGpr || axObj.GetGpr() || | | GetGpr || axObj.GetGpr() || | ||
Line 423: | Line 342: | ||
|- | |- | ||
|GetReg||axObj.GetReg()|| | |GetReg||axObj.GetReg()|| | ||
|- | |- | ||
! !! Other/Unknown/Standalone Commands !! | ! !! Other/Unknown/Standalone Commands !! | ||
Line 459: | Line 350: | ||
|- | |- | ||
|} | |} | ||
=====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 364: | ||
</pre> | </pre> | ||
======Patches.lua====== | |||
=====Patches.lua | '''An official lua created by sony for Patapon 2''' | ||
<pre> | <pre> | ||
-- Lua 5.3 | -- Lua 5.3 | ||
Line 952: | Line 768: | ||
end | end | ||
end) | end) | ||
</pre> | |||
====LUA paths: ==== | |||
*XXXXYYYYY_patches.lua | |||
<pre> | |||
Image0\patches\XXXXYYYYY_patches.lua | |||
</pre> | |||
*XXXXYYYYY_features.lua | |||
<pre> | |||
*Image0\feature_data\*XXXXYYYYY_features.lua | |||
</pre> | |||
*XXXXYYYYY_tooling.lua | |||
<pre> | |||
*Image0\tooling\XXXXYYYYY_tooling.lua | |||
</pre> | |||
*XXXXYYYYY_trophies.lua | |||
<pre> | |||
Image0\trophy_data\XXXXYYYYY_trophies.lua | |||
</pre> | </pre> | ||
== Emulators == | == Emulators == | ||
<pre>Every emulator is programmed in a | <pre>Every emulator is programmed in a different way, sometimes choosing the right emulator is the only possible way to fix a game, emulators are not provided pre-installed on your ps4, they have to be unpacked from your backup that's downloaded from the ps store from that specific game. this list includes The typical usage of some of The emulators. and by emulator we mean the Eboot.bin</pre> | ||
{| cellspacing="0" cellpadding="2" border="1" class="wikitable" style="text-align: center;" | {| cellspacing="0" cellpadding="2" border="1" class="wikitable" style="text-align: center;" | ||
! Emulator !! Usage !! API Version !! Similar emulators ( | ! Emulator !! Usage !! API Version !! Similar emulators (Usage) | ||
|- | |- | ||
| LocoRoco Midnight Carnival || ? || ? || ? | | LocoRoco Midnight Carnival || ? || ? || ? | ||
|- | |- | ||
| Patapon 2 || ? || ? || ? | | Patapon 2 || ? || ? || ? | ||
|- | |- | ||
| PaRappa the Rapper || | | PaRappa the Rapper || ? || ? || ? | ||
|- | |- | ||
|} | |} | ||
=== | ==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 867: | ||
; 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 |