From 8c54cccc993ab617ac8bbfb1fc6347484640c441 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 14 Oct 2017 19:03:16 -0400 Subject: sub_81231EC --- asm/cable_car.s | 24 ------------------------ ld_script.txt | 1 + src/scene/cable_car.c | 27 +++++++++++++++++++++++++++ 3 files changed, 28 insertions(+), 24 deletions(-) create mode 100644 src/scene/cable_car.c diff --git a/asm/cable_car.s b/asm/cable_car.s index 385cd404d..71bc85ccb 100644 --- a/asm/cable_car.s +++ b/asm/cable_car.s @@ -6,30 +6,6 @@ .text - thumb_func_start sub_81231EC -sub_81231EC: @ 81231EC - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _08123210 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0812320A - ldr r0, _08123214 @ =sub_8123244 - bl SetMainCallback2 - adds r0, r4, 0 - bl DestroyTask -_0812320A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08123210: .4byte gPaletteFade -_08123214: .4byte sub_8123244 - thumb_func_end sub_81231EC - thumb_func_start sub_8123218 sub_8123218: @ 8123218 push {lr} diff --git a/ld_script.txt b/ld_script.txt index 7b53e8b35..4b103324e 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -216,6 +216,7 @@ SECTIONS { src/battle/battle_controller_linkpartner.o(.text); src/battle/battle_message.o(.text); src/field/choose_party.o(.text); + src/scene/cable_car.o(.text); asm/cable_car.o(.text); asm/roulette_util.o(.text); asm/cable_car_util.o(.text); diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c new file mode 100644 index 000000000..1b5d22221 --- /dev/null +++ b/src/scene/cable_car.c @@ -0,0 +1,27 @@ + +// Includes +#include "global.h" +#include "palette.h" +#include "main.h" +#include "task.h" + +// Static type declarations + +// Static RAM declarations + +// Static ROM declarations + +void sub_8123244(void); + +// .rodata + +// .text + +void sub_81231EC(u8 taskId) +{ + if (!gPaletteFade.active) + { + SetMainCallback2(sub_8123244); + DestroyTask(taskId); + } +} -- cgit v1.2.3 From 80985df175f67ea1b90772d2d82c5f97bda44106 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 14 Oct 2017 22:16:21 -0400 Subject: sub_8123244 --- asm/cable_car.s | 574 ---------------------------------------------- data/cable_car.s | 41 ---- include/cable_car_util.h | 12 + include/field_weather.h | 60 +++++ include/gba/macro.h | 30 +++ include/global.h | 1 + ld_script.txt | 1 + src/field/field_weather.c | 48 ---- src/scene/cable_car.c | 204 ++++++++++++++++ sym_ewram.txt | 26 +-- 10 files changed, 309 insertions(+), 688 deletions(-) create mode 100644 include/cable_car_util.h diff --git a/asm/cable_car.s b/asm/cable_car.s index 71bc85ccb..6f20f57e3 100644 --- a/asm/cable_car.s +++ b/asm/cable_car.s @@ -6,580 +6,6 @@ .text - thumb_func_start sub_8123218 -sub_8123218: @ 8123218 - push {lr} - sub sp, 0x4 - bl ScriptContext2_Enable - ldr r0, _08123240 @ =sub_81231EC - movs r1, 0x1 - bl CreateTask - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_08123240: .4byte sub_81231EC - thumb_func_end sub_8123218 - - thumb_func_start sub_8123244 -sub_8123244: @ 8123244 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x10 - ldr r1, _08123268 @ =gMain - ldr r2, _0812326C @ =0x0000043c - adds r0, r1, r2 - ldrb r0, [r0] - mov r9, r1 - cmp r0, 0x8 - bhi _08123298 - lsls r0, 2 - ldr r1, _08123270 @ =_08123274 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08123268: .4byte gMain -_0812326C: .4byte 0x0000043c -_08123270: .4byte _08123274 - .align 2, 0 -_08123274: - .4byte _08123298 - .4byte _08123384 - .4byte _081233E8 - .4byte _08123484 - .4byte _081234A0 - .4byte _08123504 - .4byte _08123598 - .4byte _08123678 - .4byte _081236B0 -_08123298: - movs r0, 0 - bl SetVBlankCallback - bl remove_some_task - movs r3, 0xC0 - lsls r3, 19 - movs r4, 0xC0 - lsls r4, 9 - add r0, sp, 0xC - mov r9, r0 - add r2, sp, 0x8 - movs r6, 0 - ldr r1, _08123368 @ =0x040000d4 - movs r5, 0x80 - lsls r5, 5 - ldr r7, _0812336C @ =0x81000800 - movs r0, 0x81 - lsls r0, 24 - mov r8, r0 -_081232C0: - strh r6, [r2] - add r0, sp, 0x8 - str r0, [r1] - str r3, [r1, 0x4] - str r7, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r3, r5 - subs r4, r5 - cmp r4, r5 - bhi _081232C0 - strh r6, [r2] - add r2, sp, 0x8 - str r2, [r1] - str r3, [r1, 0x4] - lsrs r0, r4, 1 - mov r2, r8 - orrs r0, r2 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - movs r0, 0xE0 - lsls r0, 19 - movs r3, 0x80 - lsls r3, 3 - movs r4, 0 - str r4, [sp, 0xC] - ldr r2, _08123368 @ =0x040000d4 - mov r1, r9 - str r1, [r2] - str r0, [r2, 0x4] - lsrs r0, r3, 2 - movs r1, 0x85 - lsls r1, 24 - orrs r0, r1 - str r0, [r2, 0x8] - ldr r0, [r2, 0x8] - movs r1, 0xA0 - lsls r1, 19 - add r0, sp, 0x8 - strh r4, [r0] - str r0, [r2] - str r1, [r2, 0x4] - lsrs r3, 1 - movs r4, 0x81 - lsls r4, 24 - orrs r3, r4 - str r3, [r2, 0x8] - ldr r0, [r2, 0x8] - ldr r1, _08123370 @ =gUnknown_02039274 - ldr r0, _08123374 @ =0x02017000 - str r0, [r1] - adds r3, r0, 0 - ldr r5, _08123378 @ =0x000010fc - ldr r0, _0812337C @ =gMain - mov r9, r0 - add r1, sp, 0x8 - movs r7, 0 - movs r6, 0x80 - lsls r6, 5 - ldr r0, _0812336C @ =0x81000800 - mov r8, r0 -_08123338: - strh r7, [r1] - add r0, sp, 0x8 - str r0, [r2] - str r3, [r2, 0x4] - mov r0, r8 - str r0, [r2, 0x8] - ldr r0, [r2, 0x8] - adds r3, r6 - subs r5, r6 - cmp r5, r6 - bhi _08123338 - strh r7, [r1] - add r1, sp, 0x8 - str r1, [r2] - str r3, [r2, 0x4] - lsrs r0, r5, 1 - orrs r0, r4 - str r0, [r2, 0x8] - ldr r0, [r2, 0x8] - ldr r1, _08123380 @ =0x0000043c - add r1, r9 - ldrb r0, [r1] - adds r0, 0x1 - b _0812370C - .align 2, 0 -_08123368: .4byte 0x040000d4 -_0812336C: .4byte 0x81000800 -_08123370: .4byte gUnknown_02039274 -_08123374: .4byte 0x02017000 -_08123378: .4byte 0x000010fc -_0812337C: .4byte gMain -_08123380: .4byte 0x0000043c -_08123384: - bl ResetSpriteData - bl ResetTasks - bl FreeAllSpritePalettes - bl ResetPaletteFade - bl sub_807C828 - movs r4, 0 - ldr r0, _081233D4 @ =gUnknown_08396FC4 - ldr r0, [r0] - adds r1, r0, 0 - adds r1, 0xF0 - movs r2, 0 -_081233A4: - lsls r0, r4, 2 - adds r0, r1, r0 - str r2, [r0] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x13 - bls _081233A4 - bl InitMapMusic - bl ResetMapMusic - ldr r2, _081233D8 @ =gSpriteCoordOffsetX - ldr r1, _081233DC @ =gSpriteCoordOffsetY - movs r0, 0 - strh r0, [r1] - strh r0, [r2] - ldr r1, _081233E0 @ =gMain - ldr r2, _081233E4 @ =0x0000043c - adds r1, r2 - ldrb r0, [r1] - adds r0, 0x1 - b _0812370C - .align 2, 0 -_081233D4: .4byte gUnknown_08396FC4 -_081233D8: .4byte gSpriteCoordOffsetX -_081233DC: .4byte gSpriteCoordOffsetY -_081233E0: .4byte gMain -_081233E4: .4byte 0x0000043c -_081233E8: - movs r4, 0 - ldr r5, _08123454 @ =gUnknown_08401CF8 -_081233EC: - lsls r0, r4, 3 - adds r0, r5 - bl LoadCompressedObjectPic - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x2 - bls _081233EC - ldr r0, _08123458 @ =gUnknown_08401D18 - bl LoadSpritePalettes - ldr r0, _0812345C @ =gCableCarMtChimneyTilemap - ldr r4, _08123460 @ =0x02019000 - adds r1, r4, 0 - bl LZDecompressWram - ldr r0, _08123464 @ =gCableCarTreeTilemap - movs r2, 0xB4 - lsls r2, 1 - adds r1, r4, r2 - bl LZDecompressWram - ldr r0, _08123468 @ =gCableCarMountainTilemap - movs r2, 0xA5 - lsls r2, 3 - adds r1, r4, r2 - bl LZDecompressWram - ldr r0, _0812346C @ =gCableCarPylonStemTilemap - ldr r1, _08123470 @ =0x000009d8 - adds r4, r1 - adds r1, r4, 0 - bl LZDecompressWram - ldr r0, _08123474 @ =gCableCarBG_Pal - movs r1, 0 - movs r2, 0x80 - bl LoadPalette - ldr r0, _08123478 @ =gCableCarBG_Gfx - movs r1, 0xC0 - lsls r1, 19 - bl LZ77UnCompVram - ldr r1, _0812347C @ =gMain - ldr r2, _08123480 @ =0x0000043c - adds r1, r2 - ldrb r0, [r1] - adds r0, 0x1 - b _0812370C - .align 2, 0 -_08123454: .4byte gUnknown_08401CF8 -_08123458: .4byte gUnknown_08401D18 -_0812345C: .4byte gCableCarMtChimneyTilemap -_08123460: .4byte 0x02019000 -_08123464: .4byte gCableCarTreeTilemap -_08123468: .4byte gCableCarMountainTilemap -_0812346C: .4byte gCableCarPylonStemTilemap -_08123470: .4byte 0x000009d8 -_08123474: .4byte gCableCarBG_Pal -_08123478: .4byte gCableCarBG_Gfx -_0812347C: .4byte gMain -_08123480: .4byte 0x0000043c -_08123484: - bl sub_8124118 - bl RunTasks - ldr r1, _08123498 @ =gMain - ldr r0, _0812349C @ =0x0000043c - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - b _0812370C - .align 2, 0 -_08123498: .4byte gMain -_0812349C: .4byte 0x0000043c -_081234A0: - ldr r0, _081234B4 @ =gUnknown_02039274 - ldr r0, [r0] - ldrb r0, [r0, 0x2] - cmp r0, 0x7 - bne _081234BC - ldr r1, _081234B8 @ =0x0000043c - add r1, r9 - ldrb r0, [r1] - adds r0, 0x1 - b _0812370C - .align 2, 0 -_081234B4: .4byte gUnknown_02039274 -_081234B8: .4byte 0x0000043c -_081234BC: - ldr r0, _081234FC @ =gUnknown_08396FC4 - ldr r0, [r0] - adds r1, r0, 0 - adds r1, 0xF0 - ldr r0, [r1] - cmp r0, 0 - bne _081234CC - b _0812370E -_081234CC: - movs r4, 0 - adds r3, r1, 0 - movs r5, 0xD - negs r5, r5 -_081234D4: - lsls r0, r4, 2 - adds r0, r3, r0 - ldr r2, [r0] - cmp r2, 0 - beq _081234E6 - ldrb r1, [r2, 0x5] - adds r0, r5, 0 - ands r0, r1 - strb r0, [r2, 0x5] -_081234E6: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x13 - bls _081234D4 - ldr r1, _08123500 @ =0x0000043c - add r1, r9 - ldrb r0, [r1] - adds r0, 0x1 - b _0812370C - .align 2, 0 -_081234FC: .4byte gUnknown_08396FC4 -_08123500: .4byte 0x0000043c -_08123504: - ldr r0, _08123578 @ =0x0600e800 - ldr r5, _0812357C @ =0x02019168 - movs r1, 0x20 - str r1, [sp] - movs r1, 0xF - str r1, [sp, 0x4] - adds r1, r5, 0 - movs r2, 0 - movs r3, 0x11 - bl sub_8124F08 - ldr r0, _08123580 @ =0x0600f000 - movs r2, 0xF0 - lsls r2, 2 - adds r1, r5, r2 - movs r2, 0x1E - str r2, [sp] - movs r2, 0x14 - mov r9, r2 - str r2, [sp, 0x4] - movs r2, 0 - movs r3, 0 - bl sub_8124F08 - ldr r0, _08123584 @ =gUnknown_02039274 - mov r8, r0 - ldr r0, [r0] - ldr r6, _08123588 @ =0x000008fc - adds r0, r6 - ldr r1, _0812358C @ =gCableCarPylonHookTilemapEntries - movs r2, 0x5 - str r2, [sp] - movs r4, 0x2 - str r4, [sp, 0x4] - movs r2, 0 - movs r3, 0 - bl sub_8124F08 - mov r1, r8 - ldr r0, [r1] - adds r0, r6 - movs r2, 0x87 - lsls r2, 4 - adds r5, r2 - str r4, [sp] - mov r1, r9 - str r1, [sp, 0x4] - adds r1, r5, 0 - movs r2, 0 - movs r3, 0x2 - bl sub_8124F08 - ldr r1, _08123590 @ =gMain - ldr r2, _08123594 @ =0x0000043c - adds r1, r2 - ldrb r0, [r1] - adds r0, 0x1 - b _0812370C - .align 2, 0 -_08123578: .4byte 0x0600e800 -_0812357C: .4byte 0x02019168 -_08123580: .4byte 0x0600f000 -_08123584: .4byte gUnknown_02039274 -_08123588: .4byte 0x000008fc -_0812358C: .4byte gCableCarPylonHookTilemapEntries -_08123590: .4byte gMain -_08123594: .4byte 0x0000043c -_08123598: - ldr r0, _08123664 @ =gSpecialVar_0x8004 - ldrb r0, [r0] - bl sub_81248AC - ldr r0, _08123668 @ =gUnknown_02039274 - mov r8, r0 - ldr r0, [r0] - adds r0, 0xFC - ldr r4, _0812366C @ =0x02019090 - movs r6, 0xC - str r6, [sp] - movs r5, 0x3 - str r5, [sp, 0x4] - adds r1, r4, 0 - movs r2, 0 - movs r3, 0xE - bl sub_8124F08 - mov r1, r8 - ldr r0, [r1] - adds r0, 0xFC - adds r1, r4, 0 - adds r1, 0x48 - str r6, [sp] - str r5, [sp, 0x4] - movs r2, 0xC - movs r3, 0x11 - bl sub_8124F08 - mov r2, r8 - ldr r0, [r2] - adds r0, 0xFC - adds r1, r4, 0 - adds r1, 0x90 - str r6, [sp] - str r5, [sp, 0x4] - movs r2, 0x18 - movs r3, 0x14 - bl sub_8124F08 - mov r1, r8 - ldr r0, [r1] - adds r0, 0xFC - movs r2, 0x90 - negs r2, r2 - adds r2, r4 - mov r9, r2 - str r6, [sp] - str r5, [sp, 0x4] - mov r1, r9 - movs r2, 0 - movs r3, 0x11 - bl sub_8124F08 - mov r1, r8 - ldr r0, [r1] - adds r0, 0xFC - subs r4, 0x48 - str r6, [sp] - str r5, [sp, 0x4] - adds r1, r4, 0 - movs r2, 0 - movs r3, 0x14 - bl sub_8124F08 - mov r2, r8 - ldr r0, [r2] - adds r0, 0xFC - str r6, [sp] - str r5, [sp, 0x4] - mov r1, r9 - movs r2, 0xC - movs r3, 0x14 - bl sub_8124F08 - mov r1, r8 - ldr r0, [r1] - adds r0, 0xFC - str r6, [sp] - str r5, [sp, 0x4] - adds r1, r4, 0 - movs r2, 0xC - movs r3, 0x17 - bl sub_8124F08 - mov r2, r8 - ldr r0, [r2] - adds r0, 0xFC - str r6, [sp] - str r5, [sp, 0x4] - mov r1, r9 - movs r2, 0x18 - movs r3, 0x17 - bl sub_8124F08 - ldr r1, _08123670 @ =gMain - ldr r0, _08123674 @ =0x0000043c - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - b _0812370C - .align 2, 0 -_08123664: .4byte gSpecialVar_0x8004 -_08123668: .4byte gUnknown_02039274 -_0812366C: .4byte 0x02019090 -_08123670: .4byte gMain -_08123674: .4byte 0x0000043c -_08123678: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r1, 0x3 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r0, _081236A4 @ =0x000001a9 - movs r1, 0x1 - bl FadeInNewBGM - movs r0, 0x1 - bl sub_8123FBC - ldr r1, _081236A8 @ =gMain - ldr r2, _081236AC @ =0x0000043c - adds r1, r2 - ldrb r0, [r1] - adds r0, 0x1 - b _0812370C - .align 2, 0 -_081236A4: .4byte 0x000001a9 -_081236A8: .4byte gMain -_081236AC: .4byte 0x0000043c -_081236B0: - ldr r3, _081236E4 @ =0x04000208 - ldrh r2, [r3] - movs r0, 0 - strh r0, [r3] - ldr r4, _081236E8 @ =0x04000200 - ldrh r0, [r4] - movs r1, 0x1 - orrs r0, r1 - strh r0, [r4] - strh r2, [r3] - ldr r0, _081236EC @ =sub_8123C40 - bl SetVBlankCallback - ldr r0, _081236F0 @ =sub_8123724 - bl SetMainCallback2 - ldr r0, _081236F4 @ =sub_8123878 - movs r1, 0 - bl CreateTask - ldr r0, _081236F8 @ =gSpecialVar_0x8004 - ldrh r0, [r0] - cmp r0, 0 - bne _08123700 - ldr r0, _081236FC @ =sub_81239E4 - b _08123702 - .align 2, 0 -_081236E4: .4byte 0x04000208 -_081236E8: .4byte 0x04000200 -_081236EC: .4byte sub_8123C40 -_081236F0: .4byte sub_8123724 -_081236F4: .4byte sub_8123878 -_081236F8: .4byte gSpecialVar_0x8004 -_081236FC: .4byte sub_81239E4 -_08123700: - ldr r0, _0812371C @ =sub_8123AF8 -_08123702: - movs r1, 0x1 - bl CreateTask - ldr r1, _08123720 @ =gUnknown_02039274 - ldr r1, [r1] -_0812370C: - strb r0, [r1] -_0812370E: - add sp, 0x10 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0812371C: .4byte sub_8123AF8 -_08123720: .4byte gUnknown_02039274 - thumb_func_end sub_8123244 - thumb_func_start sub_8123724 sub_8123724: @ 8123724 push {lr} diff --git a/data/cable_car.s b/data/cable_car.s index 3075f7651..6523e0314 100644 --- a/data/cable_car.s +++ b/data/cable_car.s @@ -3,47 +3,6 @@ .section .rodata - .align 2 -gCableCarMtChimneyTilemap:: @ 8401820 - .incbin "graphics/misc/cable_car_mt_chimney_map.bin.lz" - - .align 2 -gCableCarTreeTilemap:: @ 8401978 - .incbin "graphics/misc/cable_car_tree_map.bin.lz" - - .align 2 -gCableCarMountainTilemap:: @ 8401AFC - .incbin "graphics/misc/cable_car_mountain_map.bin.lz" - - .align 2 -gCableCarPylonHookTilemapEntries:: @ 8401CC0 - .2byte 0x3000 - .2byte 0x3001 - .2byte 0x3002 - .2byte 0x3003 - .2byte 0x3004 - .2byte 0x3005 - .2byte 0x3006 - .2byte 0x3007 - .2byte 0x3008 - .2byte 0x3009 - - .align 2 -gCableCarPylonStemTilemap:: @ 8401CD4 - .incbin "graphics/misc/cable_car_pylon_stem_map.bin.lz" - - .align 2 -gUnknown_08401CF8:: @ 8401CF8 - obj_tiles gCableCar_Gfx, 0x800, 1 - obj_tiles gCableCarDoor_Gfx, 0x40, 2 - obj_tiles gCableCarCord_Gfx, 0x80, 3 - .space 8 - - .align 2 -gUnknown_08401D18:: @ 8401D18 - obj_pal gCableCar_Pal, 1 - .space 8 - .align 2 gOamData_8401D28:: @ 8401D28 .2byte 0x0300 diff --git a/include/cable_car_util.h b/include/cable_car_util.h new file mode 100644 index 000000000..0f50914c8 --- /dev/null +++ b/include/cable_car_util.h @@ -0,0 +1,12 @@ +#ifndef GUARD_CABLE_CAR_UTIL_H +#define GUARD_CABLE_CAR_UTIL_H + +// Exported type declarations + +// Exported RAM declarations + +// Exported ROM declarations + +void sub_8124F08(u16 *dest, const u16 *src, u8 x, u8 y, u8 width, u8 height); + +#endif //GUARD_CABLE_CAR_UTIL_H diff --git a/include/field_weather.h b/include/field_weather.h index 409f76028..790fadaea 100644 --- a/include/field_weather.h +++ b/include/field_weather.h @@ -47,4 +47,64 @@ bool8 sub_807DDFC(void); void SetWeather(u32); void UpdateWeatherPerDay(u16); +struct WeatherSubstruct { + u8 filler_0[5]; + u8 unk_5_0:2; + u8 unk_5_2:2; + u8 unk_5_4:4; +}; + +struct Weather +{ + u8 filler_000[0xf0]; + struct WeatherSubstruct *unk_0f0[20]; + u8 filler_140[0xc0]; + u8 unknown_200[2][32]; + u8 filler_240[0x480]; + s8 unknown_6C0; + s8 unknown_6C1; + u8 unknown_6C2; + u8 unknown_6C3; + u16 unknown_6C4; + u8 unknown_6C6; + u8 unknown_6C7; + u8 unknown_6C8; + u8 unknown_6C9; + u8 unknown_6CA; + u8 unknown_6CB; + u8 filler_6CC[2]; + u16 unknown_6CE; + u8 unknown_6D0; + u8 unknown_6D1; + u8 filler_6D2[1]; + u8 unknown_6D3; + u8 unknown_6D4; + u8 unknown_6D5; + u8 filler_6D6[2]; + u8 unknown_6D8; + u8 filler_6D9[1]; + u8 unknown_6DA; + u8 filler_6DB[3]; + u8 unknown_6DE; + u8 filler_6DF[5]; + u8 unknown_6E4; + u8 filler_6E5[0x15]; + u8 unknown_6FA; + u8 unknown_6FB; + u8 filler_6FC[4]; + u8 unknown_700; + u8 filler_701[0x15]; + u8 unknown_716; + u8 unknown_717; + u8 filler_718[0xc]; + u8 unknown_724; + u8 filler_725[9]; + u8 unknown_72E; +}; + +#define gWeather gUnknown_0202F7E8 +extern struct Weather gWeather; + +extern struct Weather *const gUnknown_08396FC4; + #endif // GUARD_WEATHER_H diff --git a/include/gba/macro.h b/include/gba/macro.h index 1e0254806..71ff15590 100644 --- a/include/gba/macro.h +++ b/include/gba/macro.h @@ -118,4 +118,34 @@ #define DmaCopy16Defvars(dmaNum, src, dest, size) DmaCopyDefvars(dmaNum, src, dest, size, 16) #define DmaCopy32Defvars(dmaNum, src, dest, size) DmaCopyDefvars(dmaNum, src, dest, size, 32) +#define DmaFillLarge(dmaNum, fillval, dest, size, block, bit) \ +{ \ + void *_dest = dest; \ + u32 _size = (u32)(size); \ + while (1) \ + { \ + DmaFill##bit(dmaNum, fillval, _dest, (block)); \ + _dest += (block); \ + _size -= (block); \ + if (_size <= (block)) \ + { \ + DmaFill##bit(dmaNum, fillval, _dest, _size); \ + break; \ + } \ + } \ +} + +#define DmaFill16Large(dmaNum, fillval, dest, size, block) DmaFillLarge(dmaNum, fillval, dest, size, block, 16) +#define DmaFill32Large(dmaNum, fillval, dest, size, block) DmaFillLarge(dmaNum, fillval, dest, size, block, 32) + +#define DmaFillDefvars(dmaNum, fillval, dest, size, bit) \ +{ \ + void *_dest = dest; \ + u32 _size = (u##bit)(size); \ + DmaFill##bit(dmaNum, fillval, _dest, _size); \ +} + +#define DmaFill16Defvars(dmaNum, fillval, dest, size) DmaFillDefvars(dmaNum, fillval, dest, size, 16) +#define DmaFill32Defvars(dmaNum, fillval, dest, size) DmaFillDefvars(dmaNum, fillval, dest, size, 32) + #endif // GUARD_GBA_MACRO_H diff --git a/include/global.h b/include/global.h index f0eb7401f..4604c8cbb 100644 --- a/include/global.h +++ b/include/global.h @@ -799,5 +799,6 @@ struct HallOfFame extern struct HallOfFame gHallOfFame; extern struct SaveBlock2 gSaveBlock2; +extern u8 ewram[]; #endif // GUARD_GLOBAL_H diff --git a/ld_script.txt b/ld_script.txt index 4b103324e..96dce388a 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -437,6 +437,7 @@ SECTIONS { src/battle/battle_controller_linkpartner.o(.rodata); data/battle_message.o(.rodata); src/field/choose_party.o(.rodata); + src/scene/cable_car.o(.rodata); data/cable_car.o(.rodata); src/engine/save.o(.rodata); src/field/field_effect_helpers.o(.rodata); diff --git a/src/field/field_weather.c b/src/field/field_weather.c index 443a38357..8dcfd62fa 100644 --- a/src/field/field_weather.c +++ b/src/field/field_weather.c @@ -4,54 +4,6 @@ #include "sprite.h" #include "task.h" -struct Weather -{ - u8 filler_000[0x200]; - u8 unknown_200[2][32]; - u8 filler_240[0x480]; - s8 unknown_6C0; - s8 unknown_6C1; - u8 unknown_6C2; - u8 unknown_6C3; - u16 unknown_6C4; - u8 unknown_6C6; - u8 unknown_6C7; - u8 unknown_6C8; - u8 unknown_6C9; - u8 unknown_6CA; - u8 unknown_6CB; - u8 filler_6CC[2]; - u16 unknown_6CE; - u8 unknown_6D0; - u8 unknown_6D1; - u8 filler_6D2[1]; - u8 unknown_6D3; - u8 unknown_6D4; - u8 unknown_6D5; - u8 filler_6D6[2]; - u8 unknown_6D8; - u8 filler_6D9[1]; - u8 unknown_6DA; - u8 filler_6DB[3]; - u8 unknown_6DE; - u8 filler_6DF[5]; - u8 unknown_6E4; - u8 filler_6E5[0x15]; - u8 unknown_6FA; - u8 unknown_6FB; - u8 filler_6FC[4]; - u8 unknown_700; - u8 filler_701[0x15]; - u8 unknown_716; - u8 unknown_717; - u8 filler_718[0xc]; - u8 unknown_724; - u8 filler_725[9]; - u8 unknown_72E; -}; - -#define gWeather gUnknown_0202F7E8 -extern struct Weather gWeather; extern u8 *gUnknown_083970E8; extern u8 (*gUnknown_08396FC8[][4])(void); extern u8 (*gUnknown_083970B8[])(void); diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c index 1b5d22221..0f3726e3a 100644 --- a/src/scene/cable_car.c +++ b/src/scene/cable_car.c @@ -3,18 +3,101 @@ #include "global.h" #include "palette.h" #include "main.h" +#include "script.h" #include "task.h" +#include "sound.h" +#include "songs.h" +#include "decompress.h" +#include "field_weather.h" +#include "unknown_task.h" +#include "event_data.h" +#include "cable_car_util.h" // Static type declarations +struct Unk_2017000 { + u8 unk_0000; + u8 unk_0001; + u8 unk_0002; + u8 filler_0003[0xf9]; + u16 unk_00fc[0x400]; + u16 unk_08fc[0x400]; +}; // size 0x10FC + +struct Unk_2019000 { + /* 0x000 */ u16 mtChimneyTilemap[0xb4]; + /* 0x168 */ u16 treeTilemap[0x1e0]; + /* 0x528 */ u16 mountainTilemap[0x258]; + /* 0x9d8 */ u16 pylonStemTilemap[0x628]; // size not actually known +}; + +#define ewram_17000 (*(struct Unk_2017000 *)(ewram + 0x17000)) +#define ewram_19000 (*(struct Unk_2019000 *)(ewram + 0x19000)) + // Static RAM declarations +EWRAM_DATA struct Unk_2017000 *gUnknown_02039274 = NULL; +EWRAM_DATA u8 gUnknown_02039278 = 0; +EWRAM_DATA u8 gUnknown_02039279 = 0; +EWRAM_DATA u8 gUnknown_0203927A = 0; +EWRAM_DATA u8 gUnknown_0203927B = 0; +EWRAM_DATA u8 gUnknown_0203927C = 0; +EWRAM_DATA u8 gUnknown_0203927D = 0; +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); // .rodata +extern const u8 gCableCar_Gfx[]; +extern const u8 gCableCarDoor_Gfx[]; +extern const u8 gCableCarCord_Gfx[]; +extern const u16 gCableCar_Pal[]; +extern const u16 gCableCarBG_Pal[]; +extern const u8 gCableCarBG_Gfx[]; + +const u8 gCableCarMtChimneyTilemap[] = INCBIN_U8("graphics/misc/cable_car_mt_chimney_map.bin.lz"); + +const u8 gCableCarTreeTilemap[] = INCBIN_U8("graphics/misc/cable_car_tree_map.bin.lz"); + +const u8 gCableCarMountainTilemap[] = INCBIN_U8("graphics/misc/cable_car_mountain_map.bin.lz"); + +const u16 gCableCarPylonHookTilemapEntries[] = { + 0x3000, + 0x3001, + 0x3002, + 0x3003, + 0x3004, + 0x3005, + 0x3006, + 0x3007, + 0x3008, + 0x3009 +}; + +const u8 gCableCarPylonStemTilemap[] = INCBIN_U8("graphics/misc/cable_car_pylon_stem_map.bin.lz"); + +const struct CompressedSpriteSheet gUnknown_08401CF8[] = { + { gCableCar_Gfx, 0x800, 1 }, + { gCableCarDoor_Gfx, 0x40, 2 }, + { gCableCarCord_Gfx, 0x80, 3 }, + { } +}; +const struct SpritePalette gUnknown_08401D18[] = { + { gCableCar_Pal, 1 }, + { } +}; + // .text void sub_81231EC(u8 taskId) @@ -25,3 +108,124 @@ void sub_81231EC(u8 taskId) DestroyTask(taskId); } } + +void sub_8123218(void) +{ + ScriptContext2_Enable(); + CreateTask(sub_81231EC, 1); + BeginNormalPaletteFade(-1, 0, 0, 16, 0); +} + +void sub_8123244(void) +{ + u8 i; + u16 imebak; + + switch (gMain.state) + { + case 0: + default: + SetVBlankCallback(NULL); + remove_some_task(); + DmaFill16Large(3, 0, (void *)VRAM, VRAM_SIZE, 0x1000); + DmaFill32Defvars(3, 0, (void *)OAM, OAM_SIZE); + DmaFill16Defvars(3, 0, (void *)PLTT, PLTT_SIZE); + gUnknown_02039274 = &ewram_17000; + DmaFill16Large(3, 0, &ewram_17000, 0x10FC, 0x1000); + gMain.state ++; + break; + case 1: + ResetSpriteData(); + ResetTasks(); + FreeAllSpritePalettes(); + ResetPaletteFade(); + sub_807C828(); + for (i = 0; i < 20; i ++) + { + gUnknown_08396FC4->unk_0f0[i] = NULL; + } + InitMapMusic(); + ResetMapMusic(); + gSpriteCoordOffsetX = gSpriteCoordOffsetY = 0; + gMain.state ++; + break; + case 2: + for (i = 0; i < 3; i ++) + { + LoadCompressedObjectPic(&gUnknown_08401CF8[i]); + } + LoadSpritePalettes(gUnknown_08401D18); + LZDecompressWram(gCableCarMtChimneyTilemap, ewram_19000.mtChimneyTilemap); + LZDecompressWram(gCableCarTreeTilemap, ewram_19000.treeTilemap); + LZDecompressWram(gCableCarMountainTilemap, ewram_19000.mountainTilemap); + LZDecompressWram(gCableCarPylonStemTilemap, ewram_19000.pylonStemTilemap); + LoadPalette(gCableCarBG_Pal, 0, 0x80); + LZ77UnCompVram(gCableCarBG_Gfx, (u16 *)BG_VRAM); + gMain.state ++; + break; + case 3: + sub_8124118(); + RunTasks(); + gMain.state ++; + break; + case 4: + if (gUnknown_02039274->unk_0002 == 7) + { + gMain.state ++; + } + else if (gUnknown_08396FC4->unk_0f0[0] != NULL) + { + for (i = 0; i < 20; i ++) + { + if (gUnknown_08396FC4->unk_0f0[i] != NULL) + { + gUnknown_08396FC4->unk_0f0[i]->unk_5_2 = 0; + } + } + gMain.state ++; + } + break; + case 5: + sub_8124F08((u16 *)BG_SCREEN_ADDR(29), ewram_19000.treeTilemap, 0, 17, 32, 15); + sub_8124F08((u16 *)BG_SCREEN_ADDR(30), ewram_19000.mountainTilemap, 0, 0, 30, 20); + sub_8124F08(gUnknown_02039274->unk_08fc, gCableCarPylonHookTilemapEntries, 0, 0, 5, 2); + sub_8124F08(gUnknown_02039274->unk_08fc, ewram_19000.pylonStemTilemap, 0, 2, 2, 20); + gMain.state ++; + break; + case 6: + sub_81248AC(gSpecialVar_0x8004); + sub_8124F08(gUnknown_02039274->unk_00fc, ewram_19000.mtChimneyTilemap + 0x48, 0, 14, 12, 3); + sub_8124F08(gUnknown_02039274->unk_00fc, ewram_19000.mtChimneyTilemap + 0x6C, 12, 17, 12, 3); + sub_8124F08(gUnknown_02039274->unk_00fc, ewram_19000.mtChimneyTilemap + 0x90, 24, 20, 12, 3); + sub_8124F08(gUnknown_02039274->unk_00fc, ewram_19000.mtChimneyTilemap + 0x00, 0, 17, 12, 3); + sub_8124F08(gUnknown_02039274->unk_00fc, ewram_19000.mtChimneyTilemap + 0x24, 0, 20, 12, 3); + sub_8124F08(gUnknown_02039274->unk_00fc, ewram_19000.mtChimneyTilemap + 0x00, 12, 20, 12, 3); + sub_8124F08(gUnknown_02039274->unk_00fc, ewram_19000.mtChimneyTilemap + 0x24, 12, 23, 12, 3); + sub_8124F08(gUnknown_02039274->unk_00fc, ewram_19000.mtChimneyTilemap + 0x00, 24, 23, 12, 3); + gMain.state ++; + break; + case 7: + BeginNormalPaletteFade(-1, 3, 16, 0, 0); + FadeInNewBGM(BGM_ROPEWAY, 1); + sub_8123FBC(1); + gMain.state ++; + break; + case 8: + imebak = REG_IME; + REG_IME = 0; + REG_IE |= INTR_FLAG_VBLANK; + REG_IME = imebak; + SetVBlankCallback(sub_8123C40); + SetMainCallback2(sub_8123724); + CreateTask(sub_8123878, 0); + if (gSpecialVar_0x8004 == 0) + { + gUnknown_02039274->unk_0000 = CreateTask(sub_81239E4, 1); + } + else + { + gUnknown_02039274->unk_0000 = CreateTask(sub_8123AF8, 1); + } + break; + } +} diff --git a/sym_ewram.txt b/sym_ewram.txt index 09351240f..94388dfd6 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -580,31 +580,7 @@ gAbilitiesPerBank: @ 203926C .space 0x4 .include "src/field/choose_party.o" - -@ cable_car - - .align 2 -gUnknown_02039274: @ 2039274 - .space 0x4 - -gUnknown_02039278: @ 2039278 - .space 0x1 - -gUnknown_02039279: @ 2039279 - .space 0x1 - -gUnknown_0203927A: @ 203927A - .space 0x1 - -gUnknown_0203927B: @ 203927B - .space 0x1 - -gUnknown_0203927C: @ 203927C - .space 0x1 - -gUnknown_0203927D: @ 203927D - .space 0x7 - + .include "src/scene/cable_car.o" .include "src/engine/save.o" .include "src/engine/mystery_event_script.o" .include "src/field/roamer.o" -- cgit v1.2.3 From b833bf304963f92de2670529d1d9083180ade9ba Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 14 Oct 2017 22:34:01 -0400 Subject: sub_8123740 --- asm/cable_car.s | 160 -------------------------------------------------- include/gba/macro.h | 10 ++-- src/scene/cable_car.c | 37 +++++++++++- 3 files changed, 39 insertions(+), 168 deletions(-) diff --git a/asm/cable_car.s b/asm/cable_car.s index 6f20f57e3..d1f2ba5a1 100644 --- a/asm/cable_car.s +++ b/asm/cable_car.s @@ -6,166 +6,6 @@ .text - thumb_func_start sub_8123724 -sub_8123724: @ 8123724 - push {lr} - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - bl MapMusicMain - pop {r0} - bx r0 - thumb_func_end sub_8123724 - - thumb_func_start sub_8123740 -sub_8123740: @ 8123740 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - movs r4, 0 - movs r0, 0 - bl sub_8123FBC - ldr r0, _08123854 @ =gSpriteCoordOffsetX - strh r4, [r0] - movs r0, 0 - bl sub_807C9B4 - add r7, sp, 0x4 - ldr r0, _08123858 @ =gUnknown_08396FC4 - ldr r0, [r0] - adds r1, r0, 0 - adds r1, 0xF0 - movs r2, 0 -_08123766: - lsls r0, r4, 2 - adds r0, r1, r0 - str r2, [r0] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x13 - bls _08123766 - bl ResetTasks - bl ResetSpriteData - bl ResetPaletteFade - ldr r2, _0812385C @ =0x02000000 - movs r3, 0x80 - lsls r3, 10 - movs r5, 0 - ldr r1, _08123860 @ =0x040000d4 - movs r4, 0x80 - lsls r4, 5 - ldr r6, _08123864 @ =0x85000400 - movs r0, 0x85 - lsls r0, 24 - mov r12, r0 -_08123798: - str r5, [sp] - mov r0, sp - str r0, [r1] - str r2, [r1, 0x4] - str r6, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r2, r4 - subs r3, r4 - cmp r3, r4 - bhi _08123798 - str r5, [sp] - mov r0, sp - str r0, [r1] - str r2, [r1, 0x4] - lsrs r0, r3, 2 - mov r2, r12 - orrs r0, r2 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - ldr r1, _08123868 @ =gUnknown_02039274 - movs r0, 0 - str r0, [r1] - movs r3, 0xC0 - lsls r3, 19 - movs r4, 0xC0 - lsls r4, 9 - adds r2, r7, 0 - movs r6, 0 - ldr r1, _08123860 @ =0x040000d4 - movs r5, 0x80 - lsls r5, 5 - ldr r0, _0812386C @ =0x81000800 - mov r12, r0 - movs r0, 0x81 - lsls r0, 24 - mov r8, r0 -_081237E0: - strh r6, [r2] - str r2, [r1] - str r3, [r1, 0x4] - mov r0, r12 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r3, r5 - subs r4, r5 - cmp r4, r5 - bhi _081237E0 - strh r6, [r7] - str r7, [r1] - str r3, [r1, 0x4] - lsrs r0, r4, 1 - mov r2, r8 - orrs r0, r2 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - movs r0, 0xE0 - lsls r0, 19 - movs r3, 0x80 - lsls r3, 3 - movs r4, 0 - str r4, [sp] - ldr r2, _08123860 @ =0x040000d4 - mov r1, sp - str r1, [r2] - str r0, [r2, 0x4] - lsrs r0, r3, 2 - movs r1, 0x85 - lsls r1, 24 - orrs r0, r1 - str r0, [r2, 0x8] - ldr r0, [r2, 0x8] - movs r0, 0xA0 - lsls r0, 19 - strh r4, [r7] - str r7, [r2] - str r0, [r2, 0x4] - lsrs r3, 1 - movs r0, 0x81 - lsls r0, 24 - orrs r3, r0 - str r3, [r2, 0x8] - ldr r0, [r2, 0x8] - bl warp_in - ldr r0, _08123870 @ =gFieldCallback - str r4, [r0] - ldr r0, _08123874 @ =CB2_LoadMap - bl SetMainCallback2 - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08123854: .4byte gSpriteCoordOffsetX -_08123858: .4byte gUnknown_08396FC4 -_0812385C: .4byte 0x02000000 -_08123860: .4byte 0x040000d4 -_08123864: .4byte 0x85000400 -_08123868: .4byte gUnknown_02039274 -_0812386C: .4byte 0x81000800 -_08123870: .4byte gFieldCallback -_08123874: .4byte CB2_LoadMap - thumb_func_end sub_8123740 - thumb_func_start sub_8123878 sub_8123878: @ 8123878 push {r4-r7,lr} diff --git a/include/gba/macro.h b/include/gba/macro.h index 71ff15590..a183a44fc 100644 --- a/include/gba/macro.h +++ b/include/gba/macro.h @@ -87,7 +87,7 @@ #define DmaCopyLarge(dmaNum, src, dest, size, block, bit) \ { \ const void *_src = src; \ - void *_dest = dest; \ + void *_dest = (void *)(dest); \ u32 _size = size; \ while (1) \ { \ @@ -110,7 +110,7 @@ #define DmaCopyDefvars(dmaNum, src, dest, size, bit) \ { \ const void *_src = src; \ - void *_dest = dest; \ + void *_dest = (void *)(dest); \ u32 _size = size; \ DmaCopy##bit(dmaNum, _src, _dest, _size); \ } @@ -120,8 +120,8 @@ #define DmaFillLarge(dmaNum, fillval, dest, size, block, bit) \ { \ - void *_dest = dest; \ - u32 _size = (u32)(size); \ + void *_dest = (void *)(dest); \ + u32 _size = (u32)(size); \ while (1) \ { \ DmaFill##bit(dmaNum, fillval, _dest, (block)); \ @@ -140,7 +140,7 @@ #define DmaFillDefvars(dmaNum, fillval, dest, size, bit) \ { \ - void *_dest = dest; \ + void *_dest = (void *)(dest); \ u32 _size = (u##bit)(size); \ DmaFill##bit(dmaNum, fillval, _dest, _size); \ } diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c index 0f3726e3a..899bb9dba 100644 --- a/src/scene/cable_car.c +++ b/src/scene/cable_car.c @@ -1,6 +1,7 @@ // Includes #include "global.h" +#include "overworld.h" #include "palette.h" #include "main.h" #include "script.h" @@ -127,9 +128,9 @@ void sub_8123244(void) default: SetVBlankCallback(NULL); remove_some_task(); - DmaFill16Large(3, 0, (void *)VRAM, VRAM_SIZE, 0x1000); - DmaFill32Defvars(3, 0, (void *)OAM, OAM_SIZE); - DmaFill16Defvars(3, 0, (void *)PLTT, PLTT_SIZE); + DmaFill16Large(3, 0, VRAM, VRAM_SIZE, 0x1000); + DmaFill32Defvars(3, 0, OAM, OAM_SIZE); + DmaFill16Defvars(3, 0, PLTT, PLTT_SIZE); gUnknown_02039274 = &ewram_17000; DmaFill16Large(3, 0, &ewram_17000, 0x10FC, 0x1000); gMain.state ++; @@ -229,3 +230,33 @@ void sub_8123244(void) break; } } + +void sub_8123724(void) +{ + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); + MapMusicMain(); +} + +void sub_8123740(void) +{ + u8 i; + + for (i = 0, sub_8123FBC(0), gSpriteCoordOffsetX = 0, sub_807C9B4(0); i < 20; i ++) + { + gUnknown_08396FC4->unk_0f0[i] = NULL; + } + ResetTasks(); + ResetSpriteData(); + ResetPaletteFade(); + DmaFill32Large(3, 0, ewram, 0x20000, 0x1000); + gUnknown_02039274 = NULL; + DmaFill16Large(3, 0, VRAM, VRAM_SIZE, 0x1000); + DmaFill32Defvars(3, 0, OAM, OAM_SIZE); + DmaFill16Defvars(3, 0, PLTT, PLTT_SIZE); + warp_in(); + gFieldCallback = NULL; + SetMainCallback2(CB2_LoadMap); +} -- cgit v1.2.3 From 89904a0f2492e9e579b7478c4a66cc547027cf48 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 14 Oct 2017 23:07:27 -0400 Subject: sub_8123878 --- asm/cable_car.s | 192 ------------------------------------------------ include/field_weather.h | 9 +-- src/scene/cable_car.c | 85 ++++++++++++++++++++- 3 files changed, 83 insertions(+), 203 deletions(-) diff --git a/asm/cable_car.s b/asm/cable_car.s index d1f2ba5a1..0b8a701f6 100644 --- a/asm/cable_car.s +++ b/asm/cable_car.s @@ -6,198 +6,6 @@ .text - thumb_func_start sub_8123878 -sub_8123878: @ 8123878 - push {r4-r7,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r6, r0, 24 - movs r4, 0 - ldr r5, _081238A4 @ =gUnknown_02039274 - ldr r3, [r5] - ldrh r0, [r3, 0x6] - adds r0, 0x1 - strh r0, [r3, 0x6] - ldrb r2, [r3, 0x1] - adds r7, r5, 0 - cmp r2, 0x2 - beq _0812397E - cmp r2, 0x2 - bgt _081238A8 - cmp r2, 0 - beq _081238B6 - cmp r2, 0x1 - beq _081238D0 - b _081239D6 - .align 2, 0 -_081238A4: .4byte gUnknown_02039274 -_081238A8: - cmp r2, 0x3 - bne _081238AE - b _081239A4 -_081238AE: - cmp r2, 0xFF - bne _081238B4 - b _081239BC -_081238B4: - b _081239D6 -_081238B6: - lsls r0, 16 - lsrs r0, 16 - ldrh r1, [r3, 0x4] - cmp r0, r1 - beq _081238C2 - b _081239D6 -_081238C2: - ldrb r0, [r3, 0x2] - bl DoWeatherEffect - ldr r1, [r5] - movs r0, 0x1 - strb r0, [r1, 0x1] - b _081239D6 -_081238D0: - ldrb r0, [r3, 0x2] - cmp r0, 0x2 - beq _08123924 - cmp r0, 0x7 - beq _081238DC - b _081239D6 -_081238DC: - ldr r0, _08123920 @ =gUnknown_08396FC4 - ldr r0, [r0] - adds r2, r0, 0 - adds r2, 0xF0 - ldr r0, [r2] - cmp r0, 0 - beq _081239D6 - ldrb r1, [r0, 0x5] - movs r0, 0xC - ands r0, r1 - cmp r0, 0 - beq _081239D6 - adds r3, r2, 0 - movs r5, 0xD - negs r5, r5 -_081238FA: - lsls r0, r4, 2 - adds r0, r3, r0 - ldr r2, [r0] - cmp r2, 0 - beq _0812390C - ldrb r1, [r2, 0x5] - adds r0, r5, 0 - ands r0, r1 - strb r0, [r2, 0x5] -_0812390C: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x13 - bls _081238FA - ldr r1, [r7] - movs r0, 0x2 - strb r0, [r1, 0x1] - b _081239D6 - .align 2, 0 -_08123920: .4byte gUnknown_08396FC4 -_08123924: - ldr r0, _08123938 @ =gUnknown_08396FC4 - ldr r2, [r0] - movs r1, 0xDA - lsls r1, 3 - adds r0, r2, r1 - ldrb r0, [r0] - cmp r0, 0x2 - bne _0812393C - strb r0, [r3, 0x1] - b _081239D6 - .align 2, 0 -_08123938: .4byte gUnknown_08396FC4 -_0812393C: - ldrh r1, [r3, 0x6] - ldrh r0, [r3, 0x4] - adds r0, 0x8 - cmp r1, r0 - blt _081239D6 - adds r6, r2, 0 - adds r6, 0xF0 - movs r5, 0x1 - movs r7, 0x5 - negs r7, r7 -_08123950: - lsls r0, r4, 2 - adds r0, r6, r0 - ldr r0, [r0] - cmp r0, 0 - beq _08123972 - adds r3, r0, 0 - adds r3, 0x3E - ldrb r2, [r3] - lsls r1, r2, 29 - lsrs r1, 31 - eors r1, r5 - ands r1, r5 - lsls r1, 2 - adds r0, r7, 0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] -_08123972: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x13 - bls _08123950 - b _081239D6 -_0812397E: - lsls r1, r0, 16 - ldr r0, _081239A0 @ =0x023a0000 - cmp r1, r0 - bne _081239D6 - movs r0, 0x3 - strb r0, [r3, 0x1] - subs r0, 0x4 - str r4, [sp] - movs r1, 0x3 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - movs r0, 0x4 - bl FadeOutBGM - b _081239D6 - .align 2, 0 -_081239A0: .4byte 0x023a0000 -_081239A4: - ldr r0, _081239B8 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _081239D6 - movs r0, 0xFF - strb r0, [r3, 0x1] - b _081239D6 - .align 2, 0 -_081239B8: .4byte gPaletteFade -_081239BC: - movs r0, 0 - bl SetVBlankCallback - adds r0, r6, 0 - bl DestroyTask - ldr r0, [r5] - ldrb r0, [r0] - bl DestroyTask - ldr r0, _081239E0 @ =sub_8123740 - bl SetMainCallback2 -_081239D6: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_081239E0: .4byte sub_8123740 - thumb_func_end sub_8123878 - thumb_func_start sub_81239E4 sub_81239E4: @ 81239E4 push {r4-r6,lr} diff --git a/include/field_weather.h b/include/field_weather.h index 790fadaea..b51c47de7 100644 --- a/include/field_weather.h +++ b/include/field_weather.h @@ -47,17 +47,10 @@ bool8 sub_807DDFC(void); void SetWeather(u32); void UpdateWeatherPerDay(u16); -struct WeatherSubstruct { - u8 filler_0[5]; - u8 unk_5_0:2; - u8 unk_5_2:2; - u8 unk_5_4:4; -}; - struct Weather { u8 filler_000[0xf0]; - struct WeatherSubstruct *unk_0f0[20]; + struct Sprite *unk_0f0[20]; u8 filler_140[0xc0]; u8 unknown_200[2][32]; u8 filler_240[0x480]; diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c index 899bb9dba..27ae54d51 100644 --- a/src/scene/cable_car.c +++ b/src/scene/cable_car.c @@ -20,7 +20,10 @@ struct Unk_2017000 { u8 unk_0000; u8 unk_0001; u8 unk_0002; - u8 filler_0003[0xf9]; + u8 unk_0003; + u16 unk_0004; + u16 unk_0006; + u8 filler_0008[0xf4]; u16 unk_00fc[0x400]; u16 unk_08fc[0x400]; }; // size 0x10FC @@ -180,7 +183,7 @@ void sub_8123244(void) { if (gUnknown_08396FC4->unk_0f0[i] != NULL) { - gUnknown_08396FC4->unk_0f0[i]->unk_5_2 = 0; + gUnknown_08396FC4->unk_0f0[i]->oam.priority = 0; } } gMain.state ++; @@ -244,7 +247,11 @@ void sub_8123740(void) { u8 i; - for (i = 0, sub_8123FBC(0), gSpriteCoordOffsetX = 0, sub_807C9B4(0); i < 20; i ++) + i = 0; + sub_8123FBC(0); + gSpriteCoordOffsetX = 0; + sub_807C9B4(0); + for (; i < 20; i ++) { gUnknown_08396FC4->unk_0f0[i] = NULL; } @@ -260,3 +267,75 @@ void sub_8123740(void) gFieldCallback = NULL; SetMainCallback2(CB2_LoadMap); } + +void sub_8123878(u8 taskId) +{ + u8 i; + + i = 0; + gUnknown_02039274->unk_0006 ++; + switch (gUnknown_02039274->unk_0001) + { + case 0: + if (gUnknown_02039274->unk_0006 == gUnknown_02039274->unk_0004) + { + DoWeatherEffect(gUnknown_02039274->unk_0002); + gUnknown_02039274->unk_0001 = 1; + } + break; + case 1: + switch (gUnknown_02039274->unk_0002) + { + case 7: + if (gUnknown_08396FC4->unk_0f0[0] != NULL && gUnknown_08396FC4->unk_0f0[0]->oam.priority != 0) + { + for (; i < 20; i ++) + { + if (gUnknown_08396FC4->unk_0f0[i] != NULL) + { + gUnknown_08396FC4->unk_0f0[i]->oam.priority = 0; + } + } + gUnknown_02039274->unk_0001 = 2; + } + break; + case 2: + if (gUnknown_08396FC4->unknown_6D0 == 2) + { + gUnknown_02039274->unk_0001 = 2; + } + else if (gUnknown_02039274->unk_0006 >= gUnknown_02039274->unk_0004 + 8) + { + for (; i < 20; i ++) + { + if (gUnknown_08396FC4->unk_0f0[i] != NULL) + { + gUnknown_08396FC4->unk_0f0[i]->invisible ^= TRUE; + } + } + } + break; + } + break; + case 2: + if (gUnknown_02039274->unk_0006 == 570) + { + gUnknown_02039274->unk_0001 = 3; + BeginNormalPaletteFade(-1, 3, 0, 16, 0); + FadeOutBGM(4); + } + break; + case 3: + if (!gPaletteFade.active) + { + gUnknown_02039274->unk_0001 = 255; + } + break; + case 255: + SetVBlankCallback(NULL); + DestroyTask(taskId); + DestroyTask(gUnknown_02039274->unk_0000); + SetMainCallback2(sub_8123740); + break; + } +} -- cgit v1.2.3 From 91a171ff93f10ba185a826257c5b1f2564e59a22 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 14 Oct 2017 23:40:20 -0400 Subject: sub_81239E4 --- asm/cable_car.s | 140 ----------------------------------------------- include/cable_car_util.h | 1 + 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; +} -- cgit v1.2.3 From acf2820efce9893e71700c8892b00f9acceb9477 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 15 Oct 2017 10:18:11 -0400 Subject: sub_8123AF8 --- asm/cable_car.s | 162 ------------------------------------------------ include/field_weather.h | 3 +- include/global.h | 6 +- src/scene/cable_car.c | 47 ++++++++++++++ 4 files changed, 52 insertions(+), 166 deletions(-) diff --git a/asm/cable_car.s b/asm/cable_car.s index f2cb6e472..72c1c9eda 100644 --- a/asm/cable_car.s +++ b/asm/cable_car.s @@ -6,168 +6,6 @@ .text - thumb_func_start sub_8123AF8 -sub_8123AF8: @ 8123AF8 - push {r4-r6,lr} - sub sp, 0x8 - ldr r6, _08123B4C @ =gUnknown_02039274 - ldr r1, [r6] - ldrb r0, [r1, 0x1] - cmp r0, 0xFF - beq _08123BEE - ldrb r0, [r1, 0x14] - adds r0, 0x1 - strb r0, [r1, 0x14] - ldr r2, [r6] - ldrh r0, [r2, 0x6] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - bne _08123B1E - ldrb r0, [r2, 0x15] - adds r0, 0x1 - strb r0, [r2, 0x15] -_08123B1E: - ldr r2, [r6] - ldrh r0, [r2, 0x6] - movs r1, 0x7 - ands r0, r1 - cmp r0, 0 - bne _08123B38 - ldrb r0, [r2, 0xC] - adds r0, 0x1 - strb r0, [r2, 0xC] - ldr r1, [r6] - ldrb r0, [r1, 0xD] - adds r0, 0x1 - strb r0, [r1, 0xD] -_08123B38: - ldr r3, [r6] - ldrb r0, [r3, 0x14] - cmp r0, 0x20 - beq _08123BB0 - cmp r0, 0x20 - bgt _08123B50 - cmp r0, 0x10 - beq _08123B78 - b _08123BEE - .align 2, 0 -_08123B4C: .4byte gUnknown_02039274 -_08123B50: - cmp r0, 0x28 - beq _08123BDC - cmp r0, 0xB0 - bne _08123BEE - ldr r1, _08123B70 @ =0x000008fc - adds r0, r3, r1 - ldr r1, _08123B74 @ =0x020199d8 - movs r2, 0x2 - str r2, [sp] - movs r2, 0x1E - str r2, [sp, 0x4] - movs r2, 0 - movs r3, 0x2 - bl sub_8124F08 - b _08123BEE - .align 2, 0 -_08123B70: .4byte 0x000008fc -_08123B74: .4byte 0x020199d8 -_08123B78: - ldr r5, _08123BAC @ =0x000008fc - adds r0, r3, r5 - movs r1, 0x3 - str r1, [sp] - movs r4, 0x2 - str r4, [sp, 0x4] - movs r1, 0 - movs r2, 0x2 - movs r3, 0 - bl sub_8124E7C - ldr r0, [r6] - adds r0, r5 - str r4, [sp] - movs r1, 0xA - str r1, [sp, 0x4] - movs r1, 0 - movs r2, 0 - movs r3, 0x16 - bl sub_8124E7C - ldr r1, [r6] - movs r0, 0xC0 - strb r0, [r1, 0x15] - b _08123BEE - .align 2, 0 -_08123BAC: .4byte 0x000008fc -_08123BB0: - ldr r1, _08123BD4 @ =gCableCarPylonHookTilemapEntries + 0x4 - ldrh r2, [r1] - movs r4, 0x90 - lsls r4, 4 - adds r0, r3, r4 - strh r2, [r0] - ldrh r2, [r1, 0x2] - adds r4, 0x2 - adds r0, r3, r4 - strh r2, [r0] - ldrh r2, [r1, 0xA] - adds r4, 0x3E - adds r0, r3, r4 - strh r2, [r0] - ldrh r1, [r1, 0xC] - ldr r2, _08123BD8 @ =0x00000942 - b _08123BEA - .align 2, 0 -_08123BD4: .4byte gCableCarPylonHookTilemapEntries + 0x4 -_08123BD8: .4byte 0x00000942 -_08123BDC: - ldr r2, _08123C08 @ =gCableCarPylonHookTilemapEntries + 0x8 - ldrh r1, [r2] - ldr r4, _08123C0C @ =0x00000904 - adds r0, r3, r4 - strh r1, [r0] - ldrh r1, [r2, 0xA] - ldr r2, _08123C10 @ =0x00000944 -_08123BEA: - adds r0, r3, r2 - strh r1, [r0] -_08123BEE: - bl sub_8124598 - ldr r0, _08123C14 @ =gUnknown_02039274 - ldr r1, [r0] - ldrh r0, [r1, 0x6] - ldrh r1, [r1, 0x4] - cmp r0, r1 - bcs _08123C1C - ldr r4, _08123C18 @ =gSpriteCoordOffsetX - movs r1, 0 - ldrsh r0, [r4, r1] - b _08123C26 - .align 2, 0 -_08123C08: .4byte gCableCarPylonHookTilemapEntries + 0x8 -_08123C0C: .4byte 0x00000904 -_08123C10: .4byte 0x00000944 -_08123C14: .4byte gUnknown_02039274 -_08123C18: .4byte gSpriteCoordOffsetX -_08123C1C: - ldr r0, _08123C38 @ =gUnknown_08396FC4 - ldr r4, [r0] - ldr r2, _08123C3C @ =0x000006fc - adds r4, r2 - ldrh r0, [r4] -_08123C26: - adds r0, 0xF7 - movs r1, 0xF8 - bl __modsi3 - strh r0, [r4] - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08123C38: .4byte gUnknown_08396FC4 -_08123C3C: .4byte 0x000006fc - thumb_func_end sub_8123AF8 - thumb_func_start sub_8123C40 sub_8123C40: @ 8123C40 push {r4,lr} diff --git a/include/field_weather.h b/include/field_weather.h index b51c47de7..d3b1f4ffd 100644 --- a/include/field_weather.h +++ b/include/field_weather.h @@ -84,7 +84,8 @@ struct Weather u8 filler_6E5[0x15]; u8 unknown_6FA; u8 unknown_6FB; - u8 filler_6FC[4]; + u16 unknown_6FC; + u8 filler_6FE[2]; u8 unknown_700; u8 filler_701[0x15]; u8 unknown_716; diff --git a/include/global.h b/include/global.h index 4604c8cbb..a22f0d817 100644 --- a/include/global.h +++ b/include/global.h @@ -14,9 +14,9 @@ #define INCBIN_S8 {0} #define INCBIN_S16 {0} #define INCBIN_S32 {0} -void * memcpy (void *, const void *, size_t); -void * memset (void *, int, size_t); -int strcmp (const char *, const char *); +void *memcpy (void *, const void *, size_t); +void *memset (void *, int, size_t); +int strcmp (const char *, const char *); #endif // Prevent cross-jump optimization. diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c index 8f708903e..4d762af1a 100644 --- a/src/scene/cable_car.c +++ b/src/scene/cable_car.c @@ -67,6 +67,7 @@ void sub_8123878(u8 taskId); void sub_81239E4(u8 taskId); void sub_8123AF8(u8 taskId); void sub_812453C(void); +void sub_8124598(void); // .rodata @@ -382,3 +383,49 @@ void sub_81239E4(u8 taskId) sub_812453C(); gSpriteCoordOffsetX = (gSpriteCoordOffsetX + 1) % 128; } + +void sub_8123AF8(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 176: + sub_8124F08(gUnknown_02039274->unk_08fc, ewram_19000.pylonStemTilemap, 0, 2, 2, 30); + break; + case 16: + sub_8124E7C(gUnknown_02039274->unk_08fc, 0, 2, 0, 3, 2); + sub_8124E7C(gUnknown_02039274->unk_08fc, 0, 0, 22, 2, 10); + gUnknown_02039274->unk_0015 = 192; + break; + case 32: + gUnknown_02039274->unk_08fc[2] = (gCableCarPylonHookTilemapEntries + 2)[0]; + gUnknown_02039274->unk_08fc[3] = (gCableCarPylonHookTilemapEntries + 2)[1]; + gUnknown_02039274->unk_08fc[34] = (gCableCarPylonHookTilemapEntries + 2)[5]; + gUnknown_02039274->unk_08fc[35] = (gCableCarPylonHookTilemapEntries + 2)[6]; + break; + case 40: + gUnknown_02039274->unk_08fc[4] = (gCableCarPylonHookTilemapEntries + 4)[0]; + gUnknown_02039274->unk_08fc[36] = (gCableCarPylonHookTilemapEntries + 4)[5]; + break; + } + } + sub_8124598(); + if (gUnknown_02039274->unk_0006 < gUnknown_02039274->unk_0004) { + gSpriteCoordOffsetX = (gSpriteCoordOffsetX + 247) % 248; + } + else + { + gUnknown_08396FC4->unknown_6FC = (gUnknown_08396FC4->unknown_6FC + 247) % 248; + } +} -- cgit v1.2.3 From ba3934b56f4bba4ddb1a7df4d4362d34d35a12d2 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 15 Oct 2017 10:27:48 -0400 Subject: sub_8123C40 --- asm/cable_car.s | 54 --------------------------------------------------- src/scene/cable_car.c | 19 +++++++++++++++++- 2 files changed, 18 insertions(+), 55 deletions(-) diff --git a/asm/cable_car.s b/asm/cable_car.s index 72c1c9eda..c9d2b377a 100644 --- a/asm/cable_car.s +++ b/asm/cable_car.s @@ -6,60 +6,6 @@ .text - thumb_func_start sub_8123C40 -sub_8123C40: @ 8123C40 - push {r4,lr} - ldr r1, _08123C9C @ =0x040000d4 - ldr r0, _08123CA0 @ =gUnknown_02039274 - ldr r2, [r0] - adds r0, r2, 0 - adds r0, 0xFC - str r0, [r1] - ldr r0, _08123CA4 @ =0x0600e000 - str r0, [r1, 0x4] - ldr r3, _08123CA8 @ =0x80000400 - str r3, [r1, 0x8] - ldr r0, [r1, 0x8] - ldr r4, _08123CAC @ =0x000008fc - adds r0, r2, r4 - str r0, [r1] - ldr r0, _08123CB0 @ =0x0600f800 - str r0, [r1, 0x4] - str r3, [r1, 0x8] - ldr r0, [r1, 0x8] - subs r1, 0xB8 - ldrb r0, [r2, 0x14] - strh r0, [r1] - adds r1, 0x2 - ldrb r0, [r2, 0x15] - strh r0, [r1] - subs r1, 0xA - ldrb r0, [r2, 0xC] - strh r0, [r1] - adds r1, 0x2 - ldrb r0, [r2, 0xD] - strh r0, [r1] - subs r1, 0x6 - ldrb r0, [r2, 0x8] - strh r0, [r1] - adds r1, 0x2 - ldrb r0, [r2, 0x9] - strh r0, [r1] - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08123C9C: .4byte 0x040000d4 -_08123CA0: .4byte gUnknown_02039274 -_08123CA4: .4byte 0x0600e000 -_08123CA8: .4byte 0x80000400 -_08123CAC: .4byte 0x000008fc -_08123CB0: .4byte 0x0600f800 - thumb_func_end sub_8123C40 - thumb_func_start nullsub_76 nullsub_76: @ 8123CB4 bx lr diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c index 4d762af1a..6e4fe608e 100644 --- a/src/scene/cable_car.c +++ b/src/scene/cable_car.c @@ -23,7 +23,9 @@ struct Unk_2017000 { u8 unk_0003; u16 unk_0004; u16 unk_0006; - u8 filler_0008[4]; + u8 unk_0008; + u8 unk_0009; + u8 filler_000a[2]; u8 unk_000c; u8 unk_000d; u8 filler_0000e[6]; @@ -429,3 +431,18 @@ void sub_8123AF8(u8 taskId) gUnknown_08396FC4->unknown_6FC = (gUnknown_08396FC4->unknown_6FC + 247) % 248; } } + +void sub_8123C40(void) +{ + DmaCopy16(3, gUnknown_02039274->unk_00fc, BG_SCREEN_ADDR(28), 0x800); + DmaCopy16(3, gUnknown_02039274->unk_08fc, BG_SCREEN_ADDR(31), 0x800); + REG_BG3HOFS = gUnknown_02039274->unk_0014; + REG_BG3VOFS = gUnknown_02039274->unk_0015; + REG_BG1HOFS = gUnknown_02039274->unk_000c; + REG_BG1VOFS = gUnknown_02039274->unk_000d; + REG_BG0HOFS = gUnknown_02039274->unk_0008; + REG_BG0VOFS = gUnknown_02039274->unk_0009; + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} -- cgit v1.2.3 From 259d0cfc75f03da9b2e9f02d45810bb4eb7de12a Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 15 Oct 2017 11:00:34 -0400 Subject: sub_8123CB8 --- asm/cable_car.s | 104 -------------------------------------------------- include/sprite.h | 4 -- src/scene/cable_car.c | 31 +++++++++++++++ 3 files changed, 31 insertions(+), 108 deletions(-) diff --git a/asm/cable_car.s b/asm/cable_car.s index c9d2b377a..2e841ae04 100644 --- a/asm/cable_car.s +++ b/asm/cable_car.s @@ -6,110 +6,6 @@ .text - thumb_func_start nullsub_76 -nullsub_76: @ 8123CB4 - bx lr - thumb_func_end nullsub_76 - - thumb_func_start sub_8123CB8 -sub_8123CB8: @ 8123CB8 - push {r4-r6,lr} - adds r5, r0, 0 - ldr r0, _08123D20 @ =gUnknown_02039274 - ldr r6, [r0] - ldrb r0, [r6, 0x1] - cmp r0, 0xFF - beq _08123D84 - ldr r0, _08123D24 @ =gSpecialVar_0x8004 - ldrh r0, [r0] - cmp r0, 0 - bne _08123D34 - movs r0, 0x6 - ldrsh r4, [r6, r0] - adds r0, r4, 0 - bl __floatsisf - cmp r4, 0 - bge _08123CE2 - ldr r1, _08123D28 @ =0x47800000 - bl __addsf3 -_08123CE2: - ldr r1, _08123D2C @ =0x3e0f5c29 - bl __mulsf3 - bl __fixunssfsi - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r5, 0x2E] - subs r1, r0 - strh r1, [r5, 0x20] - movs r1, 0x6 - ldrsh r4, [r6, r1] - adds r0, r4, 0 - bl __floatsisf - cmp r4, 0 - bge _08123D0A - ldr r1, _08123D28 @ =0x47800000 - bl __addsf3 -_08123D0A: - ldr r1, _08123D30 @ =0x3d89374c - bl __mulsf3 - bl __fixunssfsi - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r5, 0x30] - subs r1, r0 - strh r1, [r5, 0x22] - b _08123D84 - .align 2, 0 -_08123D20: .4byte gUnknown_02039274 -_08123D24: .4byte gSpecialVar_0x8004 -_08123D28: .4byte 0x47800000 -_08123D2C: .4byte 0x3e0f5c29 -_08123D30: .4byte 0x3d89374c -_08123D34: - movs r0, 0x6 - ldrsh r4, [r6, r0] - adds r0, r4, 0 - bl __floatsisf - cmp r4, 0 - bge _08123D48 - ldr r1, _08123D8C @ =0x47800000 - bl __addsf3 -_08123D48: - ldr r1, _08123D90 @ =0x3e0f5c29 - bl __mulsf3 - bl __fixunssfsi - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r5, 0x2E] - adds r0, r1 - strh r0, [r5, 0x20] - movs r0, 0x6 - ldrsh r4, [r6, r0] - adds r0, r4, 0 - bl __floatsisf - cmp r4, 0 - bge _08123D70 - ldr r1, _08123D8C @ =0x47800000 - bl __addsf3 -_08123D70: - ldr r1, _08123D94 @ =0x3d89374c - bl __mulsf3 - bl __fixunssfsi - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r5, 0x30] - adds r0, r1 - strh r0, [r5, 0x22] -_08123D84: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08123D8C: .4byte 0x47800000 -_08123D90: .4byte 0x3e0f5c29 -_08123D94: .4byte 0x3d89374c - thumb_func_end sub_8123CB8 - thumb_func_start sub_8123D98 sub_8123D98: @ 8123D98 push {r4-r6,lr} diff --git a/include/sprite.h b/include/sprite.h index 769e1584d..68bb0b0e1 100644 --- a/include/sprite.h +++ b/include/sprite.h @@ -120,10 +120,6 @@ union AffineAnimCmd {.jump = {.type = AFFINEANIMCMDTYPE_JUMP, .target = _target}} #define AFFINEANIMCMD_END \ {.type = AFFINEANIMCMDTYPE_END} -#define AFFINEANIMCMD_LOOP(_count) \ - {.loop = {.type = AFFINEANIMCMDTYPE_LOOP, .count = _count}} -#define AFFINEANIMCMD_JUMP(_target) \ - {.jump = {.type = AFFINEANIMCMDTYPE_JUMP, .target = _target}} struct AffineAnimState { diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c index 6e4fe608e..5a2f39a6f 100644 --- a/src/scene/cable_car.c +++ b/src/scene/cable_car.c @@ -16,6 +16,15 @@ // Static type declarations +// Credits to Made (dolphin emoji) +#define S16TOPOSFLOAT(val) \ +({ \ + s16 v = (val); \ + float f = (float)v; \ + if(v < 0) f += 65536.0f; \ + f; \ +}) + struct Unk_2017000 { u8 unk_0000; u8 unk_0001; @@ -446,3 +455,25 @@ void sub_8123C40(void) ProcessSpriteCopyRequests(); TransferPlttBuffer(); } + +void nullsub_76(void) +{ + +} + +void sub_8123CB8(struct Sprite *sprite) +{ + if (gUnknown_02039274->unk_0001 != 255) + { + if (gSpecialVar_0x8004 == 0) + { + sprite->pos1.x = sprite->data0 - (u8)((f32)0.14 * S16TOPOSFLOAT(gUnknown_02039274->unk_0006)); + sprite->pos1.y = sprite->data1 - (u8)((f32)0.067 * S16TOPOSFLOAT(gUnknown_02039274->unk_0006)); + } + else + { + sprite->pos1.x = sprite->data0 + (u8)((f32)0.14 * S16TOPOSFLOAT(gUnknown_02039274->unk_0006)); + sprite->pos1.y = sprite->data1 + (u8)((f32)0.067 * S16TOPOSFLOAT(gUnknown_02039274->unk_0006)); + } + } +} -- cgit v1.2.3 From faea6fd64a4dc8332f6b6171f52c6055e21c3e27 Mon Sep 17 00:00:00 2001 From: scnorton Date: Sun, 15 Oct 2017 13:48:33 -0400 Subject: sub_8123D98 --- asm/cable_car.s | 133 -------------------------------------------------- asmdiff.sh | 0 src/scene/cable_car.c | 44 +++++++++++++++-- 3 files changed, 40 insertions(+), 137 deletions(-) mode change 100644 => 100755 asmdiff.sh diff --git a/asm/cable_car.s b/asm/cable_car.s index 2e841ae04..aed9082cf 100644 --- a/asm/cable_car.s +++ b/asm/cable_car.s @@ -6,139 +6,6 @@ .text - thumb_func_start sub_8123D98 -sub_8123D98: @ 8123D98 - push {r4-r6,lr} - adds r5, r0, 0 - ldr r0, _08123E04 @ =gUnknown_02039274 - ldr r6, [r0] - ldrb r0, [r6, 0x1] - cmp r0, 0xFF - bne _08123DA8 - b _08123EB0 -_08123DA8: - ldr r0, _08123E08 @ =gSpecialVar_0x8004 - ldrh r0, [r0] - cmp r0, 0 - bne _08123E18 - movs r0, 0x6 - ldrsh r4, [r6, r0] - adds r0, r4, 0 - bl __floatsisf - cmp r4, 0 - bge _08123DC4 - ldr r1, _08123E0C @ =0x47800000 - bl __addsf3 -_08123DC4: - ldr r1, _08123E10 @ =0x3e0f5c29 - bl __mulsf3 - bl __fixunssfsi - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r5, 0x2E] - subs r1, r0 - strh r1, [r5, 0x20] - movs r1, 0x6 - ldrsh r4, [r6, r1] - adds r0, r4, 0 - bl __floatsisf - cmp r4, 0 - bge _08123DEC - ldr r1, _08123E0C @ =0x47800000 - bl __addsf3 -_08123DEC: - ldr r1, _08123E14 @ =0x3d89374c - bl __mulsf3 - bl __fixunssfsi - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r5, 0x30] - subs r1, r0 - strh r1, [r5, 0x22] - b _08123E68 - .align 2, 0 -_08123E04: .4byte gUnknown_02039274 -_08123E08: .4byte gSpecialVar_0x8004 -_08123E0C: .4byte 0x47800000 -_08123E10: .4byte 0x3e0f5c29 -_08123E14: .4byte 0x3d89374c -_08123E18: - movs r0, 0x6 - ldrsh r4, [r6, r0] - adds r0, r4, 0 - bl __floatsisf - cmp r4, 0 - bge _08123E2C - ldr r1, _08123E8C @ =0x47800000 - bl __addsf3 -_08123E2C: - ldr r1, _08123E90 @ =0x3e0f5c29 - bl __mulsf3 - bl __fixunssfsi - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r5, 0x2E] - adds r0, r1 - strh r0, [r5, 0x20] - movs r0, 0x6 - ldrsh r4, [r6, r0] - adds r0, r4, 0 - bl __floatsisf - cmp r4, 0 - bge _08123E54 - ldr r1, _08123E8C @ =0x47800000 - bl __addsf3 -_08123E54: - ldr r1, _08123E94 @ =0x3d89374c - bl __mulsf3 - bl __fixunssfsi - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r5, 0x30] - adds r0, r1 - strh r0, [r5, 0x22] -_08123E68: - movs r0, 0x32 - ldrsh r2, [r5, r0] - cmp r2, 0 - bne _08123E98 - movs r0, 0x11 - strh r0, [r5, 0x26] - ldrh r0, [r5, 0x34] - adds r1, r0, 0x1 - strh r1, [r5, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x9 - ble _08123EB0 - strh r2, [r5, 0x34] - ldrh r0, [r5, 0x32] - adds r0, 0x1 - strh r0, [r5, 0x32] - b _08123EB0 - .align 2, 0 -_08123E8C: .4byte 0x47800000 -_08123E90: .4byte 0x3e0f5c29 -_08123E94: .4byte 0x3d89374c -_08123E98: - movs r2, 0 - movs r0, 0x10 - strh r0, [r5, 0x26] - ldrh r0, [r5, 0x34] - adds r1, r0, 0x1 - strh r1, [r5, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x9 - ble _08123EB0 - strh r2, [r5, 0x34] - strh r2, [r5, 0x32] -_08123EB0: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8123D98 - thumb_func_start sub_8123EB8 sub_8123EB8: @ 8123EB8 push {lr} diff --git a/asmdiff.sh b/asmdiff.sh old mode 100644 new mode 100755 diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c index 5a2f39a6f..30002bb47 100644 --- a/src/scene/cable_car.c +++ b/src/scene/cable_car.c @@ -467,13 +467,49 @@ void sub_8123CB8(struct Sprite *sprite) { if (gSpecialVar_0x8004 == 0) { - sprite->pos1.x = sprite->data0 - (u8)((f32)0.14 * S16TOPOSFLOAT(gUnknown_02039274->unk_0006)); - sprite->pos1.y = sprite->data1 - (u8)((f32)0.067 * S16TOPOSFLOAT(gUnknown_02039274->unk_0006)); + sprite->pos1.x = sprite->data0 - (u8)(0.14f * S16TOPOSFLOAT(gUnknown_02039274->unk_0006)); + sprite->pos1.y = sprite->data1 - (u8)(0.067f * S16TOPOSFLOAT(gUnknown_02039274->unk_0006)); } else { - sprite->pos1.x = sprite->data0 + (u8)((f32)0.14 * S16TOPOSFLOAT(gUnknown_02039274->unk_0006)); - sprite->pos1.y = sprite->data1 + (u8)((f32)0.067 * S16TOPOSFLOAT(gUnknown_02039274->unk_0006)); + sprite->pos1.x = sprite->data0 + (u8)(0.14f * S16TOPOSFLOAT(gUnknown_02039274->unk_0006)); + sprite->pos1.y = sprite->data1 + (u8)(0.067f * S16TOPOSFLOAT(gUnknown_02039274->unk_0006)); + } + } +} + +void sub_8123D98(struct Sprite *sprite) +{ + if (gUnknown_02039274->unk_0001 != 255) + { + if (gSpecialVar_0x8004 == 0) + { + sprite->pos1.x = sprite->data0 - (u8)(0.14f * S16TOPOSFLOAT(gUnknown_02039274->unk_0006)); + sprite->pos1.y = sprite->data1 - (u8)(0.067f * S16TOPOSFLOAT(gUnknown_02039274->unk_0006)); + } + else + { + sprite->pos1.x = sprite->data0 + (u8)(0.14f * S16TOPOSFLOAT(gUnknown_02039274->unk_0006)); + sprite->pos1.y = sprite->data1 + (u8)(0.067f * S16TOPOSFLOAT(gUnknown_02039274->unk_0006)); + } + switch (sprite->data2) + { + case 0: + sprite->pos2.y = 17; + if (sprite->data3 ++ > 9) + { + sprite->data3 = 0; + sprite->data2 ++; + } + break; + default: + sprite->pos2.y = 16; + if (sprite->data3 ++ > 9) + { + sprite->data3 = 0; + sprite->data2 = 0; + } + break; } } } -- cgit v1.2.3 From 270ed12126feb679f5fc818d33da56f65ae9fa98 Mon Sep 17 00:00:00 2001 From: scnorton Date: Sun, 15 Oct 2017 14:01:09 -0400 Subject: sub_8123EB8 --- asm/cable_car.s | 78 --------------------------------------------------- src/scene/cable_car.c | 36 ++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 78 deletions(-) diff --git a/asm/cable_car.s b/asm/cable_car.s index aed9082cf..7a6da9e00 100644 --- a/asm/cable_car.s +++ b/asm/cable_car.s @@ -6,84 +6,6 @@ .text - thumb_func_start sub_8123EB8 -sub_8123EB8: @ 8123EB8 - push {lr} - adds r2, r0, 0 - movs r1, 0x2E - ldrsh r0, [r2, r1] - cmp r0, 0 - bne _08123EE8 - adds r0, r2, 0 - adds r0, 0x28 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - lsls r0, 1 - ldrh r3, [r2, 0x20] - adds r0, r3 - strh r0, [r2, 0x20] - ldrh r1, [r2, 0x22] - adds r1, 0x10 - adds r0, r2, 0 - adds r0, 0x29 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - adds r0, r1 - strh r0, [r2, 0x22] -_08123EE8: - ldrh r0, [r2, 0x2E] - adds r0, 0x1 - strh r0, [r2, 0x2E] - lsls r0, 16 - asrs r0, 16 - movs r3, 0x32 - ldrsh r1, [r2, r3] - cmp r0, r1 - blt _08123F3E - movs r0, 0x30 - ldrsh r1, [r2, r0] - cmp r1, 0 - beq _08123F08 - cmp r1, 0x1 - beq _08123F12 - b _08123F30 -_08123F08: - ldrh r0, [r2, 0x20] - adds r0, 0x1 - strh r0, [r2, 0x20] - ldrh r0, [r2, 0x2E] - b _08123F22 -_08123F12: - ldrh r0, [r2, 0x2E] - ands r0, r1 - cmp r0, 0 - beq _08123F30 - ldrh r0, [r2, 0x20] - adds r0, 0x1 - strh r0, [r2, 0x20] - ldrh r0, [r2, 0x20] -_08123F22: - movs r1, 0x3 - ands r0, r1 - cmp r0, 0 - bne _08123F30 - ldrh r0, [r2, 0x22] - adds r0, 0x1 - strh r0, [r2, 0x22] -_08123F30: - movs r1, 0x22 - ldrsh r0, [r2, r1] - cmp r0, 0xA0 - ble _08123F3E - adds r0, r2, 0 - bl DestroySprite -_08123F3E: - pop {r0} - bx r0 - thumb_func_end sub_8123EB8 - thumb_func_start sub_8123F44 sub_8123F44: @ 8123F44 push {lr} diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c index 30002bb47..ee26d730b 100644 --- a/src/scene/cable_car.c +++ b/src/scene/cable_car.c @@ -513,3 +513,39 @@ void sub_8123D98(struct Sprite *sprite) } } } + +void sub_8123EB8(struct Sprite *sprite) +{ + if (sprite->data0 == 0) + { + sprite->pos1.x += 2 * sprite->centerToCornerVecX; + sprite->pos1.y += 16 + sprite->centerToCornerVecY; + } + if (++ sprite->data0 >= sprite->data2) + { + switch (sprite->data1) + { + case 0: + sprite->pos1.x ++; + if ((sprite->data0 % 4) == 0) + { + sprite->pos1.y ++; + } + break; + case 1: + if ((sprite->data0 % 2) != 0) + { + sprite->pos1.x ++; + if ((sprite->pos1.x % 4) == 0) + { + sprite->pos1.y ++; + } + } + break; + } + if (sprite->pos1.y > 0xa0) + { + DestroySprite(sprite); + } + } +} -- cgit v1.2.3 From 958a2b9a4028d974a8cbd906368340d2c2641adc Mon Sep 17 00:00:00 2001 From: scnorton Date: Sun, 15 Oct 2017 14:03:33 -0400 Subject: sub_8123F44 --- asm/cable_car.s | 69 --------------------------------------------------- src/scene/cable_car.c | 35 ++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 69 deletions(-) diff --git a/asm/cable_car.s b/asm/cable_car.s index 7a6da9e00..fc8a22052 100644 --- a/asm/cable_car.s +++ b/asm/cable_car.s @@ -6,75 +6,6 @@ .text - thumb_func_start sub_8123F44 -sub_8123F44: @ 8123F44 - push {lr} - adds r2, r0, 0 - movs r1, 0x2E - ldrsh r0, [r2, r1] - cmp r0, 0 - bne _08123F62 - ldrh r1, [r2, 0x22] - adds r1, 0x10 - adds r0, r2, 0 - adds r0, 0x29 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - adds r0, r1 - strh r0, [r2, 0x22] -_08123F62: - ldrh r0, [r2, 0x2E] - adds r0, 0x1 - strh r0, [r2, 0x2E] - lsls r0, 16 - asrs r0, 16 - movs r3, 0x32 - ldrsh r1, [r2, r3] - cmp r0, r1 - blt _08123FB8 - movs r0, 0x30 - ldrsh r1, [r2, r0] - cmp r1, 0 - beq _08123F82 - cmp r1, 0x1 - beq _08123F8C - b _08123FAA -_08123F82: - ldrh r0, [r2, 0x20] - subs r0, 0x1 - strh r0, [r2, 0x20] - ldrh r0, [r2, 0x2E] - b _08123F9C -_08123F8C: - ldrh r0, [r2, 0x2E] - ands r0, r1 - cmp r0, 0 - beq _08123FAA - ldrh r0, [r2, 0x20] - subs r0, 0x1 - strh r0, [r2, 0x20] - ldrh r0, [r2, 0x20] -_08123F9C: - movs r1, 0x3 - ands r0, r1 - cmp r0, 0 - bne _08123FAA - ldrh r0, [r2, 0x22] - subs r0, 0x1 - strh r0, [r2, 0x22] -_08123FAA: - movs r1, 0x22 - ldrsh r0, [r2, r1] - cmp r0, 0x4F - bgt _08123FB8 - adds r0, r2, 0 - bl DestroySprite -_08123FB8: - pop {r0} - bx r0 - thumb_func_end sub_8123F44 - thumb_func_start sub_8123FBC sub_8123FBC: @ 8123FBC push {lr} diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c index ee26d730b..a59862278 100644 --- a/src/scene/cable_car.c +++ b/src/scene/cable_car.c @@ -549,3 +549,38 @@ void sub_8123EB8(struct Sprite *sprite) } } } + +void sub_8123F44(struct Sprite *sprite) +{ + if (sprite->data0 == 0) + { + sprite->pos1.y += 16 + sprite->centerToCornerVecY; + } + if (++ sprite->data0 >= sprite->data2) + { + switch (sprite->data1) + { + case 0: + sprite->pos1.x --; + if ((sprite->data0 % 4) == 0) + { + sprite->pos1.y --; + } + break; + case 1: + if ((sprite->data0 % 2) != 0) + { + sprite->pos1.x --; + if ((sprite->pos1.x % 4) == 0) + { + sprite->pos1.y --; + } + } + break; + } + if (sprite->pos1.y < 0x50) + { + DestroySprite(sprite); + } + } +} -- cgit v1.2.3 From 2022b1dfb43691e3123024fcddcd07dd45b20a75 Mon Sep 17 00:00:00 2001 From: scnorton Date: Sun, 15 Oct 2017 14:18:25 -0400 Subject: sub_8123FBC --- asm/cable_car.s | 170 -------------------------------------------------- src/scene/cable_car.c | 70 +++++++++++++++++++++ 2 files changed, 70 insertions(+), 170 deletions(-) diff --git a/asm/cable_car.s b/asm/cable_car.s index fc8a22052..48695975f 100644 --- a/asm/cable_car.s +++ b/asm/cable_car.s @@ -6,176 +6,6 @@ .text - thumb_func_start sub_8123FBC -sub_8123FBC: @ 8123FBC - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _08123FCA - cmp r0, 0x1 - beq _08124024 -_08123FCA: - ldr r1, _08124020 @ =REG_WININ - movs r0, 0 - strh r0, [r1] - adds r1, 0x2 - strh r0, [r1] - subs r1, 0xA - strh r0, [r1] - adds r1, 0x2 - strh r0, [r1] - adds r1, 0x2 - strh r0, [r1] - adds r1, 0x2 - strh r0, [r1] - subs r1, 0x46 - strh r0, [r1] - adds r1, 0xE - strh r0, [r1] - subs r1, 0x2 - strh r0, [r1] - subs r1, 0x2 - strh r0, [r1] - subs r1, 0x2 - strh r0, [r1] - adds r1, 0x14 - strh r0, [r1] - adds r1, 0x2 - strh r0, [r1] - subs r1, 0x6 - strh r0, [r1] - adds r1, 0x2 - strh r0, [r1] - subs r1, 0x6 - strh r0, [r1] - adds r1, 0x2 - strh r0, [r1] - subs r1, 0x6 - strh r0, [r1] - adds r1, 0x2 - strh r0, [r1] - adds r1, 0x3E - strh r0, [r1] - b _081240EE - .align 2, 0 -_08124020: .4byte REG_WININ -_08124024: - ldr r0, _08124060 @ =REG_WININ - movs r3, 0 - strh r3, [r0] - adds r0, 0x2 - strh r3, [r0] - subs r0, 0xA - strh r3, [r0] - adds r0, 0x2 - strh r3, [r0] - adds r0, 0x2 - strh r3, [r0] - adds r0, 0x2 - strh r3, [r0] - ldr r0, _08124064 @ =gSpecialVar_0x8004 - ldrh r0, [r0] - cmp r0, 0 - bne _0812406C - ldr r1, _08124068 @ =gUnknown_02039274 - ldr r2, [r1] - movs r0, 0xB0 - strb r0, [r2, 0x14] - ldr r2, [r1] - movs r0, 0x10 - strb r0, [r2, 0x15] - ldr r0, [r1] - strb r3, [r0, 0xC] - ldr r2, [r1] - movs r0, 0x50 - b _08124082 - .align 2, 0 -_08124060: .4byte REG_WININ -_08124064: .4byte gSpecialVar_0x8004 -_08124068: .4byte gUnknown_02039274 -_0812406C: - ldr r1, _081240F4 @ =gUnknown_02039274 - ldr r2, [r1] - movs r0, 0x60 - strb r0, [r2, 0x14] - ldr r2, [r1] - movs r0, 0xE8 - strb r0, [r2, 0x15] - ldr r0, [r1] - strb r3, [r0, 0xC] - ldr r2, [r1] - movs r0, 0x4 -_08124082: - strb r0, [r2, 0xD] - ldr r0, [r1] - strb r3, [r0, 0x9] - ldr r0, [r1] - strb r3, [r0, 0x9] - adds r2, r1, 0 - ldr r1, _081240F8 @ =REG_BG3HOFS - ldr r2, [r2] - ldrb r0, [r2, 0x14] - strh r0, [r1] - adds r1, 0x2 - ldrb r0, [r2, 0x15] - strh r0, [r1] - ldr r0, _081240FC @ =REG_BG2HOFS - movs r1, 0 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - ldr r1, _08124100 @ =REG_BG1HOFS - ldrb r0, [r2, 0xC] - strh r0, [r1] - adds r1, 0x2 - ldrb r0, [r2, 0xD] - strh r0, [r1] - subs r1, 0x6 - ldrb r0, [r2, 0x8] - strh r0, [r1] - adds r1, 0x2 - ldrb r0, [r2, 0x9] - strh r0, [r1] - subs r1, 0xA - ldr r2, _08124104 @ =0x00003c01 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x2 - ldr r3, _08124108 @ =0x00003d02 - adds r0, r3, 0 - strh r0, [r1] - adds r1, 0x2 - ldr r2, _0812410C @ =0x00003e03 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _08124110 @ =REG_BG3CNT - movs r3, 0xFC - lsls r3, 6 - adds r2, r3, 0 - strh r2, [r0] - subs r1, 0xC - movs r3, 0xFA - lsls r3, 5 - adds r0, r3, 0 - strh r0, [r1] - ldr r0, _08124114 @ =REG_BLDCNT - strh r2, [r0] -_081240EE: - pop {r0} - bx r0 - .align 2, 0 -_081240F4: .4byte gUnknown_02039274 -_081240F8: .4byte REG_BG3HOFS -_081240FC: .4byte REG_BG2HOFS -_08124100: .4byte REG_BG1HOFS -_08124104: .4byte 0x00003c01 -_08124108: .4byte 0x00003d02 -_0812410C: .4byte 0x00003e03 -_08124110: .4byte REG_BG3CNT -_08124114: .4byte REG_BLDCNT - thumb_func_end sub_8123FBC - thumb_func_start sub_8124118 sub_8124118: @ 8124118 push {r4-r7,lr} diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c index a59862278..76223925b 100644 --- a/src/scene/cable_car.c +++ b/src/scene/cable_car.c @@ -584,3 +584,73 @@ void sub_8123F44(struct Sprite *sprite) } } } + +void sub_8123FBC(bool8 which) +{ + switch (which) + { + case FALSE: + default: + REG_WININ = 0; + REG_WINOUT = 0; + REG_WIN0H = 0; + REG_WIN1H = 0; + REG_WIN0V = 0; + REG_WIN1V = 0; + REG_DISPCNT = 0; + REG_BG3CNT = 0; + REG_BG2CNT = 0; + REG_BG1CNT = 0; + REG_BG0CNT = 0; + REG_BG3HOFS = 0; + REG_BG3VOFS = 0; + REG_BG2HOFS = 0; + REG_BG2VOFS = 0; + REG_BG1HOFS = 0; + REG_BG1VOFS = 0; + REG_BG0HOFS = 0; + REG_BG0VOFS = 0; + REG_BLDCNT = 0; + break; + case TRUE: + REG_WININ = 0; + REG_WINOUT = 0; + REG_WIN0H = 0; + REG_WIN1H = 0; + REG_WIN0V = 0; + REG_WIN1V = 0; + if (gSpecialVar_0x8004 == 0) + { + gUnknown_02039274->unk_0014 = 0xb0; + gUnknown_02039274->unk_0015 = 0x10; + gUnknown_02039274->unk_000c = 0x00; + gUnknown_02039274->unk_000d = 0x50; + gUnknown_02039274->unk_0009 = 0; + gUnknown_02039274->unk_0009 = 0; + } + else + { + gUnknown_02039274->unk_0014 = 0x60; + gUnknown_02039274->unk_0015 = 0xe8; + gUnknown_02039274->unk_000c = 0x00; + gUnknown_02039274->unk_000d = 0x04; + gUnknown_02039274->unk_0009 = 0; + gUnknown_02039274->unk_0009 = 0; + } + REG_BG3HOFS = gUnknown_02039274->unk_0014; + REG_BG3VOFS = gUnknown_02039274->unk_0015; + REG_BG2HOFS = 0; + REG_BG2VOFS = 0; + REG_BG1HOFS = gUnknown_02039274->unk_000c; + REG_BG1VOFS = gUnknown_02039274->unk_000d; + REG_BG0HOFS = gUnknown_02039274->unk_0008; + REG_BG0VOFS = gUnknown_02039274->unk_0009; + REG_BG0CNT = BGCNT_PRIORITY(1) | BGCNT_SCREENBASE(28) | BGCNT_WRAP; + REG_BG1CNT = BGCNT_PRIORITY(2) | BGCNT_SCREENBASE(29) | BGCNT_WRAP; + REG_BG2CNT = BGCNT_PRIORITY(3) | BGCNT_SCREENBASE(30) | BGCNT_WRAP; + REG_BG3CNT = BGCNT_PRIORITY(0) | BGCNT_SCREENBASE(31) | BGCNT_WRAP; + REG_DISPCNT = DISPCNT_OBJ_1D_MAP | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON; + REG_BLDCNT = 0x3f00; + break; + } +} -- cgit v1.2.3 From 2fff1ae7c56ae2511137d14ea2085bb03e1e2d43 Mon Sep 17 00:00:00 2001 From: scnorton Date: Sun, 15 Oct 2017 15:30:38 -0400 Subject: Decompile remaining data --- data/cable_car.s | 60 ------------------------------------ ld_script.txt | 1 - src/scene/cable_car.c | 84 ++++++++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 83 insertions(+), 62 deletions(-) delete mode 100644 data/cable_car.s diff --git a/data/cable_car.s b/data/cable_car.s deleted file mode 100644 index 6523e0314..000000000 --- a/data/cable_car.s +++ /dev/null @@ -1,60 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -gOamData_8401D28:: @ 8401D28 - .2byte 0x0300 - .2byte 0xC000 - .2byte 0x0800 - - .align 2 -gOamData_8401D30:: @ 8401D30 - .2byte 0x4300 - .2byte 0x0000 - .2byte 0x0800 - - .align 2 -gOamData_8401D38:: @ 8401D38 - .2byte 0x0300 - .2byte 0x4000 - .2byte 0x0800 - - .align 2 -gSpriteTemplate_8401D40:: @ 8401D40 - spr_template 1, 1, gOamData_8401D28, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8123CB8 - - .align 2 -gSpriteTemplate_8401D58:: @ 8401D58 - spr_template 2, 1, gOamData_8401D30, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8123CB8 - - .align 2 -gSpriteTemplate_8401D70:: @ 8401D70 - spr_template 3, 1, gOamData_8401D38, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, nullsub_76 - -gCableCarPlayerGraphicsIDs:: @ 8401D88 - .byte MAP_OBJ_GFX_RIVAL_BRENDAN_NORMAL - .byte MAP_OBJ_GFX_RIVAL_MAY_NORMAL - -gMtChimneyHikerGraphicsIDs:: @ 8401D8A - .byte MAP_OBJ_GFX_HIKER - .byte MAP_OBJ_GFX_CAMPER - .byte MAP_OBJ_GFX_PICNICKER - .byte MAP_OBJ_GFX_POOCHYENA @ not used - - .align 1 -gMtChimneyHikerCoords:: @ 8401D8E - .2byte 0, 80 - .2byte 240, 146 - -gMtChimneyHikerMovementDelayTable:: @ 8401D96 - .byte 0 - .byte 60 - .byte 120 - .byte 170 - - .align 2 -gUnknown_08401D9C:: @ 8401D9C - .4byte sub_8123EB8 - .4byte sub_8123F44 diff --git a/ld_script.txt b/ld_script.txt index 96dce388a..84785c7b9 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -438,7 +438,6 @@ SECTIONS { data/battle_message.o(.rodata); src/field/choose_party.o(.rodata); src/scene/cable_car.o(.rodata); - data/cable_car.o(.rodata); src/engine/save.o(.rodata); src/field/field_effect_helpers.o(.rodata); data/contest_ai.o(.rodata); diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c index 76223925b..d5398f262 100644 --- a/src/scene/cable_car.c +++ b/src/scene/cable_car.c @@ -13,6 +13,7 @@ #include "unknown_task.h" #include "event_data.h" #include "cable_car_util.h" +#include "map_object_constants.h" // Static type declarations @@ -79,6 +80,10 @@ 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 nullsub_76(struct Sprite *sprite); +void sub_8123EB8(struct Sprite *sprite); +void sub_8123F44(struct Sprite *sprite); // .rodata @@ -121,6 +126,83 @@ const struct SpritePalette gUnknown_08401D18[] = { { } }; +const struct OamData gOamData_8401D28 = { + .affineMode = ST_OAM_AFFINE_DOUBLE, + .size = 3, + .priority = 2 +}; + +const struct OamData gOamData_8401D30 = { + .affineMode = ST_OAM_AFFINE_DOUBLE, + .shape = ST_OAM_H_RECTANGLE, + .priority = 2 +}; + +const struct OamData gOamData_8401D38 = { + .affineMode = ST_OAM_AFFINE_DOUBLE, + .size = 1, + .priority = 2 +}; + +const struct SpriteTemplate gSpriteTemplate_8401D40 = { + 1, + 1, + &gOamData_8401D28, + gDummySpriteAnimTable, + NULL, + gDummySpriteAffineAnimTable, + sub_8123CB8 +}; + +const struct SpriteTemplate gSpriteTemplate_8401D58 = { + 2, + 1, + &gOamData_8401D30, + gDummySpriteAnimTable, + NULL, + gDummySpriteAffineAnimTable, + sub_8123CB8 +}; + +const struct SpriteTemplate gSpriteTemplate_8401D70 = { + 3, + 1, + &gOamData_8401D38, + gDummySpriteAnimTable, + NULL, + gDummySpriteAffineAnimTable, + nullsub_76 +}; + +const u8 gCableCarPlayerGraphicsIDs[] = { + MAP_OBJ_GFX_RIVAL_BRENDAN_NORMAL, + MAP_OBJ_GFX_RIVAL_MAY_NORMAL +}; + +const u8 gMtChimneyHikerGraphicsIDs[] = { + MAP_OBJ_GFX_HIKER, + MAP_OBJ_GFX_CAMPER, + MAP_OBJ_GFX_PICNICKER, + MAP_OBJ_GFX_POOCHYENA +}; + +const u16 gMtChimneyHikerCoords[][2] = { + { 0, 80 }, + { 240, 146 } +}; + +const u8 gMtChimneyHikerMovementDelayTable[] = { + 0, + 60, + 120, + 170 +}; + +void (*const gUnknown_08401D9C[])(struct Sprite *sprite) = { + sub_8123EB8, + sub_8123F44 +}; + // .text void sub_81231EC(u8 taskId) @@ -456,7 +538,7 @@ void sub_8123C40(void) TransferPlttBuffer(); } -void nullsub_76(void) +void nullsub_76(struct Sprite *sprite) { } -- cgit v1.2.3 From abab76bc84f1a7554f43c33a52c18297f462e058 Mon Sep 17 00:00:00 2001 From: scnorton Date: Sun, 15 Oct 2017 16:40:06 -0400 Subject: sub_8124118 --- asm/cable_car.s | 404 -------------------------------------------------- src/scene/cable_car.c | 214 +++++++++++++++++++------- 2 files changed, 157 insertions(+), 461 deletions(-) diff --git a/asm/cable_car.s b/asm/cable_car.s index 48695975f..c38b3ccb4 100644 --- a/asm/cable_car.s +++ b/asm/cable_car.s @@ -6,410 +6,6 @@ .text - thumb_func_start sub_8124118 -sub_8124118: @ 8124118 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x24 - ldr r1, _0812422C @ =gCableCarPlayerGraphicsIDs - add r0, sp, 0x8 - movs r2, 0x2 - bl memcpy - bl Random - lsls r0, 16 - lsrs r0, 16 - mov r9, r0 - add r6, sp, 0xC - ldr r1, _08124230 @ =gMtChimneyHikerGraphicsIDs - adds r0, r6, 0 - movs r2, 0x4 - bl memcpy - add r5, sp, 0x10 - ldr r1, _08124234 @ =gMtChimneyHikerCoords - adds r0, r5, 0 - movs r2, 0x8 - bl memcpy - add r4, sp, 0x18 - ldr r1, _08124238 @ =gMtChimneyHikerMovementDelayTable - adds r0, r4, 0 - movs r2, 0x4 - bl memcpy - ldr r0, _0812423C @ =gUnknown_08401D9C - ldr r1, [r0, 0x4] - ldr r0, [r0] - str r0, [sp, 0x1C] - str r1, [sp, 0x20] - ldr r0, _08124240 @ =gSpecialVar_0x8004 - ldrh r0, [r0] - mov r8, r6 - mov r10, r5 - cmp r0, 0 - beq _08124176 - cmp r0, 0x1 - beq _08124258 -_08124176: - ldr r0, _08124244 @ =gSaveBlock2 - ldrb r0, [r0, 0x8] - add r0, sp - adds r0, 0x8 - ldrb r0, [r0] - ldr r1, _08124248 @ =sub_8123D98 - movs r2, 0x66 - str r2, [sp] - movs r2, 0xC8 - movs r3, 0x49 - bl AddPseudoFieldObject - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x40 - beq _081241BE - ldr r0, _0812424C @ =gSprites - lsls r1, r6, 4 - adds r1, r6 - lsls r1, 2 - adds r1, r0 - ldrb r2, [r1, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - movs r2, 0x8 - orrs r0, r2 - strb r0, [r1, 0x5] - movs r0, 0x8 - strh r0, [r1, 0x24] - movs r0, 0x10 - strh r0, [r1, 0x26] - movs r0, 0xC8 - strh r0, [r1, 0x2E] - movs r0, 0x49 - strh r0, [r1, 0x30] -_081241BE: - ldr r4, _08124250 @ =gSpriteTemplate_8401D40 - adds r0, r4, 0 - movs r1, 0xB0 - movs r2, 0x2B - movs r3, 0x67 - bl CreateSprite - lsls r0, 24 - lsrs r6, r0, 24 - ldr r5, _0812424C @ =gSprites - lsls r0, r6, 4 - adds r0, r6 - lsls r0, 2 - adds r0, r5 - movs r1, 0x20 - strh r1, [r0, 0x26] - strh r1, [r0, 0x24] - movs r1, 0xB0 - strh r1, [r0, 0x2E] - movs r1, 0x2B - strh r1, [r0, 0x30] - adds r4, 0x18 - adds r0, r4, 0 - movs r1, 0xC8 - movs r2, 0x63 - movs r3, 0x65 - bl CreateSprite - lsls r0, 24 - lsrs r6, r0, 24 - lsls r0, r6, 4 - adds r0, r6 - lsls r0, 2 - adds r0, r5 - movs r1, 0x8 - strh r1, [r0, 0x24] - movs r1, 0x4 - strh r1, [r0, 0x26] - movs r1, 0xC8 - strh r1, [r0, 0x2E] - movs r1, 0x63 - strh r1, [r0, 0x30] - ldr r2, _08124254 @ =gUnknown_02039274 - ldr r1, [r2] - movs r0, 0x7 - strb r0, [r1, 0x2] - ldr r1, [r2] - movs r0, 0xAF - lsls r0, 1 - strh r0, [r1, 0x4] - movs r0, 0x2 - bl sub_807C9B4 - b _0812431E - .align 2, 0 -_0812422C: .4byte gCableCarPlayerGraphicsIDs -_08124230: .4byte gMtChimneyHikerGraphicsIDs -_08124234: .4byte gMtChimneyHikerCoords -_08124238: .4byte gMtChimneyHikerMovementDelayTable -_0812423C: .4byte gUnknown_08401D9C -_08124240: .4byte gSpecialVar_0x8004 -_08124244: .4byte gSaveBlock2 -_08124248: .4byte sub_8123D98 -_0812424C: .4byte gSprites -_08124250: .4byte gSpriteTemplate_8401D40 -_08124254: .4byte gUnknown_02039274 -_08124258: - ldr r7, _081243EC @ =gUnknown_02039274 - ldr r0, [r7] - adds r0, 0xFC - ldr r1, _081243F0 @ =0x02019048 - movs r2, 0xC - str r2, [sp] - movs r2, 0x3 - str r2, [sp, 0x4] - movs r2, 0x18 - movs r3, 0x1A - bl sub_8124F08 - ldr r0, _081243F4 @ =gSaveBlock2 - ldrb r0, [r0, 0x8] - add r0, sp - adds r0, 0x8 - ldrb r0, [r0] - ldr r1, _081243F8 @ =sub_8123D98 - movs r2, 0x66 - str r2, [sp] - movs r2, 0x80 - movs r3, 0x27 - bl AddPseudoFieldObject - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x40 - beq _081242B8 - ldr r0, _081243FC @ =gSprites - lsls r1, r6, 4 - adds r1, r6 - lsls r1, 2 - adds r1, r0 - ldrb r2, [r1, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - movs r2, 0x8 - orrs r0, r2 - strb r0, [r1, 0x5] - movs r0, 0x8 - strh r0, [r1, 0x24] - movs r0, 0x10 - strh r0, [r1, 0x26] - movs r0, 0x80 - strh r0, [r1, 0x2E] - movs r0, 0x27 - strh r0, [r1, 0x30] -_081242B8: - ldr r4, _08124400 @ =gSpriteTemplate_8401D40 - adds r0, r4, 0 - movs r1, 0x68 - movs r2, 0x9 - movs r3, 0x67 - bl CreateSprite - lsls r0, 24 - lsrs r6, r0, 24 - ldr r5, _081243FC @ =gSprites - lsls r0, r6, 4 - adds r0, r6 - lsls r0, 2 - adds r0, r5 - movs r1, 0x20 - strh r1, [r0, 0x26] - strh r1, [r0, 0x24] - movs r1, 0x68 - strh r1, [r0, 0x2E] - movs r1, 0x9 - strh r1, [r0, 0x30] - adds r4, 0x18 - adds r0, r4, 0 - movs r1, 0x80 - movs r2, 0x41 - movs r3, 0x65 - bl CreateSprite - lsls r0, 24 - lsrs r6, r0, 24 - lsls r0, r6, 4 - adds r0, r6 - lsls r0, 2 - adds r0, r5 - movs r1, 0x8 - strh r1, [r0, 0x24] - movs r1, 0x4 - strh r1, [r0, 0x26] - movs r1, 0x80 - strh r1, [r0, 0x2E] - movs r1, 0x41 - strh r1, [r0, 0x30] - ldr r1, [r7] - movs r0, 0x2 - strb r0, [r1, 0x2] - ldr r1, [r7] - ldr r0, _08124404 @ =0x00000109 - strh r0, [r1, 0x4] - movs r0, 0x7 - bl sub_807C9B4 -_0812431E: - movs r4, 0 - ldr r5, _081243FC @ =gSprites -_08124322: - lsls r1, r4, 20 - movs r0, 0xC0 - lsls r0, 15 - adds r1, r0 - asrs r1, 16 - lsls r2, r4, 19 - ldr r3, _08124408 @ =0xfff80000 - adds r2, r3 - asrs r2, 16 - ldr r0, _0812440C @ =gSpriteTemplate_8401D70 - movs r3, 0x68 - bl CreateSprite - lsls r0, 24 - lsrs r6, r0, 24 - lsls r0, r6, 4 - adds r0, r6 - lsls r0, 2 - adds r0, r5 - movs r1, 0x8 - strh r1, [r0, 0x24] - strh r1, [r0, 0x26] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x8 - bls _08124322 - movs r0, 0x3F - mov r4, r9 - ands r0, r4 - cmp r0, 0 - bne _08124458 - mov r0, r9 - movs r1, 0x3 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - add r0, r8 - ldrb r0, [r0] - ldr r5, _08124410 @ =gSpecialVar_0x8004 - ldrh r4, [r5] - lsls r4, 2 - add r1, sp, 0x1C - adds r1, r4, r1 - ldr r1, [r1] - mov r3, r10 - adds r2, r3, r4 - movs r3, 0 - ldrsh r2, [r2, r3] - mov r3, sp - adds r3, 0x12 - adds r3, r4 - movs r4, 0 - ldrsh r3, [r3, r4] - movs r4, 0x6A - str r4, [sp] - bl AddPseudoFieldObject - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x40 - beq _08124458 - ldr r1, _081243FC @ =gSprites - lsls r2, r6, 4 - adds r0, r2, r6 - lsls r0, 2 - adds r4, r0, r1 - ldrb r1, [r4, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r1 - movs r1, 0x8 - orrs r0, r1 - strb r0, [r4, 0x5] - adds r0, r4, 0 - adds r0, 0x28 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - negs r0, r0 - strh r0, [r4, 0x24] - adds r0, r4, 0 - adds r0, 0x29 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - negs r0, r0 - strh r0, [r4, 0x26] - ldrh r0, [r5] - mov r8, r2 - cmp r0, 0 - bne _0812441A - movs r7, 0x1 - mov r5, r9 - ands r5, r7 - cmp r5, 0 - beq _08124414 - adds r0, r4, 0 - movs r1, 0x6 - b _08124428 - .align 2, 0 -_081243EC: .4byte gUnknown_02039274 -_081243F0: .4byte 0x02019048 -_081243F4: .4byte gSaveBlock2 -_081243F8: .4byte sub_8123D98 -_081243FC: .4byte gSprites -_08124400: .4byte gSpriteTemplate_8401D40 -_08124404: .4byte 0x00000109 -_08124408: .4byte 0xfff80000 -_0812440C: .4byte gSpriteTemplate_8401D70 -_08124410: .4byte gSpecialVar_0x8004 -_08124414: - adds r0, r4, 0 - movs r1, 0x7 - b _0812443A -_0812441A: - movs r7, 0x1 - mov r5, r9 - ands r5, r7 - cmp r5, 0 - beq _08124436 - adds r0, r4, 0 - movs r1, 0x7 -_08124428: - bl StartSpriteAnim - strh r7, [r4, 0x30] - ldrh r0, [r4, 0x22] - adds r0, 0x2 - strh r0, [r4, 0x22] - b _08124440 -_08124436: - adds r0, r4, 0 - movs r1, 0x6 -_0812443A: - bl StartSpriteAnim - strh r5, [r4, 0x30] -_08124440: - ldr r0, _08124468 @ =gSprites - mov r2, r8 - adds r1, r2, r6 - lsls r1, 2 - adds r1, r0 - movs r0, 0x3 - mov r3, r9 - ands r0, r3 - add r0, sp - adds r0, 0x18 - ldrb r0, [r0] - strh r0, [r1, 0x32] -_08124458: - add sp, 0x24 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08124468: .4byte gSprites - thumb_func_end sub_8124118 - thumb_func_start sub_812446C sub_812446C: @ 812446C push {r4-r7,lr} diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c index d5398f262..12b2e62b3 100644 --- a/src/scene/cable_car.c +++ b/src/scene/cable_car.c @@ -3,6 +3,7 @@ #include "global.h" #include "overworld.h" #include "palette.h" +#include "rng.h" #include "main.h" #include "script.h" #include "task.h" @@ -10,6 +11,7 @@ #include "songs.h" #include "decompress.h" #include "field_weather.h" +#include "field_map_obj.h" #include "unknown_task.h" #include "event_data.h" #include "cable_car_util.h" @@ -144,63 +146,32 @@ const struct OamData gOamData_8401D38 = { .priority = 2 }; -const struct SpriteTemplate gSpriteTemplate_8401D40 = { - 1, - 1, - &gOamData_8401D28, - gDummySpriteAnimTable, - NULL, - gDummySpriteAffineAnimTable, - sub_8123CB8 -}; - -const struct SpriteTemplate gSpriteTemplate_8401D58 = { - 2, - 1, - &gOamData_8401D30, - gDummySpriteAnimTable, - NULL, - gDummySpriteAffineAnimTable, - sub_8123CB8 -}; - -const struct SpriteTemplate gSpriteTemplate_8401D70 = { - 3, - 1, - &gOamData_8401D38, - gDummySpriteAnimTable, - NULL, - gDummySpriteAffineAnimTable, - nullsub_76 -}; - -const u8 gCableCarPlayerGraphicsIDs[] = { - MAP_OBJ_GFX_RIVAL_BRENDAN_NORMAL, - MAP_OBJ_GFX_RIVAL_MAY_NORMAL -}; - -const u8 gMtChimneyHikerGraphicsIDs[] = { - MAP_OBJ_GFX_HIKER, - MAP_OBJ_GFX_CAMPER, - MAP_OBJ_GFX_PICNICKER, - MAP_OBJ_GFX_POOCHYENA -}; - -const u16 gMtChimneyHikerCoords[][2] = { - { 0, 80 }, - { 240, 146 } -}; - -const u8 gMtChimneyHikerMovementDelayTable[] = { - 0, - 60, - 120, - 170 -}; - -void (*const gUnknown_08401D9C[])(struct Sprite *sprite) = { - sub_8123EB8, - sub_8123F44 +const struct SpriteTemplate gSpriteTemplate_8401D40[] = { + { + 1, + 1, + &gOamData_8401D28, + gDummySpriteAnimTable, + NULL, + gDummySpriteAffineAnimTable, + sub_8123CB8 + }, { + 2, + 1, + &gOamData_8401D30, + gDummySpriteAnimTable, + NULL, + gDummySpriteAffineAnimTable, + sub_8123CB8 + }, { + 3, + 1, + &gOamData_8401D38, + gDummySpriteAnimTable, + NULL, + gDummySpriteAffineAnimTable, + nullsub_76 + } }; // .text @@ -736,3 +707,132 @@ void sub_8123FBC(bool8 which) break; } } + +void sub_8124118(void) +{ + u8 spriteId; + u8 i; + + u8 playerGraphicsIds[2] = { + MAP_OBJ_GFX_RIVAL_BRENDAN_NORMAL, + MAP_OBJ_GFX_RIVAL_MAY_NORMAL + }; + u16 rval = Random(); + u8 hikerGraphicsIds[4] = { + MAP_OBJ_GFX_HIKER, + MAP_OBJ_GFX_CAMPER, + MAP_OBJ_GFX_PICNICKER, + MAP_OBJ_GFX_POOCHYENA + }; + s16 hikerCoords[2][2] = { + { 0, 80 }, + { 240, 146 } + }; + u8 hikerMovementDelayTable[4] = { + 0, + 60, + 120, + 170 + }; + void (*callbacks[2])(struct Sprite *) = { + sub_8123EB8, + sub_8123F44 + }; + + switch (gSpecialVar_0x8004) + { + case 0: + default: + spriteId = AddPseudoFieldObject(playerGraphicsIds[gSaveBlock2.playerGender], sub_8123D98, 0xc8, 0x49, 0x66); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].oam.priority = 2; + gSprites[spriteId].pos2.x = 0x08; + gSprites[spriteId].pos2.y = 0x10; + gSprites[spriteId].data0 = 0xc8; + gSprites[spriteId].data1 = 0x49; + } + spriteId = CreateSprite(&gSpriteTemplate_8401D40[0], 0xb0, 0x2b, 0x67); + gSprites[spriteId].pos2.x = gSprites[spriteId].pos2.y = 0x20; + gSprites[spriteId].data0 = 0xb0; + gSprites[spriteId].data1 = 0x2b; + spriteId = CreateSprite(&gSpriteTemplate_8401D40[1], 0xc8, 0x63, 0x65); + gSprites[spriteId].pos2.x = 8; + gSprites[spriteId].pos2.y = 4; + gSprites[spriteId].data0 = 0xc8; + gSprites[spriteId].data1 = 0x63; + gUnknown_02039274->unk_0002 = 7; + gUnknown_02039274->unk_0004 = 0x15e; + sub_807C9B4(2); + break; + case 1: + sub_8124F08(gUnknown_02039274->unk_00fc, ewram_19000.mtChimneyTilemap + 0x24, 0x18, 0x1a, 0x0c, 0x03); + spriteId = AddPseudoFieldObject(playerGraphicsIds[gSaveBlock2.playerGender], sub_8123D98, 0x80, 0x27, 0x66); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].oam.priority = 2; + gSprites[spriteId].pos2.x = 0x08; + gSprites[spriteId].pos2.y = 0x10; + gSprites[spriteId].data0 = 0x80; + gSprites[spriteId].data1 = 0x27; + } + spriteId = CreateSprite(&gSpriteTemplate_8401D40[0], 0x68, 0x09, 0x67); + gSprites[spriteId].pos2.x = gSprites[spriteId].pos2.y = 0x20; + gSprites[spriteId].data0 = 0x68; + gSprites[spriteId].data1 = 0x09; + spriteId = CreateSprite(&gSpriteTemplate_8401D40[1], 0x80, 0x41, 0x65); + gSprites[spriteId].pos2.x = 8; + gSprites[spriteId].pos2.y = 4; + gSprites[spriteId].data0 = 0x80; + gSprites[spriteId].data1 = 0x41; + gUnknown_02039274->unk_0002 = 2; + gUnknown_02039274->unk_0004 = 0x109; + sub_807C9B4(7); + break; + } + for (i = 0; i < 9; i ++) + { + spriteId = CreateSprite(&gSpriteTemplate_8401D40[2], 16 * i + 0x60, 8 * i - 8, 0x68); + gSprites[spriteId].pos2.x = 8; + gSprites[spriteId].pos2.y = 8; + } + if ((rval % 64) == 0) + { + spriteId = AddPseudoFieldObject(hikerGraphicsIds[rval % 3], callbacks[gSpecialVar_0x8004], hikerCoords[gSpecialVar_0x8004][0], hikerCoords[gSpecialVar_0x8004][1], 0x6a); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].oam.priority = 2; + gSprites[spriteId].pos2.x = -gSprites[spriteId].centerToCornerVecX; + gSprites[spriteId].pos2.y = -gSprites[spriteId].centerToCornerVecY; + if (gSpecialVar_0x8004 == 0) + { + if (rval % 2) + { + StartSpriteAnim(&gSprites[spriteId], 6); + gSprites[spriteId].data1 = 1; + gSprites[spriteId].pos1.y += 2; + } + else + { + StartSpriteAnim(&gSprites[spriteId], 7); + gSprites[spriteId].data1 = 0; + } + } + else + { + if (rval % 2) + { + StartSpriteAnim(&gSprites[spriteId], 7); + gSprites[spriteId].data1 = 1; + gSprites[spriteId].pos1.y += 2; + } + else + { + StartSpriteAnim(&gSprites[spriteId], 6); + gSprites[spriteId].data1 = 0; + } + } + gSprites[spriteId].data2 = hikerMovementDelayTable[rval % 4]; + } + } +} -- cgit v1.2.3 From bb8f652504f886af296ffcaac57bf76cdc893c97 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 16 Oct 2017 21:14:29 -0400 Subject: nonmatching sub_812446C --- asm/cable_car.s | 106 ----------------------------------------- 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 -- cgit v1.2.3 From bc5fdb16a8d374972a4dc93e61eacaa6061e3f61 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 5 Jan 2018 19:38:29 -0500 Subject: get sub_812446C matching --- src/scene/cable_car.c | 199 ++++++++++++-------------------------------------- 1 file changed, 47 insertions(+), 152 deletions(-) diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c index d65022ae8..c735f8ace 100644 --- a/src/scene/cable_car.c +++ b/src/scene/cable_car.c @@ -44,7 +44,11 @@ struct CableCarEwramStruct1 { u8 filler_0000e[6]; u8 unk_0014; u8 unk_0015; - u8 filler_0016[0xe6]; + u8 filler_0016[5]; + u8 unk_001b; + u8 filler_001c[6]; + u16 unk_0022[9][12]; + u8 filler_00fa[2]; u16 unk_00fc[0x400]; u16 unk_08fc[0x400]; }; // size 0x10FC @@ -206,7 +210,7 @@ void sub_8123244(void) DmaFill16Defvars(3, 0, PLTT, PLTT_SIZE); gUnknown_02039274 = eCableCar1; DmaFill16Large(3, 0, eCableCar1, 0x10FC, 0x1000); - gMain.state ++; + gMain.state++; break; case 1: ResetSpriteData(); @@ -214,17 +218,17 @@ void sub_8123244(void) FreeAllSpritePalettes(); ResetPaletteFade(); StartWeather(); - for (i = 0; i < 20; i ++) + for (i = 0; i < 20; i++) { gWeatherPtr->sprites.s2.ashSprites[i] = NULL; } InitMapMusic(); ResetMapMusic(); gSpriteCoordOffsetX = gSpriteCoordOffsetY = 0; - gMain.state ++; + gMain.state++; break; case 2: - for (i = 0; i < 3; i ++) + for (i = 0; i < 3; i++) { LoadCompressedObjectPic(&gUnknown_08401CF8[i]); } @@ -235,28 +239,28 @@ void sub_8123244(void) LZDecompressWram(gCableCarPylonStemTilemap, eCableCar2->pylonStemTilemap); LoadPalette(gCableCarBG_Pal, 0, 0x80); LZ77UnCompVram(gCableCarBG_Gfx, (u16 *)BG_VRAM); - gMain.state ++; + gMain.state++; break; case 3: sub_8124118(); RunTasks(); - gMain.state ++; + gMain.state++; break; case 4: if (gUnknown_02039274->unk_0002 == 7) { - gMain.state ++; + gMain.state++; } else if (gWeatherPtr->sprites.s2.ashSprites[0] != NULL) { - for (i = 0; i < 20; i ++) + for (i = 0; i < 20; i++) { if (gWeatherPtr->sprites.s2.ashSprites[i] != NULL) { gWeatherPtr->sprites.s2.ashSprites[i]->oam.priority = 0; } } - gMain.state ++; + gMain.state++; } break; case 5: @@ -264,7 +268,7 @@ void sub_8123244(void) sub_8124F08((u16 *)BG_SCREEN_ADDR(30), eCableCar2->mountainTilemap, 0, 0, 30, 20); sub_8124F08(gUnknown_02039274->unk_08fc, gCableCarPylonHookTilemapEntries, 0, 0, 5, 2); sub_8124F08(gUnknown_02039274->unk_08fc, eCableCar2->pylonStemTilemap, 0, 2, 2, 20); - gMain.state ++; + gMain.state++; break; case 6: sub_81248AC(gSpecialVar_0x8004); @@ -276,13 +280,13 @@ void sub_8123244(void) sub_8124F08(gUnknown_02039274->unk_00fc, eCableCar2->mtChimneyTilemap + 0x00, 12, 20, 12, 3); sub_8124F08(gUnknown_02039274->unk_00fc, eCableCar2->mtChimneyTilemap + 0x24, 12, 23, 12, 3); sub_8124F08(gUnknown_02039274->unk_00fc, eCableCar2->mtChimneyTilemap + 0x00, 24, 23, 12, 3); - gMain.state ++; + gMain.state++; break; case 7: BeginNormalPaletteFade(-1, 3, 16, 0, 0); FadeInNewBGM(BGM_ROPEWAY, 1); sub_8123FBC(1); - gMain.state ++; + gMain.state++; break; case 8: imebak = REG_IME; @@ -321,7 +325,7 @@ void sub_8123740(void) sub_8123FBC(0); gSpriteCoordOffsetX = 0; sub_807C9B4(0); - for (; i < 20; i ++) + for (; i < 20; i++) { gWeatherPtr->sprites.s2.ashSprites[i] = NULL; } @@ -343,7 +347,7 @@ void sub_8123878(u8 taskId) u8 i; i = 0; - gUnknown_02039274->unk_0006 ++; + gUnknown_02039274->unk_0006++; switch (gUnknown_02039274->unk_0001) { case 0: @@ -359,7 +363,7 @@ void sub_8123878(u8 taskId) case 7: if (gWeatherPtr->sprites.s2.ashSprites[0] != NULL && gWeatherPtr->sprites.s2.ashSprites[0]->oam.priority != 0) { - for (; i < 20; i ++) + for (; i < 20; i++) { if (gWeatherPtr->sprites.s2.ashSprites[i] != NULL) { @@ -376,7 +380,7 @@ void sub_8123878(u8 taskId) } else if (gUnknown_02039274->unk_0006 >= gUnknown_02039274->unk_0004 + 8) { - for (; i < 20; i ++) + for (; i < 20; i++) { if (gWeatherPtr->sprites.s2.ashSprites[i] != NULL) { @@ -414,15 +418,15 @@ void sub_81239E4(u8 taskId) { if (gUnknown_02039274->unk_0001 != 255) { - gUnknown_02039274->unk_0014 --; + gUnknown_02039274->unk_0014--; if ((gUnknown_02039274->unk_0006 % 2) == 0) { - gUnknown_02039274->unk_0015 --; + gUnknown_02039274->unk_0015--; } if ((gUnknown_02039274->unk_0006 % 8) == 0) { - gUnknown_02039274->unk_000c --; - gUnknown_02039274->unk_000d --; + gUnknown_02039274->unk_000c--; + gUnknown_02039274->unk_000d--; } switch (gUnknown_02039274->unk_0014) { @@ -450,15 +454,15 @@ void sub_8123AF8(u8 taskId) { if (gUnknown_02039274->unk_0001 != 255) { - gUnknown_02039274->unk_0014 ++; + gUnknown_02039274->unk_0014++; if ((gUnknown_02039274->unk_0006 % 2) == 0) { - gUnknown_02039274->unk_0015 ++; + gUnknown_02039274->unk_0015++; } if ((gUnknown_02039274->unk_0006 % 8) == 0) { - gUnknown_02039274->unk_000c ++; - gUnknown_02039274->unk_000d ++; + gUnknown_02039274->unk_000c++; + gUnknown_02039274->unk_000d++; } switch (gUnknown_02039274->unk_0014) { @@ -572,24 +576,24 @@ void sub_8123EB8(struct Sprite *sprite) sprite->pos1.x += 2 * sprite->centerToCornerVecX; sprite->pos1.y += 16 + sprite->centerToCornerVecY; } - if (++ sprite->data[0] >= sprite->data[2]) + if (++sprite->data[0] >= sprite->data[2]) { switch (sprite->data[1]) { case 0: - sprite->pos1.x ++; + sprite->pos1.x++; if ((sprite->data[0] % 4) == 0) { - sprite->pos1.y ++; + sprite->pos1.y++; } break; case 1: if ((sprite->data[0] % 2) != 0) { - sprite->pos1.x ++; + sprite->pos1.x++; if ((sprite->pos1.x % 4) == 0) { - sprite->pos1.y ++; + sprite->pos1.y++; } } break; @@ -607,24 +611,24 @@ void sub_8123F44(struct Sprite *sprite) { sprite->pos1.y += 16 + sprite->centerToCornerVecY; } - if (++ sprite->data[0] >= sprite->data[2]) + if (++sprite->data[0] >= sprite->data[2]) { switch (sprite->data[1]) { case 0: - sprite->pos1.x --; + sprite->pos1.x--; if ((sprite->data[0] % 4) == 0) { - sprite->pos1.y --; + sprite->pos1.y--; } break; case 1: if ((sprite->data[0] % 2) != 0) { - sprite->pos1.x --; + sprite->pos1.x--; if ((sprite->pos1.x % 4) == 0) { - sprite->pos1.y --; + sprite->pos1.y--; } } break; @@ -788,7 +792,7 @@ void sub_8124118(void) sub_807C9B4(7); break; } - for (i = 0; i < 9; i ++) + for (i = 0; i < 9; i++) { spriteId = CreateSprite(&gSpriteTemplate_8401D40[2], 16 * i + 0x60, 8 * i - 8, 0x68); gSprites[spriteId].pos2.x = 8; @@ -835,8 +839,6 @@ void sub_8124118(void) } } -#ifdef NONMATCHING -// this is nowhere near correct void sub_812446C(void) { u8 i; @@ -844,122 +846,15 @@ void sub_812446C(void) u8 k; u8 offset; - for (i = 0, k = 0, offset = 36 * (gUnknown_02039274->unk_001b + 2); i < 3; i ++) + for (i = 0, k = 0, offset = 0x24 * (gUnknown_02039274->unk_001b + 2); i < 3; i++) { - for (j = 0; j < 12; j ++) + for (j = 0; j < 12; j++) { - gUnknown_02039274->unk_0022[i][k] = eCableCar2->mtChimneyTilemap[0][offset + k]; - gUnknown_02039274->unk_0022[i + 3][k] = eCableCar2->mtChimneyTilemap[0][k]; - gUnknown_02039274->unk_0022[i + 6][k] = eCableCar2->mtChimneyTilemap[2][k]; - k ++; + gUnknown_02039274->unk_0022[i][j] = *(eCableCar2->mtChimneyTilemap + (offset++)); + gUnknown_02039274->unk_0022[i + 3][j] = eCableCar2->mtChimneyTilemap[k]; + gUnknown_02039274->unk_0022[i + 6][j] = (eCableCar2->mtChimneyTilemap + 0x24)[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 +} \ No newline at end of file -- cgit v1.2.3 From 81aec4e8dfe9171f7482ff3a38148dbb0e92d407 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 5 Jan 2018 19:51:31 -0500 Subject: through sub_8124598 --- asm/cable_car.s | 98 --------------------------------------------------- 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 -- cgit v1.2.3 From 319eb710ed84f816b7c8194b35c53a8d32e916c5 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 5 Jan 2018 21:13:50 -0500 Subject: through sub_81245F4 --- asm/cable_car.s | 188 ----------------------------------------------- include/cable_car_util.h | 4 +- src/scene/cable_car.c | 40 +++++++++- 3 files changed, 39 insertions(+), 193 deletions(-) diff --git a/asm/cable_car.s b/asm/cable_car.s index 92518cef6..c4b9d9ab7 100644 --- a/asm/cable_car.s +++ b/asm/cable_car.s @@ -5,194 +5,6 @@ .text - thumb_func_start sub_81245F4 -sub_81245F4: @ 81245F4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - movs r0, 0 - mov r12, r0 - ldr r2, _0812475C @ =gUnknown_02039274 - ldr r0, [r2] - mov r1, r12 - strb r1, [r0, 0x1E] - strb r1, [r0, 0x1D] - ldr r1, [r2] - ldrb r0, [r1, 0x8] - strb r0, [r1, 0x1F] - ldr r0, [r2] - ldrb r1, [r0, 0x9] - adds r0, 0x20 - strb r1, [r0] - ldr r4, [r2] - ldrb r1, [r4, 0x19] - adds r3, r1, 0 - adds r3, 0x1E - adds r0, r3, 0 - mov r9, r2 - asrs r0, 5 - lsls r0, 5 - subs r0, r3, r0 - strb r0, [r4, 0x19] - mov r2, r9 - ldr r1, [r2] - ldrb r0, [r1, 0x18] - subs r0, 0x2 - strb r0, [r1, 0x18] - ldr r0, [r2] - ldrb r1, [r0, 0x1A] - adds r2, r1, 0 - adds r2, 0x17 - adds r0, r2, 0 - ldr r3, _08124760 @ =gUnknown_0203927A - mov r10, r3 - asrs r0, 5 - lsls r0, 5 - subs r0, r2, r0 - mov r4, r10 - strb r0, [r4] - ldr r7, _08124764 @ =gUnknown_02039278 - ldr r0, _08124768 @ =gUnknown_02039279 - mov r8, r0 -_08124658: - mov r1, r9 - ldr r3, [r1] - ldrb r0, [r3, 0x19] - strb r0, [r7] - mov r2, r10 - ldrb r0, [r2] - mov r4, r12 - adds r1, r0, r4 - adds r0, r1, 0 - asrs r0, 5 - lsls r0, 5 - subs r0, r1, r0 - mov r1, r8 - strb r0, [r1] - ldrb r2, [r7] - lsls r2, 1 - ldrb r0, [r1] - lsls r0, 6 - adds r2, r0 - adds r6, r3, 0 - adds r6, 0xFC - adds r2, r6, r2 - ldrb r1, [r3, 0x18] - lsls r1, 1 - mov r4, r12 - lsls r0, r4, 1 - add r0, r12 - lsls r5, r0, 3 - adds r1, r5 - adds r4, r3, 0 - adds r4, 0x22 - adds r1, r4, r1 - ldrh r0, [r1] - strh r0, [r2] - ldrb r1, [r7] - adds r2, r1, 0x1 - adds r0, r2, 0 - asrs r0, 5 - lsls r0, 5 - subs r0, r2, r0 - strb r0, [r7] - ldrb r1, [r7] - lsls r1, 1 - mov r2, r8 - ldrb r0, [r2] - lsls r0, 6 - adds r1, r0 - adds r1, r6, r1 - ldrb r0, [r3, 0x18] - adds r0, 0x1 - lsls r0, 1 - adds r0, r5 - adds r0, r4, r0 - ldrh r0, [r0] - strh r0, [r1] - mov r0, r12 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r12, r0 - cmp r0, 0x8 - bls _08124658 - ldr r4, _08124764 @ =gUnknown_02039278 - mov r5, r9 - ldr r3, [r5] - ldrb r1, [r3, 0x19] - adds r2, r1, 0 - adds r2, 0x1E - adds r0, r2, 0 - asrs r0, 5 - lsls r0, 5 - subs r0, r2, r0 - strb r0, [r4] - adds r0, r3, 0 - adds r0, 0xFC - ldrb r2, [r4] - movs r1, 0x2 - str r1, [sp] - movs r6, 0x20 - str r6, [sp, 0x4] - movs r1, 0 - movs r3, 0 - bl sub_8124E7C - ldr r1, [r5] - ldrb r0, [r1, 0x18] - cmp r0, 0 - bne _0812474C - ldrb r2, [r1, 0x1A] - adds r3, r2, 0 - adds r3, 0x1D - adds r0, r3, 0 - asrs r0, 5 - lsls r0, 5 - subs r0, r3, r0 - strb r0, [r1, 0x1A] - mov r3, r9 - ldr r1, [r3] - movs r0, 0xC - strb r0, [r1, 0x18] - bl sub_812446C - mov r4, r9 - ldr r1, [r4] - ldrb r3, [r1, 0x1A] - adds r4, r3, 0x1 - adds r0, r4, 0 - asrs r0, 5 - lsls r0, 5 - subs r0, r4, r0 - ldr r2, _08124764 @ =gUnknown_02039278 - strb r0, [r2] - adds r0, r1, 0 - adds r0, 0xFC - ldrb r3, [r2] - str r6, [sp] - movs r1, 0x9 - str r1, [sp, 0x4] - movs r1, 0 - movs r2, 0 - bl sub_8124E7C -_0812474C: - 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 -_0812475C: .4byte gUnknown_02039274 -_08124760: .4byte gUnknown_0203927A -_08124764: .4byte gUnknown_02039278 -_08124768: .4byte gUnknown_02039279 - thumb_func_end sub_81245F4 - thumb_func_start sub_812476C sub_812476C: @ 812476C push {r4-r7,lr} diff --git a/include/cable_car_util.h b/include/cable_car_util.h index 76198af02..d109190b0 100644 --- a/include/cable_car_util.h +++ b/include/cable_car_util.h @@ -7,7 +7,7 @@ // 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); +void sub_8124F08(void *dest, const u16 *src, u8 x, u8 y, u8 width, u8 height); +void sub_8124E7C(void *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 3582ce4fd..3d93010a2 100644 --- a/src/scene/cable_car.c +++ b/src/scene/cable_car.c @@ -44,7 +44,11 @@ struct CableCarEwramStruct1 { u8 filler_0000e[6]; u8 unk_0014; u8 unk_0015; - u8 filler_0016[5]; + u8 unk_0016; + u8 unk_0017; + u8 unk_0018; + u8 unk_0019; + u8 unk_001a; u8 unk_001b; u8 unk_001c; u8 unk_001d; @@ -53,7 +57,7 @@ struct CableCarEwramStruct1 { u8 unk_0020; u16 unk_0022[9][12]; u8 filler_00fa[2]; - u16 unk_00fc[0x400]; + u16 unk_00fc[0x20][0x20]; u16 unk_08fc[0x400]; }; // size 0x10FC @@ -895,4 +899,34 @@ void sub_8124598(void) { sub_812476C(); } -} \ No newline at end of file +} + +void sub_81245F4(void) +{ + u8 i = 0; + + gUnknown_02039274->unk_001d = gUnknown_02039274->unk_001e = 0; + gUnknown_02039274->unk_001f = gUnknown_02039274->unk_0008; + gUnknown_02039274->unk_0020 = gUnknown_02039274->unk_0009; + gUnknown_02039274->unk_0019 = (gUnknown_02039274->unk_0019 + 30) % 32; + gUnknown_02039274->unk_0018 -= 2; + gUnknown_0203927A = (gUnknown_02039274->unk_001a + 23) % 32; + for (i = 0; i < 9; i++) + { + gUnknown_02039278 = gUnknown_02039274->unk_0019; + gUnknown_02039279 = (gUnknown_0203927A + i) % 32; + gUnknown_02039274->unk_00fc[gUnknown_02039279][gUnknown_02039278] = gUnknown_02039274->unk_0022[i][gUnknown_02039274->unk_0018]; + gUnknown_02039278 = (gUnknown_02039278 + 1) % 32; + gUnknown_02039274->unk_00fc[gUnknown_02039279][gUnknown_02039278] = gUnknown_02039274->unk_0022[i][gUnknown_02039274->unk_0018 + 1]; + } + gUnknown_02039278 = (gUnknown_02039274->unk_0019 + 30) % 32; + sub_8124E7C(gUnknown_02039274->unk_00fc, 0, gUnknown_02039278, 0, 2, 32); + if (gUnknown_02039274->unk_0018 == 0) + { + gUnknown_02039274->unk_001a = (gUnknown_02039274->unk_001a + 29) % 32; + gUnknown_02039274->unk_0018 = 12; + sub_812446C(); + gUnknown_02039278 = (gUnknown_02039274->unk_001a + 1) % 32; + sub_8124E7C(gUnknown_02039274->unk_00fc, 0, 0, gUnknown_02039278, 32, 9); + } +} -- cgit v1.2.3 From 675cf09efa0f32e5aee4d96fb85a69d4cce7ebb9 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 5 Jan 2018 21:29:32 -0500 Subject: sub_812476C --- asm/cable_car.s | 161 -------------------------------------------------- src/scene/cable_car.c | 28 +++++++++ 2 files changed, 28 insertions(+), 161 deletions(-) diff --git a/asm/cable_car.s b/asm/cable_car.s index c4b9d9ab7..59b613556 100644 --- a/asm/cable_car.s +++ b/asm/cable_car.s @@ -5,167 +5,6 @@ .text - thumb_func_start sub_812476C -sub_812476C: @ 812476C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - movs r0, 0 - mov r12, r0 - ldr r2, _0812489C @ =gUnknown_02039274 - ldr r0, [r2] - mov r1, r12 - strb r1, [r0, 0x1E] - strb r1, [r0, 0x1D] - ldr r1, [r2] - ldrb r0, [r1, 0x8] - strb r0, [r1, 0x1F] - ldr r0, [r2] - ldrb r1, [r0, 0x9] - adds r0, 0x20 - strb r1, [r0] - ldr r4, [r2] - ldrb r1, [r4, 0x19] - adds r3, r1, 0x2 - adds r0, r3, 0 - mov r9, r2 - asrs r0, 5 - lsls r0, 5 - subs r0, r3, r0 - strb r0, [r4, 0x19] - mov r2, r9 - ldr r1, [r2] - ldrb r0, [r1, 0x18] - adds r0, 0x2 - strb r0, [r1, 0x18] - ldr r1, _081248A0 @ =gUnknown_0203927D - ldr r0, [r2] - ldrb r0, [r0, 0x1A] - strb r0, [r1] - ldr r4, _081248A4 @ =gUnknown_0203927C - mov r10, r4 - ldr r7, _081248A8 @ =gUnknown_0203927B - mov r8, r10 -_081247C0: - mov r0, r9 - ldr r3, [r0] - ldrb r0, [r3, 0x19] - strb r0, [r7] - ldr r1, _081248A0 @ =gUnknown_0203927D - ldrb r0, [r1] - mov r2, r12 - adds r1, r0, r2 - adds r0, r1, 0 - asrs r0, 5 - lsls r0, 5 - subs r0, r1, r0 - mov r4, r8 - strb r0, [r4] - ldrb r2, [r7] - lsls r2, 1 - ldrb r0, [r4] - lsls r0, 6 - adds r2, r0 - adds r6, r3, 0 - adds r6, 0xFC - adds r2, r6, r2 - ldrb r1, [r3, 0x18] - lsls r1, 1 - mov r4, r12 - lsls r0, r4, 1 - add r0, r12 - lsls r5, r0, 3 - adds r1, r5 - adds r4, r3, 0 - adds r4, 0x22 - adds r1, r4, r1 - ldrh r0, [r1] - strh r0, [r2] - ldrb r1, [r7] - adds r2, r1, 0x1 - adds r0, r2, 0 - asrs r0, 5 - lsls r0, 5 - subs r0, r2, r0 - strb r0, [r7] - ldrb r1, [r7] - lsls r1, 1 - mov r2, r8 - ldrb r0, [r2] - lsls r0, 6 - adds r1, r0 - adds r1, r6, r1 - ldrb r0, [r3, 0x18] - adds r0, 0x1 - lsls r0, 1 - adds r0, r5 - adds r0, r4, r0 - ldrh r0, [r0] - strh r0, [r1] - mov r0, r12 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r12, r0 - cmp r0, 0x8 - bls _081247C0 - mov r4, r9 - ldr r1, [r4] - ldrb r2, [r1, 0x1A] - adds r3, r2, 0 - adds r3, 0x17 - adds r0, r3, 0 - asrs r0, 5 - lsls r0, 5 - subs r0, r3, r0 - mov r2, r10 - strb r0, [r2] - adds r0, r1, 0 - adds r0, 0xFC - ldrb r2, [r1, 0x19] - mov r1, r10 - ldrb r3, [r1] - movs r1, 0x2 - str r1, [sp] - movs r1, 0x9 - str r1, [sp, 0x4] - movs r1, 0 - bl sub_8124E7C - ldr r1, [r4] - ldrb r0, [r1, 0x18] - cmp r0, 0xA - bne _0812488C - ldrb r2, [r1, 0x1A] - adds r3, r2, 0x3 - adds r0, r3, 0 - asrs r0, 5 - lsls r0, 5 - subs r0, r3, r0 - strb r0, [r1, 0x1A] - mov r2, r9 - ldr r1, [r2] - movs r0, 0xFE - strb r0, [r1, 0x18] - bl sub_812446C -_0812488C: - 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 -_0812489C: .4byte gUnknown_02039274 -_081248A0: .4byte gUnknown_0203927D -_081248A4: .4byte gUnknown_0203927C -_081248A8: .4byte gUnknown_0203927B - thumb_func_end sub_812476C - thumb_func_start sub_81248AC sub_81248AC: @ 81248AC push {lr} diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c index 3d93010a2..edfc566e8 100644 --- a/src/scene/cable_car.c +++ b/src/scene/cable_car.c @@ -930,3 +930,31 @@ void sub_81245F4(void) sub_8124E7C(gUnknown_02039274->unk_00fc, 0, 0, gUnknown_02039278, 32, 9); } } + +void sub_812476C(void) +{ + u8 i = 0; + + gUnknown_02039274->unk_001d = gUnknown_02039274->unk_001e = 0; + gUnknown_02039274->unk_001f = gUnknown_02039274->unk_0008; + gUnknown_02039274->unk_0020 = gUnknown_02039274->unk_0009; + gUnknown_02039274->unk_0019 = (gUnknown_02039274->unk_0019 + 2) % 32; + gUnknown_02039274->unk_0018 += 2; + gUnknown_0203927D = gUnknown_02039274->unk_001a; + for (i = 0; i < 9; i++) + { + gUnknown_0203927B = gUnknown_02039274->unk_0019; + gUnknown_0203927C = (gUnknown_0203927D + i) % 32; + gUnknown_02039274->unk_00fc[gUnknown_0203927C][gUnknown_0203927B] = gUnknown_02039274->unk_0022[i][gUnknown_02039274->unk_0018]; + gUnknown_0203927B = (gUnknown_0203927B + 1) % 32; + gUnknown_02039274->unk_00fc[gUnknown_0203927C][gUnknown_0203927B] = gUnknown_02039274->unk_0022[i][gUnknown_02039274->unk_0018 + 1]; + } + gUnknown_0203927C = (gUnknown_02039274->unk_001a + 23) % 32; + sub_8124E7C(gUnknown_02039274->unk_00fc, 0, gUnknown_02039274->unk_0019, gUnknown_0203927C, 2, 9); + if (gUnknown_02039274->unk_0018 == 10) + { + gUnknown_02039274->unk_001a = (gUnknown_02039274->unk_001a + 3) % 32; + gUnknown_02039274->unk_0018 = 0xfe; + sub_812446C(); + } +} -- cgit v1.2.3 From 27d47d5a8e6e8362acf4af1c9b6f7cd3a66d335e Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 5 Jan 2018 21:33:27 -0500 Subject: sub_81248AC --- asm/cable_car.s | 63 --------------------------------------------------- ld_script.txt | 1 - src/scene/cable_car.c | 25 ++++++++++++++++++++ 3 files changed, 25 insertions(+), 64 deletions(-) delete mode 100644 asm/cable_car.s diff --git a/asm/cable_car.s b/asm/cable_car.s deleted file mode 100644 index 59b613556..000000000 --- a/asm/cable_car.s +++ /dev/null @@ -1,63 +0,0 @@ - .include "constants/gba_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_81248AC -sub_81248AC: @ 81248AC - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _081248BA - cmp r0, 0x1 - beq _081248E4 -_081248BA: - ldr r1, _081248E0 @ =gUnknown_02039274 - ldr r2, [r1] - movs r3, 0 - movs r0, 0x2 - strb r0, [r2, 0x1B] - ldr r0, [r1] - strb r3, [r0, 0x19] - ldr r2, [r1] - movs r0, 0x14 - strb r0, [r2, 0x1A] - ldr r1, [r1] - movs r0, 0xC - strb r0, [r1, 0x18] - bl sub_812446C - bl sub_81245F4 - b _08124906 - .align 2, 0 -_081248E0: .4byte gUnknown_02039274 -_081248E4: - ldr r1, _08124914 @ =gUnknown_02039274 - ldr r2, [r1] - movs r0, 0x2 - strb r0, [r2, 0x1B] - ldr r2, [r1] - movs r0, 0x1C - strb r0, [r2, 0x19] - ldr r2, [r1] - movs r0, 0x14 - strb r0, [r2, 0x1A] - ldr r1, [r1] - movs r0, 0x4 - strb r0, [r1, 0x18] - bl sub_812446C - bl sub_812476C -_08124906: - ldr r0, _08124914 @ =gUnknown_02039274 - ldr r1, [r0] - movs r0, 0 - strb r0, [r1, 0x1C] - pop {r0} - bx r0 - .align 2, 0 -_08124914: .4byte gUnknown_02039274 - thumb_func_end sub_81248AC - - .align 2, 0 @ Don't pad with nop. diff --git a/ld_script.txt b/ld_script.txt index 0571d8823..07345eb18 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -348,7 +348,6 @@ SECTIONS { src/battle/battle_message.o(.text); src/field/choose_party.o(.text); src/scene/cable_car.o(.text); - asm/cable_car.o(.text); asm/roulette_util.o(.text); asm/cable_car_util.o(.text); src/unused_8124F94.o(.text); diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c index edfc566e8..f12d80dba 100644 --- a/src/scene/cable_car.c +++ b/src/scene/cable_car.c @@ -958,3 +958,28 @@ void sub_812476C(void) sub_812446C(); } } + +void sub_81248AC(u8 a0) +{ + switch (a0) + { + case 0: + default: + gUnknown_02039274->unk_001b = 2; + gUnknown_02039274->unk_0019 = 0; + gUnknown_02039274->unk_001a = 20; + gUnknown_02039274->unk_0018 = 12; + sub_812446C(); + sub_81245F4(); + break; + case 1: + gUnknown_02039274->unk_001b = 2; + gUnknown_02039274->unk_0019 = 28; + gUnknown_02039274->unk_001a = 20; + gUnknown_02039274->unk_0018 = 4; + sub_812446C(); + sub_812476C(); + break; + } + gUnknown_02039274->unk_001c = 0; +} -- cgit v1.2.3 From fe7e54d6d8d158409316af91ca4e119a6af73faf Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 5 Jan 2018 21:37:20 -0500 Subject: Make static what can be made static --- include/graphics.h | 7 ++++ src/scene/cable_car.c | 106 ++++++++++++++++++++++++-------------------------- 2 files changed, 57 insertions(+), 56 deletions(-) diff --git a/include/graphics.h b/include/graphics.h index 17abb840e..32f3a1c1f 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -2703,4 +2703,11 @@ extern const u16 gUnknown_08E95A18[]; extern const u16 gUnknown_08E95AB8[]; extern const u16 gUnknown_08E95FB8[]; +extern const u8 gCableCar_Gfx[]; +extern const u8 gCableCarDoor_Gfx[]; +extern const u8 gCableCarCord_Gfx[]; +extern const u16 gCableCar_Pal[]; +extern const u16 gCableCarBG_Pal[]; +extern const u8 gCableCarBG_Gfx[]; + #endif // GUARD_GRAPHICS_H diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c index f12d80dba..6b1c8aa3c 100644 --- a/src/scene/cable_car.c +++ b/src/scene/cable_car.c @@ -9,6 +9,7 @@ #include "script.h" #include "task.h" #include "sound.h" +#include "graphics.h" #include "constants/songs.h" #include "decompress.h" #include "field_weather.h" @@ -81,40 +82,33 @@ EWRAM_DATA u32 filler_02039280 = 0; // Static ROM declarations -void sub_8123244(void); -void sub_8123724(void); -void sub_8123878(u8 taskId); -void sub_81239E4(u8 taskId); -void sub_8123AF8(u8 taskId); -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); +static void sub_8123244(void); +static void sub_8123724(void); +static void sub_8123878(u8 taskId); +static void sub_81239E4(u8 taskId); +static void sub_8123AF8(u8 taskId); +static void sub_8123C40(void); +static void nullsub_76(struct Sprite *sprite); +static void sub_8123CB8(struct Sprite *sprite); +static void sub_8123EB8(struct Sprite *sprite); +static void sub_8123F44(struct Sprite *sprite); +static void sub_8123FBC(u8); +static void sub_8124118(void); +static void sub_812453C(void); +static void sub_8124598(void); +static void sub_81245F4(void); +static void sub_812476C(void); +static void sub_81248AC(u8); // .rodata -extern const u8 gCableCar_Gfx[]; -extern const u8 gCableCarDoor_Gfx[]; -extern const u8 gCableCarCord_Gfx[]; -extern const u16 gCableCar_Pal[]; -extern const u16 gCableCarBG_Pal[]; -extern const u8 gCableCarBG_Gfx[]; +static const u8 gCableCarMtChimneyTilemap[] = INCBIN_U8("graphics/misc/cable_car_mt_chimney_map.bin.lz"); -const u8 gCableCarMtChimneyTilemap[] = INCBIN_U8("graphics/misc/cable_car_mt_chimney_map.bin.lz"); +static const u8 gCableCarTreeTilemap[] = INCBIN_U8("graphics/misc/cable_car_tree_map.bin.lz"); -const u8 gCableCarTreeTilemap[] = INCBIN_U8("graphics/misc/cable_car_tree_map.bin.lz"); +static const u8 gCableCarMountainTilemap[] = INCBIN_U8("graphics/misc/cable_car_mountain_map.bin.lz"); -const u8 gCableCarMountainTilemap[] = INCBIN_U8("graphics/misc/cable_car_mountain_map.bin.lz"); - -const u16 gCableCarPylonHookTilemapEntries[] = { +static const u16 gCableCarPylonHookTilemapEntries[] = { 0x3000, 0x3001, 0x3002, @@ -127,38 +121,38 @@ const u16 gCableCarPylonHookTilemapEntries[] = { 0x3009 }; -const u8 gCableCarPylonStemTilemap[] = INCBIN_U8("graphics/misc/cable_car_pylon_stem_map.bin.lz"); +static const u8 gCableCarPylonStemTilemap[] = INCBIN_U8("graphics/misc/cable_car_pylon_stem_map.bin.lz"); -const struct CompressedSpriteSheet gUnknown_08401CF8[] = { +static const struct CompressedSpriteSheet gUnknown_08401CF8[] = { { gCableCar_Gfx, 0x800, 1 }, { gCableCarDoor_Gfx, 0x40, 2 }, { gCableCarCord_Gfx, 0x80, 3 }, { } }; -const struct SpritePalette gUnknown_08401D18[] = { +static const struct SpritePalette gUnknown_08401D18[] = { { gCableCar_Pal, 1 }, { } }; -const struct OamData gOamData_8401D28 = { +static const struct OamData gOamData_8401D28 = { .affineMode = ST_OAM_AFFINE_DOUBLE, .size = 3, .priority = 2 }; -const struct OamData gOamData_8401D30 = { +static const struct OamData gOamData_8401D30 = { .affineMode = ST_OAM_AFFINE_DOUBLE, .shape = ST_OAM_H_RECTANGLE, .priority = 2 }; -const struct OamData gOamData_8401D38 = { +static const struct OamData gOamData_8401D38 = { .affineMode = ST_OAM_AFFINE_DOUBLE, .size = 1, .priority = 2 }; -const struct SpriteTemplate gSpriteTemplate_8401D40[] = { +static const struct SpriteTemplate gSpriteTemplate_8401D40[] = { { 1, 1, @@ -188,7 +182,7 @@ const struct SpriteTemplate gSpriteTemplate_8401D40[] = { // .text -void sub_81231EC(u8 taskId) +static void sub_81231EC(u8 taskId) { if (!gPaletteFade.active) { @@ -204,7 +198,7 @@ void sub_8123218(void) BeginNormalPaletteFade(-1, 0, 0, 16, 0); } -void sub_8123244(void) +static void sub_8123244(void) { u8 i; u16 imebak; @@ -318,7 +312,7 @@ void sub_8123244(void) } } -void sub_8123724(void) +static void sub_8123724(void) { RunTasks(); AnimateSprites(); @@ -327,7 +321,7 @@ void sub_8123724(void) MapMusicMain(); } -void sub_8123740(void) +static void sub_8123740(void) { u8 i; @@ -352,7 +346,7 @@ void sub_8123740(void) SetMainCallback2(CB2_LoadMap); } -void sub_8123878(u8 taskId) +static void sub_8123878(u8 taskId) { u8 i; @@ -424,7 +418,7 @@ void sub_8123878(u8 taskId) } } -void sub_81239E4(u8 taskId) +static void sub_81239E4(u8 taskId) { if (gUnknown_02039274->unk_0001 != 255) { @@ -460,7 +454,7 @@ void sub_81239E4(u8 taskId) gSpriteCoordOffsetX = (gSpriteCoordOffsetX + 1) % 128; } -void sub_8123AF8(u8 taskId) +static void sub_8123AF8(u8 taskId) { if (gUnknown_02039274->unk_0001 != 255) { @@ -506,7 +500,7 @@ void sub_8123AF8(u8 taskId) } } -void sub_8123C40(void) +static void sub_8123C40(void) { DmaCopy16(3, gUnknown_02039274->unk_00fc, BG_SCREEN_ADDR(28), 0x800); DmaCopy16(3, gUnknown_02039274->unk_08fc, BG_SCREEN_ADDR(31), 0x800); @@ -521,12 +515,12 @@ void sub_8123C40(void) TransferPlttBuffer(); } -void nullsub_76(struct Sprite *sprite) +static void nullsub_76(struct Sprite *sprite) { } -void sub_8123CB8(struct Sprite *sprite) +static void sub_8123CB8(struct Sprite *sprite) { if (gUnknown_02039274->unk_0001 != 255) { @@ -543,7 +537,7 @@ void sub_8123CB8(struct Sprite *sprite) } } -void sub_8123D98(struct Sprite *sprite) +static void sub_8123D98(struct Sprite *sprite) { if (gUnknown_02039274->unk_0001 != 255) { @@ -579,7 +573,7 @@ void sub_8123D98(struct Sprite *sprite) } } -void sub_8123EB8(struct Sprite *sprite) +static void sub_8123EB8(struct Sprite *sprite) { if (sprite->data[0] == 0) { @@ -615,7 +609,7 @@ void sub_8123EB8(struct Sprite *sprite) } } -void sub_8123F44(struct Sprite *sprite) +static void sub_8123F44(struct Sprite *sprite) { if (sprite->data[0] == 0) { @@ -650,7 +644,7 @@ void sub_8123F44(struct Sprite *sprite) } } -void sub_8123FBC(bool8 which) +static void sub_8123FBC(bool8 which) { switch (which) { @@ -720,7 +714,7 @@ void sub_8123FBC(bool8 which) } } -void sub_8124118(void) +static void sub_8124118(void) { u8 spriteId; u8 i; @@ -849,7 +843,7 @@ void sub_8124118(void) } } -void sub_812446C(void) +static void sub_812446C(void) { u8 i; u8 j; @@ -869,7 +863,7 @@ void sub_812446C(void) gUnknown_02039274->unk_001b = (gUnknown_02039274->unk_001b + 1) % 3; } -void sub_812453C(void) +static 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; @@ -885,7 +879,7 @@ void sub_812453C(void) } } -void sub_8124598(void) +static 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; @@ -901,7 +895,7 @@ void sub_8124598(void) } } -void sub_81245F4(void) +static void sub_81245F4(void) { u8 i = 0; @@ -931,7 +925,7 @@ void sub_81245F4(void) } } -void sub_812476C(void) +static void sub_812476C(void) { u8 i = 0; @@ -959,7 +953,7 @@ void sub_812476C(void) } } -void sub_81248AC(u8 a0) +static void sub_81248AC(u8 a0) { switch (a0) { -- cgit v1.2.3 From 2692979c40ce3bc93901ea7194c68c01d14c1c9f Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 5 Jan 2018 21:46:59 -0500 Subject: some renaming --- data/scripts/maps/MtChimney_CableCarStation.inc | 2 +- data/scripts/maps/Route112_CableCarStation.inc | 2 +- data/specials.inc | 2 +- src/scene/cable_car.c | 352 ++++++++++++------------ 4 files changed, 179 insertions(+), 179 deletions(-) diff --git a/data/scripts/maps/MtChimney_CableCarStation.inc b/data/scripts/maps/MtChimney_CableCarStation.inc index aefc68bda..6b0858bc5 100644 --- a/data/scripts/maps/MtChimney_CableCarStation.inc +++ b/data/scripts/maps/MtChimney_CableCarStation.inc @@ -48,7 +48,7 @@ MtChimney_CableCarStation_EventScript_15C16C:: @ 815C16C setvar VAR_CABLE_CAR_STATION_STATE, 2 incrementgamestat GAME_STAT_RODE_CABLE_CAR special CableCarWarp - special sub_8123218 + special CableCar waitstate release end diff --git a/data/scripts/maps/Route112_CableCarStation.inc b/data/scripts/maps/Route112_CableCarStation.inc index adbea780e..0264342ea 100644 --- a/data/scripts/maps/Route112_CableCarStation.inc +++ b/data/scripts/maps/Route112_CableCarStation.inc @@ -49,7 +49,7 @@ Route112_CableCarStation_EventScript_15C0AD:: @ 815C0AD setvar VAR_CABLE_CAR_STATION_STATE, 1 incrementgamestat GAME_STAT_RODE_CABLE_CAR special CableCarWarp - special sub_8123218 + special CableCar waitstate release end diff --git a/data/specials.inc b/data/specials.inc index 032a3884c..6904a2b6b 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -159,7 +159,7 @@ gSpecials:: def_special GetRivalSonDaughterString def_special SetFlagInVar def_special CableCarWarp - def_special sub_8123218 + def_special CableCar def_special Overworld_PlaySpecialMapMusic def_special StartWallClock def_special ScrSpecial_ViewWallClock diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c index 6b1c8aa3c..288c5d40d 100644 --- a/src/scene/cable_car.c +++ b/src/scene/cable_car.c @@ -71,7 +71,7 @@ struct CableCarEwramStruct2 { // Static RAM declarations -EWRAM_DATA struct CableCarEwramStruct1 *gUnknown_02039274 = NULL; +EWRAM_DATA struct CableCarEwramStruct1 *sCableCarPtr = NULL; EWRAM_DATA u8 gUnknown_02039278 = 0; EWRAM_DATA u8 gUnknown_02039279 = 0; EWRAM_DATA u8 gUnknown_0203927A = 0; @@ -82,18 +82,18 @@ EWRAM_DATA u32 filler_02039280 = 0; // Static ROM declarations -static void sub_8123244(void); -static void sub_8123724(void); +static void CableCarMainCallback_Setup(void); +static void CableCarMainCallback_Run(void); static void sub_8123878(u8 taskId); static void sub_81239E4(u8 taskId); static void sub_8123AF8(u8 taskId); -static void sub_8123C40(void); +static void CableCarVblankCallback(void); static void nullsub_76(struct Sprite *sprite); static void sub_8123CB8(struct Sprite *sprite); static void sub_8123EB8(struct Sprite *sprite); static void sub_8123F44(struct Sprite *sprite); static void sub_8123FBC(u8); -static void sub_8124118(void); +static void LoadSprites(void); static void sub_812453C(void); static void sub_8124598(void); static void sub_81245F4(void); @@ -182,23 +182,23 @@ static const struct SpriteTemplate gSpriteTemplate_8401D40[] = { // .text -static void sub_81231EC(u8 taskId) +static void CableCarTask1(u8 taskId) { if (!gPaletteFade.active) { - SetMainCallback2(sub_8123244); + SetMainCallback2(CableCarMainCallback_Setup); DestroyTask(taskId); } } -void sub_8123218(void) +void CableCar(void) { ScriptContext2_Enable(); - CreateTask(sub_81231EC, 1); + CreateTask(CableCarTask1, 1); BeginNormalPaletteFade(-1, 0, 0, 16, 0); } -static void sub_8123244(void) +static void CableCarMainCallback_Setup(void) { u8 i; u16 imebak; @@ -212,7 +212,7 @@ static void sub_8123244(void) DmaFill16Large(3, 0, VRAM, VRAM_SIZE, 0x1000); DmaFill32Defvars(3, 0, OAM, OAM_SIZE); DmaFill16Defvars(3, 0, PLTT, PLTT_SIZE); - gUnknown_02039274 = eCableCar1; + sCableCarPtr = eCableCar1; DmaFill16Large(3, 0, eCableCar1, 0x10FC, 0x1000); gMain.state++; break; @@ -246,12 +246,12 @@ static void sub_8123244(void) gMain.state++; break; case 3: - sub_8124118(); + LoadSprites(); RunTasks(); gMain.state++; break; case 4: - if (gUnknown_02039274->unk_0002 == 7) + if (sCableCarPtr->unk_0002 == 7) { gMain.state++; } @@ -270,20 +270,20 @@ static void sub_8123244(void) case 5: sub_8124F08((u16 *)BG_SCREEN_ADDR(29), eCableCar2->treeTilemap, 0, 17, 32, 15); sub_8124F08((u16 *)BG_SCREEN_ADDR(30), eCableCar2->mountainTilemap, 0, 0, 30, 20); - sub_8124F08(gUnknown_02039274->unk_08fc, gCableCarPylonHookTilemapEntries, 0, 0, 5, 2); - sub_8124F08(gUnknown_02039274->unk_08fc, eCableCar2->pylonStemTilemap, 0, 2, 2, 20); + sub_8124F08(sCableCarPtr->unk_08fc, gCableCarPylonHookTilemapEntries, 0, 0, 5, 2); + sub_8124F08(sCableCarPtr->unk_08fc, eCableCar2->pylonStemTilemap, 0, 2, 2, 20); gMain.state++; break; case 6: sub_81248AC(gSpecialVar_0x8004); - sub_8124F08(gUnknown_02039274->unk_00fc, eCableCar2->mtChimneyTilemap + 0x48, 0, 14, 12, 3); - sub_8124F08(gUnknown_02039274->unk_00fc, eCableCar2->mtChimneyTilemap + 0x6C, 12, 17, 12, 3); - sub_8124F08(gUnknown_02039274->unk_00fc, eCableCar2->mtChimneyTilemap + 0x90, 24, 20, 12, 3); - sub_8124F08(gUnknown_02039274->unk_00fc, eCableCar2->mtChimneyTilemap + 0x00, 0, 17, 12, 3); - sub_8124F08(gUnknown_02039274->unk_00fc, eCableCar2->mtChimneyTilemap + 0x24, 0, 20, 12, 3); - sub_8124F08(gUnknown_02039274->unk_00fc, eCableCar2->mtChimneyTilemap + 0x00, 12, 20, 12, 3); - sub_8124F08(gUnknown_02039274->unk_00fc, eCableCar2->mtChimneyTilemap + 0x24, 12, 23, 12, 3); - sub_8124F08(gUnknown_02039274->unk_00fc, eCableCar2->mtChimneyTilemap + 0x00, 24, 23, 12, 3); + sub_8124F08(sCableCarPtr->unk_00fc, eCableCar2->mtChimneyTilemap + 0x48, 0, 14, 12, 3); + sub_8124F08(sCableCarPtr->unk_00fc, eCableCar2->mtChimneyTilemap + 0x6C, 12, 17, 12, 3); + sub_8124F08(sCableCarPtr->unk_00fc, eCableCar2->mtChimneyTilemap + 0x90, 24, 20, 12, 3); + sub_8124F08(sCableCarPtr->unk_00fc, eCableCar2->mtChimneyTilemap + 0x00, 0, 17, 12, 3); + sub_8124F08(sCableCarPtr->unk_00fc, eCableCar2->mtChimneyTilemap + 0x24, 0, 20, 12, 3); + sub_8124F08(sCableCarPtr->unk_00fc, eCableCar2->mtChimneyTilemap + 0x00, 12, 20, 12, 3); + sub_8124F08(sCableCarPtr->unk_00fc, eCableCar2->mtChimneyTilemap + 0x24, 12, 23, 12, 3); + sub_8124F08(sCableCarPtr->unk_00fc, eCableCar2->mtChimneyTilemap + 0x00, 24, 23, 12, 3); gMain.state++; break; case 7: @@ -297,22 +297,22 @@ static void sub_8123244(void) REG_IME = 0; REG_IE |= INTR_FLAG_VBLANK; REG_IME = imebak; - SetVBlankCallback(sub_8123C40); - SetMainCallback2(sub_8123724); + SetVBlankCallback(CableCarVblankCallback); + SetMainCallback2(CableCarMainCallback_Run); CreateTask(sub_8123878, 0); if (gSpecialVar_0x8004 == 0) { - gUnknown_02039274->unk_0000 = CreateTask(sub_81239E4, 1); + sCableCarPtr->unk_0000 = CreateTask(sub_81239E4, 1); } else { - gUnknown_02039274->unk_0000 = CreateTask(sub_8123AF8, 1); + sCableCarPtr->unk_0000 = CreateTask(sub_8123AF8, 1); } break; } } -static void sub_8123724(void) +static void CableCarMainCallback_Run(void) { RunTasks(); AnimateSprites(); @@ -337,7 +337,7 @@ static void sub_8123740(void) ResetSpriteData(); ResetPaletteFade(); DmaFill32Large(3, 0, gSharedMem, 0x20000, 0x1000); - gUnknown_02039274 = NULL; + sCableCarPtr = NULL; DmaFill16Large(3, 0, VRAM, VRAM_SIZE, 0x1000); DmaFill32Defvars(3, 0, OAM, OAM_SIZE); DmaFill16Defvars(3, 0, PLTT, PLTT_SIZE); @@ -351,18 +351,18 @@ static void sub_8123878(u8 taskId) u8 i; i = 0; - gUnknown_02039274->unk_0006++; - switch (gUnknown_02039274->unk_0001) + sCableCarPtr->unk_0006++; + switch (sCableCarPtr->unk_0001) { case 0: - if (gUnknown_02039274->unk_0006 == gUnknown_02039274->unk_0004) + if (sCableCarPtr->unk_0006 == sCableCarPtr->unk_0004) { - DoWeatherEffect(gUnknown_02039274->unk_0002); - gUnknown_02039274->unk_0001 = 1; + DoWeatherEffect(sCableCarPtr->unk_0002); + sCableCarPtr->unk_0001 = 1; } break; case 1: - switch (gUnknown_02039274->unk_0002) + switch (sCableCarPtr->unk_0002) { case 7: if (gWeatherPtr->sprites.s2.ashSprites[0] != NULL && gWeatherPtr->sprites.s2.ashSprites[0]->oam.priority != 0) @@ -374,15 +374,15 @@ static void sub_8123878(u8 taskId) gWeatherPtr->sprites.s2.ashSprites[i]->oam.priority = 0; } } - gUnknown_02039274->unk_0001 = 2; + sCableCarPtr->unk_0001 = 2; } break; case 2: if (gWeatherPtr->currWeather == 2) { - gUnknown_02039274->unk_0001 = 2; + sCableCarPtr->unk_0001 = 2; } - else if (gUnknown_02039274->unk_0006 >= gUnknown_02039274->unk_0004 + 8) + else if (sCableCarPtr->unk_0006 >= sCableCarPtr->unk_0004 + 8) { for (; i < 20; i++) { @@ -396,9 +396,9 @@ static void sub_8123878(u8 taskId) } break; case 2: - if (gUnknown_02039274->unk_0006 == 570) + if (sCableCarPtr->unk_0006 == 570) { - gUnknown_02039274->unk_0001 = 3; + sCableCarPtr->unk_0001 = 3; BeginNormalPaletteFade(-1, 3, 0, 16, 0); FadeOutBGM(4); } @@ -406,13 +406,13 @@ static void sub_8123878(u8 taskId) case 3: if (!gPaletteFade.active) { - gUnknown_02039274->unk_0001 = 255; + sCableCarPtr->unk_0001 = 255; } break; case 255: SetVBlankCallback(NULL); DestroyTask(taskId); - DestroyTask(gUnknown_02039274->unk_0000); + DestroyTask(sCableCarPtr->unk_0000); SetMainCallback2(sub_8123740); break; } @@ -420,33 +420,33 @@ static void sub_8123878(u8 taskId) static void sub_81239E4(u8 taskId) { - if (gUnknown_02039274->unk_0001 != 255) + if (sCableCarPtr->unk_0001 != 255) { - gUnknown_02039274->unk_0014--; - if ((gUnknown_02039274->unk_0006 % 2) == 0) + sCableCarPtr->unk_0014--; + if ((sCableCarPtr->unk_0006 % 2) == 0) { - gUnknown_02039274->unk_0015--; + sCableCarPtr->unk_0015--; } - if ((gUnknown_02039274->unk_0006 % 8) == 0) + if ((sCableCarPtr->unk_0006 % 8) == 0) { - gUnknown_02039274->unk_000c--; - gUnknown_02039274->unk_000d--; + sCableCarPtr->unk_000c--; + sCableCarPtr->unk_000d--; } - switch (gUnknown_02039274->unk_0014) + switch (sCableCarPtr->unk_0014) { case 175: - sub_8124E7C(gUnknown_02039274->unk_08fc, 0, 0, 22, 2, 10); + sub_8124E7C(sCableCarPtr->unk_08fc, 0, 0, 22, 2, 10); break; case 40: - sub_8124E7C(gUnknown_02039274->unk_08fc, 0, 3, 0, 2, 2); + sub_8124E7C(sCableCarPtr->unk_08fc, 0, 3, 0, 2, 2); break; case 32: - sub_8124E7C(gUnknown_02039274->unk_08fc, 0, 2, 0, 1, 2); + sub_8124E7C(sCableCarPtr->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, eCableCar2->pylonStemTilemap, 0, 2, 2, 30); - gUnknown_02039274->unk_0015 = 64; + sub_8124F08(sCableCarPtr->unk_08fc, gCableCarPylonHookTilemapEntries, 0, 0, 5, 2); + sub_8124F08(sCableCarPtr->unk_08fc, eCableCar2->pylonStemTilemap, 0, 2, 2, 30); + sCableCarPtr->unk_0015 = 64; break; } } @@ -456,42 +456,42 @@ static void sub_81239E4(u8 taskId) static void sub_8123AF8(u8 taskId) { - if (gUnknown_02039274->unk_0001 != 255) + if (sCableCarPtr->unk_0001 != 255) { - gUnknown_02039274->unk_0014++; - if ((gUnknown_02039274->unk_0006 % 2) == 0) + sCableCarPtr->unk_0014++; + if ((sCableCarPtr->unk_0006 % 2) == 0) { - gUnknown_02039274->unk_0015++; + sCableCarPtr->unk_0015++; } - if ((gUnknown_02039274->unk_0006 % 8) == 0) + if ((sCableCarPtr->unk_0006 % 8) == 0) { - gUnknown_02039274->unk_000c++; - gUnknown_02039274->unk_000d++; + sCableCarPtr->unk_000c++; + sCableCarPtr->unk_000d++; } - switch (gUnknown_02039274->unk_0014) + switch (sCableCarPtr->unk_0014) { case 176: - sub_8124F08(gUnknown_02039274->unk_08fc, eCableCar2->pylonStemTilemap, 0, 2, 2, 30); + sub_8124F08(sCableCarPtr->unk_08fc, eCableCar2->pylonStemTilemap, 0, 2, 2, 30); break; case 16: - sub_8124E7C(gUnknown_02039274->unk_08fc, 0, 2, 0, 3, 2); - sub_8124E7C(gUnknown_02039274->unk_08fc, 0, 0, 22, 2, 10); - gUnknown_02039274->unk_0015 = 192; + sub_8124E7C(sCableCarPtr->unk_08fc, 0, 2, 0, 3, 2); + sub_8124E7C(sCableCarPtr->unk_08fc, 0, 0, 22, 2, 10); + sCableCarPtr->unk_0015 = 192; break; case 32: - gUnknown_02039274->unk_08fc[2] = (gCableCarPylonHookTilemapEntries + 2)[0]; - gUnknown_02039274->unk_08fc[3] = (gCableCarPylonHookTilemapEntries + 2)[1]; - gUnknown_02039274->unk_08fc[34] = (gCableCarPylonHookTilemapEntries + 2)[5]; - gUnknown_02039274->unk_08fc[35] = (gCableCarPylonHookTilemapEntries + 2)[6]; + sCableCarPtr->unk_08fc[2] = (gCableCarPylonHookTilemapEntries + 2)[0]; + sCableCarPtr->unk_08fc[3] = (gCableCarPylonHookTilemapEntries + 2)[1]; + sCableCarPtr->unk_08fc[34] = (gCableCarPylonHookTilemapEntries + 2)[5]; + sCableCarPtr->unk_08fc[35] = (gCableCarPylonHookTilemapEntries + 2)[6]; break; case 40: - gUnknown_02039274->unk_08fc[4] = (gCableCarPylonHookTilemapEntries + 4)[0]; - gUnknown_02039274->unk_08fc[36] = (gCableCarPylonHookTilemapEntries + 4)[5]; + sCableCarPtr->unk_08fc[4] = (gCableCarPylonHookTilemapEntries + 4)[0]; + sCableCarPtr->unk_08fc[36] = (gCableCarPylonHookTilemapEntries + 4)[5]; break; } } sub_8124598(); - if (gUnknown_02039274->unk_0006 < gUnknown_02039274->unk_0004) { + if (sCableCarPtr->unk_0006 < sCableCarPtr->unk_0004) { gSpriteCoordOffsetX = (gSpriteCoordOffsetX + 247) % 248; } else @@ -500,16 +500,16 @@ static void sub_8123AF8(u8 taskId) } } -static void sub_8123C40(void) +static void CableCarVblankCallback(void) { - DmaCopy16(3, gUnknown_02039274->unk_00fc, BG_SCREEN_ADDR(28), 0x800); - DmaCopy16(3, gUnknown_02039274->unk_08fc, BG_SCREEN_ADDR(31), 0x800); - REG_BG3HOFS = gUnknown_02039274->unk_0014; - REG_BG3VOFS = gUnknown_02039274->unk_0015; - REG_BG1HOFS = gUnknown_02039274->unk_000c; - REG_BG1VOFS = gUnknown_02039274->unk_000d; - REG_BG0HOFS = gUnknown_02039274->unk_0008; - REG_BG0VOFS = gUnknown_02039274->unk_0009; + DmaCopy16(3, sCableCarPtr->unk_00fc, BG_SCREEN_ADDR(28), 0x800); + DmaCopy16(3, sCableCarPtr->unk_08fc, BG_SCREEN_ADDR(31), 0x800); + REG_BG3HOFS = sCableCarPtr->unk_0014; + REG_BG3VOFS = sCableCarPtr->unk_0015; + REG_BG1HOFS = sCableCarPtr->unk_000c; + REG_BG1VOFS = sCableCarPtr->unk_000d; + REG_BG0HOFS = sCableCarPtr->unk_0008; + REG_BG0VOFS = sCableCarPtr->unk_0009; LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); @@ -522,34 +522,34 @@ static void nullsub_76(struct Sprite *sprite) static void sub_8123CB8(struct Sprite *sprite) { - if (gUnknown_02039274->unk_0001 != 255) + if (sCableCarPtr->unk_0001 != 255) { if (gSpecialVar_0x8004 == 0) { - sprite->pos1.x = sprite->data[0] - (u8)(0.14f * S16TOPOSFLOAT(gUnknown_02039274->unk_0006)); - sprite->pos1.y = sprite->data[1] - (u8)(0.067f * S16TOPOSFLOAT(gUnknown_02039274->unk_0006)); + sprite->pos1.x = sprite->data[0] - (u8)(0.14f * S16TOPOSFLOAT(sCableCarPtr->unk_0006)); + sprite->pos1.y = sprite->data[1] - (u8)(0.067f * S16TOPOSFLOAT(sCableCarPtr->unk_0006)); } else { - sprite->pos1.x = sprite->data[0] + (u8)(0.14f * S16TOPOSFLOAT(gUnknown_02039274->unk_0006)); - sprite->pos1.y = sprite->data[1] + (u8)(0.067f * S16TOPOSFLOAT(gUnknown_02039274->unk_0006)); + sprite->pos1.x = sprite->data[0] + (u8)(0.14f * S16TOPOSFLOAT(sCableCarPtr->unk_0006)); + sprite->pos1.y = sprite->data[1] + (u8)(0.067f * S16TOPOSFLOAT(sCableCarPtr->unk_0006)); } } } static void sub_8123D98(struct Sprite *sprite) { - if (gUnknown_02039274->unk_0001 != 255) + if (sCableCarPtr->unk_0001 != 255) { if (gSpecialVar_0x8004 == 0) { - sprite->pos1.x = sprite->data[0] - (u8)(0.14f * S16TOPOSFLOAT(gUnknown_02039274->unk_0006)); - sprite->pos1.y = sprite->data[1] - (u8)(0.067f * S16TOPOSFLOAT(gUnknown_02039274->unk_0006)); + sprite->pos1.x = sprite->data[0] - (u8)(0.14f * S16TOPOSFLOAT(sCableCarPtr->unk_0006)); + sprite->pos1.y = sprite->data[1] - (u8)(0.067f * S16TOPOSFLOAT(sCableCarPtr->unk_0006)); } else { - sprite->pos1.x = sprite->data[0] + (u8)(0.14f * S16TOPOSFLOAT(gUnknown_02039274->unk_0006)); - sprite->pos1.y = sprite->data[1] + (u8)(0.067f * S16TOPOSFLOAT(gUnknown_02039274->unk_0006)); + sprite->pos1.x = sprite->data[0] + (u8)(0.14f * S16TOPOSFLOAT(sCableCarPtr->unk_0006)); + sprite->pos1.y = sprite->data[1] + (u8)(0.067f * S16TOPOSFLOAT(sCableCarPtr->unk_0006)); } switch (sprite->data[2]) { @@ -680,30 +680,30 @@ static void sub_8123FBC(bool8 which) REG_WIN1V = 0; if (gSpecialVar_0x8004 == 0) { - gUnknown_02039274->unk_0014 = 0xb0; - gUnknown_02039274->unk_0015 = 0x10; - gUnknown_02039274->unk_000c = 0x00; - gUnknown_02039274->unk_000d = 0x50; - gUnknown_02039274->unk_0009 = 0; - gUnknown_02039274->unk_0009 = 0; + sCableCarPtr->unk_0014 = 0xb0; + sCableCarPtr->unk_0015 = 0x10; + sCableCarPtr->unk_000c = 0x00; + sCableCarPtr->unk_000d = 0x50; + sCableCarPtr->unk_0009 = 0; + sCableCarPtr->unk_0009 = 0; } else { - gUnknown_02039274->unk_0014 = 0x60; - gUnknown_02039274->unk_0015 = 0xe8; - gUnknown_02039274->unk_000c = 0x00; - gUnknown_02039274->unk_000d = 0x04; - gUnknown_02039274->unk_0009 = 0; - gUnknown_02039274->unk_0009 = 0; + sCableCarPtr->unk_0014 = 0x60; + sCableCarPtr->unk_0015 = 0xe8; + sCableCarPtr->unk_000c = 0x00; + sCableCarPtr->unk_000d = 0x04; + sCableCarPtr->unk_0009 = 0; + sCableCarPtr->unk_0009 = 0; } - REG_BG3HOFS = gUnknown_02039274->unk_0014; - REG_BG3VOFS = gUnknown_02039274->unk_0015; + REG_BG3HOFS = sCableCarPtr->unk_0014; + REG_BG3VOFS = sCableCarPtr->unk_0015; REG_BG2HOFS = 0; REG_BG2VOFS = 0; - REG_BG1HOFS = gUnknown_02039274->unk_000c; - REG_BG1VOFS = gUnknown_02039274->unk_000d; - REG_BG0HOFS = gUnknown_02039274->unk_0008; - REG_BG0VOFS = gUnknown_02039274->unk_0009; + REG_BG1HOFS = sCableCarPtr->unk_000c; + REG_BG1VOFS = sCableCarPtr->unk_000d; + REG_BG0HOFS = sCableCarPtr->unk_0008; + REG_BG0VOFS = sCableCarPtr->unk_0009; REG_BG0CNT = BGCNT_PRIORITY(1) | BGCNT_SCREENBASE(28) | BGCNT_WRAP; REG_BG1CNT = BGCNT_PRIORITY(2) | BGCNT_SCREENBASE(29) | BGCNT_WRAP; REG_BG2CNT = BGCNT_PRIORITY(3) | BGCNT_SCREENBASE(30) | BGCNT_WRAP; @@ -714,7 +714,7 @@ static void sub_8123FBC(bool8 which) } } -static void sub_8124118(void) +static void LoadSprites(void) { u8 spriteId; u8 i; @@ -767,12 +767,12 @@ static void sub_8124118(void) gSprites[spriteId].pos2.y = 4; gSprites[spriteId].data[0] = 0xc8; gSprites[spriteId].data[1] = 0x63; - gUnknown_02039274->unk_0002 = 7; - gUnknown_02039274->unk_0004 = 0x15e; + sCableCarPtr->unk_0002 = 7; + sCableCarPtr->unk_0004 = 0x15e; sub_807C9B4(2); break; case 1: - sub_8124F08(gUnknown_02039274->unk_00fc, eCableCar2->mtChimneyTilemap + 0x24, 0x18, 0x1a, 0x0c, 0x03); + sub_8124F08(sCableCarPtr->unk_00fc, eCableCar2->mtChimneyTilemap + 0x24, 0x18, 0x1a, 0x0c, 0x03); spriteId = AddPseudoFieldObject(playerGraphicsIds[gSaveBlock2.playerGender], sub_8123D98, 0x80, 0x27, 0x66); if (spriteId != MAX_SPRITES) { @@ -791,8 +791,8 @@ static void sub_8124118(void) gSprites[spriteId].pos2.y = 4; gSprites[spriteId].data[0] = 0x80; gSprites[spriteId].data[1] = 0x41; - gUnknown_02039274->unk_0002 = 2; - gUnknown_02039274->unk_0004 = 0x109; + sCableCarPtr->unk_0002 = 2; + sCableCarPtr->unk_0004 = 0x109; sub_807C9B4(7); break; } @@ -850,30 +850,30 @@ static void sub_812446C(void) u8 k; u8 offset; - for (i = 0, k = 0, offset = 0x24 * (gUnknown_02039274->unk_001b + 2); i < 3; i++) + for (i = 0, k = 0, offset = 0x24 * (sCableCarPtr->unk_001b + 2); i < 3; i++) { for (j = 0; j < 12; j++) { - gUnknown_02039274->unk_0022[i][j] = *(eCableCar2->mtChimneyTilemap + (offset++)); - gUnknown_02039274->unk_0022[i + 3][j] = eCableCar2->mtChimneyTilemap[k]; - gUnknown_02039274->unk_0022[i + 6][j] = (eCableCar2->mtChimneyTilemap + 0x24)[k]; + sCableCarPtr->unk_0022[i][j] = *(eCableCar2->mtChimneyTilemap + (offset++)); + sCableCarPtr->unk_0022[i + 3][j] = eCableCar2->mtChimneyTilemap[k]; + sCableCarPtr->unk_0022[i + 6][j] = (eCableCar2->mtChimneyTilemap + 0x24)[k]; k++; } } - gUnknown_02039274->unk_001b = (gUnknown_02039274->unk_001b + 1) % 3; + sCableCarPtr->unk_001b = (sCableCarPtr->unk_001b + 1) % 3; } static 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) + sCableCarPtr->unk_001c = (sCableCarPtr->unk_001c + 1) % 0x60; + sCableCarPtr->unk_0008 = sCableCarPtr->unk_001f - sCableCarPtr->unk_001d; + sCableCarPtr->unk_0009 = sCableCarPtr->unk_0020 - sCableCarPtr->unk_001e; + sCableCarPtr->unk_001d++; + if ((sCableCarPtr->unk_001d % 4) == 0) { - gUnknown_02039274->unk_001e++; + sCableCarPtr->unk_001e++; } - if (gUnknown_02039274->unk_001d > 16) + if (sCableCarPtr->unk_001d > 16) { sub_81245F4(); } @@ -881,15 +881,15 @@ static void sub_812453C(void) static 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) + sCableCarPtr->unk_001c = (sCableCarPtr->unk_001c + 1) % 0x60; + sCableCarPtr->unk_0008 = sCableCarPtr->unk_001f + sCableCarPtr->unk_001d; + sCableCarPtr->unk_0009 = sCableCarPtr->unk_0020 + sCableCarPtr->unk_001e; + sCableCarPtr->unk_001d++; + if ((sCableCarPtr->unk_001d % 4) == 0) { - gUnknown_02039274->unk_001e++; + sCableCarPtr->unk_001e++; } - if (gUnknown_02039274->unk_001d > 16) + if (sCableCarPtr->unk_001d > 16) { sub_812476C(); } @@ -899,29 +899,29 @@ static void sub_81245F4(void) { u8 i = 0; - gUnknown_02039274->unk_001d = gUnknown_02039274->unk_001e = 0; - gUnknown_02039274->unk_001f = gUnknown_02039274->unk_0008; - gUnknown_02039274->unk_0020 = gUnknown_02039274->unk_0009; - gUnknown_02039274->unk_0019 = (gUnknown_02039274->unk_0019 + 30) % 32; - gUnknown_02039274->unk_0018 -= 2; - gUnknown_0203927A = (gUnknown_02039274->unk_001a + 23) % 32; + sCableCarPtr->unk_001d = sCableCarPtr->unk_001e = 0; + sCableCarPtr->unk_001f = sCableCarPtr->unk_0008; + sCableCarPtr->unk_0020 = sCableCarPtr->unk_0009; + sCableCarPtr->unk_0019 = (sCableCarPtr->unk_0019 + 30) % 32; + sCableCarPtr->unk_0018 -= 2; + gUnknown_0203927A = (sCableCarPtr->unk_001a + 23) % 32; for (i = 0; i < 9; i++) { - gUnknown_02039278 = gUnknown_02039274->unk_0019; + gUnknown_02039278 = sCableCarPtr->unk_0019; gUnknown_02039279 = (gUnknown_0203927A + i) % 32; - gUnknown_02039274->unk_00fc[gUnknown_02039279][gUnknown_02039278] = gUnknown_02039274->unk_0022[i][gUnknown_02039274->unk_0018]; + sCableCarPtr->unk_00fc[gUnknown_02039279][gUnknown_02039278] = sCableCarPtr->unk_0022[i][sCableCarPtr->unk_0018]; gUnknown_02039278 = (gUnknown_02039278 + 1) % 32; - gUnknown_02039274->unk_00fc[gUnknown_02039279][gUnknown_02039278] = gUnknown_02039274->unk_0022[i][gUnknown_02039274->unk_0018 + 1]; + sCableCarPtr->unk_00fc[gUnknown_02039279][gUnknown_02039278] = sCableCarPtr->unk_0022[i][sCableCarPtr->unk_0018 + 1]; } - gUnknown_02039278 = (gUnknown_02039274->unk_0019 + 30) % 32; - sub_8124E7C(gUnknown_02039274->unk_00fc, 0, gUnknown_02039278, 0, 2, 32); - if (gUnknown_02039274->unk_0018 == 0) + gUnknown_02039278 = (sCableCarPtr->unk_0019 + 30) % 32; + sub_8124E7C(sCableCarPtr->unk_00fc, 0, gUnknown_02039278, 0, 2, 32); + if (sCableCarPtr->unk_0018 == 0) { - gUnknown_02039274->unk_001a = (gUnknown_02039274->unk_001a + 29) % 32; - gUnknown_02039274->unk_0018 = 12; + sCableCarPtr->unk_001a = (sCableCarPtr->unk_001a + 29) % 32; + sCableCarPtr->unk_0018 = 12; sub_812446C(); - gUnknown_02039278 = (gUnknown_02039274->unk_001a + 1) % 32; - sub_8124E7C(gUnknown_02039274->unk_00fc, 0, 0, gUnknown_02039278, 32, 9); + gUnknown_02039278 = (sCableCarPtr->unk_001a + 1) % 32; + sub_8124E7C(sCableCarPtr->unk_00fc, 0, 0, gUnknown_02039278, 32, 9); } } @@ -929,26 +929,26 @@ static void sub_812476C(void) { u8 i = 0; - gUnknown_02039274->unk_001d = gUnknown_02039274->unk_001e = 0; - gUnknown_02039274->unk_001f = gUnknown_02039274->unk_0008; - gUnknown_02039274->unk_0020 = gUnknown_02039274->unk_0009; - gUnknown_02039274->unk_0019 = (gUnknown_02039274->unk_0019 + 2) % 32; - gUnknown_02039274->unk_0018 += 2; - gUnknown_0203927D = gUnknown_02039274->unk_001a; + sCableCarPtr->unk_001d = sCableCarPtr->unk_001e = 0; + sCableCarPtr->unk_001f = sCableCarPtr->unk_0008; + sCableCarPtr->unk_0020 = sCableCarPtr->unk_0009; + sCableCarPtr->unk_0019 = (sCableCarPtr->unk_0019 + 2) % 32; + sCableCarPtr->unk_0018 += 2; + gUnknown_0203927D = sCableCarPtr->unk_001a; for (i = 0; i < 9; i++) { - gUnknown_0203927B = gUnknown_02039274->unk_0019; + gUnknown_0203927B = sCableCarPtr->unk_0019; gUnknown_0203927C = (gUnknown_0203927D + i) % 32; - gUnknown_02039274->unk_00fc[gUnknown_0203927C][gUnknown_0203927B] = gUnknown_02039274->unk_0022[i][gUnknown_02039274->unk_0018]; + sCableCarPtr->unk_00fc[gUnknown_0203927C][gUnknown_0203927B] = sCableCarPtr->unk_0022[i][sCableCarPtr->unk_0018]; gUnknown_0203927B = (gUnknown_0203927B + 1) % 32; - gUnknown_02039274->unk_00fc[gUnknown_0203927C][gUnknown_0203927B] = gUnknown_02039274->unk_0022[i][gUnknown_02039274->unk_0018 + 1]; + sCableCarPtr->unk_00fc[gUnknown_0203927C][gUnknown_0203927B] = sCableCarPtr->unk_0022[i][sCableCarPtr->unk_0018 + 1]; } - gUnknown_0203927C = (gUnknown_02039274->unk_001a + 23) % 32; - sub_8124E7C(gUnknown_02039274->unk_00fc, 0, gUnknown_02039274->unk_0019, gUnknown_0203927C, 2, 9); - if (gUnknown_02039274->unk_0018 == 10) + gUnknown_0203927C = (sCableCarPtr->unk_001a + 23) % 32; + sub_8124E7C(sCableCarPtr->unk_00fc, 0, sCableCarPtr->unk_0019, gUnknown_0203927C, 2, 9); + if (sCableCarPtr->unk_0018 == 10) { - gUnknown_02039274->unk_001a = (gUnknown_02039274->unk_001a + 3) % 32; - gUnknown_02039274->unk_0018 = 0xfe; + sCableCarPtr->unk_001a = (sCableCarPtr->unk_001a + 3) % 32; + sCableCarPtr->unk_0018 = 0xfe; sub_812446C(); } } @@ -959,21 +959,21 @@ static void sub_81248AC(u8 a0) { case 0: default: - gUnknown_02039274->unk_001b = 2; - gUnknown_02039274->unk_0019 = 0; - gUnknown_02039274->unk_001a = 20; - gUnknown_02039274->unk_0018 = 12; + sCableCarPtr->unk_001b = 2; + sCableCarPtr->unk_0019 = 0; + sCableCarPtr->unk_001a = 20; + sCableCarPtr->unk_0018 = 12; sub_812446C(); sub_81245F4(); break; case 1: - gUnknown_02039274->unk_001b = 2; - gUnknown_02039274->unk_0019 = 28; - gUnknown_02039274->unk_001a = 20; - gUnknown_02039274->unk_0018 = 4; + sCableCarPtr->unk_001b = 2; + sCableCarPtr->unk_0019 = 28; + sCableCarPtr->unk_001a = 20; + sCableCarPtr->unk_0018 = 4; sub_812446C(); sub_812476C(); break; } - gUnknown_02039274->unk_001c = 0; + sCableCarPtr->unk_001c = 0; } -- cgit v1.2.3 From e28c11ef9518c80e23ce0076b8ba9be4cb140015 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 5 Jan 2018 23:07:57 -0500 Subject: Update delcarations of cable car util funtions --- include/cable_car_util.h | 4 ++-- src/scene/cable_car.c | 18 +++++++++--------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/include/cable_car_util.h b/include/cable_car_util.h index d109190b0..f1f52bb3c 100644 --- a/include/cable_car_util.h +++ b/include/cable_car_util.h @@ -7,7 +7,7 @@ // Exported ROM declarations -void sub_8124F08(void *dest, const u16 *src, u8 x, u8 y, u8 width, u8 height); -void sub_8124E7C(void *dest, u16 a1, u8 a2, u8 a3, u8 a4, u8 a5); +void sub_8124F08(u16 dest[][32], const u16 *src, u8 x, u8 y, u8 width, u8 height); +void sub_8124E7C(u16 dest[][32], 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 288c5d40d..f57233556 100644 --- a/src/scene/cable_car.c +++ b/src/scene/cable_car.c @@ -59,7 +59,7 @@ struct CableCarEwramStruct1 { u16 unk_0022[9][12]; u8 filler_00fa[2]; u16 unk_00fc[0x20][0x20]; - u16 unk_08fc[0x400]; + u16 unk_08fc[0x20][0x20]; }; // size 0x10FC struct CableCarEwramStruct2 { @@ -268,8 +268,8 @@ static void CableCarMainCallback_Setup(void) } break; case 5: - sub_8124F08((u16 *)BG_SCREEN_ADDR(29), eCableCar2->treeTilemap, 0, 17, 32, 15); - sub_8124F08((u16 *)BG_SCREEN_ADDR(30), eCableCar2->mountainTilemap, 0, 0, 30, 20); + sub_8124F08((void *)BG_SCREEN_ADDR(29), eCableCar2->treeTilemap, 0, 17, 32, 15); + sub_8124F08((void *)BG_SCREEN_ADDR(30), eCableCar2->mountainTilemap, 0, 0, 30, 20); sub_8124F08(sCableCarPtr->unk_08fc, gCableCarPylonHookTilemapEntries, 0, 0, 5, 2); sub_8124F08(sCableCarPtr->unk_08fc, eCableCar2->pylonStemTilemap, 0, 2, 2, 20); gMain.state++; @@ -479,14 +479,14 @@ static void sub_8123AF8(u8 taskId) sCableCarPtr->unk_0015 = 192; break; case 32: - sCableCarPtr->unk_08fc[2] = (gCableCarPylonHookTilemapEntries + 2)[0]; - sCableCarPtr->unk_08fc[3] = (gCableCarPylonHookTilemapEntries + 2)[1]; - sCableCarPtr->unk_08fc[34] = (gCableCarPylonHookTilemapEntries + 2)[5]; - sCableCarPtr->unk_08fc[35] = (gCableCarPylonHookTilemapEntries + 2)[6]; + sCableCarPtr->unk_08fc[0][2] = (gCableCarPylonHookTilemapEntries + 2)[0]; + sCableCarPtr->unk_08fc[0][3] = (gCableCarPylonHookTilemapEntries + 2)[1]; + sCableCarPtr->unk_08fc[1][2] = (gCableCarPylonHookTilemapEntries + 2)[5]; + sCableCarPtr->unk_08fc[1][3] = (gCableCarPylonHookTilemapEntries + 2)[6]; break; case 40: - sCableCarPtr->unk_08fc[4] = (gCableCarPylonHookTilemapEntries + 4)[0]; - sCableCarPtr->unk_08fc[36] = (gCableCarPylonHookTilemapEntries + 4)[5]; + sCableCarPtr->unk_08fc[0][4] = (gCableCarPylonHookTilemapEntries + 4)[0]; + sCableCarPtr->unk_08fc[1][4] = (gCableCarPylonHookTilemapEntries + 4)[5]; break; } } -- cgit v1.2.3 From 8d035c81528d172570338ec82c07770e7ebcfe50 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 5 Jan 2018 22:15:05 -0700 Subject: cable car util --- asm/cable_car_util.s | 162 -------------------------------------------- include/cable_car_util.h | 4 +- ld_script.txt | 2 +- src/engine/cable_car_util.c | 46 +++++++++++++ src/scene/cable_car.c | 48 ++++++------- 5 files changed, 73 insertions(+), 189 deletions(-) delete mode 100644 asm/cable_car_util.s create mode 100644 src/engine/cable_car_util.c diff --git a/asm/cable_car_util.s b/asm/cable_car_util.s deleted file mode 100644 index 50ef19dec..000000000 --- a/asm/cable_car_util.s +++ /dev/null @@ -1,162 +0,0 @@ - .include "constants/gba_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_8124E7C -sub_8124E7C: @ 8124E7C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - mov r10, r0 - ldr r0, [sp, 0x24] - ldr r4, [sp, 0x28] - lsls r1, 16 - lsrs r1, 16 - mov r9, r1 - lsls r2, 24 - lsrs r2, 24 - str r2, [sp] - lsls r3, 24 - lsls r0, 24 - lsrs r7, r0, 24 - lsls r4, 24 - lsrs r4, 24 - mov r8, r4 - movs r0, 0 - lsrs r4, r3, 24 - cmp r0, r8 - bcs _08124EF6 -_08124EAE: - ldr r2, [sp] - movs r3, 0 - adds r6, r4, 0x1 - adds r0, 0x1 - mov r12, r0 - cmp r3, r7 - bcs _08124EE0 - lsls r5, r4, 6 -_08124EBE: - lsls r0, r2, 1 - adds r0, r5 - add r0, r10 - mov r1, r9 - strh r1, [r0] - adds r1, r2, 0x1 - adds r0, r1, 0 - asrs r0, 5 - lsls r0, 5 - subs r0, r1, r0 - lsls r0, 24 - lsrs r2, r0, 24 - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, r7 - bcc _08124EBE -_08124EE0: - adds r0, r6, 0 - asrs r0, 5 - lsls r0, 5 - subs r0, r6, r0 - lsls r0, 24 - lsrs r4, r0, 24 - mov r1, r12 - lsls r0, r1, 24 - lsrs r0, 24 - cmp r0, r8 - bcc _08124EAE -_08124EF6: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8124E7C - - thumb_func_start sub_8124F08 -sub_8124F08: @ 8124F08 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - mov r10, r0 - ldr r0, [sp, 0x24] - ldr r4, [sp, 0x28] - lsls r2, 24 - lsrs r2, 24 - str r2, [sp] - lsls r3, 24 - lsls r0, 24 - lsrs r0, 24 - mov r12, r0 - lsls r4, 24 - lsrs r4, 24 - mov r9, r4 - movs r0, 0 - adds r5, r1, 0 - lsrs r4, r3, 24 - cmp r0, r9 - bcs _08124F82 -_08124F38: - ldr r2, [sp] - movs r3, 0 - adds r7, r4, 0x1 - adds r0, 0x1 - mov r8, r0 - cmp r3, r12 - bcs _08124F6C - lsls r6, r4, 6 -_08124F48: - lsls r0, r2, 1 - adds r0, r6 - add r0, r10 - ldrh r1, [r5] - strh r1, [r0] - adds r5, 0x2 - adds r1, r2, 0x1 - adds r0, r1, 0 - asrs r0, 5 - lsls r0, 5 - subs r0, r1, r0 - lsls r0, 24 - lsrs r2, r0, 24 - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, r12 - bcc _08124F48 -_08124F6C: - adds r0, r7, 0 - asrs r0, 5 - lsls r0, 5 - subs r0, r7, r0 - lsls r0, 24 - lsrs r4, r0, 24 - mov r1, r8 - lsls r0, r1, 24 - lsrs r0, 24 - cmp r0, r9 - bcc _08124F38 -_08124F82: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8124F08 - - .align 2, 0 @ Don't pad with nop. diff --git a/include/cable_car_util.h b/include/cable_car_util.h index f1f52bb3c..7126331a1 100644 --- a/include/cable_car_util.h +++ b/include/cable_car_util.h @@ -7,7 +7,7 @@ // Exported ROM declarations -void sub_8124F08(u16 dest[][32], const u16 *src, u8 x, u8 y, u8 width, u8 height); -void sub_8124E7C(u16 dest[][32], u16 a1, u8 a2, u8 a3, u8 a4, u8 a5); +void CableCarUtil_FillWrapped(void *dest, u16 value, u8 x, u8 y, u8 width, u8 height); +void CableCarUtil_CopyWrapped(void *dest, const u16 *src, u8 x, u8 y, u8 width, u8 height); #endif //GUARD_CABLE_CAR_UTIL_H diff --git a/ld_script.txt b/ld_script.txt index 07345eb18..dc7f4784f 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -349,7 +349,7 @@ SECTIONS { src/field/choose_party.o(.text); src/scene/cable_car.o(.text); asm/roulette_util.o(.text); - asm/cable_car_util.o(.text); + src/engine/cable_car_util.o(.text); src/unused_8124F94.o(.text); src/engine/save.o(.text); src/engine/mystery_event_script.o(.text); diff --git a/src/engine/cable_car_util.c b/src/engine/cable_car_util.c new file mode 100644 index 000000000..27f703b42 --- /dev/null +++ b/src/engine/cable_car_util.c @@ -0,0 +1,46 @@ +#include "global.h" +#include "cable_car_util.h" + +// static types + +// static declarations + +// rodata + +// text + +void CableCarUtil_FillWrapped(void *dest, u16 value, u8 x, u8 y, u8 width, u8 height) +{ + u8 i; + u8 j; + u8 _x; + u8 _y; + + for (i = 0, _y = y; i < height; i++) + { + for (_x = x, j = 0; j < width; j++) + { + *(u16 *)&((u8 *)dest)[_y * 64 + _x * 2] = value; + _x = (_x + 1) % 32; + } + _y = (_y + 1) % 32; + } +} +void CableCarUtil_CopyWrapped(void *dest, const u16 *src, u8 x, u8 y, u8 width, u8 height) +{ + u8 i; + u8 j; + u8 _x; + u8 _y; + const u16 *_src; + + for (i = 0, _src = src, _y = y; i < height; i++) + { + for (_x = x, j = 0; j < width; j++) + { + *(u16 *)&((u8 *)dest)[_y * 64 + _x * 2] = *_src++; + _x = (_x + 1) % 32; + } + _y = (_y + 1) % 32; + } +} diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c index f57233556..52a0aeebf 100644 --- a/src/scene/cable_car.c +++ b/src/scene/cable_car.c @@ -268,22 +268,22 @@ static void CableCarMainCallback_Setup(void) } break; case 5: - sub_8124F08((void *)BG_SCREEN_ADDR(29), eCableCar2->treeTilemap, 0, 17, 32, 15); - sub_8124F08((void *)BG_SCREEN_ADDR(30), eCableCar2->mountainTilemap, 0, 0, 30, 20); - sub_8124F08(sCableCarPtr->unk_08fc, gCableCarPylonHookTilemapEntries, 0, 0, 5, 2); - sub_8124F08(sCableCarPtr->unk_08fc, eCableCar2->pylonStemTilemap, 0, 2, 2, 20); + CableCarUtil_CopyWrapped((void *)BG_SCREEN_ADDR(29), eCableCar2->treeTilemap, 0, 17, 32, 15); + CableCarUtil_CopyWrapped((void *)BG_SCREEN_ADDR(30), eCableCar2->mountainTilemap, 0, 0, 30, 20); + CableCarUtil_CopyWrapped(sCableCarPtr->unk_08fc, gCableCarPylonHookTilemapEntries, 0, 0, 5, 2); + CableCarUtil_CopyWrapped(sCableCarPtr->unk_08fc, eCableCar2->pylonStemTilemap, 0, 2, 2, 20); gMain.state++; break; case 6: sub_81248AC(gSpecialVar_0x8004); - sub_8124F08(sCableCarPtr->unk_00fc, eCableCar2->mtChimneyTilemap + 0x48, 0, 14, 12, 3); - sub_8124F08(sCableCarPtr->unk_00fc, eCableCar2->mtChimneyTilemap + 0x6C, 12, 17, 12, 3); - sub_8124F08(sCableCarPtr->unk_00fc, eCableCar2->mtChimneyTilemap + 0x90, 24, 20, 12, 3); - sub_8124F08(sCableCarPtr->unk_00fc, eCableCar2->mtChimneyTilemap + 0x00, 0, 17, 12, 3); - sub_8124F08(sCableCarPtr->unk_00fc, eCableCar2->mtChimneyTilemap + 0x24, 0, 20, 12, 3); - sub_8124F08(sCableCarPtr->unk_00fc, eCableCar2->mtChimneyTilemap + 0x00, 12, 20, 12, 3); - sub_8124F08(sCableCarPtr->unk_00fc, eCableCar2->mtChimneyTilemap + 0x24, 12, 23, 12, 3); - sub_8124F08(sCableCarPtr->unk_00fc, eCableCar2->mtChimneyTilemap + 0x00, 24, 23, 12, 3); + CableCarUtil_CopyWrapped(sCableCarPtr->unk_00fc, eCableCar2->mtChimneyTilemap + 0x48, 0, 14, 12, 3); + CableCarUtil_CopyWrapped(sCableCarPtr->unk_00fc, eCableCar2->mtChimneyTilemap + 0x6C, 12, 17, 12, 3); + CableCarUtil_CopyWrapped(sCableCarPtr->unk_00fc, eCableCar2->mtChimneyTilemap + 0x90, 24, 20, 12, 3); + CableCarUtil_CopyWrapped(sCableCarPtr->unk_00fc, eCableCar2->mtChimneyTilemap + 0x00, 0, 17, 12, 3); + CableCarUtil_CopyWrapped(sCableCarPtr->unk_00fc, eCableCar2->mtChimneyTilemap + 0x24, 0, 20, 12, 3); + CableCarUtil_CopyWrapped(sCableCarPtr->unk_00fc, eCableCar2->mtChimneyTilemap + 0x00, 12, 20, 12, 3); + CableCarUtil_CopyWrapped(sCableCarPtr->unk_00fc, eCableCar2->mtChimneyTilemap + 0x24, 12, 23, 12, 3); + CableCarUtil_CopyWrapped(sCableCarPtr->unk_00fc, eCableCar2->mtChimneyTilemap + 0x00, 24, 23, 12, 3); gMain.state++; break; case 7: @@ -435,17 +435,17 @@ static void sub_81239E4(u8 taskId) switch (sCableCarPtr->unk_0014) { case 175: - sub_8124E7C(sCableCarPtr->unk_08fc, 0, 0, 22, 2, 10); + CableCarUtil_FillWrapped(sCableCarPtr->unk_08fc, 0, 0, 22, 2, 10); break; case 40: - sub_8124E7C(sCableCarPtr->unk_08fc, 0, 3, 0, 2, 2); + CableCarUtil_FillWrapped(sCableCarPtr->unk_08fc, 0, 3, 0, 2, 2); break; case 32: - sub_8124E7C(sCableCarPtr->unk_08fc, 0, 2, 0, 1, 2); + CableCarUtil_FillWrapped(sCableCarPtr->unk_08fc, 0, 2, 0, 1, 2); break; case 16: - sub_8124F08(sCableCarPtr->unk_08fc, gCableCarPylonHookTilemapEntries, 0, 0, 5, 2); - sub_8124F08(sCableCarPtr->unk_08fc, eCableCar2->pylonStemTilemap, 0, 2, 2, 30); + CableCarUtil_CopyWrapped(sCableCarPtr->unk_08fc, gCableCarPylonHookTilemapEntries, 0, 0, 5, 2); + CableCarUtil_CopyWrapped(sCableCarPtr->unk_08fc, eCableCar2->pylonStemTilemap, 0, 2, 2, 30); sCableCarPtr->unk_0015 = 64; break; } @@ -471,11 +471,11 @@ static void sub_8123AF8(u8 taskId) switch (sCableCarPtr->unk_0014) { case 176: - sub_8124F08(sCableCarPtr->unk_08fc, eCableCar2->pylonStemTilemap, 0, 2, 2, 30); + CableCarUtil_CopyWrapped(sCableCarPtr->unk_08fc, eCableCar2->pylonStemTilemap, 0, 2, 2, 30); break; case 16: - sub_8124E7C(sCableCarPtr->unk_08fc, 0, 2, 0, 3, 2); - sub_8124E7C(sCableCarPtr->unk_08fc, 0, 0, 22, 2, 10); + CableCarUtil_FillWrapped(sCableCarPtr->unk_08fc, 0, 2, 0, 3, 2); + CableCarUtil_FillWrapped(sCableCarPtr->unk_08fc, 0, 0, 22, 2, 10); sCableCarPtr->unk_0015 = 192; break; case 32: @@ -772,7 +772,7 @@ static void LoadSprites(void) sub_807C9B4(2); break; case 1: - sub_8124F08(sCableCarPtr->unk_00fc, eCableCar2->mtChimneyTilemap + 0x24, 0x18, 0x1a, 0x0c, 0x03); + CableCarUtil_CopyWrapped(sCableCarPtr->unk_00fc, eCableCar2->mtChimneyTilemap + 0x24, 0x18, 0x1a, 0x0c, 0x03); spriteId = AddPseudoFieldObject(playerGraphicsIds[gSaveBlock2.playerGender], sub_8123D98, 0x80, 0x27, 0x66); if (spriteId != MAX_SPRITES) { @@ -914,14 +914,14 @@ static void sub_81245F4(void) sCableCarPtr->unk_00fc[gUnknown_02039279][gUnknown_02039278] = sCableCarPtr->unk_0022[i][sCableCarPtr->unk_0018 + 1]; } gUnknown_02039278 = (sCableCarPtr->unk_0019 + 30) % 32; - sub_8124E7C(sCableCarPtr->unk_00fc, 0, gUnknown_02039278, 0, 2, 32); + CableCarUtil_FillWrapped(sCableCarPtr->unk_00fc, 0, gUnknown_02039278, 0, 2, 32); if (sCableCarPtr->unk_0018 == 0) { sCableCarPtr->unk_001a = (sCableCarPtr->unk_001a + 29) % 32; sCableCarPtr->unk_0018 = 12; sub_812446C(); gUnknown_02039278 = (sCableCarPtr->unk_001a + 1) % 32; - sub_8124E7C(sCableCarPtr->unk_00fc, 0, 0, gUnknown_02039278, 32, 9); + CableCarUtil_FillWrapped(sCableCarPtr->unk_00fc, 0, 0, gUnknown_02039278, 32, 9); } } @@ -944,7 +944,7 @@ static void sub_812476C(void) sCableCarPtr->unk_00fc[gUnknown_0203927C][gUnknown_0203927B] = sCableCarPtr->unk_0022[i][sCableCarPtr->unk_0018 + 1]; } gUnknown_0203927C = (sCableCarPtr->unk_001a + 23) % 32; - sub_8124E7C(sCableCarPtr->unk_00fc, 0, sCableCarPtr->unk_0019, gUnknown_0203927C, 2, 9); + CableCarUtil_FillWrapped(sCableCarPtr->unk_00fc, 0, sCableCarPtr->unk_0019, gUnknown_0203927C, 2, 9); if (sCableCarPtr->unk_0018 == 10) { sCableCarPtr->unk_001a = (sCableCarPtr->unk_001a + 3) % 32; -- cgit v1.2.3 From e03aeeec0de589ce361eb37edb4fc091f0959a1a Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 6 Jan 2018 00:17:11 -0500 Subject: Rename vars in cable car util --- src/engine/cable_car_util.c | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/src/engine/cable_car_util.c b/src/engine/cable_car_util.c index 27f703b42..02bfbc195 100644 --- a/src/engine/cable_car_util.c +++ b/src/engine/cable_car_util.c @@ -9,38 +9,39 @@ // text -void CableCarUtil_FillWrapped(void *dest, u16 value, u8 x, u8 y, u8 width, u8 height) +void CableCarUtil_FillWrapped(void *dest, u16 value, u8 left, u8 top, u8 width, u8 height) { u8 i; u8 j; - u8 _x; - u8 _y; + u8 x; + u8 y; - for (i = 0, _y = y; i < height; i++) + for (i = 0, y = top; i < height; i++) { - for (_x = x, j = 0; j < width; j++) + for (x = left, j = 0; j < width; j++) { - *(u16 *)&((u8 *)dest)[_y * 64 + _x * 2] = value; - _x = (_x + 1) % 32; + *(u16 *)&((u8 *)dest)[y * 64 + x * 2] = value; + x = (x + 1) % 32; } - _y = (_y + 1) % 32; + y = (y + 1) % 32; } } -void CableCarUtil_CopyWrapped(void *dest, const u16 *src, u8 x, u8 y, u8 width, u8 height) + +void CableCarUtil_CopyWrapped(void *dest, const u16 *src, u8 left, u8 top, u8 width, u8 height) { u8 i; u8 j; - u8 _x; - u8 _y; + u8 x; + u8 y; const u16 *_src; - for (i = 0, _src = src, _y = y; i < height; i++) + for (i = 0, _src = src, y = top; i < height; i++) { - for (_x = x, j = 0; j < width; j++) + for (x = left, j = 0; j < width; j++) { - *(u16 *)&((u8 *)dest)[_y * 64 + _x * 2] = *_src++; - _x = (_x + 1) % 32; + *(u16 *)&((u8 *)dest)[y * 64 + x * 2] = *_src++; + x = (x + 1) % 32; } - _y = (_y + 1) % 32; + y = (y + 1) % 32; } } -- cgit v1.2.3