summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/fame_checker.s240
-rw-r--r--src/fame_checker.c65
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;
+ }
+}