summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2018-01-12 12:50:59 -0500
committerPikalaxALT <pikalaxalt@gmail.com>2018-01-12 12:50:59 -0500
commit8c2c8ed3a9e377382a0ac645053e4b7b4ab41c4e (patch)
tree915868b18e8ffaf0e877e47f9e04429836a90560 /src
parentf37add5cfb4bb369ec096d91f62915ee4f88a1d7 (diff)
match unref_sub_8095D08
Diffstat (limited to 'src')
-rw-r--r--src/pokemon/pokemon_storage_system.c149
1 files changed, 22 insertions, 127 deletions
diff --git a/src/pokemon/pokemon_storage_system.c b/src/pokemon/pokemon_storage_system.c
index 80081c963..c02fdfb3a 100644
--- a/src/pokemon/pokemon_storage_system.c
+++ b/src/pokemon/pokemon_storage_system.c
@@ -177,7 +177,27 @@ void sub_8095C8C(u16 *dest, u16 dest_left, u16 dest_top, const u16 *src, u16 src
}
}
-#ifdef NONMATCHING
+#define MAX_DMA_BLOCK_SIZE 0x1000
+#define Dma3FillLarge_(value, dest, size, bit) \
+{ \
+ void *_dest = dest; \
+ u32 _size = size; \
+ while (1) \
+ { \
+ if (_size <= MAX_DMA_BLOCK_SIZE) \
+ { \
+ DmaFill##bit(3, value, _dest, _size); \
+ break; \
+ } \
+ DmaFill##bit(3, value, _dest, MAX_DMA_BLOCK_SIZE); \
+ _dest += MAX_DMA_BLOCK_SIZE; \
+ _size -= MAX_DMA_BLOCK_SIZE; \
+ } \
+}
+
+#define Dma3FillLarge16_(value, dest, size) Dma3FillLarge_(value, dest, size, 16)
+#define Dma3FillLarge32_(value, dest, size) Dma3FillLarge_(value, dest, size, 32)
+
void unref_sub_8095D08(u16 *dest, u16 dest_left, u16 dest_top, u16 width, u16 height)
{
u16 i;
@@ -185,133 +205,8 @@ void unref_sub_8095D08(u16 *dest, u16 dest_left, u16 dest_top, u16 width, u16 he
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");
+ Dma3FillLarge16_(0, dest, width);
}
-#endif
s16 StorageSystemGetNextMonIndex(struct BoxPokemon *box, s8 startIdx, u8 stopIdx, u8 mode)
{