Backup badge extdata before installing badges

This commit is contained in:
2024-06-04 22:38:19 -04:00
parent 8e876d027b
commit c2edc50750
3 changed files with 43 additions and 2 deletions

View File

@@ -287,12 +287,52 @@ int install_badge_dir(FS_DirectoryEntry set_dir, int *badge_count, int set_id)
return badges_in_set;
}
Result backup_badges(void)
{
char *badgeMng = NULL;
char *badgeData = NULL;
u32 mngRead = file_to_buf(fsMakePath(PATH_ASCII, "/BadgeMngFile.dat"), ArchiveBadgeExt, &badgeMng);
u32 dataRead = file_to_buf(fsMakePath(PATH_ASCII, "/BadgeData.dat"), ArchiveBadgeExt, &badgeData);
if (mngRead != BADGE_MNG_SIZE || dataRead != BADGE_DATA_SIZE)
{
throw_error(language.badges.extdata_locked, ERROR_LEVEL_WARNING);
if (badgeMng) free(badgeMng);
if (badgeData) free(badgeData);
return -1;
}
remake_file(fsMakePath(PATH_ASCII, "/3ds/Anemone3DS/BadgeMngFile.dat"), ArchiveSD, mngRead);
remake_file(fsMakePath(PATH_ASCII, "/3ds/Anemone3DS/BadgeData.dat"), ArchiveSD, dataRead);
Result res = buf_to_file(mngRead, fsMakePath(PATH_ASCII, "/3ds/Anemone3DS/BadgeMngFile.dat"), ArchiveSD, badgeMng);
if (R_FAILED(res))
{
free(badgeMng);
free(badgeData);
return -1;
}
res = buf_to_file(dataRead, fsMakePath(PATH_ASCII, "/3ds/Anemone3DS/BadgeData.dat"), ArchiveSD, badgeData);
if (R_FAILED(res))
{
free(badgeMng);
free(badgeData);
return -1;
}
return 0;
}
Result install_badges(void)
{
Handle handle = 0;
Handle folder = 0;
Result res = 0;
res = backup_badges();
if (R_FAILED(res))
{
DEBUG("Backup badges failed\n");
return res;
}
res = actInit();
if (R_FAILED(res))
{

View File

@@ -280,7 +280,8 @@ void fill_buffers(audio_s *audio)
if (!audio->is_looping && audio->current_block == audio->loop_end)
{
// stop playing
audio->stop = true;
return;
}
for (u8 channelIndex = 0; channelIndex < audio->channel_count; ++channelIndex)