diff options
Diffstat (limited to 'src/pokemon_storage_system_9.c')
-rw-r--r-- | src/pokemon_storage_system_9.c | 87 |
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; + } +} |