void gamePluginEntry() { u32 ret, key; INIT_SHARED_FUNC(plgGetIoBase, 8); // wait for game starts up (5 seconds) svc_sleepThread(5000000000); if (((NS_CONFIG*)(NS_CONFIGURE_ADDR))->sharedFunc[8]) { isNewNtr = 1; } else { isNewNtr = 0; } if (isNewNtr) { IoBasePad = plgGetIoBase(IO_BASE_PAD); } while (1) { svc_sleepThread(100000000); key = getKey(); if (key == BUTTON_R) { u16 *id = (u16*)0x16F4C460; char id_str[5] = {0}; for (size_t i = 0; i < 4u; ++i) { id_str[i] = (char)READU16(id + i); } u16 result = (u16)strtoul(id_str, NULL, 16); WRITEU16(0x15FBEDD0, result); waitKeyUp(); } } }
void gamePluginEntry() { u32 ret, key; u32 i = 0; INIT_SHARED_FUNC(plgGetIoBase, 8); INIT_SHARED_FUNC(copyRemoteMemory, 9); svc_sleepThread(5000000000); mode = 0; if (((NS_CONFIG*)(NS_CONFIGURE_ADDR))->sharedFunc[8]) { isNewNtr = 1; } else { isNewNtr = 0; } if (isNewNtr) { IoBasePad = plgGetIoBase(IO_BASE_PAD); } rtReleaseLock(&((NS_CONFIG*)(NS_CONFIGURE_ADDR))->debugBufferLock); plgGetSharedServiceHandle("fs:USER", &fsUserHandle); updateMenu(); current_menu = BASE; init_menu(); create_base_menu(); show_menu(BASE); while (1) { key = getKey(); if (key == BUTTON_ST + BUTTON_SE) { show_menu(BASE); waitKeyUp(); } key_trigger(key); svc_sleepThread(10000000); scanCheatMenu(); do_all_action(); } }
u32 updateMenu() { PLGLOADER_INFO *plgLoaderInfo = (void*)0x07000000; plgLoaderInfo->gamePluginPid = getCurrentProcessId(); plgLoaderInfo->gamePluginMenuAddr = (u32)&gamePluginMenu; u32 ret = 0; u32 hProcess; u32 homeMenuPid = plgGetIoBase(5); if (homeMenuPid == 0) { return 1; } ret = svc_openProcess(&hProcess, homeMenuPid); if (ret != 0) { return ret; } copyRemoteMemory(hProcess, &(plgLoaderInfo->gamePluginPid), CURRENT_PROCESS_HANDLE, &(plgLoaderInfo->gamePluginPid), 8); final: