Finish rfu_union_tool decomp
This commit is contained in:
@@ -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}
|
||||
@@ -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
@@ -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);
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user