diff --git a/asm/non_matching/menu/figurine_menu/sub_080A4BA0.inc b/asm/non_matching/menu/figurine_menu/sub_080A4BA0.inc deleted file mode 100644 index 1036e8af..00000000 --- a/asm/non_matching/menu/figurine_menu/sub_080A4BA0.inc +++ /dev/null @@ -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 diff --git a/asm/non_matching/sub_08054524.inc b/asm/non_matching/sub_08054524.inc deleted file mode 100644 index 05ac3f4e..00000000 --- a/asm/non_matching/sub_08054524.inc +++ /dev/null @@ -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 diff --git a/src/code_0805436C.c b/src/code_0805436C.c index 9e02220b..c690e889 100644 --- a/src/code_0805436C.c +++ b/src/code_0805436C.c @@ -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; diff --git a/src/menu/figurine_menu.c b/src/menu/figurine_menu.c index 7405260e..20dcd0f4 100644 --- a/src/menu/figurine_menu.c +++ b/src/menu/figurine_menu.c @@ -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,