Finish rfu_union_tool decomp

This commit is contained in:
PikalaxALT
2020-01-22 13:47:30 -05:00
parent 401276242a
commit c4626ec296
5 changed files with 98 additions and 262 deletions
@@ -5,266 +5,6 @@
.text
thumb_func_start sub_811BE6C
sub_811BE6C: @ 811BE6C
push {r4,r5,lr}
adds r5, r0, 0
bl sub_811B90C
movs r4, 0
_0811BE76:
adds r0, r5, 0
adds r1, r4, 0
bl sub_811BC68
adds r4, 0x1
cmp r4, 0x4
ble _0811BE76
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_811BE6C
thumb_func_start sub_811BE8C
sub_811BE8C: @ 811BE8C
push {r4,r5,lr}
ldr r2, _0811BEAC @ =gUnknown_203B088
movs r1, 0
str r1, [r2]
movs r5, 0
ldr r4, [r0]
_0811BE98:
ldrb r0, [r4, 0x1A]
movs r1, 0x3
ands r1, r0
cmp r1, 0x1
bne _0811BEB0
adds r0, r5, 0
adds r1, r4, 0
bl sub_811BDA8
b _0811BEBC
.align 2, 0
_0811BEAC: .4byte gUnknown_203B088
_0811BEB0:
cmp r1, 0x2
bne _0811BEBC
adds r0, r5, 0
adds r1, r4, 0
bl sub_811BE6C
_0811BEBC:
adds r4, 0x20
adds r5, 0x1
cmp r5, 0x7
ble _0811BE98
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_811BE8C
thumb_func_start sub_811BECC
sub_811BECC: @ 811BECC
ldr r1, _0811BED8 @ =gUnknown_203B088
movs r0, 0x96
lsls r0, 1
str r0, [r1]
bx lr
.align 2, 0
_0811BED8: .4byte gUnknown_203B088
thumb_func_end sub_811BECC
thumb_func_start sub_811BEDC
sub_811BEDC: @ 811BEDC
push {lr}
adds r2, r0, 0
ldr r0, _0811BEFC @ =gUnknown_203B088
ldr r1, [r0]
adds r1, 0x1
str r1, [r0]
movs r0, 0x96
lsls r0, 1
cmp r1, r0
bls _0811BEF6
adds r0, r2, 0
bl sub_811BE8C
_0811BEF6:
pop {r0}
bx r0
.align 2, 0
_0811BEFC: .4byte gUnknown_203B088
thumb_func_end sub_811BEDC
thumb_func_start sub_811BF00
sub_811BF00: @ 811BF00
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x18
adds r5, r0, 0
str r1, [sp, 0x4]
str r2, [sp, 0x8]
bl is_walking_or_running
cmp r0, 0
bne _0811BF48
b _0811BFEE
_0811BF1C:
ldr r4, _0811BF44 @ =gUnknown_8457116
bl GetPlayerFacingDirection
lsls r0, 24
lsrs r0, 24
adds r0, r4
ldrb r2, [r0]
adds r0, r6, 0
ldr r1, [sp, 0xC]
bl sub_811C008
ldr r0, [sp, 0x4]
strh r6, [r0]
mov r1, sp
ldrh r2, [r1, 0xC]
ldr r1, [sp, 0x8]
strh r2, [r1]
movs r0, 0x1
b _0811BFF0
.align 2, 0
_0811BF44: .4byte gUnknown_8457116
_0811BF48:
mov r4, sp
adds r4, 0x2
mov r0, sp
adds r1, r4, 0
bl GetXYCoordsOneStepInFrontOfPlayer
movs r0, 0
str r0, [sp, 0xC]
ldr r0, _0811C000 @ =gUnknown_84570EC
adds r7, r5, 0
movs r1, 0
mov r10, r1
adds r2, r0, 0x2
str r2, [sp, 0x10]
str r0, [sp, 0x14]
_0811BF66:
movs r6, 0
ldr r4, [sp, 0x14]
movs r0, 0
ldrsh r4, [r4, r0]
mov r9, r4
ldr r1, [sp, 0x10]
mov r8, r1
ldr r5, _0811C004 @ =gUnknown_845710C
_0811BF76:
mov r2, r10
adds r3, r2, r6
mov r0, sp
movs r4, 0
ldrsh r1, [r0, r4]
movs r0, 0
ldrsb r0, [r5, r0]
add r0, r9
adds r0, 0x7
cmp r1, r0
bne _0811BFCA
mov r1, sp
movs r2, 0x2
ldrsh r0, [r1, r2]
mov r4, r8
movs r2, 0
ldrsh r1, [r4, r2]
movs r2, 0x1
ldrsb r2, [r5, r2]
adds r1, r2
adds r1, 0x7
cmp r0, r1
bne _0811BFCA
adds r0, r3, 0
subs r0, 0x38
lsls r0, 24
lsrs r4, r0, 24
adds r0, r4, 0
bl sub_806916C
cmp r0, 0
bne _0811BFCA
adds r0, r4, 0
bl sub_8069294
cmp r0, 0
bne _0811BFCA
ldrb r1, [r7, 0x1A]
movs r0, 0x3
ands r0, r1
cmp r0, 0x1
beq _0811BF1C
_0811BFCA:
adds r5, 0x2
adds r6, 0x1
cmp r6, 0x4
ble _0811BF76
adds r7, 0x20
movs r4, 0x5
add r10, r4
ldr r0, [sp, 0x10]
adds r0, 0x4
str r0, [sp, 0x10]
ldr r1, [sp, 0x14]
adds r1, 0x4
str r1, [sp, 0x14]
ldr r2, [sp, 0xC]
adds r2, 0x1
str r2, [sp, 0xC]
cmp r2, 0x7
ble _0811BF66
_0811BFEE:
movs r0, 0
_0811BFF0:
add sp, 0x18
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_0811C000: .4byte gUnknown_84570EC
_0811C004: .4byte gUnknown_845710C
thumb_func_end sub_811BF00
thumb_func_start sub_811C008
sub_811C008: @ 811C008
push {r4,lr}
adds r4, r0, 0
adds r3, r1, 0
lsls r1, r2, 24
lsrs r1, 24
lsls r0, r3, 2
adds r0, r3
subs r0, 0x38
adds r0, r4
lsls r0, 24
lsrs r0, 24
bl sub_8069058
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_811C008
thumb_func_start sub_811C028
sub_811C028: @ 811C028
push {r4,r5,lr}
adds r5, r0, 0
adds r4, r1, 0
lsls r3, r4, 5
adds r3, r2
adds r2, r3, 0
bl sub_811BBA0
adds r2, r0, 0
lsls r2, 24
lsrs r2, 24
adds r0, r5, 0
adds r1, r4, 0
bl sub_811C008
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_811C028
thumb_func_start sub_811C04C
sub_811C04C: @ 811C04C
push {r4-r7,lr}
+1
View File
@@ -10,5 +10,6 @@ void sub_8069124(u8 a0, bool8 a1);
u32 sub_806916C(u8 a0);
void sub_80691A4(u8 a0, u8 a1);
void sub_8069094(u8 a0, u8 a1);
bool32 sub_8069294(u8 a0);
#endif // GUARD_EVENT_OBJECT_80688E4_H
+2 -2
View File
@@ -243,7 +243,7 @@ SECTIONS {
src/quest_log.o(.text);
src/union_room.o(.text);
src/rfu_union_tool.o(.text);
asm/rfu_union_tool.o(.text);
asm/union_room_battle.o(.text);
asm/pokemon_special_anim.o(.text);
src/party_menu.o(.text);
asm/union_room_chat.o(.text);
@@ -530,7 +530,7 @@ SECTIONS {
src/quest_log.o(.rodata);
src/union_room.o(.rodata);
src/rfu_union_tool.o(.rodata);
data/rfu_union_tool.o(.rodata);
data/union_room_battle.o(.rodata);
data/union_room_message.o(.rodata);
data/pokemon_special_anim.o(.rodata);
src/party_menu.o(.rodata);
+95
View File
@@ -524,3 +524,98 @@ void sub_811BDA8(u32 r5, struct GFtgtGname * r4)
AGB_ASSERT_EX(0, ABSPATH("rfu_union_tool.c"), 979)
}
}
void sub_811BE6C(u32 r5, struct GFtgtGname * unused)
{
s32 i;
sub_811B90C(r5);
for (i = 0; i < 5; i++)
{
sub_811BC68(r5, i);
}
}
void sub_811BE8C(struct UnkStruct_URoom *r0)
{
s32 i;
struct UnkStruct_x20 * r4;
gUnknown_203B088 = 0;
for (i = 0, r4 = r0->field_0->arr; i < 8; i++)
{
if (r4[i].field_1A_0 == 1)
{
sub_811BDA8(i, &r4[i].unk.field_0);
}
else if (r4[i].field_1A_0 == 2)
{
sub_811BE6C(i, &r4[i].unk.field_0);
}
}
}
void sub_811BECC(struct UnkStruct_URoom *unused)
{
gUnknown_203B088 = 300;
}
void sub_811BEDC(struct UnkStruct_URoom *r2)
{
if (++gUnknown_203B088 > 300)
{
sub_811BE8C(r2);
}
}
bool32 sub_811BF00(struct UnkStruct_Main0 *arg0, s16 *arg1, s16 *arg2, u8 *arg3)
{
s16 x, y;
s32 i, j;
struct UnkStruct_x20 * r4;
if (!is_walking_or_running())
{
return FALSE;
}
GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
for (i = 0, r4 = arg0->arr; i < 8; i++)
{
for (j = 0; j < 5; j++)
{
s32 r3 = 5 * i + j;
if (x != gUnknown_84570EC[i][0] + gUnknown_845710C[j][0] + 7)
{
continue;
}
if (y != gUnknown_84570EC[i][1] + gUnknown_845710C[j][1] + 7)
{
continue;
}
if (sub_806916C(r3 - 0x38) != 0)
{
continue;
}
if (sub_8069294(r3 - 0x38) != 0)
{
continue;
}
if (r4[i].field_1A_0 != 1)
{
continue;
}
sub_811C008(j, i, gUnknown_8457116[GetPlayerFacingDirection()]);
*arg1 = j;
*arg2 = i;
return TRUE;
}
}
return FALSE;
}
void sub_811C008(s32 arg0, s32 arg1, u8 arg2)
{
sub_8069058(5 * arg1 - 0x38 + arg0, arg2);
}
void sub_811C028(u32 arg0, u32 arg1, struct UnkStruct_Main0 *arg2)
{
return sub_811C008(arg0, arg1, sub_811BBA0(arg0, arg1, &arg2->arr[arg1].unk.field_0));
}