through sub_81D1914

This commit is contained in:
PikalaxALT 2018-03-02 21:43:18 -05:00
parent d25a9ffe16
commit e3b078d08f
2 changed files with 61 additions and 87 deletions

View File

@ -5,88 +5,6 @@
.text .text
thumb_func_start sub_81D189C
sub_81D189C: @ 81D189C
push {r4,r5,lr}
adds r5, r1, 0
cmp r0, 0x14
bhi _081D18C2
ldr r1, =gUnknown_086252A8
lsls r0, 2
adds r0, r1
ldr r4, [r0]
adds r0, r4, 0
bl sub_81D1574
ldr r1, =gUnknown_08625360
lsls r0, 2
adds r0, r1
ldr r2, [r0]
adds r0, r4, 0
adds r1, r5, 0
bl _call_via_r2
_081D18C2:
pop {r4,r5}
pop {r0}
bx r0
.pool
thumb_func_end sub_81D189C
thumb_func_start sub_81D18D0
sub_81D18D0: @ 81D18D0
push {lr}
ldr r0, [r0, 0xC]
bl sub_81D1920
pop {r0}
bx r0
thumb_func_end sub_81D18D0
thumb_func_start sub_81D18DC
sub_81D18DC: @ 81D18DC
push {lr}
adds r3, r0, 0
adds r2, r1, 0
ldrb r0, [r3]
cmp r0, 0x5
beq _081D18F0
ldr r0, [r3, 0x10]
bl sub_81D1920
b _081D18F8
_081D18F0:
ldr r0, [r3, 0x10]
ldrh r1, [r3, 0x4]
bl sub_81D199C
_081D18F8:
pop {r0}
bx r0
thumb_func_end sub_81D18DC
thumb_func_start sub_81D18FC
sub_81D18FC: @ 81D18FC
push {lr}
ldr r0, [r0, 0xC]
bl sub_81D1920
pop {r0}
bx r0
thumb_func_end sub_81D18FC
thumb_func_start sub_81D1908
sub_81D1908: @ 81D1908
push {lr}
ldr r0, [r0, 0xC]
bl sub_81D1920
pop {r0}
bx r0
thumb_func_end sub_81D1908
thumb_func_start sub_81D1914
sub_81D1914: @ 81D1914
push {lr}
adds r0, r1, 0
bl sub_8197080
pop {r0}
bx r0
thumb_func_end sub_81D1914
thumb_func_start sub_81D1920 thumb_func_start sub_81D1920
sub_81D1920: @ 81D1920 sub_81D1920: @ 81D1920
push {r4-r7,lr} push {r4-r7,lr}

View File

@ -8,11 +8,11 @@
// Static type declarations // Static type declarations
struct MatchCallSusbtruct0 { typedef struct MatchCallSusbtruct0 {
const u8 *text; const u8 *text;
u16 v4; u16 v4;
u16 v6; u16 v6;
}; } match_call_sub0_t;
struct MatchCallStructCommon { struct MatchCallStructCommon {
u8 type; u8 type;
@ -26,7 +26,7 @@ struct MatchCallStruct0 {
u16 flag; u16 flag;
const u8 *v4; const u8 *v4;
const u8 *v8; const u8 *v8;
const struct MatchCallSusbtruct0 *vC; const match_call_sub0_t *vC;
}; };
struct MatchCallStruct1 { struct MatchCallStruct1 {
@ -34,6 +34,8 @@ struct MatchCallStruct1 {
u8 v1; u8 v1;
u16 flag; u16 flag;
u16 v4; u16 v4;
u8 fill6[10];
const match_call_sub0_t *v10;
}; };
struct MatchCallSubstruct2 { struct MatchCallSubstruct2 {
@ -47,7 +49,7 @@ struct MatchCallStruct2 {
u16 flag; u16 flag;
u16 v4; u16 v4;
const u8 *v8; const u8 *v8;
const u8 *vC; const match_call_sub0_t *vC;
const struct MatchCallSubstruct2 *v10; const struct MatchCallSubstruct2 *v10;
}; };
@ -65,7 +67,15 @@ struct MatchCallStruct4 {
u16 flag; u16 flag;
const u8 *v4; const u8 *v4;
const u8 *v8; const u8 *v8;
const struct MatchCallSusbtruct0 *vC; const match_call_sub0_t *vC;
};
struct MatchCallStruct5 {
u8 type;
u8 v1;
u16 flag;
u8 fill4[12];
const match_call_sub0_t *v10;
}; };
typedef union { typedef union {
@ -75,6 +85,7 @@ typedef union {
struct MatchCallStruct2 *type2; struct MatchCallStruct2 *type2;
struct MatchCallStruct3 *type3; struct MatchCallStruct3 *type3;
struct MatchCallStruct4 *type4; struct MatchCallStruct4 *type4;
struct MatchCallStruct5 *type5;
} match_call_t; } match_call_t;
struct UnkStruct_08625388 { struct UnkStruct_08625388 {
@ -91,6 +102,10 @@ struct UnkStruct_08625388 {
// Static ROM declarations // Static ROM declarations
void sub_81D1920(const match_call_sub0_t *, u8 *);
void sub_81D199C(const match_call_sub0_t *, u16, u8 *);
void sub_8197080(u8 *);
// .rodata // .rodata
extern const match_call_t gUnknown_086252A8[]; extern const match_call_t gUnknown_086252A8[];
@ -100,6 +115,7 @@ extern bool32 (*const gUnknown_08625324[])(const match_call_t);
extern bool32 (*const gUnknown_08625338[])(const match_call_t); extern bool32 (*const gUnknown_08625338[])(const match_call_t);
extern const struct UnkStruct_08625388 gUnknown_08625388[]; extern const struct UnkStruct_08625388 gUnknown_08625388[];
extern u32 (*const gUnknown_0862534C[])(const match_call_t); extern u32 (*const gUnknown_0862534C[])(const match_call_t);
extern void (*const gUnknown_08625360[])(const match_call_t, u8 *);
// .text // .text
@ -349,3 +365,43 @@ u32 sub_81D1898(match_call_t matchCall)
{ {
return ARRAY_COUNT(gRematchTable); return ARRAY_COUNT(gRematchTable);
} }
void sub_81D189C(u32 idx, u8 *dest)
{
match_call_t matchCall;
u32 i;
if (idx > 20)
return;
matchCall = gUnknown_086252A8[idx];
i = sub_81D1574(matchCall);
gUnknown_08625360[i](matchCall, dest);
}
void sub_81D18D0(match_call_t matchCall, u8 *dest)
{
sub_81D1920(matchCall.type0->vC, dest);
}
void sub_81D18DC(match_call_t matchCall, u8 *dest)
{
if (matchCall.common->type != 5)
sub_81D1920(matchCall.type5->v10, dest);
else
sub_81D199C(matchCall.type1->v10, matchCall.type1->v4, dest);
}
void sub_81D18FC(match_call_t matchCall, u8 *dest)
{
sub_81D1920(matchCall.type2->vC, dest);
}
void sub_81D1908(match_call_t matchCall, u8 *dest)
{
sub_81D1920(matchCall.type4->vC, dest);
}
void sub_81D1914(match_call_t matchCall, u8 *dest)
{
sub_8197080(dest);
}