mirror of
https://github.com/wiidev/usbloadergx.git
synced 2024-11-22 03:09:15 +01:00
Fixed multiple errors
This commit is contained in:
parent
fdf0704d43
commit
3f4c41c913
@ -447,15 +447,11 @@ extern "C" bool RemoveDirectory(const char *path)
|
|||||||
RemoveFile(dir.GetFilepath(i));
|
RemoveFile(dir.GetFilepath(i));
|
||||||
done++;
|
done++;
|
||||||
}
|
}
|
||||||
}
|
else
|
||||||
|
|
||||||
//! now remove all folders
|
|
||||||
for(int i = 0; i < fileCount; i++)
|
|
||||||
{
|
|
||||||
if(dir.IsDir(i))
|
|
||||||
{
|
{
|
||||||
|
//! remove all folders
|
||||||
ShowProgress(tr("Deleting directories..."), dir.GetFilename(i), 0, done, fileCount, false, false);
|
ShowProgress(tr("Deleting directories..."), dir.GetFilename(i), 0, done, fileCount, false, false);
|
||||||
RemoveFile(dir.GetFilepath(i));
|
rmdir(dir.GetFilepath(i));
|
||||||
done++;
|
done++;
|
||||||
gprintf("%s\n", dir.GetFilepath(i));
|
gprintf("%s\n", dir.GetFilepath(i));
|
||||||
}
|
}
|
||||||
@ -464,11 +460,11 @@ extern "C" bool RemoveDirectory(const char *path)
|
|||||||
ProgressStop();
|
ProgressStop();
|
||||||
ProgressCancelEnable(false);
|
ProgressCancelEnable(false);
|
||||||
|
|
||||||
return (remove(folderpath.c_str()) == 0);
|
return (rmdir(folderpath.c_str()) == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* RemoveDirectory
|
* CopyDirectory
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
extern "C" int CopyDirectory(const char *path, const char *dst)
|
extern "C" int CopyDirectory(const char *path, const char *dst)
|
||||||
{
|
{
|
||||||
|
@ -238,18 +238,18 @@ void GuiText::SetFontSize(int s)
|
|||||||
size = s;
|
size = s;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GuiText::SetMaxWidth(int width, int w)
|
void GuiText::SetMaxWidth(int w, int m)
|
||||||
{
|
{
|
||||||
//! no need to reset timer on false set
|
//! no need to reset timer on false set
|
||||||
if(wrapMode == w && maxWidth == width)
|
if(wrapMode == m && maxWidth == w)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
LOCK( this );
|
LOCK( this );
|
||||||
|
|
||||||
maxWidth = width;
|
maxWidth = w;
|
||||||
wrapMode = w;
|
wrapMode = m;
|
||||||
|
|
||||||
if (w == SCROLL_HORIZONTAL)
|
if (m == SCROLL_HORIZONTAL)
|
||||||
{
|
{
|
||||||
textScrollPos = 0;
|
textScrollPos = 0;
|
||||||
textScrollInitialDelay = TEXT_SCROLL_INITIAL_DELAY;
|
textScrollInitialDelay = TEXT_SCROLL_INITIAL_DELAY;
|
||||||
|
@ -264,16 +264,16 @@ s32 GCDumper::InstallGame(const char *installpath, u32 game, const char *install
|
|||||||
|
|
||||||
char gamepath[512];
|
char gamepath[512];
|
||||||
// snprintf(gamepath, sizeof(gamepath), "%s%s [%.6s]%s/", installpath, gametitle, gcheader.id, Disc ? "2" : ""); // Disc2 currently needs to be on the same folder.
|
// snprintf(gamepath, sizeof(gamepath), "%s%s [%.6s]%s/", installpath, gametitle, gcheader.id, Disc ? "2" : ""); // Disc2 currently needs to be on the same folder.
|
||||||
snprintf(gamepath, sizeof(gamepath), "%s%s [%.6s]/", installpath, gametitle, gcheader.id);
|
int n = snprintf(gamepath, sizeof(gamepath), "%s%s [%.6s]/", installpath, gametitle, gcheader.id);
|
||||||
|
|
||||||
// If another Disc from the same gameID already exists, let's use that path
|
// If another Disc from the same gameID already exists, let's use that path
|
||||||
if(strlen((char *)installedGamePath) != 0)
|
if(strlen((char *)installedGamePath) != 0)
|
||||||
snprintf(gamepath, sizeof(gamepath), "%s/", installedGamePath);
|
n = snprintf(gamepath, sizeof(gamepath), "%s/", installedGamePath);
|
||||||
|
|
||||||
CreateSubfolder(gamepath);
|
CreateSubfolder(gamepath);
|
||||||
|
|
||||||
// snprintf(gamepath, sizeof(gamepath), "%s%s [%.6s]%s/game.iso", installpath, gametitle, gcheader.id, Disc ? "2" : ""); // Disc2 currently needs to be on the same folder.
|
// snprintf(gamepath, sizeof(gamepath), "%s%s [%.6s]%s/game.iso", installpath, gametitle, gcheader.id, Disc ? "2" : ""); // Disc2 currently needs to be on the same folder.
|
||||||
snprintf(gamepath, sizeof(gamepath), "%s%s.iso", gamepath, Disc ? "disc2" : "game");
|
snprintf(gamepath + n, sizeof(gamepath) - n, "%s.iso", Disc ? "disc2" : "game");
|
||||||
|
|
||||||
FILE *f = fopen(gamepath, "wb");
|
FILE *f = fopen(gamepath, "wb");
|
||||||
if(!f)
|
if(!f)
|
||||||
|
@ -121,7 +121,7 @@ void GCGames::LoadGameList(const string &path, vector<struct discHdr> &headerLis
|
|||||||
snprintf(name, sizeof(name), "%.6s.%s", (i % 2) == 0 ? "game" : (char *) id, i >= 2 ? "gcm" : "iso");
|
snprintf(name, sizeof(name), "%.6s.%s", (i % 2) == 0 ? "game" : (char *) id, i >= 2 ? "gcm" : "iso");
|
||||||
snprintf(fpath, sizeof(fpath), "%s%s/%s", path.c_str(), dirname, name);
|
snprintf(fpath, sizeof(fpath), "%s%s/%s", path.c_str(), dirname, name);
|
||||||
if((found = (stat(fpath, &st) == 0)) == true)
|
if((found = (stat(fpath, &st) == 0)) == true)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if only disc2.iso is present
|
// Check if only disc2.iso is present
|
||||||
@ -402,10 +402,10 @@ bool GCGames::IsInstalled(const char *gameID, u8 disc_number) const
|
|||||||
else if(disc_number == 1) // Check if the second Game Disc exists in the same folder than Disc1.
|
else if(disc_number == 1) // Check if the second Game Disc exists in the same folder than Disc1.
|
||||||
{
|
{
|
||||||
char filepath[512];
|
char filepath[512];
|
||||||
snprintf(filepath, sizeof(filepath), "%s", GetPath(gameID));
|
int n = snprintf(filepath, sizeof(filepath), "%s", GetPath(gameID));
|
||||||
char *pathPtr = strrchr(filepath, '/');
|
char *pathPtr = strrchr(filepath, '/');
|
||||||
if(pathPtr) *pathPtr = 0;
|
if(pathPtr) *pathPtr = 0;
|
||||||
snprintf(filepath, sizeof(filepath), "%s/disc2.iso", filepath);
|
snprintf(filepath + n, sizeof(filepath) - n, "/disc2.iso");
|
||||||
|
|
||||||
if(CheckFile(filepath))
|
if(CheckFile(filepath))
|
||||||
return true;
|
return true;
|
||||||
|
@ -145,7 +145,11 @@ int GCTCheats::openTxtfile(const char * filename)
|
|||||||
|
|
||||||
const int max_line_size = 4096;
|
const int max_line_size = 4096;
|
||||||
char *line = new (std::nothrow) char[max_line_size];
|
char *line = new (std::nothrow) char[max_line_size];
|
||||||
if(!line) return -1;
|
if (!line)
|
||||||
|
{
|
||||||
|
fclose(pFile);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
fgets(line, max_line_size, pFile);
|
fgets(line, max_line_size, pFile);
|
||||||
RemoveLineEnds(line);
|
RemoveLineEnds(line);
|
||||||
@ -158,7 +162,7 @@ int GCTCheats::openTxtfile(const char * filename)
|
|||||||
{
|
{
|
||||||
RemoveLineEnds(line);
|
RemoveLineEnds(line);
|
||||||
|
|
||||||
if(*line == 0)
|
if (*line == 0)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// first line is the cheat name
|
// first line is the cheat name
|
||||||
@ -169,7 +173,7 @@ int GCTCheats::openTxtfile(const char * filename)
|
|||||||
{
|
{
|
||||||
RemoveLineEnds(line);
|
RemoveLineEnds(line);
|
||||||
|
|
||||||
if(*line == 0) // empty line means start of new cheat
|
if (*line == 0) // empty line means start of new cheat
|
||||||
break;
|
break;
|
||||||
|
|
||||||
if (IsCode(line))
|
if (IsCode(line))
|
||||||
@ -187,7 +191,7 @@ int GCTCheats::openTxtfile(const char * filename)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!cheatEntry.sCheats.empty())
|
if (!cheatEntry.sCheats.empty())
|
||||||
cheatList.push_back(cheatEntry);
|
cheatList.push_back(cheatEntry);
|
||||||
}
|
}
|
||||||
fclose(pFile);
|
fclose(pFile);
|
||||||
|
@ -172,6 +172,7 @@ int BootHomebrew(const char * filepath)
|
|||||||
fclose(file);
|
fclose(file);
|
||||||
DeviceHandler::DestroyInstance();
|
DeviceHandler::DestroyInstance();
|
||||||
Sys_BackToLoader();
|
Sys_BackToLoader();
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
homebrewsize = filesize;
|
homebrewsize = filesize;
|
||||||
|
@ -68,8 +68,6 @@ int HomebrewXML::LoadHomebrewXMLData(const char* filename)
|
|||||||
snprintf(ReleaseText, sizeof(ReleaseText), "%c%c/%c%c/%c%c%c%c", ReleaseText[4], ReleaseText[5], ReleaseText[6], ReleaseText[7], ReleaseText[0], ReleaseText[1], ReleaseText[2], ReleaseText[3]);
|
snprintf(ReleaseText, sizeof(ReleaseText), "%c%c/%c%c/%c%c%c%c", ReleaseText[4], ReleaseText[5], ReleaseText[6], ReleaseText[7], ReleaseText[0], ReleaseText[1], ReleaseText[2], ReleaseText[3]);
|
||||||
else if (len == 6)
|
else if (len == 6)
|
||||||
snprintf(ReleaseText, sizeof(ReleaseText), "%c%c/%c%c%c%c", ReleaseText[4], ReleaseText[5], ReleaseText[0], ReleaseText[1], ReleaseText[2], ReleaseText[3]);
|
snprintf(ReleaseText, sizeof(ReleaseText), "%c%c/%c%c%c%c", ReleaseText[4], ReleaseText[5], ReleaseText[0], ReleaseText[1], ReleaseText[2], ReleaseText[3]);
|
||||||
else
|
|
||||||
snprintf(ReleaseText, sizeof(ReleaseText), "%s", ReleaseText);
|
|
||||||
|
|
||||||
Releasedate = ReleaseText;
|
Releasedate = ReleaseText;
|
||||||
|
|
||||||
|
@ -342,7 +342,7 @@ u32 wbfs_count_usedblocks(wbfs_t*p)
|
|||||||
if (v == ~0U)
|
if (v == ~0U)
|
||||||
count += 32;
|
count += 32;
|
||||||
else if (v != 0) for (j = 0; j < 32; j++)
|
else if (v != 0) for (j = 0; j < 32; j++)
|
||||||
if (v & (1 << j)) count++;
|
if (v & (1U << j)) count++;
|
||||||
}
|
}
|
||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
@ -369,7 +369,7 @@ static u32 alloc_block(wbfs_t*p)
|
|||||||
if (v != 0)
|
if (v != 0)
|
||||||
{
|
{
|
||||||
for (j = 0; j < 32; j++)
|
for (j = 0; j < 32; j++)
|
||||||
if (v & (1 << j))
|
if (v & (1U << j))
|
||||||
{
|
{
|
||||||
p->freeblks[i] = wbfs_htonl( v & ~( 1 << j ) );
|
p->freeblks[i] = wbfs_htonl( v & ~( 1 << j ) );
|
||||||
return (i * 32) + j + 1;
|
return (i * 32) + j + 1;
|
||||||
|
@ -215,7 +215,8 @@ bool shadow_mload()
|
|||||||
{
|
{
|
||||||
int ios = IOS_GetVersion();
|
int ios = IOS_GetVersion();
|
||||||
|
|
||||||
if(ios != 222 || ios != 223 || ios != 224)
|
// Allow only Hermes cIOS 222, 223 & 224
|
||||||
|
if (ios < 222 || ios > 224)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
int v51 = (5 << 4) & 1;
|
int v51 = (5 << 4) & 1;
|
||||||
|
@ -360,7 +360,7 @@ u32 do_new_wiimmfi()
|
|||||||
// Binary blobs with Wiimmfi patches. Do not modify.
|
// Binary blobs with Wiimmfi patches. Do not modify.
|
||||||
// Provided by Leseratte on 2018-12-14.
|
// Provided by Leseratte on 2018-12-14.
|
||||||
|
|
||||||
int binary[] = { 0x37C849A2, 0x8BC32FA4, 0xC9A34B71, 0x1BCB49A2,
|
u32 binary[] = { 0x37C849A2, 0x8BC32FA4, 0xC9A34B71, 0x1BCB49A2,
|
||||||
0x2F119304, 0x5F402684, 0x3E4FDA29, 0x50849A21,
|
0x2F119304, 0x5F402684, 0x3E4FDA29, 0x50849A21,
|
||||||
0xB88B3452, 0x627FC9C1, 0xDC24D119, 0x5844350F,
|
0xB88B3452, 0x627FC9C1, 0xDC24D119, 0x5844350F,
|
||||||
0xD893444F, 0x19A588DC, 0x16C91184, 0x0C3E237C,
|
0xD893444F, 0x19A588DC, 0x16C91184, 0x0C3E237C,
|
||||||
|
@ -740,11 +740,11 @@ void GameWindow::BootGame(struct discHdr *header)
|
|||||||
if (game_cfg->loadalternatedol == 2)
|
if (game_cfg->loadalternatedol == 2)
|
||||||
{
|
{
|
||||||
char filepath[200];
|
char filepath[200];
|
||||||
snprintf(filepath, sizeof(filepath), "%s%s.dol", Settings.dolpath, IDfull);
|
int n = snprintf(filepath, sizeof(filepath), "%s%s.dol", Settings.dolpath, IDfull);
|
||||||
if (CheckFile(filepath) == false)
|
if (CheckFile(filepath) == false)
|
||||||
{
|
{
|
||||||
sprintf(filepath, "%s %s", filepath, tr( "does not exist!" ));
|
snprintf(filepath + n, sizeof(filepath) - n, " %s", tr( "does not exist!" ));
|
||||||
if(!WindowPrompt(tr( "Error" ), filepath, tr( "Continue" ), tr( "Cancel")))
|
if (!WindowPrompt(tr( "Error" ), filepath, tr( "Continue" ), tr( "Cancel")))
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -762,10 +762,10 @@ void GameWindow::BootGame(struct discHdr *header)
|
|||||||
if (game_cfg->ocarina == ON || (game_cfg->ocarina == INHERIT && Settings.ocarina == ON))
|
if (game_cfg->ocarina == ON || (game_cfg->ocarina == INHERIT && Settings.ocarina == ON))
|
||||||
{
|
{
|
||||||
char filepath[200];
|
char filepath[200];
|
||||||
snprintf(filepath, sizeof(filepath), "%s%s.gct", Settings.Cheatcodespath, IDfull);
|
int n = snprintf(filepath, sizeof(filepath), "%s%s.gct", Settings.Cheatcodespath, IDfull);
|
||||||
if (CheckFile(filepath) == false)
|
if (CheckFile(filepath) == false)
|
||||||
{
|
{
|
||||||
sprintf(filepath, "%s %s", filepath, tr( "does not exist! Loading game without cheats." ));
|
snprintf(filepath + n, sizeof(filepath) - n, " %s", tr( "does not exist! Loading game without cheats." ));
|
||||||
if(!WindowPrompt(tr( "Error" ), filepath, tr( "Continue" ), tr( "Cancel")))
|
if(!WindowPrompt(tr( "Error" ), filepath, tr( "Continue" ), tr( "Cancel")))
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -298,9 +298,9 @@ void WindowCredits()
|
|||||||
|
|
||||||
char SvnRev[80];
|
char SvnRev[80];
|
||||||
#ifdef FULLCHANNEL
|
#ifdef FULLCHANNEL
|
||||||
snprintf(SvnRev, sizeof(SvnRev), "Rev%sc IOS%u (Rev %u)%s", GetRev(), IOS_GetVersion(), IOS_GetRevision(), (*(vu32*)0xcd800064 == 0xFFFFFFFF)? " + AHB" : "" );
|
snprintf(SvnRev, sizeof(SvnRev), "Rev%sc IOS%d (Rev %d)%s", GetRev(), (int)IOS_GetVersion(), (int)IOS_GetRevision(), (*(vu32*)0xcd800064 == 0xFFFFFFFF)? " + AHB" : "" );
|
||||||
#else
|
#else
|
||||||
snprintf(SvnRev, sizeof(SvnRev), "Rev%s IOS%u (Rev %u)%s", GetRev(), (unsigned int)IOS_GetVersion(), (int)IOS_GetRevision(), (*(vu32*)0xcd800064 == 0xFFFFFFFF)? " + AHB" : "" );
|
snprintf(SvnRev, sizeof(SvnRev), "Rev%s IOS%d (Rev %d)%s", GetRev(), (int)IOS_GetVersion(), (int)IOS_GetRevision(), (*(vu32*)0xcd800064 == 0xFFFFFFFF)? " + AHB" : "" );
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
char IosInfo[80] = "";
|
char IosInfo[80] = "";
|
||||||
@ -333,7 +333,7 @@ void WindowCredits()
|
|||||||
char *ptr = strchr(version, ' ');
|
char *ptr = strchr(version, ' ');
|
||||||
if(ptr) *ptr = 0;
|
if(ptr) *ptr = 0;
|
||||||
else version[4] = 0;
|
else version[4] = 0;
|
||||||
snprintf(GCInfo, sizeof(GCInfo), "%s%sDevolution r%d", GCInfo, strlen(GCInfo) > 1 ? " / " : "", atoi(version));
|
snprintf(GCInfo + strlen(GCInfo), sizeof(GCInfo) - strlen(GCInfo), "%sDevolution r%d", strlen(GCInfo) > 1 ? " / " : "", atoi(version));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if Nintendont is available
|
// Check if Nintendont is available
|
||||||
@ -393,7 +393,7 @@ void WindowCredits()
|
|||||||
currentTxt->SetFont(creditsFont, creditsFontSize);
|
currentTxt->SetFont(creditsFont, creditsFontSize);
|
||||||
txt.push_back(currentTxt);
|
txt.push_back(currentTxt);
|
||||||
|
|
||||||
currentTxt = new GuiText("http://sourceforge.net/p/usbloadergx/", 20, ( GXColor ) {255, 255, 255, 255});
|
currentTxt = new GuiText("https://sourceforge.net/p/usbloadergx/", 20, ( GXColor ) {255, 255, 255, 255});
|
||||||
currentTxt->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
|
currentTxt->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
|
||||||
currentTxt->SetPosition(160, y);
|
currentTxt->SetPosition(160, y);
|
||||||
currentTxt->SetFont(creditsFont, creditsFontSize);
|
currentTxt->SetFont(creditsFont, creditsFontSize);
|
||||||
@ -1199,7 +1199,7 @@ int FormatingPartition(const char *title, int part_num)
|
|||||||
int portPart = DeviceHandler::PartitionToPortPartition(part_num);
|
int portPart = DeviceHandler::PartitionToPortPartition(part_num);
|
||||||
|
|
||||||
char text[255];
|
char text[255];
|
||||||
sprintf(text, "%s: %.2fGB", tr( "Partition" ), usbHandle->GetSize(portPart) / GB_SIZE);
|
int n = sprintf(text, "%s: %.2fGB", tr( "Partition" ), usbHandle->GetSize(portPart) / GB_SIZE);
|
||||||
int choice = WindowPrompt(tr( "Do you want to format:" ), text, tr( "Yes" ), tr( "No" ));
|
int choice = WindowPrompt(tr( "Do you want to format:" ), text, tr( "Yes" ), tr( "No" ));
|
||||||
if (choice == 0)
|
if (choice == 0)
|
||||||
return -666;
|
return -666;
|
||||||
@ -1248,7 +1248,7 @@ int FormatingPartition(const char *title, int part_num)
|
|||||||
partition->FSName = "WBFS";
|
partition->FSName = "WBFS";
|
||||||
sleep(1);
|
sleep(1);
|
||||||
ret = WBFS_OpenPart(part_num);
|
ret = WBFS_OpenPart(part_num);
|
||||||
sprintf(text, "%s %s", text, tr( "formatted!" ));
|
snprintf(text + n, sizeof(text) - n, " %s", tr( "formatted!" ));
|
||||||
WindowPrompt(tr( "Success:" ), text, tr( "OK" ));
|
WindowPrompt(tr( "Success:" ), text, tr( "OK" ));
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
{
|
{
|
||||||
@ -1457,67 +1457,63 @@ int CodeDownload(const char *id)
|
|||||||
if (IsNetworkInit())
|
if (IsNetworkInit())
|
||||||
{
|
{
|
||||||
char txtpath[250];
|
char txtpath[250];
|
||||||
snprintf(txtpath, sizeof(txtpath), "%s%s.txt", Settings.TxtCheatcodespath, id);
|
int txtLen = snprintf(txtpath, sizeof(txtpath), "%s%s.txt", Settings.TxtCheatcodespath, id);
|
||||||
|
|
||||||
char codeurl[250];
|
char codeurl[80];
|
||||||
snprintf(codeurl, sizeof(codeurl), "https://www.geckocodes.org/txt.php?txt=%s", id);
|
snprintf(codeurl, sizeof(codeurl), "https://www.geckocodes.org/txt.php?txt=%s", id);
|
||||||
|
|
||||||
struct download file = {};
|
struct download file = {};
|
||||||
downloadfile(codeurl, &file);
|
downloadfile(codeurl, &file);
|
||||||
if (file.size <= 0) {
|
if (file.size <= 0) {
|
||||||
gprintf("Trying backup...\n");
|
gprintf("Trying backup...\n");
|
||||||
char codeurl_backup[250];
|
snprintf(codeurl, sizeof(codeurl), "https://web.archive.org/web/3000if_/geckocodes.org/txt.php?txt=%s", id);
|
||||||
snprintf(codeurl_backup, sizeof(codeurl_backup), "https://web.archive.org/web/3000if_/geckocodes.org/txt.php?txt=%s", id);
|
downloadfile(codeurl, &file);
|
||||||
downloadfile(codeurl_backup, &file);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (file.size > 0)
|
if (file.size > 0)
|
||||||
{
|
{
|
||||||
bool validUrl = false;
|
bool validUrl = false;
|
||||||
if(file.size > 0)
|
char *textCpy = new (std::nothrow) char[file.size+1];
|
||||||
|
if (textCpy)
|
||||||
{
|
{
|
||||||
char *textCpy = new (std::nothrow) char[file.size+1];
|
memcpy(textCpy, file.data, file.size);
|
||||||
if(textCpy)
|
textCpy[file.size] = '\0';
|
||||||
{
|
validUrl = (strcasestr(textCpy, "404 Not Found") == 0);
|
||||||
memcpy(textCpy, file.data, file.size);
|
delete [] textCpy;
|
||||||
textCpy[file.size] = '\0';
|
|
||||||
validUrl = (strcasestr(textCpy, "404 Not Found") == 0);
|
|
||||||
delete [] textCpy;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!validUrl)
|
if (!validUrl)
|
||||||
{
|
{
|
||||||
snprintf(codeurl, sizeof(codeurl), "%s%s", codeurl, tr( " is not on the server." ));
|
snprintf(codeurl, sizeof(codeurl), "%s.txt%s", id, tr( " is not on the server." ));
|
||||||
WindowPrompt(tr( "Error" ), codeurl, tr( "OK" ));
|
WindowPrompt(tr( "Error" ), codeurl, tr( "OK" ));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
FILE * pfile = fopen(txtpath, "wb");
|
FILE * pfile = fopen(txtpath, "wb");
|
||||||
if(pfile)
|
if (pfile)
|
||||||
{
|
{
|
||||||
fwrite(file.data, 1, file.size, pfile);
|
fwrite(file.data, 1, file.size, pfile);
|
||||||
fclose(pfile);
|
fclose(pfile);
|
||||||
|
|
||||||
// verify downloaded content - thanks airline38
|
// verify downloaded content - thanks airline38
|
||||||
pfile = fopen(txtpath, "rb");
|
pfile = fopen(txtpath, "rb");
|
||||||
if(pfile)
|
if (pfile)
|
||||||
{
|
{
|
||||||
char target[4];
|
char target[4];
|
||||||
fseek(pfile,0,SEEK_SET);
|
fseek(pfile, 0, SEEK_SET);
|
||||||
fread(target, sizeof(char), 4, pfile);
|
fread(target, sizeof(char), 4, pfile);
|
||||||
fclose(pfile);
|
fclose(pfile);
|
||||||
//printf("target=%s game id=%s\n",target,id);
|
//printf("target=%s game id=%s\n",target,id);
|
||||||
if (strncmp(target,id,4)== 0 )
|
if (strncmp(target, id, 4)== 0 )
|
||||||
{
|
{
|
||||||
snprintf(txtpath, sizeof(txtpath), "%s%s", txtpath, tr(" has been Saved. The text has not been verified. Some of the code may not work right with each other. If you experience trouble, open the text in a real text editor for more information." ));
|
snprintf(txtpath + txtLen, sizeof(txtpath) - txtLen, "%s", tr(" has been Saved. The text has not been verified. Some of the code may not work right with each other. If you experience trouble, open the text in a real text editor for more information." ));
|
||||||
WindowPrompt(0, txtpath, tr( "OK" ));
|
WindowPrompt(0, txtpath, tr( "OK" ));
|
||||||
ret = 0;
|
ret = 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
RemoveFile(txtpath);
|
RemoveFile(txtpath);
|
||||||
snprintf(codeurl, sizeof(codeurl), "%s%s", codeurl, tr( " is not on the server." ));
|
snprintf(codeurl, sizeof(codeurl), "%s.txt%s", id, tr( " is not on the server." ));
|
||||||
WindowPrompt(tr( "Error" ), codeurl, tr( "OK" ));
|
WindowPrompt(tr( "Error" ), codeurl, tr( "OK" ));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1529,7 +1525,9 @@ int CodeDownload(const char *id)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
snprintf(codeurl, sizeof(codeurl), "%s%s", codeurl, tr(" could not be downloaded."));
|
if (file.size > 0)
|
||||||
|
free(file.data);
|
||||||
|
snprintf(codeurl, sizeof(codeurl), "%s.txt%s", id, tr(" could not be downloaded."));
|
||||||
WindowPrompt(tr( "Error" ), codeurl, tr( "OK" ));
|
WindowPrompt(tr( "Error" ), codeurl, tr( "OK" ));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -83,8 +83,7 @@ int InitBrowsers()
|
|||||||
if ( DIR *dir = opendir( rootdir ) )
|
if ( DIR *dir = opendir( rootdir ) )
|
||||||
{
|
{
|
||||||
closedir(dir);
|
closedir(dir);
|
||||||
BROWSERINFO browser;
|
BROWSERINFO browser = {};
|
||||||
memset(&browser, 0, sizeof(BROWSERINFO));
|
|
||||||
strcpy(browser.rootdir, rootdir);
|
strcpy(browser.rootdir, rootdir);
|
||||||
ResetBrowser(&browser);
|
ResetBrowser(&browser);
|
||||||
browsers.push_back(browser);
|
browsers.push_back(browser);
|
||||||
@ -445,7 +444,8 @@ int BrowseDevice(char * Path, int Path_size, int Flags, FILTERCASCADE *Filter/*=
|
|||||||
< MAXPATHLEN)
|
< MAXPATHLEN)
|
||||||
{
|
{
|
||||||
/* update current directory name */
|
/* update current directory name */
|
||||||
sprintf(browser->dir, "%s%s/", browser->dir, browser->browserList[clickedIndex].filename);
|
strcat(browser->dir, browser->browserList[clickedIndex].filename);
|
||||||
|
sprintf(browser->dir + strlen(browser->dir), "/");
|
||||||
pathCanged = true;
|
pathCanged = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -677,51 +677,51 @@ static int InternalShowGameInfo(struct discHdr *header)
|
|||||||
}
|
}
|
||||||
|
|
||||||
//date
|
//date
|
||||||
snprintf(linebuf2, sizeof(linebuf2), " ");
|
int n = snprintf(linebuf2, sizeof(linebuf2), " ");
|
||||||
if (GameInfo.PublishDate != 0)
|
if (GameInfo.PublishDate != 0)
|
||||||
{
|
{
|
||||||
int year = GameInfo.PublishDate >> 16;
|
int year = GameInfo.PublishDate >> 16;
|
||||||
int day = GameInfo.PublishDate & 0xFF;
|
int day = GameInfo.PublishDate & 0xFF;
|
||||||
int month = (GameInfo.PublishDate >> 8) & 0xFF;
|
int month = (GameInfo.PublishDate >> 8) & 0xFF;
|
||||||
snprintf(linebuf2, sizeof(linebuf2), "%02i ", day);
|
n += snprintf(linebuf2 + n, sizeof(linebuf2) - n, "%02i ", day);
|
||||||
|
|
||||||
switch (month)
|
switch (month)
|
||||||
{
|
{
|
||||||
case 1:
|
case 1:
|
||||||
snprintf(linebuf2, sizeof(linebuf2), "%s%s ", linebuf2, tr( "Jan" ));
|
snprintf(linebuf2 + n, sizeof(linebuf2) - n, "%s ", tr( "Jan" ));
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
snprintf(linebuf2, sizeof(linebuf2), "%s%s ", linebuf2, tr( "Feb" ));
|
snprintf(linebuf2 + n, sizeof(linebuf2) - n, "%s ", tr( "Feb" ));
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
snprintf(linebuf2, sizeof(linebuf2), "%s%s ", linebuf2, tr( "Mar" ));
|
snprintf(linebuf2 + n, sizeof(linebuf2) - n, "%s ", tr( "Mar" ));
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
snprintf(linebuf2, sizeof(linebuf2), "%s%s ", linebuf2, tr( "Apr" ));
|
snprintf(linebuf2 + n, sizeof(linebuf2) - n, "%s ", tr( "Apr" ));
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
snprintf(linebuf2, sizeof(linebuf2), "%s%s ", linebuf2, tr( "May" ));
|
snprintf(linebuf2 + n, sizeof(linebuf2) - n, "%s ", tr( "May" ));
|
||||||
break;
|
break;
|
||||||
case 6:
|
case 6:
|
||||||
snprintf(linebuf2, sizeof(linebuf2), "%s%s ", linebuf2, tr( "June" ));
|
snprintf(linebuf2 + n, sizeof(linebuf2) - n, "%s ", tr( "June" ));
|
||||||
break;
|
break;
|
||||||
case 7:
|
case 7:
|
||||||
snprintf(linebuf2, sizeof(linebuf2), "%s%s ", linebuf2, tr( "July" ));
|
snprintf(linebuf2 + n, sizeof(linebuf2) - n, "%s ", tr( "July" ));
|
||||||
break;
|
break;
|
||||||
case 8:
|
case 8:
|
||||||
snprintf(linebuf2, sizeof(linebuf2), "%s%s ", linebuf2, tr( "Aug" ));
|
snprintf(linebuf2 + n, sizeof(linebuf2) - n, "%s ", tr( "Aug" ));
|
||||||
break;
|
break;
|
||||||
case 9:
|
case 9:
|
||||||
snprintf(linebuf2, sizeof(linebuf2), "%s%s ", linebuf2, tr( "Sept" ));
|
snprintf(linebuf2 + n, sizeof(linebuf2) - n, "%s ", tr( "Sept" ));
|
||||||
break;
|
break;
|
||||||
case 10:
|
case 10:
|
||||||
snprintf(linebuf2, sizeof(linebuf2), "%s%s ", linebuf2, tr( "Oct" ));
|
snprintf(linebuf2 + n, sizeof(linebuf2) - n, "%s ", tr( "Oct" ));
|
||||||
break;
|
break;
|
||||||
case 11:
|
case 11:
|
||||||
snprintf(linebuf2, sizeof(linebuf2), "%s%s ", linebuf2, tr( "Nov" ));
|
snprintf(linebuf2 + n, sizeof(linebuf2) - n, "%s ", tr( "Nov" ));
|
||||||
break;
|
break;
|
||||||
case 12:
|
case 12:
|
||||||
snprintf(linebuf2, sizeof(linebuf2), "%s%s ", linebuf2, tr( "Dec" ));
|
snprintf(linebuf2 + n, sizeof(linebuf2) - n, "%s ", tr( "Dec" ));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -125,7 +125,7 @@ bool Theme::Load(const char * theme_file_path)
|
|||||||
char * ptr = strrchr(theme_path, '/');
|
char * ptr = strrchr(theme_path, '/');
|
||||||
if(ptr) *ptr = '\0';
|
if(ptr) *ptr = '\0';
|
||||||
|
|
||||||
snprintf(theme_path, sizeof(theme_path), "%s/%s", theme_path, Foldername);
|
snprintf(theme_path + strlen(theme_path), sizeof(theme_path) - strlen(theme_path), "/%s", Foldername);
|
||||||
if(!Resources::LoadFiles(theme_path))
|
if(!Resources::LoadFiles(theme_path))
|
||||||
{
|
{
|
||||||
const char * ThemeFilename = strrchr(theme_file_path, '/')+1;
|
const char * ThemeFilename = strrchr(theme_file_path, '/')+1;
|
||||||
@ -137,7 +137,7 @@ bool Theme::Load(const char * theme_file_path)
|
|||||||
|
|
||||||
char * ptr = strrchr(theme_path, '/');
|
char * ptr = strrchr(theme_path, '/');
|
||||||
*ptr = 0;
|
*ptr = 0;
|
||||||
snprintf(theme_path, sizeof(theme_path), "%s/%s", theme_path, Filename);
|
snprintf(theme_path + strlen(theme_path), sizeof(theme_path) - strlen(theme_path), "/%s", Filename);
|
||||||
Resources::LoadFiles(theme_path);
|
Resources::LoadFiles(theme_path);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -642,7 +642,7 @@ int GameBooter::BootDIOSMIOS(struct discHdr *gameHdr)
|
|||||||
snprintf(disc2Path, sizeof(disc2Path), "%s", RealPath);
|
snprintf(disc2Path, sizeof(disc2Path), "%s", RealPath);
|
||||||
char *pathPtr = strrchr(disc2Path, '/');
|
char *pathPtr = strrchr(disc2Path, '/');
|
||||||
if(pathPtr) *pathPtr = 0;
|
if(pathPtr) *pathPtr = 0;
|
||||||
snprintf(disc2Path, sizeof(disc2Path), "%s/disc2.iso", disc2Path);
|
snprintf(disc2Path + strlen(disc2Path), sizeof(disc2Path) - strlen(disc2Path), "/disc2.iso");
|
||||||
if(CheckFile(disc2Path))
|
if(CheckFile(disc2Path))
|
||||||
{
|
{
|
||||||
int choice = WindowPrompt(gameHdr->title, tr("This game has multiple discs. Please select the disc to launch."), tr("Disc 1"), tr("Disc 2"), tr("Cancel"));
|
int choice = WindowPrompt(gameHdr->title, tr("This game has multiple discs. Please select the disc to launch."), tr("Disc 1"), tr("Disc 2"), tr("Cancel"));
|
||||||
@ -663,7 +663,7 @@ int GameBooter::BootDIOSMIOS(struct discHdr *gameHdr)
|
|||||||
{
|
{
|
||||||
char *pathPtr = strrchr(gamePath, '/');
|
char *pathPtr = strrchr(gamePath, '/');
|
||||||
if(pathPtr) *pathPtr = 0;
|
if(pathPtr) *pathPtr = 0;
|
||||||
snprintf(gamePath, sizeof(gamePath), "%s/disc2.iso", gamePath);
|
snprintf(gamePath + strlen(gamePath), sizeof(gamePath) - strlen(gamePath), "/disc2.iso");
|
||||||
}
|
}
|
||||||
|
|
||||||
ExitApp();
|
ExitApp();
|
||||||
@ -873,7 +873,7 @@ int GameBooter::BootDevolution(struct discHdr *gameHdr)
|
|||||||
snprintf(disc2, sizeof(disc2), "%s", RealPath);
|
snprintf(disc2, sizeof(disc2), "%s", RealPath);
|
||||||
char *pathPtr = strrchr(disc2, '/');
|
char *pathPtr = strrchr(disc2, '/');
|
||||||
if(pathPtr) *pathPtr = 0;
|
if(pathPtr) *pathPtr = 0;
|
||||||
snprintf(disc2, sizeof(disc2), "%s/disc2.iso", disc2);
|
snprintf(disc2 + strlen(disc2), sizeof(disc2) - strlen(disc2), "/disc2.iso");
|
||||||
if(CheckFile(disc2))
|
if(CheckFile(disc2))
|
||||||
multiDisc = true;
|
multiDisc = true;
|
||||||
|
|
||||||
@ -935,7 +935,7 @@ int GameBooter::BootDevolution(struct discHdr *gameHdr)
|
|||||||
{
|
{
|
||||||
if(devoMCEmulation == DEVO_MC_INDIVIDUAL)
|
if(devoMCEmulation == DEVO_MC_INDIVIDUAL)
|
||||||
{
|
{
|
||||||
snprintf(DEVO_memCard, sizeof(DEVO_memCard), "%s/memcard_%.6s.bin", DEVO_memCard, (const char *) gameHdr->id);
|
snprintf(DEVO_memCard + strlen(DEVO_memCard), sizeof(DEVO_memCard) - strlen(DEVO_memCard), "/memcard_%.6s.bin", (const char *) gameHdr->id);
|
||||||
}
|
}
|
||||||
else // same for all games
|
else // same for all games
|
||||||
{
|
{
|
||||||
@ -1395,7 +1395,7 @@ int GameBooter::BootNintendont(struct discHdr *gameHdr)
|
|||||||
snprintf(disc2Path, sizeof(disc2Path), "%s", RealPath);
|
snprintf(disc2Path, sizeof(disc2Path), "%s", RealPath);
|
||||||
char *pathPtr = strrchr(disc2Path, '/');
|
char *pathPtr = strrchr(disc2Path, '/');
|
||||||
if(pathPtr) *pathPtr = 0;
|
if(pathPtr) *pathPtr = 0;
|
||||||
snprintf(disc2Path, sizeof(disc2Path), "%s/disc2.iso", disc2Path);
|
snprintf(disc2Path + strlen(disc2Path), sizeof(disc2Path) - strlen(disc2Path), "/disc2.iso");
|
||||||
if(CheckFile(disc2Path))
|
if(CheckFile(disc2Path))
|
||||||
{
|
{
|
||||||
int choice = WindowPrompt(gameHdr->title, tr("This game has multiple discs. Please select the disc to launch."), tr("Disc 1"), tr("Disc 2"), tr("Cancel"));
|
int choice = WindowPrompt(gameHdr->title, tr("This game has multiple discs. Please select the disc to launch."), tr("Disc 1"), tr("Disc 2"), tr("Cancel"));
|
||||||
@ -1415,7 +1415,7 @@ int GameBooter::BootNintendont(struct discHdr *gameHdr)
|
|||||||
{
|
{
|
||||||
char *pathPtr = strrchr(gamePath, '/');
|
char *pathPtr = strrchr(gamePath, '/');
|
||||||
if(pathPtr) *pathPtr = 0;
|
if(pathPtr) *pathPtr = 0;
|
||||||
snprintf(gamePath, sizeof(gamePath), "%s/disc2.iso", gamePath);
|
snprintf(gamePath + strlen(gamePath), sizeof(gamePath) - strlen(gamePath), "/disc2.iso");
|
||||||
}
|
}
|
||||||
|
|
||||||
if(gameHdr->type == TYPE_GAME_GC_DISC)
|
if(gameHdr->type == TYPE_GAME_GC_DISC)
|
||||||
|
@ -25,7 +25,6 @@ typedef struct _dolheader
|
|||||||
static bool Remove_001_Protection(void *Address, int Size)
|
static bool Remove_001_Protection(void *Address, int Size)
|
||||||
{
|
{
|
||||||
u8 SearchPattern[16] = { 0x40, 0x82, 0x00, 0x0C, 0x38, 0x60, 0x00, 0x01, 0x48, 0x00, 0x02, 0x44, 0x38, 0x61, 0x00, 0x18 };
|
u8 SearchPattern[16] = { 0x40, 0x82, 0x00, 0x0C, 0x38, 0x60, 0x00, 0x01, 0x48, 0x00, 0x02, 0x44, 0x38, 0x61, 0x00, 0x18 };
|
||||||
u8 PatchData[16] = { 0x40, 0x82, 0x00, 0x04, 0x38, 0x60, 0x00, 0x01, 0x48, 0x00, 0x02, 0x44, 0x38, 0x61, 0x00, 0x18 };
|
|
||||||
|
|
||||||
void *Addr = Address;
|
void *Addr = Address;
|
||||||
void *Addr_end = Address + Size;
|
void *Addr_end = Address + Size;
|
||||||
@ -34,7 +33,8 @@ static bool Remove_001_Protection(void *Address, int Size)
|
|||||||
{
|
{
|
||||||
if (memcmp(Addr, SearchPattern, sizeof(SearchPattern)) == 0)
|
if (memcmp(Addr, SearchPattern, sizeof(SearchPattern)) == 0)
|
||||||
{
|
{
|
||||||
memcpy(Addr, PatchData, sizeof(PatchData));
|
SearchPattern[3] = 0x04;
|
||||||
|
memcpy(Addr, SearchPattern, sizeof(SearchPattern));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
Addr += 4;
|
Addr += 4;
|
||||||
@ -56,10 +56,7 @@ bool Load_Dol(void **buffer, int* dollen, const char * filepath)
|
|||||||
|
|
||||||
file = fopen(fullpath, "rb");
|
file = fopen(fullpath, "rb");
|
||||||
if (file == NULL)
|
if (file == NULL)
|
||||||
{
|
|
||||||
fclose(file);
|
|
||||||
return false;
|
return false;
|
||||||
}
|
|
||||||
|
|
||||||
int filesize;
|
int filesize;
|
||||||
fseek(file, 0, SEEK_END);
|
fseek(file, 0, SEEK_END);
|
||||||
|
@ -75,6 +75,7 @@ bool neekLoadKernel (const char* nandpath)
|
|||||||
kernel = (u32 *) MEM2_alloc(fsize);
|
kernel = (u32 *) MEM2_alloc(fsize);
|
||||||
if(!kernel)
|
if(!kernel)
|
||||||
{
|
{
|
||||||
|
fclose(f);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -174,7 +174,7 @@ s32 split_read_sector(void *_fp, u32 lba, u32 count, void*buf)
|
|||||||
ret = read(fd, ptr, chunk * 512);
|
ret = read(fd, ptr, chunk * 512);
|
||||||
if (ret != chunk * 512)
|
if (ret != chunk * 512)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "error reading %u %u [%u] %u = %u\n", (unsigned int)lba, (unsigned int)count, i, (unsigned int)chunk, ret);
|
fprintf(stderr, "error reading %u %u [%i] %u = %lu\n", (unsigned int)lba, (unsigned int)count, i, (unsigned int)chunk, (unsigned long)ret);
|
||||||
split_error( "error reading disc" );
|
split_error( "error reading disc" );
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -234,7 +234,7 @@ s32 Wbfs_Fat::RemoveGame(u8 *discid)
|
|||||||
closedir(dir);
|
closedir(dir);
|
||||||
// remove game subdir
|
// remove game subdir
|
||||||
remove(path);
|
remove(path);
|
||||||
|
rmdir(path);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -79,6 +79,7 @@ const wchar_t * wfmt(const char * format, ...)
|
|||||||
if(bt > 0)
|
if(bt > 0)
|
||||||
{
|
{
|
||||||
strWChar[bt] = 0;
|
strWChar[bt] = 0;
|
||||||
|
va_end(va);
|
||||||
return (const wchar_t *) strWChar;
|
return (const wchar_t *) strWChar;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -376,9 +376,16 @@ U8NandArchive::~U8NandArchive()
|
|||||||
bool U8NandArchive::SetFile( const char* nandPath )
|
bool U8NandArchive::SetFile( const char* nandPath )
|
||||||
{
|
{
|
||||||
if(fst)
|
if(fst)
|
||||||
|
{
|
||||||
free(fst);
|
free(fst);
|
||||||
|
fst = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
if(name_table)
|
if(name_table)
|
||||||
|
{
|
||||||
free(name_table);
|
free(name_table);
|
||||||
|
name_table = NULL;
|
||||||
|
}
|
||||||
CloseFile();
|
CloseFile();
|
||||||
|
|
||||||
// open file
|
// open file
|
||||||
@ -438,9 +445,13 @@ bool U8NandArchive::SetFile( const char* nandPath )
|
|||||||
dataOffset = 0;
|
dataOffset = 0;
|
||||||
free( buffer );
|
free( buffer );
|
||||||
if( fst )
|
if( fst )
|
||||||
|
{
|
||||||
free( fst );
|
free( fst );
|
||||||
|
fst = NULL;
|
||||||
|
}
|
||||||
CloseFile();
|
CloseFile();
|
||||||
gprintf( "U8NandArchive: error reading fst\n" );
|
gprintf( "U8NandArchive: error reading fst\n" );
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// set name table pointer
|
// set name table pointer
|
||||||
|
@ -84,7 +84,6 @@ u8* DecompressAsh( const u8 *stuff, u32 &len )
|
|||||||
memset( (void*)workingBuffer, 0, 0x100000 );
|
memset( (void*)workingBuffer, 0, 0x100000 );
|
||||||
//printf("r[8] :%08X\n", r[8]);
|
//printf("r[8] :%08X\n", r[8]);
|
||||||
|
|
||||||
r[8] = r[8];
|
|
||||||
r[9] = r[8] + 0x07FE;
|
r[9] = r[8] + 0x07FE;
|
||||||
r[10] = r[9] + 0x07FE;
|
r[10] = r[9] + 0x07FE;
|
||||||
r[11] = r[10] + 0x1FFE;
|
r[11] = r[10] + 0x1FFE;
|
||||||
|
@ -462,7 +462,9 @@ int Wad::CheckContentMap(const char *installpath, tmd_content *content, char *fi
|
|||||||
content_map_size++;
|
content_map_size++;
|
||||||
|
|
||||||
map = (map_entry_t *) content_map;
|
map = (map_entry_t *) content_map;
|
||||||
sprintf(map[next_entry].name, "%08x", (unsigned int)next_entry);
|
char name[9];
|
||||||
|
sprintf(name, "%08x", (unsigned int)next_entry);
|
||||||
|
memcpy(map[next_entry].name, name, 8);
|
||||||
memcpy(map[next_entry].hash, content->hash, 20);
|
memcpy(map[next_entry].hash, content->hash, 20);
|
||||||
|
|
||||||
// write new content.map
|
// write new content.map
|
||||||
|
Loading…
Reference in New Issue
Block a user