mirror of
https://github.com/wiidev/usbloadergx.git
synced 2024-11-25 12:46:53 +01:00
*Added WiiPowers Brawl+ stuff (Thanks WiiPower)
This commit is contained in:
parent
e4b48d2712
commit
714aafa267
File diff suppressed because one or more lines are too long
@ -1362,15 +1362,7 @@ int MenuDiscList() {
|
||||
sprintf(nipple, "%s %s",nipple,tr("does not exist! Loading game without cheats."));
|
||||
WindowPrompt(tr("Error"),nipple,NULL,NULL,NULL,NULL,170);
|
||||
} else {
|
||||
fseek (exeFile, 0, SEEK_END);
|
||||
long size=ftell (exeFile);
|
||||
rewind (exeFile);
|
||||
fclose(exeFile);
|
||||
if (size>MAX_GCT_SIZE) {
|
||||
gprintf("\n\tgct is too big");
|
||||
sprintf(nipple, "%s %s",nipple,tr("contains over 255 lines of code. It will produce unexpected results."));
|
||||
WindowPrompt(tr("Error"),nipple,NULL,NULL,NULL,NULL,170);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -1429,15 +1421,7 @@ int MenuDiscList() {
|
||||
sprintf(nipple, "%s %s",nipple,tr("does not exist! Loading game without cheats."));
|
||||
WindowPrompt(tr("Error"),nipple,NULL,NULL,NULL,NULL,170);
|
||||
} else {
|
||||
fseek (exeFile, 0, SEEK_END);
|
||||
long size=ftell (exeFile);
|
||||
rewind (exeFile);
|
||||
fclose(exeFile);
|
||||
if (size>MAX_GCT_SIZE) {
|
||||
gprintf("\n\tgct file is too big");
|
||||
sprintf(nipple, "%s %s",nipple,tr("contains over 255 lines of code. It will produce unexpected results."));
|
||||
WindowPrompt(tr("Error"),nipple,NULL,NULL,NULL,NULL,170);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
277
source/patches/codehandler.h
Normal file
277
source/patches/codehandler.h
Normal file
@ -0,0 +1,277 @@
|
||||
/*
|
||||
This file was autogenerated by raw2c.
|
||||
Visit http://www.devkitpro.org
|
||||
*/
|
||||
|
||||
const unsigned char codehandler[] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x27, 0x74, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0x21, 0xff, 0x58, 0x90, 0x01, 0x00, 0x08,
|
||||
0x7c, 0x08, 0x02, 0xa6, 0x90, 0x01, 0x00, 0xac, 0x7c, 0x00, 0x00, 0x26, 0x90, 0x01, 0x00, 0x0c,
|
||||
0x7c, 0x09, 0x02, 0xa6, 0x90, 0x01, 0x00, 0x10, 0x7c, 0x01, 0x02, 0xa6, 0x90, 0x01, 0x00, 0x14,
|
||||
0xbc, 0x61, 0x00, 0x18, 0x7f, 0x20, 0x00, 0xa6, 0x63, 0x3a, 0x20, 0x00, 0x73, 0x5a, 0xf9, 0xff,
|
||||
0x7f, 0x40, 0x01, 0x24, 0xd8, 0x41, 0x00, 0x98, 0xd8, 0x61, 0x00, 0xa0, 0x3f, 0xe0, 0x80, 0x00,
|
||||
0x3e, 0x80, 0xcc, 0x00, 0xa3, 0x94, 0x40, 0x10, 0x63, 0x95, 0x00, 0xff, 0xb2, 0xb4, 0x40, 0x10,
|
||||
0x48, 0x00, 0x06, 0x55, 0x3a, 0xa0, 0x00, 0x00, 0x3a, 0xc0, 0x00, 0x19, 0x3a, 0xe0, 0x00, 0xd0,
|
||||
0x3f, 0x00, 0xcd, 0x00, 0x63, 0xf2, 0x27, 0x74, 0x80, 0x01, 0x00, 0xac, 0x90, 0x12, 0x00, 0x04,
|
||||
0x92, 0xb8, 0x64, 0x3c, 0x48, 0x00, 0x04, 0x2d, 0x41, 0x82, 0x05, 0xa4, 0x2c, 0x1d, 0x00, 0x04,
|
||||
0x40, 0x80, 0x00, 0x10, 0x2c, 0x1d, 0x00, 0x01, 0x41, 0x80, 0x05, 0x94, 0x48, 0x00, 0x03, 0x4c,
|
||||
0x41, 0x82, 0x04, 0xf0, 0x2c, 0x1d, 0x00, 0x06, 0x41, 0x82, 0x00, 0x8c, 0x2c, 0x1d, 0x00, 0x07,
|
||||
0x41, 0x82, 0x03, 0x30, 0x2c, 0x1d, 0x00, 0x08, 0x41, 0x82, 0x05, 0x80, 0x2c, 0x1d, 0x00, 0x09,
|
||||
0x41, 0x82, 0x00, 0xa0, 0x2c, 0x1d, 0x00, 0x10, 0x41, 0x82, 0x00, 0x98, 0x2c, 0x1d, 0x00, 0x2f,
|
||||
0x41, 0x82, 0x00, 0x70, 0x2c, 0x1d, 0x00, 0x30, 0x41, 0x82, 0x00, 0x78, 0x2c, 0x1d, 0x00, 0x38,
|
||||
0x41, 0x82, 0x05, 0x28, 0x2c, 0x1d, 0x00, 0x40, 0x41, 0x82, 0x03, 0x40, 0x2c, 0x1d, 0x00, 0x41,
|
||||
0x41, 0x82, 0x03, 0x58, 0x2c, 0x1d, 0x00, 0x44, 0x41, 0x82, 0x00, 0x68, 0x2c, 0x1d, 0x00, 0x50,
|
||||
0x41, 0x82, 0x00, 0x20, 0x2c, 0x1d, 0x00, 0x60, 0x41, 0x82, 0x00, 0x24, 0x2c, 0x1d, 0x00, 0x89,
|
||||
0x41, 0x82, 0x00, 0x50, 0x2c, 0x1d, 0x00, 0x99, 0x41, 0x82, 0x05, 0x0c, 0x48, 0x00, 0x05, 0x10,
|
||||
0x80, 0x72, 0x00, 0x00, 0x48, 0x00, 0x04, 0x29, 0x48, 0x00, 0x05, 0x04, 0x48, 0x00, 0x05, 0x89,
|
||||
0x48, 0x00, 0x04, 0xfc, 0x38, 0x80, 0x00, 0x01, 0x90, 0x92, 0x00, 0x00, 0x48, 0x00, 0x04, 0xf0,
|
||||
0x48, 0x00, 0x04, 0x09, 0x3a, 0x00, 0x00, 0xa0, 0x63, 0xec, 0x27, 0x98, 0x48, 0x00, 0x03, 0x14,
|
||||
0x38, 0x60, 0x01, 0x20, 0x63, 0xec, 0x27, 0x98, 0x48, 0x00, 0x03, 0xc9, 0x48, 0x00, 0x04, 0xd0,
|
||||
0x2f, 0x1d, 0x00, 0x10, 0x2e, 0x9d, 0x00, 0x44, 0x63, 0xe4, 0x1a, 0xb4, 0x3c, 0x60, 0x80, 0x00,
|
||||
0x60, 0x63, 0x03, 0x00, 0x48, 0x00, 0x05, 0x09, 0x38, 0x63, 0x0a, 0x00, 0x48, 0x00, 0x05, 0x01,
|
||||
0x38, 0x63, 0x06, 0x00, 0x48, 0x00, 0x04, 0xf9, 0x63, 0xec, 0x27, 0x88, 0x92, 0xac, 0x00, 0x00,
|
||||
0x92, 0xac, 0x00, 0x04, 0x92, 0xac, 0x00, 0x08, 0x63, 0xe4, 0x27, 0x98, 0x81, 0x24, 0x00, 0x18,
|
||||
0x80, 0x72, 0x00, 0x00, 0x2c, 0x03, 0x00, 0x02, 0x40, 0x82, 0x00, 0x0c, 0x41, 0x96, 0x00, 0x0c,
|
||||
0x48, 0x00, 0x00, 0x20, 0x38, 0x60, 0x00, 0x00, 0x90, 0x6c, 0x00, 0x0c, 0x40, 0x82, 0x00, 0x14,
|
||||
0x40, 0x96, 0x00, 0x10, 0x61, 0x29, 0x04, 0x00, 0x91, 0x24, 0x00, 0x18, 0x48, 0x00, 0x02, 0x14,
|
||||
0x55, 0x29, 0x05, 0xa8, 0x91, 0x24, 0x00, 0x18, 0x41, 0x96, 0x04, 0x54, 0x41, 0x9a, 0x00, 0x08,
|
||||
0x39, 0x8c, 0x00, 0x04, 0x38, 0x60, 0x00, 0x04, 0x48, 0x00, 0x03, 0x09, 0x40, 0x99, 0x00, 0x10,
|
||||
0x39, 0x8c, 0x00, 0x04, 0x38, 0x60, 0x00, 0x04, 0x48, 0x00, 0x02, 0xf9, 0x63, 0xe4, 0x27, 0x88,
|
||||
0x80, 0x64, 0x00, 0x00, 0x80, 0x84, 0x00, 0x04, 0x7c, 0x72, 0xfb, 0xa6, 0x7c, 0x95, 0xfb, 0xa6,
|
||||
0x48, 0x00, 0x04, 0x1c, 0x7c, 0x32, 0x43, 0xa6, 0x7c, 0x3a, 0x02, 0xa6, 0x7c, 0x73, 0x43, 0xa6,
|
||||
0x7c, 0x7b, 0x02, 0xa6, 0x54, 0x63, 0x05, 0xa8, 0x90, 0x60, 0x27, 0xb0, 0x54, 0x63, 0x06, 0x1e,
|
||||
0x60, 0x63, 0x20, 0x00, 0x7c, 0x7b, 0x03, 0xa6, 0x3c, 0x60, 0x80, 0x00, 0x60, 0x63, 0x1a, 0xe8,
|
||||
0x7c, 0x7a, 0x03, 0xa6, 0x4c, 0x00, 0x00, 0x64, 0x3c, 0x60, 0x80, 0x00, 0x60, 0x63, 0x27, 0x98,
|
||||
0x90, 0x23, 0x00, 0x14, 0x7c, 0x61, 0x1b, 0x78, 0x7c, 0x73, 0x42, 0xa6, 0xbc, 0x41, 0x00, 0x24,
|
||||
0x7c, 0x24, 0x0b, 0x78, 0x7c, 0x32, 0x42, 0xa6, 0x90, 0x04, 0x00, 0x1c, 0x90, 0x24, 0x00, 0x20,
|
||||
0x7c, 0x68, 0x02, 0xa6, 0x90, 0x64, 0x00, 0x9c, 0x7c, 0x60, 0x00, 0x26, 0x90, 0x64, 0x00, 0x00,
|
||||
0x7c, 0x61, 0x02, 0xa6, 0x90, 0x64, 0x00, 0x04, 0x7c, 0x69, 0x02, 0xa6, 0x90, 0x64, 0x00, 0x08,
|
||||
0x7c, 0x72, 0x02, 0xa6, 0x90, 0x64, 0x00, 0x0c, 0x7c, 0x73, 0x02, 0xa6, 0x90, 0x64, 0x00, 0x10,
|
||||
0x39, 0x20, 0x00, 0x00, 0x7d, 0x32, 0xfb, 0xa6, 0x7d, 0x35, 0xfb, 0xa6, 0x3c, 0xa0, 0x80, 0x00,
|
||||
0x60, 0xa5, 0x1b, 0x70, 0x3f, 0xe0, 0xd0, 0x04, 0x63, 0xff, 0x00, 0xa0, 0x93, 0xe5, 0x00, 0x00,
|
||||
0x7c, 0x00, 0x28, 0x6c, 0x7c, 0x00, 0x04, 0xac, 0x7c, 0x00, 0x2f, 0xac, 0x4c, 0x00, 0x01, 0x2c,
|
||||
0xd0, 0x04, 0x00, 0xa0, 0x3b, 0xff, 0x00, 0x04, 0x3f, 0xff, 0x00, 0x20, 0x57, 0xf0, 0x01, 0x4b,
|
||||
0x41, 0x82, 0xff, 0xdc, 0x3f, 0xe0, 0x80, 0x00, 0x63, 0xe5, 0x27, 0x88, 0x82, 0x05, 0x00, 0x00,
|
||||
0x82, 0x25, 0x00, 0x04, 0x82, 0x65, 0x00, 0x0c, 0x2c, 0x13, 0x00, 0x00, 0x41, 0x82, 0x00, 0x74,
|
||||
0x2c, 0x13, 0x00, 0x02, 0x40, 0x82, 0x00, 0x18, 0x81, 0x24, 0x00, 0x14, 0x39, 0x33, 0x00, 0x03,
|
||||
0x91, 0x25, 0x00, 0x00, 0x91, 0x25, 0x00, 0x0c, 0x48, 0x00, 0x00, 0x6c, 0x7c, 0x10, 0x98, 0x00,
|
||||
0x41, 0x82, 0x00, 0x38, 0x7c, 0x11, 0x98, 0x00, 0x41, 0x82, 0x00, 0x30, 0x7d, 0x30, 0x8a, 0x14,
|
||||
0x91, 0x25, 0x00, 0x0c, 0x82, 0x05, 0x00, 0x08, 0x2c, 0x10, 0x00, 0x00, 0x41, 0x82, 0x00, 0x48,
|
||||
0x80, 0x64, 0x00, 0x10, 0x7c, 0x10, 0x18, 0x00, 0x40, 0x82, 0x00, 0x10, 0x3a, 0x00, 0x00, 0x00,
|
||||
0x92, 0x05, 0x00, 0x08, 0x48, 0x00, 0x00, 0x30, 0x3a, 0x20, 0x00, 0x00, 0x92, 0x25, 0x00, 0x0c,
|
||||
0x81, 0x24, 0x00, 0x18, 0x61, 0x29, 0x04, 0x00, 0x91, 0x24, 0x00, 0x18, 0x48, 0x00, 0x00, 0x30,
|
||||
0x7e, 0x12, 0xfb, 0xa6, 0x7e, 0x35, 0xfb, 0xa6, 0x39, 0x20, 0x00, 0x01, 0x91, 0x25, 0x00, 0x0c,
|
||||
0x48, 0x00, 0x00, 0x1c, 0x38, 0xa0, 0x00, 0x02, 0x63, 0xe4, 0x27, 0x74, 0x90, 0xa4, 0x00, 0x00,
|
||||
0x38, 0x60, 0x00, 0x11, 0x48, 0x00, 0x01, 0xb9, 0x4b, 0xff, 0xfc, 0x71, 0x7c, 0x20, 0x00, 0xa6,
|
||||
0x54, 0x21, 0x07, 0xfa, 0x54, 0x21, 0x04, 0x5e, 0x7c, 0x20, 0x01, 0x24, 0x63, 0xe1, 0x27, 0x98,
|
||||
0x80, 0x61, 0x00, 0x00, 0x7c, 0x6f, 0xf1, 0x20, 0x80, 0x61, 0x00, 0x14, 0x7c, 0x7a, 0x03, 0xa6,
|
||||
0x80, 0x61, 0x00, 0x18, 0x7c, 0x7b, 0x03, 0xa6, 0x80, 0x61, 0x00, 0x9c, 0x7c, 0x68, 0x03, 0xa6,
|
||||
0xb8, 0x41, 0x00, 0x24, 0x80, 0x01, 0x00, 0x1c, 0x80, 0x21, 0x00, 0x20, 0x4c, 0x00, 0x00, 0x64,
|
||||
0x92, 0xb2, 0x00, 0x00, 0x48, 0x00, 0x02, 0x54, 0x2e, 0x9d, 0x00, 0x02, 0x38, 0x60, 0x00, 0x08,
|
||||
0x63, 0xec, 0x27, 0x7c, 0x48, 0x00, 0x00, 0xfd, 0x80, 0xac, 0x00, 0x00, 0x80, 0x6c, 0x00, 0x04,
|
||||
0x98, 0x65, 0x00, 0x00, 0x41, 0x94, 0x00, 0x10, 0xb0, 0x65, 0x00, 0x00, 0x41, 0x96, 0x00, 0x08,
|
||||
0x90, 0x65, 0x00, 0x00, 0x7c, 0x00, 0x28, 0xac, 0x7c, 0x00, 0x04, 0xac, 0x7c, 0x00, 0x2f, 0xac,
|
||||
0x4c, 0x00, 0x01, 0x2c, 0x48, 0x00, 0x02, 0x08, 0x48, 0x00, 0x01, 0x21, 0x38, 0x60, 0x00, 0x04,
|
||||
0x63, 0xec, 0x27, 0x7c, 0x48, 0x00, 0x00, 0xbd, 0x82, 0x0c, 0x00, 0x00, 0x3d, 0x80, 0x80, 0x00,
|
||||
0x61, 0x8c, 0x28, 0xb8, 0x48, 0x00, 0x00, 0x1c, 0x48, 0x00, 0x01, 0x01, 0x38, 0x60, 0x00, 0x08,
|
||||
0x63, 0xec, 0x27, 0x7c, 0x48, 0x00, 0x00, 0x9d, 0x82, 0x0c, 0x00, 0x04, 0x81, 0x8c, 0x00, 0x00,
|
||||
0x63, 0xfb, 0x27, 0x84, 0x3a, 0x20, 0x0f, 0x80, 0x48, 0x00, 0x02, 0x39, 0x41, 0x82, 0x00, 0x20,
|
||||
0x7e, 0x23, 0x8b, 0x78, 0x48, 0x00, 0x00, 0x7d, 0x48, 0x00, 0x00, 0xd1, 0x41, 0x82, 0xff, 0xfc,
|
||||
0x7d, 0x8c, 0x72, 0x14, 0x35, 0x6b, 0xff, 0xff, 0x41, 0x81, 0xff, 0xe8, 0x80, 0x7b, 0x00, 0x00,
|
||||
0x2c, 0x03, 0x00, 0x00, 0x41, 0x82, 0x00, 0x08, 0x48, 0x00, 0x00, 0x59, 0x7c, 0x00, 0x60, 0xac,
|
||||
0x7c, 0x00, 0x04, 0xac, 0x7c, 0x00, 0x67, 0xac, 0x4c, 0x00, 0x01, 0x2c, 0x48, 0x00, 0x01, 0x80,
|
||||
0x7f, 0xc8, 0x02, 0xa6, 0x3c, 0x60, 0xa0, 0x00, 0x48, 0x00, 0x00, 0x15, 0x76, 0x03, 0x08, 0x00,
|
||||
0x56, 0x1d, 0x86, 0x3e, 0x7f, 0xc8, 0x03, 0xa6, 0x4e, 0x80, 0x00, 0x20, 0x92, 0xf8, 0x68, 0x14,
|
||||
0x90, 0x78, 0x68, 0x24, 0x92, 0xd8, 0x68, 0x20, 0x80, 0xb8, 0x68, 0x20, 0x70, 0xa5, 0x00, 0x01,
|
||||
0x40, 0x82, 0xff, 0xf8, 0x82, 0x18, 0x68, 0x24, 0x90, 0xb8, 0x68, 0x14, 0x4e, 0x80, 0x00, 0x20,
|
||||
0x7d, 0x48, 0x02, 0xa6, 0x7c, 0x69, 0x03, 0xa6, 0x39, 0xc0, 0x00, 0x00, 0x48, 0x00, 0x00, 0x79,
|
||||
0x48, 0x00, 0x00, 0x75, 0x4b, 0xff, 0xff, 0xad, 0x41, 0x82, 0xff, 0xf4, 0x7f, 0xae, 0x61, 0xae,
|
||||
0x39, 0xce, 0x00, 0x01, 0x42, 0x00, 0xff, 0xe8, 0x7d, 0x48, 0x03, 0xa6, 0x4e, 0x80, 0x00, 0x20,
|
||||
0x7d, 0x48, 0x02, 0xa6, 0x7c, 0x69, 0x03, 0xa6, 0x39, 0xc0, 0x00, 0x00, 0x7c, 0x6c, 0x70, 0xae,
|
||||
0x48, 0x00, 0x00, 0x1d, 0x41, 0x82, 0xff, 0xf8, 0x39, 0xce, 0x00, 0x01, 0x42, 0x00, 0xff, 0xf0,
|
||||
0x7d, 0x48, 0x03, 0xa6, 0x4e, 0x80, 0x00, 0x20, 0x38, 0x60, 0x00, 0xaa, 0x7f, 0xc8, 0x02, 0xa6,
|
||||
0x54, 0x63, 0xa0, 0x16, 0x64, 0x63, 0xb0, 0x00, 0x3a, 0xc0, 0x00, 0x19, 0x3a, 0xe0, 0x00, 0xd0,
|
||||
0x3f, 0x00, 0xcd, 0x00, 0x4b, 0xff, 0xff, 0x69, 0x56, 0x03, 0x37, 0xff, 0x7f, 0xc8, 0x03, 0xa6,
|
||||
0x4e, 0x80, 0x00, 0x20, 0x7f, 0xc8, 0x02, 0xa6, 0x3c, 0x60, 0xd0, 0x00, 0x4b, 0xff, 0xff, 0x51,
|
||||
0x56, 0x03, 0x37, 0xff, 0x41, 0x82, 0xff, 0xf4, 0x7f, 0xc8, 0x03, 0xa6, 0x4e, 0x80, 0x00, 0x20,
|
||||
0x4b, 0xff, 0xff, 0xb9, 0x38, 0x60, 0x00, 0x08, 0x63, 0xec, 0x27, 0x7c, 0x4b, 0xff, 0xff, 0x55,
|
||||
0x80, 0xac, 0x00, 0x04, 0x81, 0x8c, 0x00, 0x00, 0x63, 0xfb, 0x27, 0x84, 0x62, 0xb1, 0xf8, 0x00,
|
||||
0x7e, 0x0c, 0x28, 0x50, 0x48, 0x00, 0x00, 0xed, 0x41, 0x81, 0x00, 0x10, 0x82, 0x3b, 0x00, 0x00,
|
||||
0x2c, 0x11, 0x00, 0x00, 0x41, 0x82, 0x00, 0x68, 0x7e, 0x23, 0x8b, 0x78, 0x4b, 0xff, 0xff, 0x55,
|
||||
0x4b, 0xff, 0xff, 0xa5, 0x4b, 0xff, 0xff, 0xa1, 0x4b, 0xff, 0xfe, 0xd9, 0x41, 0x82, 0xff, 0xf4,
|
||||
0x2c, 0x1d, 0x00, 0xcc, 0x41, 0x82, 0x00, 0x48, 0x2c, 0x1d, 0x00, 0xbb, 0x41, 0x82, 0xff, 0xdc,
|
||||
0x2c, 0x1d, 0x00, 0xaa, 0x40, 0x82, 0xff, 0xdc, 0x7d, 0x8c, 0x72, 0x14, 0x35, 0x6b, 0xff, 0xff,
|
||||
0x41, 0x80, 0x00, 0x2c, 0x4b, 0xff, 0xff, 0xb4, 0x7e, 0xb5, 0xfb, 0xa6, 0x7e, 0xb2, 0xfb, 0xa6,
|
||||
0x63, 0xe4, 0x27, 0x98, 0x81, 0x24, 0x00, 0x18, 0x55, 0x29, 0x05, 0xa8, 0x91, 0x24, 0x00, 0x18,
|
||||
0x48, 0x00, 0x00, 0x0c, 0x38, 0x60, 0x00, 0x80, 0x4b, 0xff, 0xff, 0x25, 0x80, 0x92, 0x00, 0x00,
|
||||
0x2c, 0x04, 0x00, 0x00, 0x40, 0x82, 0xfa, 0x50, 0xb3, 0x94, 0x40, 0x10, 0xc8, 0x41, 0x00, 0x98,
|
||||
0xc8, 0x61, 0x00, 0xa0, 0x7f, 0x20, 0x00, 0xa6, 0x80, 0x01, 0x00, 0xac, 0x7c, 0x08, 0x03, 0xa6,
|
||||
0x80, 0x01, 0x00, 0x0c, 0x7c, 0x0f, 0xf1, 0x20, 0x80, 0x01, 0x00, 0x10, 0x7c, 0x09, 0x03, 0xa6,
|
||||
0x80, 0x01, 0x00, 0x14, 0x7c, 0x01, 0x03, 0xa6, 0xb8, 0x61, 0x00, 0x18, 0x80, 0x01, 0x00, 0x08,
|
||||
0x38, 0x21, 0x00, 0xa8, 0x4c, 0x00, 0x01, 0x2c, 0x4e, 0x80, 0x00, 0x20, 0x7e, 0x23, 0x20, 0x50,
|
||||
0x3c, 0xa0, 0x48, 0x00, 0x52, 0x25, 0x01, 0xba, 0x90, 0xa3, 0x00, 0x00, 0x7c, 0x00, 0x18, 0xac,
|
||||
0x7c, 0x00, 0x04, 0xac, 0x7c, 0x00, 0x1f, 0xac, 0x4c, 0x00, 0x01, 0x2c, 0x4e, 0x80, 0x00, 0x20,
|
||||
0x7d, 0x70, 0x8b, 0xd7, 0x7d, 0x4b, 0x89, 0xd6, 0x7d, 0x4a, 0x80, 0x50, 0x91, 0x5b, 0x00, 0x00,
|
||||
0x4e, 0x80, 0x00, 0x20, 0x7f, 0xa8, 0x02, 0xa6, 0x3d, 0xe0, 0x80, 0x00, 0x61, 0xef, 0x28, 0xb8,
|
||||
0x63, 0xe7, 0x18, 0x08, 0x3c, 0xc0, 0x80, 0x00, 0x7c, 0xd0, 0x33, 0x78, 0x39, 0x00, 0x00, 0x00,
|
||||
0x3c, 0x60, 0x00, 0xd0, 0x60, 0x63, 0xc0, 0xde, 0x80, 0x8f, 0x00, 0x00, 0x7c, 0x03, 0x20, 0x00,
|
||||
0x40, 0x82, 0x00, 0x18, 0x80, 0x8f, 0x00, 0x04, 0x7c, 0x03, 0x20, 0x00, 0x40, 0x82, 0x00, 0x0c,
|
||||
0x39, 0xef, 0x00, 0x08, 0x48, 0x00, 0x00, 0x0c, 0x7f, 0xa8, 0x03, 0xa6, 0x4e, 0x80, 0x00, 0x20,
|
||||
0x80, 0x6f, 0x00, 0x00, 0x80, 0x8f, 0x00, 0x04, 0x39, 0xef, 0x00, 0x08, 0x71, 0x09, 0x00, 0x01,
|
||||
0x2f, 0x89, 0x00, 0x00, 0x39, 0x20, 0x00, 0x00, 0x54, 0x6a, 0x1f, 0x7e, 0x54, 0x65, 0x3f, 0x7e,
|
||||
0x74, 0x6b, 0x10, 0x00, 0x54, 0x63, 0x01, 0xfe, 0x40, 0x82, 0x00, 0x0c, 0x54, 0xcc, 0x00, 0x0c,
|
||||
0x48, 0x00, 0x00, 0x08, 0x7e, 0x0c, 0x83, 0x78, 0x2e, 0x05, 0x00, 0x00, 0x2c, 0x0a, 0x00, 0x01,
|
||||
0x41, 0xa0, 0x00, 0x2c, 0x41, 0xa2, 0x00, 0xe4, 0x2c, 0x0a, 0x00, 0x03, 0x41, 0xa0, 0x01, 0xac,
|
||||
0x41, 0x82, 0x02, 0x50, 0x2c, 0x0a, 0x00, 0x05, 0x41, 0x80, 0x02, 0xd4, 0x41, 0xa2, 0x04, 0xe0,
|
||||
0x2c, 0x0a, 0x00, 0x07, 0x41, 0xa0, 0x05, 0x0c, 0x48, 0x00, 0x05, 0xf0, 0x7d, 0x8c, 0x1a, 0x14,
|
||||
0x2c, 0x05, 0x00, 0x03, 0x41, 0x82, 0x00, 0x48, 0x41, 0x81, 0x00, 0x60, 0x40, 0xbe, 0xff, 0x84,
|
||||
0x2e, 0x05, 0x00, 0x01, 0x41, 0x91, 0x00, 0x2c, 0x54, 0x8a, 0x84, 0x3e, 0x41, 0x92, 0x00, 0x10,
|
||||
0x7c, 0x89, 0x61, 0xae, 0x39, 0x29, 0x00, 0x01, 0x48, 0x00, 0x00, 0x0c, 0x7c, 0x89, 0x63, 0x2e,
|
||||
0x39, 0x29, 0x00, 0x02, 0x35, 0x4a, 0xff, 0xff, 0x40, 0xa0, 0xff, 0xe4, 0x4b, 0xff, 0xff, 0x54,
|
||||
0x55, 0x8c, 0x00, 0x3a, 0x90, 0x8c, 0x00, 0x00, 0x4b, 0xff, 0xff, 0x48, 0x7c, 0x89, 0x23, 0x78,
|
||||
0x40, 0x9e, 0x04, 0xc8, 0x35, 0x29, 0xff, 0xff, 0x41, 0x80, 0x04, 0xc0, 0x7c, 0xa9, 0x78, 0xae,
|
||||
0x7c, 0xa9, 0x61, 0xae, 0x4b, 0xff, 0xff, 0xf0, 0x39, 0xef, 0x00, 0x08, 0x40, 0xbe, 0xff, 0x24,
|
||||
0x80, 0xaf, 0xff, 0xf8, 0x81, 0x6f, 0xff, 0xfc, 0x54, 0xb1, 0x04, 0x3e, 0x54, 0xaa, 0x85, 0x3e,
|
||||
0x54, 0xa5, 0x27, 0x3e, 0x2e, 0x85, 0x00, 0x01, 0x41, 0x96, 0x00, 0x10, 0x41, 0xb5, 0x00, 0x14,
|
||||
0x7c, 0x89, 0x61, 0xae, 0x48, 0x00, 0x00, 0x10, 0x7c, 0x89, 0x63, 0x2e, 0x48, 0x00, 0x00, 0x08,
|
||||
0x7c, 0x89, 0x61, 0x2e, 0x7c, 0x84, 0x5a, 0x14, 0x7d, 0x29, 0x8a, 0x14, 0x35, 0x4a, 0xff, 0xff,
|
||||
0x40, 0x80, 0xff, 0xd4, 0x4b, 0xff, 0xfe, 0xdc, 0x54, 0x69, 0x07, 0xff, 0x41, 0x82, 0x00, 0x10,
|
||||
0x55, 0x08, 0xf8, 0x7e, 0x71, 0x09, 0x00, 0x01, 0x2f, 0x89, 0x00, 0x00, 0x2e, 0x85, 0x00, 0x04,
|
||||
0x2d, 0x8a, 0x00, 0x05, 0x51, 0x08, 0x08, 0x3c, 0x40, 0x9e, 0x00, 0x78, 0x41, 0x8d, 0x04, 0xb8,
|
||||
0x7d, 0x8c, 0x1a, 0x14, 0x41, 0x8c, 0x00, 0x0c, 0x41, 0x94, 0x00, 0x30, 0x48, 0x00, 0x00, 0x1c,
|
||||
0x40, 0x94, 0x00, 0x10, 0x55, 0x8c, 0x00, 0x3a, 0x81, 0x6c, 0x00, 0x00, 0x48, 0x00, 0x00, 0x1c,
|
||||
0x55, 0x8c, 0x00, 0x3c, 0xa1, 0x6c, 0x00, 0x00, 0x7c, 0x89, 0x20, 0xf8, 0x55, 0x29, 0x84, 0x3e,
|
||||
0x7d, 0x6b, 0x48, 0x38, 0x54, 0x84, 0x04, 0x3e, 0x7f, 0x0b, 0x20, 0x40, 0x70, 0xa9, 0x00, 0x03,
|
||||
0x41, 0x82, 0x00, 0x18, 0x2c, 0x09, 0x00, 0x02, 0x41, 0x82, 0x00, 0x18, 0x41, 0x81, 0x00, 0x1c,
|
||||
0x40, 0x9a, 0x00, 0x20, 0x48, 0x00, 0x00, 0x18, 0x41, 0x9a, 0x00, 0x18, 0x48, 0x00, 0x00, 0x10,
|
||||
0x41, 0x99, 0x00, 0x10, 0x48, 0x00, 0x00, 0x08, 0x41, 0x98, 0x00, 0x08, 0x61, 0x08, 0x00, 0x01,
|
||||
0x40, 0x8e, 0xfe, 0x40, 0x41, 0x94, 0xfe, 0x3c, 0x81, 0x6f, 0xff, 0xf8, 0x40, 0x9e, 0x00, 0x20,
|
||||
0x70, 0x6c, 0x00, 0x08, 0x41, 0x82, 0x00, 0x0c, 0x71, 0x0c, 0x00, 0x01, 0x41, 0x82, 0x00, 0x10,
|
||||
0x39, 0x8b, 0x00, 0x10, 0x51, 0x8b, 0x03, 0x36, 0x48, 0x00, 0x00, 0x08, 0x55, 0x6b, 0x07, 0x16,
|
||||
0x91, 0x6f, 0xff, 0xf8, 0x4b, 0xff, 0xfe, 0x0c, 0x40, 0xbe, 0xfe, 0x08, 0x54, 0x69, 0x16, 0xba,
|
||||
0x54, 0x6e, 0x87, 0xfe, 0x2d, 0x8e, 0x00, 0x00, 0x2e, 0x05, 0x00, 0x04, 0x70, 0xae, 0x00, 0x03,
|
||||
0x2e, 0x8e, 0x00, 0x02, 0x41, 0x94, 0x00, 0x14, 0x41, 0x96, 0x00, 0x50, 0x7c, 0x64, 0x07, 0x34,
|
||||
0x7c, 0x84, 0x7a, 0x14, 0x48, 0x00, 0x00, 0x68, 0x54, 0x65, 0xa7, 0xff, 0x41, 0x82, 0x00, 0x0c,
|
||||
0x7d, 0x27, 0x48, 0x2e, 0x7c, 0x84, 0x4a, 0x14, 0x41, 0x8e, 0x00, 0x08, 0x7c, 0x8c, 0x22, 0x14,
|
||||
0x2e, 0x8e, 0x00, 0x01, 0x41, 0x96, 0x00, 0x08, 0x80, 0x84, 0x00, 0x00, 0x54, 0x63, 0x67, 0xff,
|
||||
0x41, 0x82, 0x00, 0x3c, 0x40, 0x90, 0x00, 0x0c, 0x7c, 0x84, 0x32, 0x14, 0x48, 0x00, 0x00, 0x30,
|
||||
0x7c, 0x84, 0x82, 0x14, 0x48, 0x00, 0x00, 0x28, 0x54, 0x65, 0xa7, 0xff, 0x41, 0x82, 0x00, 0x0c,
|
||||
0x7d, 0x27, 0x48, 0x2e, 0x7c, 0x84, 0x4a, 0x14, 0x40, 0x90, 0x00, 0x0c, 0x7c, 0xcc, 0x21, 0x2e,
|
||||
0x4b, 0xff, 0xfd, 0x80, 0x7e, 0x0c, 0x21, 0x2e, 0x4b, 0xff, 0xfd, 0x78, 0x40, 0x90, 0x00, 0x0c,
|
||||
0x7c, 0x86, 0x23, 0x78, 0x4b, 0xff, 0xfd, 0x6c, 0x7c, 0x90, 0x23, 0x78, 0x4b, 0xff, 0xfd, 0x64,
|
||||
0x54, 0x89, 0x1e, 0x78, 0x39, 0x29, 0x00, 0x40, 0x2c, 0x05, 0x00, 0x02, 0x41, 0x80, 0x00, 0x48,
|
||||
0x54, 0x6b, 0x50, 0x03, 0x41, 0x82, 0x00, 0x14, 0x41, 0x81, 0x00, 0x08, 0x48, 0x00, 0x00, 0x10,
|
||||
0x41, 0xbe, 0xfd, 0x40, 0x48, 0x00, 0x00, 0x08, 0x40, 0xbe, 0xfd, 0x38, 0x2c, 0x05, 0x00, 0x03,
|
||||
0x41, 0x81, 0x00, 0x10, 0x41, 0xa2, 0x00, 0x10, 0x7d, 0xe7, 0x48, 0x2e, 0x4b, 0xff, 0xfd, 0x24,
|
||||
0x7d, 0xe7, 0x49, 0x2e, 0x7c, 0x64, 0x07, 0x34, 0x54, 0x84, 0x1a, 0x78, 0x7d, 0xef, 0x22, 0x14,
|
||||
0x4b, 0xff, 0xfd, 0x10, 0x40, 0xbe, 0xfd, 0x0c, 0x7c, 0xa7, 0x4a, 0x14, 0x40, 0x92, 0x00, 0x14,
|
||||
0x54, 0x64, 0x04, 0x3e, 0x91, 0xe5, 0x00, 0x00, 0x90, 0x85, 0x00, 0x04, 0x4b, 0xff, 0xfc, 0xf4,
|
||||
0x81, 0x25, 0x00, 0x04, 0x2c, 0x09, 0x00, 0x00, 0x41, 0xa2, 0xfc, 0xe8, 0x39, 0x29, 0xff, 0xff,
|
||||
0x91, 0x25, 0x00, 0x04, 0x81, 0xe5, 0x00, 0x00, 0x4b, 0xff, 0xfc, 0xd8, 0x40, 0xbe, 0xfc, 0xd4,
|
||||
0x54, 0x6b, 0x16, 0xba, 0x7f, 0x47, 0x5a, 0x14, 0x81, 0x3a, 0x00, 0x00, 0x54, 0x6e, 0x67, 0xbe,
|
||||
0x41, 0x92, 0x00, 0x84, 0x2e, 0x05, 0x00, 0x05, 0x40, 0x90, 0x01, 0x74, 0x2e, 0x05, 0x00, 0x03,
|
||||
0x40, 0x90, 0x00, 0x90, 0x2e, 0x05, 0x00, 0x01, 0x54, 0x65, 0x87, 0xff, 0x41, 0x82, 0x00, 0x08,
|
||||
0x7c, 0x8c, 0x22, 0x14, 0x2f, 0x0e, 0x00, 0x01, 0x40, 0x92, 0x00, 0x24, 0x41, 0xb9, 0x00, 0x18,
|
||||
0x41, 0x9a, 0x00, 0x0c, 0x88, 0x84, 0x00, 0x00, 0x48, 0x00, 0x00, 0xf8, 0xa0, 0x84, 0x00, 0x00,
|
||||
0x48, 0x00, 0x00, 0xf0, 0x80, 0x84, 0x00, 0x00, 0x48, 0x00, 0x00, 0xe8, 0x54, 0x73, 0xe5, 0x3e,
|
||||
0x41, 0xb9, 0x00, 0x20, 0x41, 0x9a, 0x00, 0x10, 0x99, 0x24, 0x00, 0x00, 0x38, 0x84, 0x00, 0x01,
|
||||
0x48, 0x00, 0x00, 0x18, 0xb1, 0x24, 0x00, 0x00, 0x38, 0x84, 0x00, 0x02, 0x48, 0x00, 0x00, 0x0c,
|
||||
0x91, 0x24, 0x00, 0x00, 0x38, 0x84, 0x00, 0x04, 0x36, 0x73, 0xff, 0xff, 0x40, 0x80, 0xff, 0xd4,
|
||||
0x4b, 0xff, 0xfc, 0x40, 0x54, 0x65, 0x87, 0xff, 0x41, 0x82, 0x00, 0x08, 0x7c, 0x84, 0x62, 0x14,
|
||||
0x71, 0xc5, 0x00, 0x01, 0x41, 0x82, 0x00, 0x9c, 0x7c, 0x84, 0x4a, 0x14, 0x48, 0x00, 0x00, 0x94,
|
||||
0x54, 0x6a, 0x87, 0xbe, 0x54, 0x8e, 0x16, 0xba, 0x7e, 0x67, 0x72, 0x14, 0x40, 0x92, 0x00, 0x08,
|
||||
0x3a, 0x6f, 0xff, 0xfc, 0x80, 0x9a, 0x00, 0x00, 0x81, 0x33, 0x00, 0x00, 0x71, 0x4b, 0x00, 0x01,
|
||||
0x41, 0x82, 0x00, 0x08, 0x7c, 0x9a, 0x23, 0x78, 0x71, 0x4b, 0x00, 0x02, 0x41, 0x82, 0x00, 0x10,
|
||||
0x7d, 0x33, 0x4b, 0x78, 0x40, 0xb2, 0x00, 0x08, 0x7e, 0x6c, 0x9a, 0x14, 0x54, 0x65, 0x67, 0x3f,
|
||||
0x2c, 0x05, 0x00, 0x09, 0x40, 0x80, 0x00, 0x54, 0x48, 0x00, 0x00, 0x79, 0x7c, 0x89, 0x22, 0x14,
|
||||
0x48, 0x00, 0x00, 0x40, 0x7c, 0x89, 0x21, 0xd6, 0x48, 0x00, 0x00, 0x38, 0x7d, 0x24, 0x23, 0x78,
|
||||
0x48, 0x00, 0x00, 0x30, 0x7d, 0x24, 0x20, 0x38, 0x48, 0x00, 0x00, 0x28, 0x7d, 0x24, 0x22, 0x78,
|
||||
0x48, 0x00, 0x00, 0x20, 0x7d, 0x24, 0x20, 0x30, 0x48, 0x00, 0x00, 0x18, 0x7d, 0x24, 0x24, 0x30,
|
||||
0x48, 0x00, 0x00, 0x10, 0x5d, 0x24, 0x20, 0x3e, 0x48, 0x00, 0x00, 0x08, 0x7d, 0x24, 0x26, 0x30,
|
||||
0x90, 0x9a, 0x00, 0x00, 0x4b, 0xff, 0xfb, 0x8c, 0x2c, 0x05, 0x00, 0x0a, 0x41, 0x81, 0xfb, 0x84,
|
||||
0xc0, 0x5a, 0x00, 0x00, 0xc0, 0x73, 0x00, 0x00, 0x41, 0x82, 0x00, 0x0c, 0xec, 0x43, 0x10, 0x2a,
|
||||
0x48, 0x00, 0x00, 0x08, 0xec, 0x43, 0x00, 0xb2, 0xd0, 0x5a, 0x00, 0x00, 0x4b, 0xff, 0xfb, 0x64,
|
||||
0x7d, 0x48, 0x02, 0xa6, 0x54, 0xa5, 0x1e, 0x78, 0x7d, 0x4a, 0x2a, 0x14, 0x80, 0x9a, 0x00, 0x00,
|
||||
0x81, 0x33, 0x00, 0x00, 0x7d, 0x48, 0x03, 0xa6, 0x4e, 0x80, 0x00, 0x20, 0x40, 0xbe, 0xfb, 0x44,
|
||||
0x54, 0x69, 0xc0, 0x3e, 0x7d, 0x8e, 0x63, 0x78, 0x48, 0x00, 0x00, 0x35, 0x41, 0x92, 0x00, 0x0c,
|
||||
0x7e, 0x31, 0x22, 0x14, 0x48, 0x00, 0x00, 0x08, 0x7d, 0x29, 0x22, 0x14, 0x54, 0x64, 0xc4, 0x3f,
|
||||
0x38, 0xa0, 0x00, 0x00, 0x41, 0x82, 0xfb, 0x1c, 0x7d, 0x45, 0x88, 0xae, 0x7d, 0x45, 0x49, 0xae,
|
||||
0x38, 0xa5, 0x00, 0x01, 0x7c, 0x05, 0x20, 0x00, 0x4b, 0xff, 0xff, 0xec, 0x2e, 0x8a, 0x00, 0x04,
|
||||
0x55, 0x31, 0x36, 0xba, 0x2c, 0x11, 0x00, 0x3c, 0x7e, 0x27, 0x88, 0x2e, 0x40, 0x82, 0x00, 0x08,
|
||||
0x7d, 0xd1, 0x73, 0x78, 0x41, 0x96, 0x00, 0x08, 0xa2, 0x31, 0x00, 0x00, 0x55, 0x29, 0x56, 0xba,
|
||||
0x2c, 0x09, 0x00, 0x3c, 0x7d, 0x27, 0x48, 0x2e, 0x40, 0x82, 0x00, 0x08, 0x7d, 0xc9, 0x73, 0x78,
|
||||
0x41, 0x96, 0x00, 0x08, 0xa1, 0x29, 0x00, 0x00, 0x4e, 0x80, 0x00, 0x20, 0x2c, 0x05, 0x00, 0x04,
|
||||
0x40, 0x80, 0x00, 0x28, 0x7c, 0x89, 0x23, 0x78, 0x7d, 0xc3, 0x62, 0x14, 0x55, 0xce, 0x00, 0x3c,
|
||||
0x4b, 0xff, 0xff, 0xad, 0x7c, 0x84, 0x20, 0xf8, 0x54, 0x84, 0x04, 0x3e, 0x7d, 0x2b, 0x20, 0x38,
|
||||
0x7e, 0x24, 0x20, 0x38, 0x4b, 0xff, 0xfb, 0xc4, 0x54, 0x6b, 0xe4, 0x3e, 0x4b, 0xff, 0xfb, 0xbc,
|
||||
0x7c, 0x9a, 0x23, 0x78, 0x54, 0x84, 0x18, 0x38, 0x40, 0x92, 0x00, 0x20, 0x40, 0x9e, 0x00, 0x0c,
|
||||
0x7d, 0xe8, 0x03, 0xa6, 0x4e, 0x80, 0x00, 0x21, 0x7d, 0xe4, 0x7a, 0x14, 0x39, 0xef, 0x00, 0x07,
|
||||
0x55, 0xef, 0x00, 0x38, 0x4b, 0xff, 0xfa, 0x6c, 0x2e, 0x05, 0x00, 0x03, 0x41, 0x91, 0x00, 0x5c,
|
||||
0x3c, 0xa0, 0x48, 0x00, 0x7d, 0x83, 0x62, 0x14, 0x55, 0x8c, 0x00, 0x3a, 0x40, 0x92, 0x00, 0x20,
|
||||
0x40, 0xbe, 0xfa, 0x50, 0x57, 0x44, 0x00, 0x3a, 0x7c, 0x8c, 0x20, 0x50, 0x50, 0x85, 0x01, 0xba,
|
||||
0x50, 0x65, 0x07, 0xfe, 0x90, 0xac, 0x00, 0x00, 0x4b, 0xff, 0xfa, 0x38, 0x40, 0xbe, 0xff, 0xbc,
|
||||
0x7d, 0x2c, 0x78, 0x50, 0x51, 0x25, 0x01, 0xba, 0x90, 0xac, 0x00, 0x00, 0x39, 0x8c, 0x00, 0x04,
|
||||
0x7d, 0x6f, 0x22, 0x14, 0x39, 0x6b, 0xff, 0xfc, 0x7d, 0x2b, 0x60, 0x50, 0x51, 0x25, 0x01, 0xba,
|
||||
0x90, 0xab, 0x00, 0x00, 0x4b, 0xff, 0xff, 0x94, 0x2e, 0x05, 0x00, 0x06, 0x41, 0x92, 0x00, 0x28,
|
||||
0x4b, 0xff, 0xfb, 0x28, 0x55, 0x8c, 0x84, 0x3e, 0x57, 0x44, 0x84, 0x3e, 0x57, 0x5a, 0x04, 0x3e,
|
||||
0x7c, 0x0c, 0x20, 0x00, 0x41, 0x80, 0xfb, 0xa8, 0x7c, 0x0c, 0xd0, 0x00, 0x40, 0x80, 0xfb, 0xa0,
|
||||
0x4b, 0xff, 0xf9, 0xe0, 0x57, 0x45, 0xff, 0xfe, 0x68, 0xa5, 0x00, 0x01, 0x71, 0x03, 0x00, 0x01,
|
||||
0x7c, 0x05, 0x18, 0x00, 0x41, 0x82, 0x00, 0x1c, 0x51, 0x1a, 0x0f, 0xbc, 0x6b, 0x5a, 0x00, 0x02,
|
||||
0x57, 0x45, 0xff, 0xff, 0x41, 0x82, 0x00, 0x08, 0x6b, 0x5a, 0x00, 0x01, 0x93, 0x4f, 0xff, 0xfc,
|
||||
0x53, 0x48, 0x07, 0xfe, 0x4b, 0xff, 0xf9, 0xac, 0x2c, 0x0b, 0x00, 0x00, 0x41, 0x82, 0x01, 0x38,
|
||||
0x2c, 0x05, 0x00, 0x01, 0x41, 0x82, 0x00, 0x18, 0x2c, 0x05, 0x00, 0x02, 0x41, 0x82, 0x00, 0x14,
|
||||
0x2c, 0x05, 0x00, 0x03, 0x41, 0x82, 0x00, 0x70, 0x4b, 0xff, 0xf9, 0x80, 0x54, 0xcc, 0x00, 0x0c,
|
||||
0x54, 0x97, 0x46, 0x3e, 0x54, 0x98, 0xc4, 0x3e, 0x54, 0x84, 0x06, 0x3e, 0x40, 0x9e, 0x00, 0xfc,
|
||||
0x56, 0xf9, 0x06, 0x31, 0x7d, 0x9a, 0x63, 0x78, 0x7f, 0x43, 0xd2, 0x14, 0x57, 0x5a, 0x00, 0x3a,
|
||||
0x41, 0x82, 0x00, 0x18, 0x7e, 0xf7, 0x07, 0x74, 0x7e, 0xf7, 0x00, 0xd0, 0x1f, 0x37, 0x00, 0x02,
|
||||
0x3b, 0x39, 0x00, 0x04, 0x7f, 0x59, 0xd0, 0x50, 0x2c, 0x17, 0x00, 0x00, 0x41, 0x82, 0x00, 0x1c,
|
||||
0x3b, 0x20, 0x00, 0x00, 0x7e, 0xe9, 0x03, 0xa6, 0xa3, 0x7a, 0x00, 0x04, 0x7f, 0x79, 0xca, 0x78,
|
||||
0x3b, 0x5a, 0x00, 0x02, 0x42, 0x00, 0xff, 0xf4, 0x7c, 0x18, 0xc8, 0x00, 0x40, 0x82, 0x00, 0xac,
|
||||
0x4b, 0xff, 0xfe, 0x90, 0x51, 0x08, 0x08, 0x3c, 0x40, 0x9e, 0x00, 0x9c, 0x54, 0x77, 0xb0, 0x03,
|
||||
0x41, 0x81, 0x00, 0x88, 0x41, 0x80, 0x00, 0x8c, 0x54, 0x7e, 0x06, 0x3e, 0x1f, 0xde, 0x00, 0x02,
|
||||
0x54, 0x97, 0x00, 0x1e, 0x6e, 0xf8, 0x80, 0x00, 0x2c, 0x18, 0x00, 0x00, 0x40, 0x82, 0x00, 0x08,
|
||||
0x62, 0xf7, 0x30, 0x00, 0x54, 0x98, 0x80, 0x1e, 0x1f, 0x3e, 0x00, 0x04, 0x7f, 0x19, 0xc0, 0x50,
|
||||
0x3b, 0x20, 0x00, 0x00, 0x1f, 0x59, 0x00, 0x04, 0x7f, 0x6f, 0xd0, 0x2e, 0x7f, 0x57, 0xd0, 0x2e,
|
||||
0x3b, 0x39, 0x00, 0x01, 0x7c, 0x17, 0xc0, 0x40, 0x41, 0x81, 0x00, 0x34, 0x7c, 0x19, 0xf0, 0x00,
|
||||
0x41, 0x81, 0x00, 0x14, 0x7c, 0x1a, 0xd8, 0x00, 0x41, 0x82, 0xff, 0xdc, 0x3a, 0xf7, 0x00, 0x04,
|
||||
0x4b, 0xff, 0xff, 0xd0, 0x80, 0x6f, 0xff, 0xf8, 0x60, 0x63, 0x03, 0x00, 0x90, 0x6f, 0xff, 0xf8,
|
||||
0x92, 0xef, 0xff, 0xfc, 0x7e, 0xf0, 0xbb, 0x78, 0x48, 0x00, 0x00, 0x1c, 0x80, 0x6f, 0xff, 0xf8,
|
||||
0x60, 0x63, 0x01, 0x00, 0x90, 0x6f, 0xff, 0xf8, 0x61, 0x08, 0x00, 0x01, 0x48, 0x00, 0x00, 0x08,
|
||||
0x7c, 0x90, 0x23, 0x78, 0x54, 0x64, 0x06, 0x3e, 0x1c, 0x84, 0x00, 0x08, 0x7d, 0xe4, 0x7a, 0x14,
|
||||
0x4b, 0xff, 0xf8, 0x70, 0x40, 0x92, 0x00, 0x0c, 0x39, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x14,
|
||||
0x54, 0x69, 0x06, 0xff, 0x54, 0x65, 0x67, 0xfe, 0x7d, 0x08, 0x4c, 0x30, 0x55, 0x17, 0xff, 0xff,
|
||||
0x40, 0x82, 0x00, 0x08, 0x7d, 0x08, 0x2a, 0x78, 0x54, 0x85, 0x00, 0x1f, 0x41, 0x82, 0x00, 0x08,
|
||||
0x7c, 0xa6, 0x2b, 0x78, 0x54, 0x85, 0x80, 0x1f, 0x41, 0x82, 0x00, 0x08, 0x7c, 0xb0, 0x2b, 0x78,
|
||||
0x4b, 0xff, 0xf8, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
|
||||
};
|
||||
const int codehandler_size = sizeof(codehandler);
|
180
source/patches/codehandleronly.h
Normal file
180
source/patches/codehandleronly.h
Normal file
@ -0,0 +1,180 @@
|
||||
/*
|
||||
This file was autogenerated by raw2c.
|
||||
Visit http://www.devkitpro.org
|
||||
*/
|
||||
|
||||
const unsigned char codehandleronly[] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x21, 0x60, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0x21, 0xff, 0x58, 0x90, 0x01, 0x00, 0x08,
|
||||
0x7c, 0x08, 0x02, 0xa6, 0x90, 0x01, 0x00, 0xac, 0x7c, 0x00, 0x00, 0x26, 0x90, 0x01, 0x00, 0x0c,
|
||||
0x7c, 0x09, 0x02, 0xa6, 0x90, 0x01, 0x00, 0x10, 0x7c, 0x01, 0x02, 0xa6, 0x90, 0x01, 0x00, 0x14,
|
||||
0xbc, 0x61, 0x00, 0x18, 0x7f, 0x20, 0x00, 0xa6, 0x63, 0x3a, 0x20, 0x00, 0x73, 0x5a, 0xf9, 0xff,
|
||||
0x7f, 0x40, 0x01, 0x24, 0xd8, 0x41, 0x00, 0x98, 0xd8, 0x61, 0x00, 0xa0, 0x3f, 0xe0, 0x80, 0x00,
|
||||
0x3e, 0x80, 0xcc, 0x00, 0xa3, 0x94, 0x40, 0x10, 0x63, 0x95, 0x00, 0xff, 0xb2, 0xb4, 0x40, 0x10,
|
||||
0x7f, 0xa8, 0x02, 0xa6, 0x3d, 0xe0, 0x80, 0x00, 0x61, 0xef, 0x22, 0xa8, 0x63, 0xe7, 0x18, 0x08,
|
||||
0x3c, 0xc0, 0x80, 0x00, 0x7c, 0xd0, 0x33, 0x78, 0x39, 0x00, 0x00, 0x00, 0x3c, 0x60, 0x00, 0xd0,
|
||||
0x60, 0x63, 0xc0, 0xde, 0x80, 0x8f, 0x00, 0x00, 0x7c, 0x03, 0x20, 0x00, 0x40, 0x82, 0x00, 0x18,
|
||||
0x80, 0x8f, 0x00, 0x04, 0x7c, 0x03, 0x20, 0x00, 0x40, 0x82, 0x00, 0x0c, 0x39, 0xef, 0x00, 0x08,
|
||||
0x48, 0x00, 0x00, 0x4c, 0x7f, 0xa8, 0x03, 0xa6, 0xb3, 0x94, 0x40, 0x10, 0xc8, 0x41, 0x00, 0x98,
|
||||
0xc8, 0x61, 0x00, 0xa0, 0x7f, 0x20, 0x00, 0xa6, 0x80, 0x01, 0x00, 0xac, 0x7c, 0x08, 0x03, 0xa6,
|
||||
0x80, 0x01, 0x00, 0x0c, 0x7c, 0x0f, 0xf1, 0x20, 0x80, 0x01, 0x00, 0x10, 0x7c, 0x09, 0x03, 0xa6,
|
||||
0x80, 0x01, 0x00, 0x14, 0x7c, 0x01, 0x03, 0xa6, 0xb8, 0x61, 0x00, 0x18, 0x80, 0x01, 0x00, 0x08,
|
||||
0x38, 0x21, 0x00, 0xa8, 0x4c, 0x00, 0x01, 0x2c, 0x4e, 0x80, 0x00, 0x20, 0x80, 0x6f, 0x00, 0x00,
|
||||
0x80, 0x8f, 0x00, 0x04, 0x39, 0xef, 0x00, 0x08, 0x71, 0x09, 0x00, 0x01, 0x2f, 0x89, 0x00, 0x00,
|
||||
0x39, 0x20, 0x00, 0x00, 0x54, 0x6a, 0x1f, 0x7e, 0x54, 0x65, 0x3f, 0x7e, 0x74, 0x6b, 0x10, 0x00,
|
||||
0x54, 0x63, 0x01, 0xfe, 0x40, 0x82, 0x00, 0x0c, 0x54, 0xcc, 0x00, 0x0c, 0x48, 0x00, 0x00, 0x08,
|
||||
0x7e, 0x0c, 0x83, 0x78, 0x2e, 0x05, 0x00, 0x00, 0x2c, 0x0a, 0x00, 0x01, 0x41, 0xa0, 0x00, 0x2c,
|
||||
0x41, 0xa2, 0x00, 0xe4, 0x2c, 0x0a, 0x00, 0x03, 0x41, 0xa0, 0x01, 0xac, 0x41, 0x82, 0x02, 0x50,
|
||||
0x2c, 0x0a, 0x00, 0x05, 0x41, 0x80, 0x02, 0xd4, 0x41, 0xa2, 0x04, 0xe0, 0x2c, 0x0a, 0x00, 0x07,
|
||||
0x41, 0xa0, 0x05, 0x0c, 0x48, 0x00, 0x05, 0xf0, 0x7d, 0x8c, 0x1a, 0x14, 0x2c, 0x05, 0x00, 0x03,
|
||||
0x41, 0x82, 0x00, 0x48, 0x41, 0x81, 0x00, 0x60, 0x40, 0xbe, 0xff, 0x84, 0x2e, 0x05, 0x00, 0x01,
|
||||
0x41, 0x91, 0x00, 0x2c, 0x54, 0x8a, 0x84, 0x3e, 0x41, 0x92, 0x00, 0x10, 0x7c, 0x89, 0x61, 0xae,
|
||||
0x39, 0x29, 0x00, 0x01, 0x48, 0x00, 0x00, 0x0c, 0x7c, 0x89, 0x63, 0x2e, 0x39, 0x29, 0x00, 0x02,
|
||||
0x35, 0x4a, 0xff, 0xff, 0x40, 0xa0, 0xff, 0xe4, 0x4b, 0xff, 0xff, 0x54, 0x55, 0x8c, 0x00, 0x3a,
|
||||
0x90, 0x8c, 0x00, 0x00, 0x4b, 0xff, 0xff, 0x48, 0x7c, 0x89, 0x23, 0x78, 0x40, 0x9e, 0x04, 0xc8,
|
||||
0x35, 0x29, 0xff, 0xff, 0x41, 0x80, 0x04, 0xc0, 0x7c, 0xa9, 0x78, 0xae, 0x7c, 0xa9, 0x61, 0xae,
|
||||
0x4b, 0xff, 0xff, 0xf0, 0x39, 0xef, 0x00, 0x08, 0x40, 0xbe, 0xff, 0x24, 0x80, 0xaf, 0xff, 0xf8,
|
||||
0x81, 0x6f, 0xff, 0xfc, 0x54, 0xb1, 0x04, 0x3e, 0x54, 0xaa, 0x85, 0x3e, 0x54, 0xa5, 0x27, 0x3e,
|
||||
0x2e, 0x85, 0x00, 0x01, 0x41, 0x96, 0x00, 0x10, 0x41, 0xb5, 0x00, 0x14, 0x7c, 0x89, 0x61, 0xae,
|
||||
0x48, 0x00, 0x00, 0x10, 0x7c, 0x89, 0x63, 0x2e, 0x48, 0x00, 0x00, 0x08, 0x7c, 0x89, 0x61, 0x2e,
|
||||
0x7c, 0x84, 0x5a, 0x14, 0x7d, 0x29, 0x8a, 0x14, 0x35, 0x4a, 0xff, 0xff, 0x40, 0x80, 0xff, 0xd4,
|
||||
0x4b, 0xff, 0xfe, 0xdc, 0x54, 0x69, 0x07, 0xff, 0x41, 0x82, 0x00, 0x10, 0x55, 0x08, 0xf8, 0x7e,
|
||||
0x71, 0x09, 0x00, 0x01, 0x2f, 0x89, 0x00, 0x00, 0x2e, 0x85, 0x00, 0x04, 0x2d, 0x8a, 0x00, 0x05,
|
||||
0x51, 0x08, 0x08, 0x3c, 0x40, 0x9e, 0x00, 0x78, 0x41, 0x8d, 0x04, 0xb8, 0x7d, 0x8c, 0x1a, 0x14,
|
||||
0x41, 0x8c, 0x00, 0x0c, 0x41, 0x94, 0x00, 0x30, 0x48, 0x00, 0x00, 0x1c, 0x40, 0x94, 0x00, 0x10,
|
||||
0x55, 0x8c, 0x00, 0x3a, 0x81, 0x6c, 0x00, 0x00, 0x48, 0x00, 0x00, 0x1c, 0x55, 0x8c, 0x00, 0x3c,
|
||||
0xa1, 0x6c, 0x00, 0x00, 0x7c, 0x89, 0x20, 0xf8, 0x55, 0x29, 0x84, 0x3e, 0x7d, 0x6b, 0x48, 0x38,
|
||||
0x54, 0x84, 0x04, 0x3e, 0x7f, 0x0b, 0x20, 0x40, 0x70, 0xa9, 0x00, 0x03, 0x41, 0x82, 0x00, 0x18,
|
||||
0x2c, 0x09, 0x00, 0x02, 0x41, 0x82, 0x00, 0x18, 0x41, 0x81, 0x00, 0x1c, 0x40, 0x9a, 0x00, 0x20,
|
||||
0x48, 0x00, 0x00, 0x18, 0x41, 0x9a, 0x00, 0x18, 0x48, 0x00, 0x00, 0x10, 0x41, 0x99, 0x00, 0x10,
|
||||
0x48, 0x00, 0x00, 0x08, 0x41, 0x98, 0x00, 0x08, 0x61, 0x08, 0x00, 0x01, 0x40, 0x8e, 0xfe, 0x40,
|
||||
0x41, 0x94, 0xfe, 0x3c, 0x81, 0x6f, 0xff, 0xf8, 0x40, 0x9e, 0x00, 0x20, 0x70, 0x6c, 0x00, 0x08,
|
||||
0x41, 0x82, 0x00, 0x0c, 0x71, 0x0c, 0x00, 0x01, 0x41, 0x82, 0x00, 0x10, 0x39, 0x8b, 0x00, 0x10,
|
||||
0x51, 0x8b, 0x03, 0x36, 0x48, 0x00, 0x00, 0x08, 0x55, 0x6b, 0x07, 0x16, 0x91, 0x6f, 0xff, 0xf8,
|
||||
0x4b, 0xff, 0xfe, 0x0c, 0x40, 0xbe, 0xfe, 0x08, 0x54, 0x69, 0x16, 0xba, 0x54, 0x6e, 0x87, 0xfe,
|
||||
0x2d, 0x8e, 0x00, 0x00, 0x2e, 0x05, 0x00, 0x04, 0x70, 0xae, 0x00, 0x03, 0x2e, 0x8e, 0x00, 0x02,
|
||||
0x41, 0x94, 0x00, 0x14, 0x41, 0x96, 0x00, 0x50, 0x7c, 0x64, 0x07, 0x34, 0x7c, 0x84, 0x7a, 0x14,
|
||||
0x48, 0x00, 0x00, 0x68, 0x54, 0x65, 0xa7, 0xff, 0x41, 0x82, 0x00, 0x0c, 0x7d, 0x27, 0x48, 0x2e,
|
||||
0x7c, 0x84, 0x4a, 0x14, 0x41, 0x8e, 0x00, 0x08, 0x7c, 0x8c, 0x22, 0x14, 0x2e, 0x8e, 0x00, 0x01,
|
||||
0x41, 0x96, 0x00, 0x08, 0x80, 0x84, 0x00, 0x00, 0x54, 0x63, 0x67, 0xff, 0x41, 0x82, 0x00, 0x3c,
|
||||
0x40, 0x90, 0x00, 0x0c, 0x7c, 0x84, 0x32, 0x14, 0x48, 0x00, 0x00, 0x30, 0x7c, 0x84, 0x82, 0x14,
|
||||
0x48, 0x00, 0x00, 0x28, 0x54, 0x65, 0xa7, 0xff, 0x41, 0x82, 0x00, 0x0c, 0x7d, 0x27, 0x48, 0x2e,
|
||||
0x7c, 0x84, 0x4a, 0x14, 0x40, 0x90, 0x00, 0x0c, 0x7c, 0xcc, 0x21, 0x2e, 0x4b, 0xff, 0xfd, 0x80,
|
||||
0x7e, 0x0c, 0x21, 0x2e, 0x4b, 0xff, 0xfd, 0x78, 0x40, 0x90, 0x00, 0x0c, 0x7c, 0x86, 0x23, 0x78,
|
||||
0x4b, 0xff, 0xfd, 0x6c, 0x7c, 0x90, 0x23, 0x78, 0x4b, 0xff, 0xfd, 0x64, 0x54, 0x89, 0x1e, 0x78,
|
||||
0x39, 0x29, 0x00, 0x40, 0x2c, 0x05, 0x00, 0x02, 0x41, 0x80, 0x00, 0x48, 0x54, 0x6b, 0x50, 0x03,
|
||||
0x41, 0x82, 0x00, 0x14, 0x41, 0x81, 0x00, 0x08, 0x48, 0x00, 0x00, 0x10, 0x41, 0xbe, 0xfd, 0x40,
|
||||
0x48, 0x00, 0x00, 0x08, 0x40, 0xbe, 0xfd, 0x38, 0x2c, 0x05, 0x00, 0x03, 0x41, 0x81, 0x00, 0x10,
|
||||
0x41, 0xa2, 0x00, 0x10, 0x7d, 0xe7, 0x48, 0x2e, 0x4b, 0xff, 0xfd, 0x24, 0x7d, 0xe7, 0x49, 0x2e,
|
||||
0x7c, 0x64, 0x07, 0x34, 0x54, 0x84, 0x1a, 0x78, 0x7d, 0xef, 0x22, 0x14, 0x4b, 0xff, 0xfd, 0x10,
|
||||
0x40, 0xbe, 0xfd, 0x0c, 0x7c, 0xa7, 0x4a, 0x14, 0x40, 0x92, 0x00, 0x14, 0x54, 0x64, 0x04, 0x3e,
|
||||
0x91, 0xe5, 0x00, 0x00, 0x90, 0x85, 0x00, 0x04, 0x4b, 0xff, 0xfc, 0xf4, 0x81, 0x25, 0x00, 0x04,
|
||||
0x2c, 0x09, 0x00, 0x00, 0x41, 0xa2, 0xfc, 0xe8, 0x39, 0x29, 0xff, 0xff, 0x91, 0x25, 0x00, 0x04,
|
||||
0x81, 0xe5, 0x00, 0x00, 0x4b, 0xff, 0xfc, 0xd8, 0x40, 0xbe, 0xfc, 0xd4, 0x54, 0x6b, 0x16, 0xba,
|
||||
0x7f, 0x47, 0x5a, 0x14, 0x81, 0x3a, 0x00, 0x00, 0x54, 0x6e, 0x67, 0xbe, 0x41, 0x92, 0x00, 0x84,
|
||||
0x2e, 0x05, 0x00, 0x05, 0x40, 0x90, 0x01, 0x74, 0x2e, 0x05, 0x00, 0x03, 0x40, 0x90, 0x00, 0x90,
|
||||
0x2e, 0x05, 0x00, 0x01, 0x54, 0x65, 0x87, 0xff, 0x41, 0x82, 0x00, 0x08, 0x7c, 0x8c, 0x22, 0x14,
|
||||
0x2f, 0x0e, 0x00, 0x01, 0x40, 0x92, 0x00, 0x24, 0x41, 0xb9, 0x00, 0x18, 0x41, 0x9a, 0x00, 0x0c,
|
||||
0x88, 0x84, 0x00, 0x00, 0x48, 0x00, 0x00, 0xf8, 0xa0, 0x84, 0x00, 0x00, 0x48, 0x00, 0x00, 0xf0,
|
||||
0x80, 0x84, 0x00, 0x00, 0x48, 0x00, 0x00, 0xe8, 0x54, 0x73, 0xe5, 0x3e, 0x41, 0xb9, 0x00, 0x20,
|
||||
0x41, 0x9a, 0x00, 0x10, 0x99, 0x24, 0x00, 0x00, 0x38, 0x84, 0x00, 0x01, 0x48, 0x00, 0x00, 0x18,
|
||||
0xb1, 0x24, 0x00, 0x00, 0x38, 0x84, 0x00, 0x02, 0x48, 0x00, 0x00, 0x0c, 0x91, 0x24, 0x00, 0x00,
|
||||
0x38, 0x84, 0x00, 0x04, 0x36, 0x73, 0xff, 0xff, 0x40, 0x80, 0xff, 0xd4, 0x4b, 0xff, 0xfc, 0x40,
|
||||
0x54, 0x65, 0x87, 0xff, 0x41, 0x82, 0x00, 0x08, 0x7c, 0x84, 0x62, 0x14, 0x71, 0xc5, 0x00, 0x01,
|
||||
0x41, 0x82, 0x00, 0x9c, 0x7c, 0x84, 0x4a, 0x14, 0x48, 0x00, 0x00, 0x94, 0x54, 0x6a, 0x87, 0xbe,
|
||||
0x54, 0x8e, 0x16, 0xba, 0x7e, 0x67, 0x72, 0x14, 0x40, 0x92, 0x00, 0x08, 0x3a, 0x6f, 0xff, 0xfc,
|
||||
0x80, 0x9a, 0x00, 0x00, 0x81, 0x33, 0x00, 0x00, 0x71, 0x4b, 0x00, 0x01, 0x41, 0x82, 0x00, 0x08,
|
||||
0x7c, 0x9a, 0x23, 0x78, 0x71, 0x4b, 0x00, 0x02, 0x41, 0x82, 0x00, 0x10, 0x7d, 0x33, 0x4b, 0x78,
|
||||
0x40, 0xb2, 0x00, 0x08, 0x7e, 0x6c, 0x9a, 0x14, 0x54, 0x65, 0x67, 0x3f, 0x2c, 0x05, 0x00, 0x09,
|
||||
0x40, 0x80, 0x00, 0x54, 0x48, 0x00, 0x00, 0x79, 0x7c, 0x89, 0x22, 0x14, 0x48, 0x00, 0x00, 0x40,
|
||||
0x7c, 0x89, 0x21, 0xd6, 0x48, 0x00, 0x00, 0x38, 0x7d, 0x24, 0x23, 0x78, 0x48, 0x00, 0x00, 0x30,
|
||||
0x7d, 0x24, 0x20, 0x38, 0x48, 0x00, 0x00, 0x28, 0x7d, 0x24, 0x22, 0x78, 0x48, 0x00, 0x00, 0x20,
|
||||
0x7d, 0x24, 0x20, 0x30, 0x48, 0x00, 0x00, 0x18, 0x7d, 0x24, 0x24, 0x30, 0x48, 0x00, 0x00, 0x10,
|
||||
0x5d, 0x24, 0x20, 0x3e, 0x48, 0x00, 0x00, 0x08, 0x7d, 0x24, 0x26, 0x30, 0x90, 0x9a, 0x00, 0x00,
|
||||
0x4b, 0xff, 0xfb, 0x8c, 0x2c, 0x05, 0x00, 0x0a, 0x41, 0x81, 0xfb, 0x84, 0xc0, 0x5a, 0x00, 0x00,
|
||||
0xc0, 0x73, 0x00, 0x00, 0x41, 0x82, 0x00, 0x0c, 0xec, 0x43, 0x10, 0x2a, 0x48, 0x00, 0x00, 0x08,
|
||||
0xec, 0x43, 0x00, 0xb2, 0xd0, 0x5a, 0x00, 0x00, 0x4b, 0xff, 0xfb, 0x64, 0x7d, 0x48, 0x02, 0xa6,
|
||||
0x54, 0xa5, 0x1e, 0x78, 0x7d, 0x4a, 0x2a, 0x14, 0x80, 0x9a, 0x00, 0x00, 0x81, 0x33, 0x00, 0x00,
|
||||
0x7d, 0x48, 0x03, 0xa6, 0x4e, 0x80, 0x00, 0x20, 0x40, 0xbe, 0xfb, 0x44, 0x54, 0x69, 0xc0, 0x3e,
|
||||
0x7d, 0x8e, 0x63, 0x78, 0x48, 0x00, 0x00, 0x35, 0x41, 0x92, 0x00, 0x0c, 0x7e, 0x31, 0x22, 0x14,
|
||||
0x48, 0x00, 0x00, 0x08, 0x7d, 0x29, 0x22, 0x14, 0x54, 0x64, 0xc4, 0x3f, 0x38, 0xa0, 0x00, 0x00,
|
||||
0x41, 0x82, 0xfb, 0x1c, 0x7d, 0x45, 0x88, 0xae, 0x7d, 0x45, 0x49, 0xae, 0x38, 0xa5, 0x00, 0x01,
|
||||
0x7c, 0x05, 0x20, 0x00, 0x4b, 0xff, 0xff, 0xec, 0x2e, 0x8a, 0x00, 0x04, 0x55, 0x31, 0x36, 0xba,
|
||||
0x2c, 0x11, 0x00, 0x3c, 0x7e, 0x27, 0x88, 0x2e, 0x40, 0x82, 0x00, 0x08, 0x7d, 0xd1, 0x73, 0x78,
|
||||
0x41, 0x96, 0x00, 0x08, 0xa2, 0x31, 0x00, 0x00, 0x55, 0x29, 0x56, 0xba, 0x2c, 0x09, 0x00, 0x3c,
|
||||
0x7d, 0x27, 0x48, 0x2e, 0x40, 0x82, 0x00, 0x08, 0x7d, 0xc9, 0x73, 0x78, 0x41, 0x96, 0x00, 0x08,
|
||||
0xa1, 0x29, 0x00, 0x00, 0x4e, 0x80, 0x00, 0x20, 0x2c, 0x05, 0x00, 0x04, 0x40, 0x80, 0x00, 0x28,
|
||||
0x7c, 0x89, 0x23, 0x78, 0x7d, 0xc3, 0x62, 0x14, 0x55, 0xce, 0x00, 0x3c, 0x4b, 0xff, 0xff, 0xad,
|
||||
0x7c, 0x84, 0x20, 0xf8, 0x54, 0x84, 0x04, 0x3e, 0x7d, 0x2b, 0x20, 0x38, 0x7e, 0x24, 0x20, 0x38,
|
||||
0x4b, 0xff, 0xfb, 0xc4, 0x54, 0x6b, 0xe4, 0x3e, 0x4b, 0xff, 0xfb, 0xbc, 0x7c, 0x9a, 0x23, 0x78,
|
||||
0x54, 0x84, 0x18, 0x38, 0x40, 0x92, 0x00, 0x20, 0x40, 0x9e, 0x00, 0x0c, 0x7d, 0xe8, 0x03, 0xa6,
|
||||
0x4e, 0x80, 0x00, 0x21, 0x7d, 0xe4, 0x7a, 0x14, 0x39, 0xef, 0x00, 0x07, 0x55, 0xef, 0x00, 0x38,
|
||||
0x4b, 0xff, 0xfa, 0x6c, 0x2e, 0x05, 0x00, 0x03, 0x41, 0x91, 0x00, 0x5c, 0x3c, 0xa0, 0x48, 0x00,
|
||||
0x7d, 0x83, 0x62, 0x14, 0x55, 0x8c, 0x00, 0x3a, 0x40, 0x92, 0x00, 0x20, 0x40, 0xbe, 0xfa, 0x50,
|
||||
0x57, 0x44, 0x00, 0x3a, 0x7c, 0x8c, 0x20, 0x50, 0x50, 0x85, 0x01, 0xba, 0x50, 0x65, 0x07, 0xfe,
|
||||
0x90, 0xac, 0x00, 0x00, 0x4b, 0xff, 0xfa, 0x38, 0x40, 0xbe, 0xff, 0xbc, 0x7d, 0x2c, 0x78, 0x50,
|
||||
0x51, 0x25, 0x01, 0xba, 0x90, 0xac, 0x00, 0x00, 0x39, 0x8c, 0x00, 0x04, 0x7d, 0x6f, 0x22, 0x14,
|
||||
0x39, 0x6b, 0xff, 0xfc, 0x7d, 0x2b, 0x60, 0x50, 0x51, 0x25, 0x01, 0xba, 0x90, 0xab, 0x00, 0x00,
|
||||
0x4b, 0xff, 0xff, 0x94, 0x2e, 0x05, 0x00, 0x06, 0x41, 0x92, 0x00, 0x28, 0x4b, 0xff, 0xfb, 0x28,
|
||||
0x55, 0x8c, 0x84, 0x3e, 0x57, 0x44, 0x84, 0x3e, 0x57, 0x5a, 0x04, 0x3e, 0x7c, 0x0c, 0x20, 0x00,
|
||||
0x41, 0x80, 0xfb, 0xa8, 0x7c, 0x0c, 0xd0, 0x00, 0x40, 0x80, 0xfb, 0xa0, 0x4b, 0xff, 0xf9, 0xe0,
|
||||
0x57, 0x45, 0xff, 0xfe, 0x68, 0xa5, 0x00, 0x01, 0x71, 0x03, 0x00, 0x01, 0x7c, 0x05, 0x18, 0x00,
|
||||
0x41, 0x82, 0x00, 0x1c, 0x51, 0x1a, 0x0f, 0xbc, 0x6b, 0x5a, 0x00, 0x02, 0x57, 0x45, 0xff, 0xff,
|
||||
0x41, 0x82, 0x00, 0x08, 0x6b, 0x5a, 0x00, 0x01, 0x93, 0x4f, 0xff, 0xfc, 0x53, 0x48, 0x07, 0xfe,
|
||||
0x4b, 0xff, 0xf9, 0xac, 0x2c, 0x0b, 0x00, 0x00, 0x41, 0x82, 0x01, 0x38, 0x2c, 0x05, 0x00, 0x01,
|
||||
0x41, 0x82, 0x00, 0x18, 0x2c, 0x05, 0x00, 0x02, 0x41, 0x82, 0x00, 0x14, 0x2c, 0x05, 0x00, 0x03,
|
||||
0x41, 0x82, 0x00, 0x70, 0x4b, 0xff, 0xf9, 0x40, 0x54, 0xcc, 0x00, 0x0c, 0x54, 0x97, 0x46, 0x3e,
|
||||
0x54, 0x98, 0xc4, 0x3e, 0x54, 0x84, 0x06, 0x3e, 0x40, 0x9e, 0x00, 0xfc, 0x56, 0xf9, 0x06, 0x31,
|
||||
0x7d, 0x9a, 0x63, 0x78, 0x7f, 0x43, 0xd2, 0x14, 0x57, 0x5a, 0x00, 0x3a, 0x41, 0x82, 0x00, 0x18,
|
||||
0x7e, 0xf7, 0x07, 0x74, 0x7e, 0xf7, 0x00, 0xd0, 0x1f, 0x37, 0x00, 0x02, 0x3b, 0x39, 0x00, 0x04,
|
||||
0x7f, 0x59, 0xd0, 0x50, 0x2c, 0x17, 0x00, 0x00, 0x41, 0x82, 0x00, 0x1c, 0x3b, 0x20, 0x00, 0x00,
|
||||
0x7e, 0xe9, 0x03, 0xa6, 0xa3, 0x7a, 0x00, 0x04, 0x7f, 0x79, 0xca, 0x78, 0x3b, 0x5a, 0x00, 0x02,
|
||||
0x42, 0x00, 0xff, 0xf4, 0x7c, 0x18, 0xc8, 0x00, 0x40, 0x82, 0x00, 0xac, 0x4b, 0xff, 0xfe, 0x90,
|
||||
0x51, 0x08, 0x08, 0x3c, 0x40, 0x9e, 0x00, 0x9c, 0x54, 0x77, 0xb0, 0x03, 0x41, 0x81, 0x00, 0x88,
|
||||
0x41, 0x80, 0x00, 0x8c, 0x54, 0x7e, 0x06, 0x3e, 0x1f, 0xde, 0x00, 0x02, 0x54, 0x97, 0x00, 0x1e,
|
||||
0x6e, 0xf8, 0x80, 0x00, 0x2c, 0x18, 0x00, 0x00, 0x40, 0x82, 0x00, 0x08, 0x62, 0xf7, 0x30, 0x00,
|
||||
0x54, 0x98, 0x80, 0x1e, 0x1f, 0x3e, 0x00, 0x04, 0x7f, 0x19, 0xc0, 0x50, 0x3b, 0x20, 0x00, 0x00,
|
||||
0x1f, 0x59, 0x00, 0x04, 0x7f, 0x6f, 0xd0, 0x2e, 0x7f, 0x57, 0xd0, 0x2e, 0x3b, 0x39, 0x00, 0x01,
|
||||
0x7c, 0x17, 0xc0, 0x40, 0x41, 0x81, 0x00, 0x34, 0x7c, 0x19, 0xf0, 0x00, 0x41, 0x81, 0x00, 0x14,
|
||||
0x7c, 0x1a, 0xd8, 0x00, 0x41, 0x82, 0xff, 0xdc, 0x3a, 0xf7, 0x00, 0x04, 0x4b, 0xff, 0xff, 0xd0,
|
||||
0x80, 0x6f, 0xff, 0xf8, 0x60, 0x63, 0x03, 0x00, 0x90, 0x6f, 0xff, 0xf8, 0x92, 0xef, 0xff, 0xfc,
|
||||
0x7e, 0xf0, 0xbb, 0x78, 0x48, 0x00, 0x00, 0x1c, 0x80, 0x6f, 0xff, 0xf8, 0x60, 0x63, 0x01, 0x00,
|
||||
0x90, 0x6f, 0xff, 0xf8, 0x61, 0x08, 0x00, 0x01, 0x48, 0x00, 0x00, 0x08, 0x7c, 0x90, 0x23, 0x78,
|
||||
0x54, 0x64, 0x06, 0x3e, 0x1c, 0x84, 0x00, 0x08, 0x7d, 0xe4, 0x7a, 0x14, 0x4b, 0xff, 0xf8, 0x70,
|
||||
0x40, 0x92, 0x00, 0x0c, 0x39, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x14, 0x54, 0x69, 0x06, 0xff,
|
||||
0x54, 0x65, 0x67, 0xfe, 0x7d, 0x08, 0x4c, 0x30, 0x55, 0x17, 0xff, 0xff, 0x40, 0x82, 0x00, 0x08,
|
||||
0x7d, 0x08, 0x2a, 0x78, 0x54, 0x85, 0x00, 0x1f, 0x41, 0x82, 0x00, 0x08, 0x7c, 0xa6, 0x2b, 0x78,
|
||||
0x54, 0x85, 0x80, 0x1f, 0x41, 0x82, 0x00, 0x08, 0x7c, 0xb0, 0x2b, 0x78, 0x4b, 0xff, 0xf8, 0x30,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
|
||||
};
|
||||
const int codehandleronly_size = sizeof(codehandleronly);
|
@ -26,94 +26,750 @@
|
||||
#include <gccore.h>
|
||||
#include <malloc.h>
|
||||
#include <sys/unistd.h>
|
||||
#include <sdcard/wiisd_io.h>
|
||||
#include <ogc/ipc.h>
|
||||
|
||||
#include "settings/cfg.h"
|
||||
#include "fst.h"
|
||||
#include "dvd_broadway.h"
|
||||
#include "wpad.h"
|
||||
#include "fatmounter.h"
|
||||
#include "sys.h"
|
||||
#include "../gecko.h"
|
||||
#include "settings/cfg.h"
|
||||
#include "mload/mload.h"
|
||||
#include "mload/dip_plugin.h"
|
||||
#include "patches/wip.h"
|
||||
#include "gecko.h"
|
||||
|
||||
extern struct SSettings Settings;
|
||||
#include "patchcode.h"
|
||||
#include "language/gettext.h"
|
||||
|
||||
// Pre-allocate the buffer size for ocarina codes
|
||||
u8 filebuff[MAX_GCT_SIZE];
|
||||
#include "codehandler.h"
|
||||
//#include "codehandlerslota.h"
|
||||
#include "codehandleronly.h"
|
||||
#include "multidol.h"
|
||||
|
||||
u32 do_sd_code(char *filename)
|
||||
#define FSTDIRTYPE 1
|
||||
#define FSTFILETYPE 0
|
||||
#define ENTRYSIZE 0xC
|
||||
//#define FILEDIR "fat0:/codes"
|
||||
//#define FILEDIR "sd:/codes"
|
||||
#define FILEDIR "/codes"
|
||||
|
||||
#define MAX_FILENAME_LEN 128
|
||||
|
||||
static u8 *codelistend;
|
||||
void *codelist;
|
||||
|
||||
u32 gameconfsize = 0;
|
||||
u32 *gameconf = NULL;
|
||||
|
||||
u8 debuggerselect;
|
||||
|
||||
extern const u32 viwiihooks[4];
|
||||
extern const u32 kpadhooks[4];
|
||||
extern const u32 joypadhooks[4];
|
||||
extern const u32 gxdrawhooks[4];
|
||||
extern const u32 gxflushhooks[4];
|
||||
extern const u32 ossleepthreadhooks[4];
|
||||
extern const u32 axnextframehooks[4];
|
||||
extern const u32 wpadbuttonsdownhooks[4];
|
||||
extern const u32 wpadbuttonsdown2hooks[4];
|
||||
|
||||
|
||||
//static vu32 dvddone = 0;
|
||||
|
||||
//---------------------------------------------------------------------------------
|
||||
void app_loadgameconfig(char *discid)
|
||||
//---------------------------------------------------------------------------------
|
||||
{
|
||||
gprintf("\ndo_sd_code(%s)",filename);
|
||||
printf("\ndo_sd_code(%s)",filename);
|
||||
gameconfsize = 0;
|
||||
|
||||
if (gameconf == NULL)
|
||||
{
|
||||
gameconf = malloc(65536);
|
||||
if (gameconf == NULL)
|
||||
{
|
||||
//TODO for oggzee
|
||||
//print_status("Out of memory");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
FILE* fp;
|
||||
//u8 *filebuff;
|
||||
u32 filesize;
|
||||
u32 ret;
|
||||
u32 filesize;
|
||||
s32 gameidmatch, maxgameidmatch = -1, maxgameidmatch2 = -1;
|
||||
u32 i, numnonascii, parsebufpos;
|
||||
u32 codeaddr, codeval, codeaddr2, codeval2, codeoffset;
|
||||
u32 temp, tempoffset = 0;
|
||||
char parsebuffer[18];
|
||||
|
||||
//if (config_bytes[2] == 8)
|
||||
// hookset = 1;
|
||||
|
||||
u8 *tempgameconf;
|
||||
u32 tempgameconfsize = 0;
|
||||
|
||||
//memcpy(tempgameconf, defaultgameconfig, defaultgameconfig_size);
|
||||
//tempgameconf[defaultgameconfig_size] = '\n';
|
||||
//tempgameconfsize = defaultgameconfig_size + 1;
|
||||
|
||||
char filepath[200];
|
||||
snprintf(filepath, "%s/gameconfig.txt", Settings.Cheatcodespath);
|
||||
|
||||
fp = fopen(filepath, "rb");
|
||||
|
||||
if (!fp)
|
||||
{
|
||||
snprintf(filepath, "%s/gameconfig.txt", bootDevice);
|
||||
fp = fopen(filepath, "rb");
|
||||
}
|
||||
|
||||
if (fp) {
|
||||
fseek(fp, 0, SEEK_END);
|
||||
filesize = ftell(fp);
|
||||
fseek(fp, 0, SEEK_SET);
|
||||
|
||||
tempgameconf = malloc(filesize);
|
||||
if (tempgameconf == NULL)
|
||||
{
|
||||
//TODO for oggzee
|
||||
//print_status("Out of memory");
|
||||
//wait(4);
|
||||
return;
|
||||
}
|
||||
|
||||
ret = fread((void*)tempgameconf, 1, filesize, fp);
|
||||
fclose(fp);
|
||||
if (ret != filesize)
|
||||
{
|
||||
//TODO for oggzee
|
||||
//print_status("Error reading gameconfig.txt");
|
||||
//wait(4);
|
||||
return;
|
||||
}
|
||||
tempgameconfsize = filesize;
|
||||
}
|
||||
else
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Remove non-ASCII characters
|
||||
numnonascii = 0;
|
||||
for (i = 0; i < tempgameconfsize; i++)
|
||||
{
|
||||
if (tempgameconf[i] < 9 || tempgameconf[i] > 126)
|
||||
numnonascii++;
|
||||
else
|
||||
tempgameconf[i-numnonascii] = tempgameconf[i];
|
||||
}
|
||||
tempgameconfsize -= numnonascii;
|
||||
|
||||
*(tempgameconf + tempgameconfsize) = 0;
|
||||
//gameconf = (tempgameconf + tempgameconfsize) + (4 - (((u32) (tempgameconf + tempgameconfsize)) % 4));
|
||||
|
||||
for (maxgameidmatch = 0; maxgameidmatch <= 6; maxgameidmatch++)
|
||||
{
|
||||
i = 0;
|
||||
while (i < tempgameconfsize)
|
||||
{
|
||||
maxgameidmatch2 = -1;
|
||||
while (maxgameidmatch != maxgameidmatch2)
|
||||
{
|
||||
while (i != tempgameconfsize && tempgameconf[i] != ':') i++;
|
||||
if (i == tempgameconfsize) break;
|
||||
while ((tempgameconf[i] != 10 && tempgameconf[i] != 13) && (i != 0)) i--;
|
||||
if (i != 0) i++;
|
||||
parsebufpos = 0;
|
||||
gameidmatch = 0;
|
||||
while (tempgameconf[i] != ':')
|
||||
{
|
||||
if (tempgameconf[i] == '?')
|
||||
{
|
||||
parsebuffer[parsebufpos] = discid[parsebufpos];
|
||||
parsebufpos++;
|
||||
gameidmatch--;
|
||||
i++;
|
||||
}
|
||||
else if (tempgameconf[i] != 0 && tempgameconf[i] != ' ')
|
||||
parsebuffer[parsebufpos++] = tempgameconf[i++];
|
||||
else if (tempgameconf[i] == ' ')
|
||||
break;
|
||||
else
|
||||
i++;
|
||||
if (parsebufpos == 8) break;
|
||||
}
|
||||
parsebuffer[parsebufpos] = 0;
|
||||
if (strncasecmp("DEFAULT", parsebuffer, strlen(parsebuffer)) == 0 && strlen(parsebuffer) == 7)
|
||||
{
|
||||
gameidmatch = 0;
|
||||
goto idmatch;
|
||||
}
|
||||
if (strncmp(discid, parsebuffer, strlen(parsebuffer)) == 0)
|
||||
{
|
||||
gameidmatch += strlen(parsebuffer);
|
||||
idmatch:
|
||||
if (gameidmatch > maxgameidmatch2)
|
||||
{
|
||||
maxgameidmatch2 = gameidmatch;
|
||||
}
|
||||
}
|
||||
while ((i != tempgameconfsize) && (tempgameconf[i] != 10 && tempgameconf[i] != 13)) i++;
|
||||
}
|
||||
while (i != tempgameconfsize && tempgameconf[i] != ':')
|
||||
{
|
||||
parsebufpos = 0;
|
||||
while ((i != tempgameconfsize) && (tempgameconf[i] != 10 && tempgameconf[i] != 13))
|
||||
{
|
||||
if (tempgameconf[i] != 0 && tempgameconf[i] != ' ' && tempgameconf[i] != '(' && tempgameconf[i] != ':')
|
||||
parsebuffer[parsebufpos++] = tempgameconf[i++];
|
||||
else if (tempgameconf[i] == ' ' || tempgameconf[i] == '(' || tempgameconf[i] == ':')
|
||||
break;
|
||||
else
|
||||
i++;
|
||||
if (parsebufpos == 17) break;
|
||||
}
|
||||
parsebuffer[parsebufpos] = 0;
|
||||
//if (!autobootcheck)
|
||||
{
|
||||
//if (strncasecmp("addtocodelist(", parsebuffer, strlen(parsebuffer)) == 0 && strlen(parsebuffer) == 14)
|
||||
//{
|
||||
// ret = sscanf(tempgameconf + i, "%x %x", &codeaddr, &codeval);
|
||||
// if (ret == 2)
|
||||
// addtocodelist(codeaddr, codeval);
|
||||
//}
|
||||
if (strncasecmp("codeliststart", parsebuffer, strlen(parsebuffer)) == 0 && strlen(parsebuffer) == 13)
|
||||
{
|
||||
sscanf((char *)(tempgameconf + i), " = %x", (unsigned int *)&codelist);
|
||||
}
|
||||
if (strncasecmp("codelistend", parsebuffer, strlen(parsebuffer)) == 0 && strlen(parsebuffer) == 11)
|
||||
{
|
||||
sscanf((char *)(tempgameconf + i), " = %x", (unsigned int *)&codelistend);
|
||||
}
|
||||
/*
|
||||
if (strncasecmp("hooktype", parsebuffer, strlen(parsebuffer)) == 0 && strlen(parsebuffer) == 8)
|
||||
{
|
||||
if (hookset == 1)
|
||||
{
|
||||
ret = sscanf(tempgameconf + i, " = %u", &temp);
|
||||
if (ret == 1)
|
||||
if (temp >= 0 && temp <= 7)
|
||||
config_bytes[2] = temp;
|
||||
}
|
||||
}
|
||||
*/
|
||||
if (strncasecmp("poke", parsebuffer, strlen(parsebuffer)) == 0 && strlen(parsebuffer) == 4)
|
||||
{
|
||||
ret = sscanf((char *)tempgameconf + i, "( %x , %x", &codeaddr, &codeval);
|
||||
if (ret == 2)
|
||||
{
|
||||
*(gameconf + (gameconfsize / 4)) = 0;
|
||||
gameconfsize += 4;
|
||||
*(gameconf + (gameconfsize / 4)) = 0;
|
||||
gameconfsize += 8;
|
||||
*(gameconf + (gameconfsize / 4)) = codeaddr;
|
||||
gameconfsize += 4;
|
||||
*(gameconf + (gameconfsize / 4)) = codeval;
|
||||
gameconfsize += 4;
|
||||
DCFlushRange((void *) (gameconf + (gameconfsize / 4) - 5), 20);
|
||||
}
|
||||
}
|
||||
if (strncasecmp("pokeifequal", parsebuffer, strlen(parsebuffer)) == 0 && strlen(parsebuffer) == 11)
|
||||
{
|
||||
ret = sscanf((char *)(tempgameconf + i), "( %x , %x , %x , %x", &codeaddr, &codeval, &codeaddr2, &codeval2);
|
||||
if (ret == 4)
|
||||
{
|
||||
*(gameconf + (gameconfsize / 4)) = 0;
|
||||
gameconfsize += 4;
|
||||
*(gameconf + (gameconfsize / 4)) = codeaddr;
|
||||
gameconfsize += 4;
|
||||
*(gameconf + (gameconfsize / 4)) = codeval;
|
||||
gameconfsize += 4;
|
||||
*(gameconf + (gameconfsize / 4)) = codeaddr2;
|
||||
gameconfsize += 4;
|
||||
*(gameconf + (gameconfsize / 4)) = codeval2;
|
||||
gameconfsize += 4;
|
||||
DCFlushRange((void *) (gameconf + (gameconfsize / 4) - 5), 20);
|
||||
}
|
||||
}
|
||||
if (strncasecmp("searchandpoke", parsebuffer, strlen(parsebuffer)) == 0 && strlen(parsebuffer) == 13)
|
||||
{
|
||||
ret = sscanf((char *)(tempgameconf + i), "( %x%n", &codeval, &tempoffset);
|
||||
if (ret == 1)
|
||||
{
|
||||
gameconfsize += 4;
|
||||
temp = 0;
|
||||
while (ret == 1)
|
||||
{
|
||||
*(gameconf + (gameconfsize / 4)) = codeval;
|
||||
gameconfsize += 4;
|
||||
temp++;
|
||||
i += tempoffset;
|
||||
ret = sscanf((char *)(tempgameconf + i), " %x%n", &codeval, &tempoffset);
|
||||
}
|
||||
*(gameconf + (gameconfsize / 4) - temp - 1) = temp;
|
||||
ret = sscanf((char *)(tempgameconf + i), " , %x , %x , %x , %x", &codeaddr, &codeaddr2, &codeoffset, &codeval2);
|
||||
if (ret == 4)
|
||||
{
|
||||
*(gameconf + (gameconfsize / 4)) = codeaddr;
|
||||
gameconfsize += 4;
|
||||
*(gameconf + (gameconfsize / 4)) = codeaddr2;
|
||||
gameconfsize += 4;
|
||||
*(gameconf + (gameconfsize / 4)) = codeoffset;
|
||||
gameconfsize += 4;
|
||||
*(gameconf + (gameconfsize / 4)) = codeval2;
|
||||
gameconfsize += 4;
|
||||
DCFlushRange((void *) (gameconf + (gameconfsize / 4) - temp - 5), temp * 4 + 20);
|
||||
}
|
||||
else
|
||||
gameconfsize -= temp * 4 + 4;
|
||||
}
|
||||
|
||||
}
|
||||
/*
|
||||
if (strncasecmp("hook", parsebuffer, strlen(parsebuffer)) == 0 && strlen(parsebuffer) == 4)
|
||||
{
|
||||
ret = sscanf(tempgameconf + i, "( %x %x %x %x %x %x %x %x", customhook, customhook + 1, customhook + 2, customhook + 3, customhook + 4, customhook + 5, customhook + 6, customhook + 7);
|
||||
if (ret >= 3)
|
||||
{
|
||||
if (hookset != 1)
|
||||
configwarn |= 4;
|
||||
config_bytes[2] = 0x08;
|
||||
customhooksize = ret * 4;
|
||||
}
|
||||
}
|
||||
if (strncasecmp("002fix", parsebuffer, strlen(parsebuffer)) == 0 && strlen(parsebuffer) == 6)
|
||||
{
|
||||
ret = sscanf(tempgameconf + i, " = %u", &temp);
|
||||
if (ret == 1)
|
||||
if (temp >= 0 && temp <= 0x1)
|
||||
fakeiosversion = temp;
|
||||
}
|
||||
if (strncasecmp("switchios", parsebuffer, strlen(parsebuffer)) == 0 && strlen(parsebuffer) == 9)
|
||||
{
|
||||
ret = sscanf(tempgameconf + i, " = %u", &temp);
|
||||
if (ret == 1)
|
||||
if (temp >= 0 && temp <= 1)
|
||||
willswitchios = temp;
|
||||
}
|
||||
if (strncasecmp("videomode", parsebuffer, strlen(parsebuffer)) == 0 && strlen(parsebuffer) == 9)
|
||||
{
|
||||
ret = sscanf(tempgameconf + i, " = %u", &temp);
|
||||
if (ret == 1)
|
||||
{
|
||||
if (temp == 0)
|
||||
{
|
||||
if (config_bytes[1] != 0x00)
|
||||
configwarn |= 1;
|
||||
config_bytes[1] = 0x00;
|
||||
}
|
||||
else if (temp == 1)
|
||||
{
|
||||
if (config_bytes[1] != 0x03)
|
||||
configwarn |= 1;
|
||||
config_bytes[1] = 0x03;
|
||||
}
|
||||
else if (temp == 2)
|
||||
{
|
||||
if (config_bytes[1] != 0x01)
|
||||
configwarn |= 1;
|
||||
config_bytes[1] = 0x01;
|
||||
}
|
||||
else if (temp == 3)
|
||||
{
|
||||
if (config_bytes[1] != 0x02)
|
||||
configwarn |= 1;
|
||||
config_bytes[1] = 0x02;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (strncasecmp("language", parsebuffer, strlen(parsebuffer)) == 0 && strlen(parsebuffer) == 8)
|
||||
{
|
||||
ret = sscanf(tempgameconf + i, " = %u", &temp);
|
||||
if (ret == 1)
|
||||
{
|
||||
if (temp == 0)
|
||||
{
|
||||
if (config_bytes[0] != 0xCD)
|
||||
configwarn |= 2;
|
||||
config_bytes[0] = 0xCD;
|
||||
}
|
||||
else if (temp > 0 && temp <= 10)
|
||||
{
|
||||
if (config_bytes[0] != temp-1)
|
||||
configwarn |= 2;
|
||||
config_bytes[0] = temp-1;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (strncasecmp("diagnostic", parsebuffer, strlen(parsebuffer)) == 0 && strlen(parsebuffer) == 10)
|
||||
{
|
||||
ret = sscanf(tempgameconf + i, " = %u", &temp);
|
||||
if (ret == 1)
|
||||
{
|
||||
if (temp == 0 || temp == 1)
|
||||
diagcreate = temp;
|
||||
}
|
||||
}
|
||||
if (strncasecmp("vidtv", parsebuffer, strlen(parsebuffer)) == 0 && strlen(parsebuffer) == 5)
|
||||
{
|
||||
ret = sscanf(tempgameconf + i, " = %u", &temp);
|
||||
if (ret == 1)
|
||||
if (temp >= 0 && temp <= 1)
|
||||
vipatchon = temp;
|
||||
}
|
||||
if (strncasecmp("fwritepatch", parsebuffer, strlen(parsebuffer)) == 0 && strlen(parsebuffer) == 11)
|
||||
{
|
||||
ret = sscanf(tempgameconf + i, " = %u", &temp);
|
||||
if (ret == 1)
|
||||
if (temp >= 0 && temp <= 1)
|
||||
applyfwritepatch = temp;
|
||||
}
|
||||
if (strncasecmp("dumpmaindol", parsebuffer, strlen(parsebuffer)) == 0 && strlen(parsebuffer) == 11)
|
||||
{
|
||||
ret = sscanf(tempgameconf + i, " = %u", &temp);
|
||||
if (ret == 1)
|
||||
if (temp >= 0 && temp <= 1)
|
||||
dumpmaindol = temp;
|
||||
}
|
||||
*/
|
||||
}
|
||||
/*else
|
||||
{
|
||||
|
||||
if (strncasecmp("autoboot", parsebuffer, strlen(parsebuffer)) == 0 && strlen(parsebuffer) == 8)
|
||||
{
|
||||
ret = sscanf(tempgameconf + i, " = %u", &temp);
|
||||
if (ret == 1)
|
||||
if (temp >= 0 && temp <= 1)
|
||||
autoboot = temp;
|
||||
}
|
||||
if (strncasecmp("autobootwait", parsebuffer, strlen(parsebuffer)) == 0 && strlen(parsebuffer) == 12)
|
||||
{
|
||||
ret = sscanf(tempgameconf + i, " = %u", &temp);
|
||||
if (ret == 1)
|
||||
if (temp >= 0 && temp <= 255)
|
||||
autobootwait = temp;
|
||||
}
|
||||
if (strncasecmp("autoboothbc", parsebuffer, strlen(parsebuffer)) == 0 && strlen(parsebuffer) == 11)
|
||||
{
|
||||
ret = sscanf(tempgameconf + i, " = %u", &temp);
|
||||
if (ret == 1)
|
||||
if (temp >= 0 && temp <= 1)
|
||||
autoboothbc = temp;
|
||||
}
|
||||
if (strncasecmp("autobootocarina", parsebuffer, strlen(parsebuffer)) == 0 && strlen(parsebuffer) == 15)
|
||||
{
|
||||
ret = sscanf(tempgameconf + i, " = %u", &temp);
|
||||
if (ret == 1)
|
||||
if (temp >= 0 && temp <= 1)
|
||||
config_bytes[4] = temp;
|
||||
}
|
||||
if (strncasecmp("autobootdebugger", parsebuffer, strlen(parsebuffer)) == 0 && strlen(parsebuffer) == 16)
|
||||
{
|
||||
ret = sscanf(tempgameconf + i, " = %u", &temp);
|
||||
if (ret == 1)
|
||||
if (temp >= 0 && temp <= 1)
|
||||
config_bytes[7] = temp;
|
||||
}
|
||||
if (strncasecmp("rebootermenuitem", parsebuffer, strlen(parsebuffer)) == 0 && strlen(parsebuffer) == 16)
|
||||
{
|
||||
ret = sscanf(tempgameconf + i, " = %u", &temp);
|
||||
if (ret == 1)
|
||||
if (temp >= 0 && temp <= 1)
|
||||
rebooterasmenuitem = temp;
|
||||
}
|
||||
if (strncasecmp("startupios", parsebuffer, strlen(parsebuffer)) == 0 && strlen(parsebuffer) == 10)
|
||||
{
|
||||
ret = sscanf(tempgameconf + i, " = %u", &temp);
|
||||
if (ret == 1)
|
||||
if (temp >= 0 && temp <= 255)
|
||||
{
|
||||
sdio_Shutdown();
|
||||
IOS_ReloadIOS(temp);
|
||||
detectIOScapabilities();
|
||||
sd_init();
|
||||
startupiosloaded = 1;
|
||||
}
|
||||
}
|
||||
|
||||
}*/
|
||||
if (tempgameconf[i] != ':')
|
||||
{
|
||||
while ((i != tempgameconfsize) && (tempgameconf[i] != 10 && tempgameconf[i] != 13)) i++;
|
||||
if (i != tempgameconfsize) i++;
|
||||
}
|
||||
}
|
||||
if (i != tempgameconfsize) while ((tempgameconf[i] != 10 && tempgameconf[i] != 13) && (i != 0)) i--;
|
||||
}
|
||||
}
|
||||
|
||||
free(tempgameconf);
|
||||
//tempcodelist = ((u8 *) gameconf) + gameconfsize;
|
||||
}
|
||||
|
||||
u8 *code_buf = NULL;
|
||||
int code_size = 0;
|
||||
|
||||
int ocarina_load_code(u8 *id)
|
||||
{
|
||||
if (debuggerselect == 0x00)
|
||||
codelist = (u8 *) 0x800022A8;
|
||||
else
|
||||
codelist = (u8 *) 0x800028B8;
|
||||
codelistend = (u8 *) 0x80003000;
|
||||
|
||||
|
||||
app_loadgameconfig((char *)id);
|
||||
|
||||
char filepath[150];
|
||||
|
||||
//SDCard_Init();
|
||||
//USBDevice_Init();
|
||||
gprintf("Ocarina: Searching codes...");
|
||||
gprintf("\n");
|
||||
|
||||
sprintf(filepath, "%s%s", Settings.Cheatcodespath, filename);
|
||||
sprintf(filepath, "%s%s", Settings.Cheatcodespath, (char *) id);
|
||||
filepath[strlen(Settings.Cheatcodespath)+6] = 0x2E;
|
||||
filepath[strlen(Settings.Cheatcodespath)+7] = 0x67;
|
||||
filepath[strlen(Settings.Cheatcodespath)+8] = 0x63;
|
||||
filepath[strlen(Settings.Cheatcodespath)+9] = 0x74;
|
||||
filepath[strlen(Settings.Cheatcodespath)+10] = 0;
|
||||
|
||||
fp = fopen(filepath, "rb");
|
||||
FILE * fp = fopen(filepath, "rb");
|
||||
if(!fp) {
|
||||
USBDevice_deInit();
|
||||
SDCard_deInit();
|
||||
gprintf("\n\tcan't open %s",filepath);
|
||||
printf("\n\tcan't open %s",filepath);
|
||||
sleep(10);
|
||||
gprintf("Ocarina: No codes found");
|
||||
printf("\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
fseek(fp, 0, SEEK_END);
|
||||
filesize = ftell(fp);
|
||||
if(filesize <= 16 || filesize>MAX_GCT_SIZE){
|
||||
u32 filesize = ftell(fp);
|
||||
rewind(fp);
|
||||
|
||||
code_buf = (u8*) malloc(filesize);
|
||||
if (!code_buf) {
|
||||
gprintf("Ocarina: No codes found");
|
||||
printf("\n");
|
||||
fclose(fp);
|
||||
sleep(2);
|
||||
USBDevice_deInit();
|
||||
SDCard_deInit();
|
||||
gprintf("\n\tError. size = %d",filesize);
|
||||
printf("\n\tError. size = %d",filesize);
|
||||
sleep(10);
|
||||
return 0;
|
||||
}
|
||||
fseek(fp, 0, SEEK_SET);
|
||||
|
||||
code_size = fread(code_buf, 1, filesize, fp);
|
||||
|
||||
ret = fread(&filebuff, 1, filesize, fp);
|
||||
if(ret != filesize){
|
||||
fclose(fp);
|
||||
USBDevice_deInit();
|
||||
SDCard_deInit();
|
||||
gprintf("\n\tError. ret != size");
|
||||
printf("\n\tError. ret != size");
|
||||
sleep(10);
|
||||
|
||||
if(code_size <= 0) {
|
||||
gprintf("Ocarina: could not read file.");
|
||||
gprintf("\n");
|
||||
free(code_buf);
|
||||
code_buf = NULL;
|
||||
code_size = 0;
|
||||
return 0;
|
||||
}
|
||||
fclose(fp);
|
||||
//USBDevice_deInit();
|
||||
//SDCard_deInit();
|
||||
|
||||
memcpy((void*)0x800027E8, &filebuff,filesize);
|
||||
*(vu8*)0x80001807 = 0x01;
|
||||
//gprintf("\n\tDe-init SD & USB");
|
||||
if (code_size > (u32)codelistend - (u32)codelist)
|
||||
{
|
||||
gprintf("Ocarina: Too many codes found");
|
||||
gprintf("\n");
|
||||
free(code_buf);
|
||||
code_buf = NULL;
|
||||
code_size = 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
gprintf("Ocarina: Codes found.");
|
||||
gprintf("\n");
|
||||
|
||||
return code_size;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------
|
||||
void app_pokevalues()
|
||||
//---------------------------------------------------------------------------------
|
||||
{
|
||||
u32 i, *codeaddr, *codeaddr2, *addrfound = NULL;
|
||||
|
||||
if (gameconfsize != 0)
|
||||
{
|
||||
for (i = 0; i < gameconfsize/4; i++)
|
||||
{
|
||||
if (*(gameconf + i) == 0)
|
||||
{
|
||||
if (((u32 *) (*(gameconf + i + 1))) == NULL ||
|
||||
*((u32 *) (*(gameconf + i + 1))) == *(gameconf + i + 2))
|
||||
{
|
||||
*((u32 *) (*(gameconf + i + 3))) = *(gameconf + i + 4);
|
||||
DCFlushRange((void *) *(gameconf + i + 3), 4);
|
||||
}
|
||||
i += 4;
|
||||
}
|
||||
else
|
||||
{
|
||||
codeaddr = (u32 *)*(gameconf + i + *(gameconf + i) + 1);
|
||||
codeaddr2 = (u32 *)*(gameconf + i + *(gameconf + i) + 2);
|
||||
if (codeaddr == 0 && addrfound != NULL)
|
||||
codeaddr = addrfound;
|
||||
else if (codeaddr == 0 && codeaddr2 != 0)
|
||||
codeaddr = (u32 *) ((((u32) codeaddr2) >> 28) << 28);
|
||||
else if (codeaddr == 0 && codeaddr2 == 0)
|
||||
{
|
||||
i += *(gameconf + i) + 4;
|
||||
continue;
|
||||
}
|
||||
if (codeaddr2 == 0)
|
||||
codeaddr2 = codeaddr + *(gameconf + i);
|
||||
addrfound = NULL;
|
||||
while (codeaddr <= (codeaddr2 - *(gameconf + i)))
|
||||
{
|
||||
if (memcmp(codeaddr, gameconf + i + 1, (*(gameconf + i)) * 4) == 0)
|
||||
{
|
||||
*(codeaddr + ((*(gameconf + i + *(gameconf + i) + 3)) / 4)) = *(gameconf + i + *(gameconf + i) + 4);
|
||||
if (addrfound == NULL) addrfound = codeaddr;
|
||||
}
|
||||
codeaddr++;
|
||||
}
|
||||
i += *(gameconf + i) + 4;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//---------------------------------------------------------------------------------
|
||||
void load_handler()
|
||||
//---------------------------------------------------------------------------------
|
||||
{
|
||||
if (hooktype != 0x00)
|
||||
{
|
||||
if (debuggerselect == 0x01)
|
||||
{
|
||||
/*switch(gecko_channel)
|
||||
{
|
||||
case 0: // Slot A
|
||||
|
||||
gprintf("\n\tDone");
|
||||
printf("...Done");
|
||||
memset((void*)0x80001800,0,codehandlerslota_size);
|
||||
memcpy((void*)0x80001800,codehandlerslota,codehandlerslota_size);
|
||||
if (pausedstartoption == 0x01)
|
||||
*(u32*)0x80002798 = 1;
|
||||
memcpy((void*)0x80001CDE, &codelist, 2);
|
||||
memcpy((void*)0x80001CE2, ((u8*) &codelist) + 2, 2);
|
||||
memcpy((void*)0x80001F7E, &codelist, 2);
|
||||
memcpy((void*)0x80001F82, ((u8*) &codelist) + 2, 2);
|
||||
DCFlushRange((void*)0x80001800,codehandlerslota_size);
|
||||
break;
|
||||
|
||||
case 1: // slot B
|
||||
*/ memset((void*)0x80001800,0,codehandler_size);
|
||||
memcpy((void*)0x80001800,codehandler,codehandler_size);
|
||||
//TODO for oggzee: Consider adding an option for paused start, debugging related
|
||||
//if (pausedstartoption == 0x01)
|
||||
// *(u32*)0x80002798 = 1;
|
||||
memcpy((void*)0x80001CDE, &codelist, 2);
|
||||
memcpy((void*)0x80001CE2, ((u8*) &codelist) + 2, 2);
|
||||
memcpy((void*)0x80001F5A, &codelist, 2);
|
||||
memcpy((void*)0x80001F5E, ((u8*) &codelist) + 2, 2);
|
||||
DCFlushRange((void*)0x80001800,codehandler_size);
|
||||
/* break;
|
||||
|
||||
case 2:
|
||||
memset((void*)0x80001800,0,codehandler_size);
|
||||
memcpy((void*)0x80001800,codehandler,codehandler_size);
|
||||
if (pausedstartoption == 0x01)
|
||||
*(u32*)0x80002798 = 1;
|
||||
memcpy((void*)0x80001CDE, &codelist, 2);
|
||||
memcpy((void*)0x80001CE2, ((u8*) &codelist) + 2, 2);
|
||||
memcpy((void*)0x80001F5A, &codelist, 2);
|
||||
memcpy((void*)0x80001F5E, ((u8*) &codelist) + 2, 2);
|
||||
DCFlushRange((void*)0x80001800,codehandler_size);
|
||||
break;
|
||||
}*/
|
||||
}
|
||||
else
|
||||
{
|
||||
memset((void*)0x80001800,0,codehandleronly_size);
|
||||
memcpy((void*)0x80001800,codehandleronly,codehandleronly_size);
|
||||
memcpy((void*)0x80001906, &codelist, 2);
|
||||
memcpy((void*)0x8000190A, ((u8*) &codelist) + 2, 2);
|
||||
DCFlushRange((void*)0x80001800,codehandleronly_size);
|
||||
}
|
||||
// Load multidol handler
|
||||
memset((void*)0x80001000,0,multidol_size);
|
||||
memcpy((void*)0x80001000,multidol,multidol_size);
|
||||
DCFlushRange((void*)0x80001000,multidol_size);
|
||||
switch(hooktype)
|
||||
{
|
||||
case 0x01:
|
||||
memcpy((void*)0x8000119C,viwiihooks,12);
|
||||
memcpy((void*)0x80001198,viwiihooks+3,4);
|
||||
break;
|
||||
case 0x02:
|
||||
memcpy((void*)0x8000119C,kpadhooks,12);
|
||||
memcpy((void*)0x80001198,kpadhooks+3,4);
|
||||
break;
|
||||
case 0x03:
|
||||
memcpy((void*)0x8000119C,joypadhooks,12);
|
||||
memcpy((void*)0x80001198,joypadhooks+3,4);
|
||||
break;
|
||||
case 0x04:
|
||||
memcpy((void*)0x8000119C,gxdrawhooks,12);
|
||||
memcpy((void*)0x80001198,gxdrawhooks+3,4);
|
||||
break;
|
||||
case 0x05:
|
||||
memcpy((void*)0x8000119C,gxflushhooks,12);
|
||||
memcpy((void*)0x80001198,gxflushhooks+3,4);
|
||||
break;
|
||||
case 0x06:
|
||||
memcpy((void*)0x8000119C,ossleepthreadhooks,12);
|
||||
memcpy((void*)0x80001198,ossleepthreadhooks+3,4);
|
||||
break;
|
||||
case 0x07:
|
||||
memcpy((void*)0x8000119C,axnextframehooks,12);
|
||||
memcpy((void*)0x80001198,axnextframehooks+3,4);
|
||||
break;
|
||||
case 0x08:
|
||||
//if (customhooksize == 16)
|
||||
//{
|
||||
// memcpy((void*)0x8000119C,customhook,12);
|
||||
// memcpy((void*)0x80001198,customhook+3,4);
|
||||
//}
|
||||
break;
|
||||
case 0x09:
|
||||
//memcpy((void*)0x8000119C,wpadbuttonsdownhooks,12);
|
||||
//memcpy((void*)0x80001198,wpadbuttonsdownhooks+3,4);
|
||||
break;
|
||||
case 0x0A:
|
||||
//memcpy((void*)0x8000119C,wpadbuttonsdown2hooks,12);
|
||||
//memcpy((void*)0x80001198,wpadbuttonsdown2hooks+3,4);
|
||||
break;
|
||||
}
|
||||
DCFlushRange((void*)0x80001198,16);
|
||||
}
|
||||
memcpy((void *)0x80001800, (void*)0x80000000, 6);
|
||||
}
|
||||
|
||||
int ocarina_do_code()
|
||||
{
|
||||
if (!code_buf) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
memset((void *)0x80001800, 0, 0x1800);
|
||||
|
||||
load_handler();
|
||||
memset(codelist, 0, (u32)codelistend - (u32)codelist);
|
||||
|
||||
//Copy the codes
|
||||
if (code_size > 0)
|
||||
{
|
||||
memcpy(codelist, code_buf, code_size);
|
||||
DCFlushRange(codelist, (u32)codelistend - (u32)codelist);
|
||||
free(code_buf);
|
||||
code_buf = NULL;
|
||||
}
|
||||
|
||||
// TODO What's this???
|
||||
// enable flag
|
||||
//*(vu8*)0x80001807 = 0x01;
|
||||
|
||||
//This needs to be done after loading the .dol into memory
|
||||
app_pokevalues();
|
||||
|
||||
// hooks are patched in dogamehooks()
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -23,19 +23,19 @@
|
||||
#define __FST_H__
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
extern "C" {
|
||||
#endif
|
||||
//u32 do_fst(u32 fstlocation);
|
||||
//u32 do_sd_code(char *filename);
|
||||
|
||||
#define MAX_GCT_SIZE 2056
|
||||
|
||||
//u32 do_fst(u32 fstlocation);
|
||||
u32 do_sd_code(char *filename);
|
||||
u32 do_bca_code(u8 *gameid);
|
||||
int ocarina_load_code(u8 *id);
|
||||
int ocarina_do_code();
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
36
source/patches/multidol.c
Normal file
36
source/patches/multidol.c
Normal file
@ -0,0 +1,36 @@
|
||||
/*
|
||||
This file was autogenerated by raw2c.
|
||||
Visit http://www.devkitpro.org
|
||||
*/
|
||||
|
||||
const unsigned char multidol[] = {
|
||||
0x7f, 0xe8, 0x03, 0xa6, 0x7c, 0x08, 0x02, 0xa6, 0x90, 0x01, 0x00, 0xac, 0x7c, 0x00, 0x00, 0x26,
|
||||
0x90, 0x01, 0x00, 0x0c, 0x7c, 0x09, 0x02, 0xa6, 0x90, 0x01, 0x00, 0x10, 0x7c, 0x01, 0x02, 0xa6,
|
||||
0x90, 0x01, 0x00, 0x14, 0xbc, 0x61, 0x00, 0x18, 0x3c, 0x60, 0x80, 0x00, 0x60, 0x63, 0x18, 0xa8,
|
||||
0x3c, 0xe0, 0x80, 0x00, 0x60, 0xe7, 0x11, 0x98, 0x3e, 0x60, 0x80, 0x00, 0x62, 0x73, 0x11, 0x88,
|
||||
0x3e, 0x40, 0x4e, 0x80, 0x62, 0x52, 0x00, 0x20, 0x81, 0xc7, 0x00, 0x04, 0x81, 0xe7, 0x00, 0x08,
|
||||
0x82, 0x07, 0x00, 0x0c, 0x82, 0x27, 0x00, 0x00, 0x3c, 0x80, 0x80, 0x00, 0x3c, 0xa0, 0x81, 0x33,
|
||||
0x38, 0x84, 0xff, 0xfc, 0x84, 0xc4, 0x00, 0x04, 0x7c, 0x04, 0x28, 0x00, 0x40, 0x80, 0x00, 0x4c,
|
||||
0x7c, 0x06, 0x70, 0x00, 0x40, 0x82, 0xff, 0xf0, 0x84, 0xc4, 0x00, 0x04, 0x7c, 0x06, 0x78, 0x00,
|
||||
0x40, 0x82, 0xff, 0xe0, 0x84, 0xc4, 0x00, 0x04, 0x7c, 0x06, 0x80, 0x00, 0x40, 0x82, 0xff, 0xd4,
|
||||
0x84, 0xc4, 0x00, 0x04, 0x7c, 0x06, 0x88, 0x00, 0x40, 0x82, 0xff, 0xc8, 0x84, 0xc4, 0x00, 0x04,
|
||||
0x7c, 0x04, 0x28, 0x00, 0x40, 0x80, 0x00, 0x14, 0x7c, 0x06, 0x90, 0x00, 0x40, 0x82, 0xff, 0xf0,
|
||||
0x48, 0x00, 0x00, 0xad, 0x4b, 0xff, 0xff, 0xb0, 0x3c, 0x60, 0x80, 0x00, 0x60, 0x63, 0x10, 0x00,
|
||||
0x3e, 0x60, 0x80, 0x00, 0x62, 0x73, 0x11, 0x90, 0x3c, 0xe0, 0x80, 0x00, 0x60, 0xe7, 0x11, 0xa8,
|
||||
0x81, 0xc7, 0x00, 0x04, 0x81, 0xe7, 0x00, 0x08, 0x82, 0x07, 0x00, 0x0c, 0x82, 0x27, 0x00, 0x00,
|
||||
0x3c, 0x80, 0x80, 0x00, 0x3c, 0xa0, 0x81, 0x40, 0x38, 0x84, 0xff, 0xfc, 0x84, 0xc4, 0x00, 0x04,
|
||||
0x7c, 0x04, 0x28, 0x00, 0x40, 0x80, 0x00, 0x38, 0x7c, 0x06, 0x70, 0x00, 0x40, 0x82, 0xff, 0xf0,
|
||||
0x84, 0xc4, 0x00, 0x04, 0x7c, 0x06, 0x78, 0x00, 0x40, 0x82, 0xff, 0xe0, 0x84, 0xc4, 0x00, 0x04,
|
||||
0x7c, 0x06, 0x80, 0x00, 0x40, 0x82, 0xff, 0xd4, 0x84, 0xc4, 0x00, 0x04, 0x7c, 0x06, 0x88, 0x00,
|
||||
0x40, 0x82, 0xff, 0xc8, 0x48, 0x00, 0x00, 0x39, 0x4b, 0xff, 0xff, 0xc4, 0x80, 0x01, 0x00, 0xac,
|
||||
0x7c, 0x08, 0x03, 0xa6, 0x80, 0x01, 0x00, 0x0c, 0x7c, 0x0f, 0xf1, 0x20, 0x80, 0x01, 0x00, 0x10,
|
||||
0x7c, 0x09, 0x03, 0xa6, 0x80, 0x01, 0x00, 0x14, 0x7c, 0x01, 0x03, 0xa6, 0xb8, 0x61, 0x00, 0x18,
|
||||
0x80, 0x01, 0x00, 0x08, 0x38, 0x21, 0x00, 0xa8, 0x48, 0x00, 0x07, 0x50, 0x7e, 0x44, 0x18, 0x50,
|
||||
0x3c, 0xc0, 0x48, 0x00, 0x52, 0x46, 0x01, 0xba, 0x90, 0xc4, 0x00, 0x00, 0x90, 0xd3, 0x00, 0x00,
|
||||
0x90, 0x93, 0x00, 0x04, 0x7c, 0x00, 0x20, 0xac, 0x7c, 0x00, 0x04, 0xac, 0x7c, 0x00, 0x27, 0xac,
|
||||
0x4c, 0x00, 0x01, 0x2c, 0x4e, 0x80, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0xc7, 0x00, 0x4c, 0x7c, 0xe3, 0x3b, 0x78,
|
||||
0x38, 0x87, 0x00, 0x34, 0x38, 0xa7, 0x00, 0x38, 0x4e, 0x80, 0x04, 0x20, 0x7c, 0x00, 0x04, 0xac,
|
||||
0x4c, 0x00, 0x01, 0x2c, 0x7f, 0xe9, 0x03, 0xa6
|
||||
};
|
||||
const int multidol_size = sizeof(multidol);
|
14
source/patches/multidol.h
Normal file
14
source/patches/multidol.h
Normal file
@ -0,0 +1,14 @@
|
||||
/*
|
||||
This file was autogenerated by raw2c.
|
||||
Visit http://www.devkitpro.org
|
||||
*/
|
||||
|
||||
//---------------------------------------------------------------------------------
|
||||
#ifndef _multidol_h_
|
||||
#define _multidol_h_
|
||||
//---------------------------------------------------------------------------------
|
||||
extern const unsigned char multidol[];
|
||||
extern const int multidol_size;
|
||||
//---------------------------------------------------------------------------------
|
||||
#endif //_multidol_h_
|
||||
//---------------------------------------------------------------------------------
|
@ -1,37 +1,21 @@
|
||||
/*
|
||||
* Copyright (C) 2008 Nuke (wiinuke@gmail.com)
|
||||
*
|
||||
* this file is part of GeckoOS for USB Gecko
|
||||
* http://www.usbgecko.com
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <gccore.h>
|
||||
#include <sys/unistd.h>
|
||||
|
||||
#include "usbloader/apploader.h"
|
||||
#include "geckomenu.h"
|
||||
#include "patchcode.h"
|
||||
#include "fwrite_patch.h"
|
||||
|
||||
//#include "sd.h"
|
||||
//#include "fwrite_patch.h"
|
||||
//#include "fwrite_patch_slota.h"
|
||||
//#include "main.h"
|
||||
|
||||
extern void patchhook(u32 address, u32 len);
|
||||
extern void patchhook2(u32 address, u32 len);
|
||||
extern void patchhook3(u32 address, u32 len);
|
||||
extern void patchhook4(u32 address, u32 len);
|
||||
|
||||
extern void multidolpatchone(u32 address, u32 len);
|
||||
extern void multidolpatchtwo(u32 address, u32 len);
|
||||
|
||||
@ -51,15 +35,9 @@ extern void patchupdatecheck(u32 address, u32 len);
|
||||
|
||||
extern void movedvdhooks(u32 address, u32 len);
|
||||
|
||||
|
||||
extern void patchhookdol(u32 address, u32 len);
|
||||
extern void multidolhook(u32 address);
|
||||
extern void langvipatch(u32 address, u32 len, u8 langbyte);
|
||||
extern void vipatch(u32 address, u32 len);
|
||||
extern u32 regionfreeselect;
|
||||
|
||||
static const u32 viwiihooks[4] = {
|
||||
0x7CE33B78,0x38870034,0x38A70038,0x38C7004C
|
||||
};
|
||||
|
||||
static const u32 multidolpatch1[2] = {
|
||||
0x3C03FFB4,0x28004F43
|
||||
@ -110,106 +88,241 @@ static const u32 movedvdpatch[3] = {
|
||||
0x2C040000, 0x41820120, 0x3C608109
|
||||
};
|
||||
|
||||
|
||||
|
||||
static const u32 regionfreehooks[5] = {
|
||||
0x7C600774, 0x2C000001, 0x41820030,0x40800010,0x2C000000
|
||||
};
|
||||
|
||||
static const u32 cIOScode[16] = {
|
||||
0x7f06c378, 0x7f25cb78, 0x387e02c0, 0x4cc63182
|
||||
};
|
||||
|
||||
static const u32 cIOSblock[16] = {
|
||||
0x2C1800F9, 0x40820008, 0x3B000024
|
||||
};
|
||||
|
||||
static const u32 fwritepatch[8] = {
|
||||
0x9421FFD0,0x7C0802A6,0x90010034,0xBF210014,0x7C9B2378,0x7CDC3378,0x7C7A1B78,0x7CB92B78 // bushing fwrite
|
||||
};
|
||||
|
||||
static const u32 kpadhooks[4] = {
|
||||
0x9A3F005E,0x38AE0080,0x389FFFFC,0x7E0903A6
|
||||
};
|
||||
|
||||
static const u32 kpadoldhooks[6] = {
|
||||
0x801D0060, 0x901E0060, 0x801D0064, 0x901E0064, 0x801D0068, 0x901E0068
|
||||
};
|
||||
|
||||
static const u32 joypadhooks[4] = {
|
||||
0x3AB50001, 0x3A73000C, 0x2C150004, 0x3B18000C
|
||||
};
|
||||
|
||||
static const u32 langpatch[3] = {
|
||||
0x7C600775, 0x40820010, 0x38000000
|
||||
};
|
||||
|
||||
static const u32 vipatchcode[3] = {
|
||||
0x4182000C,0x4180001C,0x48000018
|
||||
};
|
||||
|
||||
static const u32 wpadlibogc[5] = {
|
||||
// 0x38A00140, 0x7C095878, 0x7D600078, 0x901F0010,0x913F0014
|
||||
// 0x7FA00124, 0x8001001C, 0x83810008, 0x83A1000C,0x7C0803A6
|
||||
0x90A402E0,0x806502E4,0x908502E4,0x2C030000,0x906402E4
|
||||
const u32 viwiihooks[4] = {
|
||||
0x7CE33B78,0x38870034,0x38A70038,0x38C7004C
|
||||
};
|
||||
|
||||
void dogamehooks(void *addr, u32 len, bool vpatch)
|
||||
const u32 kpadhooks[4] = {
|
||||
0x9A3F005E,0x38AE0080,0x389FFFFC,0x7E0903A6
|
||||
};
|
||||
|
||||
const u32 kpadoldhooks[6] = {
|
||||
0x801D0060, 0x901E0060, 0x801D0064, 0x901E0064, 0x801D0068, 0x901E0068
|
||||
};
|
||||
|
||||
const u32 joypadhooks[4] = {
|
||||
0x3AB50001, 0x3A73000C, 0x2C150004, 0x3B18000C
|
||||
};
|
||||
|
||||
const u32 gxdrawhooks[4] = {
|
||||
0x3CA0CC01, 0x38000061, 0x3C804500, 0x98058000
|
||||
};
|
||||
|
||||
const u32 gxflushhooks[4] = {
|
||||
0x90010014, 0x800305FC, 0x2C000000, 0x41820008
|
||||
};
|
||||
|
||||
const u32 ossleepthreadhooks[4] = {
|
||||
0x90A402E0, 0x806502E4, 0x908502E4, 0x2C030000
|
||||
};
|
||||
|
||||
const u32 axnextframehooks[4] = {
|
||||
0x3800000E, 0x7FE3FB78, 0xB0050000, 0x38800080
|
||||
};
|
||||
|
||||
const u32 wpadbuttonsdownhooks[4] = {
|
||||
0x7D6B4A14, 0x816B0010, 0x7D635B78, 0x4E800020
|
||||
};
|
||||
|
||||
const u32 wpadbuttonsdown2hooks[4] = {
|
||||
0x7D6B4A14, 0x800B0010, 0x7C030378, 0x4E800020
|
||||
};
|
||||
|
||||
const u32 multidolhooks[4] = {
|
||||
0x7C0004AC, 0x4C00012C, 0x7FE903A6, 0x4E800420
|
||||
};
|
||||
|
||||
const u32 multidolchanhooks[4] = {
|
||||
0x4200FFF4, 0x48000004, 0x38800000, 0x4E800020
|
||||
};
|
||||
|
||||
const u32 langpatch[3] = {
|
||||
0x7C600775, 0x40820010, 0x38000000
|
||||
};
|
||||
|
||||
static const u32 oldpatch002[3] = {
|
||||
0x2C000000, 0x40820214, 0x3C608000
|
||||
};
|
||||
|
||||
static const u32 newpatch002[3] = {
|
||||
0x2C000000, 0x48000214, 0x3C608000
|
||||
};
|
||||
|
||||
//---------------------------------------------------------------------------------
|
||||
bool dogamehooks(void *addr, u32 len)
|
||||
//---------------------------------------------------------------------------------
|
||||
{
|
||||
//TODO for oggzee: when using Ocarina check if a hook as patched
|
||||
|
||||
hooktype = 1; // TODO for oggzee: Create an option for hooktype
|
||||
/*
|
||||
0 No Hook
|
||||
1 VBI
|
||||
2 KPAD read
|
||||
3 Joypad Hook
|
||||
4 GXDraw Hook
|
||||
5 GXFlush Hook
|
||||
6 OSSleepThread Hook
|
||||
7 AXNextFrame Hook
|
||||
*/
|
||||
|
||||
void *addr_start = addr;
|
||||
void *addr_end = addr+len;
|
||||
bool hookpatched = false;
|
||||
|
||||
while(addr_start < addr_end)
|
||||
{
|
||||
|
||||
switch(hooktype)
|
||||
{
|
||||
|
||||
case 0:
|
||||
|
||||
case 0x00:
|
||||
hookpatched = true;
|
||||
break;
|
||||
|
||||
case 1:
|
||||
if(memcmp(addr_start, viwiihooks, sizeof(viwiihooks))==0){
|
||||
// printf("\n\n\n");
|
||||
// printf("found at address %x\n", addr_start);
|
||||
// sleep(2);
|
||||
case 0x01:
|
||||
if(memcmp(addr_start, viwiihooks, sizeof(viwiihooks))==0)
|
||||
{
|
||||
patchhook((u32)addr_start, len);
|
||||
patched = 1;
|
||||
hooktype = 1;
|
||||
hookpatched = true;
|
||||
}
|
||||
if(memcmp(addr_start, multidolhooks, sizeof(multidolhooks))==0)
|
||||
{
|
||||
multidolhook((u32)addr_start+sizeof(multidolhooks)-4);
|
||||
hookpatched = true;
|
||||
}
|
||||
break;
|
||||
|
||||
case 2:
|
||||
case 0x02:
|
||||
|
||||
if(memcmp(addr_start, viwiihooks, sizeof(viwiihooks))==0){
|
||||
patchhook2((u32)addr_start, len);
|
||||
if(memcmp(addr_start, kpadhooks, sizeof(kpadhooks))==0)
|
||||
{
|
||||
patchhook((u32)addr_start, len);
|
||||
hookpatched = true;
|
||||
}
|
||||
|
||||
if(memcmp(addr_start, kpadoldhooks, sizeof(kpadoldhooks))==0)
|
||||
{
|
||||
patchhook((u32)addr_start, len);
|
||||
hookpatched = true;
|
||||
}
|
||||
if(memcmp(addr_start, multidolhooks, sizeof(multidolhooks))==0)
|
||||
{
|
||||
multidolhook((u32)addr_start+sizeof(multidolhooks)-4);
|
||||
hookpatched = true;
|
||||
}
|
||||
break;
|
||||
|
||||
// multidol
|
||||
case 3:
|
||||
case 0x03:
|
||||
|
||||
if(memcmp(addr_start, multidolpatch1, sizeof(multidolpatch1))==0){
|
||||
multidolpatchone((u32)addr_start, len);
|
||||
if(memcmp(addr_start, joypadhooks, sizeof(joypadhooks))==0)
|
||||
{
|
||||
patchhook((u32)addr_start, len);
|
||||
hookpatched = true;
|
||||
}
|
||||
if(memcmp(addr_start, multidolpatch2, sizeof(multidolpatch2))==0){
|
||||
multidolpatchtwo((u32)addr_start, len);
|
||||
if(memcmp(addr_start, multidolhooks, sizeof(multidolhooks))==0)
|
||||
{
|
||||
multidolhook((u32)addr_start+sizeof(multidolhooks)-4);
|
||||
hookpatched = true;
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x04:
|
||||
|
||||
if(memcmp(addr_start, gxdrawhooks, sizeof(gxdrawhooks))==0)
|
||||
{
|
||||
patchhook((u32)addr_start, len);
|
||||
hookpatched = true;
|
||||
}
|
||||
if(memcmp(addr_start, multidolhooks, sizeof(multidolhooks))==0)
|
||||
{
|
||||
multidolhook((u32)addr_start+sizeof(multidolhooks)-4);
|
||||
hookpatched = true;
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x05:
|
||||
|
||||
if(memcmp(addr_start, gxflushhooks, sizeof(gxflushhooks))==0)
|
||||
{
|
||||
patchhook((u32)addr_start, len);
|
||||
hookpatched = true;
|
||||
}
|
||||
if(memcmp(addr_start, multidolhooks, sizeof(multidolhooks))==0)
|
||||
{
|
||||
multidolhook((u32)addr_start+sizeof(multidolhooks)-4);
|
||||
hookpatched = true;
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x06:
|
||||
|
||||
if(memcmp(addr_start, ossleepthreadhooks, sizeof(ossleepthreadhooks))==0)
|
||||
{
|
||||
patchhook((u32)addr_start, len);
|
||||
hookpatched = true;
|
||||
}
|
||||
if(memcmp(addr_start, multidolhooks, sizeof(multidolhooks))==0)
|
||||
{
|
||||
multidolhook((u32)addr_start+sizeof(multidolhooks)-4);
|
||||
hookpatched = true;
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x07:
|
||||
|
||||
if(memcmp(addr_start, axnextframehooks, sizeof(axnextframehooks))==0)
|
||||
{
|
||||
patchhook((u32)addr_start, len);
|
||||
hookpatched = true;
|
||||
}
|
||||
if(memcmp(addr_start, multidolhooks, sizeof(multidolhooks))==0)
|
||||
{
|
||||
multidolhook((u32)addr_start+sizeof(multidolhooks)-4);
|
||||
hookpatched = true;
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x08:
|
||||
|
||||
//if(memcmp(addr_start, customhook, customhooksize)==0)
|
||||
//{
|
||||
// patchhook((u32)addr_start, len);
|
||||
// hookpatched = true;
|
||||
//}
|
||||
if(memcmp(addr_start, multidolhooks, sizeof(multidolhooks))==0)
|
||||
{
|
||||
multidolhook((u32)addr_start+sizeof(multidolhooks)-4);
|
||||
hookpatched = true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (vpatch){
|
||||
if(memcmp(addr_start, vipatchcode, sizeof(vipatchcode))==0) {
|
||||
vipatch((u32)addr_start, len);
|
||||
}
|
||||
}
|
||||
|
||||
if(memcmp(addr_start, langpatch, sizeof(langpatch))==0) {
|
||||
if(configbytes[0] != 0xCD){
|
||||
langvipatch((u32)addr_start, len, configbytes[0]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
addr_start += 4;
|
||||
}
|
||||
return hookpatched;
|
||||
}
|
||||
|
||||
// Not used yet, for patching DOL once loaded into memory and befor execution
|
||||
/*
|
||||
void patchdol(void *addr, u32 len)
|
||||
{
|
||||
|
||||
@ -229,7 +342,7 @@ void patchdol(void *addr, u32 len)
|
||||
addr_start += 4;
|
||||
}
|
||||
}
|
||||
|
||||
*/
|
||||
void langpatcher(void *addr, u32 len)
|
||||
{
|
||||
|
||||
@ -247,7 +360,7 @@ void langpatcher(void *addr, u32 len)
|
||||
addr_start += 4;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
void patchdebug(void *addr, u32 len)
|
||||
{
|
||||
|
||||
@ -265,7 +378,7 @@ void patchdebug(void *addr, u32 len)
|
||||
addr_start += 4;
|
||||
}
|
||||
}
|
||||
|
||||
*/
|
||||
void vidolpatcher(void *addr, u32 len)
|
||||
{
|
||||
|
||||
@ -280,3 +393,5 @@ void vidolpatcher(void *addr, u32 len)
|
||||
addr_start += 4;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -21,9 +21,9 @@
|
||||
|
||||
#ifndef __PATCHCODE_H__
|
||||
#define __PATCHCODE_H__
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
extern "C" {
|
||||
#endif
|
||||
// Globals
|
||||
u32 hooktype;
|
||||
@ -32,13 +32,11 @@ u8 configbytes[2];
|
||||
u32 regionfree;
|
||||
|
||||
// Function prototypes
|
||||
void dogamehooks(void *addr, u32 len, bool vpatch);
|
||||
bool dogamehooks(void *addr, u32 len);
|
||||
void langpatcher(void *addr, u32 len);
|
||||
void vidolpatcher(void *addr, u32 len);
|
||||
void patchdebug(void *addr, u32 len);
|
||||
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
@ -188,7 +188,7 @@ void __dvd_readidcb(s32 result)
|
||||
{
|
||||
dvddone = result;
|
||||
}
|
||||
u32 Load_Dol_from_disc(u32 doloffset, u8 videoSelected, u8 patchcountrystring, u8 vipatch) {
|
||||
u32 Load_Dol_from_disc(u32 doloffset, u8 videoSelected, u8 patchcountrystring, u8 vipatch, u8 cheat) {
|
||||
int ret;
|
||||
void *dol_header;
|
||||
u32 entrypoint;
|
||||
@ -223,7 +223,7 @@ u32 Load_Dol_from_disc(u32 doloffset, u8 videoSelected, u8 patchcountrystring, u
|
||||
|
||||
DCFlushRange(offset, len);
|
||||
|
||||
gamepatches(offset, len, videoSelected, patchcountrystring, vipatch);
|
||||
gamepatches(offset, len, videoSelected, patchcountrystring, vipatch, cheat);
|
||||
|
||||
DCFlushRange(offset, len);
|
||||
|
||||
|
@ -4,7 +4,6 @@
|
||||
#include <malloc.h>
|
||||
|
||||
#include "patches/patchcode.h"
|
||||
#include "patches/kenobiwii.h" /*FISHEARS*/
|
||||
#include "apploader.h"
|
||||
#include "wdvd.h"
|
||||
#include "wpad.h"
|
||||
@ -15,11 +14,6 @@
|
||||
#include "gecko.h"
|
||||
#include "patches/wip.h"
|
||||
|
||||
/*KENOBI! - FISHEARS*/
|
||||
extern const unsigned char kenobiwii[];
|
||||
extern const int kenobiwii_size;
|
||||
/*KENOBI! - FISHEARS*/
|
||||
|
||||
extern bool geckoinit;
|
||||
|
||||
/* Apploader function pointers */
|
||||
@ -298,7 +292,7 @@ bool NewSuperMarioBrosPatch(void *Address, int Size)
|
||||
return false;
|
||||
}
|
||||
|
||||
void gamepatches(void * dst, int len, u8 videoSelected, u8 patchcountrystring, u8 vipatch) {
|
||||
void gamepatches(void * dst, int len, u8 videoSelected, u8 patchcountrystring, u8 vipatch, u8 cheat) {
|
||||
|
||||
PretendThereIsADiscInTheDrive(dst, len);
|
||||
|
||||
@ -330,8 +324,8 @@ void gamepatches(void * dst, int len, u8 videoSelected, u8 patchcountrystring, u
|
||||
Search_and_patch_Video_Modes(dst, len, table);
|
||||
}
|
||||
|
||||
/*GAME HOOK - FISHEARS*/
|
||||
dogamehooks(dst,len,vipatch);
|
||||
if(cheat)
|
||||
dogamehooks(dst,len);
|
||||
|
||||
//if (vipatch)//moved to degamehooks()
|
||||
// vidolpatcher(dst,len);
|
||||
@ -399,18 +393,6 @@ s32 Apploader_Run(entry_point *entry, u8 cheat, u8 videoSelected, u8 vipatch, u8
|
||||
// *(u32 *)0x80003140 = *(u32 *)0x80003188;
|
||||
}
|
||||
|
||||
if (cheat || geckoinit) {
|
||||
// gprintf("\n\tkenobiwii loaded");
|
||||
/*HOOKS STUFF - FISHEARS*/
|
||||
memset((void*)0x80001800,0,kenobiwii_size);
|
||||
memcpy((void*)0x80001800,kenobiwii,kenobiwii_size);
|
||||
DCFlushRange((void*)0x80001800,kenobiwii_size);
|
||||
hooktype = 1;
|
||||
memcpy((void*)0x80001800, (char*)0x80000000, 6); // For WiiRD
|
||||
/*HOOKS STUFF - FISHEARS*/
|
||||
gprintf("\n\tcode handler loaded");
|
||||
}
|
||||
|
||||
for (;;) {
|
||||
void *dst = NULL;
|
||||
int len = 0, offset = 0;
|
||||
@ -423,7 +405,7 @@ s32 Apploader_Run(entry_point *entry, u8 cheat, u8 videoSelected, u8 vipatch, u8
|
||||
/* Read data from DVD */
|
||||
WDVD_Read(dst, len, (u64)(offset << 2));
|
||||
|
||||
gamepatches(dst, len, videoSelected, patchcountrystring, vipatch);
|
||||
gamepatches(dst, len, videoSelected, patchcountrystring, vipatch, cheat);
|
||||
|
||||
DCFlushRange(dst, len);
|
||||
}
|
||||
@ -442,7 +424,7 @@ s32 Apploader_Run(entry_point *entry, u8 cheat, u8 videoSelected, u8 vipatch, u8
|
||||
|
||||
DCFlushRange(dolbuffer, dollen);
|
||||
|
||||
gamepatches(dolbuffer, dollen, videoSelected, patchcountrystring, vipatch);
|
||||
gamepatches(dolbuffer, dollen, videoSelected, patchcountrystring, vipatch, cheat);
|
||||
|
||||
DCFlushRange(dolbuffer, dollen);
|
||||
|
||||
|
@ -10,7 +10,7 @@ extern "C" {
|
||||
|
||||
/* Prototypes */
|
||||
s32 Apploader_Run(entry_point *, u8, u8, u8, u8, u8, u8, u32);
|
||||
void gamepatches(void * dst, int len, u8 videoSelected, u8 patchcountrystring, u8 vipatch);
|
||||
void gamepatches(void * dst, int len, u8 videoSelected, u8 patchcountrystring, u8 vipatch, u8 cheat);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
@ -20,6 +20,9 @@
|
||||
#define PTABLE_OFFSET 0x40000
|
||||
#define WII_MAGIC 0x5D1C9EA3
|
||||
|
||||
//appentrypoint
|
||||
u32 appentrypoint;
|
||||
|
||||
/* Disc pointers */
|
||||
static u32 *buffer = (u32 *)0x93000000;
|
||||
static u8 *diskid = (u8 *)Disc_ID;
|
||||
@ -38,6 +41,7 @@ void __Disc_SetLowMem(void) {
|
||||
*(u32 *)0x800000E4 = 0x80431A80;
|
||||
*Dev_Debugger = 0x81800000; // Dev Debugger Monitor Address
|
||||
*Simulated_Mem = 0x01800000; // Simulated Memory Size
|
||||
*(vu32 *)0xCD00643C = 0x00000000; // 32Mhz on Bus
|
||||
|
||||
//If the game is sam & max: season 1 put this shit in
|
||||
char gameid[8];
|
||||
@ -293,7 +297,10 @@ s32 Disc_BootPartition(u64 offset, u8 videoselected, u8 cheat, u8 vipatch, u8 pa
|
||||
|
||||
if (cheat == 1) {
|
||||
/* OCARINA STUFF - FISHEARS*/
|
||||
do_sd_code(gameid);
|
||||
if(ocarina_load_code((u8 *) gameid) > 0)
|
||||
{
|
||||
ocarina_do_code();
|
||||
}
|
||||
}
|
||||
|
||||
//kill the USB and SD
|
||||
@ -326,8 +333,31 @@ s32 Disc_BootPartition(u64 offset, u8 videoselected, u8 cheat, u8 vipatch, u8 pa
|
||||
__IOS_ShutdownSubsystems();
|
||||
__exception_closeall();
|
||||
|
||||
/* Jump to entry point */
|
||||
p_entry();
|
||||
appentrypoint = (u32) p_entry;
|
||||
|
||||
if (cheat == 1)
|
||||
{
|
||||
__asm__(
|
||||
"lis %r3, appentrypoint@h\n"
|
||||
"ori %r3, %r3, appentrypoint@l\n"
|
||||
"lwz %r3, 0(%r3)\n"
|
||||
"mtlr %r3\n"
|
||||
"lis %r3, 0x8000\n"
|
||||
"ori %r3, %r3, 0x18A8\n"
|
||||
"mtctr %r3\n"
|
||||
"bctr\n"
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
__asm__(
|
||||
"lis %r3, appentrypoint@h\n"
|
||||
"ori %r3, %r3, appentrypoint@l\n"
|
||||
"lwz %r3, 0(%r3)\n"
|
||||
"mtlr %r3\n"
|
||||
"blr\n"
|
||||
);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -22,6 +22,10 @@ s32 USBStorage2_TestMode(u32 on_off);
|
||||
|
||||
s32 USBStorage2_EHC_Off(void);
|
||||
|
||||
s32 USBStorage_WBFS_Read(u32 woffset, u32 len, void *buffer);
|
||||
s32 USBStorage_WBFS_SetDevice(int dev);
|
||||
s32 USBStorage_WBFS_SetFragList(void *p, int size);
|
||||
|
||||
#define DEVICE_TYPE_WII_UMS (('W'<<24)|('U'<<16)|('M'<<8)|'S')
|
||||
|
||||
extern const DISC_INTERFACE __io_usbstorage2;
|
||||
|
Loading…
Reference in New Issue
Block a user