summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/item_menu.s512
-rw-r--r--include/bag.h2
-rw-r--r--include/battle_controllers.h1
-rw-r--r--include/item_menu.h4
-rw-r--r--ld_script.txt1
-rw-r--r--src/item_menu.c281
6 files changed, 287 insertions, 514 deletions
diff --git a/asm/item_menu.s b/asm/item_menu.s
index 704d8d5d8..f3af32b36 100644
--- a/asm/item_menu.s
+++ b/asm/item_menu.s
@@ -5,518 +5,6 @@
.text
- thumb_func_start GoToBagMenu
-GoToBagMenu: @ 8107DB4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r4, r2, 0
- lsls r0, 24
- lsrs r6, r0, 24
- adds r7, r6, 0
- lsls r1, 24
- lsrs r1, 24
- mov r8, r1
- bl sub_81081AC
- ldr r5, _08107DE4 @ =gUnknown_203AD10
- movs r0, 0x14
- bl Alloc
- str r0, [r5]
- cmp r0, 0
- bne _08107DE8
- adds r0, r4, 0
- bl SetMainCallback2
- b _08107E9A
- .align 2, 0
-_08107DE4: .4byte gUnknown_203AD10
-_08107DE8:
- cmp r6, 0xB
- beq _08107DF0
- ldr r0, _08107E38 @ =gUnknown_203ACFC
- strb r6, [r0, 0x4]
-_08107DF0:
- cmp r4, 0
- beq _08107DF8
- ldr r0, _08107E38 @ =gUnknown_203ACFC
- str r4, [r0]
-_08107DF8:
- ldr r1, [r5]
- movs r0, 0
- str r0, [r1]
- movs r0, 0xFF
- strb r0, [r1, 0x4]
- ldr r2, [r5]
- ldrb r1, [r2, 0x5]
- movs r0, 0x31
- negs r0, r0
- ands r0, r1
- strb r0, [r2, 0x5]
- ldr r2, [r5]
- ldrb r1, [r2, 0x5]
- movs r0, 0x3F
- ands r0, r1
- strb r0, [r2, 0x5]
- ldr r1, [r5]
- movs r0, 0x1
- negs r0, r0
- strb r0, [r1, 0x8]
- ldr r1, [r5]
- strb r0, [r1, 0x9]
- cmp r6, 0x3
- bne _08107E3C
- ldr r2, [r5]
- ldrb r1, [r2, 0x5]
- subs r0, 0xF
- ands r0, r1
- movs r1, 0x1
- orrs r0, r1
- b _08107E5A
- .align 2, 0
-_08107E38: .4byte gUnknown_203ACFC
-_08107E3C:
- cmp r7, 0x6
- bne _08107E50
- ldr r2, [r5]
- ldrb r1, [r2, 0x5]
- movs r0, 0x10
- negs r0, r0
- ands r0, r1
- movs r1, 0x2
- orrs r0, r1
- b _08107E5A
-_08107E50:
- ldr r2, [r5]
- ldrb r1, [r2, 0x5]
- movs r0, 0x10
- negs r0, r0
- ands r0, r1
-_08107E5A:
- strb r0, [r2, 0x5]
- movs r1, 0
- ldr r4, _08107EA4 @ =gTextFlags
- ldr r5, _08107EA8 @ =gSpecialVar_ItemId
- ldr r6, _08107EAC @ =sub_8107F10
- ldr r3, _08107EB0 @ =gUnknown_203AD10
- movs r2, 0
-_08107E68:
- ldr r0, [r3]
- adds r0, 0x10
- adds r0, r1
- strb r2, [r0]
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x3
- bls _08107E68
- mov r0, r8
- cmp r0, 0x2
- bhi _08107E86
- ldr r0, _08107EB4 @ =gUnknown_203ACFC
- mov r1, r8
- strh r1, [r0, 0x6]
-_08107E86:
- ldrb r0, [r4]
- movs r1, 0x5
- negs r1, r1
- ands r1, r0
- strb r1, [r4]
- movs r0, 0
- strh r0, [r5]
- adds r0, r6, 0
- bl SetMainCallback2
-_08107E9A:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08107EA4: .4byte gTextFlags
-_08107EA8: .4byte gSpecialVar_ItemId
-_08107EAC: .4byte sub_8107F10
-_08107EB0: .4byte gUnknown_203AD10
-_08107EB4: .4byte gUnknown_203ACFC
- thumb_func_end GoToBagMenu
-
- thumb_func_start CB2_BagMenuFromStartMenu
-CB2_BagMenuFromStartMenu: @ 8107EB8
- push {lr}
- ldr r2, _08107EC8 @ =CB2_ReturnToFieldWithOpenMenu
- movs r0, 0
- movs r1, 0x3
- bl GoToBagMenu
- pop {r0}
- bx r0
- .align 2, 0
-_08107EC8: .4byte CB2_ReturnToFieldWithOpenMenu
- thumb_func_end CB2_BagMenuFromStartMenu
-
- thumb_func_start sub_8107ECC
-sub_8107ECC: @ 8107ECC
- push {lr}
- ldr r2, _08107EDC @ =SetCB2ToReshowScreenAfterMenu2
- movs r0, 0x5
- movs r1, 0x3
- bl GoToBagMenu
- pop {r0}
- bx r0
- .align 2, 0
-_08107EDC: .4byte SetCB2ToReshowScreenAfterMenu2
- thumb_func_end sub_8107ECC
-
- thumb_func_start sub_8107EE0
-sub_8107EE0: @ 8107EE0
- push {lr}
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl DoScheduledBgTilemapCopiesToVram
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- thumb_func_end sub_8107EE0
-
- thumb_func_start sub_8107EFC
-sub_8107EFC: @ 8107EFC
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_8107EFC
-
- thumb_func_start sub_8107F10
-sub_8107F10: @ 8107F10
- push {lr}
-_08107F12:
- bl sub_80BF72C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08107F36
- bl sub_8107F3C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08107F36
- bl MenuHelpers_LinkSomething
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08107F12
-_08107F36:
- pop {r0}
- bx r0
- thumb_func_end sub_8107F10
-
- thumb_func_start sub_8107F3C
-sub_8107F3C: @ 8107F3C
- push {r4,r5,lr}
- ldr r0, _08107F58 @ =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x13
- bls _08107F4E
- b _0810811C
-_08107F4E:
- lsls r0, 2
- ldr r1, _08107F5C @ =_08107F60
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08107F58: .4byte gMain
-_08107F5C: .4byte _08107F60
- .align 2, 0
-_08107F60:
- .4byte _08107FB0
- .4byte _08107FBA
- .4byte _08107FC0
- .4byte _08107FC6
- .4byte _08107FD8
- .4byte _08107FDE
- .4byte _08107FE4
- .4byte _08107FF6
- .4byte _08108010
- .4byte _08108020
- .4byte _08108026
- .4byte _08108034
- .4byte _08108046
- .4byte _08108054
- .4byte _0810806E
- .4byte _081080B8
- .4byte _081080C8
- .4byte _081080D2
- .4byte _081080D8
- .4byte _081080DE
-_08107FB0:
- bl SetVBlankHBlankCallbacksToNull
- bl ClearScheduledBgCopiesToVram
- b _08108104
-_08107FBA:
- bl ScanlineEffect_Stop
- b _08108104
-_08107FC0:
- bl FreeAllSpritePalettes
- b _08108104
-_08107FC6:
- bl ResetPaletteFade
- ldr r2, _08107FD4 @ =gPaletteFade
- ldrb r0, [r2, 0x8]
- movs r1, 0x80
- orrs r0, r1
- b _08108102
- .align 2, 0
-_08107FD4: .4byte gPaletteFade
-_08107FD8:
- bl ResetSpriteData
- b _08108104
-_08107FDE:
- bl ResetItemMenuIconState
- b _08108104
-_08107FE4:
- bl MenuHelpers_LinkSomething
- lsls r0, 24
- cmp r0, 0
- beq _08107FF0
- b _08108104
-_08107FF0:
- bl ResetTasks
- b _08108104
-_08107FF6:
- bl sub_81081D0
- lsls r0, 24
- cmp r0, 0
- beq _0810803E
- ldr r0, _0810800C @ =gUnknown_203AD10
- ldr r1, [r0]
- movs r0, 0
- strb r0, [r1, 0x10]
- b _08108104
- .align 2, 0
-_0810800C: .4byte gUnknown_203AD10
-_08108010:
- bl sub_8108240
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0810801E
- b _08108134
-_0810801E:
- b _08108104
-_08108020:
- bl sub_810B858
- b _08108104
-_08108026:
- bl sub_8108E54
- bl sub_8108A68
- bl sub_8108A84
- b _08108104
-_08108034:
- bl sub_81083F4
- lsls r0, 24
- cmp r0, 0
- bne _08108104
-_0810803E:
- bl sub_810813C
- movs r0, 0x1
- b _08108136
-_08108046:
- ldr r0, _08108050 @ =gUnknown_203ACFC
- ldrb r0, [r0, 0x6]
- bl sub_810842C
- b _08108104
- .align 2, 0
-_08108050: .4byte gUnknown_203ACFC
-_08108054:
- ldr r0, _08108064 @ =gUnknown_203ACFC
- ldrb r0, [r0, 0x4]
- cmp r0, 0x3
- beq _08108068
- bl sub_81087EC
- b _08108104
- .align 2, 0
-_08108064: .4byte gUnknown_203ACFC
-_08108068:
- bl sub_810B994
- b _08108104
-_0810806E:
- ldr r4, _081080AC @ =gUnknown_203ACFC
- ldrb r0, [r4, 0x4]
- bl sub_8108388
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- ldr r0, _081080B0 @ =gMultiuseListMenuTemplate
- ldrh r2, [r4, 0x6]
- lsls r2, 1
- adds r1, r4, 0
- adds r1, 0xE
- adds r1, r2, r1
- ldrh r1, [r1]
- adds r4, 0x8
- adds r2, r4
- ldrh r2, [r2]
- bl ListMenuInit
- ldr r2, _081080B4 @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r2
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0
- strh r0, [r1, 0x8]
- strh r2, [r1, 0xE]
- strh r2, [r1, 0x18]
- b _08108104
- .align 2, 0
-_081080AC: .4byte gUnknown_203ACFC
-_081080B0: .4byte gMultiuseListMenuTemplate
-_081080B4: .4byte gTasks
-_081080B8:
- ldr r0, _081080C4 @ =gUnknown_203ACFC
- ldrb r0, [r0, 0x6]
- bl sub_80984FC
- b _08108104
- .align 2, 0
-_081080C4: .4byte gUnknown_203ACFC
-_081080C8:
- bl sub_8108888
- bl sub_81088D8
- b _08108104
-_081080D2:
- bl sub_80985E4
- b _08108104
-_081080D8:
- bl sub_8108C10
- b _08108104
-_081080DE:
- ldr r0, _081080F0 @ =gUnknown_203ACFC
- ldrb r0, [r0, 0x4]
- cmp r0, 0x3
- bne _081080F4
- movs r0, 0x1D
- bl HelpSystem_SetSomeVariable2
- b _081080FA
- .align 2, 0
-_081080F0: .4byte gUnknown_203ACFC
-_081080F4:
- movs r0, 0x9
- bl HelpSystem_SetSomeVariable2
-_081080FA:
- ldr r2, _08108114 @ =gPaletteFade
- ldrb r1, [r2, 0x8]
- movs r0, 0x7F
- ands r0, r1
-_08108102:
- strb r0, [r2, 0x8]
-_08108104:
- ldr r1, _08108118 @ =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _08108134
- .align 2, 0
-_08108114: .4byte gPaletteFade
-_08108118: .4byte gMain
-_0810811C:
- ldr r0, _0810812C @ =sub_8107EFC
- bl SetVBlankCallback
- ldr r0, _08108130 @ =sub_8107EE0
- bl SetMainCallback2
- movs r0, 0x1
- b _08108136
- .align 2, 0
-_0810812C: .4byte sub_8107EFC
-_08108130: .4byte sub_8107EE0
-_08108134:
- movs r0, 0
-_08108136:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8107F3C
-
- thumb_func_start sub_810813C
-sub_810813C: @ 810813C
- push {lr}
- sub sp, 0x4
- movs r0, 0x1
- negs r0, r0
- movs r1, 0x2
- negs r1, r1
- movs r2, 0
- str r2, [sp]
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, _0810816C @ =sub_8108178
- movs r1, 0
- bl CreateTask
- ldr r0, _08108170 @ =sub_8107EFC
- bl SetVBlankCallback
- ldr r0, _08108174 @ =sub_8107EE0
- bl SetMainCallback2
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_0810816C: .4byte sub_8108178
-_08108170: .4byte sub_8107EFC
-_08108174: .4byte sub_8107EE0
- thumb_func_end sub_810813C
-
- thumb_func_start sub_8108178
-sub_8108178: @ 8108178
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _081081A4 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0810819C
- ldr r0, _081081A8 @ =gUnknown_203ACFC
- ldr r0, [r0]
- bl SetMainCallback2
- bl sub_8108B04
- adds r0, r4, 0
- bl DestroyTask
-_0810819C:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081081A4: .4byte gPaletteFade
-_081081A8: .4byte gUnknown_203ACFC
- thumb_func_end sub_8108178
-
- thumb_func_start sub_81081AC
-sub_81081AC: @ 81081AC
- ldr r0, _081081C0 @ =gUnknown_203AD10
- movs r1, 0
- str r1, [r0]
- ldr r0, _081081C4 @ =gUnknown_203AD14
- str r1, [r0]
- ldr r0, _081081C8 @ =gUnknown_203AD18
- str r1, [r0]
- ldr r0, _081081CC @ =gUnknown_203AD1C
- str r1, [r0]
- bx lr
- .align 2, 0
-_081081C0: .4byte gUnknown_203AD10
-_081081C4: .4byte gUnknown_203AD14
-_081081C8: .4byte gUnknown_203AD18
-_081081CC: .4byte gUnknown_203AD1C
- thumb_func_end sub_81081AC
-
thumb_func_start sub_81081D0
sub_81081D0: @ 81081D0
push {r4,r5,lr}
diff --git a/include/bag.h b/include/bag.h
index f82531778..8c085a211 100644
--- a/include/bag.h
+++ b/include/bag.h
@@ -1,6 +1,8 @@
#ifndef GUARD_BAG_H
#define GUARD_BAG_H
+#include "menu_helpers.h"
+
void sub_810B858(void);
void sub_810B8F0(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, s8 speed, u8 colorIdx);
void sub_810B958(const u8 * str);
diff --git a/include/battle_controllers.h b/include/battle_controllers.h
index 06a0e2957..412856353 100644
--- a/include/battle_controllers.h
+++ b/include/battle_controllers.h
@@ -2,6 +2,7 @@
#define GUARD_BATTLE_CONTROLLERS_H
#include "global.h"
+#include "battle.h"
enum
{
diff --git a/include/item_menu.h b/include/item_menu.h
index 187674e83..d141c6601 100644
--- a/include/item_menu.h
+++ b/include/item_menu.h
@@ -14,8 +14,8 @@ struct BagStruct
u8 location;
u8 pocket;
u16 unk6;
- u8 cursorPosition[6];
- u8 scrollPosition[6];
+ u16 itemsAbove[3];
+ u16 cursorPos[3];
};
extern struct BagStruct gUnknown_203ACFC;
diff --git a/ld_script.txt b/ld_script.txt
index f07e480a2..feca781e7 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -232,6 +232,7 @@ SECTIONS {
src/pokedex_screen.o(.text);
asm/pokedex_screen.o(.text);
src/list_menu.o(.text);
+ src/item_menu.o(.text);
asm/item_menu.o(.text);
src/save_location.o(.text);
src/bag.o(.text);
diff --git a/src/item_menu.c b/src/item_menu.c
new file mode 100644
index 000000000..9128d0856
--- /dev/null
+++ b/src/item_menu.c
@@ -0,0 +1,281 @@
+#include "global.h"
+#include "bag.h"
+#include "battle_controllers.h"
+#include "bg.h"
+#include "help_system.h"
+#include "item_menu.h"
+#include "item_menu_icons.h"
+#include "list_menu.h"
+#include "malloc.h"
+#include "new_menu_helpers.h"
+#include "overworld.h"
+#include "palette.h"
+#include "scanline_effect.h"
+#include "text.h"
+#include "constants/items.h"
+
+struct BagMenuAlloc
+{
+ u32 field_00;
+ u8 field_04;
+ u8 field_05_0:4;
+ u8 field_05_4:2;
+ u8 field_05_6:2;
+ u16 field_06;
+ u8 field_08;
+ u8 field_09;
+ u8 filler_0A[6];
+ u8 field_10[4];
+};
+
+EWRAM_DATA struct BagStruct gUnknown_203ACFC = {};
+EWRAM_DATA struct BagMenuAlloc * gUnknown_203AD10 = NULL;
+EWRAM_DATA void * gUnknown_203AD14 = NULL;
+EWRAM_DATA struct ListMenuItem * gUnknown_203AD18 = NULL;
+EWRAM_DATA u8 (*gUnknown_203AD1C)[20] = NULL;
+
+void sub_8107F10(void);
+bool8 sub_8107F3C(void);
+void sub_810813C(void);
+void sub_8108178(u8 taskId);
+void sub_81081AC(void);
+bool8 sub_81081D0(void);
+bool8 sub_8108240(void);
+u8 sub_8108388(u8 location);
+bool8 sub_81083F4(void);
+void sub_810842C(u8 a0);
+void sub_81087EC(void);
+void sub_8108888(void);
+void sub_81088D8(void);
+void sub_8108A68(void);
+void sub_8108A84(void);
+void sub_8108B04(void);
+void sub_8108C10(void);
+void sub_8108E54(void);
+
+void GoToBagMenu(u8 location, u8 a1, MainCallback a2)
+{
+ u8 i;
+
+ sub_81081AC();
+ gUnknown_203AD10 = Alloc(sizeof(struct BagMenuAlloc));
+ if (gUnknown_203AD10 == NULL)
+ SetMainCallback2(a2);
+ else
+ {
+ if (location != 11)
+ gUnknown_203ACFC.location = location;
+ if (a2 != NULL)
+ gUnknown_203ACFC.bagCallback = a2;
+ gUnknown_203AD10->field_00 = 0;
+ gUnknown_203AD10->field_04 = 0xFF;
+ gUnknown_203AD10->field_05_4 = 0;
+ gUnknown_203AD10->field_05_6 = 0;
+ gUnknown_203AD10->field_08 = 0xFF;
+ gUnknown_203AD10->field_09 = 0xFF;
+ if (location == 3)
+ gUnknown_203AD10->field_05_0 = 1;
+ else if (location == 6)
+ gUnknown_203AD10->field_05_0 = 2;
+ else
+ gUnknown_203AD10->field_05_0 = 0;
+ for (i = 0; i < 4; i++)
+ {
+ gUnknown_203AD10->field_10[i] = 0;
+ }
+ if (a1 == 0 || a1 == 1 || a1 == 2)
+ gUnknown_203ACFC.unk6 = a1;
+ gTextFlags.autoScroll = FALSE;
+ gSpecialVar_ItemId = ITEM_NONE;
+ SetMainCallback2(sub_8107F10);
+ }
+}
+
+void CB2_BagMenuFromStartMenu(void)
+{
+ GoToBagMenu(0, 3, CB2_ReturnToFieldWithOpenMenu);
+}
+
+void sub_8107ECC(void)
+{
+ GoToBagMenu(5, 3, SetCB2ToReshowScreenAfterMenu2);
+}
+
+void sub_8107EE0(void)
+{
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ DoScheduledBgTilemapCopiesToVram();
+ UpdatePaletteFade();
+}
+
+void sub_8107EFC(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+void sub_8107F10(void)
+{
+ while (1)
+ {
+ if ((u8)sub_80BF72C() == TRUE)
+ break;
+ if (sub_8107F3C() == TRUE)
+ break;
+ if (MenuHelpers_LinkSomething() == TRUE)
+ break;
+ }
+}
+
+bool8 sub_8107F3C(void)
+{
+ u8 taskId;
+
+ switch (gMain.state)
+ {
+ case 0:
+ SetVBlankHBlankCallbacksToNull();
+ ClearScheduledBgCopiesToVram();
+ gMain.state++;
+ break;
+ case 1:
+ ScanlineEffect_Stop();
+ gMain.state++;
+ break;
+ case 2:
+ FreeAllSpritePalettes();
+ gMain.state++;
+ break;
+ case 3:
+ ResetPaletteFade();
+ gPaletteFade.bufferTransferDisabled = TRUE;
+ gMain.state++;
+ break;
+ case 4:
+ ResetSpriteData();
+ gMain.state++;
+ break;
+ case 5:
+ ResetItemMenuIconState();
+ gMain.state++;
+ break;
+ case 6:
+ if (!MenuHelpers_LinkSomething())
+ {
+ ResetTasks();
+ }
+ gMain.state++;
+ break;
+ case 7:
+ if (sub_81081D0())
+ {
+ gUnknown_203AD10->field_10[0] = 0;
+ gMain.state++;
+ }
+ else
+ {
+ sub_810813C();
+ return TRUE;
+ }
+ break;
+ case 8:
+ if (sub_8108240() == TRUE)
+ gMain.state++;
+ break;
+ case 9:
+ sub_810B858();
+ gMain.state++;
+ break;
+ case 10:
+ sub_8108E54();
+ sub_8108A68();
+ sub_8108A84();
+ gMain.state++;
+ break;
+ case 11:
+ if (!sub_81083F4())
+ {
+ sub_810813C();
+ return TRUE;
+ }
+ gMain.state++;
+ break;
+ case 12:
+ sub_810842C(gUnknown_203ACFC.unk6);
+ gMain.state++;
+ break;
+ case 13:
+ if (gUnknown_203ACFC.location != 3)
+ sub_81087EC();
+ else
+ sub_810B994();
+ gMain.state++;
+ break;
+ case 14:
+ taskId = sub_8108388(gUnknown_203ACFC.location);
+ gTasks[taskId].data[0] = ListMenuInit(&gMultiuseListMenuTemplate, gUnknown_203ACFC.cursorPos[gUnknown_203ACFC.unk6], gUnknown_203ACFC.itemsAbove[gUnknown_203ACFC.unk6]);
+ gTasks[taskId].data[3] = 0;
+ gTasks[taskId].data[8] = 0;
+ gMain.state++;
+ break;
+ case 15:
+ sub_80984FC(gUnknown_203ACFC.unk6);
+ gMain.state++;
+ break;
+ case 16:
+ sub_8108888();
+ sub_81088D8();
+ gMain.state++;
+ break;
+ case 17:
+ sub_80985E4();
+ gMain.state++;
+ break;
+ case 18:
+ sub_8108C10();
+ gMain.state++;
+ break;
+ case 19:
+ if (gUnknown_203ACFC.location == 3)
+ HelpSystem_SetSomeVariable2(29);
+ else
+ HelpSystem_SetSomeVariable2(9);
+ gPaletteFade.bufferTransferDisabled = FALSE;
+ gMain.state++;
+ break;
+ default:
+ SetVBlankCallback(sub_8107EFC);
+ SetMainCallback2(sub_8107EE0);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+void sub_810813C(void)
+{
+ BeginNormalPaletteFade(0xFFFFFFFF, -2, 0, 16, RGB_BLACK);
+ CreateTask(sub_8108178, 0);
+ SetVBlankCallback(sub_8107EFC);
+ SetMainCallback2(sub_8107EE0);
+}
+
+void sub_8108178(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ SetMainCallback2(gUnknown_203ACFC.bagCallback);
+ sub_8108B04();
+ DestroyTask(taskId);
+ }
+}
+
+void sub_81081AC(void)
+{
+ gUnknown_203AD10 = NULL;
+ gUnknown_203AD14 = NULL;
+ gUnknown_203AD18 = NULL;
+ gUnknown_203AD1C = NULL;
+}