summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2018-01-06 11:54:46 -0500
committerPikalaxALT <pikalaxalt@gmail.com>2018-01-06 11:54:46 -0500
commit4db981200c1d011c370a45d123c31b397b7d62cc (patch)
tree39d87f7fc9124d4e85c7b86354c4ba0a60b307ca /src
parent6ce6e18fd50951ec784f5534f0bcb929aadd24d6 (diff)
nonmatching unref_sub_8095D08
Diffstat (limited to 'src')
-rw-r--r--src/pokemon/pokemon_storage_system.c138
1 files changed, 137 insertions, 1 deletions
diff --git a/src/pokemon/pokemon_storage_system.c b/src/pokemon/pokemon_storage_system.c
index 3c029b0aa..5cb61f365 100644
--- a/src/pokemon/pokemon_storage_system.c
+++ b/src/pokemon/pokemon_storage_system.c
@@ -99,7 +99,7 @@ u8 *unref_sub_8095C60(u8 *dest, const u8 *src, u16 pad)
return _dest;
}
-void sub_8095C8C(u16 *dest, u16 dest_left, u16 dest_top, u16 *src, u16 src_left, u16 src_top, u16 dest_width, u16 dest_height, u16 src_width)
+void sub_8095C8C(u16 *dest, u16 dest_left, u16 dest_top, const u16 *src, u16 src_left, u16 src_top, u16 dest_width, u16 dest_height, u16 src_width)
{
u16 i;
@@ -114,6 +114,142 @@ void sub_8095C8C(u16 *dest, u16 dest_left, u16 dest_top, u16 *src, u16 src_left,
}
}
+#ifdef NONMATCHING
+void unref_sub_8095D08(u16 *dest, u16 dest_left, u16 dest_top, u16 width, u16 height)
+{
+ u16 i;
+
+ dest += dest_top * 0x20 + dest_left;
+ width *= 2;
+ for (i = 0; i < height; dest += 0x20, i++)
+ {
+ void *_dest = dest;
+ size_t _size = width;
+ if (_size <= 0x1000)
+ {
+ DmaFill16(3, 0, _dest, _size);
+ }
+ else
+ {
+ while (1)
+ {
+ DmaFill16(3, 0, _dest, 0x1000);
+ _dest += 0x1000;
+ _size -= 0x1000;
+ if (_size <= 0x1000)
+ {
+ DmaFill16(3, 0, _dest, _size);
+ break;
+ }
+ }
+ }
+ }
+}
+#else
+__attribute__((naked)) void unref_sub_8095D08(u16 *dest, u16 dest_left, u16 dest_top, u16 width, u16 height)
+{
+ 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, 0x8\n"
+ "\tadds r4, r0, 0\n"
+ "\tldr r0, [sp, 0x28]\n"
+ "\tlsls r1, 16\n"
+ "\tlsrs r1, 16\n"
+ "\tlsls r2, 16\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tmov r10, r0\n"
+ "\tlsrs r2, 11\n"
+ "\tadds r2, r1\n"
+ "\tlsls r2, 1\n"
+ "\tadds r4, r2\n"
+ "\tlsls r3, 17\n"
+ "\tlsrs r0, r3, 16\n"
+ "\tstr r0, [sp, 0x4]\n"
+ "\tmovs r0, 0\n"
+ "\tcmp r0, r10\n"
+ "\tbcs _08095DB2\n"
+ "\tmovs r6, 0x80\n"
+ "\tlsls r6, 5\n"
+ "\tmov r5, sp\n"
+ "\tldr r7, _08095D74 @ =0x040000d4\n"
+ "\tlsrs r3, 17\n"
+ "\tmov r9, r3\n"
+ "\tmov r1, r9\n"
+ "\tmovs r2, 0x81\n"
+ "\tlsls r2, 24\n"
+ "\torrs r1, r2\n"
+ "\tmov r9, r1\n"
+ "_08095D4E:\n"
+ "\tadds r3, r4, 0\n"
+ "\tldr r2, [sp, 0x4]\n"
+ "\tmovs r1, 0x40\n"
+ "\tadds r1, r4\n"
+ "\tmov r8, r1\n"
+ "\tadds r0, 0x1\n"
+ "\tmov r12, r0\n"
+ "\tcmp r2, r6\n"
+ "\tbhi _08095D78\n"
+ "\tmovs r0, 0\n"
+ "\tstrh r0, [r5]\n"
+ "\tmov r2, sp\n"
+ "\tstr r2, [r7]\n"
+ "\tstr r4, [r7, 0x4]\n"
+ "\tmov r0, r9\n"
+ "\tstr r0, [r7, 0x8]\n"
+ "\tldr r0, [r7, 0x8]\n"
+ "\tb _08095DA6\n"
+ "\t.align 2, 0\n"
+ "_08095D74: .4byte 0x040000d4\n"
+ "_08095D78:\n"
+ "\tmovs r4, 0\n"
+ "\tstrh r4, [r5]\n"
+ "\tldr r1, _08095DC4 @ =0x040000d4\n"
+ "\tmov r0, sp\n"
+ "\tstr r0, [r1]\n"
+ "\tstr r3, [r1, 0x4]\n"
+ "\tldr r0, _08095DC8 @ =0x81000800\n"
+ "\tstr r0, [r1, 0x8]\n"
+ "\tldr r0, [r1, 0x8]\n"
+ "\tadds r3, r6\n"
+ "\tsubs r2, r6\n"
+ "\tcmp r2, r6\n"
+ "\tbhi _08095D78\n"
+ "\tstrh r4, [r5]\n"
+ "\tmov r0, sp\n"
+ "\tstr r0, [r1]\n"
+ "\tstr r3, [r1, 0x4]\n"
+ "\tlsrs r0, r2, 1\n"
+ "\tmovs r2, 0x81\n"
+ "\tlsls r2, 24\n"
+ "\torrs r0, r2\n"
+ "\tstr r0, [r1, 0x8]\n"
+ "\tldr r0, [r1, 0x8]\n"
+ "_08095DA6:\n"
+ "\tmov r4, r8\n"
+ "\tmov r1, r12\n"
+ "\tlsls r0, r1, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tcmp r0, r10\n"
+ "\tbcc _08095D4E\n"
+ "_08095DB2:\n"
+ "\tadd sp, 0x8\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"
+ "\t.align 2, 0\n"
+ "_08095DC4: .4byte 0x040000d4\n"
+ "_08095DC8: .4byte 0x81000800");
+}
+#endif
+
asm(".section .text.8098898");
void sub_8098898(u8 index) {