diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2018-03-03 13:41:28 -0500 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2018-03-03 13:41:28 -0500 |
commit | 30c20bbab63f4d78e4500bcc9a0e056a491faaff (patch) | |
tree | fc21ae5053ffebdd579397ae98d8694da66ff068 /src | |
parent | 19a89f2362f06130e765805e4564d6c8ddcfc688 (diff) |
through sub_81D1B00
Diffstat (limited to 'src')
-rw-r--r-- | src/match_call.c | 55 |
1 files changed, 53 insertions, 2 deletions
diff --git a/src/match_call.c b/src/match_call.c index fd92d8a9a..85cc34307 100644 --- a/src/match_call.c +++ b/src/match_call.c @@ -36,7 +36,8 @@ struct MatchCallStruct1 { u8 v1; u16 flag; u16 v4; - u8 fill6[10]; + const u8 *v8; + const u8 *vC; const match_call_sub0_t *v10; }; @@ -76,7 +77,9 @@ struct MatchCallStruct5 { u8 type; u8 v1; u16 flag; - u8 fill4[12]; + u16 v4; + const u8 *v8; + const u8 *vC; const match_call_sub0_t *v10; }; @@ -107,6 +110,7 @@ struct UnkStruct_08625388 { void sub_81D1920(const match_call_sub0_t *, u8 *); void sub_81D199C(const match_call_sub0_t *, u16, u8 *); void sub_8197080(u8 *); +void sub_81D1B0C(u32, const u8 **, const u8 **); // .rodata @@ -118,6 +122,7 @@ extern bool32 (*const gUnknown_08625338[])(const match_call_t); extern const struct UnkStruct_08625388 gUnknown_08625388[]; extern u32 (*const gUnknown_0862534C[])(const match_call_t); extern void (*const gUnknown_08625360[])(const match_call_t, u8 *); +extern void (*const gUnknown_08625374[])(const match_call_t, const u8 **, const u8 **); // .text @@ -569,3 +574,49 @@ ASM_DIRECT void sub_81D199C(const match_call_sub0_t *sub0, u16 idx, u8 *dest) "\t.pool"); } #endif + +void sub_81D1A78(u32 idx, const u8 **a1, const u8 **a2) +{ + match_call_t matchCall; + u32 i; + + if (idx > 20) + return; + matchCall = gUnknown_086252A8[idx]; + i = sub_81D1574(matchCall); + gUnknown_08625374[i](matchCall, a1, a2); +} + +void sub_81D1AB0(match_call_t matchCall, const u8 **a1, const u8 **a2) +{ + *a1 = matchCall.type0->v4; + *a2 = matchCall.type0->v8; +} + +void sub_81D1ABC(match_call_t matchCall, const u8 **a1, const u8 **a2) +{ + match_call_t _matchCall = matchCall; + if (_matchCall.type1->vC == NULL) + sub_81D1B0C(_matchCall.type1->v4, a1, a2); + else + *a2 = _matchCall.type1->vC; + *a1 = _matchCall.type1->v8; +} + +void sub_81D1ADC(match_call_t matchCall, const u8 **a1, const u8 **a2) +{ + sub_81D1B0C(matchCall.type2->v4, a1, a2); + *a1 = matchCall.type2->v8; +} + +void sub_81D1AF4(match_call_t matchCall, const u8 **a1, const u8 **a2) +{ + *a1 = matchCall.type0->v4; + *a2 = matchCall.type0->v8; +} + +void sub_81D1B00(match_call_t matchCall, const u8 **a1, const u8 **a2) +{ + *a1 = matchCall.type0->v4; + *a2 = matchCall.type0->v8; +} |