diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2018-01-13 16:40:15 -0500 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2018-01-13 16:40:15 -0500 |
commit | a5721ffd736f30d424da8aede5c52071365f3850 (patch) | |
tree | 2ac74019141b13291fccd83ed570d91246fa93c2 | |
parent | e9c74d2472bc322b9d60f1b7033268efbd0bd159 (diff) |
nonmatching sub_809A14C
-rw-r--r-- | asm/pokemon_storage_system.s | 64 | ||||
-rw-r--r-- | src/pokemon/pokemon_storage_system_4.c | 84 |
2 files changed, 84 insertions, 64 deletions
diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s index bf7e7a809..79783e4ed 100644 --- a/asm/pokemon_storage_system.s +++ b/asm/pokemon_storage_system.s @@ -5,70 +5,6 @@ .text - thumb_func_start sub_809A14C -sub_809A14C: @ 809A14C - push {r4-r6,lr} - adds r2, r0, 0 - ldr r0, _0809A174 @ =gPokemonStorageSystemPtr - ldr r0, [r0] - ldr r1, _0809A178 @ =0x000008b4 - adds r0, r1 - ldrh r0, [r0] - lsrs r0, 3 - adds r3, r0, 0 - adds r3, 0x1E - movs r0, 0x3F - ands r3, r0 - adds r0, r3, 0 - cmp r0, 0x1F - bgt _0809A17C - lsls r0, 1 - movs r6, 0x98 - lsls r6, 3 - adds r0, r6 - b _0809A184 - .align 2, 0 -_0809A174: .4byte gPokemonStorageSystemPtr -_0809A178: .4byte 0x000008b4 -_0809A17C: - lsls r0, 1 - movs r1, 0xC8 - lsls r1, 4 - adds r0, r1 -_0809A184: - adds r2, r0 - movs r0, 0 - movs r5, 0 - movs r4, 0x3F -_0809A18C: - strh r5, [r2] - adds r2, 0x2 - adds r3, 0x1 - ands r3, r4 - adds r1, r3, 0 - cmp r1, 0 - bne _0809A19E - ldr r6, _0809A1B8 @ =0xfffff7c0 - adds r2, r6 -_0809A19E: - cmp r1, 0x20 - bne _0809A1A8 - movs r1, 0xF8 - lsls r1, 3 - adds r2, r1 -_0809A1A8: - adds r0, 0x1 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x2B - bls _0809A18C - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0809A1B8: .4byte 0xfffff7c0 - thumb_func_end sub_809A14C - thumb_func_start sub_809A1BC sub_809A1BC: @ 809A1BC push {r4-r6,lr} diff --git a/src/pokemon/pokemon_storage_system_4.c b/src/pokemon/pokemon_storage_system_4.c index 9f19814a5..1ccaa01f1 100644 --- a/src/pokemon/pokemon_storage_system_4.c +++ b/src/pokemon/pokemon_storage_system_4.c @@ -673,3 +673,87 @@ __attribute__((naked)) void sub_8099F58(u16 *vdest, const u16 *src, s8 a2, u8 a3 "\tbx r0"); } #endif + +#ifdef NONMATCHING +void sub_809A14C(u16 *vdest) +{ + u16 *r2; + u16 i; + int r3 = ((gPokemonStorageSystemPtr->unk_08b4 >> 3) + 30) & 0x3f; + r2 = vdest + (r3 < 0x20 ? r3 + 0x260 : r3 + 0x640); + for (i = 0; i < 0x2b; i++) + { + *r2++ = 0; + r3++; + r3 &= 0x3f; + if (r3 == 0) + r2 -= 0x420; + if (r3 == 0x20) + r2 += 0x3e0; + } +} +#else +__attribute__((naked)) void sub_809A14C(u16 *vdest) +{ + asm_unified("\tpush {r4-r6,lr}\n" + "\tadds r2, r0, 0\n" + "\tldr r0, _0809A174 @ =gPokemonStorageSystemPtr\n" + "\tldr r0, [r0]\n" + "\tldr r1, _0809A178 @ =0x000008b4\n" + "\tadds r0, r1\n" + "\tldrh r0, [r0]\n" + "\tlsrs r0, 3\n" + "\tadds r3, r0, 0\n" + "\tadds r3, 0x1E\n" + "\tmovs r0, 0x3F\n" + "\tands r3, r0\n" + "\tadds r0, r3, 0\n" + "\tcmp r0, 0x1F\n" + "\tbgt _0809A17C\n" + "\tlsls r0, 1\n" + "\tmovs r6, 0x98\n" + "\tlsls r6, 3\n" + "\tadds r0, r6\n" + "\tb _0809A184\n" + "\t.align 2, 0\n" + "_0809A174: .4byte gPokemonStorageSystemPtr\n" + "_0809A178: .4byte 0x000008b4\n" + "_0809A17C:\n" + "\tlsls r0, 1\n" + "\tmovs r1, 0xC8\n" + "\tlsls r1, 4\n" + "\tadds r0, r1\n" + "_0809A184:\n" + "\tadds r2, r0\n" + "\tmovs r0, 0\n" + "\tmovs r5, 0\n" + "\tmovs r4, 0x3F\n" + "_0809A18C:\n" + "\tstrh r5, [r2]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x1\n" + "\tands r3, r4\n" + "\tadds r1, r3, 0\n" + "\tcmp r1, 0\n" + "\tbne _0809A19E\n" + "\tldr r6, _0809A1B8 @ =0xfffff7c0\n" + "\tadds r2, r6\n" + "_0809A19E:\n" + "\tcmp r1, 0x20\n" + "\tbne _0809A1A8\n" + "\tmovs r1, 0xF8\n" + "\tlsls r1, 3\n" + "\tadds r2, r1\n" + "_0809A1A8:\n" + "\tadds r0, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tcmp r0, 0x2B\n" + "\tbls _0809A18C\n" + "\tpop {r4-r6}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" + "_0809A1B8: .4byte 0xfffff7c0"); +} +#endif |