mirror of https://github.com/zeldaret/tmc.git
Merge pull request #388 from hatal175/sub_08054524
match sub_08054524 and sub_080A4BA0
This commit is contained in:
commit
f1b4286c7c
|
@ -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
|
|
|
@ -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
|
|
|
@ -165,8 +165,7 @@ u32 GetBottleContaining(u32 id) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
NONMATCH("asm/non_matching/sub_08054524.inc", void sub_08054524(void)) {
|
void sub_08054524(void) {
|
||||||
// reg-alloc
|
|
||||||
u32 bVar1;
|
u32 bVar1;
|
||||||
|
|
||||||
bVar1 = gArea.locationIndex;
|
bVar1 = gArea.locationIndex;
|
||||||
|
@ -177,9 +176,9 @@ NONMATCH("asm/non_matching/sub_08054524.inc", void sub_08054524(void)) {
|
||||||
bVar1 = 0;
|
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) {
|
void sub_08054564(void) {
|
||||||
gRoomVars.field_0x2 = 1;
|
gRoomVars.field_0x2 = 1;
|
||||||
|
|
|
@ -21,7 +21,7 @@ void sub_080A4DA8(u32);
|
||||||
void sub_080A4B44(void);
|
void sub_080A4B44(void);
|
||||||
void FigurineMenu_080A4978(void);
|
void FigurineMenu_080A4978(void);
|
||||||
u32 sub_080A4CBC(u32);
|
u32 sub_080A4CBC(u32);
|
||||||
u32 sub_080A4BA0(u32, u32);
|
void sub_080A4BA0(u32, u32);
|
||||||
void sub_080A4DB8(u32);
|
void sub_080A4DB8(u32);
|
||||||
|
|
||||||
const KeyButtonLayout gUnk_0812813C = {
|
const KeyButtonLayout gUnk_0812813C = {
|
||||||
|
@ -453,31 +453,30 @@ extern u8 gUnk_020227E8[];
|
||||||
extern void sub_08057044(u32, u8*, u8*);
|
extern void sub_08057044(u32, u8*, u8*);
|
||||||
extern void sub_0805F46C(u32, const struct_0812816C*);
|
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)) {
|
void sub_080A4BA0(u32 arg1, u32 arg2) {
|
||||||
int r0, r1, r2, r3, r4, r5, r6;
|
int r0, r5, r6;
|
||||||
|
int tmp;
|
||||||
|
|
||||||
struct_0812816C s0;
|
struct_0812816C s0;
|
||||||
u8 buffer[0x30];
|
u8 buffer[0x30];
|
||||||
struct_08128184 s2;
|
struct_08128184 s2;
|
||||||
|
|
||||||
r5 = unk1;
|
r5 = arg1;
|
||||||
r6 = unk2;
|
r6 = arg2;
|
||||||
MemClear(buffer, sizeof(buffer));
|
MemClear(buffer, sizeof(buffer));
|
||||||
MemCopy(&gUnk_0812816C, &s0, sizeof(gUnk_0812816C));
|
MemCopy(&gUnk_0812816C, &s0, sizeof(gUnk_0812816C));
|
||||||
MemCopy(&gUnk_08128184, &s2, sizeof(gUnk_08128184));
|
MemCopy(&gUnk_08128184, &s2, sizeof(gUnk_08128184));
|
||||||
r1 = r6 << 1;
|
s0.unk4 += (arg2 * 3) << 9;
|
||||||
r1 += r6;
|
s0.unk10 += (arg2 * 3) << 4;
|
||||||
r2 = r1 << 9;
|
s0.unk0 += arg2 << 6;
|
||||||
s0.unk4 += r2;
|
if (arg2 == 2) {
|
||||||
s0.unk10 += r1 << 4;
|
s0.unk14 = arg2;
|
||||||
r1 = r6 << 7;
|
|
||||||
s0.unk0 += r1;
|
|
||||||
if (r6 == 2) {
|
|
||||||
s0.unk14 = r6;
|
|
||||||
}
|
}
|
||||||
r1 = (gSave.unk6 == 0) ? 0x82 : 0x88;
|
|
||||||
if (r5 <= 0 || r1 < r5) {
|
tmp = (gSave.unk6 == 0) ? 0x82 : 0x88;
|
||||||
r0 = -1;
|
|
||||||
|
if (r5 <= 0 || tmp < r5) {
|
||||||
|
r5 = -1;
|
||||||
} else {
|
} else {
|
||||||
sub_08057044(r5, gUnk_020227E8, (void*)0x303030);
|
sub_08057044(r5, gUnk_020227E8, (void*)0x303030);
|
||||||
if (sub_080A4948(r5) == 0) {
|
if (sub_080A4948(r5) == 0) {
|
||||||
|
@ -486,32 +485,33 @@ NONMATCH("asm/non_matching/menu/figurine_menu/sub_080A4BA0.inc", u32 sub_080A4BA
|
||||||
r5 += 0x800;
|
r5 += 0x800;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ((r0 = gFigurineMenu.unk10.h[r6]) == r5)
|
|
||||||
return r0;
|
if (gFigurineMenu.unk10.h[r6] != r5) {
|
||||||
gFigurineMenu.unk10.h[r6] = r5;
|
gFigurineMenu.unk10.h[r6] = r5;
|
||||||
r0 = (r6 != 2) ? 0xf00b : 7;
|
r0 = 0xf00b;
|
||||||
MemFill16(r0, s0.unk0, 0x80);
|
if (r6 == 2)
|
||||||
if (r5 > 0) {
|
r0 -= 7;
|
||||||
if (r5 > 0x7fff) {
|
MemFill16(r0, s0.unk0, 0x80);
|
||||||
r5 = 0x889;
|
if (r5 > 0) {
|
||||||
}
|
if (r5 > 0x7fff) {
|
||||||
r0 = r5;
|
r5 = 0x889;
|
||||||
if (r5 < 0) {
|
}
|
||||||
r0 += 0xff;
|
r0 = r5;
|
||||||
}
|
if (r5 < 0) {
|
||||||
s2.unk8 = r0 >> 8;
|
r0 += 0xff;
|
||||||
s2.unk9 = r5;
|
}
|
||||||
s0.unk0 += 0x16;
|
s2.unk8 = r0 >> 8;
|
||||||
if (gSaveHeader->language == 0) {
|
s2.unk9 = r5;
|
||||||
sub_0805F46C((u32)&s2, &s0);
|
s0.unk0 += 0xb;
|
||||||
} else {
|
if (gSaveHeader->language == 0) {
|
||||||
sub_0805F46C(r5, &s0);
|
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 = {
|
const struct_0812816C gUnk_08128190 = {
|
||||||
(u16*)0x02021f72,
|
(u16*)0x02021f72,
|
||||||
|
|
Loading…
Reference in New Issue