Skip to content

Commit c20e2bf

Browse files
authored
Merge pull request #20 from TraceEntertains/main
Fix touchscreen button select bug and use FRD instead of ACT for account detection to make it simpler
2 parents 69638a8 + 5704a55 commit c20e2bf

File tree

3 files changed

+48
-49
lines changed

3 files changed

+48
-49
lines changed

app/source/frda.c

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,18 @@ Result FRDA_CreateLocalAccount(u8 localAccountId, NascEnvironment nascEnvironmen
5757
return (Result)cmdbuf[1];
5858
}
5959

60+
Result FRDA_GetLocalAccountId(u8 *localAccountId) {
61+
Result ret = 0;
62+
u32 *cmdbuf = getThreadCommandBuffer();
63+
cmdbuf[0] = IPC_MakeHeader(0xB, 2, 0);
64+
65+
if (R_FAILED(ret = svcSendSyncRequest(frdHandle))) return ret;
66+
67+
*localAccountId = (u8)cmdbuf[2];
68+
69+
return (Result)cmdbuf[1];
70+
}
71+
6072
Result FRDA_SetLocalAccountId(u8 localAccountId) {
6173
Result ret = 0;
6274
u32 *cmdbuf = getThreadCommandBuffer();
@@ -82,4 +94,4 @@ Result FRDA_SetClientSdkVersion(u32 sdkVer) {
8294
return ret;
8395

8496
return (Result)cmdbuf[1];
85-
}
97+
}

app/source/frda.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,10 @@ Result frdAInit();
1717
void frdAExit();
1818
Handle *frdAGetSessionHandle();
1919
Result FRDA_CreateLocalAccount(u8 localAccountId, NascEnvironment nascEnvironment, u8 serverTypeField1, u8 serverTypeField2);
20+
Result FRDA_GetLocalAccountId(u8 *localAccountId);
2021
Result FRDA_SetLocalAccountId(u8 localAccountId);
2122
Result FRDA_SetClientSdkVersion(u32 sdkVer);
2223

2324
#ifdef __cplusplus
2425
}
25-
#endif
26+
#endif

app/source/main.c

Lines changed: 33 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,29 @@
2222
printf("%s error: %08lx\n\n", name, rc); \
2323
}
2424

25+
26+
C2D_Sprite debug_button;
27+
C2D_Sprite debug_header;
28+
C2D_Sprite go_back;
29+
C2D_Sprite header;
30+
C2D_Sprite nintendo_deselected;
31+
C2D_Sprite nintendo_btn_selected;
32+
C2D_Sprite nintendo_selected;
33+
C2D_Sprite nintendo_loaded_deselected;
34+
C2D_Sprite pretendo_deselected;
35+
C2D_Sprite pretendo_btn_selected;
36+
C2D_Sprite pretendo_selected;
37+
C2D_Sprite pretendo_loaded_deselected;
38+
C2D_Sprite top;
39+
40+
C2D_TextBuf g_staticBuf;
41+
C2D_TextBuf g_dynamicBuf;
42+
43+
u32 screen = 0;
44+
45+
Account buttonSelected;
46+
Account currentEnv;
47+
2548
/**
2649
* Switches the friends and act accounts.
2750
*
@@ -36,6 +59,9 @@ Result switchAccounts(Account friend_account_id) {
3659
return rc;
3760
}
3861

62+
currentEnv = friend_account_id;
63+
buttonSelected = currentEnv;
64+
3965
u32 act_account_index = 0;
4066
handleResult(ACTA_GetAccountIndexOfFriendAccountId(&act_account_index, friend_account_id), "Get persistent id for creation");
4167

@@ -63,29 +89,6 @@ Result createAccount(Account friend_account_id) {
6389
return rc;
6490
}
6591

66-
C2D_Sprite debug_button;
67-
C2D_Sprite debug_header;
68-
C2D_Sprite go_back;
69-
C2D_Sprite header;
70-
C2D_Sprite nintendo_deselected;
71-
C2D_Sprite nintendo_btn_selected;
72-
C2D_Sprite nintendo_selected;
73-
C2D_Sprite nintendo_loaded_deselected;
74-
C2D_Sprite pretendo_deselected;
75-
C2D_Sprite pretendo_btn_selected;
76-
C2D_Sprite pretendo_selected;
77-
C2D_Sprite pretendo_loaded_deselected;
78-
C2D_Sprite top;
79-
80-
C2D_TextBuf g_staticBuf;
81-
C2D_TextBuf g_dynamicBuf;
82-
83-
u32 current_persistent_id = 0;
84-
u32 screen = 0;
85-
86-
u32 act_account_count = 0;
87-
u32 current_account = 0;
88-
8992
static void sceneInit(void)
9093
{
9194
C2D_SpriteSheet spriteSheet = C2D_SpriteSheetLoadFromMem(sheet_t3x, sheet_t3x_size);
@@ -139,22 +142,6 @@ int main()
139142
C2D_Init(C2D_DEFAULT_MAX_OBJECTS);
140143
C2D_Prepare();
141144

142-
u32 rc = 0;
143-
144-
u32 act_account_index = 0;
145-
u32 current_persistent_id = 0;
146-
u32 pretendo_persistent_id = 0;
147-
handleResult(ACTA_GetAccountIndexOfFriendAccountId(&act_account_index, 2), "Get persistent id for Pretendo");
148-
handleResult(ACTA_GetPersistentId(&current_persistent_id, ACT_CURRENT_ACCOUNT), "Current persistent id");
149-
handleResult(ACTA_GetPersistentId(&pretendo_persistent_id, act_account_index), "Current persistent id");
150-
151-
if (current_persistent_id == pretendo_persistent_id) {
152-
current_account = 1;
153-
}
154-
else {
155-
current_account = 0;
156-
}
157-
158145
// This version or higher is required creating/swapping friend accounts
159146
FRDA_SetClientSdkVersion(0x70000c8);
160147

@@ -165,9 +152,8 @@ int main()
165152
// Initialize the scene
166153
sceneInit();
167154

168-
ACTA_GetAccountCount(&act_account_count);
169-
170-
Account buttonSelected = (Account)(current_account + 1);
155+
FRDA_GetLocalAccountId(&currentEnv);
156+
buttonSelected = currentEnv;
171157

172158
// Main loop
173159
while (aptMainLoop()) {
@@ -179,14 +165,14 @@ int main()
179165

180166
if (kDown & KEY_TOUCH) {
181167
if ((touch.px >= 165 && touch.px <= 165 + 104) && (touch.py >= 59 && touch.py <= 59 + 113)) {
168+
buttonSelected = Nintendo;
182169
switchAccounts(buttonSelected);
183170
needsReboot = true;
184171
break;
185172
}
186173
else if ((touch.px >= 49 && touch.px <= 49 + 104) && (touch.py >= 59 && touch.py <= 59 + 113)) {
187-
if (switchAccounts(buttonSelected)) {
188-
createAccount(buttonSelected);
189-
}
174+
buttonSelected = Pretendo;
175+
if (switchAccounts(buttonSelected)) createAccount(buttonSelected);
190176
needsReboot = true;
191177
break;
192178
}
@@ -204,7 +190,7 @@ int main()
204190
C2D_SceneBegin(bottom_screen);
205191
if (screen == 0) {
206192
if (buttonSelected == Nintendo) {
207-
if (current_account == NASC_ENV_Prod) {
193+
if (currentEnv == Nintendo) {
208194
C2D_DrawSprite(&nintendo_selected);
209195
C2D_DrawSprite(&pretendo_deselected);
210196
}
@@ -214,7 +200,7 @@ int main()
214200
}
215201
}
216202
else if (buttonSelected == Pretendo) {
217-
if (current_account == NASC_ENV_Test) {
203+
if (currentEnv == Pretendo) {
218204
C2D_DrawSprite(&nintendo_deselected);
219205
C2D_DrawSprite(&pretendo_selected);
220206
}

0 commit comments

Comments
 (0)