summaryrefslogtreecommitdiff
path: root/arm9/src/unk_020337E8.c
blob: 856ba3b824ecd2426b3203a1b0070a49d9875fa2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include "unk_020337E8.h"
#include "heap.h"

extern struct DWC_Struct *FUN_020286EC(struct SaveBlock2 *sav2);
extern struct DWC_Struct *FUN_02028228(struct DWC_Struct *);

// DWC_init
extern s32 DWC_Init(s32);

// DWC_account
extern void DWC_CreateExchangeToken(struct DWC_Struct *, struct DWC_token *);
extern void DWC_CreateUserData(struct DWC_Struct *, s32);
extern void DWC_ClearDirtyFlag(struct DWC_Struct *);
extern BOOL DWC_CheckHasProfile(struct DWC_Struct *);
extern BOOL DWC_CheckValidConsole(struct DWC_Struct *);
extern BOOL DWC_CheckUserData(struct DWC_Struct *);
extern s32 DWC_GetGsProfileId(struct DWC_Struct *, struct DWC_token *);

THUMB_FUNC s32 FUN_020337E8(u32 heap_id)
{
    s32 ret = (s32)AllocFromHeap(heap_id, 0x720);
    s32 ret1 = DWC_Init((ret + 0x1F) & ~0x1F);
    FreeToHeap((void*)ret);
    return ret1;
}

THUMB_FUNC void FUN_0203380C(struct DWC_Struct *dwc)
{
    struct DWC_Struct * dwc1 = FUN_02028228(dwc);
    if(!DWC_CheckUserData(dwc1))
    {
        DWC_CreateUserData(dwc1, 0x4144414A);
        DWC_ClearDirtyFlag(dwc1);
    }
}

THUMB_FUNC s32 FUN_02033830(struct DWC_Struct *dwc)
{
    struct DWC_token token;

    struct DWC_Struct * dwc1 = FUN_02028228(dwc);
    DWC_CreateExchangeToken(dwc1, &token);
    return DWC_GetGsProfileId(dwc1, &token);
}

THUMB_FUNC BOOL FUN_0203384C(struct SaveBlock2 *sav2)
{
    struct DWC_Struct * dwc = FUN_02028228(FUN_020286EC(sav2));
    return (DWC_CheckHasProfile(dwc) && DWC_CheckValidConsole(dwc));
}