diff options
-rw-r--r-- | asm/cable_car.s | 98 | ||||
-rw-r--r-- | src/scene/cable_car.c | 54 |
2 files changed, 46 insertions, 106 deletions
diff --git a/asm/cable_car.s b/asm/cable_car.s index c7128c69f..92518cef6 100644 --- a/asm/cable_car.s +++ b/asm/cable_car.s @@ -5,104 +5,6 @@ .text - thumb_func_start sub_812453C -sub_812453C: @ 812453C - push {r4,r5,lr} - ldr r5, _08124594 @ =gUnknown_02039274 - ldr r4, [r5] - ldrb r0, [r4, 0x1C] - adds r0, 0x1 - movs r1, 0x60 - bl __modsi3 - strb r0, [r4, 0x1C] - ldr r1, [r5] - ldrb r0, [r1, 0x1F] - ldrb r2, [r1, 0x1D] - subs r0, r2 - strb r0, [r1, 0x8] - ldr r2, [r5] - adds r0, r2, 0 - adds r0, 0x20 - ldrb r0, [r0] - ldrb r1, [r2, 0x1E] - subs r0, r1 - strb r0, [r2, 0x9] - ldr r1, [r5] - ldrb r0, [r1, 0x1D] - adds r0, 0x1 - strb r0, [r1, 0x1D] - ldr r2, [r5] - ldrb r0, [r2, 0x1D] - movs r1, 0x3 - ands r0, r1 - cmp r0, 0 - bne _08124580 - ldrb r0, [r2, 0x1E] - adds r0, 0x1 - strb r0, [r2, 0x1E] -_08124580: - ldr r0, [r5] - ldrb r0, [r0, 0x1D] - cmp r0, 0x10 - bls _0812458C - bl sub_81245F4 -_0812458C: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08124594: .4byte gUnknown_02039274 - thumb_func_end sub_812453C - - thumb_func_start sub_8124598 -sub_8124598: @ 8124598 - push {r4,r5,lr} - ldr r5, _081245F0 @ =gUnknown_02039274 - ldr r4, [r5] - ldrb r0, [r4, 0x1C] - adds r0, 0x1 - movs r1, 0x60 - bl __modsi3 - strb r0, [r4, 0x1C] - ldr r1, [r5] - ldrb r0, [r1, 0x1D] - ldrb r2, [r1, 0x1F] - adds r0, r2 - strb r0, [r1, 0x8] - ldr r1, [r5] - adds r2, r1, 0 - adds r2, 0x20 - ldrb r0, [r1, 0x1E] - ldrb r2, [r2] - adds r0, r2 - strb r0, [r1, 0x9] - ldr r1, [r5] - ldrb r0, [r1, 0x1D] - adds r0, 0x1 - strb r0, [r1, 0x1D] - ldr r2, [r5] - ldrb r0, [r2, 0x1D] - movs r1, 0x3 - ands r0, r1 - cmp r0, 0 - bne _081245DC - ldrb r0, [r2, 0x1E] - adds r0, 0x1 - strb r0, [r2, 0x1E] -_081245DC: - ldr r0, [r5] - ldrb r0, [r0, 0x1D] - cmp r0, 0x10 - bls _081245E8 - bl sub_812476C -_081245E8: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_081245F0: .4byte gUnknown_02039274 - thumb_func_end sub_8124598 - thumb_func_start sub_81245F4 sub_81245F4: @ 81245F4 push {r4-r7,lr} diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c index c735f8ace..3582ce4fd 100644 --- a/src/scene/cable_car.c +++ b/src/scene/cable_car.c @@ -46,7 +46,11 @@ struct CableCarEwramStruct1 { u8 unk_0015; u8 filler_0016[5]; u8 unk_001b; - u8 filler_001c[6]; + u8 unk_001c; + u8 unk_001d; + u8 unk_001e; + u8 unk_001f; + u8 unk_0020; u16 unk_0022[9][12]; u8 filler_00fa[2]; u16 unk_00fc[0x400]; @@ -74,20 +78,22 @@ EWRAM_DATA u32 filler_02039280 = 0; // Static ROM declarations void sub_8123244(void); -void sub_8124118(void); -void sub_81248AC(u8); -void sub_8123FBC(u8); -void sub_8123C40(void); void sub_8123724(void); void sub_8123878(u8 taskId); void sub_81239E4(u8 taskId); void sub_8123AF8(u8 taskId); -void sub_812453C(void); -void sub_8124598(void); -void sub_8123CB8(struct Sprite *sprite); +void sub_8123C40(void); void nullsub_76(struct Sprite *sprite); +void sub_8123CB8(struct Sprite *sprite); void sub_8123EB8(struct Sprite *sprite); void sub_8123F44(struct Sprite *sprite); +void sub_8123FBC(u8); +void sub_8124118(void); +void sub_812453C(void); +void sub_8124598(void); +void sub_81245F4(void); +void sub_812476C(void); +void sub_81248AC(u8); // .rodata @@ -857,4 +863,36 @@ void sub_812446C(void) } } gUnknown_02039274->unk_001b = (gUnknown_02039274->unk_001b + 1) % 3; +} + +void sub_812453C(void) +{ + gUnknown_02039274->unk_001c = (gUnknown_02039274->unk_001c + 1) % 0x60; + gUnknown_02039274->unk_0008 = gUnknown_02039274->unk_001f - gUnknown_02039274->unk_001d; + gUnknown_02039274->unk_0009 = gUnknown_02039274->unk_0020 - gUnknown_02039274->unk_001e; + gUnknown_02039274->unk_001d++; + if ((gUnknown_02039274->unk_001d % 4) == 0) + { + gUnknown_02039274->unk_001e++; + } + if (gUnknown_02039274->unk_001d > 16) + { + sub_81245F4(); + } +} + +void sub_8124598(void) +{ + gUnknown_02039274->unk_001c = (gUnknown_02039274->unk_001c + 1) % 0x60; + gUnknown_02039274->unk_0008 = gUnknown_02039274->unk_001f + gUnknown_02039274->unk_001d; + gUnknown_02039274->unk_0009 = gUnknown_02039274->unk_0020 + gUnknown_02039274->unk_001e; + gUnknown_02039274->unk_001d++; + if ((gUnknown_02039274->unk_001d % 4) == 0) + { + gUnknown_02039274->unk_001e++; + } + if (gUnknown_02039274->unk_001d > 16) + { + sub_812476C(); + } }
\ No newline at end of file |