sub_8060890

This commit is contained in:
DizzyEggg 2024-07-24 17:00:17 +02:00
parent 589e9e647b
commit d8ea0b77d3
2 changed files with 49 additions and 170 deletions

View File

@ -7,155 +7,6 @@
thumb_func_start sub_8060800
sub_8060800:
push {r4-r7,lr}
adds r5, r0, 0
adds r4, r1, 0
movs r1, 0
ldr r0, _0806083C
ldr r2, [r0]
mov r12, r0
ldr r6, _08060840
cmp r1, r2
bge _08060828
adds r3, r6, 0
_08060816:
movs r7, 0
ldrsh r0, [r3, r7]
cmp r0, 0x1
bgt _08060820
adds r1, 0x1
_08060820:
adds r3, 0x2
subs r2, 0x1
cmp r2, 0
bne _08060816
_08060828:
lsls r0, r4, 1
adds r0, r6
movs r2, 0
ldrsh r0, [r0, r2]
cmp r0, 0x1
bgt _08060844
adds r3, r4, 0
adds r2, r1, 0
movs r1, 0
b _0806084C
.align 2, 0
_0806083C: .4byte gUnknown_202F258
_08060840: .4byte gUnknown_202F248
_08060844:
subs r3, r4, r1
mov r7, r12
ldr r0, [r7]
subs r2, r0, r1
_0806084C:
cmp r5, 0
beq _08060858
movs r0, 0
strb r2, [r5]
strb r3, [r5, 0x1]
strb r0, [r5, 0x3]
_08060858:
adds r0, r1, 0
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_8060800
thumb_func_start sub_8060860
sub_8060860:
push {lr}
adds r1, r0, 0
ldr r0, _08060880
movs r2, 0x1A
ldrsh r0, [r0, r2]
cmp r0, 0x1
ble _0806087C
ldr r0, _08060884
lsls r1, 1
adds r1, r0
movs r2, 0
ldrsh r0, [r1, r2]
cmp r0, 0x1
ble _08060888
_0806087C:
movs r0, 0
b _0806088A
.align 2, 0
_08060880: .4byte gUnknown_202EE10
_08060884: .4byte gUnknown_202F248
_08060888:
movs r0, 0x1
_0806088A:
pop {r1}
bx r1
thumb_func_end sub_8060860
thumb_func_start sub_8060890
sub_8060890:
push {r4,lr}
adds r3, r0, 0
ldr r1, _080608B4
ldr r2, _080608B8
movs r4, 0x1E
ldrsh r0, [r2, r4]
lsls r0, 1
adds r0, r1
movs r1, 0
ldrsh r0, [r0, r1]
cmp r0, 0x1
beq _080608D0
cmp r0, 0x1
bgt _080608BC
cmp r0, 0
beq _080608C2
b _080608E8
.align 2, 0
_080608B4: .4byte gUnknown_202F248
_080608B8: .4byte gUnknown_202EE10
_080608BC:
cmp r0, 0x2
beq _080608DC
b _080608E8
_080608C2:
ldr r1, _080608CC
ldrb r0, [r2, 0x18]
adds r0, 0x1
b _080608EC
.align 2, 0
_080608CC: .4byte gUnknown_202F238
_080608D0:
ldr r1, _080608D8
ldrb r0, [r2, 0x18]
adds r0, 0xB
b _080608EC
.align 2, 0
_080608D8: .4byte gUnknown_202F238
_080608DC:
ldr r1, _080608E4
movs r0, 0x80
b _080608EC
.align 2, 0
_080608E4: .4byte gUnknown_202F238
_080608E8:
ldr r1, _080608FC
subs r0, 0x74
_080608EC:
strb r0, [r1]
ldrh r0, [r3]
strh r0, [r1, 0x4]
ldrh r0, [r3, 0x2]
strh r0, [r1, 0x6]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080608FC: .4byte gUnknown_202F238
thumb_func_end sub_8060890
thumb_func_start sub_8060900
sub_8060900:
push {r4-r7,lr}

View File

@ -3384,7 +3384,7 @@ typedef struct UnkTextStruct3 {
} UnkTextStruct3;
extern void sub_803ECB4(UnkTextStruct3 *a0, u8 a1);
void CreateFieldItemMenu(s32 a0, Entity *a1, bool8 a2, bool8 a3, UnkTextStruct3 *a4, u8 *a5);
void CreateFieldItemMenu(s32 a0, Entity *a1, bool8 a2, bool8 a3, UnkTextStruct3 *a4, UnkTextStruct2_sub2 *a5);
// Inline needed to (fake?)match.
static inline void sub_805FC30_SetUpTxtStruct(UnkTextStruct3 *src)
@ -3473,11 +3473,10 @@ s32 sub_8060D64(s16 *a0, bool8 a1, bool8 a2, bool8 a3, Entity *a4);
void sub_8060890(Position *a0);
bool8 sub_8060860(s32 a0);
void sub_8060900(Entity *a0);
s32 sub_8060800(u8 *a0, s32 a1);
s32 sub_8060800(UnkTextStruct2_sub2 *a0, s32 a1);
void sub_8060CE8(ActionContainer *a0);
extern Entity *DrawFieldGiveItemMenu(u8 *a0, s32 a1);
// TODO: Fix casts to (void*) once more functions are decompiled.
bool8 sub_805FD74(Entity * a0, struct UnkMenuBitsStruct *a1)
{
s32 i, i_r6;
@ -3489,7 +3488,7 @@ bool8 sub_805FD74(Entity * a0, struct UnkMenuBitsStruct *a1)
u8 var_2C = 0;
u8 var_28 = 0;
EntityInfo *a0Info = a0->info;
u32 var_3C;
UnkTextStruct2_sub2 var_3C;
UnkTextStruct3 var_FC =
{
@ -3502,7 +3501,7 @@ bool8 sub_805FD74(Entity * a0, struct UnkMenuBitsStruct *a1)
.unkC = 0x12,
.unkE = 0x10,
.unk10 = 0x10,
.unk14 = (void*)(&var_3C),
.unk14 = &var_3C,
},
{.unk4 = 3}, {.unk4 = 3}, {.unk4 = 3},
},
@ -3556,7 +3555,7 @@ bool8 sub_805FD74(Entity * a0, struct UnkMenuBitsStruct *a1)
}
}
}
CreateFieldItemMenu(r8, a0, var_2C, var_30, &var_FC, (void*)&var_3C);
CreateFieldItemMenu(r8, a0, var_2C, var_30, &var_FC, &var_3C);
id = gUnknown_202F248[gUnknown_202EE10.unk1E];
if (id >= MAX_TEAM_MEMBERS) {
@ -3683,7 +3682,7 @@ bool8 sub_805FD74(Entity * a0, struct UnkMenuBitsStruct *a1)
}
sub_8060900(a0);
sub_8060800((void*)&var_3C, gUnknown_202EE10.unk1E);
sub_8060800(&var_3C, gUnknown_202EE10.unk1E);
sub_805FC30(&var_FC, 0x16);
while (1) {
AddMenuCursorSprite(&gUnknown_202EE10);
@ -3753,7 +3752,7 @@ bool8 sub_805FD74(Entity * a0, struct UnkMenuBitsStruct *a1)
extern const struct UnkTextStruct2 gUnknown_8106B6C;
extern const struct unkStruct_8090F58 gUnknown_8106B60;
void CreateFieldItemMenu(s32 a0, Entity *a1, bool8 a2, bool8 a3, UnkTextStruct3 *a4, u8 *a5)
void CreateFieldItemMenu(s32 a0, Entity *a1, bool8 a2, bool8 a3, UnkTextStruct3 *a4, UnkTextStruct2_sub2 *a5)
{
s32 i, x, y;
s32 r10;
@ -3779,7 +3778,7 @@ void CreateFieldItemMenu(s32 a0, Entity *a1, bool8 a2, bool8 a3, UnkTextStruct3
case 1:
a4->a0[0].unk10 = 0x10;
a4->a0[0].unkE = 0x10;
a5[2] = 0xC;
a5->f2 = 0xC;
gUnknown_202EE10.unk6 = 0x10;
gUnknown_202EE10.unk1C = 0xA;
gDungeon->unk181e8.unk18212 = 1;
@ -3787,7 +3786,7 @@ void CreateFieldItemMenu(s32 a0, Entity *a1, bool8 a2, bool8 a3, UnkTextStruct3
case 2:
a4->a0[0].unk10 = 4;
a4->a0[0].unkE = 4;
a5[2] = 6;
a5->f2 = 6;
gUnknown_202EE10.unk6 = 0x12;
gUnknown_202EE10.unk1C = 1;
break;
@ -3795,7 +3794,7 @@ void CreateFieldItemMenu(s32 a0, Entity *a1, bool8 a2, bool8 a3, UnkTextStruct3
default:
a4->a0[0].unk10 = 4;
a4->a0[0].unkE = 4;
a5[2] = 0xC;
a5->f2 = 0xC;
gUnknown_202EE10.unk6 = 0x12;
gUnknown_202EE10.unk1C = 1;
break;
@ -3911,15 +3910,7 @@ void CreateFieldItemMenu(s32 a0, Entity *a1, bool8 a2, bool8 a3, UnkTextStruct3
}
}
/*
struct TstStruct {
u8 f0;
u8 f1;
u8 f2;
u8 f3;
};
s32 sub_8060800(struct TstStruct *a0, s32 a1)
s32 sub_8060800(UnkTextStruct2_sub2 *a0, s32 a1)
{
s32 i, r1, r2, r3;
@ -3948,4 +3939,41 @@ s32 sub_8060800(struct TstStruct *a0, s32 a1)
return r1;
}
*/
bool8 sub_8060860(s32 a0)
{
if (gUnknown_202EE10.unk1A <= 1 || gUnknown_202F248[a0] > 1)
return FALSE;
else
return TRUE;
}
void sub_8060890(Position *a0)
{
s32 var = gUnknown_202F248[gUnknown_202EE10.unk1E];
switch (var)
{
case 0:
gUnknown_202F238.actionUseIndex = gUnknown_202EE10.menuIndex + 1;
break;
case 1:
gUnknown_202F238.actionUseIndex = gUnknown_202EE10.menuIndex + 11;
break;
case 2:
gUnknown_202F238.actionUseIndex = 128;
break;
default:
gUnknown_202F238.actionUseIndex = var - 116;
break;
}
gUnknown_202F238.lastItemThrowPosition.x = a0->x;
gUnknown_202F238.lastItemThrowPosition.y = a0->y;
}
/*
void sub_8060900(Entity *a0)
{
}
//*/