diff options
-rw-r--r-- | asm/fame_checker.s | 258 | ||||
-rw-r--r-- | include/list_menu.h | 1 | ||||
-rw-r--r-- | include/new_menu_helpers.h | 2 | ||||
-rw-r--r-- | src/fame_checker.c | 102 |
4 files changed, 98 insertions, 265 deletions
diff --git a/asm/fame_checker.s b/asm/fame_checker.s index 5a8b79754..a99054d8b 100644 --- a/asm/fame_checker.s +++ b/asm/fame_checker.s @@ -5,264 +5,6 @@ .text - thumb_func_start sub_812CE9C -sub_812CE9C: @ 812CE9C - push {lr} - sub sp, 0x8 - movs r0, 0xD0 - str r0, [sp] - movs r0, 0x20 - str r0, [sp, 0x4] - movs r0, 0x2 - movs r1, 0x11 - movs r2, 0 - movs r3, 0 - bl FillWindowPixelRect - movs r0, 0x2 - bl sub_812CEE0 - add sp, 0x8 - pop {r0} - bx r0 - thumb_func_end sub_812CE9C - - thumb_func_start sub_812CEC0 -sub_812CEC0: @ 812CEC0 - push {lr} - bl sub_80F6E9C - movs r0, 0x2 - movs r1, 0x1 - bl sub_80F6EE4 - movs r0, 0x2 - bl sub_812CEE0 - movs r0, 0 - bl sub_812CEE0 - pop {r0} - bx r0 - thumb_func_end sub_812CEC0 - - thumb_func_start sub_812CEE0 -sub_812CEE0: @ 812CEE0 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - bl PutWindowTilemap - adds r0, r4, 0 - movs r1, 0x3 - bl CopyWindowToVram - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_812CEE0 - - thumb_func_start sub_812CEFC -sub_812CEFC: @ 812CEFC - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r4, r1, 24 - ldr r2, _0812CF1C @ =gSprites - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r3, r1, r2 - movs r1, 0x30 - ldrsh r0, [r3, r1] - cmp r0, 0xFF - bne _0812CF20 - movs r0, 0 - b _0812CF36 - .align 2, 0 -_0812CF1C: .4byte gSprites -_0812CF20: - movs r0, 0x3 - adds r1, r4, 0 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r3, 0x1] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3, 0x1] - movs r0, 0x1 -_0812CF36: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_812CEFC - - thumb_func_start sub_812CF3C -sub_812CF3C: @ 812CF3C - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0xC7 - bl PlaySE - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _0812CF74 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0812CF78 @ =sub_812CF7C - str r1, [r0] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0812CF74: .4byte gTasks -_0812CF78: .4byte sub_812CF7C - thumb_func_end sub_812CF3C - - thumb_func_start sub_812CF7C -sub_812CF7C: @ 812CF7C - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, _0812D074 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0812D06C - ldr r0, _0812D078 @ =gUnknown_203B0FC - ldr r0, [r0] - ldrb r1, [r0, 0x7] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0812CFD8 - bl sub_812E064 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r6, 0 - bl sub_812D9A8 - ldr r0, _0812D07C @ =gTasks - lsls r4, r6, 2 - adds r4, r6 - lsls r4, 3 - adds r4, r0 - movs r0, 0xE - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r5, _0812D080 @ =gSprites - adds r0, r5 - bl FreeSpriteOamMatrix - movs r0, 0xE - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - bl DestroySprite -_0812CFD8: - movs r4, 0 -_0812CFDA: - ldr r5, _0812D078 @ =gUnknown_203B0FC - ldr r0, [r5] - adds r0, 0x1D - adds r0, r4 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0812D080 @ =gSprites - adds r0, r1 - bl DestroySprite - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x5 - bls _0812CFDA - bl sub_812D814 - bl sub_812D7C8 - bl sub_812D70C - bl sub_812D770 - bl sub_812E048 - ldr r0, [r5] - ldr r0, [r0] - bl SetMainCallback2 - ldr r0, [r5] - ldrb r0, [r0, 0x8] - movs r1, 0 - movs r2, 0 - bl sub_810713C - ldr r0, _0812D084 @ =gUnknown_203B0F0 - ldr r0, [r0] - bl Free - ldr r0, _0812D088 @ =gUnknown_203B0F4 - ldr r0, [r0] - bl Free - ldr r0, _0812D08C @ =gUnknown_203B0F8 - ldr r0, [r0] - bl Free - ldr r0, [r5] - bl Free - ldr r0, _0812D090 @ =gUnknown_203B100 - ldr r0, [r0] - bl Free - movs r0, 0 - bl sub_812D094 - movs r0, 0x1 - bl sub_812D094 - movs r0, 0x2 - bl sub_812D094 - movs r0, 0x3 - bl sub_812D094 - bl FreeAllWindowBuffers - adds r0, r6, 0 - bl DestroyTask -_0812D06C: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0812D074: .4byte gPaletteFade -_0812D078: .4byte gUnknown_203B0FC -_0812D07C: .4byte gTasks -_0812D080: .4byte gSprites -_0812D084: .4byte gUnknown_203B0F0 -_0812D088: .4byte gUnknown_203B0F4 -_0812D08C: .4byte gUnknown_203B0F8 -_0812D090: .4byte gUnknown_203B100 - thumb_func_end sub_812CF7C - - thumb_func_start sub_812D094 -sub_812D094: @ 812D094 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - movs r1, 0 - bl FillWindowPixelBuffer - adds r0, r4, 0 - bl ClearWindowTilemap - adds r0, r4, 0 - movs r1, 0x2 - bl CopyWindowToVram - adds r0, r4, 0 - bl RemoveWindow - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_812D094 - thumb_func_start sub_812D0C0 sub_812D0C0: @ 812D0C0 push {r4,lr} diff --git a/include/list_menu.h b/include/list_menu.h index f547801bd..89adeaba0 100644 --- a/include/list_menu.h +++ b/include/list_menu.h @@ -54,5 +54,6 @@ u8 ListMenuInit(struct ListMenuTemplate *template, u16 a1, u16 a2); s32 ListMenuHandleInput(u8 id); void get_coro_args_x18_x1A(u8 a0, u16 *a1, u16 *a2); void sub_81AE6C8(u8 a0, u16 *a1, u16 *a2); +void sub_810713C(u8, u8, u8); #endif //GUARD_LIST_MENU_H diff --git a/include/new_menu_helpers.h b/include/new_menu_helpers.h index 432d06c81..2ff20eb39 100644 --- a/include/new_menu_helpers.h +++ b/include/new_menu_helpers.h @@ -17,5 +17,7 @@ void sub_8197930(void); u8 GetPlayerTextSpeed(void); void sub_80F6F54(u8, u8); u8 sub_80F78A8(void); +void sub_80F6E9C(void); +void sub_80F6EE4(u8, u8); #endif // GUARD_NEW_MENU_HELPERS_H diff --git a/src/fame_checker.c b/src/fame_checker.c index a7feb0cf8..bb2fe29b5 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -19,13 +19,13 @@ struct FameCheckerData { - void (*unk_00)(void); + MainCallback unk_00; u16 unk_04; u8 filler_06[1]; u8 unk_07_0:1; u8 unk_07_1:1; u8 unk_07_2:6; - u8 filler_08[1]; + u8 unk_08; u8 unk_09; u8 unk_0A; u8 unk_0B; @@ -66,8 +66,10 @@ void sub_812CE04(u8 taskId); void sub_812CE9C(void); void sub_812CEC0(void); void sub_812CEE0(u8 windowId); -bool8 sub_812CEFC(u8 taskId, u8 a1); +bool8 sub_812CEFC(u8 taskId, u8 objMode); void sub_812CF3C(u8 taskId); +void sub_812CF7C(u8 taskId); +void sub_812D094(u8 windowId); void sub_812D0F4(u8 a0); void sub_812D1A8(u8 a0); void sub_812D420(void); @@ -75,10 +77,14 @@ void sub_812D558(void); void sub_812D584(void); void sub_812D594(void); bool8 sub_812D6B4(void); +void sub_812D70C(void); u8 sub_812D724(s16 a0); void sub_812D764(struct Sprite *sprite); +void sub_812D770(void); +void sub_812D7C8(void); u8 sub_812D7E4(void); void sub_812D800(struct Sprite *sprite); +void sub_812D814(void); u8 sub_812D888(u8 a0); void sub_812D9A8(u8 a0, u16 a1); void sub_812DA14(u8 a0); @@ -272,7 +278,7 @@ void sub_812C694(u8 taskId) for (r4_2 = 0; r4_2 < 6; r4_2++) { if (r4_2 != task->data[1]) - sub_812CEFC(gUnknown_203B0FC->unk_1D[r4_2], 1); + sub_812CEFC(gUnknown_203B0FC->unk_1D[r4_2], ST_OAM_OBJ_BLEND); } gUnknown_3005EC8 = 0xFF; sub_812E4A4(0); @@ -369,7 +375,7 @@ void sub_812CAD8(u8 taskId) u8 r4; PlaySE(SE_SELECT); for (r4 = 0; r4 < 6; r4++) - sub_812CEFC(gUnknown_203B0FC->unk_1D[r4], 0); + sub_812CEFC(gUnknown_203B0FC->unk_1D[r4], ST_OAM_OBJ_NORMAL); sub_812CE9C(); gSprites[task->data[0]].callback = sub_812D764; if (gUnknown_3005EC8 != 0xFF) @@ -429,10 +435,10 @@ void sub_812CC68(u8 taskId, s8 dx, s8 dy) gSprites[data[0]].pos1.x += dx; gSprites[data[0]].pos1.y += dy; for (i = 0; i < 6; i++) - sub_812CEFC(gUnknown_203B0FC->unk_1D[i], 1); + sub_812CEFC(gUnknown_203B0FC->unk_1D[i], ST_OAM_OBJ_BLEND); FillWindowPixelRect(2, 0x11, 0, 0, 0xd0, 0x20); sub_812C990(); - if (sub_812CEFC(gUnknown_203B0FC->unk_1D[data[1]], 0) == TRUE) + if (sub_812CEFC(gUnknown_203B0FC->unk_1D[data[1]], ST_OAM_OBJ_NORMAL) == TRUE) { sub_812CE04(taskId); sub_812DA14(data[1]); @@ -470,3 +476,85 @@ void sub_812CE04(u8 taskId) AddTextPrinterParametrized(2, 2, gStringVar4, sub_80F78A8(), NULL, 2, 1, 3); sub_812CEE0(2); } + +void sub_812CE9C(void) +{ + FillWindowPixelRect(2, 0x11, 0, 0, 0xd0, 0x20); + sub_812CEE0(2); +} + +void sub_812CEC0(void) +{ + sub_80F6E9C(); + sub_80F6EE4(2, 1); + sub_812CEE0(2); + sub_812CEE0(0); +} + +void sub_812CEE0(u8 windowId) +{ + PutWindowTilemap(windowId); + CopyWindowToVram(windowId, 3); +} + +bool8 sub_812CEFC(u8 spriteId, u8 objMode) +{ + if (gSprites[spriteId].data[1] != 0xFF) + { + gSprites[spriteId].oam.objMode = objMode; + return TRUE; + } + return FALSE; +} + +void sub_812CF3C(u8 taskId) +{ + PlaySE(SE_W202); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + gTasks[taskId].func = sub_812CF7C; +} + +void sub_812CF7C(u8 taskId) +{ + u8 r4; + + if (!gPaletteFade.active) + { + if (gUnknown_203B0FC->unk_07_1) + { + sub_812D9A8(taskId, sub_812E064()); + FreeSpriteOamMatrix(&gSprites[gTasks[taskId].data[3]]); + DestroySprite(&gSprites[gTasks[taskId].data[3]]); + } + for (r4 = 0; r4 < 6; r4++) + { + DestroySprite(&gSprites[gUnknown_203B0FC->unk_1D[r4]]); + } + sub_812D814(); + sub_812D7C8(); + sub_812D70C(); + sub_812D770(); + sub_812E048(); + SetMainCallback2(gUnknown_203B0FC->unk_00); + sub_810713C(gUnknown_203B0FC->unk_08, 0, 0); + Free(gUnknown_203B0F0); + Free(gUnknown_203B0F4); + Free(gUnknown_203B0F8); + Free(gUnknown_203B0FC); + Free(gUnknown_203B100); + sub_812D094(0); + sub_812D094(1); + sub_812D094(2); + sub_812D094(3); + FreeAllWindowBuffers(); + DestroyTask(taskId); + } +} + +void sub_812D094(u8 windowId) +{ + FillWindowPixelBuffer(windowId, 0); + ClearWindowTilemap(windowId); + CopyWindowToVram(windowId, 2); + RemoveWindow(windowId); +} |