mirror of
https://github.com/wiidev/usbloadergx.git
synced 2024-11-25 12:46:53 +01:00
*Fixed mess up with lustars merge.
*Added Playcounter Reset to GameSettings (545 fixed the PlayCounter not GameCounter :P) *Added global PlayCounter reset function (its not used yet) *Probably fixed the issue some HDDs had ("No partition found") *Probably fixed cursor disappearing after downloading update
This commit is contained in:
parent
92441e56b2
commit
cdc9f7afbd
@ -199,6 +199,7 @@ snprintf(LANGUAGE.ReloadSD, sizeof(LANGUAGE.ReloadSD), "Reload SD");
|
|||||||
snprintf(LANGUAGE.RenameGameonWBFS, sizeof(LANGUAGE.RenameGameonWBFS), "Rename Game on WBFS");
|
snprintf(LANGUAGE.RenameGameonWBFS, sizeof(LANGUAGE.RenameGameonWBFS), "Rename Game on WBFS");
|
||||||
snprintf(LANGUAGE.Restart, sizeof(LANGUAGE.Restart), "Restart");
|
snprintf(LANGUAGE.Restart, sizeof(LANGUAGE.Restart), "Restart");
|
||||||
snprintf(LANGUAGE.Restarting, sizeof(LANGUAGE.Restarting), "Restarting...");
|
snprintf(LANGUAGE.Restarting, sizeof(LANGUAGE.Restarting), "Restarting...");
|
||||||
|
snprintf(LANGUAGE.Resetplaycounter, sizeof(LANGUAGE.Resetplaycounter), "Reset Playcounter");
|
||||||
snprintf(LANGUAGE.Return, sizeof(LANGUAGE.Return), "Return");
|
snprintf(LANGUAGE.Return, sizeof(LANGUAGE.Return), "Return");
|
||||||
snprintf(LANGUAGE.released, sizeof(LANGUAGE.released), "Released");
|
snprintf(LANGUAGE.released, sizeof(LANGUAGE.released), "Released");
|
||||||
snprintf(LANGUAGE.ReturntoWiiMenu, sizeof(LANGUAGE.ReturntoWiiMenu), "Return to Wii Menu");
|
snprintf(LANGUAGE.ReturntoWiiMenu, sizeof(LANGUAGE.ReturntoWiiMenu), "Return to Wii Menu");
|
||||||
@ -210,6 +211,7 @@ snprintf(LANGUAGE.SaveFailed, sizeof(LANGUAGE.SaveFailed), "Save Failed");
|
|||||||
snprintf(LANGUAGE.Specialthanksto, sizeof(LANGUAGE.Specialthanksto), "Special thanks to:");
|
snprintf(LANGUAGE.Specialthanksto, sizeof(LANGUAGE.Specialthanksto), "Special thanks to:");
|
||||||
snprintf(LANGUAGE.For, sizeof(LANGUAGE.For), "for");
|
snprintf(LANGUAGE.For, sizeof(LANGUAGE.For), "for");
|
||||||
snprintf(LANGUAGE.theUSBLoaderandreleasingthesourcecode, sizeof(LANGUAGE.theUSBLoaderandreleasingthesourcecode), "for the USB Loader source");
|
snprintf(LANGUAGE.theUSBLoaderandreleasingthesourcecode, sizeof(LANGUAGE.theUSBLoaderandreleasingthesourcecode), "for the USB Loader source");
|
||||||
|
snprintf(LANGUAGE.Screensaver, sizeof(LANGUAGE.Screensaver), "Screensaver");
|
||||||
snprintf(LANGUAGE.secondsleft, sizeof(LANGUAGE.secondsleft), "seconds left");
|
snprintf(LANGUAGE.secondsleft, sizeof(LANGUAGE.secondsleft), "seconds left");
|
||||||
snprintf(LANGUAGE.Setasbackgroundmusic, sizeof(LANGUAGE.Setasbackgroundmusic), "Set as backgroundmusic?");
|
snprintf(LANGUAGE.Setasbackgroundmusic, sizeof(LANGUAGE.Setasbackgroundmusic), "Set as backgroundmusic?");
|
||||||
snprintf(LANGUAGE.SelectthePartition, sizeof(LANGUAGE.SelectthePartition), "Select the Partition");
|
snprintf(LANGUAGE.SelectthePartition, sizeof(LANGUAGE.SelectthePartition), "Select the Partition");
|
||||||
@ -998,6 +1000,10 @@ void language_set(char *name, char *val)
|
|||||||
strcopy(LANGUAGE.theUSBLoaderandreleasingthesourcecode, val, sizeof(LANGUAGE.theUSBLoaderandreleasingthesourcecode));
|
strcopy(LANGUAGE.theUSBLoaderandreleasingthesourcecode, val, sizeof(LANGUAGE.theUSBLoaderandreleasingthesourcecode));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (strcmp(name, "Screensaver") == 0) {
|
||||||
|
strcopy(LANGUAGE.Screensaver, val, sizeof(LANGUAGE.Screensaver));
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (strcmp(name, "secondsleft") == 0) {
|
if (strcmp(name, "secondsleft") == 0) {
|
||||||
strcopy(LANGUAGE.secondsleft, val, sizeof(LANGUAGE.secondsleft));
|
strcopy(LANGUAGE.secondsleft, val, sizeof(LANGUAGE.secondsleft));
|
||||||
return;
|
return;
|
||||||
@ -1246,6 +1252,10 @@ void language_set(char *name, char *val)
|
|||||||
strcopy(LANGUAGE.Restarting, val, sizeof(LANGUAGE.Restarting));
|
strcopy(LANGUAGE.Restarting, val, sizeof(LANGUAGE.Restarting));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (strcmp(name, "Resetplaycounter") == 0) {
|
||||||
|
strcopy(LANGUAGE.Resetplaycounter, val, sizeof(LANGUAGE.Resetplaycounter));
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (strcmp(name, "available") == 0) {
|
if (strcmp(name, "available") == 0) {
|
||||||
strcopy(LANGUAGE.available, val, sizeof(LANGUAGE.available));
|
strcopy(LANGUAGE.available, val, sizeof(LANGUAGE.available));
|
||||||
return;
|
return;
|
||||||
|
@ -197,6 +197,7 @@ struct LANGUAGE
|
|||||||
char RenameGameonWBFS[50];
|
char RenameGameonWBFS[50];
|
||||||
char Restart[30];
|
char Restart[30];
|
||||||
char Restarting[20];
|
char Restarting[20];
|
||||||
|
char Resetplaycounter[50];
|
||||||
char Return[30];
|
char Return[30];
|
||||||
char ReturntoWiiMenu[50];
|
char ReturntoWiiMenu[50];
|
||||||
char Right[30];
|
char Right[30];
|
||||||
@ -207,6 +208,7 @@ struct LANGUAGE
|
|||||||
char Specialthanksto[50];
|
char Specialthanksto[50];
|
||||||
char For[20];
|
char For[20];
|
||||||
char theUSBLoaderandreleasingthesourcecode[100];
|
char theUSBLoaderandreleasingthesourcecode[100];
|
||||||
|
char Screensaver[50];
|
||||||
char secondsleft[50];
|
char secondsleft[50];
|
||||||
char SelectthePartition[50];
|
char SelectthePartition[50];
|
||||||
char youwanttoformat[50];
|
char youwanttoformat[50];
|
||||||
|
@ -11,7 +11,6 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdio.h> //CLOCK
|
#include <stdio.h> //CLOCK
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include <ogc/machine/processor.h>
|
|
||||||
|
|
||||||
#include "libwiigui/gui.h"
|
#include "libwiigui/gui.h"
|
||||||
#include "libwiigui/gui_gamegrid.h"
|
#include "libwiigui/gui_gamegrid.h"
|
||||||
@ -1683,34 +1682,12 @@ static int MenuCheck()
|
|||||||
if(ret2 == 1) {
|
if(ret2 == 1) {
|
||||||
Settings.cios = ios249;
|
Settings.cios = ios249;
|
||||||
} else if(ret2 == 2) {
|
} else if(ret2 == 2) {
|
||||||
if(Settings.cios != ios222)
|
Settings.cios = ios222;
|
||||||
{
|
|
||||||
HaltGui();
|
|
||||||
ret2 = Sys_IosReload(222);
|
|
||||||
if(ret2 < 0)
|
|
||||||
Sys_IosReload(249);
|
|
||||||
ResumeGui();
|
|
||||||
if(ret2 < 0) {
|
|
||||||
Wpad_Init();
|
|
||||||
WPAD_SetDataFormat(WPAD_CHAN_ALL,WPAD_FMT_BTNS_ACC_IR);
|
|
||||||
WPAD_SetVRes(WPAD_CHAN_ALL, screenwidth, screenheight);
|
|
||||||
WindowPrompt(LANGUAGE.YoudonthavecIOS,LANGUAGE.LoadingincIOS,LANGUAGE.ok, 0,0,0);
|
|
||||||
WPAD_Flush(0);
|
|
||||||
WPAD_Disconnect(0);
|
|
||||||
WPAD_Shutdown();
|
|
||||||
} else {
|
|
||||||
Settings.cios = ios222;
|
|
||||||
load_ehc_module();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
Sys_LoadMenu();
|
Sys_LoadMenu();
|
||||||
}
|
}
|
||||||
|
|
||||||
ret2 = DiscWait(LANGUAGE.NoUSBDevice, LANGUAGE.WaitingforUSBDevice, 0, 0, 1);
|
ret2 = DiscWait(LANGUAGE.NoUSBDevice, LANGUAGE.WaitingforUSBDevice, 0, 0, 1);
|
||||||
//reinitialize SD and USB
|
//reinitialize SD and USB
|
||||||
SDCard_Init();
|
|
||||||
USBDevice_Init();
|
|
||||||
Wpad_Init();
|
Wpad_Init();
|
||||||
WPAD_SetDataFormat(WPAD_CHAN_ALL,WPAD_FMT_BTNS_ACC_IR);
|
WPAD_SetDataFormat(WPAD_CHAN_ALL,WPAD_FMT_BTNS_ACC_IR);
|
||||||
WPAD_SetVRes(WPAD_CHAN_ALL, screenwidth, screenheight);
|
WPAD_SetVRes(WPAD_CHAN_ALL, screenwidth, screenheight);
|
||||||
@ -1748,6 +1725,9 @@ static int MenuCheck()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SDCard_Init();
|
||||||
|
USBDevice_Init();
|
||||||
|
|
||||||
if(shutdown == 1)
|
if(shutdown == 1)
|
||||||
Sys_Shutdown();
|
Sys_Shutdown();
|
||||||
if(reset == 1)
|
if(reset == 1)
|
||||||
@ -1901,19 +1881,7 @@ int MainMenu(int menu)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool onlinefix = IsNetworkInit();
|
bool onlinefix = ShutdownWC24();
|
||||||
if(onlinefix && IOS_GetVersion() == ios2) {
|
|
||||||
s32 kd_fd, ret;
|
|
||||||
STACK_ALIGN(u8, kd_buf, 0x20, 32);
|
|
||||||
|
|
||||||
kd_fd = IOS_Open("/dev/net/kd/request", 0);
|
|
||||||
if (kd_fd >= 0) {
|
|
||||||
ret = IOS_Ioctl(kd_fd, 7, NULL, 0, kd_buf, 0x20);
|
|
||||||
if(ret >= 0)
|
|
||||||
onlinefix = false; // fixed no IOS reload needed
|
|
||||||
IOS_Close(kd_fd);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(IOS_GetVersion() != ios2 || onlinefix == true) {
|
if(IOS_GetVersion() != ios2 || onlinefix == true) {
|
||||||
ret = Sys_IosReload(ios2);
|
ret = Sys_IosReload(ios2);
|
||||||
if(ret < 0) {
|
if(ret < 0) {
|
||||||
|
@ -2310,6 +2310,7 @@ int ProgressUpdateWindow()
|
|||||||
pfile = fopen(dolpath, "wb");
|
pfile = fopen(dolpath, "wb");
|
||||||
u8 blockbuffer[BLOCKSIZE] ATTRIBUTE_ALIGN(32);
|
u8 blockbuffer[BLOCKSIZE] ATTRIBUTE_ALIGN(32);
|
||||||
for (s32 i = 0; i < filesize; i += BLOCKSIZE) {
|
for (s32 i = 0; i < filesize; i += BLOCKSIZE) {
|
||||||
|
VIDEO_WaitVSync();
|
||||||
prTxt.SetTextf("%i%%", 100*i/filesize);
|
prTxt.SetTextf("%i%%", 100*i/filesize);
|
||||||
if ((Settings.wsprompt == yes) && (CFG.widescreen)) {
|
if ((Settings.wsprompt == yes) && (CFG.widescreen)) {
|
||||||
progressbarImg.SetTile(80*i/filesize);
|
progressbarImg.SetTile(80*i/filesize);
|
||||||
|
@ -478,7 +478,7 @@ int MenuSettings()
|
|||||||
options2.SetName(7, "%s",LANGUAGE.Wiilight);
|
options2.SetName(7, "%s",LANGUAGE.Wiilight);
|
||||||
options2.SetName(8, "%s",LANGUAGE.Rumble);
|
options2.SetName(8, "%s",LANGUAGE.Rumble);
|
||||||
options2.SetName(10, "%s",LANGUAGE.XMLTitles);
|
options2.SetName(10, "%s",LANGUAGE.XMLTitles);
|
||||||
options2.SetName(11, "Screensaver");
|
options2.SetName(11, "%s",LANGUAGE.Screensaver);
|
||||||
for(int i = 0; i <= MAXOPTIONS; i++) options2.SetValue(i, NULL);
|
for(int i = 0; i <= MAXOPTIONS; i++) options2.SetValue(i, NULL);
|
||||||
optionBrowser2.SetScrollbar(1);
|
optionBrowser2.SetScrollbar(1);
|
||||||
w.Append(&optionBrowser2);
|
w.Append(&optionBrowser2);
|
||||||
@ -673,14 +673,7 @@ int MenuSettings()
|
|||||||
case 9:
|
case 9:
|
||||||
break;
|
break;
|
||||||
case 10:
|
case 10:
|
||||||
//HaltGui(); this isn't done on the fly yet. you have to restart the loader for it to take effect
|
|
||||||
Settings.titlesOverride++;
|
Settings.titlesOverride++;
|
||||||
//if(isInserted(bootDevice)) {
|
|
||||||
//cfg_save_global();
|
|
||||||
//}
|
|
||||||
//CFG_Load();
|
|
||||||
//__Menu_GetEntries();
|
|
||||||
//ResumeGui();
|
|
||||||
break;
|
break;
|
||||||
case 11:
|
case 11:
|
||||||
Settings.screensaver++;
|
Settings.screensaver++;
|
||||||
@ -1736,7 +1729,8 @@ int GameSettings(struct discHdr * header)
|
|||||||
options3.SetName(7,"%s", LANGUAGE.Patchcountrystrings);
|
options3.SetName(7,"%s", LANGUAGE.Patchcountrystrings);
|
||||||
options3.SetName(8,"%s", LANGUAGE.Alternatedol);
|
options3.SetName(8,"%s", LANGUAGE.Alternatedol);
|
||||||
options3.SetName(9,"%s", LANGUAGE.Blockiosreload);
|
options3.SetName(9,"%s", LANGUAGE.Blockiosreload);
|
||||||
options3.SetName(10,"%s", LANGUAGE.Defaultgamesettings);
|
options3.SetName(10,"%s", LANGUAGE.Resetplaycounter);
|
||||||
|
options3.SetName(11,"%s", LANGUAGE.Defaultgamesettings);
|
||||||
|
|
||||||
GuiSound btnSoundOver(button_over_pcm, button_over_pcm_size, SOUND_PCM, Settings.sfxvolume);
|
GuiSound btnSoundOver(button_over_pcm, button_over_pcm_size, SOUND_PCM, Settings.sfxvolume);
|
||||||
GuiSound btnClick(button_click2_pcm, button_click2_pcm_size, SOUND_PCM, Settings.sfxvolume);
|
GuiSound btnClick(button_click2_pcm, button_click2_pcm_size, SOUND_PCM, Settings.sfxvolume);
|
||||||
@ -1901,6 +1895,7 @@ int GameSettings(struct discHdr * header)
|
|||||||
else if (reloadblock == off) options3.SetValue(9,LANGUAGE.OFF);
|
else if (reloadblock == off) options3.SetValue(9,LANGUAGE.OFF);
|
||||||
|
|
||||||
options3.SetValue(10, NULL);
|
options3.SetValue(10, NULL);
|
||||||
|
options3.SetValue(11, NULL);
|
||||||
|
|
||||||
if(shutdown == 1)
|
if(shutdown == 1)
|
||||||
Sys_Shutdown();
|
Sys_Shutdown();
|
||||||
@ -1942,6 +1937,24 @@ int GameSettings(struct discHdr * header)
|
|||||||
reloadblock = (reloadblock+1) % 2;
|
reloadblock = (reloadblock+1) % 2;
|
||||||
break;
|
break;
|
||||||
case 10:
|
case 10:
|
||||||
|
int result;
|
||||||
|
result = WindowPrompt(LANGUAGE.Areyousure,0,LANGUAGE.Yes,LANGUAGE.Cancel,0,0);
|
||||||
|
if(result == 1) {
|
||||||
|
if(isInserted(bootDevice)) {
|
||||||
|
struct Game_NUM* game_num = CFG_get_game_num(header->id);
|
||||||
|
if (game_num) {
|
||||||
|
favoritevar = game_num->favorite;
|
||||||
|
playcount = game_num->count;
|
||||||
|
} else {
|
||||||
|
favoritevar = 0;
|
||||||
|
playcount = 0;
|
||||||
|
}
|
||||||
|
playcount = 0;
|
||||||
|
CFG_save_game_num(header->id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 11:
|
||||||
int choice = WindowPrompt(LANGUAGE.Areyousure,0,LANGUAGE.Yes,LANGUAGE.Cancel,0,0);
|
int choice = WindowPrompt(LANGUAGE.Areyousure,0,LANGUAGE.Yes,LANGUAGE.Cancel,0,0);
|
||||||
if(choice == 1) {
|
if(choice == 1) {
|
||||||
videoChoice = Settings.video;
|
videoChoice = Settings.video;
|
||||||
|
@ -11,8 +11,6 @@
|
|||||||
#include "xml/xml.h" /* XML - Lustar*/
|
#include "xml/xml.h" /* XML - Lustar*/
|
||||||
#include "cfg.h"
|
#include "cfg.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
struct SSettings Settings;
|
struct SSettings Settings;
|
||||||
|
|
||||||
|
|
||||||
@ -1469,7 +1467,7 @@ bool cfg_save_games()
|
|||||||
fprintf(f, "errorfix002:%d; ", cfg_game[i].errorfix002);
|
fprintf(f, "errorfix002:%d; ", cfg_game[i].errorfix002);
|
||||||
fprintf(f, "iosreloadblock:%d; ", cfg_game[i].iosreloadblock);
|
fprintf(f, "iosreloadblock:%d; ", cfg_game[i].iosreloadblock);
|
||||||
fprintf(f, "patchcountrystrings:%d; ", cfg_game[i].patchcountrystrings);
|
fprintf(f, "patchcountrystrings:%d; ", cfg_game[i].patchcountrystrings);
|
||||||
fprintf(f, "loadalternatedol:%d; ", cfg_game[i].loadalternatedol);
|
fprintf(f, "loadalternatedol:%d;\n", cfg_game[i].loadalternatedol);
|
||||||
}
|
}
|
||||||
fprintf(f, "# END\n");
|
fprintf(f, "# END\n");
|
||||||
fclose(f);
|
fclose(f);
|
||||||
@ -1509,6 +1507,39 @@ bool cfg_save_game_num()
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool CFG_reset_all_playcounters()
|
||||||
|
{
|
||||||
|
FILE *f;
|
||||||
|
int i;
|
||||||
|
char GXGameFavorites_cfg[32];
|
||||||
|
sprintf(GXGameFavorites_cfg, "%s/config", bootDevice);
|
||||||
|
mkdir(GXGameFavorites_cfg, 0777);
|
||||||
|
|
||||||
|
sprintf(GXGameFavorites_cfg, "%s/config/GXGameFavorites.cfg", bootDevice);
|
||||||
|
f = fopen(GXGameFavorites_cfg, "w");
|
||||||
|
if (!f) {
|
||||||
|
printf("Error saving %s\n", "GXGameFavorites.cfg");
|
||||||
|
sleep(1);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
fprintf(f, "# USB Loader settings file\n");
|
||||||
|
fprintf(f, "# note: this file is automatically generated\n");
|
||||||
|
fclose(f);
|
||||||
|
/* Closing and reopening because of a write issue we are having right now */
|
||||||
|
f = fopen(GXGameFavorites_cfg, "w");
|
||||||
|
fprintf(f, "# USB Loader settings file\n");
|
||||||
|
fprintf(f, "# note: this file is automatically generated\n");
|
||||||
|
fprintf(f, "# Num Games: %d\n", num_saved_game_num);
|
||||||
|
for (i=0; i<num_saved_game_num; i++) {
|
||||||
|
fprintf(f, "game:%s = ", cfg_game_num[i].id);
|
||||||
|
fprintf(f, "favorite:%d; ", cfg_game_num[i].favorite);
|
||||||
|
fprintf(f, "count:0;\n");
|
||||||
|
}
|
||||||
|
fprintf(f, "# END\n");
|
||||||
|
fclose(f);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
bool cfg_load_global()
|
bool cfg_load_global()
|
||||||
{
|
{
|
||||||
char GXGlobal_cfg[26];
|
char GXGlobal_cfg[26];
|
||||||
@ -1532,7 +1563,7 @@ bool cfg_load_global()
|
|||||||
}
|
}
|
||||||
Settings.volume = 80;
|
Settings.volume = 80;
|
||||||
Settings.sfxvolume = 80;
|
Settings.sfxvolume = 80;
|
||||||
|
|
||||||
Settings.titlesOverride = 0;
|
Settings.titlesOverride = 0;
|
||||||
char * empty = "";
|
char * empty = "";
|
||||||
snprintf(Settings.db_url, sizeof(Settings.db_url), empty);
|
snprintf(Settings.db_url, sizeof(Settings.db_url), empty);
|
||||||
|
@ -194,10 +194,11 @@ struct Game_CFG* CFG_get_game_opt(u8 *id);
|
|||||||
struct Game_NUM* CFG_get_game_num(u8 *id);
|
struct Game_NUM* CFG_get_game_num(u8 *id);
|
||||||
bool CFG_save_game_opt(u8 *id);
|
bool CFG_save_game_opt(u8 *id);
|
||||||
bool CFG_save_game_num(u8 *id);
|
bool CFG_save_game_num(u8 *id);
|
||||||
|
bool CFG_reset_all_playcounters();
|
||||||
bool CFG_forget_game_opt(u8 *id);
|
bool CFG_forget_game_opt(u8 *id);
|
||||||
bool CFG_forget_game_num(u8 *id);
|
bool CFG_forget_game_num(u8 *id);
|
||||||
|
|
||||||
//Astidof - Begin of modification
|
|
||||||
enum {
|
enum {
|
||||||
ConsoleLangDefault=0,
|
ConsoleLangDefault=0,
|
||||||
jap,
|
jap,
|
||||||
@ -356,7 +357,6 @@ struct SSettings {
|
|||||||
|
|
||||||
void CFG_LoadGlobal(void);
|
void CFG_LoadGlobal(void);
|
||||||
bool cfg_save_global(void);
|
bool cfg_save_global(void);
|
||||||
//Astidof - End of modification
|
|
||||||
|
|
||||||
bool OpenXMLDatabase(char* xmlfilepath, char* argdblang, bool argJPtoEN, bool openfile, bool loadtitles, bool freemem);
|
bool OpenXMLDatabase(char* xmlfilepath, char* argdblang, bool argJPtoEN, bool openfile, bool loadtitles, bool freemem);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user