Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions include/ui_strings.h
Original file line number Diff line number Diff line change
Expand Up @@ -193,4 +193,8 @@ typedef enum {
Language_s init_strings(CFG_Language lang);
extern Language_s language;

// fetches the system language through CFGU_GetSystemLanguage
// and returns the appropriate CFG_Language enum value
CFG_Language get_system_language(void);

#endif
58 changes: 6 additions & 52 deletions source/badges.c
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@
#include "draw.h"
#include "ui_strings.h"

static Handle actHandle;
Handle badgeDataHandle;
char *badgeMngBuffer;
u16 *rgb_buf_64x64;
Expand All @@ -42,51 +41,6 @@ u8 *alpha_buf_32x32;
u64 progress_finish;
u64 progress_status;

Result actInit(void)
{
return srvGetServiceHandle(&actHandle, "act:u");
}

Result actExit(void)
{
return svcCloseHandle(actHandle);
}

Result ACTU_Initialize(u32 sdkVersion, u32 memSize, Handle handle)
{
Result ret = 0;
u32 *cmdbuf = getThreadCommandBuffer();

cmdbuf[0] = 0x00010084;
cmdbuf[1] = sdkVersion;
cmdbuf[2] = memSize;
cmdbuf[3] = 0x20;
cmdbuf[4] = 0x0;
cmdbuf[5] = 0x0;
cmdbuf[6] = handle;

if ((ret = svcSendSyncRequest(actHandle)) != 0) return ret;

return (Result) cmdbuf[1];
}

Result ACTU_GetAccountDataBlock(u32 slot, u32 size, u32 blockId, u32 *output)
{
Result ret = 0;
u32 *cmdbuf = getThreadCommandBuffer();
cmdbuf[0] = 0x000600C2;
cmdbuf[1] = slot;
cmdbuf[2] = size;
cmdbuf[3] = blockId;
cmdbuf[4] = (size << 4) | 12;
cmdbuf[5] = (u32) output;

if ((ret = svcSendSyncRequest(actHandle)) != 0) return ret;

return (Result) cmdbuf[1];
}


void remove_exten(u16 *filename)
{
for (int i = 0; i < strulen(filename, 0x8A); ++i)
Expand Down Expand Up @@ -575,27 +529,27 @@ Result install_badges(void)
if (handle) FSFILE_Close(handle);

DEBUG("Initializing ACT\n");
res = actInit();
res = actInit(true);
if (R_FAILED(res))
{
DEBUG("actInit() failed!\n");
return res;
}

DEBUG("Initializing ACTU\n");
res = ACTU_Initialize(0xB0502C8, 0, 0);
DEBUG("Initializing ACT\n");
res = ACT_Initialize(0xB0502C8, 0, 0);
if (R_FAILED(res))
{
DEBUG("ACTU_Initialize failed! %08lx\n", res);
DEBUG("ACT_Initialize failed! %08lx\n", res);
return res;
}

DEBUG("Getting NNID\n");
u32 nnidNum = 0xFFFFFFFF;
res = ACTU_GetAccountDataBlock(0xFE, 4, 12, &nnidNum);
res = ACT_GetAccountInfo(&nnidNum, sizeof(nnidNum), ACT_DEFAULT_ACCOUNT, INFO_TYPE_PRINCIPAL_ID);
if (R_FAILED(res))
{
DEBUG("ACTU_GetAccountDataBlock failed! %08lx\n", res);
DEBUG("ACT_GetAccountInfo failed! %08lx\n", res);
return res;
}
DEBUG("NNID found: 0x%08lx\n", nnidNum);
Expand Down
3 changes: 1 addition & 2 deletions source/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -381,8 +381,7 @@ int main(void)
{
srand(time(NULL));
init_services();
CFG_Language lang;
CFGU_GetSystemLanguage(&lang);
const CFG_Language lang = get_system_language();
language = init_strings(lang);
init_screens();

Expand Down
9 changes: 9 additions & 0 deletions source/ui_strings.c
Original file line number Diff line number Diff line change
Expand Up @@ -2086,3 +2086,12 @@ Language_s init_strings(CFG_Language lang)
return language_english;
}
}

CFG_Language get_system_language(void)
{
u8 lang = CFG_LANGUAGE_EN;
// can never fail, cfguInit is one of the very first thing that happens on start
// and if it does anyway, default to english
CFGU_GetSystemLanguage(&lang);
return (CFG_Language)lang;
}