From 0cc31baaeafb39f04a8a6141cf493f07ab63144e Mon Sep 17 00:00:00 2001 From: Subv Date: Fri, 21 Nov 2014 22:40:23 -0500 Subject: [PATCH] Added more cfg:u functions GetRegionCanadaUSA GetModelNintendo2DS GetCountryCodeString --- libctru/include/3ds/services/cfgu.h | 4 ++ libctru/source/services/cfgu.c | 58 +++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+) diff --git a/libctru/include/3ds/services/cfgu.h b/libctru/include/3ds/services/cfgu.h index 9a9eefd..036e7d2 100644 --- a/libctru/include/3ds/services/cfgu.h +++ b/libctru/include/3ds/services/cfgu.h @@ -3,4 +3,8 @@ Result initCfgu(void); Result exitCfgu(void); +Result CFGU_GetRegionCanadaUSA(u8* value); Result CFGU_GetSystemModel(u8* model); +Result CFGU_GetModelNintendo2DS(u8* value); +Result CFGU_GetCountryCodeString(u16 code, u16* string); +Result CFGU_GetCountryCodeID(u16 string, u16* code); diff --git a/libctru/source/services/cfgu.c b/libctru/source/services/cfgu.c index 5b43607..14ac5c4 100644 --- a/libctru/source/services/cfgu.c +++ b/libctru/source/services/cfgu.c @@ -16,6 +16,20 @@ Result exitCfgu() return ret; } +Result CFGU_GetRegionCanadaUSA(u8* value) +{ + Result ret = 0; + u32 *cmdbuf = getThreadCommandBuffer(); + + cmdbuf[0] = 0x00040000; + + if((ret = svcSendSyncRequest(CFGU_handle))!=0)return ret; + + *value = (u8)cmdbuf[2]; + + return (Result)cmdbuf[1]; +} + Result CFGU_GetSystemModel(u8* model) { Result ret = 0; @@ -29,3 +43,47 @@ Result CFGU_GetSystemModel(u8* model) return (Result)cmdbuf[1]; } + +Result CFGU_GetModelNintendo2DS(u8* value) +{ + Result ret = 0; + u32 *cmdbuf = getThreadCommandBuffer(); + + cmdbuf[0] = 0x00060000; + + if((ret = svcSendSyncRequest(CFGU_handle))!=0)return ret; + + *value = (u8)cmdbuf[2]; + + return (Result)cmdbuf[1]; +} + +Result CFGU_GetCountryCodeString(u16 code, u16* string) +{ + Result ret = 0; + u32 *cmdbuf = getThreadCommandBuffer(); + + cmdbuf[0] = 0x00090040; + cmdbuf[1] = (u32)code; + + if((ret = svcSendSyncRequest(CFGU_handle))!=0)return ret; + + *string = (u16)cmdbuf[2]; + + return (Result)cmdbuf[1]; +} + +Result CFGU_GetCountryCodeID(u16 string, u16* code) +{ + Result ret = 0; + u32 *cmdbuf = getThreadCommandBuffer(); + + cmdbuf[0] = 0x000A0040; + cmdbuf[1] = (u32)string; + + if((ret = svcSendSyncRequest(CFGU_handle))!=0)return ret; + + *code = (u16)cmdbuf[2]; + + return (Result)cmdbuf[1]; +}