summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/shop.s455
-rw-r--r--include/shop.h6
-rw-r--r--ld_script.txt1
-rw-r--r--src/shop.c295
4 files changed, 298 insertions, 459 deletions
diff --git a/asm/shop.s b/asm/shop.s
deleted file mode 100644
index 105407e01..000000000
--- a/asm/shop.s
+++ /dev/null
@@ -1,455 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start ClearItemPurchases
-ClearItemPurchases: @ 80B4534
- push {lr}
- ldr r0, _080B4548 @ =gUnknown_02038730
- movs r1, 0
- strb r1, [r0]
- ldr r0, _080B454C @ =gUnknown_02038724
- movs r1, 0x3
- bl ClearItemSlots
- pop {r0}
- bx r0
- .align 2, 0
-_080B4548: .4byte gUnknown_02038730
-_080B454C: .4byte gUnknown_02038724
- thumb_func_end ClearItemPurchases
-
- thumb_func_start CreatePokemartMenu
-CreatePokemartMenu: @ 80B4550
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0
- bl CreateShopMenu
- adds r0, r4, 0
- bl SetShopItemsForSale
- bl ClearItemPurchases
- ldr r0, _080B4570 @ =EnableBothScriptContexts
- bl SetShopMenuCallback
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B4570: .4byte EnableBothScriptContexts
- thumb_func_end CreatePokemartMenu
-
- thumb_func_start CreateDecorationShop1Menu
-CreateDecorationShop1Menu: @ 80B4574
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x1
- bl CreateShopMenu
- adds r0, r4, 0
- bl SetShopItemsForSale
- ldr r0, _080B4590 @ =EnableBothScriptContexts
- bl SetShopMenuCallback
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B4590: .4byte EnableBothScriptContexts
- thumb_func_end CreateDecorationShop1Menu
-
- thumb_func_start CreateDecorationShop2Menu
-CreateDecorationShop2Menu: @ 80B4594
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x2
- bl CreateShopMenu
- adds r0, r4, 0
- bl SetShopItemsForSale
- ldr r0, _080B45B0 @ =EnableBothScriptContexts
- bl SetShopMenuCallback
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B45B0: .4byte EnableBothScriptContexts
- thumb_func_end CreateDecorationShop2Menu
-
- thumb_func_start sub_80B45B4
-sub_80B45B4: @ 80B45B4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x10
- mov r9, r1
- lsls r0, 24
- lsrs r0, 24
- lsls r2, 16
- lsrs r2, 16
- mov r10, r2
- ldr r2, _080B4648 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldrh r0, [r1, 0x10]
- subs r0, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- ldrh r0, [r1, 0x12]
- subs r0, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- ldrh r4, [r1, 0xA]
- movs r2, 0xC
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _080B4678
- movs r2, 0
- lsls r5, 16
- str r5, [sp, 0xC]
- lsls r0, r3, 16
- lsls r1, r4, 16
- asrs r0, 16
- str r0, [sp]
- asrs r1, 16
- str r1, [sp, 0x4]
- lsls r0, r1, 1
- mov r1, r9
- adds r7, r0, r1
-_080B4608:
- movs r4, 0
- lsls r2, 16
- mov r8, r2
- asrs r0, r2, 16
- ldr r2, [sp]
- adds r6, r2, r0
-_080B4614:
- ldr r0, [sp, 0xC]
- asrs r1, r0, 16
- lsls r4, 16
- asrs r0, r4, 16
- adds r5, r1, r0
- adds r0, r5, 0
- adds r1, r6, 0
- bl MapGridGetMetatileIdAt
- movs r2, 0
- ldrsh r1, [r7, r2]
- lsls r0, 16
- asrs r0, 16
- cmp r1, r0
- bne _080B465C
- ldr r0, [sp, 0x4]
- cmp r0, 0x2
- beq _080B464C
- ldrh r0, [r7, 0x2]
- mov r2, r10
- orrs r2, r0
- adds r0, r5, 0
- adds r1, r6, 0
- bl MapGridSetMetatileIdAt
- b _080B465C
- .align 2, 0
-_080B4648: .4byte gTasks
-_080B464C:
- mov r1, r9
- ldrh r0, [r1]
- mov r2, r10
- orrs r2, r0
- adds r0, r5, 0
- adds r1, r6, 0
- bl MapGridSetMetatileIdAt
-_080B465C:
- movs r2, 0x80
- lsls r2, 9
- adds r0, r4, r2
- lsrs r4, r0, 16
- asrs r0, 16
- cmp r0, 0x2
- ble _080B4614
- adds r0, r2, 0
- add r0, r8
- lsrs r2, r0, 16
- asrs r0, 16
- cmp r0, 0x2
- ble _080B4608
- b _080B4700
-_080B4678:
- movs r2, 0
- lsls r5, 16
- str r5, [sp, 0xC]
- lsls r0, r3, 16
- lsls r1, r4, 16
- asrs r0, 16
- str r0, [sp, 0x8]
- asrs r7, r1, 16
-_080B4688:
- movs r4, 0
- lsls r2, 16
- mov r8, r2
- asrs r0, r2, 16
- ldr r1, [sp, 0x8]
- adds r6, r1, r0
-_080B4694:
- ldr r2, [sp, 0xC]
- asrs r1, r2, 16
- lsls r4, 16
- asrs r0, r4, 16
- adds r5, r1, r0
- adds r0, r5, 0
- adds r1, r6, 0
- bl MapGridGetMetatileIdAt
- movs r1, 0x2
- subs r1, r7
- lsls r1, 1
- add r1, r9
- movs r2, 0
- ldrsh r1, [r1, r2]
- lsls r0, 16
- asrs r0, 16
- cmp r1, r0
- bne _080B46E6
- cmp r7, 0x2
- beq _080B46D6
- movs r0, 0x1
- subs r0, r7
- lsls r0, 1
- add r0, r9
- ldrh r0, [r0]
- mov r2, r10
- orrs r2, r0
- adds r0, r5, 0
- adds r1, r6, 0
- bl MapGridSetMetatileIdAt
- b _080B46E6
-_080B46D6:
- mov r1, r9
- ldrh r0, [r1, 0x4]
- mov r2, r10
- orrs r2, r0
- adds r0, r5, 0
- adds r1, r6, 0
- bl MapGridSetMetatileIdAt
-_080B46E6:
- movs r2, 0x80
- lsls r2, 9
- adds r0, r4, r2
- lsrs r4, r0, 16
- asrs r0, 16
- cmp r0, 0x2
- ble _080B4694
- adds r0, r2, 0
- add r0, r8
- lsrs r2, r0, 16
- asrs r0, 16
- cmp r0, 0x2
- ble _080B4688
-_080B4700:
- add sp, 0x10
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80B45B4
-
- thumb_func_start sub_80B4710
-sub_80B4710: @ 80B4710
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- lsls r0, r3, 2
- adds r0, r3
- lsls r0, 3
- ldr r1, _080B4738 @ =gTasks + 0x8
- adds r4, r0, r1
- movs r0, 0x1
- strh r0, [r4, 0x6]
- movs r1, 0
- ldrsh r0, [r4, r1]
- cmp r0, 0x6
- bhi _080B47AA
- lsls r0, 2
- ldr r1, _080B473C @ =_080B4740
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080B4738: .4byte gTasks + 0x8
-_080B473C: .4byte _080B4740
- .align 2, 0
-_080B4740:
- .4byte _080B475C
- .4byte _080B4764
- .4byte _080B476C
- .4byte _080B4774
- .4byte _080B477C
- .4byte _080B4790
- .4byte _080B47A0
-_080B475C:
- ldr r1, _080B4760 @ =gUnknown_083CC714
- b _080B4792
- .align 2, 0
-_080B4760: .4byte gUnknown_083CC714
-_080B4764:
- ldr r1, _080B4768 @ =gUnknown_083CC71A
- b _080B4792
- .align 2, 0
-_080B4768: .4byte gUnknown_083CC71A
-_080B476C:
- ldr r1, _080B4770 @ =gUnknown_083CC720
- b _080B477E
- .align 2, 0
-_080B4770: .4byte gUnknown_083CC720
-_080B4774:
- ldr r1, _080B4778 @ =gUnknown_083CC726
- b _080B4792
- .align 2, 0
-_080B4778: .4byte gUnknown_083CC726
-_080B477C:
- ldr r1, _080B478C @ =gUnknown_083CC72C
-_080B477E:
- movs r2, 0xC0
- lsls r2, 4
- adds r0, r3, 0
- bl sub_80B45B4
- b _080B47AA
- .align 2, 0
-_080B478C: .4byte gUnknown_083CC72C
-_080B4790:
- ldr r1, _080B479C @ =gUnknown_083CC732
-_080B4792:
- adds r0, r3, 0
- movs r2, 0
- bl sub_80B45B4
- b _080B47AA
- .align 2, 0
-_080B479C: .4byte gUnknown_083CC732
-_080B47A0:
- ldr r1, _080B47D4 @ =gUnknown_083CC738
- adds r0, r3, 0
- movs r2, 0
- bl sub_80B45B4
-_080B47AA:
- ldrh r0, [r4]
- adds r0, 0x1
- movs r1, 0x7
- ands r0, r1
- strh r0, [r4]
- adds r5, r0, 0
- cmp r5, 0
- bne _080B47CE
- bl DrawWholeMapView
- movs r1, 0x2
- ldrsh r0, [r4, r1]
- adds r0, 0x1
- movs r1, 0x3
- bl __modsi3
- strh r0, [r4, 0x2]
- strh r5, [r4, 0x6]
-_080B47CE:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B47D4: .4byte gUnknown_083CC738
- thumb_func_end sub_80B4710
-
- thumb_func_start sub_80B47D8
-sub_80B47D8: @ 80B47D8
- push {r4-r7,lr}
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- ldr r6, _080B481C @ =sub_80B4710
- adds r0, r6, 0
- movs r1, 0
- bl CreateTask
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, _080B4820 @ =gTasks + 0x8
- adds r7, r0, r1
- adds r0, r7, 0
- adds r0, 0x8
- adds r1, r7, 0
- adds r1, 0xA
- bl PlayerGetDestCoords
- movs r0, 0
- strh r0, [r7]
- strh r0, [r7, 0x2]
- strh r5, [r7, 0x4]
- adds r0, r4, 0
- bl _call_via_r6
- adds r0, r4, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_080B481C: .4byte sub_80B4710
-_080B4820: .4byte gTasks + 0x8
- thumb_func_end sub_80B47D8
-
- thumb_func_start sub_80B4824
-sub_80B4824: @ 80B4824
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl sub_80B47D8
- ldr r1, _080B4838 @ =gUnknown_02038731
- strb r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_080B4838: .4byte gUnknown_02038731
- thumb_func_end sub_80B4824
-
- thumb_func_start sub_80B483C
-sub_80B483C: @ 80B483C
- push {lr}
- ldr r0, _080B484C @ =gUnknown_02038731
- ldrb r0, [r0]
- bl DestroyTask
- pop {r0}
- bx r0
- .align 2, 0
-_080B484C: .4byte gUnknown_02038731
- thumb_func_end sub_80B483C
-
- thumb_func_start sub_80B4850
-sub_80B4850: @ 80B4850
- push {lr}
- ldr r2, _080B4874 @ =gTasks
- ldr r0, _080B4878 @ =gUnknown_02038731
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r1, r0, r2
- movs r2, 0xE
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _080B487C
- movs r2, 0xA
- ldrsh r0, [r1, r2]
- cmp r0, 0x2
- bne _080B487C
- movs r0, 0
- b _080B487E
- .align 2, 0
-_080B4874: .4byte gTasks
-_080B4878: .4byte gUnknown_02038731
-_080B487C:
- movs r0, 0x1
-_080B487E:
- pop {r1}
- bx r1
- thumb_func_end sub_80B4850
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/include/shop.h b/include/shop.h
index 414bd628f..3923b85ab 100644
--- a/include/shop.h
+++ b/include/shop.h
@@ -11,9 +11,9 @@ void BuyMenuDrawMapGraphics(void);
void sub_80B3764(int, int);
void sub_80B37EC(void);
void sub_80B40E8(u8);
-void CreatePokemartMenu(void *);
-void CreateDecorationShop1Menu(void *);
-void CreateDecorationShop2Menu(void *);
+void CreatePokemartMenu(u16 *);
+void CreateDecorationShop1Menu(u16 *);
+void CreateDecorationShop2Menu(u16 *);
void sub_80B356C(void);
void sub_80B368C(void);
diff --git a/ld_script.txt b/ld_script.txt
index 75117faa6..9c428c267 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -159,7 +159,6 @@ SECTIONS {
src/matsuda_debug_menu.o(.text);
asm/contest.o(.text);
src/shop.o(.text);
- asm/shop.o(.text);
src/berry.o(.text);
src/script_menu.o(.text);
src/naming_screen.o(.text);
diff --git a/src/shop.c b/src/shop.c
index b053e3f2e..737d0e2bd 100644
--- a/src/shop.c
+++ b/src/shop.c
@@ -25,6 +25,7 @@
#include "songs.h"
#include "rom4.h"
#include "decoration_inventory.h"
+#include "field_camera.h"
extern bool8 sub_80A52C4(u8, u8);
@@ -73,6 +74,7 @@ enum
};
extern u8 gUnknown_02038730;
+extern u8 gUnknown_02038731;
extern s16 gUnknown_020386A4[][4]; // game freak barely uses 2d arrays wtf?
@@ -1226,3 +1228,296 @@ _080B4530: .4byte gTasks\n\
.syntax divided");
}
#endif
+
+void ClearItemPurchases(void)
+{
+ gUnknown_02038730 = 0;
+ ClearItemSlots(gUnknown_02038724, 3);
+}
+
+void CreatePokemartMenu(u16 *itemList)
+{
+ CreateShopMenu(MART_TYPE_0);
+ SetShopItemsForSale(itemList);
+ ClearItemPurchases();
+ SetShopMenuCallback(EnableBothScriptContexts);
+}
+
+void CreateDecorationShop1Menu(u16 *itemList)
+{
+ CreateShopMenu(MART_TYPE_1);
+ SetShopItemsForSale(itemList);
+ SetShopMenuCallback(EnableBothScriptContexts);
+}
+
+void CreateDecorationShop2Menu(u16 *itemList)
+{
+ CreateShopMenu(MART_TYPE_2);
+ SetShopItemsForSale(itemList);
+ SetShopMenuCallback(EnableBothScriptContexts);
+}
+
+// no.
+__attribute__((naked))
+void sub_80B45B4(u8 taskId, u16 *list, int var3)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x10\n\
+ mov r9, r1\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ lsls r2, 16\n\
+ lsrs r2, 16\n\
+ mov r10, r2\n\
+ ldr r2, _080B4648 @ =gTasks\n\
+ lsls r1, r0, 2\n\
+ adds r1, r0\n\
+ lsls r1, 3\n\
+ adds r1, r2\n\
+ ldrh r0, [r1, 0x10]\n\
+ subs r0, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r5, r0, 16\n\
+ ldrh r0, [r1, 0x12]\n\
+ subs r0, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r3, r0, 16\n\
+ ldrh r4, [r1, 0xA]\n\
+ movs r2, 0xC\n\
+ ldrsh r0, [r1, r2]\n\
+ cmp r0, 0\n\
+ bne _080B4678\n\
+ movs r2, 0\n\
+ lsls r5, 16\n\
+ str r5, [sp, 0xC]\n\
+ lsls r0, r3, 16\n\
+ lsls r1, r4, 16\n\
+ asrs r0, 16\n\
+ str r0, [sp]\n\
+ asrs r1, 16\n\
+ str r1, [sp, 0x4]\n\
+ lsls r0, r1, 1\n\
+ mov r1, r9\n\
+ adds r7, r0, r1\n\
+_080B4608:\n\
+ movs r4, 0\n\
+ lsls r2, 16\n\
+ mov r8, r2\n\
+ asrs r0, r2, 16\n\
+ ldr r2, [sp]\n\
+ adds r6, r2, r0\n\
+_080B4614:\n\
+ ldr r0, [sp, 0xC]\n\
+ asrs r1, r0, 16\n\
+ lsls r4, 16\n\
+ asrs r0, r4, 16\n\
+ adds r5, r1, r0\n\
+ adds r0, r5, 0\n\
+ adds r1, r6, 0\n\
+ bl MapGridGetMetatileIdAt\n\
+ movs r2, 0\n\
+ ldrsh r1, [r7, r2]\n\
+ lsls r0, 16\n\
+ asrs r0, 16\n\
+ cmp r1, r0\n\
+ bne _080B465C\n\
+ ldr r0, [sp, 0x4]\n\
+ cmp r0, 0x2\n\
+ beq _080B464C\n\
+ ldrh r0, [r7, 0x2]\n\
+ mov r2, r10\n\
+ orrs r2, r0\n\
+ adds r0, r5, 0\n\
+ adds r1, r6, 0\n\
+ bl MapGridSetMetatileIdAt\n\
+ b _080B465C\n\
+ .align 2, 0\n\
+_080B4648: .4byte gTasks\n\
+_080B464C:\n\
+ mov r1, r9\n\
+ ldrh r0, [r1]\n\
+ mov r2, r10\n\
+ orrs r2, r0\n\
+ adds r0, r5, 0\n\
+ adds r1, r6, 0\n\
+ bl MapGridSetMetatileIdAt\n\
+_080B465C:\n\
+ movs r2, 0x80\n\
+ lsls r2, 9\n\
+ adds r0, r4, r2\n\
+ lsrs r4, r0, 16\n\
+ asrs r0, 16\n\
+ cmp r0, 0x2\n\
+ ble _080B4614\n\
+ adds r0, r2, 0\n\
+ add r0, r8\n\
+ lsrs r2, r0, 16\n\
+ asrs r0, 16\n\
+ cmp r0, 0x2\n\
+ ble _080B4608\n\
+ b _080B4700\n\
+_080B4678:\n\
+ movs r2, 0\n\
+ lsls r5, 16\n\
+ str r5, [sp, 0xC]\n\
+ lsls r0, r3, 16\n\
+ lsls r1, r4, 16\n\
+ asrs r0, 16\n\
+ str r0, [sp, 0x8]\n\
+ asrs r7, r1, 16\n\
+_080B4688:\n\
+ movs r4, 0\n\
+ lsls r2, 16\n\
+ mov r8, r2\n\
+ asrs r0, r2, 16\n\
+ ldr r1, [sp, 0x8]\n\
+ adds r6, r1, r0\n\
+_080B4694:\n\
+ ldr r2, [sp, 0xC]\n\
+ asrs r1, r2, 16\n\
+ lsls r4, 16\n\
+ asrs r0, r4, 16\n\
+ adds r5, r1, r0\n\
+ adds r0, r5, 0\n\
+ adds r1, r6, 0\n\
+ bl MapGridGetMetatileIdAt\n\
+ movs r1, 0x2\n\
+ subs r1, r7\n\
+ lsls r1, 1\n\
+ add r1, r9\n\
+ movs r2, 0\n\
+ ldrsh r1, [r1, r2]\n\
+ lsls r0, 16\n\
+ asrs r0, 16\n\
+ cmp r1, r0\n\
+ bne _080B46E6\n\
+ cmp r7, 0x2\n\
+ beq _080B46D6\n\
+ movs r0, 0x1\n\
+ subs r0, r7\n\
+ lsls r0, 1\n\
+ add r0, r9\n\
+ ldrh r0, [r0]\n\
+ mov r2, r10\n\
+ orrs r2, r0\n\
+ adds r0, r5, 0\n\
+ adds r1, r6, 0\n\
+ bl MapGridSetMetatileIdAt\n\
+ b _080B46E6\n\
+_080B46D6:\n\
+ mov r1, r9\n\
+ ldrh r0, [r1, 0x4]\n\
+ mov r2, r10\n\
+ orrs r2, r0\n\
+ adds r0, r5, 0\n\
+ adds r1, r6, 0\n\
+ bl MapGridSetMetatileIdAt\n\
+_080B46E6:\n\
+ movs r2, 0x80\n\
+ lsls r2, 9\n\
+ adds r0, r4, r2\n\
+ lsrs r4, r0, 16\n\
+ asrs r0, 16\n\
+ cmp r0, 0x2\n\
+ ble _080B4694\n\
+ adds r0, r2, 0\n\
+ add r0, r8\n\
+ lsrs r2, r0, 16\n\
+ asrs r0, 16\n\
+ cmp r0, 0x2\n\
+ ble _080B4688\n\
+_080B4700:\n\
+ add sp, 0x10\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .syntax divided");
+}
+
+extern u16 gUnknown_083CC714[];
+extern u16 gUnknown_083CC71A[];
+extern u16 gUnknown_083CC720[];
+extern u16 gUnknown_083CC726[];
+extern u16 gUnknown_083CC72C[];
+extern u16 gUnknown_083CC732[];
+extern u16 gUnknown_083CC738[];
+
+void sub_80B4710(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+
+ data[3] = 1;
+
+ switch(data[0])
+ {
+ case 0:
+ sub_80B45B4(taskId, gUnknown_083CC714, 0);
+ break;
+ case 1:
+ sub_80B45B4(taskId, gUnknown_083CC71A, 0);
+ break;
+ case 2:
+ sub_80B45B4(taskId, gUnknown_083CC720, 0xC00);
+ break;
+ case 3:
+ sub_80B45B4(taskId, gUnknown_083CC726, 0);
+ break;
+ case 4:
+ sub_80B45B4(taskId, gUnknown_083CC72C, 0xC00);
+ break;
+ case 5:
+ sub_80B45B4(taskId, gUnknown_083CC732, 0);
+ break;
+ case 6:
+ sub_80B45B4(taskId, gUnknown_083CC738, 0);
+ break;
+ }
+
+ data[0] = (data[0] + 1) & 7;
+ if(!data[0])
+ {
+ DrawWholeMapView();
+ data[1] = (data[1] + 1) % 3;
+ data[3] = 0;
+ }
+}
+
+u8 sub_80B47D8(u16 var)
+{
+ u8 taskId = CreateTask(sub_80B4710, 0);
+ s16 *data = gTasks[taskId].data;
+
+ PlayerGetDestCoords(&data[4], &data[5]);
+ data[0] = 0;
+ data[1] = 0;
+ data[2] = var;
+ sub_80B4710(taskId);
+ return taskId;
+}
+
+void sub_80B4824(u8 var)
+{
+ gUnknown_02038731 = sub_80B47D8(var);
+}
+
+void sub_80B483C(void)
+{
+ DestroyTask(gUnknown_02038731);
+}
+
+bool8 sub_80B4850(void)
+{
+ if(gTasks[gUnknown_02038731].data[3] == 0 && gTasks[gUnknown_02038731].data[1] == 2)
+ return FALSE;
+ else
+ return TRUE;
+}