diff options
-rw-r--r-- | asm/fame_checker.s | 240 | ||||
-rw-r--r-- | src/fame_checker.c | 65 |
2 files changed, 64 insertions, 241 deletions
diff --git a/asm/fame_checker.s b/asm/fame_checker.s index 059b19291..f87b8622f 100644 --- a/asm/fame_checker.s +++ b/asm/fame_checker.s @@ -5,246 +5,6 @@ .text - thumb_func_start sub_812C8F8 -sub_812C8F8: @ 812C8F8 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _0812C91C @ =gTasks - adds r4, r1, r0 - ldr r5, _0812C920 @ =gUnknown_203B0FC - ldr r0, [r5] - ldrb r1, [r0, 0x7] - movs r3, 0x2 - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - bne _0812C924 - movs r0, 0 - b _0812C982 - .align 2, 0 -_0812C91C: .4byte gTasks -_0812C920: .4byte gUnknown_203B0FC -_0812C924: - ldr r2, _0812C988 @ =gSprites - movs r0, 0xC - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strh r3, [r0, 0x2E] - movs r0, 0xC - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x24] - adds r1, 0xA - strh r1, [r0, 0x24] - movs r0, 0xE - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strh r3, [r0, 0x2E] - movs r0, 0xE - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x24] - adds r1, 0xA - strh r1, [r0, 0x24] - bl sub_812CE9C - ldr r0, _0812C98C @ =sub_812CA1C - str r0, [r4] - bl sub_812C990 - ldr r1, [r5] - adds r1, 0x23 - ldrb r2, [r1] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - movs r0, 0x1 -_0812C982: - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0812C988: .4byte gSprites -_0812C98C: .4byte sub_812CA1C - thumb_func_end sub_812C8F8 - - thumb_func_start sub_812C990 -sub_812C990: @ 812C990 - push {lr} - sub sp, 0x10 - ldr r2, _0812C9B8 @ =gUnknown_84181E4 - movs r0, 0 - str r0, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - movs r0, 0x1 - str r0, [sp, 0x8] - movs r0, 0x3 - str r0, [sp, 0xC] - movs r0, 0x2 - movs r1, 0x2 - movs r3, 0 - bl AddTextPrinterParametrized - add sp, 0x10 - pop {r0} - bx r0 - .align 2, 0 -_0812C9B8: .4byte gUnknown_84181E4 - thumb_func_end sub_812C990 - - thumb_func_start sub_812C9BC -sub_812C9BC: @ 812C9BC - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _0812C9F8 @ =gTasks - adds r4, r1, r0 - ldr r2, _0812C9FC @ =gSprites - movs r0, 0xC - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x2E - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _0812CA08 - bl sub_812CD3C - ldr r0, _0812CA00 @ =gUnknown_203B0FC - ldr r2, [r0] - ldrb r0, [r2, 0x7] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r2, 0x7] - ldr r0, _0812CA04 @ =sub_812C694 - str r0, [r4] - b _0812CA14 - .align 2, 0 -_0812C9F8: .4byte gTasks -_0812C9FC: .4byte gSprites -_0812CA00: .4byte gUnknown_203B0FC -_0812CA04: .4byte sub_812C694 -_0812CA08: - movs r1, 0xA0 - lsls r1, 4 - movs r0, 0x1 - movs r2, 0x1 - bl ChangeBgX -_0812CA14: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_812C9BC - - thumb_func_start sub_812CA1C -sub_812CA1C: @ 812CA1C - push {r4-r7,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _0812CA44 @ =gTasks - adds r5, r0, r1 - movs r0, 0x1 - bl GetBgX - cmp r0, 0 - beq _0812CA48 - movs r1, 0xA0 - lsls r1, 4 - movs r0, 0x1 - movs r2, 0x2 - bl ChangeBgX - b _0812CA52 - .align 2, 0 -_0812CA44: .4byte gTasks -_0812CA48: - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl ChangeBgX -_0812CA52: - ldr r7, _0812CAC8 @ =gSprites - movs r1, 0xC - ldrsh r0, [r5, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r7 - movs r2, 0x2E - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _0812CAC0 - ldr r6, _0812CACC @ =gUnknown_203B0FC - ldr r0, [r6] - ldrb r1, [r0, 0x7] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0812CA7C - movs r0, 0 - bl sub_812D0F4 -_0812CA7C: - movs r0, 0x1 - movs r1, 0x4 - bl sub_812E178 - movs r0, 0x2 - movs r1, 0x2 - bl sub_812E178 - ldr r2, [r6] - ldrb r1, [r2, 0x7] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r2, 0x7] - bl sub_812E064 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl sub_812D9A8 - ldr r0, _0812CAD0 @ =sub_812C694 - str r0, [r5] - movs r0, 0xE - ldrsh r1, [r5, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r7, 0 - adds r1, 0x1C - adds r0, r1 - ldr r1, _0812CAD4 @ =sub_812D800 - str r1, [r0] -_0812CAC0: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0812CAC8: .4byte gSprites -_0812CACC: .4byte gUnknown_203B0FC -_0812CAD0: .4byte sub_812C694 -_0812CAD4: .4byte sub_812D800 - thumb_func_end sub_812CA1C - thumb_func_start sub_812CAD8 sub_812CAD8: @ 812CAD8 push {r4-r6,lr} diff --git a/src/fame_checker.c b/src/fame_checker.c index 0f047f612..81aeb7aee 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -2,6 +2,7 @@ #include "constants/songs.h" #include "bg.h" #include "graphics.h" +#include "new_menu_helpers.h" #include "item_menu.h" #include "list_menu.h" #include "gpu_regs.h" @@ -29,7 +30,8 @@ struct FameCheckerData u8 unk_0C[17]; u8 unk_1D[6]; u8 unk_23_0:1; - u8 unk_23_1:7; + u8 unk_23_1:1; + u8 unk_23_2:1; }; struct FameCheckerData2 @@ -52,7 +54,9 @@ void sub_812C648(void); void sub_812C664(u8 taskId); void sub_812C694(u8 taskId); bool8 sub_812C8F8(u8 taskId); +void sub_812C990(void); void sub_812C9BC(u8 taskId); +void sub_812CA1C(u8 taskId); void sub_812CAD8(u8 taskId); void sub_812CD3C(void); void sub_812CE04(u8 taskId); @@ -70,7 +74,9 @@ void sub_812D594(void); bool8 sub_812D6B4(void); u8 sub_812D724(s16 a0); u8 sub_812D7E4(void); +void sub_812D800(struct Sprite *sprite); u8 sub_812D888(u8 a0); +void sub_812D9A8(u8 a0, u16 a1); void sub_812DA14(u8 a0); void sub_812DB28(void); void sub_812E000(void); @@ -80,6 +86,7 @@ void sub_812E110(u8 taskId); void sub_812E178(u8 a0, s16 a1); void sub_812E4A4(u8 a0); +extern const u8 gUnknown_84181E4[]; extern const u16 gUnknown_845C600[]; extern const struct BgTemplate gUnknown_845FBF4[4]; @@ -281,3 +288,59 @@ void sub_812C694(u8 taskId) ListMenuHandleInput(0); } } + +bool8 sub_812C8F8(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + if (gUnknown_203B0FC->unk_07_1) + { + gSprites[task->data[2]].data[0] = 2; + gSprites[task->data[2]].pos2.x += 10; + gSprites[task->data[3]].data[0] = 2; + gSprites[task->data[3]].pos2.x += 10; + sub_812CE9C(); + task->func = sub_812CA1C; + sub_812C990(); + gUnknown_203B0FC->unk_23_2 = FALSE; + return TRUE; + } + return FALSE; +} + +void sub_812C990(void) +{ + AddTextPrinterParametrized(2, 2, gUnknown_84181E4, 0, NULL, 2, 1, 3); +} + +void sub_812C9BC(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + if (gSprites[task->data[2]].data[0] == 0) + { + sub_812CD3C(); + gUnknown_203B0FC->unk_07_1 = TRUE; + task->func = sub_812C694; + } + else + ChangeBgX(1, 0xA00, 1); +} + +void sub_812CA1C(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + if (GetBgX(1) != 0) + ChangeBgX(1, 0xA00, 2); + else + ChangeBgX(1, 0x000, 0); + if (gSprites[task->data[2]].data[0] == 0) + { + if (gUnknown_203B0FC->unk_07_0) + sub_812D0F4(0); + sub_812E178(1, 4); + sub_812E178(2, 2); + gUnknown_203B0FC->unk_07_1 = FALSE; + sub_812D9A8(taskId, sub_812E064()); + task->func = sub_812C694; + gSprites[task->data[3]].callback = sub_812D800; + } +} |