mirror of
https://github.com/wiiu-env/wiiu-nanddumper-payload.git
synced 2024-11-13 07:05:12 +01:00
Fix running from browser_hax, still broken when using payload multi loader
This commit is contained in:
parent
82352eae9f
commit
7a663a151a
@ -68,7 +68,7 @@ EXPORT_DECL(int, OSTryLockMutex, void* mutex);
|
||||
//!----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
EXPORT_DECL(u64, OSGetTitleID, void);
|
||||
EXPORT_DECL(void, OSGetArgcArgv, int* argc, char*** argv);
|
||||
EXPORT_DECL(void, __Exit, void);
|
||||
EXPORT_DECL(void, __Exit, int);
|
||||
EXPORT_DECL(void, OSSavesDone_ReadyToRelease, void);
|
||||
EXPORT_DECL(void, OSFatal, const char* msg);
|
||||
EXPORT_DECL(void, OSSetExceptionCallback, u8 exceptionType, exception_callback newCallback);
|
||||
@ -155,7 +155,7 @@ void InitOSFunctionPointers(void)
|
||||
OS_FIND_EXPORT(coreinit_handle, __os_snprintf);
|
||||
OS_FIND_EXPORT(coreinit_handle, __gh_errno_ptr);
|
||||
|
||||
OSDynLoad_FindExport(coreinit_handle, 0, "_Exit", &__Exit);
|
||||
OSDynLoad_FindExport(coreinit_handle, 0, "exit", &__Exit);
|
||||
|
||||
OS_FIND_EXPORT(coreinit_handle, OSScreenInit);
|
||||
OS_FIND_EXPORT(coreinit_handle, OSScreenShutdown);
|
||||
|
@ -32,6 +32,8 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#define BUS_SPEED 248625000
|
||||
#define SECS_TO_TICKS(sec) (((unsigned long long)(sec)) * (BUS_SPEED/4))
|
||||
#define MILLISECS_TO_TICKS(msec) (SECS_TO_TICKS(msec) / 1000)
|
||||
@ -40,6 +42,9 @@ extern "C" {
|
||||
#define usleep(usecs) OSSleepTicks(MICROSECS_TO_TICKS(usecs))
|
||||
#define sleep(secs) OSSleepTicks(SECS_TO_TICKS(secs))
|
||||
|
||||
#define os_usleep(usecs) OSSleepTicks(MICROSECS_TO_TICKS(usecs))
|
||||
#define os_sleep(secs) OSSleepTicks(SECS_TO_TICKS(secs))
|
||||
|
||||
#define FLUSH_DATA_BLOCK(addr) asm volatile("dcbf 0, %0; sync" : : "r"(((addr) & ~31)))
|
||||
#define INVAL_DATA_BLOCK(addr) asm volatile("dcbi 0, %0; sync" : : "r"(((addr) & ~31)))
|
||||
|
||||
@ -110,7 +115,7 @@ extern int (* OSTryLockMutex)(void* mutex);
|
||||
//!----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
extern u64 (* OSGetTitleID)(void);
|
||||
extern void (* OSGetArgcArgv)(int* argc, char*** argv);
|
||||
extern void (* __Exit)(void);
|
||||
extern void (* __Exit)(int);
|
||||
extern void (* OSSavesDone_ReadyToRelease)(void);
|
||||
extern void (* OSFatal)(const char* msg);
|
||||
extern void (* DCFlushRange)(const void *addr, u32 length);
|
||||
|
@ -114,7 +114,7 @@ int _start(int argc, char **argv) {
|
||||
unsigned int bufferU32 = 0x4E800421;
|
||||
KernelWriteU32(repl_addr,bufferU32,&private_data);
|
||||
|
||||
return Menu_Main();
|
||||
return Menu_Main(argc, argv);
|
||||
}
|
||||
|
||||
/* Write a 32-bit word with kernel permissions */
|
||||
|
66
src/main.c
66
src/main.c
@ -43,10 +43,7 @@ bool CheckRunning() {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
int Menu_Main(void)
|
||||
{
|
||||
int Menu_Main(int argc, char ** argv){
|
||||
//!---------INIT---------
|
||||
InitOSFunctionPointers();
|
||||
InitSysFunctionPointers();
|
||||
@ -55,60 +52,37 @@ int Menu_Main(void)
|
||||
InitVPadFunctionPointers();
|
||||
InitProcUIFunctionPointers();
|
||||
|
||||
u64 currenTitleId = OSGetTitleID();
|
||||
|
||||
VPADInit();
|
||||
/*int forceMenu = 0;
|
||||
|
||||
{
|
||||
VPADData vpad;
|
||||
int vpadError = -1;
|
||||
VPADRead(0, &vpad, 1, &vpadError);
|
||||
|
||||
if(vpadError == 0)
|
||||
{
|
||||
forceMenu = (vpad.btns_d | vpad.btns_h) & VPAD_BUTTON_B;
|
||||
}
|
||||
}*/
|
||||
|
||||
//mount_sd_fat("sd");
|
||||
|
||||
cfw_config_t config;
|
||||
default_config(&config);
|
||||
//read_config(&config);
|
||||
|
||||
int launch = 1;
|
||||
//int launch = 1;
|
||||
ShowMenu(&config);
|
||||
|
||||
//if(forceMenu || config.directLaunch == 0)
|
||||
//{
|
||||
launch = ShowMenu(&config);
|
||||
//}
|
||||
|
||||
ExecuteIOSExploit(&config);
|
||||
|
||||
if (
|
||||
OSGetTitleID() == 0x000500101004A200L || // mii maker eur
|
||||
OSGetTitleID() == 0x000500101004A100L || // mii maker usa
|
||||
OSGetTitleID() == 0x000500101004A000L) { // mii maker jpn
|
||||
OSGetTitleID() == 0x000500101004A200L || // mii maker eur
|
||||
OSGetTitleID() == 0x000500101004A100L || // mii maker usa
|
||||
OSGetTitleID() == 0x000500101004A000L) { // mii maker jpn
|
||||
|
||||
// restart mii maker.
|
||||
OSForceFullRelaunch();
|
||||
SYSLaunchMenu();
|
||||
exit(0);
|
||||
} else {
|
||||
ProcUIInit(OSSavesDone_ReadyToRelease);
|
||||
|
||||
OSForceFullRelaunch();
|
||||
SYSLaunchMenu();
|
||||
|
||||
while (CheckRunning()) {
|
||||
// wait.
|
||||
OSSleepTicks(MILLISECS_TO_TICKS(100));
|
||||
}
|
||||
ProcUIShutdown();
|
||||
|
||||
return 0;
|
||||
return ( (int (*)(int, char **))(*(unsigned int*)0x1005E040) )(argc, argv);
|
||||
}
|
||||
|
||||
ProcUIInit(OSSavesDone_ReadyToRelease);
|
||||
|
||||
OSForceFullRelaunch();
|
||||
SYSLaunchMenu();
|
||||
|
||||
while (CheckRunning()) {
|
||||
log_printf_("check");
|
||||
// wait.
|
||||
OSSleepTicks(MILLISECS_TO_TICKS(100));
|
||||
}
|
||||
ProcUIShutdown();
|
||||
log_printf_("exit");
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -11,7 +11,7 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
//! C wrapper for our C++ functions
|
||||
int Menu_Main(void);
|
||||
int Menu_Main(int argc, char ** argv);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
@ -265,7 +265,7 @@ int ShowMenu(cfw_config_t * currentConfig)
|
||||
initScreen = 0;
|
||||
}
|
||||
|
||||
usleep(20000);
|
||||
os_usleep(20000);
|
||||
}
|
||||
|
||||
OSScreenShutdown();
|
||||
|
Loading…
Reference in New Issue
Block a user