mirror of
https://github.com/wiidev/usbloadergx.git
synced 2024-12-23 10:21:55 +01:00
* Added WII_Initialize call to IOS_ReloadIOSsafe to prevent DSI exception when calling WII_LaunchTitle
* Fixed check for valid cioses * Removed gprintf from MEM2
This commit is contained in:
parent
ab25485614
commit
efcc00b66b
@ -2,8 +2,8 @@
|
|||||||
<app version="1">
|
<app version="1">
|
||||||
<name> USB Loader GX</name>
|
<name> USB Loader GX</name>
|
||||||
<coder>USB Loader GX Team</coder>
|
<coder>USB Loader GX Team</coder>
|
||||||
<version>1.0 r848</version>
|
<version>1.0 r850</version>
|
||||||
<release_date>200912041511</release_date>
|
<release_date>200912050746</release_date>
|
||||||
<short_description>Loads games from USB-devices</short_description>
|
<short_description>Loads games from USB-devices</short_description>
|
||||||
<long_description>USB Loader GX is a libwiigui based USB iso loader with a wii-like GUI. You can install games to your HDDs and boot them with shorter loading times.
|
<long_description>USB Loader GX is a libwiigui based USB iso loader with a wii-like GUI. You can install games to your HDDs and boot them with shorter loading times.
|
||||||
The interactive GUI is completely controllable with WiiMote, Classic Controller or GC Controller.
|
The interactive GUI is completely controllable with WiiMote, Classic Controller or GC Controller.
|
||||||
|
@ -234,7 +234,7 @@ main(int argc, char *argv[]) {
|
|||||||
ios249rev = getIOSrev(0x00000001000000f9ll);
|
ios249rev = getIOSrev(0x00000001000000f9ll);
|
||||||
|
|
||||||
//if we don't like either of the cIOS then scram
|
//if we don't like either of the cIOS then scram
|
||||||
if (!(ios222rev==4 && (ios249rev>=9 && ios249rev<65535)))
|
if (!(ios222rev==4 || (ios249rev>=9 && ios249rev<65280)))
|
||||||
{
|
{
|
||||||
InitTextVideo();
|
InitTextVideo();
|
||||||
printf("\x1b[2J");
|
printf("\x1b[2J");
|
||||||
@ -249,12 +249,14 @@ main(int argc, char *argv[]) {
|
|||||||
} else {
|
} else {
|
||||||
printf("\n\n\n\tERROR!");
|
printf("\n\n\n\tERROR!");
|
||||||
printf("\n\tUSB Loader GX needs unstubbed cIOS 222 v4 or 249 v9+");
|
printf("\n\tUSB Loader GX needs unstubbed cIOS 222 v4 or 249 v9+");
|
||||||
printf("\n\n\tI found \n\t\t222 = %d%s",ios222rev,ios222rev==65535?" (Stubbed by 4.2 update)":"");
|
printf("\n\n\tI found \n\t\t222 = %d%s",ios222rev,ios222rev==65280?" (Stubbed by 4.2 update)":"");
|
||||||
printf("\n\t\t249 = %d%s",ios249rev,ios249rev==65535?" (Stubbed by 4.2 update)":"");
|
printf("\n\t\t249 = %d%s",ios249rev,ios249rev==65280?" (Stubbed by 4.2 update)":"");
|
||||||
printf("\n\n\tGo figure out how to get some cIOS action going on\n\tin your Wii and come back and see me.");
|
printf("\n\n\tGo figure out how to get some cIOS action going on\n\tin your Wii and come back and see me.");
|
||||||
|
|
||||||
sleep(15);
|
sleep(15);
|
||||||
printf("\n\n\tBye");
|
printf("\n\n\tBye");
|
||||||
|
|
||||||
|
USBDevice_deInit();
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
|
|
||||||
#include "mem2.h"
|
#include "mem2.h"
|
||||||
#include "mem2alloc.h"
|
#include "mem2alloc.h"
|
||||||
#include "gecko.h"
|
|
||||||
|
|
||||||
#include <malloc.h>
|
#include <malloc.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
@ -72,18 +71,14 @@ void *__wrap_malloc(size_t size)
|
|||||||
{
|
{
|
||||||
p = MEM2_alloc(size);
|
p = MEM2_alloc(size);
|
||||||
if (p != 0) {
|
if (p != 0) {
|
||||||
gprintf("Malloc of size %d returns address in MEM2\n", size);
|
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
gprintf("Malloc of size %d returns address in MEM1\n", size);
|
|
||||||
return __real_malloc(size);
|
return __real_malloc(size);
|
||||||
}
|
}
|
||||||
p = __real_malloc(size);
|
p = __real_malloc(size);
|
||||||
if (p != 0) {
|
if (p != 0) {
|
||||||
gprintf("Malloc of size %d returns address in MEM1\n", size);
|
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
gprintf("Malloc of size %d returns address in MEM2\n", size);
|
|
||||||
return MEM2_alloc(size);
|
return MEM2_alloc(size);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -95,24 +90,18 @@ void *__wrap_calloc(size_t n, size_t size)
|
|||||||
p = MEM2_alloc(n * size);
|
p = MEM2_alloc(n * size);
|
||||||
if (p != 0)
|
if (p != 0)
|
||||||
{
|
{
|
||||||
gprintf("Calloc of amount %d, size %d returns address in MEM2\n", n, size);
|
|
||||||
memset(p, 0, n * size);
|
memset(p, 0, n * size);
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
gprintf("Calloc of amount %d, size %d returns address in MEM1\n", n, size);
|
|
||||||
return __real_calloc(n, size);
|
return __real_calloc(n, size);
|
||||||
}
|
}
|
||||||
p = __real_calloc(n, size);
|
p = __real_calloc(n, size);
|
||||||
if (p != 0) {
|
if (p != 0) {
|
||||||
gprintf("Calloc of amount %d, size %d returns address in MEM1\n", n, size);
|
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
p = MEM2_alloc(n * size);
|
p = MEM2_alloc(n * size);
|
||||||
if (p != 0) {
|
if (p != 0) {
|
||||||
gprintf("Calloc of amount %d, size %d returns address in MEM2\n", n, size);
|
|
||||||
memset(p, 0, n * size);
|
memset(p, 0, n * size);
|
||||||
} else {
|
|
||||||
gprintf("Calloc of amount %d, size %d returns NULL\n", n, size);
|
|
||||||
}
|
}
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
@ -126,35 +115,24 @@ void *__wrap_memalign(size_t a, size_t size)
|
|||||||
{
|
{
|
||||||
p = MEM2_alloc(size);
|
p = MEM2_alloc(size);
|
||||||
if (p != 0) {
|
if (p != 0) {
|
||||||
gprintf("Memalign in blocks of %d, size %d returns address in MEM2\n", a, size);
|
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
gprintf("Memalign in blocks of %d, size %d returns address in MEM1\n", a, size);
|
|
||||||
return __real_memalign(a, size);
|
return __real_memalign(a, size);
|
||||||
}
|
}
|
||||||
p = __real_memalign(a, size);
|
p = __real_memalign(a, size);
|
||||||
if (p != 0 || a > 32 || 32 % a != 0) {
|
if (p != 0 || a > 32 || 32 % a != 0) {
|
||||||
gprintf("Memalign in blocks of %d, size %d returns address in MEM1\n", a, size);
|
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
p = MEM2_alloc(size);
|
return MEM2_alloc(size);
|
||||||
if (p != 0) {
|
|
||||||
gprintf("Memalign in blocks of %d, size %d returns address in MEM2\n", a, size);
|
|
||||||
} else {
|
|
||||||
gprintf("Memalign in blocks of %d, size %d returns NULL\n", a, size);
|
|
||||||
}
|
|
||||||
return p;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void __wrap_free(void *p)
|
void __wrap_free(void *p)
|
||||||
{
|
{
|
||||||
if (((u32)p & 0x10000000) != 0) {
|
if (((u32)p & 0x10000000) != 0) {
|
||||||
gprintf("Free pointer in address in MEM2\n");
|
|
||||||
MEM2_free(p);
|
MEM2_free(p);
|
||||||
} else {
|
} else {
|
||||||
gprintf("Free pointer in address in MEM1\n");
|
|
||||||
__real_free(p);
|
__real_free(p);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -167,12 +145,10 @@ void *__wrap_realloc(void *p, size_t size)
|
|||||||
{
|
{
|
||||||
n = MEM2_realloc(p, size);
|
n = MEM2_realloc(p, size);
|
||||||
if (n != 0) {
|
if (n != 0) {
|
||||||
gprintf("Realloc of size %d returns memory in MEM2\n", size);
|
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
n = __real_malloc(size);
|
n = __real_malloc(size);
|
||||||
if (n == 0) {
|
if (n == 0) {
|
||||||
gprintf("Realloc of size %d returns NULL\n", size);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (p != 0)
|
if (p != 0)
|
||||||
@ -180,18 +156,15 @@ void *__wrap_realloc(void *p, size_t size)
|
|||||||
memcpy(n, p, MEM2_usableSize(p) < size ? MEM2_usableSize(p) : size);
|
memcpy(n, p, MEM2_usableSize(p) < size ? MEM2_usableSize(p) : size);
|
||||||
MEM2_free(p);
|
MEM2_free(p);
|
||||||
}
|
}
|
||||||
gprintf("Realloc of size %d returns memory in MEM1\n", size);
|
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
// ptr from malloc
|
// ptr from malloc
|
||||||
n = __real_realloc(p, size);
|
n = __real_realloc(p, size);
|
||||||
if (n != 0) {
|
if (n != 0) {
|
||||||
gprintf("Realloc of size %d returns memory in MEM1\n", size);
|
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
n = MEM2_alloc(size);
|
n = MEM2_alloc(size);
|
||||||
if (n == 0) {
|
if (n == 0) {
|
||||||
gprintf("Realloc of size %d returns memory in MEM2\n", size);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (p != 0)
|
if (p != 0)
|
||||||
@ -199,7 +172,6 @@ void *__wrap_realloc(void *p, size_t size)
|
|||||||
memcpy(n, p, __real_malloc_usable_size(p) < size ? __real_malloc_usable_size(p) : size);
|
memcpy(n, p, __real_malloc_usable_size(p) < size ? __real_malloc_usable_size(p) : size);
|
||||||
__real_free(p);
|
__real_free(p);
|
||||||
}
|
}
|
||||||
gprintf("Realloc of size %d returns memory in MEM2\n", size);
|
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -255,6 +255,10 @@ s32 IOS_ReloadIOSsafe(int ios)
|
|||||||
if (ios250rev >= 0 && !(ios250rev>=9 && ios250rev<65280))return -2;
|
if (ios250rev >= 0 && !(ios250rev>=9 && ios250rev<65280))return -2;
|
||||||
}
|
}
|
||||||
|
|
||||||
return IOS_ReloadIOS(ios);
|
s32 r = IOS_ReloadIOS(ios);
|
||||||
|
if (r >= 0) {
|
||||||
|
WII_Initialize();
|
||||||
|
}
|
||||||
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user