From 7e684b32f108bc484f3f8ba66b209d3f633e8acd Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 26 Nov 2018 22:27:19 -0500 Subject: [PATCH] More documentation of fame checker --- asm/item_menu.s | 6 +- asm/item_use.s | 24 ++-- asm/start_menu.s | 4 +- asm/teachy_tv.s | 4 +- charmap.txt | 6 + data/data_83FECCC.s | 6 +- data/fame_checker/img_845cf00.png | Bin 240 -> 297 bytes include/fame_checker.h | 19 +++ include/item_menu.h | 2 +- src/fame_checker.c | 209 +++++++++++++----------------- 10 files changed, 138 insertions(+), 142 deletions(-) diff --git a/asm/item_menu.s b/asm/item_menu.s index 5ad6b8b5c..16d1cfce2 100644 --- a/asm/item_menu.s +++ b/asm/item_menu.s @@ -138,8 +138,8 @@ _08107EB0: .4byte gUnknown_203AD10 _08107EB4: .4byte gUnknown_203ACFC thumb_func_end sub_8107DB4 - thumb_func_start sub_8107EB8 -sub_8107EB8: @ 8107EB8 + thumb_func_start UseFameCheckerFromMenu +UseFameCheckerFromMenu: @ 8107EB8 push {lr} ldr r2, _08107EC8 @ =sub_80568A8 movs r0, 0 @@ -149,7 +149,7 @@ sub_8107EB8: @ 8107EB8 bx r0 .align 2, 0 _08107EC8: .4byte sub_80568A8 - thumb_func_end sub_8107EB8 + thumb_func_end UseFameCheckerFromMenu thumb_func_start sub_8107ECC sub_8107ECC: @ 8107ECC diff --git a/asm/item_use.s b/asm/item_use.s index 49d517eb5..f653247d9 100644 --- a/asm/item_use.s +++ b/asm/item_use.s @@ -320,7 +320,7 @@ sub_80A1208: @ 80A1208 ldr r0, _080A1224 @ =gUnknown_203AD30 ldrh r0, [r0] strh r0, [r1, 0x20] - ldr r1, _080A1228 @ =sub_8107EB8 + ldr r1, _080A1228 @ =UseFameCheckerFromMenu mov r0, sp movs r2, 0 bl sub_80BEBEC @@ -329,7 +329,7 @@ sub_80A1208: @ 80A1208 bx r0 .align 2, 0 _080A1224: .4byte gUnknown_203AD30 -_080A1228: .4byte sub_8107EB8 +_080A1228: .4byte UseFameCheckerFromMenu thumb_func_end sub_80A1208 thumb_func_start sub_80A122C @@ -1045,14 +1045,14 @@ _080A17D0: .4byte sub_80A17E8 thumb_func_start sub_80A17D4 sub_80A17D4: @ 80A17D4 push {lr} - ldr r1, _080A17E4 @ =sub_8107EB8 + ldr r1, _080A17E4 @ =UseFameCheckerFromMenu movs r0, 0 movs r2, 0 bl sub_81317F8 pop {r0} bx r0 .align 2, 0 -_080A17E4: .4byte sub_8107EB8 +_080A17E4: .4byte UseFameCheckerFromMenu thumb_func_end sub_80A17D4 thumb_func_start sub_80A17E8 @@ -1123,14 +1123,14 @@ _080A1868: .4byte sub_80A1880 thumb_func_start sub_80A186C sub_80A186C: @ 80A186C push {lr} - ldr r1, _080A187C @ =sub_8107EB8 + ldr r1, _080A187C @ =UseFameCheckerFromMenu movs r0, 0 movs r2, 0 bl sub_813CD50 pop {r0} bx r0 .align 2, 0 -_080A187C: .4byte sub_8107EB8 +_080A187C: .4byte UseFameCheckerFromMenu thumb_func_end sub_80A186C thumb_func_start sub_80A1880 @@ -1239,13 +1239,13 @@ _080A1948: .4byte sub_80A1960 thumb_func_start sub_80A194C sub_80A194C: @ 80A194C push {lr} - ldr r1, _080A195C @ =sub_8107EB8 + ldr r1, _080A195C @ =UseFameCheckerFromMenu movs r0, 0 bl sub_815ABC4 pop {r0} bx r0 .align 2, 0 -_080A195C: .4byte sub_8107EB8 +_080A195C: .4byte UseFameCheckerFromMenu thumb_func_end sub_80A194C thumb_func_start sub_80A1960 @@ -1646,13 +1646,13 @@ _080A1CA8: .4byte sub_80A1CC0 thumb_func_start sub_80A1CAC sub_80A1CAC: @ 80A1CAC push {lr} - ldr r1, _080A1CBC @ =sub_8107EB8 + ldr r1, _080A1CBC @ =UseFameCheckerFromMenu movs r0, 0 bl sub_80BFF50 pop {r0} bx r0 .align 2, 0 -_080A1CBC: .4byte sub_8107EB8 +_080A1CBC: .4byte UseFameCheckerFromMenu thumb_func_end sub_80A1CAC thumb_func_start sub_80A1CC0 @@ -1730,12 +1730,12 @@ _080A1D54: .4byte sub_80A1D68 thumb_func_start sub_80A1D58 sub_80A1D58: @ 80A1D58 push {lr} - ldr r0, _080A1D64 @ =sub_8107EB8 + ldr r0, _080A1D64 @ =UseFameCheckerFromMenu bl UseFameChecker pop {r0} bx r0 .align 2, 0 -_080A1D64: .4byte sub_8107EB8 +_080A1D64: .4byte UseFameCheckerFromMenu thumb_func_end sub_80A1D58 thumb_func_start sub_80A1D68 diff --git a/asm/start_menu.s b/asm/start_menu.s index 55dbb7357..43155b5da 100644 --- a/asm/start_menu.s +++ b/asm/start_menu.s @@ -911,14 +911,14 @@ _0806F498: bl play_some_sound bl sub_806EF18 bl sub_80563F0 - ldr r0, _0806F4B0 @ =sub_8107EB8 + ldr r0, _0806F4B0 @ =UseFameCheckerFromMenu bl SetMainCallback2 movs r0, 0x1 _0806F4AC: pop {r1} bx r1 .align 2, 0 -_0806F4B0: .4byte sub_8107EB8 +_0806F4B0: .4byte UseFameCheckerFromMenu thumb_func_end sub_806F480 thumb_func_start sub_806F4B4 diff --git a/asm/teachy_tv.s b/asm/teachy_tv.s index 55f403f8a..48f98a2b4 100644 --- a/asm/teachy_tv.s +++ b/asm/teachy_tv.s @@ -915,7 +915,7 @@ sub_815B2C0: @ 815B2C0 beq _0815B30A subs r0, r4, 0x6 ldr r1, [r0] - ldr r0, _0815B32C @ =sub_8107EB8 + ldr r0, _0815B32C @ =UseFameCheckerFromMenu cmp r1, r0 bne _0815B330 _0815B30A: @@ -932,7 +932,7 @@ _0815B31C: .4byte gTasks+0x8 _0815B320: .4byte gPaletteFade _0815B324: .4byte gUnknown_203F44A _0815B328: .4byte gMain -_0815B32C: .4byte sub_8107EB8 +_0815B32C: .4byte UseFameCheckerFromMenu _0815B330: movs r0, 0x5 bl PlaySE diff --git a/charmap.txt b/charmap.txt index 9441532b4..ad4062731 100644 --- a/charmap.txt +++ b/charmap.txt @@ -326,6 +326,12 @@ UNKNOWN_F7 = F7 UNKNOWN_F8 = F8 UNKNOWN_F9 = F9 +KEYGFX_A_BUTTON = F8 00 +KEYGFX_B_BUTTON = F8 01 +KEYGFX_START_BUTTON = F8 04 +KEYGFX_DPAD_UP_DOWN = F8 0A +KEYGFX_DPAD_ANY = F8 0C + STRING = FD @ string placeholders diff --git a/data/data_83FECCC.s b/data/data_83FECCC.s index 7c2d85f03..402cd6704 100644 --- a/data/data_83FECCC.s +++ b/data/data_83FECCC.s @@ -2091,13 +2091,13 @@ gUnknown_841E58D:: @ 841E58D .incbin "baserom.gba", 0x41E58D, 0x17 gUnknown_841E5A4:: @ 841E5A4 - .incbin "baserom.gba", 0x41E5A4, 0x15 + .string "{KEYGFX_START_BUTTON}PICK {KEYGFX_DPAD_UP_DOWN}SELECT {KEYGFX_A_BUTTON}OK$" gUnknown_841E5B9:: @ 841E5B9 - .incbin "baserom.gba", 0x41E5B9, 0x19 + .string "{KEYGFX_START_BUTTON}PICK {KEYGFX_DPAD_UP_DOWN}SELECT {KEYGFX_B_BUTTON}CANCEL$" gUnknown_841E5D2:: @ 841E5D2 - .string "{UNKNOWN_F8 0x0C}PICK {UNKNOWN_F8 0x00}READ {UNKNOWN_F8 0x01}CANCEL$" + .string "{KEYGFX_DPAD_ANY}PICK {KEYGFX_A_BUTTON}READ {UNKNOWN_F8 0x01}CANCEL$" gUnknown_841E5E9:: @ 841E5E9 .string "OAK$" diff --git a/data/fame_checker/img_845cf00.png b/data/fame_checker/img_845cf00.png index 2d25bb1b30cad602837f6a41ab729f106e59de52..0d692439a4edc754c3211c5c2f5bbc3b11047edb 100644 GIT binary patch delta 281 zcmeysxRPmtWIZzj14Cm-`f(s-5a1Kynw6CWWTJuY?(V&N_ntj__T9U8&z?QIckkYo zEnEKo{|{9B@_hC&plZgFAirP+hi5m^fSl!?E{-7@6W31I$k*f`;Ie)5!TPO>C-Pr7 za<3&LSL21I&x%vZu9Dy&y4hqcbB_wnRBTmE&N=z@K4Q?EH;ZB zI#Rey9{B`1Tfb(IV|)_IVDmZloBHfi513?{hK!0=abeVl5*X)y-z z=imNK(7p2GMB#Jh{U2Y|&B~B)T(scYck@SE69u^iw!V3PIXDkZ88J2$;^<0G3 U-~4^^XD!ITp00i_>zopr08p}h{r~^~ delta 223 zcmV<503iRV0`LKl8Gir(005KW$SD8-0Jlj*K~yM_ozbxlf-n#U;J(5S!QEoi&A{Z= z#DSfGIBQ7UP4oeDVdGt8VXJNL%Aq5-H23B2l^n|cm0Av6_XDGL)eD54CBTbdAAtiD zQ4*kt2R#+RD9{J^2pk03O2E(D*4dS&GHig;1aBbmum+A1R#^VZCBgt?_qN*AfT33a zoV9+qgI=+Pi`unk_07_1 && sFameCheckerData->savedCallback != sub_8107EB8) + if ((JOY_NEW(SELECT_BUTTON)) && !sFameCheckerData->inPickMode && sFameCheckerData->savedCallback != UseFameCheckerFromMenu) task->func = sub_812CF3C; else if (JOY_NEW(START_BUTTON)) { - r4 = sub_812E064(); + r4 = FameCheckerGetCursorY(); if (sub_812C8F8(taskId) == TRUE) { PlaySE(SE_W100); } - else if (r4 != sFameCheckerData->unk_07_2 - 1) + else if (r4 != sFameCheckerData->numUnlockedPersons - 1) { PlaySE(SE_W100); FillWindowPixelRect(3, 0x00, 0, 0, 88, 32); @@ -639,9 +610,9 @@ static void sub_812C694(u8 taskId) else if (JOY_NEW(A_BUTTON)) { r4 = ListMenuHandleInput(0); - if (r4 == sFameCheckerData->unk_07_2 - 1) + if (r4 == sFameCheckerData->numUnlockedPersons - 1) task->func = sub_812CF3C; - else if (sFameCheckerData->unk_07_1) + else if (sFameCheckerData->inPickMode) { if (!IsTextPrinterActive(2) && sub_812D6B4() == TRUE) sub_812CD3C(); @@ -680,7 +651,7 @@ static void sub_812C694(u8 taskId) static bool8 sub_812C8F8(u8 taskId) { struct Task *task = &gTasks[taskId]; - if (sFameCheckerData->unk_07_1) + if (sFameCheckerData->inPickMode) { gSprites[task->data[2]].data[0] = 2; gSprites[task->data[2]].pos2.x += 10; @@ -706,7 +677,7 @@ static void sub_812C9BC(u8 taskId) if (gSprites[task->data[2]].data[0] == 0) { sub_812CD3C(); - sFameCheckerData->unk_07_1 = TRUE; + sFameCheckerData->inPickMode = TRUE; task->func = sub_812C694; } else @@ -726,8 +697,8 @@ static void sub_812CA1C(u8 taskId) sub_812D0F4(0); sub_812E178(1, 4); sub_812E178(2, 2); - sFameCheckerData->unk_07_1 = FALSE; - sub_812D9A8(taskId, sub_812E064()); + sFameCheckerData->inPickMode = FALSE; + sub_812D9A8(taskId, FameCheckerGetCursorY()); task->func = sub_812C694; gSprites[task->data[3]].callback = sub_812D800; } @@ -825,7 +796,7 @@ static void sub_812CC68(u8 taskId, s8 dx, s8 dy) static void sub_812CD3C(void) { u8 r8 = 0; - u16 r6 = sub_812E064(); + u16 r6 = FameCheckerGetCursorY(); if (gSaveBlock1Ptr->fameChecker[sFameCheckerData->unlockedPersons[r6]].unk_0_0 != 2) { sub_812CE9C(); @@ -845,7 +816,7 @@ static void sub_812CD3C(void) static void sub_812CE04(u8 taskId) { s16 *data = gTasks[taskId].data; - u16 r5 = sub_812E064(); + u16 r5 = FameCheckerGetCursorY(); FillWindowPixelRect(2, 0x11, 0, 0, 0xd0, 0x20); StringExpandPlaceholders(gStringVar4, gUnknown_845F6BC[sFameCheckerData->unlockedPersons[r5] * 6 + data[1]]); AddTextPrinterParametrized(2, 2, gStringVar4, sub_80F78A8(), NULL, 2, 1, 3); @@ -895,9 +866,9 @@ static void sub_812CF7C(u8 taskId) if (!gPaletteFade.active) { - if (sFameCheckerData->unk_07_1) + if (sFameCheckerData->inPickMode) { - sub_812D9A8(taskId, sub_812E064()); + sub_812D9A8(taskId, FameCheckerGetCursorY()); FreeSpriteOamMatrix(&gSprites[gTasks[taskId].data[3]]); DestroySprite(&gSprites[gTasks[taskId].data[3]]); } @@ -981,7 +952,7 @@ static bool8 sub_812D1A8(u8 a0) if ((gSaveBlock1Ptr->fameChecker[sFameCheckerData->unlockedPersons[a0]].unk_0_2 >> r6) & 1) { sFameCheckerData->spriteIds[r6] = sub_805EB44( - gUnknown_845F83C[sFameCheckerData->unlockedPersons[a0] * 6 + r6], + sFameCheckerArrayNpcGraphicsIds[sFameCheckerData->unlockedPersons[a0] * 6 + r6], r6, 47 * (r6 % 3) + 0x72, 27 * (r6 / 3) + 0x2F @@ -990,7 +961,7 @@ static bool8 sub_812D1A8(u8 a0) } else { - sFameCheckerData->spriteIds[r6] = sub_812D780( + sFameCheckerData->spriteIds[r6] = PlaceQuestionMarkTile( 47 * (r6 % 3) + 0x72, 27 * (r6 / 3) + 0x1F ); @@ -1000,7 +971,7 @@ static bool8 sub_812D1A8(u8 a0) if (r5 == TRUE) { sFameCheckerData->unk_07_0 = TRUE; - if (sFameCheckerData->unk_07_1) + if (sFameCheckerData->inPickMode) sub_812D0F4(TRUE); else sub_812D0F4(FALSE); @@ -1120,7 +1091,7 @@ static void sub_812D650(void) static bool8 sub_812D6B4(void) { u8 r2; - u8 r1 = sFameCheckerData->unlockedPersons[sub_812E064()]; + u8 r1 = sFameCheckerData->unlockedPersons[FameCheckerGetCursorY()]; for (r2 = 0; r2 < 6; r2++) { if (!((gSaveBlock1Ptr->fameChecker[r1].unk_0_2 >> r2) & 1)) @@ -1152,7 +1123,7 @@ static void sub_812D770(void) FreeSpriteTilesByTag(SPRITETAG_1001); } -static u8 sub_812D780(u8 x, u8 y) +static u8 PlaceQuestionMarkTile(u8 x, u8 y) { u8 spriteId = CreateSprite(&gUnknown_845FC78, x, y, 8); gSprites[spriteId].oam.priority = 2; @@ -1168,7 +1139,7 @@ static void sub_812D7C8(void) static u8 sub_812D7E4(void) { - return CreateSprite(&gUnknown_845FCB8, 0xe2, 0x42, 0); + return CreateSprite(&sSpinningPokeballSpriteTemplate, 0xe2, 0x42, 0); } static void sub_812D800(struct Sprite * sprite) @@ -1212,28 +1183,28 @@ static void sub_812D840(struct Sprite * sprite) static u8 sub_812D888(u8 a0) { u8 r4; - if (a0 == 1) + if (a0 == FAMECHECKER_DAISY) { - r4 = CreateSprite(&gUnknown_845FCE4, 0x94, 0x42, 0); - LoadPalette(gUnknown_845ED60, 0x160, 0x20); + r4 = CreateSprite(&sDaisySpriteTemplate, 0x94, 0x42, 0); + LoadPalette(sDaisySpritePalette, 0x160, 0x20); gSprites[r4].oam.paletteNum = 6; } - else if (a0 == 14) + else if (a0 == FAMECHECKER_MRFUJI) { - r4 = CreateSprite(&gUnknown_845FCFC, 0x94, 0x42, 0); - LoadPalette(gUnknown_845DD20, 0x160, 0x20); + r4 = CreateSprite(&sFujiSpriteTemplate, 0x94, 0x42, 0); + LoadPalette(sFujiSpritePalette, 0x160, 0x20); gSprites[r4].oam.paletteNum = 6; } - else if (a0 == 0) + else if (a0 == FAMECHECKER_OAK) { - r4 = CreateSprite(&gUnknown_845FD14, 0x94, 0x42, 0); - LoadPalette(gUnknown_845F580, 0x160, 0x20); + r4 = CreateSprite(&sOakSpriteTemplate, 0x94, 0x42, 0); + LoadPalette(sOakSpritePalette, 0x160, 0x20); gSprites[r4].oam.paletteNum = 6; } - else if (a0 == 13) + else if (a0 == FAMECHECKER_BILL) { - r4 = CreateSprite(&gUnknown_845FD2C, 0x94, 0x42, 0); - LoadPalette(gUnknown_845E540, 0x160, 0x20); + r4 = CreateSprite(&sBillSpriteTemplate, 0x94, 0x42, 0); + LoadPalette(sBillSpritePalette, 0x160, 0x20); gSprites[r4].oam.paletteNum = 6; } else @@ -1250,12 +1221,12 @@ static void sub_812D9A8(u8 taskId, u16 a1) { s16 * data = gTasks[taskId].data; u16 r1 = a1; - if (a1 == sFameCheckerData->unk_07_2 - 1) + if (a1 == sFameCheckerData->numUnlockedPersons - 1) r1 = a1 - 1; - if ( sFameCheckerData->unlockedPersons[r1] == 1 - || sFameCheckerData->unlockedPersons[r1] == 14 - || sFameCheckerData->unlockedPersons[r1] == 0 - || sFameCheckerData->unlockedPersons[r1] == 13 + if ( sFameCheckerData->unlockedPersons[r1] == FAMECHECKER_DAISY + || sFameCheckerData->unlockedPersons[r1] == FAMECHECKER_MRFUJI + || sFameCheckerData->unlockedPersons[r1] == FAMECHECKER_OAK + || sFameCheckerData->unlockedPersons[r1] == FAMECHECKER_BILL ) DestroySprite(&gSprites[data[2]]); else @@ -1265,7 +1236,7 @@ static void sub_812D9A8(u8 taskId, u16 a1) static void sub_812DA14(u8 a0) { s32 width; - u32 r5 = 6 * sFameCheckerData->unlockedPersons[sub_812E064()] + a0; + u32 r5 = 6 * sFameCheckerData->unlockedPersons[FameCheckerGetCursorY()] + a0; sub_812E094(1); gUnknown_3005EC8 = 1; FillWindowPixelRect(3, 0x00, 0, 0, 0x58, 0x20); @@ -1286,7 +1257,7 @@ static void sub_812DB10(void) static void sub_812DB28(void) { sub_812DB64(); - sFameCheckerData->unk_07_2 = sub_812DEF0(); + sFameCheckerData->numUnlockedPersons = sub_812DEF0(); sFameCheckerData->scrollIndicatorArrowObjectTaskId = ListMenuInit(&gFameChecker_ListMenuTemplate, 0, 0); sub_812DFE4(0); } @@ -1329,11 +1300,11 @@ static void sub_812DBC0(s32 itemIndex, bool8 onInit, struct ListMenu *list) task->data[1] = 0; get_coro_args_x18_x1A(sFameCheckerData->scrollIndicatorArrowObjectTaskId, &sp8, NULL); sFameCheckerData->unk_04 = sp8; - if (itemIndex != sFameCheckerData->unk_07_2 - 1) + if (itemIndex != sFameCheckerData->numUnlockedPersons - 1) { sub_812D174(); sub_812D1A8(itemIndex); - if (sFameCheckerData->unk_07_1) + if (sFameCheckerData->inPickMode) { if (!sFameCheckerData->unk_23_2) { @@ -1358,7 +1329,7 @@ static void sub_812DBC0(s32 itemIndex, bool8 onInit, struct ListMenu *list) else { sub_812DDAC(); - if (sFameCheckerData->unk_07_1) + if (sFameCheckerData->inPickMode) { gSprites[task->data[2]].invisible = TRUE; sFameCheckerData->unk_23_2 = TRUE; @@ -1403,7 +1374,7 @@ static void sub_812DDF0(s32 itemIndex, bool8 onInit) { if (sp14 < sFameCheckerData->unk_0A) sFameCheckerData->unk_0B++; - else if (sp14 > sFameCheckerData->unk_0A && r6 != sFameCheckerData->unk_07_2 - 1) + else if (sp14 > sFameCheckerData->unk_0A && r6 != sFameCheckerData->numUnlockedPersons - 1) sFameCheckerData->unk_0B--; AddTextPrinterParametrized2(0, 2, 8, 14 * sFameCheckerData->unk_0B + 4, 0, 0, &gUnknown_845F5E3, 0, sListMenuItems[sFameCheckerData->unk_09].unk_00); @@ -1472,21 +1443,21 @@ static void sub_812E000(void) 0 }; - if (sFameCheckerData->unk_07_2 > 5) + if (sFameCheckerData->numUnlockedPersons > 5) { sp0.unk_06 = 0; - sp0.unk_08 = sFameCheckerData->unk_07_2 - 5; + sp0.unk_08 = sFameCheckerData->numUnlockedPersons - 5; sFameCheckerData->unk_06 = AddScrollIndicatorArrowPair(&sp0, &sFameCheckerData->unk_04); } } static void sub_812E048(void) { - if (sFameCheckerData->unk_07_2 > 5) + if (sFameCheckerData->numUnlockedPersons > 5) RemoveScrollIndicatorArrowPair(sFameCheckerData->unk_06); } -static u16 sub_812E064(void) +static u16 FameCheckerGetCursorY(void) { u16 sp0, sp2; get_coro_args_x18_x1A(sFameCheckerData->scrollIndicatorArrowObjectTaskId, &sp0, &sp2);