Properly dump badges without an associated set
This commit is contained in:
@@ -335,7 +335,14 @@ void free_list(SetNode *head)
|
|||||||
SetNode * extract_sets(char *badgeMngBuffer, Handle backupDataHandle)
|
SetNode * extract_sets(char *badgeMngBuffer, Handle backupDataHandle)
|
||||||
{
|
{
|
||||||
u32 setCount = *((u32 *) (badgeMngBuffer + 0x4));
|
u32 setCount = *((u32 *) (badgeMngBuffer + 0x4));
|
||||||
if (setCount == 0) return NULL;
|
|
||||||
|
if (!setCount) // GYTB? make unknown set
|
||||||
|
{
|
||||||
|
u16 set_path[256] = {0};
|
||||||
|
struacat(set_path, "/3ds/" APP_TITLE "/BadgeBackups/Unknown Set");
|
||||||
|
FSUSER_CreateDirectory(ArchiveSD, fsMakePath(PATH_UTF16, set_path), FS_ATTRIBUTE_DIRECTORY);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
SetNode *head = calloc(1, sizeof(SetNode));
|
SetNode *head = calloc(1, sizeof(SetNode));
|
||||||
SetNode *cursor = head;
|
SetNode *cursor = head;
|
||||||
@@ -441,7 +448,7 @@ Result extract_badges(void)
|
|||||||
{
|
{
|
||||||
u32 set_index = get_set_index(head, badgeSetId);
|
u32 set_index = get_set_index(head, badgeSetId);
|
||||||
if (set_index == 0xFFFFFFFF) {
|
if (set_index == 0xFFFFFFFF) {
|
||||||
sprintf(dir, "/3ds" APP_TITLE "/BadgeBackups/Unknown Set");
|
sprintf(dir, "/3ds/" APP_TITLE "/BadgeBackups/Unknown Set");
|
||||||
} else
|
} else
|
||||||
{
|
{
|
||||||
u16 utf16SetName[0x46] = {0};
|
u16 utf16SetName[0x46] = {0};
|
||||||
@@ -454,6 +461,9 @@ Result extract_badges(void)
|
|||||||
DEBUG("UTF-8 Set Name: %s; ID: %lx\n", utf8SetName, badgeSetId);
|
DEBUG("UTF-8 Set Name: %s; ID: %lx\n", utf8SetName, badgeSetId);
|
||||||
sprintf(dir, "/3ds/" APP_TITLE "/BadgeBackups/%s", utf8SetName);
|
sprintf(dir, "/3ds/" APP_TITLE "/BadgeBackups/%s", utf8SetName);
|
||||||
}
|
}
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
sprintf(dir, "/3ds/" APP_TITLE "/BadgeBackups/Unknown Set");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (shortcut == 0xFFFFFFFF)
|
if (shortcut == 0xFFFFFFFF)
|
||||||
|
|||||||
Reference in New Issue
Block a user