mirror of
https://github.com/wiidev/usbloadergx.git
synced 2024-12-22 18:01:54 +01:00
The known alt dol is now automatically used when launching a game that requires it, if no dol was selected (setting a dol in game settings will override it). This includes the alt dol prompt that was added a few revisions ago for games that require choosing between different dols. Fixed dol name display in the game settings. Added check to prevent empty .gct file creation. The .gct code files can now be deleted from the Uninstall Menu.
This commit is contained in:
parent
75a4d33e4f
commit
370a332fcc
4
Makefile
4
Makefile
@ -105,12 +105,12 @@ $(BUILD):
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
lang:
|
||||
@[ -d $@ ] || mkdir -p $@
|
||||
@[ -d build ] || mkdir -p build
|
||||
@make --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile language
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
all:
|
||||
@[ -d $@ ] || mkdir -p $@
|
||||
@[ -d build ] || mkdir -p build
|
||||
@make --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile
|
||||
@make --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile language
|
||||
|
||||
|
File diff suppressed because one or more lines are too long
@ -68,9 +68,8 @@ int CheatMenu(const char * gameID) {
|
||||
WindowPrompt(tr("Error"),tr("Cheatfile is blank"),tr("OK"));
|
||||
break;
|
||||
case 0:
|
||||
download = WindowPrompt(tr("Error"),tr("No Cheatfile found"),tr("OK"),tr("Download Now"));
|
||||
|
||||
if (download==0)
|
||||
download = WindowPrompt(tr("Error"),tr("No Cheatfile found"),tr("Download Now"),tr("Cancel"));
|
||||
if (download==1)
|
||||
download = CodeDownload(gameID);
|
||||
break;
|
||||
case 1:
|
||||
@ -127,14 +126,18 @@ int CheatMenu(const char * gameID) {
|
||||
selectednrs[x] = i;
|
||||
x++;
|
||||
}
|
||||
}
|
||||
subfoldercreate(Settings.Cheatcodespath);
|
||||
string chtpath = Settings.Cheatcodespath;
|
||||
string gctfname = chtpath + c.getGameID() + ".gct";
|
||||
c.createGCT(selectednrs,x,gctfname.c_str());
|
||||
WindowPrompt(tr("GCT File created"),NULL,tr("OK"));
|
||||
exit = true;
|
||||
break;
|
||||
}
|
||||
if (x == 0) {
|
||||
WindowPrompt(tr("Error"),tr("No cheats were selected"),tr("OK"));
|
||||
} else {
|
||||
subfoldercreate(Settings.Cheatcodespath);
|
||||
string chtpath = Settings.Cheatcodespath;
|
||||
string gctfname = chtpath + c.getGameID() + ".gct";
|
||||
c.createGCT(selectednrs,x,gctfname.c_str());
|
||||
WindowPrompt(tr("GCT File created"),NULL,tr("OK"));
|
||||
exit = true;
|
||||
break;
|
||||
}
|
||||
} else WindowPrompt(tr("Error"),tr("Could not create GCT file"),tr("OK"));
|
||||
}
|
||||
|
||||
|
@ -60,6 +60,10 @@ string GCTCheats::getCheatComment(int nr) {
|
||||
}
|
||||
|
||||
int GCTCheats::createGCT(int nr,const char * filename) {
|
||||
|
||||
if (nr == 0)
|
||||
return 0;
|
||||
|
||||
ofstream filestr;
|
||||
filestr.open(filename);
|
||||
|
||||
@ -91,6 +95,7 @@ int GCTCheats::createGCT(int nr,const char * filename) {
|
||||
}
|
||||
|
||||
int GCTCheats::createGCT(const char * chtbuffer,const char * filename) {
|
||||
|
||||
ofstream filestr;
|
||||
filestr.open(filename);
|
||||
|
||||
@ -125,6 +130,9 @@ int GCTCheats::createGCT(const char * chtbuffer,const char * filename) {
|
||||
|
||||
int GCTCheats::createGCT(int nr[],int cnt,const char * filename) {
|
||||
|
||||
if (cnt == 0)
|
||||
return 0;
|
||||
|
||||
ofstream filestr;
|
||||
filestr.open(filename);
|
||||
|
||||
|
@ -30,6 +30,7 @@
|
||||
#include "prompts/ProgressWindow.h"
|
||||
#include "prompts/TitleBrowser.h"
|
||||
#include "prompts/gameinfo.h"
|
||||
#include "prompts/DiscBrowser.h"
|
||||
#include "mload/mload.h"
|
||||
#include "patches/patchcode.h"
|
||||
#include "network/networkops.h"
|
||||
@ -72,6 +73,7 @@ static lwp_t guithread = LWP_THREAD_NULL;
|
||||
static bool guiHalt = true;
|
||||
static int ExitRequested = 0;
|
||||
static char gameregion[7];
|
||||
static bool altdoldefault = true;
|
||||
|
||||
/*** Extern variables ***/
|
||||
extern FreeTypeGX *fontClock;
|
||||
@ -717,7 +719,7 @@ int MenuDiscList() {
|
||||
|
||||
WDVD_GetCoverStatus(&covert);//for detecting if i disc has been inserted
|
||||
|
||||
// if the idiot is showing favoorites and don't have any
|
||||
// if the idiot is showing favorites and don't have any
|
||||
if (Settings.fave && !gameCnt) {
|
||||
WindowPrompt(tr("No Favorites"),tr("You are choosing to display favorites and you do not have any selected."),tr("Back"));
|
||||
Settings.fave=!Settings.fave;
|
||||
@ -1214,8 +1216,8 @@ int MenuDiscList() {
|
||||
snprintf (IDfull,sizeof(IDfull),"%c%c%c%c%c%c", header->id[0], header->id[1], header->id[2],header->id[3], header->id[4], header->id[5]);
|
||||
struct Game_CFG* game_cfg = CFG_get_game_opt(header->id);
|
||||
if (game_cfg) {
|
||||
ocarinaChoice = game_cfg->ocarina;
|
||||
alternatedol = game_cfg->loadalternatedol;
|
||||
ocarinaChoice = game_cfg->ocarina;
|
||||
} else {
|
||||
alternatedol = off;
|
||||
ocarinaChoice = Settings.ocarina;
|
||||
@ -1230,17 +1232,17 @@ int MenuDiscList() {
|
||||
if (exeFile==NULL) {
|
||||
sprintf(nipple, "%s %s",nipple,tr("does not exist!"));
|
||||
WindowPrompt(tr("Error"),nipple,tr("OK"));
|
||||
|
||||
menu = MENU_CHECK;
|
||||
wiilight(0);
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
fclose(exeFile);
|
||||
}
|
||||
}
|
||||
if (ocarinaChoice != off) {
|
||||
/* Open gct File and check exist */
|
||||
sprintf(nipple, "%s%s.gct",Settings.Cheatcodespath,IDfull);
|
||||
exeFile = fopen (nipple ,"rb");
|
||||
|
||||
if (exeFile==NULL) {
|
||||
sprintf(nipple, "%s %s",nipple,tr("does not exist! Loading game without cheats."));
|
||||
WindowPrompt(tr("Error"),nipple,NULL,NULL,NULL,NULL,170);
|
||||
@ -1248,6 +1250,7 @@ int MenuDiscList() {
|
||||
fseek (exeFile, 0, SEEK_END);
|
||||
long size=ftell (exeFile);
|
||||
rewind (exeFile);
|
||||
fclose(exeFile);
|
||||
if (size>2056) {
|
||||
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);
|
||||
@ -1272,7 +1275,6 @@ int MenuDiscList() {
|
||||
|
||||
CFG_save_game_num(header->id);
|
||||
}
|
||||
SDCard_deInit();
|
||||
menu = MENU_EXIT;
|
||||
break;
|
||||
|
||||
@ -1292,11 +1294,12 @@ int MenuDiscList() {
|
||||
if (exeFile==NULL) {
|
||||
sprintf(nipple, "%s %s",nipple,tr("does not exist! You Messed something up, Idiot."));
|
||||
WindowPrompt(tr("Error"),nipple,tr("OK"));
|
||||
|
||||
menu = MENU_CHECK;
|
||||
wiilight(0);
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
fclose(exeFile);
|
||||
}
|
||||
}
|
||||
if (ocarinaChoice != off) {
|
||||
/* Open gct File and check exist */
|
||||
@ -1317,12 +1320,10 @@ int MenuDiscList() {
|
||||
}
|
||||
|
||||
}
|
||||
SDCard_deInit();
|
||||
wiilight(0);
|
||||
returnHere = false;
|
||||
menu = MENU_EXIT;
|
||||
|
||||
|
||||
} else if (choice == 2) {
|
||||
wiilight(0);
|
||||
HaltGui();
|
||||
@ -1398,20 +1399,54 @@ int MenuDiscList() {
|
||||
covertOld=covert;
|
||||
}
|
||||
|
||||
HaltGui();
|
||||
mainWindow->RemoveAll();
|
||||
mainWindow->Append(bgImg);
|
||||
delete gameBrowser;
|
||||
gameBrowser = NULL;
|
||||
delete gameGrid;
|
||||
gameGrid = NULL;
|
||||
delete gameCarousel;
|
||||
gameCarousel = NULL;
|
||||
ResumeGui();
|
||||
// set alt dol default
|
||||
if (menu == MENU_EXIT && altdoldefault) {
|
||||
struct discHdr *header = &gameList[gameSelected];
|
||||
struct Game_CFG* game_cfg = CFG_get_game_opt(header->id);
|
||||
// use default only if no alt dol was selected manually
|
||||
if (game_cfg) {
|
||||
if (game_cfg->alternatedolstart != 0)
|
||||
altdoldefault = false;
|
||||
}
|
||||
if (altdoldefault) {
|
||||
int autodol = autoSelectDol((char*)header->id);
|
||||
if (autodol>0) {
|
||||
alternatedol = 2;
|
||||
alternatedoloffset = autodol;
|
||||
char temp[20];
|
||||
sprintf(temp,"%d",autodol);
|
||||
} else {
|
||||
// alt dol menu for games that require more than a single alt dol
|
||||
int autodol = autoSelectDolMenu((char*)header->id);
|
||||
if (autodol>0) {
|
||||
alternatedol = 2;
|
||||
alternatedoloffset = autodol;
|
||||
} else if (autodol == 0) { // if Cancel or B is pressed, don't launch game
|
||||
menu = MENU_DISCLIST;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (menu == MENU_EXIT) {
|
||||
SDCard_deInit();
|
||||
}
|
||||
|
||||
HaltGui();
|
||||
mainWindow->RemoveAll();
|
||||
mainWindow->Append(bgImg);
|
||||
delete gameBrowser;
|
||||
gameBrowser = NULL;
|
||||
delete gameGrid;
|
||||
gameGrid = NULL;
|
||||
delete gameCarousel;
|
||||
gameCarousel = NULL;
|
||||
ResumeGui();
|
||||
return menu;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/****************************************************************************
|
||||
* MenuInstall
|
||||
***************************************************************************/
|
||||
@ -1877,7 +1912,7 @@ int MainMenu(int menu) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
CloseXMLDatabase();
|
||||
ExitGUIThreads();
|
||||
bgMusic->Stop();
|
||||
@ -1891,8 +1926,7 @@ int MainMenu(int menu) {
|
||||
delete GameIDTxt;
|
||||
delete cover;
|
||||
delete coverImg;
|
||||
|
||||
ShutdownAudio();
|
||||
ShutdownAudio();
|
||||
StopGX();
|
||||
|
||||
if (boothomebrew == 1) {
|
||||
@ -1914,8 +1948,10 @@ int MainMenu(int menu) {
|
||||
fix002 = game_cfg->errorfix002;
|
||||
iosChoice = game_cfg->ios;
|
||||
countrystrings = game_cfg->patchcountrystrings;
|
||||
alternatedol = game_cfg->loadalternatedol;
|
||||
alternatedoloffset = game_cfg->alternatedolstart;
|
||||
if (!altdoldefault) {
|
||||
alternatedol = game_cfg->loadalternatedol;
|
||||
alternatedoloffset = game_cfg->alternatedolstart;
|
||||
}
|
||||
reloadblock = game_cfg->iosreloadblock;
|
||||
} else {
|
||||
videoChoice = Settings.video;
|
||||
@ -1929,8 +1965,10 @@ int MainMenu(int menu) {
|
||||
}
|
||||
fix002 = Settings.error002;
|
||||
countrystrings = Settings.patchcountrystrings;
|
||||
alternatedol = off;
|
||||
alternatedoloffset = 0;
|
||||
if (!altdoldefault) {
|
||||
alternatedol = off;
|
||||
alternatedoloffset = 0;
|
||||
}
|
||||
reloadblock = off;
|
||||
}
|
||||
int ios2;
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -21,33 +21,33 @@
|
||||
|
||||
#ifndef __DVD_BROADWAY_H__
|
||||
#define __DVD_BROADWAY_H__
|
||||
|
||||
|
||||
#include <gctypes.h>
|
||||
#include <ogc/ipc.h>
|
||||
#include <ogc/dvd.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
typedef void (*dvdcallbacklow)(s32 result);
|
||||
|
||||
s32 bwDVD_LowInit();
|
||||
s32 bwDVD_LowInquiry(dvddrvinfo *info,dvdcallbacklow cb);
|
||||
s32 bwDVD_LowReadID(dvddiskid *diskID,dvdcallbacklow cb);
|
||||
s32 bwDVD_LowClosePartition(dvdcallbacklow cb);
|
||||
s32 bwDVD_LowOpenPartition(u32 offset,void *eticket,u32 certin_len,void *certificate_in,void *certificate_out,dvdcallbacklow cb);
|
||||
s32 bwDVD_LowUnencryptedRead(void *buf,u32 len,u32 offset,dvdcallbacklow cb);
|
||||
s32 bwDVD_LowReset(dvdcallbacklow cb);
|
||||
s32 bwDVD_LowWaitCoverClose(dvdcallbacklow cb);
|
||||
s32 bwDVD_LowRead(void *buf,u32 len,u32 offset,dvdcallbacklow cb);
|
||||
s32 bwDVD_EnableVideo(dvdcallbacklow cb);
|
||||
s32 bwDVD_LowReadVideo(void *buf,u32 len,u32 offset,dvdcallbacklow cb);
|
||||
s32 bwDVD_SetDecryption(s32 mode, dvdcallbacklow cb);
|
||||
s32 bwDVD_SetOffset(u32 offset, dvdcallbacklow cb);
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
typedef void (*dvdcallbacklow)(s32 result);
|
||||
|
||||
s32 bwDVD_LowInit();
|
||||
s32 bwDVD_LowInquiry(dvddrvinfo *info,dvdcallbacklow cb);
|
||||
s32 bwDVD_LowReadID(dvddiskid *diskID,dvdcallbacklow cb);
|
||||
s32 bwDVD_LowClosePartition(dvdcallbacklow cb);
|
||||
s32 bwDVD_LowOpenPartition(u32 offset,void *eticket,u32 certin_len,void *certificate_in,void *certificate_out,dvdcallbacklow cb);
|
||||
s32 bwDVD_LowUnencryptedRead(void *buf,u32 len,u32 offset,dvdcallbacklow cb);
|
||||
s32 bwDVD_LowReset(dvdcallbacklow cb);
|
||||
s32 bwDVD_LowWaitCoverClose(dvdcallbacklow cb);
|
||||
s32 bwDVD_LowRead(void *buf,u32 len,u32 offset,dvdcallbacklow cb);
|
||||
s32 bwDVD_EnableVideo(dvdcallbacklow cb);
|
||||
s32 bwDVD_LowReadVideo(void *buf,u32 len,u32 offset,dvdcallbacklow cb);
|
||||
s32 bwDVD_SetDecryption(s32 mode, dvdcallbacklow cb);
|
||||
s32 bwDVD_SetOffset(u32 offset, dvdcallbacklow cb);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
|
||||
#endif
|
||||
|
@ -1,98 +1,99 @@
|
||||
/*
|
||||
* 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 <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"
|
||||
|
||||
extern struct SSettings Settings;
|
||||
|
||||
u32 do_sd_code(char *filename) {
|
||||
FILE *fp;
|
||||
u8 *filebuff;
|
||||
u32 filesize;
|
||||
u32 ret;
|
||||
char filepath[150];
|
||||
|
||||
SDCard_Init();
|
||||
USBDevice_Init();
|
||||
|
||||
sprintf(filepath, "%s%s", Settings.Cheatcodespath, filename);
|
||||
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");
|
||||
if (!fp) {
|
||||
USBDevice_deInit();
|
||||
SDCard_deInit();
|
||||
return 0;
|
||||
}
|
||||
|
||||
fseek(fp, 0, SEEK_END);
|
||||
filesize = ftell(fp);
|
||||
fseek(fp, 0, SEEK_SET);
|
||||
|
||||
filebuff = (u8*) malloc (filesize);
|
||||
if (filebuff == 0) {
|
||||
fclose(fp);
|
||||
sleep(2);
|
||||
USBDevice_deInit();
|
||||
SDCard_deInit();
|
||||
return 0;
|
||||
}
|
||||
|
||||
ret = fread(filebuff, 1, filesize, fp);
|
||||
if (ret != filesize) {
|
||||
free(filebuff);
|
||||
fclose(fp);
|
||||
USBDevice_deInit();
|
||||
SDCard_deInit();
|
||||
return 0;
|
||||
}
|
||||
|
||||
memcpy((void*)0x800027E8,filebuff,filesize);
|
||||
*(vu8*)0x80001807 = 0x01;
|
||||
|
||||
free(filebuff);
|
||||
fclose(fp);
|
||||
|
||||
USBDevice_deInit();
|
||||
SDCard_deInit();
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 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 <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"
|
||||
|
||||
extern struct SSettings Settings;
|
||||
|
||||
u32 do_sd_code(char *filename)
|
||||
{
|
||||
FILE *fp;
|
||||
u8 *filebuff;
|
||||
u32 filesize;
|
||||
u32 ret;
|
||||
char filepath[150];
|
||||
|
||||
SDCard_Init();
|
||||
USBDevice_Init();
|
||||
|
||||
sprintf(filepath, "%s%s", Settings.Cheatcodespath, filename);
|
||||
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");
|
||||
if (!fp) {
|
||||
USBDevice_deInit();
|
||||
SDCard_deInit();
|
||||
return 0;
|
||||
}
|
||||
|
||||
fseek(fp, 0, SEEK_END);
|
||||
filesize = ftell(fp);
|
||||
fseek(fp, 0, SEEK_SET);
|
||||
|
||||
filebuff = (u8*) malloc (filesize);
|
||||
if(filebuff == 0){
|
||||
fclose(fp);
|
||||
sleep(2);
|
||||
USBDevice_deInit();
|
||||
SDCard_deInit();
|
||||
return 0;
|
||||
}
|
||||
|
||||
ret = fread(filebuff, 1, filesize, fp);
|
||||
if(ret != filesize){
|
||||
free(filebuff);
|
||||
fclose(fp);
|
||||
USBDevice_deInit();
|
||||
SDCard_deInit();
|
||||
return 0;
|
||||
}
|
||||
|
||||
memcpy((void*)0x800027E8,filebuff,filesize);
|
||||
*(vu8*)0x80001807 = 0x01;
|
||||
|
||||
free(filebuff);
|
||||
fclose(fp);
|
||||
|
||||
USBDevice_deInit();
|
||||
SDCard_deInit();
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
|
@ -23,11 +23,12 @@
|
||||
#define __FST_H__
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
//u32 do_fst(u32 fstlocation);
|
||||
u32 do_sd_code(char *filename);
|
||||
u32 do_sd_code(char *filename);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
@ -1,15 +1,15 @@
|
||||
unsigned char fwrite_patch_bin[] = {
|
||||
0x7c, 0x84, 0x29, 0xd6, 0x39, 0x40, 0x00, 0x00, 0x94, 0x21, 0xff, 0xf0,
|
||||
0x93, 0xe1, 0x00, 0x0c, 0x7f, 0x8a, 0x20, 0x00, 0x40, 0x9c, 0x00, 0x64,
|
||||
0x3d, 0x00, 0xcd, 0x00, 0x3d, 0x60, 0xcd, 0x00, 0x3d, 0x20, 0xcd, 0x00,
|
||||
0x61, 0x08, 0x68, 0x14, 0x61, 0x6b, 0x68, 0x24, 0x61, 0x29, 0x68, 0x20,
|
||||
0x39, 0x80, 0x00, 0xd0, 0x38, 0xc0, 0x00, 0x19, 0x38, 0xe0, 0x00, 0x00,
|
||||
0x91, 0x88, 0x00, 0x00, 0x7c, 0x03, 0x50, 0xae, 0x54, 0x00, 0xa0, 0x16,
|
||||
0x64, 0x00, 0xb0, 0x00, 0x90, 0x0b, 0x00, 0x00, 0x90, 0xc9, 0x00, 0x00,
|
||||
0x80, 0x09, 0x00, 0x00, 0x70, 0x1f, 0x00, 0x01, 0x40, 0x82, 0xff, 0xf8,
|
||||
0x80, 0x0b, 0x00, 0x00, 0x90, 0xe8, 0x00, 0x00, 0x54, 0x00, 0x37, 0xfe,
|
||||
0x7d, 0x4a, 0x02, 0x14, 0x7f, 0x8a, 0x20, 0x00, 0x41, 0x9c, 0xff, 0xc8,
|
||||
0x7c, 0xa3, 0x2b, 0x78, 0x83, 0xe1, 0x00, 0x0c, 0x38, 0x21, 0x00, 0x10,
|
||||
0x4e, 0x80, 0x00, 0x20
|
||||
0x7c, 0x84, 0x29, 0xd6, 0x39, 0x40, 0x00, 0x00, 0x94, 0x21, 0xff, 0xf0,
|
||||
0x93, 0xe1, 0x00, 0x0c, 0x7f, 0x8a, 0x20, 0x00, 0x40, 0x9c, 0x00, 0x64,
|
||||
0x3d, 0x00, 0xcd, 0x00, 0x3d, 0x60, 0xcd, 0x00, 0x3d, 0x20, 0xcd, 0x00,
|
||||
0x61, 0x08, 0x68, 0x14, 0x61, 0x6b, 0x68, 0x24, 0x61, 0x29, 0x68, 0x20,
|
||||
0x39, 0x80, 0x00, 0xd0, 0x38, 0xc0, 0x00, 0x19, 0x38, 0xe0, 0x00, 0x00,
|
||||
0x91, 0x88, 0x00, 0x00, 0x7c, 0x03, 0x50, 0xae, 0x54, 0x00, 0xa0, 0x16,
|
||||
0x64, 0x00, 0xb0, 0x00, 0x90, 0x0b, 0x00, 0x00, 0x90, 0xc9, 0x00, 0x00,
|
||||
0x80, 0x09, 0x00, 0x00, 0x70, 0x1f, 0x00, 0x01, 0x40, 0x82, 0xff, 0xf8,
|
||||
0x80, 0x0b, 0x00, 0x00, 0x90, 0xe8, 0x00, 0x00, 0x54, 0x00, 0x37, 0xfe,
|
||||
0x7d, 0x4a, 0x02, 0x14, 0x7f, 0x8a, 0x20, 0x00, 0x41, 0x9c, 0xff, 0xc8,
|
||||
0x7c, 0xa3, 0x2b, 0x78, 0x83, 0xe1, 0x00, 0x0c, 0x38, 0x21, 0x00, 0x10,
|
||||
0x4e, 0x80, 0x00, 0x20
|
||||
};
|
||||
unsigned int fwrite_patch_bin_len = 136;
|
||||
|
@ -4,261 +4,261 @@ Visit http://www.devkitpro.org
|
||||
*/
|
||||
|
||||
const unsigned char kenobiwii[] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x26, 0xa0, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
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, 0xb1, 0x3a, 0xa0, 0x00, 0x00, 0x3a, 0xc0, 0x00, 0x19, 0x3a, 0xe0, 0x00, 0xd0,
|
||||
0x3f, 0x00, 0xcd, 0x00, 0x63, 0xf2, 0x26, 0xa0, 0x80, 0x01, 0x00, 0xac, 0x90, 0x12, 0x00, 0x04,
|
||||
0x92, 0xb8, 0x64, 0x3c, 0x48, 0x00, 0x04, 0x85, 0x41, 0x82, 0x05, 0xfc, 0x2c, 0x1d, 0x00, 0x04,
|
||||
0x40, 0x80, 0x00, 0x10, 0x2c, 0x1d, 0x00, 0x01, 0x41, 0x80, 0x05, 0xec, 0x48, 0x00, 0x03, 0xa8,
|
||||
0x41, 0x82, 0x05, 0x48, 0x2c, 0x1d, 0x00, 0x06, 0x41, 0x82, 0x00, 0x8c, 0x2c, 0x1d, 0x00, 0x07,
|
||||
0x41, 0x82, 0x03, 0x8c, 0x2c, 0x1d, 0x00, 0x08, 0x41, 0x82, 0x05, 0xd8, 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, 0x80, 0x2c, 0x1d, 0x00, 0x40, 0x41, 0x82, 0x03, 0x9c, 0x2c, 0x1d, 0x00, 0x41,
|
||||
0x41, 0x82, 0x03, 0xb0, 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, 0x64, 0x48, 0x00, 0x05, 0x68,
|
||||
0x80, 0x72, 0x00, 0x00, 0x48, 0x00, 0x04, 0x81, 0x48, 0x00, 0x05, 0x5c, 0x48, 0x00, 0x05, 0xe5,
|
||||
0x48, 0x00, 0x05, 0x54, 0x38, 0x80, 0x00, 0x01, 0x90, 0x92, 0x00, 0x00, 0x48, 0x00, 0x05, 0x48,
|
||||
0x48, 0x00, 0x04, 0x61, 0x3a, 0x00, 0x00, 0xa0, 0x63, 0xec, 0x26, 0xc4, 0x48, 0x00, 0x03, 0x6c,
|
||||
0x38, 0x60, 0x01, 0x20, 0x63, 0xec, 0x26, 0xc4, 0x48, 0x00, 0x04, 0x21, 0x48, 0x00, 0x05, 0x28,
|
||||
0x2f, 0x1d, 0x00, 0x10, 0x2e, 0x9d, 0x00, 0x44, 0x63, 0xe4, 0x1a, 0xb4, 0x3c, 0x60, 0x80, 0x00,
|
||||
0x60, 0x63, 0x03, 0x00, 0x48, 0x00, 0x05, 0x65, 0x38, 0x63, 0x0a, 0x00, 0x48, 0x00, 0x05, 0x5d,
|
||||
0x38, 0x63, 0x06, 0x00, 0x48, 0x00, 0x05, 0x55, 0x63, 0xec, 0x26, 0xb4, 0x92, 0xac, 0x00, 0x00,
|
||||
0x92, 0xac, 0x00, 0x04, 0x92, 0xac, 0x00, 0x08, 0x63, 0xe4, 0x26, 0xc4, 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, 0x70,
|
||||
0x55, 0x29, 0x05, 0xa8, 0x91, 0x24, 0x00, 0x18, 0x41, 0x96, 0x04, 0xac, 0x41, 0x9a, 0x00, 0x08,
|
||||
0x39, 0x8c, 0x00, 0x04, 0x38, 0x60, 0x00, 0x04, 0x48, 0x00, 0x03, 0x61, 0x40, 0x99, 0x00, 0x10,
|
||||
0x39, 0x8c, 0x00, 0x04, 0x38, 0x60, 0x00, 0x04, 0x48, 0x00, 0x03, 0x51, 0x63, 0xe4, 0x26, 0xb4,
|
||||
0x80, 0x64, 0x00, 0x00, 0x80, 0x84, 0x00, 0x04, 0x7c, 0x72, 0xfb, 0xa6, 0x7c, 0x95, 0xfb, 0xa6,
|
||||
0x48, 0x00, 0x04, 0x74, 0x7c, 0x32, 0x43, 0xa6, 0x7c, 0x3a, 0x02, 0xa6, 0x7c, 0x73, 0x43, 0xa6,
|
||||
0x7c, 0x7b, 0x02, 0xa6, 0x54, 0x63, 0x05, 0xa8, 0x90, 0x60, 0x26, 0xdc, 0x54, 0x63, 0x06, 0x20,
|
||||
0x60, 0x63, 0x20, 0x00, 0x54, 0x63, 0x04, 0x5e, 0x7c, 0x7b, 0x03, 0xa6, 0x3c, 0x60, 0x80, 0x00,
|
||||
0x60, 0x63, 0x1a, 0xf4, 0x7c, 0x7a, 0x03, 0xa6, 0x4c, 0x00, 0x01, 0x2c, 0x7c, 0x00, 0x04, 0xac,
|
||||
0x4c, 0x00, 0x00, 0x64, 0x3c, 0x60, 0x80, 0x00, 0x60, 0x63, 0x26, 0xc4, 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, 0xd0, 0x04, 0x00, 0xa0, 0xd0, 0x24, 0x00, 0xa4,
|
||||
0xd0, 0x44, 0x00, 0xa8, 0xd0, 0x64, 0x00, 0xac, 0xd0, 0x84, 0x00, 0xb0, 0xd0, 0xa4, 0x00, 0xb4,
|
||||
0xd0, 0xc4, 0x00, 0xb8, 0xd0, 0xe4, 0x00, 0xbc, 0xd1, 0x04, 0x00, 0xc0, 0xd1, 0x24, 0x00, 0xc4,
|
||||
0xd1, 0x44, 0x00, 0xc8, 0xd1, 0x64, 0x00, 0xcc, 0xd1, 0x84, 0x00, 0xd0, 0xd1, 0xa4, 0x00, 0xd4,
|
||||
0xd1, 0xc4, 0x00, 0xd8, 0xd1, 0xe4, 0x00, 0xdc, 0xd2, 0x04, 0x00, 0xe0, 0xd2, 0x24, 0x00, 0xe4,
|
||||
0xd2, 0x44, 0x00, 0xe8, 0xd2, 0x64, 0x00, 0xec, 0xd2, 0x84, 0x00, 0xf0, 0xd2, 0xa4, 0x00, 0xf4,
|
||||
0xd2, 0xc4, 0x00, 0xf8, 0xd2, 0xe4, 0x00, 0xfc, 0xd3, 0x04, 0x01, 0x00, 0xd3, 0x24, 0x01, 0x04,
|
||||
0xd3, 0x44, 0x01, 0x08, 0xd3, 0x64, 0x01, 0x0c, 0xd3, 0x84, 0x01, 0x10, 0xd3, 0xa4, 0x01, 0x14,
|
||||
0xd3, 0xc4, 0x01, 0x18, 0xd3, 0xe4, 0x01, 0x1c, 0x3f, 0xe0, 0x80, 0x00, 0x63, 0xe5, 0x26, 0xb4,
|
||||
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, 0x26, 0xa0,
|
||||
0x90, 0xa4, 0x00, 0x00, 0x38, 0x60, 0x00, 0x11, 0x48, 0x00, 0x01, 0xbd, 0x4b, 0xff, 0xfc, 0x1d,
|
||||
0x7c, 0x20, 0x00, 0xa6, 0x54, 0x21, 0x07, 0xfa, 0x54, 0x21, 0x04, 0x5e, 0x7c, 0x20, 0x01, 0x24,
|
||||
0x63, 0xe1, 0x26, 0xc4, 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, 0x01, 0x2c, 0x7c, 0x00, 0x04, 0xac, 0x4c, 0x00, 0x00, 0x64, 0x92, 0xb2, 0x00, 0x00,
|
||||
0x48, 0x00, 0x02, 0x50, 0x2e, 0x9d, 0x00, 0x02, 0x38, 0x60, 0x00, 0x08, 0x63, 0xec, 0x26, 0xa8,
|
||||
0x48, 0x00, 0x00, 0xf9, 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, 0x04, 0x48, 0x00, 0x01, 0x1d, 0x38, 0x60, 0x00, 0x04, 0x63, 0xec, 0x26, 0xa8,
|
||||
0x48, 0x00, 0x00, 0xb9, 0x82, 0x0c, 0x00, 0x00, 0x63, 0xec, 0x27, 0xe8, 0x48, 0x00, 0x00, 0x1c,
|
||||
0x48, 0x00, 0x01, 0x01, 0x38, 0x60, 0x00, 0x08, 0x63, 0xec, 0x26, 0xa8, 0x48, 0x00, 0x00, 0x9d,
|
||||
0x82, 0x0c, 0x00, 0x04, 0x81, 0x8c, 0x00, 0x00, 0x63, 0xfb, 0x26, 0xb0, 0x3a, 0x20, 0x0f, 0x80,
|
||||
0x48, 0x00, 0x02, 0x3d, 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, 0x26, 0xa8, 0x4b, 0xff, 0xff, 0x55, 0x80, 0xac, 0x00, 0x04, 0x81, 0x8c, 0x00, 0x00,
|
||||
0x63, 0xfb, 0x26, 0xb0, 0x62, 0xb1, 0xf8, 0x00, 0x7e, 0x0c, 0x28, 0x50, 0x48, 0x00, 0x00, 0xf1,
|
||||
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, 0x26, 0xc4, 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, 0xf9, 0xf8,
|
||||
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,
|
||||
0x7c, 0x00, 0x04, 0xac, 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, 0x63, 0xef, 0x27, 0xe8, 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, 0xb0, 0x41, 0x82, 0x02, 0x54, 0x2c, 0x0a, 0x00, 0x05,
|
||||
0x41, 0x80, 0x02, 0xdc, 0x41, 0xa2, 0x04, 0xe8, 0x2c, 0x0a, 0x00, 0x07, 0x41, 0xa0, 0x05, 0x14,
|
||||
0x48, 0x00, 0x05, 0xf8, 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, 0xd0, 0x35, 0x29, 0xff, 0xff,
|
||||
0x41, 0x80, 0x04, 0xc8, 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, 0x7d, 0x13, 0x43, 0x78,
|
||||
0x52, 0x68, 0x08, 0x3c, 0x40, 0x9e, 0x00, 0x78, 0x41, 0x8d, 0x04, 0xbc, 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, 0x3c,
|
||||
0x41, 0x94, 0xfe, 0x38, 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, 0x08, 0x40, 0xbe, 0xfe, 0x04, 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, 0x7c,
|
||||
0x7e, 0x0c, 0x21, 0x2e, 0x4b, 0xff, 0xfd, 0x74, 0x40, 0x90, 0x00, 0x0c, 0x7c, 0x86, 0x23, 0x78,
|
||||
0x4b, 0xff, 0xfd, 0x68, 0x7c, 0x90, 0x23, 0x78, 0x4b, 0xff, 0xfd, 0x60, 0x54, 0x89, 0x1e, 0x78,
|
||||
0x39, 0x29, 0x00, 0x40, 0x2c, 0x05, 0x00, 0x02, 0x41, 0x80, 0x00, 0x4c, 0x54, 0x6b, 0x67, 0xbf,
|
||||
0x2c, 0x0b, 0x00, 0x01, 0x41, 0x80, 0x00, 0x14, 0x41, 0x82, 0x00, 0x08, 0x48, 0x00, 0x00, 0x10,
|
||||
0x41, 0xbe, 0xfd, 0x38, 0x48, 0x00, 0x00, 0x08, 0x40, 0xbe, 0xfd, 0x30, 0x2c, 0x05, 0x00, 0x03,
|
||||
0x41, 0x81, 0x00, 0x10, 0x41, 0xa2, 0x00, 0x10, 0x7d, 0xe7, 0x48, 0x2e, 0x4b, 0xff, 0xfd, 0x1c,
|
||||
0x7d, 0xe7, 0x49, 0x2e, 0x7c, 0x64, 0x07, 0x34, 0x54, 0x84, 0x1a, 0x78, 0x7d, 0xef, 0x22, 0x14,
|
||||
0x4b, 0xff, 0xfd, 0x08, 0x40, 0xbe, 0xfd, 0x04, 0x7c, 0xa7, 0x4a, 0x14, 0x40, 0x92, 0x00, 0x14,
|
||||
0x54, 0x64, 0x04, 0x3e, 0x91, 0xe5, 0x00, 0x00, 0x90, 0x85, 0x00, 0x04, 0x4b, 0xff, 0xfc, 0xec,
|
||||
0x81, 0x25, 0x00, 0x04, 0x2c, 0x09, 0x00, 0x00, 0x41, 0xa2, 0xfc, 0xe0, 0x39, 0x29, 0xff, 0xff,
|
||||
0x91, 0x25, 0x00, 0x04, 0x81, 0xe5, 0x00, 0x00, 0x4b, 0xff, 0xfc, 0xd0, 0x40, 0xbe, 0xfc, 0xcc,
|
||||
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, 0x38, 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, 0x84, 0x2c, 0x05, 0x00, 0x0a, 0x41, 0x81, 0xfb, 0x7c,
|
||||
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, 0x5c,
|
||||
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, 0x3c,
|
||||
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, 0x14, 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, 0xbc, 0x54, 0x6b, 0xe4, 0x3e, 0x4b, 0xff, 0xfb, 0xb4,
|
||||
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, 0x64, 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, 0x48, 0x57, 0x44, 0x00, 0x3a, 0x7c, 0x8c, 0x20, 0x50, 0x50, 0x85, 0x01, 0xba,
|
||||
0x50, 0x65, 0x07, 0xfe, 0x90, 0xac, 0x00, 0x00, 0x4b, 0xff, 0xfa, 0x30, 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, 0x20, 0x55, 0x8c, 0x84, 0x3e, 0x57, 0x44, 0x84, 0x3e, 0x57, 0x5a, 0x04, 0x3e,
|
||||
0x7c, 0x0c, 0x20, 0x00, 0x41, 0x80, 0xfb, 0xa4, 0x7c, 0x0c, 0xd0, 0x00, 0x40, 0x80, 0xfb, 0x9c,
|
||||
0x4b, 0xff, 0xf9, 0xd8, 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, 0xa4, 0x2c, 0x0b, 0x00, 0x00, 0x40, 0x82, 0xf9, 0x94,
|
||||
0x40, 0x92, 0x00, 0x0c, 0x39, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x14, 0x54, 0x69, 0x06, 0xff,
|
||||
0x40, 0x82, 0x00, 0x08, 0x40, 0x9e, 0x00, 0x10, 0x54, 0x65, 0x67, 0xfe, 0x7d, 0x08, 0x4c, 0x30,
|
||||
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, 0xf9, 0x5c,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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
|
||||
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x26, 0xa0, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
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, 0xb1, 0x3a, 0xa0, 0x00, 0x00, 0x3a, 0xc0, 0x00, 0x19, 0x3a, 0xe0, 0x00, 0xd0,
|
||||
0x3f, 0x00, 0xcd, 0x00, 0x63, 0xf2, 0x26, 0xa0, 0x80, 0x01, 0x00, 0xac, 0x90, 0x12, 0x00, 0x04,
|
||||
0x92, 0xb8, 0x64, 0x3c, 0x48, 0x00, 0x04, 0x85, 0x41, 0x82, 0x05, 0xfc, 0x2c, 0x1d, 0x00, 0x04,
|
||||
0x40, 0x80, 0x00, 0x10, 0x2c, 0x1d, 0x00, 0x01, 0x41, 0x80, 0x05, 0xec, 0x48, 0x00, 0x03, 0xa8,
|
||||
0x41, 0x82, 0x05, 0x48, 0x2c, 0x1d, 0x00, 0x06, 0x41, 0x82, 0x00, 0x8c, 0x2c, 0x1d, 0x00, 0x07,
|
||||
0x41, 0x82, 0x03, 0x8c, 0x2c, 0x1d, 0x00, 0x08, 0x41, 0x82, 0x05, 0xd8, 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, 0x80, 0x2c, 0x1d, 0x00, 0x40, 0x41, 0x82, 0x03, 0x9c, 0x2c, 0x1d, 0x00, 0x41,
|
||||
0x41, 0x82, 0x03, 0xb0, 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, 0x64, 0x48, 0x00, 0x05, 0x68,
|
||||
0x80, 0x72, 0x00, 0x00, 0x48, 0x00, 0x04, 0x81, 0x48, 0x00, 0x05, 0x5c, 0x48, 0x00, 0x05, 0xe5,
|
||||
0x48, 0x00, 0x05, 0x54, 0x38, 0x80, 0x00, 0x01, 0x90, 0x92, 0x00, 0x00, 0x48, 0x00, 0x05, 0x48,
|
||||
0x48, 0x00, 0x04, 0x61, 0x3a, 0x00, 0x00, 0xa0, 0x63, 0xec, 0x26, 0xc4, 0x48, 0x00, 0x03, 0x6c,
|
||||
0x38, 0x60, 0x01, 0x20, 0x63, 0xec, 0x26, 0xc4, 0x48, 0x00, 0x04, 0x21, 0x48, 0x00, 0x05, 0x28,
|
||||
0x2f, 0x1d, 0x00, 0x10, 0x2e, 0x9d, 0x00, 0x44, 0x63, 0xe4, 0x1a, 0xb4, 0x3c, 0x60, 0x80, 0x00,
|
||||
0x60, 0x63, 0x03, 0x00, 0x48, 0x00, 0x05, 0x65, 0x38, 0x63, 0x0a, 0x00, 0x48, 0x00, 0x05, 0x5d,
|
||||
0x38, 0x63, 0x06, 0x00, 0x48, 0x00, 0x05, 0x55, 0x63, 0xec, 0x26, 0xb4, 0x92, 0xac, 0x00, 0x00,
|
||||
0x92, 0xac, 0x00, 0x04, 0x92, 0xac, 0x00, 0x08, 0x63, 0xe4, 0x26, 0xc4, 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, 0x70,
|
||||
0x55, 0x29, 0x05, 0xa8, 0x91, 0x24, 0x00, 0x18, 0x41, 0x96, 0x04, 0xac, 0x41, 0x9a, 0x00, 0x08,
|
||||
0x39, 0x8c, 0x00, 0x04, 0x38, 0x60, 0x00, 0x04, 0x48, 0x00, 0x03, 0x61, 0x40, 0x99, 0x00, 0x10,
|
||||
0x39, 0x8c, 0x00, 0x04, 0x38, 0x60, 0x00, 0x04, 0x48, 0x00, 0x03, 0x51, 0x63, 0xe4, 0x26, 0xb4,
|
||||
0x80, 0x64, 0x00, 0x00, 0x80, 0x84, 0x00, 0x04, 0x7c, 0x72, 0xfb, 0xa6, 0x7c, 0x95, 0xfb, 0xa6,
|
||||
0x48, 0x00, 0x04, 0x74, 0x7c, 0x32, 0x43, 0xa6, 0x7c, 0x3a, 0x02, 0xa6, 0x7c, 0x73, 0x43, 0xa6,
|
||||
0x7c, 0x7b, 0x02, 0xa6, 0x54, 0x63, 0x05, 0xa8, 0x90, 0x60, 0x26, 0xdc, 0x54, 0x63, 0x06, 0x20,
|
||||
0x60, 0x63, 0x20, 0x00, 0x54, 0x63, 0x04, 0x5e, 0x7c, 0x7b, 0x03, 0xa6, 0x3c, 0x60, 0x80, 0x00,
|
||||
0x60, 0x63, 0x1a, 0xf4, 0x7c, 0x7a, 0x03, 0xa6, 0x4c, 0x00, 0x01, 0x2c, 0x7c, 0x00, 0x04, 0xac,
|
||||
0x4c, 0x00, 0x00, 0x64, 0x3c, 0x60, 0x80, 0x00, 0x60, 0x63, 0x26, 0xc4, 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, 0xd0, 0x04, 0x00, 0xa0, 0xd0, 0x24, 0x00, 0xa4,
|
||||
0xd0, 0x44, 0x00, 0xa8, 0xd0, 0x64, 0x00, 0xac, 0xd0, 0x84, 0x00, 0xb0, 0xd0, 0xa4, 0x00, 0xb4,
|
||||
0xd0, 0xc4, 0x00, 0xb8, 0xd0, 0xe4, 0x00, 0xbc, 0xd1, 0x04, 0x00, 0xc0, 0xd1, 0x24, 0x00, 0xc4,
|
||||
0xd1, 0x44, 0x00, 0xc8, 0xd1, 0x64, 0x00, 0xcc, 0xd1, 0x84, 0x00, 0xd0, 0xd1, 0xa4, 0x00, 0xd4,
|
||||
0xd1, 0xc4, 0x00, 0xd8, 0xd1, 0xe4, 0x00, 0xdc, 0xd2, 0x04, 0x00, 0xe0, 0xd2, 0x24, 0x00, 0xe4,
|
||||
0xd2, 0x44, 0x00, 0xe8, 0xd2, 0x64, 0x00, 0xec, 0xd2, 0x84, 0x00, 0xf0, 0xd2, 0xa4, 0x00, 0xf4,
|
||||
0xd2, 0xc4, 0x00, 0xf8, 0xd2, 0xe4, 0x00, 0xfc, 0xd3, 0x04, 0x01, 0x00, 0xd3, 0x24, 0x01, 0x04,
|
||||
0xd3, 0x44, 0x01, 0x08, 0xd3, 0x64, 0x01, 0x0c, 0xd3, 0x84, 0x01, 0x10, 0xd3, 0xa4, 0x01, 0x14,
|
||||
0xd3, 0xc4, 0x01, 0x18, 0xd3, 0xe4, 0x01, 0x1c, 0x3f, 0xe0, 0x80, 0x00, 0x63, 0xe5, 0x26, 0xb4,
|
||||
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, 0x26, 0xa0,
|
||||
0x90, 0xa4, 0x00, 0x00, 0x38, 0x60, 0x00, 0x11, 0x48, 0x00, 0x01, 0xbd, 0x4b, 0xff, 0xfc, 0x1d,
|
||||
0x7c, 0x20, 0x00, 0xa6, 0x54, 0x21, 0x07, 0xfa, 0x54, 0x21, 0x04, 0x5e, 0x7c, 0x20, 0x01, 0x24,
|
||||
0x63, 0xe1, 0x26, 0xc4, 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, 0x01, 0x2c, 0x7c, 0x00, 0x04, 0xac, 0x4c, 0x00, 0x00, 0x64, 0x92, 0xb2, 0x00, 0x00,
|
||||
0x48, 0x00, 0x02, 0x50, 0x2e, 0x9d, 0x00, 0x02, 0x38, 0x60, 0x00, 0x08, 0x63, 0xec, 0x26, 0xa8,
|
||||
0x48, 0x00, 0x00, 0xf9, 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, 0x04, 0x48, 0x00, 0x01, 0x1d, 0x38, 0x60, 0x00, 0x04, 0x63, 0xec, 0x26, 0xa8,
|
||||
0x48, 0x00, 0x00, 0xb9, 0x82, 0x0c, 0x00, 0x00, 0x63, 0xec, 0x27, 0xe8, 0x48, 0x00, 0x00, 0x1c,
|
||||
0x48, 0x00, 0x01, 0x01, 0x38, 0x60, 0x00, 0x08, 0x63, 0xec, 0x26, 0xa8, 0x48, 0x00, 0x00, 0x9d,
|
||||
0x82, 0x0c, 0x00, 0x04, 0x81, 0x8c, 0x00, 0x00, 0x63, 0xfb, 0x26, 0xb0, 0x3a, 0x20, 0x0f, 0x80,
|
||||
0x48, 0x00, 0x02, 0x3d, 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, 0x26, 0xa8, 0x4b, 0xff, 0xff, 0x55, 0x80, 0xac, 0x00, 0x04, 0x81, 0x8c, 0x00, 0x00,
|
||||
0x63, 0xfb, 0x26, 0xb0, 0x62, 0xb1, 0xf8, 0x00, 0x7e, 0x0c, 0x28, 0x50, 0x48, 0x00, 0x00, 0xf1,
|
||||
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, 0x26, 0xc4, 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, 0xf9, 0xf8,
|
||||
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,
|
||||
0x7c, 0x00, 0x04, 0xac, 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, 0x63, 0xef, 0x27, 0xe8, 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, 0xb0, 0x41, 0x82, 0x02, 0x54, 0x2c, 0x0a, 0x00, 0x05,
|
||||
0x41, 0x80, 0x02, 0xdc, 0x41, 0xa2, 0x04, 0xe8, 0x2c, 0x0a, 0x00, 0x07, 0x41, 0xa0, 0x05, 0x14,
|
||||
0x48, 0x00, 0x05, 0xf8, 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, 0xd0, 0x35, 0x29, 0xff, 0xff,
|
||||
0x41, 0x80, 0x04, 0xc8, 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, 0x7d, 0x13, 0x43, 0x78,
|
||||
0x52, 0x68, 0x08, 0x3c, 0x40, 0x9e, 0x00, 0x78, 0x41, 0x8d, 0x04, 0xbc, 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, 0x3c,
|
||||
0x41, 0x94, 0xfe, 0x38, 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, 0x08, 0x40, 0xbe, 0xfe, 0x04, 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, 0x7c,
|
||||
0x7e, 0x0c, 0x21, 0x2e, 0x4b, 0xff, 0xfd, 0x74, 0x40, 0x90, 0x00, 0x0c, 0x7c, 0x86, 0x23, 0x78,
|
||||
0x4b, 0xff, 0xfd, 0x68, 0x7c, 0x90, 0x23, 0x78, 0x4b, 0xff, 0xfd, 0x60, 0x54, 0x89, 0x1e, 0x78,
|
||||
0x39, 0x29, 0x00, 0x40, 0x2c, 0x05, 0x00, 0x02, 0x41, 0x80, 0x00, 0x4c, 0x54, 0x6b, 0x67, 0xbf,
|
||||
0x2c, 0x0b, 0x00, 0x01, 0x41, 0x80, 0x00, 0x14, 0x41, 0x82, 0x00, 0x08, 0x48, 0x00, 0x00, 0x10,
|
||||
0x41, 0xbe, 0xfd, 0x38, 0x48, 0x00, 0x00, 0x08, 0x40, 0xbe, 0xfd, 0x30, 0x2c, 0x05, 0x00, 0x03,
|
||||
0x41, 0x81, 0x00, 0x10, 0x41, 0xa2, 0x00, 0x10, 0x7d, 0xe7, 0x48, 0x2e, 0x4b, 0xff, 0xfd, 0x1c,
|
||||
0x7d, 0xe7, 0x49, 0x2e, 0x7c, 0x64, 0x07, 0x34, 0x54, 0x84, 0x1a, 0x78, 0x7d, 0xef, 0x22, 0x14,
|
||||
0x4b, 0xff, 0xfd, 0x08, 0x40, 0xbe, 0xfd, 0x04, 0x7c, 0xa7, 0x4a, 0x14, 0x40, 0x92, 0x00, 0x14,
|
||||
0x54, 0x64, 0x04, 0x3e, 0x91, 0xe5, 0x00, 0x00, 0x90, 0x85, 0x00, 0x04, 0x4b, 0xff, 0xfc, 0xec,
|
||||
0x81, 0x25, 0x00, 0x04, 0x2c, 0x09, 0x00, 0x00, 0x41, 0xa2, 0xfc, 0xe0, 0x39, 0x29, 0xff, 0xff,
|
||||
0x91, 0x25, 0x00, 0x04, 0x81, 0xe5, 0x00, 0x00, 0x4b, 0xff, 0xfc, 0xd0, 0x40, 0xbe, 0xfc, 0xcc,
|
||||
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, 0x38, 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, 0x84, 0x2c, 0x05, 0x00, 0x0a, 0x41, 0x81, 0xfb, 0x7c,
|
||||
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, 0x5c,
|
||||
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, 0x3c,
|
||||
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, 0x14, 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, 0xbc, 0x54, 0x6b, 0xe4, 0x3e, 0x4b, 0xff, 0xfb, 0xb4,
|
||||
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, 0x64, 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, 0x48, 0x57, 0x44, 0x00, 0x3a, 0x7c, 0x8c, 0x20, 0x50, 0x50, 0x85, 0x01, 0xba,
|
||||
0x50, 0x65, 0x07, 0xfe, 0x90, 0xac, 0x00, 0x00, 0x4b, 0xff, 0xfa, 0x30, 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, 0x20, 0x55, 0x8c, 0x84, 0x3e, 0x57, 0x44, 0x84, 0x3e, 0x57, 0x5a, 0x04, 0x3e,
|
||||
0x7c, 0x0c, 0x20, 0x00, 0x41, 0x80, 0xfb, 0xa4, 0x7c, 0x0c, 0xd0, 0x00, 0x40, 0x80, 0xfb, 0x9c,
|
||||
0x4b, 0xff, 0xf9, 0xd8, 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, 0xa4, 0x2c, 0x0b, 0x00, 0x00, 0x40, 0x82, 0xf9, 0x94,
|
||||
0x40, 0x92, 0x00, 0x0c, 0x39, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x14, 0x54, 0x69, 0x06, 0xff,
|
||||
0x40, 0x82, 0x00, 0x08, 0x40, 0x9e, 0x00, 0x10, 0x54, 0x65, 0x67, 0xfe, 0x7d, 0x08, 0x4c, 0x30,
|
||||
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, 0xf9, 0x5c,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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 kenobiwii_size = sizeof(kenobiwii);
|
||||
|
@ -58,35 +58,35 @@ extern void vipatch(u32 address, u32 len);
|
||||
extern u32 regionfreeselect;
|
||||
|
||||
static const u32 viwiihooks[4] = {
|
||||
0x7CE33B78,0x38870034,0x38A70038,0x38C7004C
|
||||
0x7CE33B78,0x38870034,0x38A70038,0x38C7004C
|
||||
};
|
||||
|
||||
static const u32 multidolpatch1[2] = {
|
||||
0x3C03FFB4,0x28004F43
|
||||
};
|
||||
0x3C03FFB4,0x28004F43
|
||||
};
|
||||
|
||||
static const u32 healthcheckhook[2] = {
|
||||
0x41810010,0x881D007D
|
||||
};
|
||||
0x41810010,0x881D007D
|
||||
};
|
||||
|
||||
static const u32 updatecheckhook[3] = {
|
||||
0x80650050,0x80850054,0xA0A50058
|
||||
0x80650050,0x80850054,0xA0A50058
|
||||
};
|
||||
|
||||
static const u32 multidolpatch2[2] = {
|
||||
0x3F608000, 0x807B0018
|
||||
0x3F608000, 0x807B0018
|
||||
};
|
||||
|
||||
static const u32 recoveryhooks[3] = {
|
||||
0xA00100AC,0x5400073E,0x2C00000F
|
||||
0xA00100AC,0x5400073E,0x2C00000F
|
||||
};
|
||||
|
||||
static const u32 nocopyflag1[3] = {
|
||||
0x540007FF, 0x4182001C, 0x80630068
|
||||
0x540007FF, 0x4182001C, 0x80630068
|
||||
};
|
||||
|
||||
static const u32 nocopyflag2[3] = {
|
||||
0x540007FF, 0x41820024, 0x387E12E2
|
||||
0x540007FF, 0x41820024, 0x387E12E2
|
||||
};
|
||||
|
||||
// this one is for the GH3 and VC saves
|
||||
@ -95,254 +95,265 @@ static const u32 nocopyflag2[3] = {
|
||||
//};
|
||||
|
||||
static const u32 nocopyflag3[5] = {
|
||||
0x2C030000, 0x41820200,0x48000058,0x38610100
|
||||
0x2C030000, 0x41820200,0x48000058,0x38610100
|
||||
};
|
||||
// this removes the display warning for no copy VC and GH3 saves
|
||||
static const u32 nocopyflag4[4] = {
|
||||
0x80010008, 0x2C000000, 0x4182000C, 0x3BE00001
|
||||
0x80010008, 0x2C000000, 0x4182000C, 0x3BE00001
|
||||
};
|
||||
|
||||
static const u32 nocopyflag5[3] = {
|
||||
0x801D0024,0x540007FF,0x41820024
|
||||
0x801D0024,0x540007FF,0x41820024
|
||||
};
|
||||
|
||||
static const u32 movedvdpatch[3] = {
|
||||
0x2C040000, 0x41820120, 0x3C608109
|
||||
0x2C040000, 0x41820120, 0x3C608109
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
static const u32 regionfreehooks[5] = {
|
||||
0x7C600774, 0x2C000001, 0x41820030,0x40800010,0x2C000000
|
||||
0x7C600774, 0x2C000001, 0x41820030,0x40800010,0x2C000000
|
||||
};
|
||||
|
||||
static const u32 fwritepatch[8] = {
|
||||
0x9421FFD0,0x7C0802A6,0x90010034,0xBF210014,0x7C9B2378,0x7CDC3378,0x7C7A1B78,0x7CB92B78 // bushing fwrite
|
||||
0x9421FFD0,0x7C0802A6,0x90010034,0xBF210014,0x7C9B2378,0x7CDC3378,0x7C7A1B78,0x7CB92B78 // bushing fwrite
|
||||
};
|
||||
|
||||
static const u32 kpadhooks[4] = {
|
||||
0x9A3F005E,0x38AE0080,0x389FFFFC,0x7E0903A6
|
||||
0x9A3F005E,0x38AE0080,0x389FFFFC,0x7E0903A6
|
||||
};
|
||||
|
||||
static const u32 kpadoldhooks[6] = {
|
||||
0x801D0060, 0x901E0060, 0x801D0064, 0x901E0064, 0x801D0068, 0x901E0068
|
||||
0x801D0060, 0x901E0060, 0x801D0064, 0x901E0064, 0x801D0068, 0x901E0068
|
||||
};
|
||||
|
||||
static const u32 joypadhooks[4] = {
|
||||
0x3AB50001, 0x3A73000C, 0x2C150004, 0x3B18000C
|
||||
0x3AB50001, 0x3A73000C, 0x2C150004, 0x3B18000C
|
||||
};
|
||||
|
||||
static const u32 langpatch[3] = {
|
||||
0x7C600775, 0x40820010, 0x38000000
|
||||
0x7C600775, 0x40820010, 0x38000000
|
||||
};
|
||||
|
||||
static const u32 vipatchcode[3] = {
|
||||
0x4182000C,0x4180001C,0x48000018
|
||||
0x4182000C,0x4180001C,0x48000018
|
||||
};
|
||||
|
||||
static const u32 wpadlibogc[5] = {
|
||||
// 0x38A00140, 0x7C095878, 0x7D600078, 0x901F0010,0x913F0014
|
||||
// 0x7FA00124, 0x8001001C, 0x83810008, 0x83A1000C,0x7C0803A6
|
||||
0x90A402E0,0x806502E4,0x908502E4,0x2C030000,0x906402E4
|
||||
0x90A402E0,0x806502E4,0x908502E4,0x2C030000,0x906402E4
|
||||
};
|
||||
|
||||
void dogamehooks(void *addr, u32 len) {
|
||||
void *addr_start = addr;
|
||||
void *addr_end = addr+len;
|
||||
void dogamehooks(void *addr, u32 len)
|
||||
{
|
||||
void *addr_start = addr;
|
||||
void *addr_end = addr+len;
|
||||
|
||||
while (addr_start < addr_end) {
|
||||
while(addr_start < addr_end)
|
||||
{
|
||||
|
||||
switch(hooktype)
|
||||
{
|
||||
|
||||
case 0:
|
||||
|
||||
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);
|
||||
patchhook((u32)addr_start, len);
|
||||
patched = 1;
|
||||
hooktype = 1;
|
||||
}
|
||||
break;
|
||||
|
||||
switch (hooktype) {
|
||||
/*
|
||||
case 2:
|
||||
if(memcmp(addr_start, kpadhooks, sizeof(kpadhooks))==0){
|
||||
patchhook((u32)addr_start, len);
|
||||
patched = 1;
|
||||
}
|
||||
|
||||
case 0:
|
||||
if(memcmp(addr_start, kpadoldhooks, sizeof(kpadoldhooks))==0){
|
||||
patchhook((u32)addr_start, len);
|
||||
patched = 1;
|
||||
}
|
||||
break;
|
||||
|
||||
case 3:
|
||||
if(memcmp(addr_start, joypadhooks, sizeof(joypadhooks))==0){
|
||||
patchhook((u32)addr_start, len);
|
||||
patched = 1;
|
||||
}
|
||||
break;
|
||||
|
||||
break;
|
||||
case 4:
|
||||
if(memcmp(addr_start, recoveryhooks, sizeof(recoveryhooks))==0){
|
||||
patchhook3((u32)addr_start, len);
|
||||
}
|
||||
break;
|
||||
*/
|
||||
case 2:
|
||||
|
||||
case 1:
|
||||
if (memcmp(addr_start, viwiihooks, sizeof(viwiihooks))==0) {
|
||||
// printf("\n\n\n");
|
||||
// printf("found at address %x\n", addr_start);
|
||||
// sleep(2);
|
||||
patchhook((u32)addr_start, len);
|
||||
patched = 1;
|
||||
hooktype = 1;
|
||||
}
|
||||
break;
|
||||
if(memcmp(addr_start, viwiihooks, sizeof(viwiihooks))==0){
|
||||
patchhook2((u32)addr_start, len);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
/*
|
||||
case 2:
|
||||
if(memcmp(addr_start, kpadhooks, sizeof(kpadhooks))==0){
|
||||
patchhook((u32)addr_start, len);
|
||||
patched = 1;
|
||||
}
|
||||
/*
|
||||
case 6:
|
||||
// jap region free
|
||||
if(memcmp(addr_start, regionfreehooks, sizeof(regionfreehooks))==0){
|
||||
regionfreejap((u32)addr_start, len);
|
||||
}
|
||||
|
||||
if(memcmp(addr_start, kpadoldhooks, sizeof(kpadoldhooks))==0){
|
||||
patchhook((u32)addr_start, len);
|
||||
patched = 1;
|
||||
}
|
||||
break;
|
||||
// usa region free
|
||||
if(memcmp(addr_start, regionfreehooks, sizeof(regionfreehooks))==0){
|
||||
regionfreeusa((u32)addr_start, len);
|
||||
}
|
||||
|
||||
case 3:
|
||||
if(memcmp(addr_start, joypadhooks, sizeof(joypadhooks))==0){
|
||||
patchhook((u32)addr_start, len);
|
||||
patched = 1;
|
||||
}
|
||||
break;
|
||||
// pal region free
|
||||
if(memcmp(addr_start, regionfreehooks, sizeof(regionfreehooks))==0){
|
||||
regionfreepal((u32)addr_start, len);
|
||||
}
|
||||
|
||||
case 4:
|
||||
if(memcmp(addr_start, recoveryhooks, sizeof(recoveryhooks))==0){
|
||||
patchhook3((u32)addr_start, len);
|
||||
}
|
||||
break;
|
||||
*/
|
||||
case 2:
|
||||
|
||||
if (memcmp(addr_start, viwiihooks, sizeof(viwiihooks))==0) {
|
||||
patchhook2((u32)addr_start, len);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
/*
|
||||
case 6:
|
||||
// jap region free
|
||||
if(memcmp(addr_start, regionfreehooks, sizeof(regionfreehooks))==0){
|
||||
regionfreejap((u32)addr_start, len);
|
||||
}
|
||||
|
||||
// usa region free
|
||||
if(memcmp(addr_start, regionfreehooks, sizeof(regionfreehooks))==0){
|
||||
regionfreeusa((u32)addr_start, len);
|
||||
}
|
||||
|
||||
// pal region free
|
||||
if(memcmp(addr_start, regionfreehooks, sizeof(regionfreehooks))==0){
|
||||
regionfreepal((u32)addr_start, len);
|
||||
}
|
||||
|
||||
// skip disc update
|
||||
if(memcmp(addr_start, updatecheckhook, sizeof(updatecheckhook))==0){
|
||||
patchupdatecheck((u32)addr_start, len);
|
||||
}
|
||||
break;
|
||||
// skip disc update
|
||||
if(memcmp(addr_start, updatecheckhook, sizeof(updatecheckhook))==0){
|
||||
patchupdatecheck((u32)addr_start, len);
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case 7:
|
||||
if(memcmp(addr_start, healthcheckhook, sizeof(healthcheckhook))==0){
|
||||
removehealthcheck((u32)addr_start, len);
|
||||
}
|
||||
break;
|
||||
case 7:
|
||||
if(memcmp(addr_start, healthcheckhook, sizeof(healthcheckhook))==0){
|
||||
removehealthcheck((u32)addr_start, len);
|
||||
}
|
||||
break;
|
||||
|
||||
// no copy flags
|
||||
case 8:
|
||||
// Remove the actual flag so can copy back
|
||||
if(memcmp(addr_start, nocopyflag5, sizeof(nocopyflag5))==0){
|
||||
copyflagcheck5((u32)addr_start, len);
|
||||
}
|
||||
// no copy flags
|
||||
case 8:
|
||||
// Remove the actual flag so can copy back
|
||||
if(memcmp(addr_start, nocopyflag5, sizeof(nocopyflag5))==0){
|
||||
copyflagcheck5((u32)addr_start, len);
|
||||
}
|
||||
|
||||
|
||||
if(memcmp(addr_start, nocopyflag1, sizeof(nocopyflag1))==0){
|
||||
copyflagcheck1((u32)addr_start, len);
|
||||
}
|
||||
|
||||
if(memcmp(addr_start, nocopyflag2, sizeof(nocopyflag2))==0){
|
||||
copyflagcheck2((u32)addr_start, len);
|
||||
}
|
||||
|
||||
// no VC and GH3 save
|
||||
if(memcmp(addr_start, nocopyflag3, sizeof(nocopyflag2))==0){
|
||||
copyflagcheck3((u32)addr_start, len);
|
||||
}
|
||||
// no VC and GH3 save display remove
|
||||
if(memcmp(addr_start, nocopyflag4, sizeof(nocopyflag4))==0){
|
||||
copyflagcheck4((u32)addr_start, len);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
if(memcmp(addr_start, nocopyflag1, sizeof(nocopyflag1))==0){
|
||||
copyflagcheck1((u32)addr_start, len);
|
||||
}
|
||||
case 9:
|
||||
if(memcmp(addr_start, movedvdpatch, sizeof(movedvdpatch))==0){
|
||||
movedvdhooks((u32)addr_start, len);
|
||||
}
|
||||
break;
|
||||
*/
|
||||
// multidol
|
||||
case 3:
|
||||
|
||||
if(memcmp(addr_start, nocopyflag2, sizeof(nocopyflag2))==0){
|
||||
copyflagcheck2((u32)addr_start, len);
|
||||
}
|
||||
|
||||
// no VC and GH3 save
|
||||
if(memcmp(addr_start, nocopyflag3, sizeof(nocopyflag2))==0){
|
||||
copyflagcheck3((u32)addr_start, len);
|
||||
}
|
||||
// no VC and GH3 save display remove
|
||||
if(memcmp(addr_start, nocopyflag4, sizeof(nocopyflag4))==0){
|
||||
copyflagcheck4((u32)addr_start, len);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case 9:
|
||||
if(memcmp(addr_start, movedvdpatch, sizeof(movedvdpatch))==0){
|
||||
movedvdhooks((u32)addr_start, len);
|
||||
}
|
||||
break;
|
||||
*/
|
||||
// multidol
|
||||
case 3:
|
||||
|
||||
if (memcmp(addr_start, multidolpatch1, sizeof(multidolpatch1))==0) {
|
||||
multidolpatchone((u32)addr_start, len);
|
||||
}
|
||||
if (memcmp(addr_start, multidolpatch2, sizeof(multidolpatch2))==0) {
|
||||
multidolpatchtwo((u32)addr_start, len);
|
||||
}
|
||||
break;
|
||||
if(memcmp(addr_start, multidolpatch1, sizeof(multidolpatch1))==0){
|
||||
multidolpatchone((u32)addr_start, len);
|
||||
}
|
||||
if(memcmp(addr_start, multidolpatch2, sizeof(multidolpatch2))==0){
|
||||
multidolpatchtwo((u32)addr_start, len);
|
||||
}
|
||||
break;
|
||||
}
|
||||
addr_start += 4;
|
||||
}
|
||||
addr_start += 4;
|
||||
}
|
||||
}
|
||||
|
||||
// Not used yet, for patching DOL once loaded into memory and befor execution
|
||||
void patchdol(void *addr, u32 len) {
|
||||
void patchdol(void *addr, u32 len)
|
||||
{
|
||||
|
||||
void *addr_start = addr;
|
||||
void *addr_end = addr+len;
|
||||
|
||||
void *addr_start = addr;
|
||||
void *addr_end = addr+len;
|
||||
|
||||
while (addr_start < addr_end) {
|
||||
if (memcmp(addr_start, wpadlibogc, sizeof(wpadlibogc))==0) {
|
||||
// printf("\n\n\n");
|
||||
// printf("found at address %x\n", addr_start);
|
||||
// sleep(10);
|
||||
// patchhookdol((u32)addr_start, len);
|
||||
patched = 1;
|
||||
break;
|
||||
}
|
||||
addr_start += 4;
|
||||
}
|
||||
while(addr_start < addr_end)
|
||||
{
|
||||
if(memcmp(addr_start, wpadlibogc, sizeof(wpadlibogc))==0) {
|
||||
// printf("\n\n\n");
|
||||
// printf("found at address %x\n", addr_start);
|
||||
// sleep(10);
|
||||
// patchhookdol((u32)addr_start, len);
|
||||
patched = 1;
|
||||
break;
|
||||
}
|
||||
addr_start += 4;
|
||||
}
|
||||
}
|
||||
|
||||
void langpatcher(void *addr, u32 len) {
|
||||
void langpatcher(void *addr, u32 len)
|
||||
{
|
||||
|
||||
void *addr_start = addr;
|
||||
void *addr_end = addr+len;
|
||||
|
||||
void *addr_start = addr;
|
||||
void *addr_end = addr+len;
|
||||
|
||||
while (addr_start < addr_end) {
|
||||
|
||||
if (memcmp(addr_start, langpatch, sizeof(langpatch))==0) {
|
||||
if (configbytes[0] != 0xCD) {
|
||||
langvipatch((u32)addr_start, len, configbytes[0]);
|
||||
}
|
||||
}
|
||||
addr_start += 4;
|
||||
}
|
||||
while(addr_start < addr_end)
|
||||
{
|
||||
|
||||
if(memcmp(addr_start, langpatch, sizeof(langpatch))==0) {
|
||||
if(configbytes[0] != 0xCD){
|
||||
langvipatch((u32)addr_start, len, configbytes[0]);
|
||||
}
|
||||
}
|
||||
addr_start += 4;
|
||||
}
|
||||
}
|
||||
|
||||
void patchdebug(void *addr, u32 len) {
|
||||
void patchdebug(void *addr, u32 len)
|
||||
{
|
||||
|
||||
void *addr_start = addr;
|
||||
void *addr_end = addr+len;
|
||||
|
||||
void *addr_start = addr;
|
||||
void *addr_end = addr+len;
|
||||
while(addr_start < addr_end)
|
||||
{
|
||||
|
||||
if(memcmp(addr_start, fwritepatch, sizeof(fwritepatch))==0) {
|
||||
|
||||
while (addr_start < addr_end) {
|
||||
|
||||
if (memcmp(addr_start, fwritepatch, sizeof(fwritepatch))==0) {
|
||||
|
||||
memcpy(addr_start,fwrite_patch_bin,fwrite_patch_bin_len);
|
||||
// apply patch
|
||||
}
|
||||
addr_start += 4;
|
||||
}
|
||||
memcpy(addr_start,fwrite_patch_bin,fwrite_patch_bin_len);
|
||||
// apply patch
|
||||
}
|
||||
addr_start += 4;
|
||||
}
|
||||
}
|
||||
|
||||
void vidolpatcher(void *addr, u32 len) {
|
||||
void vidolpatcher(void *addr, u32 len)
|
||||
{
|
||||
|
||||
void *addr_start = addr;
|
||||
void *addr_end = addr+len;
|
||||
|
||||
void *addr_start = addr;
|
||||
void *addr_end = addr+len;
|
||||
|
||||
while (addr_start < addr_end) {
|
||||
if (memcmp(addr_start, vipatchcode, sizeof(vipatchcode))==0) {
|
||||
vipatch((u32)addr_start, len);
|
||||
}
|
||||
addr_start += 4;
|
||||
}
|
||||
while(addr_start < addr_end)
|
||||
{
|
||||
if(memcmp(addr_start, vipatchcode, sizeof(vipatchcode))==0) {
|
||||
vipatch((u32)addr_start, len);
|
||||
}
|
||||
addr_start += 4;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -22,19 +22,20 @@
|
||||
#ifndef __PATCHCODE_H__
|
||||
#define __PATCHCODE_H__
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
// Globals
|
||||
u32 hooktype;
|
||||
int patched;
|
||||
u8 configbytes[2];
|
||||
u32 regionfree;
|
||||
u32 hooktype;
|
||||
int patched;
|
||||
u8 configbytes[2];
|
||||
u32 regionfree;
|
||||
|
||||
// Function prototypes
|
||||
void dogamehooks(void *addr, u32 len);
|
||||
void langpatcher(void *addr, u32 len);
|
||||
void vidolpatcher(void *addr, u32 len);
|
||||
void patchdebug(void *addr, u32 len);
|
||||
void dogamehooks(void *addr, u32 len);
|
||||
void langpatcher(void *addr, u32 len);
|
||||
void vidolpatcher(void *addr, u32 len);
|
||||
void patchdebug(void *addr, u32 len);
|
||||
|
||||
|
||||
|
||||
|
@ -1,508 +1,508 @@
|
||||
|
||||
# (c) Nuke www.usbgecko.com. Licensed under GPL V2
|
||||
# (c) Nuke www.usbgecko.com. Licensed under GPL V2
|
||||
.text
|
||||
#include "ppc.h"
|
||||
|
||||
|
||||
.globl patchhook # r3 address
|
||||
patchhook:
|
||||
mtctr r4
|
||||
lis r6, 0x4E80
|
||||
ori r6, r6, 0x0020 # blr
|
||||
mtctr r4
|
||||
lis r6, 0x4E80
|
||||
ori r6, r6, 0x0020 # blr
|
||||
findblr:
|
||||
lwz r5, 0(r3)
|
||||
cmpw r6, r5
|
||||
beq writebranch
|
||||
addi r3, r3, 4 # next word
|
||||
bdnz findblr # loop length
|
||||
b exit # stop unhooked game hanging
|
||||
lwz r5, 0(r3)
|
||||
cmpw r6, r5
|
||||
beq writebranch
|
||||
addi r3, r3, 4 # next word
|
||||
bdnz findblr # loop length
|
||||
b exit # stop unhooked game hanging
|
||||
|
||||
writebranch:
|
||||
lis r4, 0x8000 # 800018A0 hook location (source)
|
||||
ori r4, r4, 0x18A8
|
||||
subf r4, r3, r4 # subtract r3 from r4 and place in r4
|
||||
lis r5, 0x3FF
|
||||
ori r5, r5, 0xFFFF # 0x3FFFFFF
|
||||
and r4, r4, r5
|
||||
lis r5, 0x4800 # 0x48000000
|
||||
or r4, r4, r5
|
||||
stw r4, 0(r3) # result in r3
|
||||
dcbf r0, r3 # data cache block flush
|
||||
icbi r0, r3
|
||||
lis r4, 0x8000 # 800018A0 hook location (source)
|
||||
ori r4, r4, 0x18A8
|
||||
subf r4, r3, r4 # subtract r3 from r4 and place in r4
|
||||
lis r5, 0x3FF
|
||||
ori r5, r5, 0xFFFF # 0x3FFFFFF
|
||||
and r4, r4, r5
|
||||
lis r5, 0x4800 # 0x48000000
|
||||
or r4, r4, r5
|
||||
stw r4, 0(r3) # result in r3
|
||||
dcbf r0, r3 # data cache block flush
|
||||
icbi r0, r3
|
||||
exit:
|
||||
blr # return
|
||||
blr # return
|
||||
|
||||
.globl patchhook2 # r3 address
|
||||
patchhook2:
|
||||
mtctr r4
|
||||
lis r6, 0x4E80
|
||||
ori r6, r6, 0x0020 # blr
|
||||
findblr2:
|
||||
lwz r5, 0(r3)
|
||||
cmpw r6, r5
|
||||
beq writebranch2
|
||||
addi r3, r3, 4 # next word
|
||||
bdnz findblr2 # loop length
|
||||
b exit2 # stop unhooked game hanging
|
||||
.globl patchhook2 # r3 address
|
||||
patchhook2:
|
||||
mtctr r4
|
||||
lis r6, 0x4E80
|
||||
ori r6, r6, 0x0020 # blr
|
||||
findblr2:
|
||||
lwz r5, 0(r3)
|
||||
cmpw r6, r5
|
||||
beq writebranch2
|
||||
addi r3, r3, 4 # next word
|
||||
bdnz findblr2 # loop length
|
||||
b exit2 # stop unhooked game hanging
|
||||
|
||||
writebranch2:
|
||||
lis r4, 0x8000 # 81700000 our temp patcher
|
||||
ori r4, r4, 0x18a8
|
||||
subf r4, r3, r4 # subtract r3 from r4 and place in r4
|
||||
lis r5, 0x3FF
|
||||
ori r5, r5, 0xFFFF # 0x3FFFFFF
|
||||
and r4, r4, r5
|
||||
lis r5, 0x4800 # 0x48000000
|
||||
or r4, r4, r5
|
||||
stw r4, 0(r3) # result in r3
|
||||
dcbf r0, r3 # data cache block flush
|
||||
icbi r0, r3
|
||||
exit2:
|
||||
blr # return
|
||||
writebranch2:
|
||||
lis r4, 0x8000 # 81700000 our temp patcher
|
||||
ori r4, r4, 0x18a8
|
||||
subf r4, r3, r4 # subtract r3 from r4 and place in r4
|
||||
lis r5, 0x3FF
|
||||
ori r5, r5, 0xFFFF # 0x3FFFFFF
|
||||
and r4, r4, r5
|
||||
lis r5, 0x4800 # 0x48000000
|
||||
or r4, r4, r5
|
||||
stw r4, 0(r3) # result in r3
|
||||
dcbf r0, r3 # data cache block flush
|
||||
icbi r0, r3
|
||||
exit2:
|
||||
blr # return
|
||||
|
||||
.globl patchhook3 # r3 address
|
||||
patchhook3:
|
||||
mtctr r4
|
||||
lis r6, 0x4BFF
|
||||
ori r6, r6, 0xE955 # blr
|
||||
findbne:
|
||||
lwz r5, 0(r3)
|
||||
cmpw r6, r5
|
||||
beq writebl
|
||||
addi r3, r3, 4 # next word
|
||||
bdnz findbne # loop length
|
||||
b exit3 # stop unhooked game hanging
|
||||
.globl patchhook3 # r3 address
|
||||
patchhook3:
|
||||
mtctr r4
|
||||
lis r6, 0x4BFF
|
||||
ori r6, r6, 0xE955 # blr
|
||||
findbne:
|
||||
lwz r5, 0(r3)
|
||||
cmpw r6, r5
|
||||
beq writebl
|
||||
addi r3, r3, 4 # next word
|
||||
bdnz findbne # loop length
|
||||
b exit3 # stop unhooked game hanging
|
||||
|
||||
writebl:
|
||||
lis r4, 0x4BFF # 81700000 our temp patcher
|
||||
ori r4, r4, 0xEA91
|
||||
stw r4, 0(r3) # result in r3
|
||||
dcbf r0, r3 # data cache block flush
|
||||
icbi r0, r3
|
||||
exit3:
|
||||
blr # return
|
||||
writebl:
|
||||
lis r4, 0x4BFF # 81700000 our temp patcher
|
||||
ori r4, r4, 0xEA91
|
||||
stw r4, 0(r3) # result in r3
|
||||
dcbf r0, r3 # data cache block flush
|
||||
icbi r0, r3
|
||||
exit3:
|
||||
blr # return
|
||||
|
||||
.globl patchhook4 # r3 address
|
||||
patchhook4:
|
||||
mtctr r4
|
||||
lis r6, 0x4082
|
||||
ori r6, r6, 0x001C # blr
|
||||
findregion:
|
||||
lwz r5, 0(r3)
|
||||
cmpw r6, r5
|
||||
beq writebr
|
||||
addi r3, r3, 4 # next word
|
||||
bdnz findregion # loop length
|
||||
b exit4 # stop unhooked game hanging
|
||||
.globl patchhook4 # r3 address
|
||||
patchhook4:
|
||||
mtctr r4
|
||||
lis r6, 0x4082
|
||||
ori r6, r6, 0x001C # blr
|
||||
findregion:
|
||||
lwz r5, 0(r3)
|
||||
cmpw r6, r5
|
||||
beq writebr
|
||||
addi r3, r3, 4 # next word
|
||||
bdnz findregion # loop length
|
||||
b exit4 # stop unhooked game hanging
|
||||
|
||||
writebr:
|
||||
lis r4, 0x4800
|
||||
ori r4, r4, 0x001C
|
||||
stw r4, 0(r3) # result in r3
|
||||
dcbf r0, r3 # data cache block flush
|
||||
icbi r0, r3
|
||||
exit4:
|
||||
blr # return
|
||||
writebr:
|
||||
lis r4, 0x4800
|
||||
ori r4, r4, 0x001C
|
||||
stw r4, 0(r3) # result in r3
|
||||
dcbf r0, r3 # data cache block flush
|
||||
icbi r0, r3
|
||||
exit4:
|
||||
blr # return
|
||||
|
||||
.globl multidolpatchone # r3 address
|
||||
multidolpatchone:
|
||||
mtctr r4
|
||||
lis r6, 0x3800
|
||||
ori r6, r6, 0x0001 # (li r0,1)
|
||||
findmulti:
|
||||
lwz r5, 0(r3)
|
||||
cmpw r6, r5
|
||||
beq writemulti
|
||||
subi r3, r3, 4 # go back
|
||||
bdnz findmulti # loop length
|
||||
b exit5 # stop unhooked game hanging
|
||||
.globl multidolpatchone # r3 address
|
||||
multidolpatchone:
|
||||
mtctr r4
|
||||
lis r6, 0x3800
|
||||
ori r6, r6, 0x0001 # (li r0,1)
|
||||
findmulti:
|
||||
lwz r5, 0(r3)
|
||||
cmpw r6, r5
|
||||
beq writemulti
|
||||
subi r3, r3, 4 # go back
|
||||
bdnz findmulti # loop length
|
||||
b exit5 # stop unhooked game hanging
|
||||
|
||||
writemulti:
|
||||
lis r4, 0x8170 # 81700000
|
||||
ori r4, r4, 0x0020
|
||||
subf r18, r3, r4 # subf r18,(source),(dest)
|
||||
lis r6, 0x4800
|
||||
ori r6,r6,1
|
||||
rlwimi r6,r18,0,6,29
|
||||
stw r6,0(r3)
|
||||
stw r6,0(r19)
|
||||
stw r3,4(r19)
|
||||
dcbf r0, r3
|
||||
sync
|
||||
icbi r0, r3
|
||||
isync
|
||||
exit5:
|
||||
blr # return
|
||||
writemulti:
|
||||
lis r4, 0x8170 # 81700000
|
||||
ori r4, r4, 0x0020
|
||||
subf r18, r3, r4 # subf r18,(source),(dest)
|
||||
lis r6, 0x4800
|
||||
ori r6,r6,1
|
||||
rlwimi r6,r18,0,6,29
|
||||
stw r6,0(r3)
|
||||
stw r6,0(r19)
|
||||
stw r3,4(r19)
|
||||
dcbf r0, r3
|
||||
sync
|
||||
icbi r0, r3
|
||||
isync
|
||||
exit5:
|
||||
blr # return
|
||||
|
||||
.globl multidolpatchtwo # r3 address
|
||||
multidolpatchtwo:
|
||||
mtctr r4
|
||||
lis r6, 0x3F60
|
||||
ori r6, r6, 0x8000 # (lis r27,-32768)
|
||||
findmulti2:
|
||||
lwz r5, 0(r3)
|
||||
cmpw r6, r5
|
||||
beq writemulti2
|
||||
addi r3, r3, 4 # go forward
|
||||
bdnz findmulti2 # loop length
|
||||
b exit6 # stop unhooked game hanging
|
||||
.globl multidolpatchtwo # r3 address
|
||||
multidolpatchtwo:
|
||||
mtctr r4
|
||||
lis r6, 0x3F60
|
||||
ori r6, r6, 0x8000 # (lis r27,-32768)
|
||||
findmulti2:
|
||||
lwz r5, 0(r3)
|
||||
cmpw r6, r5
|
||||
beq writemulti2
|
||||
addi r3, r3, 4 # go forward
|
||||
bdnz findmulti2 # loop length
|
||||
b exit6 # stop unhooked game hanging
|
||||
|
||||
writemulti2:
|
||||
lis r4, 0x8170 # 81700020
|
||||
ori r4, r4, 0x0000
|
||||
subf r18, r3, r4 # subf r18,(source),(dest)
|
||||
lis r6, 0x4800
|
||||
ori r6,r6,1
|
||||
rlwimi r6,r18,0,6,29
|
||||
stw r6,0(r3)
|
||||
stw r6,0(r19)
|
||||
stw r3,4(r19)
|
||||
dcbf r0, r3
|
||||
sync
|
||||
icbi r0, r3
|
||||
isync
|
||||
exit6:
|
||||
blr # return
|
||||
writemulti2:
|
||||
lis r4, 0x8170 # 81700020
|
||||
ori r4, r4, 0x0000
|
||||
subf r18, r3, r4 # subf r18,(source),(dest)
|
||||
lis r6, 0x4800
|
||||
ori r6,r6,1
|
||||
rlwimi r6,r18,0,6,29
|
||||
stw r6,0(r3)
|
||||
stw r6,0(r19)
|
||||
stw r3,4(r19)
|
||||
dcbf r0, r3
|
||||
sync
|
||||
icbi r0, r3
|
||||
isync
|
||||
exit6:
|
||||
blr # return
|
||||
|
||||
.globl langvipatch # r3 address, r4 len, r5 lang byte
|
||||
langvipatch:
|
||||
mtctr r4
|
||||
lis r6, 0x8861
|
||||
ori r6, r6, 0x0008 # lbz r3, 8(sp)
|
||||
findlang:
|
||||
lwz r7, 0(r3)
|
||||
cmpw r6, r7
|
||||
beq patchlang
|
||||
addi r3, r3, 4 # next word
|
||||
bdnz findlang # loop length
|
||||
b exitlang # stop unhooked game hanging
|
||||
.globl langvipatch # r3 address, r4 len, r5 lang byte
|
||||
langvipatch:
|
||||
mtctr r4
|
||||
lis r6, 0x8861
|
||||
ori r6, r6, 0x0008 # lbz r3, 8(sp)
|
||||
findlang:
|
||||
lwz r7, 0(r3)
|
||||
cmpw r6, r7
|
||||
beq patchlang
|
||||
addi r3, r3, 4 # next word
|
||||
bdnz findlang # loop length
|
||||
b exitlang # stop unhooked game hanging
|
||||
|
||||
patchlang:
|
||||
patchlang:
|
||||
|
||||
lis r4, 0x3860 # 0x38600001 li %r3, 1 # eng
|
||||
add r4, r4, r5
|
||||
gofinal:
|
||||
stw r4, 0(r3) # result in r3
|
||||
dcbf r0, r3 # data cache block flush
|
||||
icbi r0, r3
|
||||
exitlang:
|
||||
blr # return
|
||||
|
||||
lis r4, 0x3860 # 0x38600001 li %r3, 1 # eng
|
||||
add r4, r4, r5
|
||||
gofinal:
|
||||
stw r4, 0(r3) # result in r3
|
||||
dcbf r0, r3 # data cache block flush
|
||||
icbi r0, r3
|
||||
exitlang:
|
||||
blr # return
|
||||
.globl vipatch # r3 address
|
||||
vipatch:
|
||||
mtctr r4
|
||||
lis r6, 0x5400
|
||||
ori r6, r6, 0xFFFE
|
||||
findvi:
|
||||
lwz r5, 0(r3)
|
||||
cmpw r6, r5
|
||||
beq patchvi
|
||||
addi r3, r3, 4 # next word
|
||||
bdnz findvi # loop length
|
||||
b exitvi # stop unhooked game hanging
|
||||
|
||||
.globl vipatch # r3 address
|
||||
vipatch:
|
||||
mtctr r4
|
||||
lis r6, 0x5400
|
||||
ori r6, r6, 0xFFFE
|
||||
findvi:
|
||||
lwz r5, 0(r3)
|
||||
cmpw r6, r5
|
||||
beq patchvi
|
||||
addi r3, r3, 4 # next word
|
||||
bdnz findvi # loop length
|
||||
b exitvi # stop unhooked game hanging
|
||||
patchvi:
|
||||
lis r4, 0x8000
|
||||
ori r4, r4, 0x0003
|
||||
lbz r5, 0(r4)
|
||||
cmpwi r5, 0x45 # USA
|
||||
beq patchusa
|
||||
cmpwi r5, 0x4A
|
||||
beq patchjap2 # JAP
|
||||
b exitvi
|
||||
patchjap2:
|
||||
lis r4, 0x3800
|
||||
ori r4, r4, 0x0001
|
||||
b gofinal2
|
||||
patchusa:
|
||||
lis r4, 0x3800
|
||||
ori r4, r4, 0x0000
|
||||
gofinal2:
|
||||
stw r4, 0(r3) # result in r3
|
||||
dcbf r0, r3 # data cache block flush
|
||||
icbi r0, r3
|
||||
exitvi:
|
||||
blr # return
|
||||
|
||||
patchvi:
|
||||
lis r4, 0x8000
|
||||
ori r4, r4, 0x0003
|
||||
lbz r5, 0(r4)
|
||||
cmpwi r5, 0x45 # USA
|
||||
beq patchusa
|
||||
cmpwi r5, 0x4A
|
||||
beq patchjap2 # JAP
|
||||
b exitvi
|
||||
patchjap2:
|
||||
lis r4, 0x3800
|
||||
ori r4, r4, 0x0001
|
||||
b gofinal2
|
||||
patchusa:
|
||||
lis r4, 0x3800
|
||||
ori r4, r4, 0x0000
|
||||
gofinal2:
|
||||
stw r4, 0(r3) # result in r3
|
||||
dcbf r0, r3 # data cache block flush
|
||||
icbi r0, r3
|
||||
exitvi:
|
||||
blr # return
|
||||
.globl regionfreejap # r3 address
|
||||
regionfreejap:
|
||||
mtctr r4
|
||||
lis r6, 0x2C1B
|
||||
ori r6, r6, 0x0000 # blr
|
||||
findjap:
|
||||
lwz r5, 0(r3)
|
||||
cmpw r6, r5
|
||||
beq writenop
|
||||
addi r3, r3, 4 # next word
|
||||
bdnz findjap # loop length
|
||||
b exitjap # stop unhooked game hanging
|
||||
|
||||
.globl regionfreejap # r3 address
|
||||
regionfreejap:
|
||||
mtctr r4
|
||||
lis r6, 0x2C1B
|
||||
ori r6, r6, 0x0000 # blr
|
||||
findjap:
|
||||
lwz r5, 0(r3)
|
||||
cmpw r6, r5
|
||||
beq writenop
|
||||
addi r3, r3, 4 # next word
|
||||
bdnz findjap # loop length
|
||||
b exitjap # stop unhooked game hanging
|
||||
writenop:
|
||||
addi r3, r3, 4 # next word
|
||||
lis r4, 0x6000 # nop
|
||||
ori r4, r4, 0x0000
|
||||
stw r4, 0(r3) # result in r3
|
||||
dcbf r0, r3 # data cache block flush
|
||||
icbi r0, r3
|
||||
exitjap:
|
||||
blr # return
|
||||
|
||||
writenop:
|
||||
addi r3, r3, 4 # next word
|
||||
lis r4, 0x6000 # nop
|
||||
ori r4, r4, 0x0000
|
||||
stw r4, 0(r3) # result in r3
|
||||
dcbf r0, r3 # data cache block flush
|
||||
icbi r0, r3
|
||||
exitjap:
|
||||
blr # return
|
||||
.globl regionfreeusa # r3 address
|
||||
regionfreeusa:
|
||||
mtctr r4
|
||||
lis r6, 0x281B
|
||||
ori r6, r6, 0x0001 # blr
|
||||
findusa:
|
||||
lwz r5, 0(r3)
|
||||
cmpw r6, r5
|
||||
beq writenop1
|
||||
addi r3, r3, 4 # next word
|
||||
bdnz findusa # loop length
|
||||
b exitusa # stop unhooked game hanging
|
||||
|
||||
.globl regionfreeusa # r3 address
|
||||
regionfreeusa:
|
||||
mtctr r4
|
||||
lis r6, 0x281B
|
||||
ori r6, r6, 0x0001 # blr
|
||||
findusa:
|
||||
lwz r5, 0(r3)
|
||||
cmpw r6, r5
|
||||
beq writenop1
|
||||
addi r3, r3, 4 # next word
|
||||
bdnz findusa # loop length
|
||||
b exitusa # stop unhooked game hanging
|
||||
writenop1:
|
||||
addi r3, r3, 4 # next word
|
||||
lis r4, 0x6000 # nop
|
||||
ori r4, r4, 0x0000
|
||||
stw r4, 0(r3) # result in r3
|
||||
dcbf r0, r3 # data cache block flush
|
||||
icbi r0, r3
|
||||
exitusa:
|
||||
blr # return
|
||||
|
||||
writenop1:
|
||||
addi r3, r3, 4 # next word
|
||||
lis r4, 0x6000 # nop
|
||||
ori r4, r4, 0x0000
|
||||
stw r4, 0(r3) # result in r3
|
||||
dcbf r0, r3 # data cache block flush
|
||||
icbi r0, r3
|
||||
exitusa:
|
||||
blr # return
|
||||
.globl regionfreepal # r3 address
|
||||
regionfreepal:
|
||||
mtctr r4
|
||||
lis r6, 0x281B
|
||||
ori r6, r6, 0x0002 # blr
|
||||
findpal:
|
||||
lwz r5, 0(r3)
|
||||
cmpw r6, r5
|
||||
beq writenop2
|
||||
addi r3, r3, 4 # next word
|
||||
bdnz findpal # loop length
|
||||
b exitpal # stop unhooked game hanging
|
||||
|
||||
.globl regionfreepal # r3 address
|
||||
regionfreepal:
|
||||
mtctr r4
|
||||
lis r6, 0x281B
|
||||
ori r6, r6, 0x0002 # blr
|
||||
findpal:
|
||||
lwz r5, 0(r3)
|
||||
cmpw r6, r5
|
||||
beq writenop2
|
||||
addi r3, r3, 4 # next word
|
||||
bdnz findpal # loop length
|
||||
b exitpal # stop unhooked game hanging
|
||||
writenop2:
|
||||
addi r3, r3, 4 # next word
|
||||
lis r4, 0x6000 # nop
|
||||
ori r4, r4, 0x0000
|
||||
stw r4, 0(r3) # result in r3
|
||||
dcbf r0, r3 # data cache block flush
|
||||
icbi r0, r3
|
||||
|
||||
writenop2:
|
||||
addi r3, r3, 4 # next word
|
||||
lis r4, 0x6000 # nop
|
||||
ori r4, r4, 0x0000
|
||||
stw r4, 0(r3) # result in r3
|
||||
dcbf r0, r3 # data cache block flush
|
||||
icbi r0, r3
|
||||
lis r6, 0x4082
|
||||
ori r6, r6, 0x001C # bne loc_81377A2C
|
||||
findextra: #this is just the bne to b patch
|
||||
lwz r5, 0(r3)
|
||||
cmpw r6, r5
|
||||
beq writeb
|
||||
addi r3, r3, 4 # next word
|
||||
bdnz findextra # loop length
|
||||
b exitpal # stop unhooked game hanging
|
||||
|
||||
lis r6, 0x4082
|
||||
ori r6, r6, 0x001C # bne loc_81377A2C
|
||||
findextra: #this is just the bne to b patch
|
||||
lwz r5, 0(r3)
|
||||
cmpw r6, r5
|
||||
beq writeb
|
||||
addi r3, r3, 4 # next word
|
||||
bdnz findextra # loop length
|
||||
b exitpal # stop unhooked game hanging
|
||||
writeb:
|
||||
addi r3, r3, 4 # next word
|
||||
lis r4, 0x4800
|
||||
ori r4, r4, 0x001c # b loc_81377A2C
|
||||
stw r4, 0(r3) # result in r3
|
||||
dcbf r0, r3 # data cache block flush
|
||||
icbi r0, r3
|
||||
exitpal:
|
||||
blr # return
|
||||
|
||||
writeb:
|
||||
addi r3, r3, 4 # next word
|
||||
lis r4, 0x4800
|
||||
ori r4, r4, 0x001c # b loc_81377A2C
|
||||
stw r4, 0(r3) # result in r3
|
||||
dcbf r0, r3 # data cache block flush
|
||||
icbi r0, r3
|
||||
exitpal:
|
||||
blr # return
|
||||
.globl removehealthcheck # r3 address
|
||||
removehealthcheck:
|
||||
mtctr r4
|
||||
lis r6, 0x4182
|
||||
ori r6, r6, 0x004C # blr
|
||||
findhe:
|
||||
lwz r5, 0(r3)
|
||||
cmpw r6, r5
|
||||
beq writebhe
|
||||
addi r3, r3, 4 # next word
|
||||
bdnz findhe # loop length
|
||||
b exithe # stop unhooked game hanging
|
||||
|
||||
.globl removehealthcheck # r3 address
|
||||
removehealthcheck:
|
||||
mtctr r4
|
||||
lis r6, 0x4182
|
||||
ori r6, r6, 0x004C # blr
|
||||
findhe:
|
||||
lwz r5, 0(r3)
|
||||
cmpw r6, r5
|
||||
beq writebhe
|
||||
addi r3, r3, 4 # next word
|
||||
bdnz findhe # loop length
|
||||
b exithe # stop unhooked game hanging
|
||||
writebhe:
|
||||
lis r4, 0x6000
|
||||
ori r4, r4, 0x0000
|
||||
stw r4, 0(r3) # result in r3
|
||||
dcbf r0, r3 # data cache block flush
|
||||
icbi r0, r3
|
||||
exithe:
|
||||
blr # return
|
||||
|
||||
writebhe:
|
||||
lis r4, 0x6000
|
||||
ori r4, r4, 0x0000
|
||||
stw r4, 0(r3) # result in r3
|
||||
dcbf r0, r3 # data cache block flush
|
||||
icbi r0, r3
|
||||
exithe:
|
||||
blr # return
|
||||
|
||||
|
||||
.globl patchupdatecheck # r3 address
|
||||
patchupdatecheck:
|
||||
mtctr r4
|
||||
lis r6, 0x4082
|
||||
ori r6, r6, 0x0020 # blr
|
||||
finduc:
|
||||
lwz r5, 0(r3)
|
||||
cmpw r6, r5
|
||||
beq writenopuc
|
||||
addi r3, r3, 4 # next word
|
||||
bdnz finduc # loop length
|
||||
b exituc # stop unhooked game hanging
|
||||
|
||||
|
||||
.globl patchupdatecheck # r3 address
|
||||
patchupdatecheck:
|
||||
mtctr r4
|
||||
lis r6, 0x4082
|
||||
ori r6, r6, 0x0020 # blr
|
||||
finduc:
|
||||
lwz r5, 0(r3)
|
||||
cmpw r6, r5
|
||||
beq writenopuc
|
||||
addi r3, r3, 4 # next word
|
||||
bdnz finduc # loop length
|
||||
b exituc # stop unhooked game hanging
|
||||
|
||||
writenopuc:
|
||||
lis r4, 0x6000
|
||||
ori r4, r4, 0x0000
|
||||
stw r4, 0(r3) # result in r3
|
||||
dcbf r0, r3 # data cache block flush
|
||||
icbi r0, r3
|
||||
exituc:
|
||||
blr # return
|
||||
writenopuc:
|
||||
lis r4, 0x6000
|
||||
ori r4, r4, 0x0000
|
||||
stw r4, 0(r3) # result in r3
|
||||
dcbf r0, r3 # data cache block flush
|
||||
icbi r0, r3
|
||||
exituc:
|
||||
blr # return
|
||||
|
||||
|
||||
|
||||
|
||||
.globl copyflagcheck1 # r3 address
|
||||
copyflagcheck1:
|
||||
mtctr r4
|
||||
lis r6, 0x5400
|
||||
ori r6, r6, 0x07FF
|
||||
findncf1:
|
||||
lwz r5, 0(r3)
|
||||
cmpw r6, r5
|
||||
beq writencf1
|
||||
subi r3, r3, 4 # next word
|
||||
bdnz findncf1 # loop length
|
||||
b exitncf1 # stop unhooked game hanging
|
||||
.globl copyflagcheck1 # r3 address
|
||||
copyflagcheck1:
|
||||
mtctr r4
|
||||
lis r6, 0x5400
|
||||
ori r6, r6, 0x07FF
|
||||
findncf1:
|
||||
lwz r5, 0(r3)
|
||||
cmpw r6, r5
|
||||
beq writencf1
|
||||
subi r3, r3, 4 # next word
|
||||
bdnz findncf1 # loop length
|
||||
b exitncf1 # stop unhooked game hanging
|
||||
|
||||
writencf1:
|
||||
lis r4, 0x7C00
|
||||
ori r4, r4, 0x0000
|
||||
stw r4, 0(r3) # result in r3
|
||||
dcbf r0, r3 # data cache block flush
|
||||
icbi r0, r3
|
||||
exitncf1:
|
||||
blr # return
|
||||
writencf1:
|
||||
lis r4, 0x7C00
|
||||
ori r4, r4, 0x0000
|
||||
stw r4, 0(r3) # result in r3
|
||||
dcbf r0, r3 # data cache block flush
|
||||
icbi r0, r3
|
||||
exitncf1:
|
||||
blr # return
|
||||
|
||||
.globl copyflagcheck2 # r3 address
|
||||
copyflagcheck2:
|
||||
mtctr r4
|
||||
lis r6, 0x5400
|
||||
ori r6, r6, 0x07FF
|
||||
findncf2:
|
||||
lwz r5, 0(r3)
|
||||
cmpw r6, r5
|
||||
beq writencf2
|
||||
subi r3, r3, 4 # next word
|
||||
bdnz findncf2 # loop length
|
||||
b exitncf2 # stop unhooked game hanging
|
||||
.globl copyflagcheck2 # r3 address
|
||||
copyflagcheck2:
|
||||
mtctr r4
|
||||
lis r6, 0x5400
|
||||
ori r6, r6, 0x07FF
|
||||
findncf2:
|
||||
lwz r5, 0(r3)
|
||||
cmpw r6, r5
|
||||
beq writencf2
|
||||
subi r3, r3, 4 # next word
|
||||
bdnz findncf2 # loop length
|
||||
b exitncf2 # stop unhooked game hanging
|
||||
|
||||
writencf2:
|
||||
lis r4, 0x7C00
|
||||
ori r4, r4, 0x0000
|
||||
stw r4, 0(r3) # result in r3
|
||||
dcbf r0, r3 # data cache block flush
|
||||
icbi r0, r3
|
||||
exitncf2:
|
||||
blr # return
|
||||
writencf2:
|
||||
lis r4, 0x7C00
|
||||
ori r4, r4, 0x0000
|
||||
stw r4, 0(r3) # result in r3
|
||||
dcbf r0, r3 # data cache block flush
|
||||
icbi r0, r3
|
||||
exitncf2:
|
||||
blr # return
|
||||
|
||||
|
||||
.globl copyflagcheck3 # r3 address
|
||||
copyflagcheck3:
|
||||
findncf3:
|
||||
addi r3, r3, 20 # go back one dword (4 bytes)
|
||||
lwz r5, 0(r3)
|
||||
writencf3:
|
||||
lis r4, 0x3860
|
||||
ori r4, r4, 0x0001 # li r3,1
|
||||
stw r4, 0(r3) # result in r3
|
||||
dcbf r0, r3 # data cache block flush
|
||||
icbi r0, r3
|
||||
exitncf3:
|
||||
blr # return
|
||||
.globl copyflagcheck3 # r3 address
|
||||
copyflagcheck3:
|
||||
findncf3:
|
||||
addi r3, r3, 20 # go back one dword (4 bytes)
|
||||
lwz r5, 0(r3)
|
||||
writencf3:
|
||||
lis r4, 0x3860
|
||||
ori r4, r4, 0x0001 # li r3,1
|
||||
stw r4, 0(r3) # result in r3
|
||||
dcbf r0, r3 # data cache block flush
|
||||
icbi r0, r3
|
||||
exitncf3:
|
||||
blr # return
|
||||
|
||||
|
||||
.globl copyflagcheck4 # r3 address
|
||||
copyflagcheck4:
|
||||
mtctr r4
|
||||
lis r6, 0x3BE0
|
||||
ori r6, r6, 0x0001 # li r31,1
|
||||
findncf4:
|
||||
lwz r5, 0(r3)
|
||||
cmpw r6, r5
|
||||
beq writencf4
|
||||
addi r3, r3, 4 # next word
|
||||
bdnz findncf4 # loop length
|
||||
b exitncf4 # stop unhooked game hanging
|
||||
.globl copyflagcheck4 # r3 address
|
||||
copyflagcheck4:
|
||||
mtctr r4
|
||||
lis r6, 0x3BE0
|
||||
ori r6, r6, 0x0001 # li r31,1
|
||||
findncf4:
|
||||
lwz r5, 0(r3)
|
||||
cmpw r6, r5
|
||||
beq writencf4
|
||||
addi r3, r3, 4 # next word
|
||||
bdnz findncf4 # loop length
|
||||
b exitncf4 # stop unhooked game hanging
|
||||
|
||||
writencf4:
|
||||
lis r4, 0x3BE0
|
||||
ori r4, r4, 0x0000 # change this to 3BE00000 (li r31,0)
|
||||
stw r4, 0(r3) # result in r3
|
||||
dcbf r0, r3 # data cache block flush
|
||||
icbi r0, r3
|
||||
exitncf4:
|
||||
blr # return
|
||||
writencf4:
|
||||
lis r4, 0x3BE0
|
||||
ori r4, r4, 0x0000 # change this to 3BE00000 (li r31,0)
|
||||
stw r4, 0(r3) # result in r3
|
||||
dcbf r0, r3 # data cache block flush
|
||||
icbi r0, r3
|
||||
exitncf4:
|
||||
blr # return
|
||||
|
||||
.globl copyflagcheck5 # r3 address
|
||||
copyflagcheck5:
|
||||
mtctr r4
|
||||
lis r6, 0x4182
|
||||
ori r6, r6, 0x0024 # beq loc_8134AA60
|
||||
findncf5:
|
||||
lwz r5, 0(r3)
|
||||
cmpw r6, r5
|
||||
beq writencf5
|
||||
addi r3, r3, 4 # next word
|
||||
bdnz findncf5 # loop length
|
||||
b exitncf5 # stop unhooked game hanging
|
||||
.globl copyflagcheck5 # r3 address
|
||||
copyflagcheck5:
|
||||
mtctr r4
|
||||
lis r6, 0x4182
|
||||
ori r6, r6, 0x0024 # beq loc_8134AA60
|
||||
findncf5:
|
||||
lwz r5, 0(r3)
|
||||
cmpw r6, r5
|
||||
beq writencf5
|
||||
addi r3, r3, 4 # next word
|
||||
bdnz findncf5 # loop length
|
||||
b exitncf5 # stop unhooked game hanging
|
||||
|
||||
writencf5:
|
||||
#addi r3, r3, 8 # skip 2
|
||||
writencf5:
|
||||
#addi r3, r3, 8 # skip 2
|
||||
|
||||
lis r4, 0x801D
|
||||
ori r4, r4, 0x0024 # change to 801D0024 (lwz r0,36(r29))
|
||||
stw r4, 0(r3)
|
||||
dcbf r0, r3
|
||||
icbi r0, r3
|
||||
|
||||
addi r3, r3, 4 # next word
|
||||
|
||||
lis r4, 0x801D
|
||||
ori r4, r4, 0x0024 # change to 801D0024 (lwz r0,36(r29))
|
||||
stw r4, 0(r3)
|
||||
dcbf r0, r3
|
||||
icbi r0, r3
|
||||
lis r4, 0x5400
|
||||
ori r4, r4, 0x003C # change to 5400003C (rlwinm r0,r0,0,0,30)
|
||||
stw r4, 0(r3)
|
||||
dcbf r0, r3
|
||||
icbi r0, r3
|
||||
|
||||
addi r3, r3, 4 # next word
|
||||
addi r3, r3, 4 # next word
|
||||
|
||||
lis r4, 0x5400
|
||||
ori r4, r4, 0x003C # change to 5400003C (rlwinm r0,r0,0,0,30)
|
||||
stw r4, 0(r3)
|
||||
dcbf r0, r3
|
||||
icbi r0, r3
|
||||
lis r4, 0x901D
|
||||
ori r4, r4, 0x0024 # change to 901D0024 (stw r0,36(r29))
|
||||
stw r4, 0(r3)
|
||||
dcbf r0, r3
|
||||
icbi r0, r3
|
||||
|
||||
addi r3, r3, 4 # next word
|
||||
addi r3, r3, 4 # next word
|
||||
|
||||
lis r4, 0x901D
|
||||
ori r4, r4, 0x0024 # change to 901D0024 (stw r0,36(r29))
|
||||
stw r4, 0(r3)
|
||||
dcbf r0, r3
|
||||
icbi r0, r3
|
||||
lis r4, 0x4800
|
||||
ori r4, r4, 0x0018 # change to 48000018 (b 0x8134aa60)
|
||||
stw r4, 0(r3)
|
||||
dcbf r0, r3
|
||||
icbi r0, r3
|
||||
exitncf5:
|
||||
blr # return
|
||||
|
||||
addi r3, r3, 4 # next word
|
||||
|
||||
lis r4, 0x4800
|
||||
ori r4, r4, 0x0018 # change to 48000018 (b 0x8134aa60)
|
||||
stw r4, 0(r3)
|
||||
dcbf r0, r3
|
||||
icbi r0, r3
|
||||
exitncf5:
|
||||
blr # return
|
||||
|
||||
.globl movedvdhooks # r3 address
|
||||
movedvdhooks:
|
||||
lis r6, 0x4182
|
||||
ori r6, r6, 0x0120 # beq loc_813A7938
|
||||
findmd1:
|
||||
addi r3, r3, 4 # next word
|
||||
lwz r5, 0(r3)
|
||||
writemd1:
|
||||
lis r4, 0x6000
|
||||
ori r4, r4, 0x0000 # nop
|
||||
stw r4, 0(r3) # result in r3
|
||||
dcbf r0, r3 # data cache block flush
|
||||
icbi r0, r3
|
||||
exitmd1:
|
||||
blr # return
|
||||
.globl movedvdhooks # r3 address
|
||||
movedvdhooks:
|
||||
lis r6, 0x4182
|
||||
ori r6, r6, 0x0120 # beq loc_813A7938
|
||||
findmd1:
|
||||
addi r3, r3, 4 # next word
|
||||
lwz r5, 0(r3)
|
||||
writemd1:
|
||||
lis r4, 0x6000
|
||||
ori r4, r4, 0x0000 # nop
|
||||
stw r4, 0(r3) # result in r3
|
||||
dcbf r0, r3 # data cache block flush
|
||||
icbi r0, r3
|
||||
exitmd1:
|
||||
blr # return
|
||||
|
||||
|
@ -205,11 +205,11 @@ int DiscBrowse(struct discHdr * header) {
|
||||
|
||||
if (ret > 0) {
|
||||
char temp[100];
|
||||
strncpy(temp, fstfiles(fst, ret), sizeof(temp));
|
||||
strlcpy(temp, fstfiles(fst, ret), sizeof(temp));
|
||||
choice = WindowPrompt(temp, tr("Load this dol as alternate dol?"), tr("OK"), tr("Cancel"));
|
||||
if (choice) {
|
||||
//ret = offsetselect[ret];
|
||||
snprintf(alternatedname, sizeof(alternatedname), "%s", temp);
|
||||
strlcpy(alternatedname, temp, sizeof(alternatedname));
|
||||
exit = true;
|
||||
}
|
||||
}
|
||||
@ -232,7 +232,6 @@ int DiscBrowse(struct discHdr * header) {
|
||||
|
||||
|
||||
int autoSelectDol(const char *id) {
|
||||
//still not done//
|
||||
//////////ID6/////////////////
|
||||
|
||||
//Boogie
|
||||
@ -271,38 +270,6 @@ int autoSelectDol(const char *id) {
|
||||
//Metal Slug Anthology
|
||||
if (strcmp(id,"RMLP7U") == 0) return 56;//from isostar
|
||||
|
||||
//Metroid Prime Trilogy
|
||||
if (strcmp(id,"R3ME01") == 0) {
|
||||
int choice = WindowPrompt(tr("Select a DOL"), 0, "Metroid Prime", "Metroid Prime 2", "Metroid Prime 3");
|
||||
switch (choice) {
|
||||
case 1:
|
||||
choice = 780;
|
||||
break;
|
||||
case 2:
|
||||
choice = 781;
|
||||
break;
|
||||
default:
|
||||
choice = 782;
|
||||
break;
|
||||
}
|
||||
return choice;
|
||||
}
|
||||
if (strcmp(id,"R3MP01") == 0) {
|
||||
int choice = WindowPrompt(tr("Select a DOL"), 0, "Metroid Prime", "Metroid Prime 2", "Metroid Prime 3");
|
||||
switch (choice) {
|
||||
case 1:
|
||||
choice = 782;
|
||||
break;
|
||||
case 2:
|
||||
choice = 783;
|
||||
break;
|
||||
default:
|
||||
choice = 784;
|
||||
break;
|
||||
}
|
||||
return choice;
|
||||
}
|
||||
|
||||
//Mortal Kombat
|
||||
if (strcmp(id,"RKMP5D") == 0) return 290;//from isostar
|
||||
if (strcmp(id,"RKME5D") == 0) return 290;//starstremr
|
||||
@ -342,3 +309,41 @@ int autoSelectDol(const char *id) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
int autoSelectDolMenu(const char *id) {
|
||||
|
||||
//Metroid Prime Trilogy
|
||||
if (strcmp(id,"R3ME01") == 0) {
|
||||
int choice = WindowPrompt(tr("Select a DOL"), 0, "Metroid Prime", "Metroid Prime 2", "Metroid Prime 3", tr("Cancel"));
|
||||
switch (choice) {
|
||||
case 1:
|
||||
choice = 780;
|
||||
break;
|
||||
case 2:
|
||||
choice = 781;
|
||||
break;
|
||||
case 3:
|
||||
choice = 782;
|
||||
default: // 0
|
||||
break;
|
||||
}
|
||||
return choice;
|
||||
}
|
||||
if (strcmp(id,"R3MP01") == 0) {
|
||||
int choice = WindowPrompt(tr("Select a DOL"), 0, "Metroid Prime", "Metroid Prime 2", "Metroid Prime 3", tr("Cancel"));
|
||||
switch (choice) {
|
||||
case 1:
|
||||
choice = 782;
|
||||
break;
|
||||
case 2:
|
||||
choice = 783;
|
||||
break;
|
||||
case 3:
|
||||
choice = 784;
|
||||
default: // 0
|
||||
break;
|
||||
}
|
||||
return choice;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
@ -10,5 +10,6 @@
|
||||
|
||||
int DiscBrowse(struct discHdr * header);
|
||||
int autoSelectDol(const char *id);
|
||||
int autoSelectDolMenu(const char *id);
|
||||
|
||||
#endif
|
||||
|
@ -1957,7 +1957,7 @@ int GameSettings(struct discHdr * header) {
|
||||
alternatedol = game_cfg->loadalternatedol;
|
||||
alternatedoloffset = game_cfg->alternatedolstart;
|
||||
reloadblock = game_cfg->iosreloadblock;
|
||||
strncpy(alternatedname, game_cfg->alternatedolname, sizeof(alternatedname));
|
||||
strlcpy(alternatedname, game_cfg->alternatedolname, sizeof(alternatedname));
|
||||
} else {
|
||||
videoChoice = Settings.video;
|
||||
languageChoice = Settings.language;
|
||||
@ -1974,11 +1974,9 @@ int GameSettings(struct discHdr * header) {
|
||||
alternatedol = off;
|
||||
alternatedoloffset = 0;
|
||||
reloadblock = off;
|
||||
sprintf(alternatedname, " ");
|
||||
strcpy(alternatedname, "");
|
||||
}
|
||||
|
||||
|
||||
|
||||
ResumeGui();
|
||||
|
||||
while (MainButton1.GetEffect() > 0) usleep(50);
|
||||
@ -2187,31 +2185,36 @@ int GameSettings(struct discHdr * header) {
|
||||
snprintf(filename,sizeof(filename),"%c%c%c%c%c%c",header->id[0], header->id[1], header->id[2],
|
||||
header->id[3],header->id[4], header->id[5]);
|
||||
int dolchoice = 0;
|
||||
//check to see if we already know the offset of the correct dol
|
||||
int autodol = autoSelectDol(filename);
|
||||
|
||||
//if we do know that offset ask if they want to use it
|
||||
if (autodol>0) {
|
||||
dolchoice = WindowPrompt(0,tr("Do you want to use the alt dol that is known to be correct?"),tr("Yes"),tr("Pick from a list"));
|
||||
if (dolchoice==1) {
|
||||
alternatedoloffset = autodol;
|
||||
snprintf(alternatedname, sizeof(alternatedname), "%s <%i>", tr("AUTO"),autodol);
|
||||
} else {//they want to search for the correct dol themselves
|
||||
int res = DiscBrowse(header);
|
||||
if ((res >= 0)&&(res !=696969)) {//if res==696969 they pressed the back button
|
||||
alternatedoloffset = res;
|
||||
//alt dol menu for games that require more than a single alt dol
|
||||
int autodol = autoSelectDolMenu(filename);
|
||||
if (autodol>0) {
|
||||
alternatedoloffset = autodol;
|
||||
snprintf(alternatedname, sizeof(alternatedname), "%s <%i>", tr("AUTO"),autodol);
|
||||
} else if (autodol!=0) {
|
||||
//check to see if we already know the offset of the correct dol
|
||||
int autodol = autoSelectDol(filename);
|
||||
//if we do know that offset ask if they want to use it
|
||||
if (autodol>0) {
|
||||
dolchoice = WindowPrompt(0,tr("Do you want to use the alt dol that is known to be correct?"),tr("Yes"),tr("Pick from a list"));
|
||||
if (dolchoice==1) {
|
||||
alternatedoloffset = autodol;
|
||||
snprintf(alternatedname, sizeof(alternatedname), "%s <%i>", tr("AUTO"),autodol);
|
||||
} else if (dolchoice!=0){//they want to search for the correct dol themselves
|
||||
int res = DiscBrowse(header);
|
||||
if ((res >= 0)&&(res !=696969)) {//if res==696969 they pressed the back button
|
||||
alternatedoloffset = res;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
int res = DiscBrowse(header);
|
||||
if ((res >= 0)&&(res !=696969)){
|
||||
alternatedoloffset = res;
|
||||
|
||||
char tmp[170];
|
||||
snprintf(tmp,sizeof(tmp),"%s %s - %i",tr("It seems that you have some information that will be helpful to us. Please pass this information along to the DEV team.") ,filename,alternatedoloffset);
|
||||
WindowPrompt(0,tmp,tr("Ok"));
|
||||
} else {
|
||||
int res = DiscBrowse(header);
|
||||
if ((res >= 0)&&(res !=696969)){
|
||||
alternatedoloffset = res;
|
||||
char tmp[170];
|
||||
snprintf(tmp,sizeof(tmp),"%s %s - %i",tr("It seems that you have some information that will be helpful to us. Please pass this information along to the DEV team.") ,filename,alternatedoloffset);
|
||||
WindowPrompt(0,tmp,tr("Ok"));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 10:
|
||||
@ -2281,6 +2284,7 @@ int GameSettings(struct discHdr * header) {
|
||||
options2.SetName(2,"%s", tr("Delete Boxart"));
|
||||
options2.SetName(3,"%s", tr("Delete Discart"));
|
||||
options2.SetName(4,"%s", tr("Delete CheatTxt"));
|
||||
options2.SetName(5,"%s", tr("Delete Cheat GCT"));
|
||||
for (int i = 0; i <= MAXOPTIONS-1; i++) options2.SetValue(i, NULL);
|
||||
w.Append(&optionBrowser2);
|
||||
optionBrowser2.SetClickable(true);
|
||||
@ -2399,7 +2403,16 @@ int GameSettings(struct discHdr * header) {
|
||||
remove(tmp);
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
|
||||
snprintf(tmp,sizeof(tmp),"%s%c%c%c%c%c%c.gct", Settings.Cheatcodespath, header->id[0], header->id[1], header->id[2],header->id[3], header->id[4], header->id[5]);
|
||||
|
||||
choice1 = WindowPrompt(tr("Delete"),tmp,tr("Yes"),tr("No"));
|
||||
if (choice1==1) {
|
||||
if (checkfile(tmp))
|
||||
remove(tmp);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
optionBrowser2.SetEffect(EFFECT_FADE, -20);
|
||||
@ -2428,7 +2441,7 @@ int GameSettings(struct discHdr * header) {
|
||||
iosChoice = i249;
|
||||
}
|
||||
parentalcontrolChoice = 0;
|
||||
sprintf(alternatedname, " ");
|
||||
strcpy(alternatedname, "");
|
||||
CFG_forget_game_opt(header->id);
|
||||
/* commented because the database language now depends on the main language setting, this could be enabled again if there is a separate language setting for the database
|
||||
// if default language is different than language from main settings, reload titles
|
||||
|
@ -1016,7 +1016,7 @@ bool trimsplit(char *line, char *part1, char *part2, char delim, int size) {
|
||||
}
|
||||
void cfg_parseline(char *line, void (*set_func)(char*, char*)) {
|
||||
// split name = value
|
||||
char tmp[200], name[200], val[200];
|
||||
char tmp[300], name[200], val[200];
|
||||
strcopy(tmp, line, sizeof(tmp));
|
||||
char *eq = strchr(tmp, '=');
|
||||
if (!eq) return;
|
||||
@ -1054,7 +1054,7 @@ void cfg_parsetitleline(char *line, void (*set_func)(char*, char*, u8)) {
|
||||
|
||||
bool cfg_parsefile(char *fname, void (*set_func)(char*, char*)) {
|
||||
FILE *f;
|
||||
char line[200];
|
||||
char line[300];
|
||||
|
||||
//printf("opening(%s)\n", fname);
|
||||
f = fopen(fname, "r");
|
||||
@ -1137,8 +1137,12 @@ void cfg_set_game_opt(struct Game_CFG *game, u8 *id) {
|
||||
game->iosreloadblock = reloadblock;
|
||||
game->patchcountrystrings = countrystrings;
|
||||
game->loadalternatedol = alternatedol;
|
||||
if (game->loadalternatedol == 0) {
|
||||
alternatedoloffset = 0;
|
||||
strcpy(alternatedname, "");
|
||||
}
|
||||
game->alternatedolstart = alternatedoloffset;
|
||||
strcpy(game->alternatedolname, alternatedname);
|
||||
strlcpy(game->alternatedolname, alternatedname,sizeof(game->alternatedolname));
|
||||
}
|
||||
|
||||
struct Game_NUM* cfg_get_game_num(u8 *id) {
|
||||
@ -1254,7 +1258,7 @@ void game_set(char *name, char *val) {
|
||||
|
||||
// parse val
|
||||
// first split options by ;
|
||||
char opt[200], *p, *np;
|
||||
char opt[300], *p, *np;
|
||||
p = val;
|
||||
|
||||
while (p) {
|
||||
@ -1321,18 +1325,7 @@ void game_set(char *name, char *val) {
|
||||
}
|
||||
}
|
||||
if (strcmp("alternatedolname", opt_name) == 0) {
|
||||
char temp3[40];
|
||||
int i = 0;
|
||||
while (i < 40) {
|
||||
|
||||
if (opt_val[i] == ';')
|
||||
break;
|
||||
|
||||
temp3[i] = opt_val[i];
|
||||
i++;
|
||||
}
|
||||
temp3[i] = '\0';
|
||||
strncpy(game->alternatedolname, temp3, 39);
|
||||
strlcpy(game->alternatedolname, opt_val, sizeof(game->alternatedolname));
|
||||
}
|
||||
}
|
||||
// next opt
|
||||
|
Loading…
Reference in New Issue
Block a user