From 8c54cccc993ab617ac8bbfb1fc6347484640c441 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 14 Oct 2017 19:03:16 -0400 Subject: sub_81231EC --- src/scene/cable_car.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 src/scene/cable_car.c (limited to 'src') 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 --- src/field/field_weather.c | 48 ----------- src/scene/cable_car.c | 204 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 204 insertions(+), 48 deletions(-) (limited to 'src') 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; + } +} -- 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 --- src/scene/cable_car.c | 37 ++++++++++++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) (limited to 'src') 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 --- src/scene/cable_car.c | 85 +++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 82 insertions(+), 3 deletions(-) (limited to 'src') 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 --- src/scene/cable_car.c | 45 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) (limited to 'src') 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 --- src/scene/cable_car.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) (limited to 'src') 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 --- src/scene/cable_car.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'src') 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 --- src/scene/cable_car.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'src') 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 --- src/scene/cable_car.c | 44 ++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 40 insertions(+), 4 deletions(-) (limited to 'src') 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 --- src/scene/cable_car.c | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) (limited to 'src') 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 --- src/scene/cable_car.c | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) (limited to 'src') 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 --- src/scene/cable_car.c | 70 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) (limited to 'src') 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 --- src/scene/cable_car.c | 84 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 83 insertions(+), 1 deletion(-) (limited to 'src') 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 --- src/scene/cable_car.c | 214 ++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 157 insertions(+), 57 deletions(-) (limited to 'src') 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 --- src/scene/cable_car.c | 129 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 129 insertions(+) (limited to 'src') 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(-) (limited to 'src') 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 --- src/scene/cable_car.c | 54 +++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 46 insertions(+), 8 deletions(-) (limited to 'src') 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 --- src/scene/cable_car.c | 40 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 37 insertions(+), 3 deletions(-) (limited to 'src') 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 --- src/scene/cable_car.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'src') 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 --- src/scene/cable_car.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'src') 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 --- src/scene/cable_car.c | 106 ++++++++++++++++++++++++-------------------------- 1 file changed, 50 insertions(+), 56 deletions(-) (limited to 'src') 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 --- src/scene/cable_car.c | 352 +++++++++++++++++++++++++------------------------- 1 file changed, 176 insertions(+), 176 deletions(-) (limited to 'src') 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 --- src/scene/cable_car.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'src') 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 --- src/engine/cable_car_util.c | 46 +++++++++++++++++++++++++++++++++++++++++++ src/scene/cable_car.c | 48 ++++++++++++++++++++++----------------------- 2 files changed, 70 insertions(+), 24 deletions(-) create mode 100644 src/engine/cable_car_util.c (limited to 'src') 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(-) (limited to 'src') 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