summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorscnorton <scnorton@biociphers.org>2017-06-28 10:31:51 -0400
committerscnorton <scnorton@biociphers.org>2017-06-28 10:31:51 -0400
commitf01cdd2a380174613dc0da6e04dd19a1b0520b0a (patch)
tree456fb49759fe94165f8e74e164e5475a1eda4303
parentc038b3a51cd82ec56ed09965513e8f846a3490df (diff)
sub_810C368
-rwxr-xr-xasm/pokeblock.s163
-rwxr-xr-xinclude/menu.h2
-rwxr-xr-xinclude/menu_helpers.h1
-rw-r--r--include/rom4.h1
-rw-r--r--include/script.h1
-rw-r--r--src/menu.c2
-rwxr-xr-xsrc/pokeblock.c49
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;
+}