diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2017-10-16 21:14:29 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2017-10-16 21:14:29 -0400 |
commit | bb8f652504f886af296ffcaac57bf76cdc893c97 (patch) | |
tree | 82858b8f1ef5e0d27732b5e7bbab767b0a70b4c3 | |
parent | abab76bc84f1a7554f43c33a52c18297f462e058 (diff) |
nonmatching sub_812446C
-rw-r--r-- | asm/cable_car.s | 106 | ||||
-rw-r--r-- | src/scene/cable_car.c | 129 |
2 files changed, 129 insertions, 106 deletions
diff --git a/asm/cable_car.s b/asm/cable_car.s index c38b3ccb4..06730e3ad 100644 --- a/asm/cable_car.s +++ b/asm/cable_car.s @@ -6,112 +6,6 @@ .text - thumb_func_start sub_812446C -sub_812446C: @ 812446C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - movs r3, 0 - mov r9, r3 - ldr r2, _08124530 @ =gUnknown_02039274 - ldr r0, [r2] - ldrb r1, [r0, 0x1B] - adds r1, 0x2 - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 26 - lsrs r0, 24 - mov r12, r0 -_0812448E: - movs r6, 0 - lsls r0, r3, 1 - adds r1, r3, 0x3 - adds r2, r3, 0x6 - adds r4, r3, 0x1 - str r4, [sp] - adds r0, r3 - lsls r0, 3 - mov r10, r0 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 3 - mov r8, r0 - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 3 - str r0, [sp, 0x4] -_081244B0: - ldr r7, _08124530 @ =gUnknown_02039274 - ldr r5, [r7] - lsls r3, r6, 1 - mov r0, r10 - adds r2, r3, r0 - adds r4, r5, 0 - adds r4, 0x22 - adds r2, r4, r2 - mov r1, r12 - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r12, r0 - lsls r1, 1 - ldr r7, _08124534 @ =0x02019000 - adds r1, r7 - ldrh r0, [r1] - strh r0, [r2] - mov r0, r8 - adds r1, r3, r0 - adds r1, r4, r1 - mov r7, r9 - lsls r2, r7, 1 - ldr r7, _08124534 @ =0x02019000 - adds r0, r2, r7 - ldrh r0, [r0] - strh r0, [r1] - ldr r0, [sp, 0x4] - adds r3, r0 - adds r4, r3 - ldr r1, _08124538 @ =0x02019048 - adds r2, r1 - ldrh r0, [r2] - strh r0, [r4] - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0xB - bls _081244B0 - ldr r4, [sp] - lsls r0, r4, 24 - lsrs r3, r0, 24 - cmp r3, 0x2 - bls _0812448E - ldrb r0, [r5, 0x1B] - adds r0, 0x1 - movs r1, 0x3 - bl __modsi3 - strb r0, [r5, 0x1B] - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08124530: .4byte gUnknown_02039274 -_08124534: .4byte 0x02019000 -_08124538: .4byte 0x02019048 - thumb_func_end sub_812446C - thumb_func_start sub_812453C sub_812453C: @ 812453C push {r4,r5,lr} diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c index 12b2e62b3..9caa2234f 100644 --- a/src/scene/cable_car.c +++ b/src/scene/cable_car.c @@ -836,3 +836,132 @@ void sub_8124118(void) } } } + +#ifdef NONMATCHING +// this is nowhere near correct +void sub_812446C(void) +{ + u8 i; + u8 j; + u8 k; + u8 offset; + + for (i = 0, k = 0, offset = 36 * (gUnknown_02039274->unk_001b + 2); i < 3; i ++) + { + for (j = 0; j < 12; j ++) + { + gUnknown_02039274->unk_0022[i][k] = ewram_19000.mtChimneyTilemap[0][offset + k]; + gUnknown_02039274->unk_0022[i + 3][k] = ewram_19000.mtChimneyTilemap[0][k]; + gUnknown_02039274->unk_0022[i + 6][k] = ewram_19000.mtChimneyTilemap[2][k]; + k ++; + } + } + gUnknown_02039274->unk_001b = (gUnknown_02039274->unk_001b + 1) % 3; +} +#else +__attribute__((naked)) void sub_812446C(void) +{ + 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" + "\tmovs r3, 0\n" + "\tmov r9, r3\n" + "\tldr r2, _08124530 @ =gUnknown_02039274\n" + "\tldr r0, [r2]\n" + "\tldrb r1, [r0, 0x1B]\n" + "\tadds r1, 0x2\n" + "\tlsls r0, r1, 3\n" + "\tadds r0, r1\n" + "\tlsls r0, 26\n" + "\tlsrs r0, 24\n" + "\tmov r12, r0\n" + "_0812448E:\n" + "\tmovs r6, 0\n" + "\tlsls r0, r3, 1\n" + "\tadds r1, r3, 0x3\n" + "\tadds r2, r3, 0x6\n" + "\tadds r4, r3, 0x1\n" + "\tstr r4, [sp]\n" + "\tadds r0, r3\n" + "\tlsls r0, 3\n" + "\tmov r10, r0\n" + "\tlsls r0, r1, 1\n" + "\tadds r0, r1\n" + "\tlsls r0, 3\n" + "\tmov r8, r0\n" + "\tlsls r0, r2, 1\n" + "\tadds r0, r2\n" + "\tlsls r0, 3\n" + "\tstr r0, [sp, 0x4]\n" + "_081244B0:\n" + "\tldr r7, _08124530 @ =gUnknown_02039274\n" + "\tldr r5, [r7]\n" + "\tlsls r3, r6, 1\n" + "\tmov r0, r10\n" + "\tadds r2, r3, r0\n" + "\tadds r4, r5, 0\n" + "\tadds r4, 0x22\n" + "\tadds r2, r4, r2\n" + "\tmov r1, r12\n" + "\tadds r0, r1, 0x1\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tmov r12, r0\n" + "\tlsls r1, 1\n" + "\tldr r7, _08124534 @ =0x02019000\n" + "\tadds r1, r7\n" + "\tldrh r0, [r1]\n" + "\tstrh r0, [r2]\n" + "\tmov r0, r8\n" + "\tadds r1, r3, r0\n" + "\tadds r1, r4, r1\n" + "\tmov r7, r9\n" + "\tlsls r2, r7, 1\n" + "\tldr r7, _08124534 @ =0x02019000\n" + "\tadds r0, r2, r7\n" + "\tldrh r0, [r0]\n" + "\tstrh r0, [r1]\n" + "\tldr r0, [sp, 0x4]\n" + "\tadds r3, r0\n" + "\tadds r4, r3\n" + "\tldr r1, _08124538 @ =0x02019048\n" + "\tadds r2, r1\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r4]\n" + "\tmov r0, r9\n" + "\tadds r0, 0x1\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tmov r9, r0\n" + "\tadds r0, r6, 0x1\n" + "\tlsls r0, 24\n" + "\tlsrs r6, r0, 24\n" + "\tcmp r6, 0xB\n" + "\tbls _081244B0\n" + "\tldr r4, [sp]\n" + "\tlsls r0, r4, 24\n" + "\tlsrs r3, r0, 24\n" + "\tcmp r3, 0x2\n" + "\tbls _0812448E\n" + "\tldrb r0, [r5, 0x1B]\n" + "\tadds r0, 0x1\n" + "\tmovs r1, 0x3\n" + "\tbl __modsi3\n" + "\tstrb r0, [r5, 0x1B]\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" + "_08124530: .4byte gUnknown_02039274\n" + "_08124534: .4byte 0x02019000\n" + "_08124538: .4byte 0x02019048"); +} +#endif |