diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2017-10-14 23:40:20 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2017-10-14 23:40:20 -0400 |
commit | 91a171ff93f10ba185a826257c5b1f2564e59a22 (patch) | |
tree | 433c2b3a7a6f1bf0d3f68f7893bc42247d28997c | |
parent | 89904a0f2492e9e579b7478c4a66cc547027cf48 (diff) |
sub_81239E4
-rw-r--r-- | asm/cable_car.s | 140 | ||||
-rw-r--r-- | include/cable_car_util.h | 1 | ||||
-rw-r--r-- | src/scene/cable_car.c | 45 |
3 files changed, 45 insertions, 141 deletions
diff --git a/asm/cable_car.s b/asm/cable_car.s index 0b8a701f6..f2cb6e472 100644 --- a/asm/cable_car.s +++ b/asm/cable_car.s @@ -6,146 +6,6 @@ .text - thumb_func_start sub_81239E4 -sub_81239E4: @ 81239E4 - push {r4-r6,lr} - sub sp, 0x8 - ldr r6, _08123A38 @ =gUnknown_02039274 - ldr r1, [r6] - ldrb r0, [r1, 0x1] - cmp r0, 0xFF - beq _08123AC0 - ldrb r0, [r1, 0x14] - subs r0, 0x1 - strb r0, [r1, 0x14] - ldr r1, [r6] - ldrh r0, [r1, 0x6] - movs r3, 0x1 - ands r0, r3 - cmp r0, 0 - bne _08123A0A - ldrb r0, [r1, 0x15] - subs r0, 0x1 - strb r0, [r1, 0x15] -_08123A0A: - ldr r2, [r6] - ldrh r0, [r2, 0x6] - movs r1, 0x7 - ands r0, r1 - cmp r0, 0 - bne _08123A24 - ldrb r0, [r2, 0xC] - subs r0, 0x1 - strb r0, [r2, 0xC] - ldr r1, [r6] - ldrb r0, [r1, 0xD] - subs r0, 0x1 - strb r0, [r1, 0xD] -_08123A24: - ldr r0, [r6] - ldrb r1, [r0, 0x14] - cmp r1, 0x20 - beq _08123A74 - cmp r1, 0x20 - bgt _08123A3C - cmp r1, 0x10 - beq _08123A90 - b _08123AC0 - .align 2, 0 -_08123A38: .4byte gUnknown_02039274 -_08123A3C: - cmp r1, 0x28 - beq _08123A60 - cmp r1, 0xAF - bne _08123AC0 - ldr r1, _08123A5C @ =0x000008fc - adds r0, r1 - movs r1, 0x2 - str r1, [sp] - movs r1, 0xA - str r1, [sp, 0x4] - movs r1, 0 - movs r2, 0 - movs r3, 0x16 - bl sub_8124E7C - b _08123AC0 - .align 2, 0 -_08123A5C: .4byte 0x000008fc -_08123A60: - ldr r1, _08123A70 @ =0x000008fc - adds r0, r1 - movs r1, 0x2 - str r1, [sp] - str r1, [sp, 0x4] - movs r1, 0 - movs r2, 0x3 - b _08123A82 - .align 2, 0 -_08123A70: .4byte 0x000008fc -_08123A74: - ldr r1, _08123A8C @ =0x000008fc - adds r0, r1 - str r3, [sp] - movs r1, 0x2 - str r1, [sp, 0x4] - movs r1, 0 - movs r2, 0x2 -_08123A82: - movs r3, 0 - bl sub_8124E7C - b _08123AC0 - .align 2, 0 -_08123A8C: .4byte 0x000008fc -_08123A90: - ldr r5, _08123AE8 @ =0x000008fc - adds r0, r5 - ldr r1, _08123AEC @ =gCableCarPylonHookTilemapEntries - movs r2, 0x5 - str r2, [sp] - movs r4, 0x2 - str r4, [sp, 0x4] - movs r2, 0 - movs r3, 0 - bl sub_8124F08 - ldr r0, [r6] - adds r0, r5 - ldr r1, _08123AF0 @ =0x020199d8 - str r4, [sp] - movs r2, 0x1E - str r2, [sp, 0x4] - movs r2, 0 - movs r3, 0x2 - bl sub_8124F08 - ldr r1, [r6] - movs r0, 0x40 - strb r0, [r1, 0x15] -_08123AC0: - bl sub_812453C - ldr r3, _08123AF4 @ =gSpriteCoordOffsetX - movs r0, 0 - ldrsh r2, [r3, r0] - adds r1, r2, 0x1 - adds r0, r1, 0 - cmp r1, 0 - bge _08123AD6 - adds r0, r2, 0 - adds r0, 0x80 -_08123AD6: - asrs r0, 7 - lsls r0, 7 - subs r0, r1, r0 - strh r0, [r3] - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08123AE8: .4byte 0x000008fc -_08123AEC: .4byte gCableCarPylonHookTilemapEntries -_08123AF0: .4byte 0x020199d8 -_08123AF4: .4byte gSpriteCoordOffsetX - thumb_func_end sub_81239E4 - thumb_func_start sub_8123AF8 sub_8123AF8: @ 8123AF8 push {r4-r6,lr} diff --git a/include/cable_car_util.h b/include/cable_car_util.h index 0f50914c8..76198af02 100644 --- a/include/cable_car_util.h +++ b/include/cable_car_util.h @@ -8,5 +8,6 @@ // Exported ROM declarations void sub_8124F08(u16 *dest, const u16 *src, u8 x, u8 y, u8 width, u8 height); +void sub_8124E7C(u16 *dest, u16 a1, u8 a2, u8 a3, u8 a4, u8 a5); #endif //GUARD_CABLE_CAR_UTIL_H diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c index 27ae54d51..8f708903e 100644 --- a/src/scene/cable_car.c +++ b/src/scene/cable_car.c @@ -23,7 +23,13 @@ struct Unk_2017000 { u8 unk_0003; u16 unk_0004; u16 unk_0006; - u8 filler_0008[0xf4]; + u8 filler_0008[4]; + u8 unk_000c; + u8 unk_000d; + u8 filler_0000e[6]; + u8 unk_0014; + u8 unk_0015; + u8 filler_0016[0xe6]; u16 unk_00fc[0x400]; u16 unk_08fc[0x400]; }; // size 0x10FC @@ -60,6 +66,7 @@ void sub_8123724(void); void sub_8123878(u8 taskId); void sub_81239E4(u8 taskId); void sub_8123AF8(u8 taskId); +void sub_812453C(void); // .rodata @@ -339,3 +346,39 @@ void sub_8123878(u8 taskId) break; } } + +void sub_81239E4(u8 taskId) +{ + if (gUnknown_02039274->unk_0001 != 255) + { + gUnknown_02039274->unk_0014 --; + if ((gUnknown_02039274->unk_0006 % 2) == 0) + { + gUnknown_02039274->unk_0015 --; + } + if ((gUnknown_02039274->unk_0006 % 8) == 0) + { + gUnknown_02039274->unk_000c --; + gUnknown_02039274->unk_000d --; + } + switch (gUnknown_02039274->unk_0014) + { + case 175: + sub_8124E7C(gUnknown_02039274->unk_08fc, 0, 0, 22, 2, 10); + break; + case 40: + sub_8124E7C(gUnknown_02039274->unk_08fc, 0, 3, 0, 2, 2); + break; + case 32: + sub_8124E7C(gUnknown_02039274->unk_08fc, 0, 2, 0, 1, 2); + break; + case 16: + sub_8124F08(gUnknown_02039274->unk_08fc, gCableCarPylonHookTilemapEntries, 0, 0, 5, 2); + sub_8124F08(gUnknown_02039274->unk_08fc, ewram_19000.pylonStemTilemap, 0, 2, 2, 30); + gUnknown_02039274->unk_0015 = 64; + break; + } + } + sub_812453C(); + gSpriteCoordOffsetX = (gSpriteCoordOffsetX + 1) % 128; +} |