summaryrefslogtreecommitdiff
path: root/src/pokemon_storage_system_9.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/pokemon_storage_system_9.c')
-rw-r--r--src/pokemon_storage_system_9.c87
1 files changed, 87 insertions, 0 deletions
diff --git a/src/pokemon_storage_system_9.c b/src/pokemon_storage_system_9.c
new file mode 100644
index 000000000..42fecfd97
--- /dev/null
+++ b/src/pokemon_storage_system_9.c
@@ -0,0 +1,87 @@
+#include "global.h"
+#include "gflib.h"
+#include "pokemon_storage_system_internal.h"
+
+static EWRAM_DATA struct UnkStruct_2000020 *gUnknown_203982C = NULL;
+
+static void sub_8096CDC(struct UnkStruct_2000028 *unkStruct);
+static void sub_8096D70(struct UnkStruct_2000028 *unkStruct);
+
+void sub_8096BE4(struct UnkStruct_2000020 *arg0, struct UnkStruct_2000028 *arg1, u32 arg2)
+{
+ gUnknown_203982C = arg0;
+ arg0->unk_00 = arg1;
+ arg0->unk_05 = arg2;
+ arg0->unk_04 = 0;
+}
+
+void sub_8096BF8(void)
+{
+ u16 i;
+
+ if (gUnknown_203982C->unk_04)
+ {
+ for (i = 0; i < gUnknown_203982C->unk_04; i++)
+ {
+ struct UnkStruct_2000028 *unkStruct = &gUnknown_203982C->unk_00[i];
+ unkStruct->unk_0c(unkStruct);
+ }
+
+ gUnknown_203982C->unk_04 = 0;
+ }
+}
+
+static bool8 sub_8096C40(u8 *dest, u16 dLeft, u16 dTop, const u8 *src, u16 sLeft, u16 sTop, u16 width, u16 height, u16 unkArg)
+{
+ struct UnkStruct_2000028 *unkStruct;
+
+ if (gUnknown_203982C->unk_04 >= gUnknown_203982C->unk_05)
+ return FALSE;
+
+ unkStruct = &gUnknown_203982C->unk_00[gUnknown_203982C->unk_04++];
+ unkStruct->unk_08 = width * 2;
+ unkStruct->unk_04 = dest + 2 * (dTop * 32 + dLeft);
+ unkStruct->unk_00 = src + 2 * (sTop * unkArg + sLeft);
+ unkStruct->newField = height;
+ unkStruct->unk_0a = unkArg;
+ unkStruct->unk_0c = sub_8096CDC;
+ return TRUE;
+}
+
+static void sub_8096CDC(struct UnkStruct_2000028 *unkStruct)
+{
+ u16 i;
+
+ for (i = 0; i < unkStruct->newField; i++)
+ {
+ CpuCopy16(unkStruct->unk_00, unkStruct->unk_04, unkStruct->unk_08);
+ unkStruct->unk_04 += 64;
+ unkStruct->unk_00 += (unkStruct->unk_0a * 2);
+ }
+}
+
+static bool8 sub_8096D14(void *dest, u16 dLeft, u16 dTop, u16 width, u16 height)
+{
+ struct UnkStruct_2000028 *unkStruct;
+
+ if (gUnknown_203982C->unk_04 >= gUnknown_203982C->unk_05)
+ return FALSE;
+
+ unkStruct = &gUnknown_203982C->unk_00[gUnknown_203982C->unk_04++];
+ unkStruct->unk_08 = width * 2;
+ unkStruct->unk_04 = dest + ((dTop * 32) + dLeft) * 2;
+ unkStruct->newField = height;
+ unkStruct->unk_0c = sub_8096D70;
+ return TRUE;
+}
+
+static void sub_8096D70(struct UnkStruct_2000028 *unkStruct)
+{
+ u16 i;
+
+ for (i = 0; i < unkStruct->newField; i++)
+ {
+ Dma3FillLarge_(0, unkStruct->unk_04, unkStruct->unk_08, 16);
+ unkStruct->unk_04 += 64;
+ }
+}