mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-10-22 02:39:05 +02:00
sceImpose: Report HOME to POPS from sceImpose_9BA61B49
In impose.prx (6.60), it returns a flag impose's thread sets each pass while HOME is held, but only if impose leaves HOME to the application. Its init does that for application types 0x300 (POPS) and 0x400, and sceImpose_9DBCE0C4 changes it. So games get 0, and the PS1 emulator, which polls it to open its in-game menu, gets HOME. It was unimplemented, so it returned SCE_KERNEL_ERROR_LIBRARY_NOT_YET_LINKED.
This commit is contained in:
1 parent
bfee675ba5
commit
478a1e6aa2
1 file changed
+11
-1
+11
-1
@@ -20,6 +20,8 @@
|
||||
#include "Core/HLE/HLE.h"
|
||||
#include "Core/HLE/FunctionWrappers.h"
|
||||
#include "Core/HLE/ErrorCodes.h"
|
||||
#include "Core/HLE/PopsBoot.h"
|
||||
#include "Core/HLE/sceCtrl.h"
|
||||
#include "Core/HLE/sceImpose.h"
|
||||
#include "Core/HLE/sceUtility.h"
|
||||
#include "Core/MIPS/MIPS.h"
|
||||
@@ -124,6 +126,14 @@ static u32 sceImposeGetBacklightOffTime() {
|
||||
return hleLogDebug(Log::sceUtility, backlightOffTime);
|
||||
}
|
||||
|
||||
// Whether HOME is held, when impose leaves HOME to the application. impose.prx's init does that
|
||||
// for POPS (and application type 0x400), so for a game it's always 0. The PS1 emulator polls it for
|
||||
// its menu.
|
||||
static u32 sceImpose_9BA61B49() {
|
||||
const bool held = PopsBootActive() && (__CtrlPeekButtons() & CTRL_HOME) != 0;
|
||||
return hleLogVerbose(Log::sceUtility, held ? 1 : 0);
|
||||
}
|
||||
|
||||
// OSD stuff? home button?
|
||||
const HLEFunction sceImpose[] = {
|
||||
{0X36AA6E91, &WrapU_UU<sceImposeSetLanguageMode>, "sceImposeSetLanguageMode", 'i', "ii"},
|
||||
@@ -139,7 +149,7 @@ const HLEFunction sceImpose[] = {
|
||||
{0XFCD44963, nullptr, "sceImpose_FCD44963", '?', "" },
|
||||
{0XA9884B00, nullptr, "sceImpose_A9884B00", '?', "" },
|
||||
{0XBB3F5DEC, nullptr, "sceImpose_BB3F5DEC", '?', "" },
|
||||
{0X9BA61B49, nullptr, "sceImpose_9BA61B49", '?', "" }, // jpcsp: isHomeButtonPressed() -> bool
|
||||
{0X9BA61B49, &WrapU_V<sceImpose_9BA61B49>, "sceImpose_9BA61B49", 'x', "" },
|
||||
{0XFF1A2F07, nullptr, "sceImpose_FF1A2F07", '?', "" },
|
||||
};
|
||||
|
||||
|
||||
Reference in new issue
Block a user