some more decomp

This commit is contained in:
Seth Barberee 2022-06-03 17:53:07 -07:00
parent 86196330be
commit ad9c25598d
4 changed files with 124 additions and 268 deletions

View File

@ -5,137 +5,6 @@
.text
thumb_func_start sub_8098FCC
sub_8098FCC:
push {r4,lr}
movs r0, 0
movs r1, 0x13
bl sub_8001658
lsls r0, 16
asrs r1, r0, 16
adds r2, r1, 0
movs r0, 0x1
negs r0, r0
cmp r1, r0
beq _0809909E
cmp r1, 0x51
bne _08098FF6
movs r0, 0
movs r1, 0x14
bl sub_8001658
lsls r0, 16
asrs r0, 16
b _08098FF8
_08098FF6:
adds r0, r2, 0
_08098FF8:
bl sub_80A2608
adds r4, r0, 0
ldr r0, _0809900C
ldr r0, [r0]
cmp r0, 0x9
bne _08099010
movs r1, 0x2
ldrsh r0, [r4, r1]
b _080990B2
.align 2, 0
_0809900C: .4byte gUnknown_20398B4
_08099010:
ldrh r0, [r4, 0x4]
subs r0, 0xB2
lsls r0, 16
asrs r0, 16
cmp r0, 0x17
bhi _080990AE
lsls r0, 2
ldr r1, _08099028
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08099028: .4byte _0809902C
.align 2, 0
_0809902C:
.4byte _0809908C
.4byte _080990AE
.4byte _080990AE
.4byte _080990AE
.4byte _080990AE
.4byte _080990AE
.4byte _080990AE
.4byte _080990AE
.4byte _080990AE
.4byte _080990AE
.4byte _080990AE
.4byte _080990AE
.4byte _080990AE
.4byte _080990AE
.4byte _080990AE
.4byte _080990A2
.4byte _080990AE
.4byte _080990A2
.4byte _080990AE
.4byte _080990AE
.4byte _080990A2
.4byte _080990AE
.4byte _080990AE
.4byte _080990A2
_0809908C:
movs r2, 0x1
negs r2, r2
movs r0, 0x3
movs r1, 0x2
bl sub_8001D44
lsls r0, 24
cmp r0, 0
beq _080990AE
_0809909E:
movs r0, 0xC
b _080990B2
_080990A2:
movs r0, 0x5
bl sub_80023E4
lsls r0, 24
cmp r0, 0
beq _0809909E
_080990AE:
movs r1, 0x4
ldrsh r0, [r4, r1]
_080990B2:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_8098FCC
thumb_func_start sub_80990B8
sub_80990B8:
push {lr}
movs r0, 0xB
bl sub_8098FCC
lsls r0, 16
asrs r2, r0, 16
movs r0, 0x1
negs r0, r0
cmp r2, r0
bne _080990D2
bl sub_8098FB4
b _080990E4
_080990D2:
ldr r1, _080990E8
lsls r0, r2, 1
adds r0, r2
lsls r0, 2
adds r0, r1
movs r1, 0x2
ldrsh r0, [r0, r1]
bl sub_80A2B18
_080990E4:
pop {r1}
bx r1
.align 2, 0
_080990E8: .4byte gUnknown_811BAF4
thumb_func_end sub_80990B8
thumb_func_start sub_80990EC
sub_80990EC:
push {r4-r7,lr}
@ -8230,126 +8099,4 @@ _0809CFDA:
bx r1
thumb_func_end sub_809CDC8
thumb_func_start sub_809CFE8
sub_809CFE8:
push {lr}
lsls r0, 16
lsrs r1, r0, 16
adds r2, r1, 0
movs r0, 0x40
ands r0, r1
cmp r0, 0
beq _0809D014
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _0809D004
movs r0, 0x3
b _0809D052
_0809D004:
movs r0, 0x20
ands r0, r1
cmp r0, 0
beq _0809D010
movs r0, 0x5
b _0809D052
_0809D010:
movs r0, 0x4
b _0809D052
_0809D014:
movs r0, 0x80
ands r0, r1
cmp r0, 0
beq _0809D038
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _0809D028
movs r0, 0x1
b _0809D052
_0809D028:
movs r0, 0x20
ands r0, r1
cmp r0, 0
beq _0809D034
movs r0, 0x7
b _0809D052
_0809D034:
movs r0, 0
b _0809D052
_0809D038:
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _0809D044
movs r0, 0x2
b _0809D052
_0809D044:
movs r0, 0x20
ands r2, r0
cmp r2, 0
bne _0809D050
subs r0, 0x21
b _0809D052
_0809D050:
movs r0, 0x6
_0809D052:
pop {r1}
bx r1
thumb_func_end sub_809CFE8
thumb_func_start sub_809D058
sub_809D058:
push {lr}
ldr r1, [r0, 0x4]
cmp r1, 0x3F
bgt _0809D076
ldr r0, [r0]
cmp r0, 0x67
bgt _0809D06A
movs r0, 0x5
b _0809D0A6
_0809D06A:
cmp r0, 0x88
ble _0809D072
movs r0, 0x3
b _0809D0A6
_0809D072:
movs r0, 0x4
b _0809D0A6
_0809D076:
cmp r1, 0x60
ble _0809D090
ldr r0, [r0]
cmp r0, 0x67
bgt _0809D084
movs r0, 0x7
b _0809D0A6
_0809D084:
cmp r0, 0x88
ble _0809D08C
movs r0, 0x1
b _0809D0A6
_0809D08C:
movs r0, 0
b _0809D0A6
_0809D090:
ldr r0, [r0]
cmp r0, 0x67
bgt _0809D09A
movs r0, 0x6
b _0809D0A6
_0809D09A:
cmp r0, 0x88
bgt _0809D0A4
movs r0, 0x1
negs r0, r0
b _0809D0A6
_0809D0A4:
movs r0, 0x2
_0809D0A6:
pop {r1}
bx r1
thumb_func_end sub_809D058
.align 2,0

View File

@ -2,6 +2,7 @@
#include "play_time.h"
#include "input.h"
#include "debug.h"
#include "code_80A26CC.h"
extern u32 gUnknown_20398A8;
extern u32 gUnknown_20398AC;
@ -21,6 +22,15 @@ extern const char gUnknown_8115FA4;
extern const char gUnknown_8115FC8;
extern const char gUnknown_8115FE8;
struct unkStruct_811BAF4
{
u16 unk0;
s16 unk2;
u8 fill4[8];
};
extern struct unkStruct_811BAF4 gUnknown_811BAF4[10];
extern void sub_809B57C();
extern void GroundScript_Unlock();
extern void sub_809D25C();
@ -61,11 +71,11 @@ extern void ClearAllItems_8091FB4();
extern const char *sub_80A2B18(s16);
extern u8 sub_8001CC4(u8, u8, u8);
extern void xxx_inv_unk250_random_8091980(u32);
extern u8 sub_80023E4(u32);
extern void sub_80118C4(u16);
extern u8 sub_809C730();
extern s16 sub_80A2750(s16);
extern u8 sub_8001D44(u32, u32, s32);
void sub_8098BDC(void)
{
@ -319,3 +329,54 @@ const char *sub_8098FB4(void)
{
return sub_80A2B18(sub_8001658(0, 0x11));
}
s32 sub_8098FCC(u32 unused)
{
s32 iVar4;
s32 iVar5;
s32 iVar6;
struct unkStruct_80A2608 *iVar3;
iVar5 = (s16)sub_8001658(0,0x13);
iVar6 = iVar5;
if (iVar5 == -1) return 0xC;
if (iVar5 == 0x51)
iVar4 = (s16)sub_8001658(0,0x14);
else
iVar4 = iVar6;
iVar3 = sub_80A2608(iVar4);
if (gUnknown_20398B4 == 9) {
return iVar3->unk2;
}
switch((s16)(iVar3->unk4 - 0xb2)) {
case 0:
if (sub_8001D44(3,2,-1) != 0) return 0xc;
break;
case 0xf:
case 0x11:
case 0x14:
case 0x17:
if (sub_80023E4(5) == 0) return 0xC;
break;
default:
break;
}
return iVar3->unk4;
}
const char *sub_80990B8(void)
{
s16 index;
index = sub_8098FCC(0xB);
if(index != -1)
{
return sub_80A2B18(gUnknown_811BAF4[index].unk2);
}
else
{
return sub_8098FB4();
}
}

View File

@ -33,6 +33,67 @@ extern struct unkStruct_20399E8 gUnknown_20399E8;
void sub_809D0BC(void);
s32 sub_809CFE8(u16 param_1)
{
if ((param_1 & 0x40) != 0) {
if ((param_1 & 0x10) != 0)
return 3;
else if ((param_1 & 0x20) != 0)
return 5;
else
return 4;
}
else if ((param_1 & 0x80) != 0) {
if ((param_1 & 0x10) != 0)
return 1;
else if ((param_1 & 0x20) != 0)
return 7;
else
return 0;
}
else if ((param_1 & 0x10) != 0)
return 2;
else if ((param_1 & 0x20) != 0)
return 6;
else
return -1;
}
// Unused
s32 sub_809D058(s32 *param_1)
{
if (param_1[1] < 0x40) {
if (param_1[0] < 0x68) {
return 5;
}
else if (param_1[0] > 0x88) {
return 3;
}
else {
return 4;
}
}
else if (param_1[1] > 0x60) {
if (param_1[0] < 0x68) {
return 7;
}
else if (param_1[0] > 0x88) {
return 1;
}
else {
return 0;
}
}
else if (param_1[0] < 0x68) {
return 6;
}
else if (param_1[0] > 0x88) {
return 2;
}
else {
return -1;
}
}
void sub_809D0AC(void)
{

View File

@ -1,18 +1,5 @@
#include "global.h"
struct unkStruct_80A2608
{
/* 0x0 */ s16 unk0;
/* 0x2 */ u16 padding;
/* 0x4 */ u32 padding2;
/* 0x8 */ u16 padding3;
/* 0xA */ u16 padding4;
/* 0xC */ u8 unkC;
/* 0xD */ u8 padding5;
/* 0xE */ s16 unkE;
/* 0x10 */ u8 unk10;
/* 0x11 */ u8 unk11;
};
#include "code_80A26CC.h"
extern u8 sub_80023E4(u32);
extern u8 sub_80973F4(s16);