summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEvan <eroelke@gmail.com>2019-11-24 17:22:02 -0700
committerEvan <eroelke@gmail.com>2019-11-24 17:22:02 -0700
commite6a882cc920077f7e555714983a8835fbbe3e4bd (patch)
tree5ed8410d1a884cd8cba59b225da290710c51dc79 /src
parent10ee4b2cf6c380a2e1b4d1d02bbec3b3682257b1 (diff)
separate sea cottage anim functions
Diffstat (limited to 'src')
-rw-r--r--src/sea_cottage_special_anim.c417
-rw-r--r--src/shop.c24
2 files changed, 418 insertions, 23 deletions
diff --git a/src/sea_cottage_special_anim.c b/src/sea_cottage_special_anim.c
new file mode 100644
index 000000000..e9b05a0fc
--- /dev/null
+++ b/src/sea_cottage_special_anim.c
@@ -0,0 +1,417 @@
+#include "global.h"
+#include "event_data.h"
+#include "task.h"
+#include "menu.h"
+#include "field_player_avatar.h"
+#include "fieldmap.h"
+#include "field_map_obj.h"
+#include "field_camera.h"
+
+// Defines
+#define t0 data[0]
+#define tX data[4]
+#define tListTaskId data[7]
+
+// RAM
+EWRAM_DATA u8 gUnknown_2039984 = 0;
+
+
+// Function Declarations
+static void sub_809C334(u8 taskId);
+static void sub_809C500(u8 taskId);
+static void sub_809C640(u8 taskId);
+
+// Data Definitions
+static const u16 gUnknown_83DF0D4[] = {0x0308, 0x030a, 0x02d0};
+static const u16 gUnknown_83DF0DA[] = {0x0309, 0x030b, 0x02d1};
+static const u16 gUnknown_83DF0E0[] = {0x0310, 0x0312, 0x02d8};
+static const u16 gUnknown_83DF0E6[] = {0x0311, 0x0313, 0x02d9};
+static const u16 gUnknown_83DF0EC[] = {0x02e3, 0x0316, 0x0314};
+static const u16 gUnknown_83DF0F2[] = {0x02e4, 0x0317, 0x0315};
+static const u16 gUnknown_83DF0F8[] = {0x02eb, 0x031e, 0x031c};
+
+
+// Functions
+#ifdef NONMATCHING
+void sub_809C1D8(u8 taskId, const u16* a1, u16 a2)
+{
+
+}
+#else
+NAKED
+void sub_809C1D8(u8 taskId, const u16* a1, u16 a2)
+{
+ asm_unified("\tpush {r4-r7,lr}\n"
+ "\tmov r7, r10\n"
+ "\tmov r6, r9\n"
+ "\tmov r5, r8\n"
+ "\tpush {r5-r7}\n"
+ "\tsub sp, 0x10\n"
+ "\tmov r9, r1\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r0, 24\n"
+ "\tlsls r2, 16\n"
+ "\tlsrs r2, 16\n"
+ "\tmov r10, r2\n"
+ "\tldr r2, _0809C26C @ =gTasks\n"
+ "\tlsls r1, r0, 2\n"
+ "\tadds r1, r0\n"
+ "\tlsls r1, 3\n"
+ "\tadds r1, r2\n"
+ "\tldrh r0, [r1, 0x10]\n"
+ "\tsubs r0, 0x1\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r5, r0, 16\n"
+ "\tldrh r0, [r1, 0x12]\n"
+ "\tsubs r0, 0x1\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r3, r0, 16\n"
+ "\tldrh r4, [r1, 0xA]\n"
+ "\tmovs r2, 0xC\n"
+ "\tldrsh r0, [r1, r2]\n"
+ "\tcmp r0, 0\n"
+ "\tbne _0809C29C\n"
+ "\tmovs r2, 0\n"
+ "\tlsls r5, 16\n"
+ "\tstr r5, [sp, 0xC]\n"
+ "\tlsls r0, r3, 16\n"
+ "\tlsls r1, r4, 16\n"
+ "\tasrs r0, 16\n"
+ "\tstr r0, [sp]\n"
+ "\tasrs r1, 16\n"
+ "\tstr r1, [sp, 0x4]\n"
+ "\tlsls r0, r1, 1\n"
+ "\tmov r1, r9\n"
+ "\tadds r7, r0, r1\n"
+ "_0809C22C:\n"
+ "\tmovs r4, 0\n"
+ "\tlsls r2, 16\n"
+ "\tmov r8, r2\n"
+ "\tasrs r0, r2, 16\n"
+ "\tldr r2, [sp]\n"
+ "\tadds r6, r2, r0\n"
+ "_0809C238:\n"
+ "\tldr r0, [sp, 0xC]\n"
+ "\tasrs r1, r0, 16\n"
+ "\tlsls r4, 16\n"
+ "\tasrs r0, r4, 16\n"
+ "\tadds r5, r1, r0\n"
+ "\tadds r0, r5, 0\n"
+ "\tadds r1, r6, 0\n"
+ "\tbl MapGridGetMetatileIdAt\n"
+ "\tmovs r2, 0\n"
+ "\tldrsh r1, [r7, r2]\n"
+ "\tlsls r0, 16\n"
+ "\tasrs r0, 16\n"
+ "\tcmp r1, r0\n"
+ "\tbne _0809C280\n"
+ "\tldr r0, [sp, 0x4]\n"
+ "\tcmp r0, 0x2\n"
+ "\tbeq _0809C270\n"
+ "\tldrh r0, [r7, 0x2]\n"
+ "\tmov r2, r10\n"
+ "\torrs r2, r0\n"
+ "\tadds r0, r5, 0\n"
+ "\tadds r1, r6, 0\n"
+ "\tbl MapGridSetMetatileIdAt\n"
+ "\tb _0809C280\n"
+ "\t.align 2, 0\n"
+ "_0809C26C: .4byte gTasks\n"
+ "_0809C270:\n"
+ "\tmov r1, r9\n"
+ "\tldrh r0, [r1]\n"
+ "\tmov r2, r10\n"
+ "\torrs r2, r0\n"
+ "\tadds r0, r5, 0\n"
+ "\tadds r1, r6, 0\n"
+ "\tbl MapGridSetMetatileIdAt\n"
+ "_0809C280:\n"
+ "\tmovs r2, 0x80\n"
+ "\tlsls r2, 9\n"
+ "\tadds r0, r4, r2\n"
+ "\tlsrs r4, r0, 16\n"
+ "\tasrs r0, 16\n"
+ "\tcmp r0, 0x2\n"
+ "\tble _0809C238\n"
+ "\tadds r0, r2, 0\n"
+ "\tadd r0, r8\n"
+ "\tlsrs r2, r0, 16\n"
+ "\tasrs r0, 16\n"
+ "\tcmp r0, 0x2\n"
+ "\tble _0809C22C\n"
+ "\tb _0809C324\n"
+ "_0809C29C:\n"
+ "\tmovs r2, 0\n"
+ "\tlsls r5, 16\n"
+ "\tstr r5, [sp, 0xC]\n"
+ "\tlsls r0, r3, 16\n"
+ "\tlsls r1, r4, 16\n"
+ "\tasrs r0, 16\n"
+ "\tstr r0, [sp, 0x8]\n"
+ "\tasrs r7, r1, 16\n"
+ "_0809C2AC:\n"
+ "\tmovs r4, 0\n"
+ "\tlsls r2, 16\n"
+ "\tmov r8, r2\n"
+ "\tasrs r0, r2, 16\n"
+ "\tldr r1, [sp, 0x8]\n"
+ "\tadds r6, r1, r0\n"
+ "_0809C2B8:\n"
+ "\tldr r2, [sp, 0xC]\n"
+ "\tasrs r1, r2, 16\n"
+ "\tlsls r4, 16\n"
+ "\tasrs r0, r4, 16\n"
+ "\tadds r5, r1, r0\n"
+ "\tadds r0, r5, 0\n"
+ "\tadds r1, r6, 0\n"
+ "\tbl MapGridGetMetatileIdAt\n"
+ "\tmovs r1, 0x2\n"
+ "\tsubs r1, r7\n"
+ "\tlsls r1, 1\n"
+ "\tadd r1, r9\n"
+ "\tmovs r2, 0\n"
+ "\tldrsh r1, [r1, r2]\n"
+ "\tlsls r0, 16\n"
+ "\tasrs r0, 16\n"
+ "\tcmp r1, r0\n"
+ "\tbne _0809C30A\n"
+ "\tcmp r7, 0x2\n"
+ "\tbeq _0809C2FA\n"
+ "\tmovs r0, 0x1\n"
+ "\tsubs r0, r7\n"
+ "\tlsls r0, 1\n"
+ "\tadd r0, r9\n"
+ "\tldrh r0, [r0]\n"
+ "\tmov r2, r10\n"
+ "\torrs r2, r0\n"
+ "\tadds r0, r5, 0\n"
+ "\tadds r1, r6, 0\n"
+ "\tbl MapGridSetMetatileIdAt\n"
+ "\tb _0809C30A\n"
+ "_0809C2FA:\n"
+ "\tmov r1, r9\n"
+ "\tldrh r0, [r1, 0x4]\n"
+ "\tmov r2, r10\n"
+ "\torrs r2, r0\n"
+ "\tadds r0, r5, 0\n"
+ "\tadds r1, r6, 0\n"
+ "\tbl MapGridSetMetatileIdAt\n"
+ "_0809C30A:\n"
+ "\tmovs r2, 0x80\n"
+ "\tlsls r2, 9\n"
+ "\tadds r0, r4, r2\n"
+ "\tlsrs r4, r0, 16\n"
+ "\tasrs r0, 16\n"
+ "\tcmp r0, 0x2\n"
+ "\tble _0809C2B8\n"
+ "\tadds r0, r2, 0\n"
+ "\tadd r0, r8\n"
+ "\tlsrs r2, r0, 16\n"
+ "\tasrs r0, 16\n"
+ "\tcmp r0, 0x2\n"
+ "\tble _0809C2AC\n"
+ "_0809C324:\n"
+ "\tadd sp, 0x10\n"
+ "\tpop {r3-r5}\n"
+ "\tmov r8, r3\n"
+ "\tmov r9, r4\n"
+ "\tmov r10, r5\n"
+ "\tpop {r4-r7}\n"
+ "\tpop {r0}\n"
+ "\tbx r0\n");
+}
+#endif
+
+static void sub_809C334(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ u16 v1;
+
+ data[3] = 1;
+ switch (data[0])
+ {
+ case 0:
+ sub_809C1D8(taskId, gUnknown_83DF0D4, 0);
+ break;
+ case 1:
+ sub_809C1D8(taskId, gUnknown_83DF0DA, 0);
+ break;
+ case 2:
+ sub_809C1D8(taskId, gUnknown_83DF0E0, 0xC00);
+ break;
+ case 3:
+ sub_809C1D8(taskId, gUnknown_83DF0E6, 0);
+ break;
+ case 4:
+ sub_809C1D8(taskId, gUnknown_83DF0EC, 0xC00);
+ break;
+ case 5:
+ sub_809C1D8(taskId, gUnknown_83DF0F2, 0);
+ break;
+ case 6:
+ sub_809C1D8(taskId, gUnknown_83DF0F8, 0);
+ default:
+ break;
+ }
+ data[0] = (data[0] + 1) & 7;
+ v1 = data[0] & 7;
+ //ldrh r5, [r4] instead mov r5, r0 somehow
+ if (v1 == 0)
+ {
+ DrawWholeMapView();
+ data[1] = (data[1] + 1) % 3;
+ data[3] = v1;
+ }
+}
+
+static u8 sub_809C3FC(u16 a0)
+{
+ u8 taskId;
+ s16 *data;
+
+ taskId = CreateTask(sub_809C334, 0);
+ data = gTasks[taskId].data;
+ PlayerGetDestCoords(&tX, &data[5]);
+ t0 = 0;
+ data[1] = 0;
+ data[2] = a0;
+ sub_809C334(taskId);
+ return taskId;
+}
+
+void sub_809C448(u8 a0)
+{
+ u8 taskId;
+
+ taskId = sub_809C3FC(a0);
+ gUnknown_2039984 = taskId;
+}
+
+void sub_809C460(void)
+{
+ DestroyTask(gUnknown_2039984);
+}
+
+bool8 sub_809C474(void)
+{
+ if (gTasks[gUnknown_2039984].data[3] == 0)
+ {
+ if (gTasks[gUnknown_2039984].data[1] != 2)
+ return TRUE;
+ return FALSE;
+ }
+ else
+ {
+ return TRUE;
+ }
+}
+
+// special 0x1b5 - creates a tile animaiton one block left two-four up the player
+void sub_809C4A8(void)
+{
+ u8 taskId;
+ s16 *data;
+
+ taskId = CreateTask(sub_809C500, 0);
+
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].data[1] = 0;
+
+ data = gTasks[taskId].data;
+ PlayerGetDestCoords(&data[2], &data[3]);
+ if (gSpecialVar_0x8004 == 0)
+ {
+ gTasks[taskId].data[2] += 6;
+ gTasks[taskId].data[3] -= 5;
+ }
+ else
+ {
+ gTasks[taskId].data[2]--;
+ gTasks[taskId].data[3] -= 5;
+ }
+}
+
+static void sub_809C500(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+
+ if (data[0] == 0)
+ {
+ if ((data[1] & 1) == 0)
+ {
+ MapGridSetMetatileIdAt(data[2], data[3], 0xEB5);
+ MapGridSetMetatileIdAt(data[2], data[3] + 2, 0xEB7);
+ }
+ else
+ {
+ MapGridSetMetatileIdAt(data[2], data[3], 0xEB6);
+ MapGridSetMetatileIdAt(data[2], data[3] + 2, 0xEB8);
+ }
+ CurrentMapDrawMetatileAt(data[2], data[3]);
+ CurrentMapDrawMetatileAt(data[2], data[3] + 2);
+ }
+
+ data[0]++;
+ if (data[0] != 0x10)
+ return;
+ data[0] = 0;
+
+ data[0] == 0;
+ data[1]++;
+ if (data[1] != 0xD)
+ return;
+
+ MapGridSetMetatileIdAt(data[2], data[3], 0xE8A);
+ MapGridSetMetatileIdAt(data[2], data[3] + 2, 0xE96);
+ CurrentMapDrawMetatileAt(data[2], data[3]);
+ CurrentMapDrawMetatileAt(data[2], data[3] + 2);
+ DestroyTask(taskId);
+}
+
+// special 0x1B7 - creates a tile animation two-six blocks right from the top-left corner of the screen
+void sub_809C5FC(void)
+{
+ u8 taskId;
+ s16 *data;
+
+ taskId = CreateTask(sub_809C640, 0);
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].data[1] = 0;
+
+ data = gTasks[taskId].data;
+ PlayerGetDestCoords(&data[2], &data[3]);
+ gTasks[taskId].data[2] += 4;
+ gTasks[taskId].data[3] -= 5;
+}
+
+static void sub_809C640(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+
+ if (data[0] == 0)
+ {
+ if (data[1] != 0)
+ {
+ MapGridSetMetatileIdAt(data[2], data[3], 0xE85);
+ MapGridSetMetatileIdAt(data[2], data[3] + 1, 0xEB4);
+ CurrentMapDrawMetatileAt(data[2], data[3]);
+ CurrentMapDrawMetatileAt(data[2], data[3] + 1);
+ if (data[1] == 4)
+ {
+ DestroyTask(taskId);
+ return;
+ }
+ data[2]--;
+ }
+ MapGridSetMetatileIdAt(data[2], data[3], 0xEB9);
+ MapGridSetMetatileIdAt(data[2], data[3] + 1, 0xEBA);
+ CurrentMapDrawMetatileAt(data[2], data[3]);
+ CurrentMapDrawMetatileAt(data[2], data[3] + 1);
+ }
+ data[0]++;
+ if (data[0] == 4)
+ {
+ data[0] = 0;
+ data[1]++;
+ }
+}
diff --git a/src/shop.c b/src/shop.c
index 0a96b7eb3..55fe7311a 100644
--- a/src/shop.c
+++ b/src/shop.c
@@ -34,7 +34,6 @@
#include "money.h"
#include "quest_log.h"
#include "script.h"
-#include "event_data.h"
#include "constants/songs.h"
#include "constants/items.h"
#include "constants/game_stat.h"
@@ -112,8 +111,6 @@ EWRAM_DATA u8 (*gUnknown_2039968)[13] = {0}; //item strings
EWRAM_DATA s16 gUnknown_20398B4[MAP_OBJECTS_COUNT][4] = {0}; //sViewportMapObjects
EWRAM_DATA struct MartHistory gUnknown_203996C = {0};
-EWRAM_DATA u8 gUnknown_2039984 = 0;
-
//Function Declarations
static u8 sub_809AAB0(u8 a0);
static u8 sub_809AB7C(bool32 a0);
@@ -171,11 +168,6 @@ static void nullsub_52(u8 taskId);
static void nullsub_53(void);
static void sub_809C138(void);
-// new file?
-static void sub_809C334(u8 taskId);
-static void sub_809C500(u8 taskId);
-static void sub_809C640(u8 taskId);
-
// external defines
extern u8 MapGridGetMetatileLayerTypeAt(s16 x, s16 y);
extern u16 BagGetQuantityByItemId(u16 item);
@@ -186,13 +178,6 @@ extern const struct MenuAction gUnknown_83DF09C[];
extern const struct YesNoFuncTable gUnknown_83DF0B4[];
extern const struct WindowTemplate gUnknown_83DF0BC[];
extern const struct BgTemplate gUnknown_83DF0C4[];
-extern const u16 gUnknown_83DF0D4[];
-extern const u16 gUnknown_83DF0DA[];
-extern const u16 gUnknown_83DF0E0[];
-extern const u16 gUnknown_83DF0E6[];
-extern const u16 gUnknown_83DF0EC[];
-extern const u16 gUnknown_83DF0F2[];
-extern const u16 gUnknown_83DF0F8[];
*/
//graphics
@@ -268,14 +253,6 @@ static const struct BgTemplate gUnknown_83DF0C4[] = //sShopBuyMenuBgTemplate
}
};
-static const u16 gUnknown_83DF0D4[] = {0x0308, 0x030a, 0x02d0};
-static const u16 gUnknown_83DF0DA[] = {0x0309, 0x030b, 0x02d1};
-static const u16 gUnknown_83DF0E0[] = {0x0310, 0x0312, 0x02d8};
-static const u16 gUnknown_83DF0E6[] = {0x0311, 0x0313, 0x02d9};
-static const u16 gUnknown_83DF0EC[] = {0x02e3, 0x0316, 0x0314};
-static const u16 gUnknown_83DF0F2[] = {0x02e4, 0x0317, 0x0315};
-static const u16 gUnknown_83DF0F8[] = {0x02eb, 0x031e, 0x031c};
-
// Functions
// CreateShopMenu
@@ -1680,3 +1657,4 @@ void CreateDecorationShop2Menu(const u16 *itemsForSale)
sub_809AAB0(MART_TYPE_DECOR2);
sub_809AC04(EnableBothScriptContexts);
}
+