diff options
author | scnorton <scnorton@biociphers.org> | 2017-06-28 10:31:51 -0400 |
---|---|---|
committer | scnorton <scnorton@biociphers.org> | 2017-06-28 10:31:51 -0400 |
commit | f01cdd2a380174613dc0da6e04dd19a1b0520b0a (patch) | |
tree | 456fb49759fe94165f8e74e164e5475a1eda4303 | |
parent | c038b3a51cd82ec56ed09965513e8f846a3490df (diff) |
sub_810C368
-rwxr-xr-x | asm/pokeblock.s | 163 | ||||
-rwxr-xr-x | include/menu.h | 2 | ||||
-rwxr-xr-x | include/menu_helpers.h | 1 | ||||
-rw-r--r-- | include/rom4.h | 1 | ||||
-rw-r--r-- | include/script.h | 1 | ||||
-rw-r--r-- | src/menu.c | 2 | ||||
-rwxr-xr-x | src/pokeblock.c | 49 |
7 files changed, 54 insertions, 165 deletions
diff --git a/asm/pokeblock.s b/asm/pokeblock.s index a8156d6a4..443de3841 100755 --- a/asm/pokeblock.s +++ b/asm/pokeblock.s @@ -6,169 +6,6 @@ .text - thumb_func_start sub_810C2B0 -sub_810C2B0: @ 810C2B0 - push {lr} - movs r0, 0 - bl DestroyVerticalScrollIndicator - movs r0, 0x1 - bl DestroyVerticalScrollIndicator - bl BuyMenuFreeMemory - pop {r0} - bx r0 - thumb_func_end sub_810C2B0 - - thumb_func_start sub_810C2C8 -sub_810C2C8: @ 810C2C8 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _0810C308 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0810C300 - ldr r4, _0810C30C @ =gUnknown_02039244 - ldrb r0, [r4] - cmp r0, 0x3 - bne _0810C2E8 - ldr r1, _0810C310 @ =gFieldCallback - ldr r0, _0810C314 @ =sub_8080990 - str r0, [r1] -_0810C2E8: - bl sub_810C2B0 - ldr r0, _0810C318 @ =gUnknown_083F7EA8 - ldrb r1, [r4] - lsls r1, 2 - adds r1, r0 - ldr r0, [r1] - bl SetMainCallback2 - adds r0, r5, 0 - bl DestroyTask -_0810C300: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0810C308: .4byte gPaletteFade -_0810C30C: .4byte gUnknown_02039244 -_0810C310: .4byte gFieldCallback -_0810C314: .4byte sub_8080990 -_0810C318: .4byte gUnknown_083F7EA8 - thumb_func_end sub_810C2C8 - - thumb_func_start sub_810C31C -sub_810C31C: @ 810C31C - push {r4,r5,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r4, r0, 24 - movs r0, 0x1 - negs r0, r0 - movs r5, 0 - str r5, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _0810C358 @ =gUnknown_02039244 - ldrb r0, [r0] - cmp r0, 0x1 - bls _0810C342 - ldr r0, _0810C35C @ =gScriptItemId - strh r5, [r0] -_0810C342: - ldr r0, _0810C360 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _0810C364 @ =sub_810C2C8 - str r0, [r1] - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0810C358: .4byte gUnknown_02039244 -_0810C35C: .4byte gScriptItemId -_0810C360: .4byte gTasks -_0810C364: .4byte sub_810C2C8 - thumb_func_end sub_810C31C - - thumb_func_start sub_810C368 -sub_810C368: @ 810C368 - push {r4-r6,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r6, r0, 24 - movs r4, 0 - ldr r0, _0810C3E8 @ =gUnknown_02039244 - ldrb r0, [r0] - cmp r0, 0x1 - bls _0810C37C - movs r4, 0x2 -_0810C37C: - movs r0, 0 - bl sub_80F98A4 - movs r0, 0x1 - bl sub_80F98A4 - ldr r0, _0810C3EC @ =gWindowConfig_81E6E50 - bl BasicInitMenuWindow - adds r1, r4, 0x4 - movs r0, 0x7 - movs r2, 0xD - movs r3, 0xB - bl MenuDrawTextWindow - adds r4, 0x5 - ldr r5, _0810C3F0 @ =gUnknown_0203924C - ldrb r2, [r5] - ldr r3, _0810C3F4 @ =gUnknown_083F7EF4 - ldr r0, _0810C3F8 @ =gUnknown_03000758 - ldr r0, [r0] - str r0, [sp] - movs r0, 0x8 - adds r1, r4, 0 - bl PrintMenuItemsReordered - ldrb r3, [r5] - movs r0, 0 - str r0, [sp] - movs r0, 0x5 - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0x8 - adds r2, r4, 0 - bl InitMenu - ldr r2, _0810C3FC @ =gScriptItemId - ldr r1, _0810C400 @ =gUnknown_02039248 - ldrb r0, [r1] - ldrb r1, [r1, 0x1] - adds r0, r1 - strh r0, [r2] - ldr r1, _0810C404 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r0, r1 - ldr r1, _0810C408 @ =sub_810C40C - str r1, [r0] - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0810C3E8: .4byte gUnknown_02039244 -_0810C3EC: .4byte gWindowConfig_81E6E50 -_0810C3F0: .4byte gUnknown_0203924C -_0810C3F4: .4byte gUnknown_083F7EF4 -_0810C3F8: .4byte gUnknown_03000758 -_0810C3FC: .4byte gScriptItemId -_0810C400: .4byte gUnknown_02039248 -_0810C404: .4byte gTasks -_0810C408: .4byte sub_810C40C - thumb_func_end sub_810C368 - thumb_func_start sub_810C40C sub_810C40C: @ 810C40C push {r4,r5,lr} diff --git a/include/menu.h b/include/menu.h index 7d4bc731b..9b48ab79b 100755 --- a/include/menu.h +++ b/include/menu.h @@ -59,7 +59,7 @@ void sub_807274C(u8, u8, u8, u8, const struct MenuAction[], u8, u32); s8 sub_80727CC(void); u8 sub_807288C(u8); void PrintMenuItems(u8, u8, u8, const struct MenuAction[]); -void PrintMenuItemsReordered(u8, u8, u8, const struct MenuAction[], u8*); +void PrintMenuItemsReordered(u8, u8, u8, const struct MenuAction[], const u8*); void InitYesNoMenu(u8, u8, u8); void DisplayYesNoMenu(u8, u8, u32); s8 ProcessMenuInputNoWrap_(void); diff --git a/include/menu_helpers.h b/include/menu_helpers.h index 0e39a3732..6146f0847 100755 --- a/include/menu_helpers.h +++ b/include/menu_helpers.h @@ -24,5 +24,6 @@ void BuyMenuFreeMemory(void); void sub_80F98DC(int); void sub_80F996C(u8); void LoadScrollIndicatorPalette(void); +void sub_80F98A4(u8); #endif // GUARD_MENU_HELPERS_H diff --git a/include/rom4.h b/include/rom4.h index eac4d29a2..c5d96f97b 100644 --- a/include/rom4.h +++ b/include/rom4.h @@ -23,6 +23,7 @@ struct UCoords32 }; extern struct UCoords32 gUnknown_0821664C[]; +extern void (*gFieldCallback)(void); // sub_8052F5C void flag_var_implications_of_teleport_(void); diff --git a/include/script.h b/include/script.h index 4070a838f..96874e3b4 100644 --- a/include/script.h +++ b/include/script.h @@ -56,5 +56,6 @@ void ClearRamScript(void); bool8 InitRamScript(u8 *script, u16 scriptSize, u8 mapGroup, u8 mapNum, u8 objectId); u8 *GetRamScript(u8 objectId, u8 *script); u16 gScriptResult; +u16 gScriptItemId; #endif // GUARD_SCRIPT_H diff --git a/src/menu.c b/src/menu.c index 45cfbbc2f..d532fc602 100644 --- a/src/menu.c +++ b/src/menu.c @@ -571,7 +571,7 @@ void PrintMenuItems(u8 left, u8 top, u8 menuItemCount, const struct MenuAction m MenuPrint(menuItems[i].text, left, top + 2 * i); } -void PrintMenuItemsReordered(u8 left, u8 top, u8 menuItemCount, const struct MenuAction menuItems[], u8 *order) +void PrintMenuItemsReordered(u8 left, u8 top, u8 menuItemCount, const struct MenuAction menuItems[], const u8 *order) { u8 i; diff --git a/src/pokeblock.c b/src/pokeblock.c index a47890fe9..e62e8cf90 100755 --- a/src/pokeblock.c +++ b/src/pokeblock.c @@ -12,6 +12,7 @@ #include "text.h" #include "main.h" #include "menu.h" +#include "field_fadetransition.h" #include "palette.h" #include "graphics.h" #include "decompress.h" @@ -728,3 +729,51 @@ void sub_810C23C(u8 taskId) sub_810BDAC(FALSE); } } + +void sub_810C2B0(void) +{ + DestroyVerticalScrollIndicator(0); + DestroyVerticalScrollIndicator(1); + BuyMenuFreeMemory(); +} + +void sub_810C2C8(u8 taskId) +{ + if (!gPaletteFade.active) + { + if (gUnknown_02039244 == 3) + { + gFieldCallback = sub_8080990; + } + sub_810C2B0(); + SetMainCallback2(gUnknown_083F7EA8[gUnknown_02039244]); + DestroyTask(taskId); + } +} + +void sub_810C31C(u8 taskId) +{ + BeginNormalPaletteFade(-1, 0, 0, 16, 0); + if (gUnknown_02039244 > 1) + { + gScriptItemId = ITEM_NONE; + } + gTasks[taskId].func = sub_810C2C8; +} + +void sub_810C40C(u8); + +void sub_810C368(u8 taskId) +{ + int v0 = 0; + if (gUnknown_02039244 > 1) + v0 = 2; + sub_80F98A4(0); + sub_80F98A4(1); + BasicInitMenuWindow(&gWindowConfig_81E6E50); + MenuDrawTextWindow(7, v0 + 4, 13, 11); + PrintMenuItemsReordered(8, v0 + 5, gUnknown_0203924C, (const struct MenuAction *)gUnknown_083F7EF4, gUnknown_03000758); + InitMenu(0, 8, v0 + 5, gUnknown_0203924C, 0, 5); + gScriptItemId = gUnknown_02039248[0] + gUnknown_02039248[1]; + gTasks[taskId].func = sub_810C40C; +} |