mirror of
https://github.com/wiidev/usbloadergx.git
synced 2025-01-10 18:59:24 +01:00
*Fixed crash on UPDATE
*Added Custom CheatCodes Path (both USB and SD)
This commit is contained in:
parent
e18b154156
commit
d2c1f83821
@ -2288,7 +2288,7 @@ ProgressUpdateWindow()
|
|||||||
{
|
{
|
||||||
char revtxt[10];
|
char revtxt[10];
|
||||||
char rev_txt[14];
|
char rev_txt[14];
|
||||||
sprintf(rev_txt, "%s:/rev.txt", bootDevice);
|
sprintf(rev_txt, "%srev.txt", Settings.update_path);
|
||||||
pfile = fopen(rev_txt, "w");
|
pfile = fopen(rev_txt, "w");
|
||||||
fwrite(file.data,1,file.size,pfile);
|
fwrite(file.data,1,file.size,pfile);
|
||||||
fclose(pfile);
|
fclose(pfile);
|
||||||
|
@ -1170,7 +1170,7 @@ int MenuSettings()
|
|||||||
options2.SetName(2, "%s", LANGUAGE.ThemePath);
|
options2.SetName(2, "%s", LANGUAGE.ThemePath);
|
||||||
options2.SetName(3, "%s", LANGUAGE.Titlestxtpath);
|
options2.SetName(3, "%s", LANGUAGE.Titlestxtpath);
|
||||||
options2.SetName(4, "%s", LANGUAGE.Updatepath);
|
options2.SetName(4, "%s", LANGUAGE.Updatepath);
|
||||||
options2.SetName(5, NULL);
|
options2.SetName(5, "%s", LANGUAGE.Cheatcodespath);
|
||||||
options2.SetName(6, NULL);
|
options2.SetName(6, NULL);
|
||||||
options2.SetName(7, NULL);
|
options2.SetName(7, NULL);
|
||||||
options2.SetName(8, NULL);
|
options2.SetName(8, NULL);
|
||||||
@ -1195,6 +1195,7 @@ int MenuSettings()
|
|||||||
options2.SetValue(2, "%s", CFG.theme_path);
|
options2.SetValue(2, "%s", CFG.theme_path);
|
||||||
options2.SetValue(3, "%s", Settings.titlestxt_path);
|
options2.SetValue(3, "%s", Settings.titlestxt_path);
|
||||||
options2.SetValue(4, "%s", Settings.update_path);
|
options2.SetValue(4, "%s", Settings.update_path);
|
||||||
|
options2.SetValue(5, "%s", Settings.Cheatcodespath);
|
||||||
|
|
||||||
if(backBtn.GetState() == STATE_CLICKED)
|
if(backBtn.GetState() == STATE_CLICKED)
|
||||||
{
|
{
|
||||||
@ -1399,6 +1400,28 @@ int MenuSettings()
|
|||||||
else
|
else
|
||||||
WindowPrompt(0,LANGUAGE.Consoleshouldbeunlockedtomodifyit,LANGUAGE.ok,0,0,0);
|
WindowPrompt(0,LANGUAGE.Consoleshouldbeunlockedtomodifyit,LANGUAGE.ok,0,0,0);
|
||||||
break;
|
break;
|
||||||
|
case 5:
|
||||||
|
if ( Settings.godmode == 1)
|
||||||
|
{
|
||||||
|
w.Remove(&optionBrowser2);
|
||||||
|
w.Remove(&backBtn);
|
||||||
|
char entered[43] = "";
|
||||||
|
strncpy(entered, Settings.Cheatcodespath, sizeof(entered));
|
||||||
|
int result = OnScreenKeyboard(entered,43,0);
|
||||||
|
w.Append(&optionBrowser2);
|
||||||
|
w.Append(&backBtn);
|
||||||
|
if ( result == 1 )
|
||||||
|
{
|
||||||
|
int len = (strlen(entered)-1);
|
||||||
|
if(entered[len] !='/')
|
||||||
|
strncat (entered, "/", 1);
|
||||||
|
strncpy(Settings.Cheatcodespath, entered, sizeof(Settings.Cheatcodespath));
|
||||||
|
WindowPrompt(LANGUAGE.Cheatcodespathchanged,0,LANGUAGE.ok,0,0,0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
WindowPrompt(0,LANGUAGE.Consoleshouldbeunlockedtomodifyit,LANGUAGE.ok,0,0,0);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/** If not godmode don't let him inside **/
|
/** If not godmode don't let him inside **/
|
||||||
|
@ -240,6 +240,7 @@ void CFG_Default(int widescreen) // -1 = non forced Mode
|
|||||||
snprintf(Settings.languagefiles_path, sizeof(Settings.languagefiles_path), "%s/config/language/", bootDevice);
|
snprintf(Settings.languagefiles_path, sizeof(Settings.languagefiles_path), "%s/config/language/", bootDevice);
|
||||||
snprintf(Settings.oggload_path, sizeof(Settings.oggload_path), "%s/config/backgroundmusic/", bootDevice);
|
snprintf(Settings.oggload_path, sizeof(Settings.oggload_path), "%s/config/backgroundmusic/", bootDevice);
|
||||||
snprintf(Settings.update_path, sizeof(Settings.update_path), "%s/apps/usbloader_gx/", bootDevice);
|
snprintf(Settings.update_path, sizeof(Settings.update_path), "%s/apps/usbloader_gx/", bootDevice);
|
||||||
|
snprintf(Settings.Cheatcodespath, sizeof(Settings.Cheatcodespath), "%s/codes/", bootDevice);
|
||||||
sprintf(Settings.ogg_path, "notset");
|
sprintf(Settings.ogg_path, "notset");
|
||||||
|
|
||||||
//all alignments are left top here
|
//all alignments are left top here
|
||||||
@ -497,6 +498,10 @@ void path_set(char *name, char *val)
|
|||||||
strcopy(Settings.update_path, val, sizeof(Settings.update_path));
|
strcopy(Settings.update_path, val, sizeof(Settings.update_path));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (strcmp(name, "Cheatcodespath") == 0) {
|
||||||
|
strcopy(Settings.Cheatcodespath, val, sizeof(Settings.Cheatcodespath));
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (strcmp(name, "oggload_path") == 0) {
|
if (strcmp(name, "oggload_path") == 0) {
|
||||||
strcopy(Settings.oggload_path, val, sizeof(Settings.oggload_path));
|
strcopy(Settings.oggload_path, val, sizeof(Settings.oggload_path));
|
||||||
return;
|
return;
|
||||||
@ -1210,6 +1215,7 @@ bool cfg_save_global()// save global settings
|
|||||||
fprintf(f, "wiilight = %d\n ", Settings.wiilight);
|
fprintf(f, "wiilight = %d\n ", Settings.wiilight);
|
||||||
fprintf(f, "gameDisplay = %d\n ", Settings.gameDisplay);
|
fprintf(f, "gameDisplay = %d\n ", Settings.gameDisplay);
|
||||||
fprintf(f, "update_path = %s\n ", Settings.update_path);
|
fprintf(f, "update_path = %s\n ", Settings.update_path);
|
||||||
|
fprintf(f, "Cheatcodespath = %s\n ", Settings.Cheatcodespath);
|
||||||
fprintf(f, "patchcountrystrings = %d\n ", Settings.patchcountrystrings);
|
fprintf(f, "patchcountrystrings = %d\n ", Settings.patchcountrystrings);
|
||||||
fclose(f);
|
fclose(f);
|
||||||
return true;
|
return true;
|
||||||
|
@ -328,6 +328,7 @@ struct SSettings {
|
|||||||
char oggload_path[100];
|
char oggload_path[100];
|
||||||
char ogg_path[150];
|
char ogg_path[150];
|
||||||
char update_path[150];
|
char update_path[150];
|
||||||
|
char Cheatcodespath[100];
|
||||||
};
|
};
|
||||||
|
|
||||||
void CFG_LoadGlobal(void);
|
void CFG_LoadGlobal(void);
|
||||||
|
@ -150,11 +150,11 @@ int USBDevice_Init()
|
|||||||
//closing all open Files write back the cache and then shutdown em!
|
//closing all open Files write back the cache and then shutdown em!
|
||||||
fatUnmount("USB:/");
|
fatUnmount("USB:/");
|
||||||
//right now mounts first FAT-partition
|
//right now mounts first FAT-partition
|
||||||
if (fatMount("USB", &__io_usbstorage, GetFATPartition(&__io_usbstorage), CACHE, SECTORS)) {
|
if (fatMount("USB", &__io_wiiums, GetFATPartition(&__io_wiiums), CACHE, SECTORS)) {
|
||||||
//try first mount with libogc
|
//try first mount with cIOS
|
||||||
return 1;
|
return 1;
|
||||||
} else if (fatMount("USB", &__io_wiiums, GetFATPartition(&__io_wiiums), CACHE, SECTORS)) {
|
} else if (fatMount("USB", &__io_usbstorage, GetFATPartition(&__io_usbstorage), CACHE, SECTORS)) {
|
||||||
//try now mount with cIOS
|
//try now mount with libogc
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
return -1;
|
return -1;
|
||||||
|
58
source/fst.c
58
source/fst.c
@ -26,53 +26,41 @@
|
|||||||
#include <gccore.h>
|
#include <gccore.h>
|
||||||
#include <malloc.h>
|
#include <malloc.h>
|
||||||
#include <sys/unistd.h>
|
#include <sys/unistd.h>
|
||||||
#include <fat.h>
|
|
||||||
#include <sdcard/wiisd_io.h>
|
#include <sdcard/wiisd_io.h>
|
||||||
#include "ogc/ipc.h"
|
#include "ogc/ipc.h"
|
||||||
#include "fst.h"
|
#include "fst.h"
|
||||||
#include "dvd_broadway.h"
|
#include "dvd_broadway.h"
|
||||||
#include "wpad.h"
|
#include "wpad.h"
|
||||||
|
#include "cfg.h"
|
||||||
|
#include "fatmounter.h"
|
||||||
|
|
||||||
|
extern struct SSettings Settings;
|
||||||
|
|
||||||
#define FSTDIRTYPE 1
|
|
||||||
#define FSTFILETYPE 0
|
|
||||||
#define ENTRYSIZE 0xC
|
|
||||||
#define FILEDIR "SD:/codes"
|
|
||||||
|
|
||||||
#define MAX_FILENAME_LEN 128
|
|
||||||
|
|
||||||
|
|
||||||
static vu32 dvddone = 0;
|
|
||||||
|
|
||||||
|
|
||||||
// Real basic
|
|
||||||
u32 do_sd_code(char *filename)
|
u32 do_sd_code(char *filename)
|
||||||
{
|
{
|
||||||
FILE *fp;
|
FILE *fp;
|
||||||
u8 *filebuff;
|
u8 *filebuff;
|
||||||
u32 filesize;
|
u32 filesize;
|
||||||
u32 ret;
|
u32 ret;
|
||||||
char filepath[128];
|
char filepath[150];
|
||||||
|
|
||||||
ret = fatMountSimple("SD", &__io_wiisd);
|
|
||||||
|
|
||||||
if (!ret) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
|
|
||||||
sprintf(filepath, FILEDIR "/%s", filename);
|
SDCard_Init();
|
||||||
filepath[16] = 0x2E;
|
USBDevice_Init();
|
||||||
filepath[17] = 0x67;
|
|
||||||
filepath[18] = 0x63;
|
sprintf(filepath, "%s%s", Settings.Cheatcodespath, filename);
|
||||||
filepath[19] = 0x74;
|
filepath[strlen(Settings.Cheatcodespath)+6] = 0x2E;
|
||||||
filepath[20] = 0;
|
filepath[strlen(Settings.Cheatcodespath)+7] = 0x67;
|
||||||
//printf("filename %s\n",filepath);
|
filepath[strlen(Settings.Cheatcodespath)+8] = 0x63;
|
||||||
|
filepath[strlen(Settings.Cheatcodespath)+9] = 0x74;
|
||||||
|
filepath[strlen(Settings.Cheatcodespath)+10] = 0;
|
||||||
|
|
||||||
|
|
||||||
fp = fopen(filepath, "rb");
|
fp = fopen(filepath, "rb");
|
||||||
if (!fp) {
|
if (!fp) {
|
||||||
fatUnmount("SD:/");
|
USBDevice_deInit();
|
||||||
|
SDCard_deInit();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -84,6 +72,8 @@ u32 do_sd_code(char *filename)
|
|||||||
if(filebuff == 0){
|
if(filebuff == 0){
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
sleep(2);
|
sleep(2);
|
||||||
|
USBDevice_deInit();
|
||||||
|
SDCard_deInit();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -91,19 +81,19 @@ u32 do_sd_code(char *filename)
|
|||||||
if(ret != filesize){
|
if(ret != filesize){
|
||||||
free(filebuff);
|
free(filebuff);
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
fatUnmount("SD:/");
|
USBDevice_deInit();
|
||||||
|
SDCard_deInit();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
memcpy((void*)0x800027E8,filebuff,filesize);
|
memcpy((void*)0x800027E8,filebuff,filesize);
|
||||||
*(vu8*)0x80001807 = 0x01;
|
*(vu8*)0x80001807 = 0x01;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
free(filebuff);
|
free(filebuff);
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
|
|
||||||
fatUnmount("SD:/");
|
USBDevice_deInit();
|
||||||
|
SDCard_deInit();
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -68,6 +68,8 @@ snprintf(LANGUAGE.CoverDownload, sizeof(LANGUAGE.CoverDownload), "Cover Download
|
|||||||
snprintf(LANGUAGE.CoverPath, sizeof(LANGUAGE.CoverPath), "Cover Path");
|
snprintf(LANGUAGE.CoverPath, sizeof(LANGUAGE.CoverPath), "Cover Path");
|
||||||
snprintf(LANGUAGE.CoverpathChanged, sizeof(LANGUAGE.CoverpathChanged), "Coverpath Changed");
|
snprintf(LANGUAGE.CoverpathChanged, sizeof(LANGUAGE.CoverpathChanged), "Coverpath Changed");
|
||||||
snprintf(LANGUAGE.Coverpathchange, sizeof(LANGUAGE.Coverpathchange), "Coverpath change");
|
snprintf(LANGUAGE.Coverpathchange, sizeof(LANGUAGE.Coverpathchange), "Coverpath change");
|
||||||
|
snprintf(LANGUAGE.Cheatcodespathchanged, sizeof(LANGUAGE.Cheatcodespathchanged), "Cheatcodes Path changed");
|
||||||
|
snprintf(LANGUAGE.Cheatcodespath, sizeof(LANGUAGE.Cheatcodespath), "Cheatcodes Path");
|
||||||
snprintf(LANGUAGE.count, sizeof(LANGUAGE.count), "Play Count");
|
snprintf(LANGUAGE.count, sizeof(LANGUAGE.count), "Play Count");
|
||||||
snprintf(LANGUAGE.Credits, sizeof(LANGUAGE.Credits), "Credits");
|
snprintf(LANGUAGE.Credits, sizeof(LANGUAGE.Credits), "Credits");
|
||||||
snprintf(LANGUAGE.Custompaths, sizeof(LANGUAGE.Custompaths), "Custom Paths");
|
snprintf(LANGUAGE.Custompaths, sizeof(LANGUAGE.Custompaths), "Custom Paths");
|
||||||
@ -437,6 +439,14 @@ void language_set(char *name, char *val)
|
|||||||
strcopy(LANGUAGE.Coverpathchange, val, sizeof(LANGUAGE.Coverpathchange));
|
strcopy(LANGUAGE.Coverpathchange, val, sizeof(LANGUAGE.Coverpathchange));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (strcmp(name, "Cheatcodespath") == 0) {
|
||||||
|
strcopy(LANGUAGE.Cheatcodespath, val, sizeof(LANGUAGE.Cheatcodespath));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (strcmp(name, "Cheatcodespathchanged") == 0) {
|
||||||
|
strcopy(LANGUAGE.Cheatcodespathchanged, val, sizeof(LANGUAGE.Cheatcodespathchanged));
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (strcmp(name, "Credits") == 0) {
|
if (strcmp(name, "Credits") == 0) {
|
||||||
strcopy(LANGUAGE.Credits, val, sizeof(LANGUAGE.Credits));
|
strcopy(LANGUAGE.Credits, val, sizeof(LANGUAGE.Credits));
|
||||||
return;
|
return;
|
||||||
|
@ -10,7 +10,7 @@ extern "C"
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
struct LANGUAGE
|
struct LANGUAGE
|
||||||
{
|
{
|
||||||
char released[15];
|
char released[15];
|
||||||
char publishedby[25];
|
char publishedby[25];
|
||||||
char developedby[25];
|
char developedby[25];
|
||||||
@ -27,8 +27,8 @@ struct LANGUAGE
|
|||||||
char november[15];
|
char november[15];
|
||||||
char december[15];
|
char december[15];
|
||||||
char wififeatures[20];
|
char wififeatures[20];
|
||||||
|
|
||||||
|
|
||||||
char t3Covers[50];
|
char t3Covers[50];
|
||||||
char addToFavorite[50];
|
char addToFavorite[50];
|
||||||
char all[30];
|
char all[30];
|
||||||
@ -67,6 +67,8 @@ struct LANGUAGE
|
|||||||
char CoverPath[50];
|
char CoverPath[50];
|
||||||
char CoverpathChanged[50];
|
char CoverpathChanged[50];
|
||||||
char Coverpathchange[50];
|
char Coverpathchange[50];
|
||||||
|
char Cheatcodespathchanged[80];
|
||||||
|
char Cheatcodespath[80];
|
||||||
char count[20];
|
char count[20];
|
||||||
char Credits[30];
|
char Credits[30];
|
||||||
char Custompaths[60];
|
char Custompaths[60];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user