Merge pull request #388 from hatal175/sub_08054524

match sub_08054524 and sub_080A4BA0
This commit is contained in:
notyourav 2022-02-17 20:18:33 -08:00 committed by GitHub
commit f1b4286c7c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 43 additions and 215 deletions

View File

@ -1,140 +0,0 @@
.syntax unified
push {r4, r5, r6, lr}
sub sp, #0x54
adds r5, r0, #0
adds r6, r1, #0
add r0, sp, #0x18
movs r1, #0x30
bl MemClear
ldr r0, _080A4C08 @ =gUnk_0812816C
mov r1, sp
movs r2, #0x18
bl MemCopy
ldr r0, _080A4C0C @ =gUnk_08128184
add r4, sp, #0x48
adds r1, r4, #0
movs r2, #0xc
bl MemCopy
lsls r1, r6, #1
adds r1, r1, r6
lsls r2, r1, #9
ldr r0, [sp, #4]
adds r0, r0, r2
str r0, [sp, #4]
mov r2, sp
mov r0, sp
lsls r1, r1, #4
ldrh r0, [r0, #0x10]
adds r1, r1, r0
strh r1, [r2, #0x10]
lsls r1, r6, #7
ldr r0, [sp]
adds r0, r0, r1
str r0, [sp]
cmp r6, #2
bne _080A4BEE
mov r0, sp
strb r6, [r0, #0x14]
_080A4BEE:
ldr r0, _080A4C10 @ =gSave
ldrb r0, [r0, #6]
movs r1, #0x88
cmp r0, #0
bne _080A4BFA
movs r1, #0x82
_080A4BFA:
cmp r5, #0
ble _080A4C02
cmp r1, r5
bge _080A4C14
_080A4C02:
movs r5, #1
rsbs r5, r5, #0
b _080A4C3E
.align 2, 0
_080A4C08: .4byte gUnk_0812816C
_080A4C0C: .4byte gUnk_08128184
_080A4C10: .4byte gSave
_080A4C14:
ldr r1, _080A4C30 @ =gUnk_020227E8
ldr r2, _080A4C34 @ =0x00303030
adds r0, r5, #0
bl sub_08057044
adds r0, r5, #0
bl sub_080A4948
cmp r0, #0
bne _080A4C38
movs r0, #0x80
lsls r0, r0, #8
b _080A4C3C
.align 2, 0
_080A4C30: .4byte gUnk_020227E8
_080A4C34: .4byte 0x00303030
_080A4C38:
movs r0, #0x80
lsls r0, r0, #4
_080A4C3C:
adds r5, r5, r0
_080A4C3E:
ldr r0, _080A4C94 @ =gMenu
lsls r1, r6, #1
adds r0, #0x10
adds r1, r1, r0
ldrh r0, [r1]
cmp r0, r5
beq _080A4CB2
strh r5, [r1]
ldr r0, _080A4C98 @ =0x0000F00B
cmp r6, #2
bne _080A4C56
subs r0, #7
_080A4C56:
ldr r1, [sp]
movs r2, #0x80
bl MemFill16
cmp r5, #0
ble _080A4CAC
ldr r0, _080A4C9C @ =0x00007FFF
cmp r5, r0
ble _080A4C6A
ldr r5, _080A4CA0 @ =0x00000889
_080A4C6A:
adds r0, r5, #0
cmp r5, #0
bge _080A4C72
adds r0, #0xff
_080A4C72:
asrs r0, r0, #8
strb r0, [r4, #8]
strb r5, [r4, #9]
ldr r0, [sp]
adds r0, #0x16
str r0, [sp]
movs r0, #0x80
lsls r0, r0, #0x12
ldrb r0, [r0, #7]
cmp r0, #0
bne _080A4CA4
adds r0, r4, #0
mov r1, sp
bl sub_0805F46C
b _080A4CAC
.align 2, 0
_080A4C94: .4byte gMenu
_080A4C98: .4byte 0x0000F00B
_080A4C9C: .4byte 0x00007FFF
_080A4CA0: .4byte 0x00000889
_080A4CA4:
adds r0, r5, #0
mov r1, sp
bl sub_0805F46C
_080A4CAC:
ldr r1, _080A4CB8 @ =gScreen
movs r0, #1
strh r0, [r1, #0x32]
_080A4CB2:
add sp, #0x54
pop {r4, r5, r6, pc}
.align 2, 0
_080A4CB8: .4byte gScreen
.syntax divided

View File

@ -1,31 +0,0 @@
.syntax unified
push {lr}
ldr r0, _08054550 @ =gArea
ldrb r1, [r0, #1]
cmp r1, #0
bne _08054534
ldr r0, _08054554 @ =gRoomTransition
adds r0, #0x2e
ldrb r1, [r0]
_08054534:
cmp r1, #0x16
bls _0805453A
movs r1, #0
_0805453A:
ldr r0, _08054558 @ =gUnk_080FE1C6
adds r0, r1, r0
ldrb r1, [r0]
lsls r0, r1, #5
ldr r1, _0805455C @ =gAreaDroptables
adds r0, r0, r1
ldr r1, _08054560 @ =gRoomVars+0x48
movs r2, #0x20
bl MemCopy
pop {pc}
.align 2, 0
_08054550: .4byte gArea
_08054554: .4byte gRoomTransition
_08054558: .4byte gUnk_080FE1C6
_0805455C: .4byte gAreaDroptables
_08054560: .4byte gRoomVars+0x48
.syntax divided

View File

@ -165,8 +165,7 @@ u32 GetBottleContaining(u32 id) {
}
}
NONMATCH("asm/non_matching/sub_08054524.inc", void sub_08054524(void)) {
// reg-alloc
void sub_08054524(void) {
u32 bVar1;
bVar1 = gArea.locationIndex;
@ -177,9 +176,9 @@ NONMATCH("asm/non_matching/sub_08054524.inc", void sub_08054524(void)) {
bVar1 = 0;
}
MemCopy(&gAreaDroptables[0] + gUnk_080FE1C6[bVar1] * 0x8, &gRoomVars.currentAreaDroptable, 0x20);
bVar1 = gUnk_080FE1C6[bVar1];
MemCopy(&gAreaDroptables[bVar1], &gRoomVars.currentAreaDroptable, 0x20);
}
END_NONMATCH
void sub_08054564(void) {
gRoomVars.field_0x2 = 1;

View File

@ -21,7 +21,7 @@ void sub_080A4DA8(u32);
void sub_080A4B44(void);
void FigurineMenu_080A4978(void);
u32 sub_080A4CBC(u32);
u32 sub_080A4BA0(u32, u32);
void sub_080A4BA0(u32, u32);
void sub_080A4DB8(u32);
const KeyButtonLayout gUnk_0812813C = {
@ -453,31 +453,30 @@ extern u8 gUnk_020227E8[];
extern void sub_08057044(u32, u8*, u8*);
extern void sub_0805F46C(u32, const struct_0812816C*);
NONMATCH("asm/non_matching/menu/figurine_menu/sub_080A4BA0.inc", u32 sub_080A4BA0(u32 unk1, u32 unk2)) {
int r0, r1, r2, r3, r4, r5, r6;
void sub_080A4BA0(u32 arg1, u32 arg2) {
int r0, r5, r6;
int tmp;
struct_0812816C s0;
u8 buffer[0x30];
struct_08128184 s2;
r5 = unk1;
r6 = unk2;
r5 = arg1;
r6 = arg2;
MemClear(buffer, sizeof(buffer));
MemCopy(&gUnk_0812816C, &s0, sizeof(gUnk_0812816C));
MemCopy(&gUnk_08128184, &s2, sizeof(gUnk_08128184));
r1 = r6 << 1;
r1 += r6;
r2 = r1 << 9;
s0.unk4 += r2;
s0.unk10 += r1 << 4;
r1 = r6 << 7;
s0.unk0 += r1;
if (r6 == 2) {
s0.unk14 = r6;
s0.unk4 += (arg2 * 3) << 9;
s0.unk10 += (arg2 * 3) << 4;
s0.unk0 += arg2 << 6;
if (arg2 == 2) {
s0.unk14 = arg2;
}
r1 = (gSave.unk6 == 0) ? 0x82 : 0x88;
if (r5 <= 0 || r1 < r5) {
r0 = -1;
tmp = (gSave.unk6 == 0) ? 0x82 : 0x88;
if (r5 <= 0 || tmp < r5) {
r5 = -1;
} else {
sub_08057044(r5, gUnk_020227E8, (void*)0x303030);
if (sub_080A4948(r5) == 0) {
@ -486,32 +485,33 @@ NONMATCH("asm/non_matching/menu/figurine_menu/sub_080A4BA0.inc", u32 sub_080A4BA
r5 += 0x800;
}
}
if ((r0 = gFigurineMenu.unk10.h[r6]) == r5)
return r0;
gFigurineMenu.unk10.h[r6] = r5;
r0 = (r6 != 2) ? 0xf00b : 7;
MemFill16(r0, s0.unk0, 0x80);
if (r5 > 0) {
if (r5 > 0x7fff) {
r5 = 0x889;
}
r0 = r5;
if (r5 < 0) {
r0 += 0xff;
}
s2.unk8 = r0 >> 8;
s2.unk9 = r5;
s0.unk0 += 0x16;
if (gSaveHeader->language == 0) {
sub_0805F46C((u32)&s2, &s0);
} else {
sub_0805F46C(r5, &s0);
if (gFigurineMenu.unk10.h[r6] != r5) {
gFigurineMenu.unk10.h[r6] = r5;
r0 = 0xf00b;
if (r6 == 2)
r0 -= 7;
MemFill16(r0, s0.unk0, 0x80);
if (r5 > 0) {
if (r5 > 0x7fff) {
r5 = 0x889;
}
r0 = r5;
if (r5 < 0) {
r0 += 0xff;
}
s2.unk8 = r0 >> 8;
s2.unk9 = r5;
s0.unk0 += 0xb;
if (gSaveHeader->language == 0) {
sub_0805F46C((u32)&s2, &s0);
} else {
sub_0805F46C(r5, &s0);
}
}
gScreen.bg3.updated = 1;
}
gScreen.bg3.updated = 1;
return 1;
}
END_NONMATCH
const struct_0812816C gUnk_08128190 = {
(u16*)0x02021f72,