mirror of
https://github.com/Fledge68/WiiFlow_Lite.git
synced 2024-11-24 04:09:15 +01:00
55e174b512
- If a 2 disc GC game is launched with Devolution, tell Devolution the location of the 2nd disc* * Use Wiiflow's game installer to backup your GC game - Made check for Devolution more safe - Added some neek2o magic (neek2o r90+ required*): * Added an exit option to neek2o * Added an option in gameconfig menu to launch vc/ww titles from wiiflow nand emulation in neek2o instead of cIOS
100 lines
2.5 KiB
C
100 lines
2.5 KiB
C
/***************************************************************************
|
|
* Copyright (C) 2012 OverjoY for Wiiflow
|
|
*
|
|
* This software is provided 'as-is', without any express or implied
|
|
* warranty. In no event will the authors be held liable for any
|
|
* damages arising from the use of this software.
|
|
*
|
|
* Permission is granted to anyone to use this software for any
|
|
* purpose, including commercial applications, and to alter it and
|
|
* redistribute it freely, subject to the following restrictions:
|
|
*
|
|
* 1. The origin of this software must not be misrepresented; you
|
|
* must not claim that you wrote the original software. If you use
|
|
* this software in a product, an acknowledgment in the product
|
|
* documentation would be appreciated but is not required.
|
|
*
|
|
* 2. Altered source versions must be plainly marked as such, and
|
|
* must not be misrepresented as being the original software.
|
|
*
|
|
* 3. This notice may not be removed or altered from any source
|
|
* distribution.
|
|
*
|
|
* nk.c
|
|
*
|
|
***************************************************************************/
|
|
|
|
#include <stdio.h>
|
|
#include <ogcsys.h>
|
|
#include <string.h>
|
|
|
|
#include "mem2.hpp"
|
|
#include "nk.h"
|
|
#include "cios.h"
|
|
#include "armboot.h"
|
|
|
|
s32 Launch_nk(u64 TitleID, const char *nandpath)
|
|
{
|
|
if(neek2o())
|
|
{
|
|
SYS_ResetSystem(SYS_RESTART, 0, 0);
|
|
return 1;
|
|
}
|
|
|
|
FILE *file = NULL;
|
|
long fsize;
|
|
|
|
file = fopen( "usb1:/sneek/kernel.bin", "rb" );
|
|
|
|
if(!file)
|
|
file = fopen( "sd:/sneek/kernel.bin", "rb" );
|
|
|
|
if(file)
|
|
{
|
|
fseek(file , 0 , SEEK_END);
|
|
fsize = ftell(file);
|
|
rewind(file);
|
|
fread((void *)0x91000000, 1, fsize, file);
|
|
DCFlushRange((void *)0x91000000, fsize);
|
|
}
|
|
else
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
fclose(file);
|
|
|
|
memcfg *MC = (memcfg*)MEM1_alloc(sizeof(memcfg));
|
|
if(MC == NULL)
|
|
return 0;
|
|
|
|
memset(MC, 0, sizeof(memcfg));
|
|
|
|
MC->magic = 0x666c6f77;
|
|
MC->titleid = TitleID;
|
|
|
|
if(nandpath != NULL)
|
|
{
|
|
strcpy(MC->nandpath, nandpath);
|
|
MC->config |= NCON_EXT_NAND_PATH;
|
|
}
|
|
|
|
memcpy((void *)0x81200000, MC, sizeof(memcfg));
|
|
DCFlushRange((void *)(0x81200000), sizeof(memcfg));
|
|
MEM1_free(MC);
|
|
|
|
/*** Thnx giantpune! ***/
|
|
void *mini = MEM1_memalign(32, armboot_size);
|
|
if(!mini)
|
|
return 0;
|
|
|
|
memcpy(mini, armboot, armboot_size);
|
|
DCFlushRange(mini, armboot_size);
|
|
*(u32*)0xc150f000 = 0x424d454d;
|
|
asm volatile("eieio");
|
|
*(u32*)0xc150f004 = MEM_VIRTUAL_TO_PHYSICAL(mini);
|
|
asm volatile("eieio");
|
|
IOS_ReloadIOS(0xfe);
|
|
MEM1_free(mini);
|
|
return 1;
|
|
} |