cubic ninja users rejoice
This commit is contained in:
parent
ef034a87d4
commit
1453d9adac
@ -9,46 +9,6 @@
|
|||||||
#include "util.h"
|
#include "util.h"
|
||||||
#include "luma.h"
|
#include "luma.h"
|
||||||
|
|
||||||
static inline void removeAccessToService(const char *service, char (*serviceAccessList)[8])
|
|
||||||
{
|
|
||||||
char ALIGN(8) name[8+1];
|
|
||||||
strncpy(name, service, 8);
|
|
||||||
name[8] = 0;
|
|
||||||
|
|
||||||
u32 j = 0;
|
|
||||||
for (u32 i = 0; i < 34 && *(u64 *)serviceAccessList[i] != 0; i++) {
|
|
||||||
if (*(u64 *)serviceAccessList[i] != *(u64 *)name) {
|
|
||||||
*(u64 *)serviceAccessList[j++] = *(u64 *)serviceAccessList[i];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (j < 34) {
|
|
||||||
memset(&serviceAccessList[j], 0, 8 * (34 - j));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void blacklistServices(u64 titleId, char (*serviceAccessList)[8])
|
|
||||||
{
|
|
||||||
if (osGetFirmVersion() < SYSTEM_VERSION(2, 51, 0) || (titleId >> 46) != 0x10) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
u32 titleUid = ((u32)titleId >> 8) & 0xFFFFF;
|
|
||||||
|
|
||||||
switch (titleUid) {
|
|
||||||
// Cubic Ninja
|
|
||||||
case 0x343:
|
|
||||||
case 0x465:
|
|
||||||
case 0x4B3:
|
|
||||||
removeAccessToService("http:C", serviceAccessList);
|
|
||||||
removeAccessToService("soc:U", serviceAccessList);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Note: official PM has two distinct functions for sysmodule vs. regular app. We refactor that into a single function.
|
// Note: official PM has two distinct functions for sysmodule vs. regular app. We refactor that into a single function.
|
||||||
static Result launchTitleImpl(Handle *debug, ProcessData **outProcessData, const FS_ProgramInfo *programInfo,
|
static Result launchTitleImpl(Handle *debug, ProcessData **outProcessData, const FS_ProgramInfo *programInfo,
|
||||||
const FS_ProgramInfo *programInfoUpdate, u32 launchFlags, ExHeader_Info *exheaderInfo);
|
const FS_ProgramInfo *programInfoUpdate, u32 launchFlags, ExHeader_Info *exheaderInfo);
|
||||||
@ -255,8 +215,6 @@ static Result launchTitleImpl(Handle *debug, ProcessData **outProcessData, const
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
blacklistServices(exheaderInfo->aci.local_caps.title_id, exheaderInfo->aci.local_caps.service_access);
|
|
||||||
|
|
||||||
if (launchFlags & PMLAUNCHFLAG_LOAD_DEPENDENCIES) {
|
if (launchFlags & PMLAUNCHFLAG_LOAD_DEPENDENCIES) {
|
||||||
TRYG(loadWithDependencies(debug, outProcessData, programHandle, programInfo, launchFlags, exheaderInfo), cleanup);
|
TRYG(loadWithDependencies(debug, outProcessData, programHandle, programInfo, launchFlags, exheaderInfo), cleanup);
|
||||||
// note: official pm doesn't terminate the process if this fails (dependency loading)...
|
// note: official pm doesn't terminate the process if this fails (dependency loading)...
|
||||||
|
Reference in New Issue
Block a user