fix build on new libctru and add lang fetch (#358)
removes ACT functions now in libctru implement a single function to load a CFG_Language
This commit is contained in:
@@ -193,4 +193,8 @@ typedef enum {
|
|||||||
Language_s init_strings(CFG_Language lang);
|
Language_s init_strings(CFG_Language lang);
|
||||||
extern Language_s language;
|
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
|
#endif
|
||||||
|
|||||||
@@ -32,7 +32,6 @@
|
|||||||
#include "draw.h"
|
#include "draw.h"
|
||||||
#include "ui_strings.h"
|
#include "ui_strings.h"
|
||||||
|
|
||||||
static Handle actHandle;
|
|
||||||
Handle badgeDataHandle;
|
Handle badgeDataHandle;
|
||||||
char *badgeMngBuffer;
|
char *badgeMngBuffer;
|
||||||
u16 *rgb_buf_64x64;
|
u16 *rgb_buf_64x64;
|
||||||
@@ -42,51 +41,6 @@ u8 *alpha_buf_32x32;
|
|||||||
u64 progress_finish;
|
u64 progress_finish;
|
||||||
u64 progress_status;
|
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)
|
void remove_exten(u16 *filename)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < strulen(filename, 0x8A); ++i)
|
for (int i = 0; i < strulen(filename, 0x8A); ++i)
|
||||||
@@ -575,27 +529,27 @@ Result install_badges(void)
|
|||||||
if (handle) FSFILE_Close(handle);
|
if (handle) FSFILE_Close(handle);
|
||||||
|
|
||||||
DEBUG("Initializing ACT\n");
|
DEBUG("Initializing ACT\n");
|
||||||
res = actInit();
|
res = actInit(true);
|
||||||
if (R_FAILED(res))
|
if (R_FAILED(res))
|
||||||
{
|
{
|
||||||
DEBUG("actInit() failed!\n");
|
DEBUG("actInit() failed!\n");
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
DEBUG("Initializing ACTU\n");
|
DEBUG("Initializing ACT\n");
|
||||||
res = ACTU_Initialize(0xB0502C8, 0, 0);
|
res = ACT_Initialize(0xB0502C8, 0, 0);
|
||||||
if (R_FAILED(res))
|
if (R_FAILED(res))
|
||||||
{
|
{
|
||||||
DEBUG("ACTU_Initialize failed! %08lx\n", res);
|
DEBUG("ACT_Initialize failed! %08lx\n", res);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
DEBUG("Getting NNID\n");
|
DEBUG("Getting NNID\n");
|
||||||
u32 nnidNum = 0xFFFFFFFF;
|
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))
|
if (R_FAILED(res))
|
||||||
{
|
{
|
||||||
DEBUG("ACTU_GetAccountDataBlock failed! %08lx\n", res);
|
DEBUG("ACT_GetAccountInfo failed! %08lx\n", res);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
DEBUG("NNID found: 0x%08lx\n", nnidNum);
|
DEBUG("NNID found: 0x%08lx\n", nnidNum);
|
||||||
|
|||||||
@@ -381,8 +381,7 @@ int main(void)
|
|||||||
{
|
{
|
||||||
srand(time(NULL));
|
srand(time(NULL));
|
||||||
init_services();
|
init_services();
|
||||||
CFG_Language lang;
|
const CFG_Language lang = get_system_language();
|
||||||
CFGU_GetSystemLanguage(&lang);
|
|
||||||
language = init_strings(lang);
|
language = init_strings(lang);
|
||||||
init_screens();
|
init_screens();
|
||||||
|
|
||||||
|
|||||||
@@ -2086,3 +2086,12 @@ Language_s init_strings(CFG_Language lang)
|
|||||||
return language_english;
|
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;
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user