From cf7ffa568a2a09c761bae6aa4c70b8d8913c3e81 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Tue, 9 Jan 2018 23:37:26 -0600 Subject: rename unknown_task to scanline_effect --- src/battle/anim/draw.c | 2 +- src/battle/battle_2.c | 2 +- src/battle/battle_transition.c | 2 +- src/battle/reshow_battle_screen.c | 2 +- src/contest.c | 2 +- src/debug/matsuda_debug_menu.c | 2 +- src/easy_chat_1.c | 2 +- src/easy_chat_2.c | 2 +- src/engine/main.c | 2 +- src/engine/main_menu.c | 2 +- src/engine/reset_rtc_screen.c | 2 +- src/engine/trainer_card.c | 2 +- src/field/diploma.c | 2 +- src/field/field_screen_effect.c | 2 +- src/field/item_menu.c | 2 +- src/field/overworld.c | 2 +- src/field/party_menu.c | 2 +- src/field/pokeblock.c | 2 +- src/field/shop.c | 2 +- src/field/start_menu.c | 2 +- src/field/starter_choose.c | 2 +- src/field/wallclock.c | 2 +- src/pokemon/mail.c | 2 +- src/pokemon/pokedex.c | 2 +- src/pokemon/pokemon_summary_screen.c | 2 +- src/pokenav_before.c | 2 +- src/roulette.c | 2 +- src/scanline_effect.c | 235 +++++++++++++++++++++++++++++++++++ src/scene/cable_car.c | 2 +- src/scene/contest_painting.c | 2 +- src/scene/evolution_scene.c | 2 +- src/scene/intro.c | 2 +- src/scene/intro_credits_graphics.c | 2 +- src/scene/title_screen.c | 2 +- src/unknown_task.c | 235 ----------------------------------- 35 files changed, 268 insertions(+), 268 deletions(-) create mode 100644 src/scanline_effect.c delete mode 100644 src/unknown_task.c (limited to 'src') diff --git a/src/battle/anim/draw.c b/src/battle/anim/draw.c index 3adb62e06..0508eed8c 100755 --- a/src/battle/anim/draw.c +++ b/src/battle/anim/draw.c @@ -3,7 +3,7 @@ #include "trig.h" #include "battle_anim.h" #include "sound.h" -#include "unknown_task.h" +#include "scanline_effect.h" extern s16 gBattleAnimArgs[]; extern u8 gAnimBankAttacker; diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c index 249b67e0d..20daf4052 100644 --- a/src/battle/battle_2.c +++ b/src/battle/battle_2.c @@ -34,7 +34,7 @@ #include "trainer.h" #include "trig.h" #include "tv.h" -#include "unknown_task.h" +#include "scanline_effect.h" #include "util.h" #include "constants/battle_move_effects.h" #include "constants/items.h" diff --git a/src/battle/battle_transition.c b/src/battle/battle_transition.c index 985f43945..48ef86fa2 100644 --- a/src/battle/battle_transition.c +++ b/src/battle/battle_transition.c @@ -13,7 +13,7 @@ #include "trainer.h" #include "field_camera.h" #include "ewram.h" -#include "unknown_task.h" +#include "scanline_effect.h" void sub_807DE10(void); void dp12_8087EA4(void); diff --git a/src/battle/reshow_battle_screen.c b/src/battle/reshow_battle_screen.c index 42bb3ba7f..83dad5f60 100644 --- a/src/battle/reshow_battle_screen.c +++ b/src/battle/reshow_battle_screen.c @@ -3,7 +3,7 @@ #include "battle_anim.h" #include "palette.h" #include "main.h" -#include "unknown_task.h" +#include "scanline_effect.h" #include "text.h" #include "rom_8077ABC.h" #include "data2.h" diff --git a/src/contest.c b/src/contest.c index 8985d6490..9f8fe976a 100644 --- a/src/contest.c +++ b/src/contest.c @@ -29,7 +29,7 @@ #include "task.h" #include "text.h" #include "tv.h" -#include "unknown_task.h" +#include "scanline_effect.h" #include "util.h" extern u8 AreMovesContestCombo(u16, u16); // I don't think this is a bool diff --git a/src/debug/matsuda_debug_menu.c b/src/debug/matsuda_debug_menu.c index 0585c4e00..25890e3ea 100644 --- a/src/debug/matsuda_debug_menu.c +++ b/src/debug/matsuda_debug_menu.c @@ -14,7 +14,7 @@ #include "string_util.h" #include "task.h" #include "text.h" -#include "unknown_task.h" +#include "scanline_effect.h" #include "ewram.h" extern u8 gUnknown_0203856C; diff --git a/src/easy_chat_1.c b/src/easy_chat_1.c index cb0e98b71..a5fc1dee9 100644 --- a/src/easy_chat_1.c +++ b/src/easy_chat_1.c @@ -14,7 +14,7 @@ #include "sprite.h" #include "string_util.h" #include "strings.h" -#include "unknown_task.h" +#include "scanline_effect.h" extern const struct WindowTemplate gWindowTemplate_81E6D54; extern const struct WindowTemplate gWindowTemplate_81E6DA8; diff --git a/src/easy_chat_2.c b/src/easy_chat_2.c index 66af7fc04..48e005cab 100644 --- a/src/easy_chat_2.c +++ b/src/easy_chat_2.c @@ -17,7 +17,7 @@ #include "strings.h" #include "strings2.h" #include "trig.h" -#include "unknown_task.h" +#include "scanline_effect.h" extern void sub_8095C8C(); extern void sub_809D104(void *, u16, u16, const void *, u16, u16, u16, u16); diff --git a/src/engine/main.c b/src/engine/main.c index 82a5fffb4..d1ccffea0 100644 --- a/src/engine/main.c +++ b/src/engine/main.c @@ -13,7 +13,7 @@ #include "rtc.h" #include "siirtc.h" #include "sound.h" -#include "unknown_task.h" +#include "scanline_effect.h" extern struct SoundInfo gSoundInfo; extern u32 IntrMain[]; diff --git a/src/engine/main_menu.c b/src/engine/main_menu.c index 715570fe0..3402d93bc 100644 --- a/src/engine/main_menu.c +++ b/src/engine/main_menu.c @@ -21,7 +21,7 @@ #include "task.h" #include "text.h" #include "title_screen.h" -#include "unknown_task.h" +#include "scanline_effect.h" #include "ewram.h" #define BirchSpeechUpdateWindowText() ((u8)Menu_UpdateWindowTextOverrideLineLength(24)) diff --git a/src/engine/reset_rtc_screen.c b/src/engine/reset_rtc_screen.c index 6e9efd342..5297b3378 100644 --- a/src/engine/reset_rtc_screen.c +++ b/src/engine/reset_rtc_screen.c @@ -13,7 +13,7 @@ #include "strings2.h" #include "task.h" #include "text.h" -#include "unknown_task.h" +#include "scanline_effect.h" struct ResetRtcStruct { diff --git a/src/engine/trainer_card.c b/src/engine/trainer_card.c index 70942fc29..f1b115610 100644 --- a/src/engine/trainer_card.c +++ b/src/engine/trainer_card.c @@ -18,7 +18,7 @@ #include "string_util.h" #include "strings2.h" #include "task.h" -#include "unknown_task.h" +#include "scanline_effect.h" #include "util.h" #include "ewram.h" diff --git a/src/field/diploma.c b/src/field/diploma.c index 7028eec02..70e4e4349 100644 --- a/src/field/diploma.c +++ b/src/field/diploma.c @@ -10,7 +10,7 @@ #include "strings2.h" #include "task.h" #include "text.h" -#include "unknown_task.h" +#include "scanline_effect.h" static void VBlankCB(void); static void MainCB2(void); diff --git a/src/field/field_screen_effect.c b/src/field/field_screen_effect.c index 6e818ce68..5f5113a2f 100644 --- a/src/field/field_screen_effect.c +++ b/src/field/field_screen_effect.c @@ -7,7 +7,7 @@ #include "script.h" #include "task.h" #include "text.h" -#include "unknown_task.h" +#include "scanline_effect.h" const static u16 gUnknown_0839ACDC[] = { 0xC8, 0x48, 0x38, 0x28, 0x18, 0x0 }; diff --git a/src/field/item_menu.c b/src/field/item_menu.c index 2be5f1e1d..fe896ac51 100644 --- a/src/field/item_menu.c +++ b/src/field/item_menu.c @@ -33,7 +33,7 @@ #include "string_util.h" #include "task.h" #include "text.h" -#include "unknown_task.h" +#include "scanline_effect.h" #include "ewram.h" // External stuff diff --git a/src/field/overworld.c b/src/field/overworld.c index 9fab20876..75e3aa6d5 100644 --- a/src/field/overworld.c +++ b/src/field/overworld.c @@ -47,7 +47,7 @@ #include "tileset_anim.h" #include "time_events.h" #include "tv.h" -#include "unknown_task.h" +#include "scanline_effect.h" #include "wild_encounter.h" #ifdef SAPPHIRE diff --git a/src/field/party_menu.c b/src/field/party_menu.c index 9cad5bd73..7e443a116 100644 --- a/src/field/party_menu.c +++ b/src/field/party_menu.c @@ -32,7 +32,7 @@ #include "string_util.h" #include "strings.h" #include "task.h" -#include "unknown_task.h" +#include "scanline_effect.h" #include "util.h" #include "script_pokemon_80F9.h" #include "ewram.h" diff --git a/src/field/pokeblock.c b/src/field/pokeblock.c index dd94e1755..ea96a4efd 100644 --- a/src/field/pokeblock.c +++ b/src/field/pokeblock.c @@ -8,7 +8,7 @@ #include "script.h" #include "strings.h" #include "task.h" -#include "unknown_task.h" +#include "scanline_effect.h" #include "text.h" #include "main.h" #include "menu.h" diff --git a/src/field/shop.c b/src/field/shop.c index d56d65c3f..a3e361733 100644 --- a/src/field/shop.c +++ b/src/field/shop.c @@ -15,7 +15,7 @@ #include "strings.h" #include "task.h" #include "tv.h" -#include "unknown_task.h" +#include "scanline_effect.h" #include "field_map_obj.h" #include "field_player_avatar.h" #include "fieldmap.h" diff --git a/src/field/start_menu.c b/src/field/start_menu.c index 5b2276d1b..d7d0282c6 100644 --- a/src/field/start_menu.c +++ b/src/field/start_menu.c @@ -28,7 +28,7 @@ #include "strings2.h" #include "task.h" #include "trainer_card.h" -#include "unknown_task.h" +#include "scanline_effect.h" //Menu actions enum { diff --git a/src/field/starter_choose.c b/src/field/starter_choose.c index 91b706e78..d3cfba1e3 100644 --- a/src/field/starter_choose.c +++ b/src/field/starter_choose.c @@ -14,7 +14,7 @@ #include "strings.h" #include "task.h" #include "trig.h" -#include "unknown_task.h" +#include "scanline_effect.h" extern u16 gSpecialVar_Result; extern struct SpriteTemplate gUnknown_02024E8C; diff --git a/src/field/wallclock.c b/src/field/wallclock.c index 4f2a6dccd..bc12db819 100644 --- a/src/field/wallclock.c +++ b/src/field/wallclock.c @@ -10,7 +10,7 @@ #include "strings2.h" #include "task.h" #include "trig.h" -#include "unknown_task.h" +#include "scanline_effect.h" extern u16 gSpecialVar_0x8004; extern u8 gMiscClock_Gfx[]; diff --git a/src/pokemon/mail.c b/src/pokemon/mail.c index ab43c033a..95424e890 100644 --- a/src/pokemon/mail.c +++ b/src/pokemon/mail.c @@ -15,7 +15,7 @@ #include "strings2.h" #include "task.h" #include "text.h" -#include "unknown_task.h" +#include "scanline_effect.h" #include "ewram.h" struct UnkMailStruct diff --git a/src/pokemon/pokedex.c b/src/pokemon/pokedex.c index 48ce26bb8..306cac3c9 100644 --- a/src/pokemon/pokedex.c +++ b/src/pokemon/pokedex.c @@ -23,7 +23,7 @@ #include "strings.h" #include "task.h" #include "trig.h" -#include "unknown_task.h" +#include "scanline_effect.h" #include "ewram.h" #define NATIONAL_DEX_COUNT 386 diff --git a/src/pokemon/pokemon_summary_screen.c b/src/pokemon/pokemon_summary_screen.c index d98383c6d..4e2be1418 100644 --- a/src/pokemon/pokemon_summary_screen.c +++ b/src/pokemon/pokemon_summary_screen.c @@ -29,7 +29,7 @@ #include "strings2.h" #include "task.h" #include "tv.h" -#include "unknown_task.h" +#include "scanline_effect.h" static void sub_809FC0C(void); static void sub_809FEB8(void); diff --git a/src/pokenav_before.c b/src/pokenav_before.c index 3b534c96c..fb197cee2 100644 --- a/src/pokenav_before.c +++ b/src/pokenav_before.c @@ -18,7 +18,7 @@ #include "sound.h" #include "task.h" #include "text.h" -#include "unknown_task.h" +#include "scanline_effect.h" extern u8 ewram[]; diff --git a/src/roulette.c b/src/roulette.c index e88c36c01..ae16b1460 100644 --- a/src/roulette.c +++ b/src/roulette.c @@ -23,7 +23,7 @@ #include "task.h" #include "text.h" #include "trig.h" -#include "unknown_task.h" +#include "scanline_effect.h" asm(".include \"constants/gba_constants.inc\""); diff --git a/src/scanline_effect.c b/src/scanline_effect.c new file mode 100644 index 000000000..670f2d9b3 --- /dev/null +++ b/src/scanline_effect.c @@ -0,0 +1,235 @@ +#include "global.h" +#include "data2.h" +#include "task.h" +#include "trig.h" +#include "scanline_effect.h" + +static void sub_80896F4(void); +static void sub_8089714(void); + +extern u16 gUnknown_030041B0; +extern u16 gBattle_BG1_Y; +extern u16 gUnknown_030041B8; +extern u16 gBattle_BG2_Y; +extern u16 gBattle_BG2_X; +extern u16 gBattle_BG0_Y; +extern u16 gBattle_BG0_X; +extern u16 gBattle_BG1_X; + +extern u8 gUnknown_0202FFA4; + +extern struct UnknownTaskStruct2 gUnknown_03004DC0; + +// Is this a struct? +extern u16 gUnknown_03004DE0[][0x3C0]; + +void remove_some_task(void) +{ + gUnknown_03004DC0.unk15 = 0; + DmaStop(0); + if (gUnknown_03004DC0.taskId != 0xFF) + { + DestroyTask(gUnknown_03004DC0.taskId); + gUnknown_03004DC0.taskId = 0xFF; + } +} + +void dp12_8087EA4(void) +{ + CpuFill16(0, gUnknown_03004DE0, 0x780 * 2); + gUnknown_03004DC0.src[0] = 0; + gUnknown_03004DC0.src[1] = 0; + gUnknown_03004DC0.dest = 0; + gUnknown_03004DC0.unkC = 0; + gUnknown_03004DC0.srcBank = 0; + gUnknown_03004DC0.unk15 = 0; + gUnknown_03004DC0.unk16 = 0; + gUnknown_03004DC0.unk17 = 0; + gUnknown_03004DC0.taskId = 0xFF; +} + +void sub_80895F8(struct UnknownTaskStruct unk) +{ + if (unk.control == (((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1)) + { + gUnknown_03004DC0.src[0] = &gUnknown_03004DE0[0][1]; + gUnknown_03004DC0.src[1] = &gUnknown_03004DE0[1][1]; + gUnknown_03004DC0.unk10 = sub_80896F4; + } + else + { + gUnknown_03004DC0.src[0] = &gUnknown_03004DE0[0][2]; + gUnknown_03004DC0.src[1] = &gUnknown_03004DE0[1][2]; + gUnknown_03004DC0.unk10 = sub_8089714; + } + + gUnknown_03004DC0.unkC = unk.control; + gUnknown_03004DC0.dest = unk.dest; + gUnknown_03004DC0.unk15 = unk.unk8; + gUnknown_03004DC0.unk16 = unk.unk9; + gUnknown_03004DC0.unk17 = unk.unk9; +} + +void sub_8089668(void) +{ + if (gUnknown_03004DC0.unk15) + { + if (gUnknown_03004DC0.unk15 == 3) + { + gUnknown_03004DC0.unk15 = 0; + DmaStop(0); + gUnknown_0202FFA4 = 1; + } + else + { + DmaStop(0); + DmaSet(0, gUnknown_03004DC0.src[gUnknown_03004DC0.srcBank], gUnknown_03004DC0.dest, gUnknown_03004DC0.unkC); + gUnknown_03004DC0.unk10(); + gUnknown_03004DC0.srcBank ^= 1; + } + } +} + +static void sub_80896F4(void) +{ + u16 *dest = (u16 *)gUnknown_03004DC0.dest; + u16 *src = (u16 *)&gUnknown_03004DE0[gUnknown_03004DC0.srcBank]; + *dest = *src; +} + +static void sub_8089714(void) +{ + u32 *dest = (u32 *)gUnknown_03004DC0.dest; + u32 *src = (u32 *)&gUnknown_03004DE0[gUnknown_03004DC0.srcBank]; + *dest = *src; +} + +static void task00_for_dp12(u8 taskId) +{ + int value = 0; + + if (gUnknown_0202FFA4) + { + DestroyTask(taskId); + gUnknown_03004DC0.taskId = 0xFF; + } + else + { + if (gTasks[taskId].data[7]) + { + switch (gTasks[taskId].data[6]) + { + case 0x0: + value = gBattle_BG0_X; + break; + case 0x2: + value = gBattle_BG0_Y; + break; + case 0x4: + value = gBattle_BG1_X; + break; + case 0x6: + value = gBattle_BG1_Y; + break; + case 0x8: + value = gBattle_BG2_X; + break; + case 0xA: + value = gBattle_BG2_Y; + break; + case 0xC: + value = gUnknown_030041B0; + break; + case 0xE: + value = gUnknown_030041B8; + break; + } + } + if (gTasks[taskId].data[4]) + { + int i; + int offset; + gTasks[taskId].data[4]--; + offset = gTasks[taskId].data[3] + 320; + for (i = gTasks[taskId].data[0]; i < gTasks[taskId].data[1]; i++) + { + gUnknown_03004DE0[gUnknown_03004DC0.srcBank][i] = gUnknown_03004DE0[0][offset] + value; + offset++; + } + } + else + { + int i; + int offset; + gTasks[taskId].data[4] = gTasks[taskId].data[5]; + offset = gTasks[taskId].data[3] + 320; + for (i = gTasks[taskId].data[0]; i < gTasks[taskId].data[1]; i++) + { + gUnknown_03004DE0[gUnknown_03004DC0.srcBank][i] = gUnknown_03004DE0[0][offset] + value; + offset++; + } + gTasks[taskId].data[3]++; + if (gTasks[taskId].data[3] == gTasks[taskId].data[2]) + { + gTasks[taskId].data[3] = 0; + } + } + } +} + +static void sub_80898FC(u16 *a1, u8 a2, u8 a3, u8 a4) +{ + u16 i = 0; + u8 offset = 0; + + while (i < 0x100) + { + a1[i] = (gSineTable[offset] * a3) / 256; + offset += a2; + i++; + } +} + +u8 sub_8089944(u8 a1, u8 a2, u8 a3, u8 a4, u8 a5, u8 a6, u8 a7) +{ + int i; + int offset; + struct UnknownTaskStruct unk; + u8 taskId; + + dp12_8087EA4(); + + unk.dest = (void *)(REG_ADDR_BG0HOFS + a6); + unk.control = ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1; + unk.unk8 = 1; + unk.unk9 = 0; + + sub_80895F8(unk); + + taskId = CreateTask(task00_for_dp12, 0); + + gTasks[taskId].data[0] = a1; + gTasks[taskId].data[1] = a2; + gTasks[taskId].data[2] = 256 / a3; + gTasks[taskId].data[3] = 0; + gTasks[taskId].data[4] = a5; + gTasks[taskId].data[5] = a5; + gTasks[taskId].data[6] = a6; + gTasks[taskId].data[7] = a7; + + gUnknown_03004DC0.taskId = taskId; + gUnknown_0202FFA4 = 0; + + sub_80898FC(&gUnknown_03004DE0[0][320], a3, a4, a2 - a1); + + offset = 320; + + for (i = a1; i < a2; i++) + { + gUnknown_03004DE0[0][i] = gUnknown_03004DE0[0][offset]; + gUnknown_03004DE0[1][i] = gUnknown_03004DE0[0][offset]; + offset++; + } + + return taskId; +} diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c index 52a0aeebf..bae037ff7 100644 --- a/src/scene/cable_car.c +++ b/src/scene/cable_car.c @@ -14,7 +14,7 @@ #include "decompress.h" #include "field_weather.h" #include "field_map_obj.h" -#include "unknown_task.h" +#include "scanline_effect.h" #include "event_data.h" #include "cable_car_util.h" #include "constants/map_objects.h" diff --git a/src/scene/contest_painting.c b/src/scene/contest_painting.c index 401872644..3b68f0143 100644 --- a/src/scene/contest_painting.c +++ b/src/scene/contest_painting.c @@ -11,7 +11,7 @@ #include "string_util.h" #include "strings.h" #include "text.h" -#include "unknown_task.h" +#include "scanline_effect.h" #include "ewram.h" static u8 gUnknown_03000750; diff --git a/src/scene/evolution_scene.c b/src/scene/evolution_scene.c index 167130aa5..dcca1fddb 100644 --- a/src/scene/evolution_scene.c +++ b/src/scene/evolution_scene.c @@ -9,7 +9,7 @@ #include "pokemon.h" #include "string_util.h" #include "battle.h" -#include "unknown_task.h" +#include "scanline_effect.h" #include "data2.h" #include "decompress.h" #include "m4a.h" diff --git a/src/scene/intro.c b/src/scene/intro.c index 4dc6cc91c..beceb6e90 100644 --- a/src/scene/intro.c +++ b/src/scene/intro.c @@ -19,7 +19,7 @@ #include "task.h" #include "title_screen.h" #include "trig.h" -#include "unknown_task.h" +#include "scanline_effect.h" #include "ewram.h" extern struct SpriteTemplate gUnknown_02024E8C; diff --git a/src/scene/intro_credits_graphics.c b/src/scene/intro_credits_graphics.c index 6cee74cce..f0f1264a0 100755 --- a/src/scene/intro_credits_graphics.c +++ b/src/scene/intro_credits_graphics.c @@ -19,7 +19,7 @@ #include "task.h" #include "title_screen.h" #include "trig.h" -#include "unknown_task.h" +#include "scanline_effect.h" // define register constants for the inline asm asm(".include \"constants/gba_constants.inc\"\n"); diff --git a/src/scene/title_screen.c b/src/scene/title_screen.c index 26fe088d5..bd41ac641 100644 --- a/src/scene/title_screen.c +++ b/src/scene/title_screen.c @@ -13,7 +13,7 @@ #include "sound.h" #include "sprite.h" #include "task.h" -#include "unknown_task.h" +#include "scanline_effect.h" #if ENGLISH #define VERSION_BANNER_SHAPE 1 diff --git a/src/unknown_task.c b/src/unknown_task.c deleted file mode 100644 index 2c71bfb08..000000000 --- a/src/unknown_task.c +++ /dev/null @@ -1,235 +0,0 @@ -#include "global.h" -#include "data2.h" -#include "task.h" -#include "trig.h" -#include "unknown_task.h" - -static void sub_80896F4(void); -static void sub_8089714(void); - -extern u16 gUnknown_030041B0; -extern u16 gBattle_BG1_Y; -extern u16 gUnknown_030041B8; -extern u16 gBattle_BG2_Y; -extern u16 gBattle_BG2_X; -extern u16 gBattle_BG0_Y; -extern u16 gBattle_BG0_X; -extern u16 gBattle_BG1_X; - -extern u8 gUnknown_0202FFA4; - -extern struct UnknownTaskStruct2 gUnknown_03004DC0; - -// Is this a struct? -extern u16 gUnknown_03004DE0[][0x3C0]; - -void remove_some_task(void) -{ - gUnknown_03004DC0.unk15 = 0; - DmaStop(0); - if (gUnknown_03004DC0.taskId != 0xFF) - { - DestroyTask(gUnknown_03004DC0.taskId); - gUnknown_03004DC0.taskId = 0xFF; - } -} - -void dp12_8087EA4(void) -{ - CpuFill16(0, gUnknown_03004DE0, 0x780 * 2); - gUnknown_03004DC0.src[0] = 0; - gUnknown_03004DC0.src[1] = 0; - gUnknown_03004DC0.dest = 0; - gUnknown_03004DC0.unkC = 0; - gUnknown_03004DC0.srcBank = 0; - gUnknown_03004DC0.unk15 = 0; - gUnknown_03004DC0.unk16 = 0; - gUnknown_03004DC0.unk17 = 0; - gUnknown_03004DC0.taskId = 0xFF; -} - -void sub_80895F8(struct UnknownTaskStruct unk) -{ - if (unk.control == (((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1)) - { - gUnknown_03004DC0.src[0] = &gUnknown_03004DE0[0][1]; - gUnknown_03004DC0.src[1] = &gUnknown_03004DE0[1][1]; - gUnknown_03004DC0.unk10 = sub_80896F4; - } - else - { - gUnknown_03004DC0.src[0] = &gUnknown_03004DE0[0][2]; - gUnknown_03004DC0.src[1] = &gUnknown_03004DE0[1][2]; - gUnknown_03004DC0.unk10 = sub_8089714; - } - - gUnknown_03004DC0.unkC = unk.control; - gUnknown_03004DC0.dest = unk.dest; - gUnknown_03004DC0.unk15 = unk.unk8; - gUnknown_03004DC0.unk16 = unk.unk9; - gUnknown_03004DC0.unk17 = unk.unk9; -} - -void sub_8089668(void) -{ - if (gUnknown_03004DC0.unk15) - { - if (gUnknown_03004DC0.unk15 == 3) - { - gUnknown_03004DC0.unk15 = 0; - DmaStop(0); - gUnknown_0202FFA4 = 1; - } - else - { - DmaStop(0); - DmaSet(0, gUnknown_03004DC0.src[gUnknown_03004DC0.srcBank], gUnknown_03004DC0.dest, gUnknown_03004DC0.unkC); - gUnknown_03004DC0.unk10(); - gUnknown_03004DC0.srcBank ^= 1; - } - } -} - -static void sub_80896F4(void) -{ - u16 *dest = (u16 *)gUnknown_03004DC0.dest; - u16 *src = (u16 *)&gUnknown_03004DE0[gUnknown_03004DC0.srcBank]; - *dest = *src; -} - -static void sub_8089714(void) -{ - u32 *dest = (u32 *)gUnknown_03004DC0.dest; - u32 *src = (u32 *)&gUnknown_03004DE0[gUnknown_03004DC0.srcBank]; - *dest = *src; -} - -static void task00_for_dp12(u8 taskId) -{ - int value = 0; - - if (gUnknown_0202FFA4) - { - DestroyTask(taskId); - gUnknown_03004DC0.taskId = 0xFF; - } - else - { - if (gTasks[taskId].data[7]) - { - switch (gTasks[taskId].data[6]) - { - case 0x0: - value = gBattle_BG0_X; - break; - case 0x2: - value = gBattle_BG0_Y; - break; - case 0x4: - value = gBattle_BG1_X; - break; - case 0x6: - value = gBattle_BG1_Y; - break; - case 0x8: - value = gBattle_BG2_X; - break; - case 0xA: - value = gBattle_BG2_Y; - break; - case 0xC: - value = gUnknown_030041B0; - break; - case 0xE: - value = gUnknown_030041B8; - break; - } - } - if (gTasks[taskId].data[4]) - { - int i; - int offset; - gTasks[taskId].data[4]--; - offset = gTasks[taskId].data[3] + 320; - for (i = gTasks[taskId].data[0]; i < gTasks[taskId].data[1]; i++) - { - gUnknown_03004DE0[gUnknown_03004DC0.srcBank][i] = gUnknown_03004DE0[0][offset] + value; - offset++; - } - } - else - { - int i; - int offset; - gTasks[taskId].data[4] = gTasks[taskId].data[5]; - offset = gTasks[taskId].data[3] + 320; - for (i = gTasks[taskId].data[0]; i < gTasks[taskId].data[1]; i++) - { - gUnknown_03004DE0[gUnknown_03004DC0.srcBank][i] = gUnknown_03004DE0[0][offset] + value; - offset++; - } - gTasks[taskId].data[3]++; - if (gTasks[taskId].data[3] == gTasks[taskId].data[2]) - { - gTasks[taskId].data[3] = 0; - } - } - } -} - -static void sub_80898FC(u16 *a1, u8 a2, u8 a3, u8 a4) -{ - u16 i = 0; - u8 offset = 0; - - while (i < 0x100) - { - a1[i] = (gSineTable[offset] * a3) / 256; - offset += a2; - i++; - } -} - -u8 sub_8089944(u8 a1, u8 a2, u8 a3, u8 a4, u8 a5, u8 a6, u8 a7) -{ - int i; - int offset; - struct UnknownTaskStruct unk; - u8 taskId; - - dp12_8087EA4(); - - unk.dest = (void *)(REG_ADDR_BG0HOFS + a6); - unk.control = ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1; - unk.unk8 = 1; - unk.unk9 = 0; - - sub_80895F8(unk); - - taskId = CreateTask(task00_for_dp12, 0); - - gTasks[taskId].data[0] = a1; - gTasks[taskId].data[1] = a2; - gTasks[taskId].data[2] = 256 / a3; - gTasks[taskId].data[3] = 0; - gTasks[taskId].data[4] = a5; - gTasks[taskId].data[5] = a5; - gTasks[taskId].data[6] = a6; - gTasks[taskId].data[7] = a7; - - gUnknown_03004DC0.taskId = taskId; - gUnknown_0202FFA4 = 0; - - sub_80898FC(&gUnknown_03004DE0[0][320], a3, a4, a2 - a1); - - offset = 320; - - for (i = a1; i < a2; i++) - { - gUnknown_03004DE0[0][i] = gUnknown_03004DE0[0][offset]; - gUnknown_03004DE0[1][i] = gUnknown_03004DE0[0][offset]; - offset++; - } - - return taskId; -} -- cgit v1.2.3 From f9f0e84b70f1b313200acd6f0d180413e34517da Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Tue, 9 Jan 2018 23:55:03 -0600 Subject: label some scanline_effect functions --- src/battle/anim/draw.c | 6 +- src/battle/battle_2.c | 2 +- src/contest.c | 2 +- src/debug/matsuda_debug_menu.c | 2 +- src/easy_chat_1.c | 4 +- src/easy_chat_2.c | 2 +- src/engine/main.c | 2 +- src/engine/main_menu.c | 6 +- src/engine/option_menu.c | 4 +- src/engine/reset_rtc_screen.c | 2 +- src/field/diploma.c | 2 +- src/field/field_screen_effect.c | 6 +- src/field/item_menu.c | 2 +- src/field/overworld.c | 4 +- src/field/party_menu.c | 2 +- src/field/pokeblock.c | 2 +- src/field/shop.c | 2 +- src/field/start_menu.c | 2 +- src/field/starter_choose.c | 2 +- src/field/use_pokeblock.c | 4 +- src/field/wallclock.c | 2 +- src/pokemon/mail.c | 2 +- src/pokemon/pokedex.c | 4 +- src/pokemon/pokemon_summary_screen.c | 2 +- src/pokenav_before.c | 4 +- src/roulette.c | 2 +- src/scanline_effect.c | 107 ++++++++++++++++++----------------- src/scene/cable_car.c | 2 +- src/scene/contest_painting.c | 2 +- src/scene/evolution_scene.c | 6 +- src/scene/hall_of_fame.c | 4 +- src/scene/intro.c | 2 +- src/scene/title_screen.c | 6 +- 33 files changed, 104 insertions(+), 101 deletions(-) (limited to 'src') diff --git a/src/battle/anim/draw.c b/src/battle/anim/draw.c index 0508eed8c..ac1ae08cb 100755 --- a/src/battle/anim/draw.c +++ b/src/battle/anim/draw.c @@ -97,7 +97,7 @@ void sub_80D0D68(u8 taskId) if (++task->data[3] >= task->data[15]) { - gUnknown_03004DC0.unk15 = 3; + gScanlineEffect.unk15 = 3; DestroyAnimVisualTask(taskId); } } @@ -202,7 +202,7 @@ _080D0E04:\n\ ldrsh r1, [r3, r2]\n\ cmp r0, r1\n\ blt _080D0E22\n\ - ldr r1, _080D0E2C @ =gUnknown_03004DC0\n\ + ldr r1, _080D0E2C @ =gScanlineEffect\n\ movs r0, 0x3\n\ strb r0, [r1, 0x15]\n\ adds r0, r4, 0\n\ @@ -213,7 +213,7 @@ _080D0E22:\n\ bx r0\n\ .align 2, 0\n\ _080D0E28: .4byte gUnknown_03004DE0\n\ -_080D0E2C: .4byte gUnknown_03004DC0\n\ +_080D0E2C: .4byte gScanlineEffect\n\ .syntax divided\n"); } #endif diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c index 20daf4052..da6c9a2b4 100644 --- a/src/battle/battle_2.c +++ b/src/battle/battle_2.c @@ -1073,7 +1073,7 @@ void sub_800FCFC(void) LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); - sub_8089668(); + ScanlineEffect_TransferDma(); } void nullsub_36(struct Sprite *sprite) diff --git a/src/contest.c b/src/contest.c index 9f8fe976a..e39ce3daa 100644 --- a/src/contest.c +++ b/src/contest.c @@ -635,7 +635,7 @@ void ContestVBlankCallback(void) TransferPlttBuffer(); LoadOam(); ProcessSpriteCopyRequests(); - sub_8089668(); + ScanlineEffect_TransferDma(); } void sub_80ABB70(u8 taskId) diff --git a/src/debug/matsuda_debug_menu.c b/src/debug/matsuda_debug_menu.c index 25890e3ea..85a8800e7 100644 --- a/src/debug/matsuda_debug_menu.c +++ b/src/debug/matsuda_debug_menu.c @@ -516,7 +516,7 @@ static void sub_80AA090(void) LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); - sub_8089668(); + ScanlineEffect_TransferDma(); } static void sub_80AA10C(void) diff --git a/src/easy_chat_1.c b/src/easy_chat_1.c index a5fc1dee9..7ca647b93 100644 --- a/src/easy_chat_1.c +++ b/src/easy_chat_1.c @@ -298,7 +298,7 @@ void sub_80E62F8(void) ResetPaletteFade(); ResetSpriteData(); dp12_8087EA4(); - remove_some_task(); + ScanlineEffect_Stop(); sub_80EAD08(); sub_80895F8(gUnknown_083DB698); FreeSpriteTileRanges(); @@ -655,7 +655,7 @@ void sub_80E6A6C(void) ProcessSpriteCopyRequests(); sub_80EAC5C(); TransferPlttBuffer(); - sub_8089668(); + ScanlineEffect_TransferDma(); } void sub_80E6A88(void) diff --git a/src/easy_chat_2.c b/src/easy_chat_2.c index 48e005cab..0f12b978d 100644 --- a/src/easy_chat_2.c +++ b/src/easy_chat_2.c @@ -2053,7 +2053,7 @@ void sub_80EAD08(void) u16 r2; u16 i; - r4 = gUnknown_03004DE0[gUnknown_03004DC0.srcBank]; + r4 = gUnknown_03004DE0[gScanlineEffect.srcBank]; r4 += 88; r2 = (gEasyChatStruct->unk1BA - 88) & 0xFF; diff --git a/src/engine/main.c b/src/engine/main.c index d1ccffea0..1bed4080b 100644 --- a/src/engine/main.c +++ b/src/engine/main.c @@ -350,7 +350,7 @@ void DoSoftReset(void) { REG_IME = 0; m4aSoundVSyncOff(); - remove_some_task(); + ScanlineEffect_Stop(); DmaStop(1); DmaStop(2); DmaStop(3); diff --git a/src/engine/main_menu.c b/src/engine/main_menu.c index 3402d93bc..a0b8b7020 100644 --- a/src/engine/main_menu.c +++ b/src/engine/main_menu.c @@ -229,7 +229,7 @@ u32 InitMainMenu(u8 a1) ResetPaletteFade(); LoadPalette(gMainMenuPalette, 0, 32); - remove_some_task(); + ScanlineEffect_Stop(); ResetTasks(); ResetSpriteData(); FreeAllSpritePalettes(); @@ -763,7 +763,7 @@ static void Task_NewGameSpeech1(u8 taskId) LZ77UnCompVram(gUnknown_081E7834, (void *)(BG_VRAM + 0x3800)); LoadPalette(gUnknown_081E764C, 0, 0x40); LoadPalette(gUnknown_081E796C, 1, 0x10); - remove_some_task(); + ScanlineEffect_Stop(); ResetSpriteData(); FreeAllSpritePalettes(); AddBirchSpeechObjects(taskId); @@ -1368,7 +1368,7 @@ void CB_ContinueNewGameSpeechPart2() gTasks[taskId].tBGhofs = -60; - remove_some_task(); + ScanlineEffect_Stop(); ResetSpriteData(); FreeAllSpritePalettes(); AddBirchSpeechObjects(taskId); diff --git a/src/engine/option_menu.c b/src/engine/option_menu.c index 868830880..cb5f66649 100644 --- a/src/engine/option_menu.c +++ b/src/engine/option_menu.c @@ -8,7 +8,7 @@ #include "task.h" extern void SetPokemonCryStereo(u32 val); -extern void remove_some_task(void); +extern void ScanlineEffect_Stop(void); //Task data enum { @@ -110,7 +110,7 @@ void CB2_InitOptionMenu(void) } case 1: ResetPaletteFade(); - remove_some_task(); + ScanlineEffect_Stop(); ResetTasks(); ResetSpriteData(); gMain.state++; diff --git a/src/engine/reset_rtc_screen.c b/src/engine/reset_rtc_screen.c index 5297b3378..d077bc670 100644 --- a/src/engine/reset_rtc_screen.c +++ b/src/engine/reset_rtc_screen.c @@ -438,7 +438,7 @@ void CB2_InitResetRtcScreen(void) ResetOamRange(0, 128); LoadOam(); - remove_some_task(); + ScanlineEffect_Stop(); dp12_8087EA4(); ResetSpriteData(); ResetTasks(); diff --git a/src/field/diploma.c b/src/field/diploma.c index 70e4e4349..978eca7eb 100644 --- a/src/field/diploma.c +++ b/src/field/diploma.c @@ -62,7 +62,7 @@ void CB2_ShowDiploma(void) LZ77UnCompVram(gDiplomaTiles, (void *)VRAM); LZ77UnCompVram(gDiplomaTilemap, (void *)(VRAM + 0x3000)); - remove_some_task(); + ScanlineEffect_Stop(); ResetTasks(); ResetSpriteData(); ResetPaletteFade(); diff --git a/src/field/field_screen_effect.c b/src/field/field_screen_effect.c index 5f5113a2f..b5141e7ea 100644 --- a/src/field/field_screen_effect.c +++ b/src/field/field_screen_effect.c @@ -64,18 +64,18 @@ static void sub_8081424(u8 taskId) switch (data[0]) { case 0: - sub_8081398(&gUnknown_03004DE0[gUnknown_03004DC0.srcBank][0], data[1], data[2], data[3]); + sub_8081398(&gUnknown_03004DE0[gScanlineEffect.srcBank][0], data[1], data[2], data[3]); data[0] = 1; break; case 1: - sub_8081398(&gUnknown_03004DE0[gUnknown_03004DC0.srcBank][0], data[1], data[2], data[3]); + sub_8081398(&gUnknown_03004DE0[gScanlineEffect.srcBank][0], data[1], data[2], data[3]); data[0] = 0; data[3] += data[5]; if (data[3] > data[4]) { if (data[6] == 1) { - remove_some_task(); + ScanlineEffect_Stop(); data[0] = 2; } else diff --git a/src/field/item_menu.c b/src/field/item_menu.c index fe896ac51..e0575af4c 100644 --- a/src/field/item_menu.c +++ b/src/field/item_menu.c @@ -397,7 +397,7 @@ static bool8 SetupBagMultistep(void) gMain.state++; break; case 1: - remove_some_task(); + ScanlineEffect_Stop(); gMain.state++; break; case 2: diff --git a/src/field/overworld.c b/src/field/overworld.c index 75e3aa6d5..e90fc6396 100644 --- a/src/field/overworld.c +++ b/src/field/overworld.c @@ -1410,7 +1410,7 @@ void VBlankCB_Field(void) { LoadOam(); ProcessSpriteCopyRequests(); - sub_8089668(); + ScanlineEffect_TransferDma(); sub_8057A58(); TransferPlttBuffer(); sub_8072E74(); @@ -1669,7 +1669,7 @@ void sub_8054BA8(void) REG_DISPCNT = 0; - remove_some_task(); + ScanlineEffect_Stop(); DmaClear16(3, PLTT + 2, PLTT_SIZE - 2); diff --git a/src/field/party_menu.c b/src/field/party_menu.c index 7e443a116..7d243f569 100644 --- a/src/field/party_menu.c +++ b/src/field/party_menu.c @@ -648,7 +648,7 @@ bool8 InitPartyMenu(void) gMain.state++; break; case 1: - remove_some_task(); + ScanlineEffect_Stop(); gMain.state++; break; case 2: diff --git a/src/field/pokeblock.c b/src/field/pokeblock.c index ea96a4efd..7e8bdc2ce 100644 --- a/src/field/pokeblock.c +++ b/src/field/pokeblock.c @@ -255,7 +255,7 @@ static bool8 sub_810B6C0(void) gMain.state++; break; case 1: - remove_some_task(); + ScanlineEffect_Stop(); gMain.state++; break; case 2: diff --git a/src/field/shop.c b/src/field/shop.c index a3e361733..1dc6ba0cd 100644 --- a/src/field/shop.c +++ b/src/field/shop.c @@ -266,7 +266,7 @@ void BuyMenuDrawGraphics(void) register u16 zero2 asm("r5"); sub_80F9438(); - remove_some_task(); + ScanlineEffect_Stop(); REG_BG1HOFS = (zero2 = 0); REG_BG1VOFS = zero2; REG_BG2HOFS = zero2; diff --git a/src/field/start_menu.c b/src/field/start_menu.c index d7d0282c6..6017f56bf 100644 --- a/src/field/start_menu.c +++ b/src/field/start_menu.c @@ -750,7 +750,7 @@ static bool32 sub_80719FC(u8 *step) REG_DISPCNT = 0; SetVBlankCallback(NULL); - remove_some_task(); + ScanlineEffect_Stop(); DmaClear16(3, PLTT, PLTT_SIZE); addr = (void *)VRAM; size = 0x18000; diff --git a/src/field/starter_choose.c b/src/field/starter_choose.c index d3cfba1e3..418488774 100644 --- a/src/field/starter_choose.c +++ b/src/field/starter_choose.c @@ -285,7 +285,7 @@ void CB2_ChooseStarter(void) LZ77UnCompVram(&gBirchHelpGfx, (void *)VRAM); LZ77UnCompVram(&gBirchBagTilemap, (void *)(VRAM + 0x3000)); LZ77UnCompVram(&gBirchGrassTilemap, (void *)(VRAM + 0x3800)); - remove_some_task(); + ScanlineEffect_Stop(); ResetTasks(); ResetSpriteData(); ResetPaletteFade(); diff --git a/src/field/use_pokeblock.c b/src/field/use_pokeblock.c index 9363498ba..4af7be386 100644 --- a/src/field/use_pokeblock.c +++ b/src/field/use_pokeblock.c @@ -117,7 +117,7 @@ static void sub_81365A0(void); static void sub_81365C8(void); static void sub_8136638(void); static void sub_81368A4(void); -void sub_8089668(void); +void ScanlineEffect_TransferDma(void); static void sub_8136B44(void); static u8 sub_81370E4(u8); static void sub_8136BB8(void); @@ -194,7 +194,7 @@ static void sub_8136264(void) ProcessSpriteCopyRequests(); TransferPlttBuffer(); sub_80F5CDC(6); - sub_8089668(); + ScanlineEffect_TransferDma(); } static void launch_c3_walk_stairs_and_run_once(void (*const func)(void)) diff --git a/src/field/wallclock.c b/src/field/wallclock.c index bc12db819..aaa7f9ae8 100644 --- a/src/field/wallclock.c +++ b/src/field/wallclock.c @@ -229,7 +229,7 @@ static void LoadWallClockGraphics(void) LoadPalette(gMiscClockMale_Pal, 0, 32); else LoadPalette(gMiscClockFemale_Pal, 0, 32); - remove_some_task(); + ScanlineEffect_Stop(); ResetTasks(); ResetSpriteData(); ResetPaletteFade(); diff --git a/src/pokemon/mail.c b/src/pokemon/mail.c index 95424e890..921a3ad93 100644 --- a/src/pokemon/mail.c +++ b/src/pokemon/mail.c @@ -320,7 +320,7 @@ static u8 sub_80F8A28(void) { case 0: SetVBlankCallback(NULL); - remove_some_task(); + ScanlineEffect_Stop(); REG_DISPCNT = 0; RETURN_UP_STATE; diff --git a/src/pokemon/pokedex.c b/src/pokemon/pokedex.c index 306cac3c9..4fb6a4920 100644 --- a/src/pokemon/pokedex.c +++ b/src/pokemon/pokedex.c @@ -1419,7 +1419,7 @@ void CB2_InitPokedex(void) } break; case 1: - remove_some_task(); + ScanlineEffect_Stop(); ResetTasks(); ResetSpriteData(); ResetPaletteFade(); @@ -1494,7 +1494,7 @@ u8 unref_sub_808C540(void (*func)(u8)) SetVBlankCallback(NULL); sub_8091060(0x200); - remove_some_task(); + ScanlineEffect_Stop(); ResetTasks(); ResetPaletteFade(); savedIme = REG_IME; diff --git a/src/pokemon/pokemon_summary_screen.c b/src/pokemon/pokemon_summary_screen.c index 4e2be1418..ec327796a 100644 --- a/src/pokemon/pokemon_summary_screen.c +++ b/src/pokemon/pokemon_summary_screen.c @@ -701,7 +701,7 @@ bool8 sub_809DA84(void) gMain.state++; break; case 1: - remove_some_task(); + ScanlineEffect_Stop(); gMain.state++; break; case 2: diff --git a/src/pokenav_before.c b/src/pokenav_before.c index fb197cee2..7439fc077 100644 --- a/src/pokenav_before.c +++ b/src/pokenav_before.c @@ -329,7 +329,7 @@ void sub_80EBA5C() ResetTasks(); break; case 6: - remove_some_task(); + ScanlineEffect_Stop(); break; case 7: sub_80F1A90(); @@ -436,7 +436,7 @@ void sub_80EBD4C() ProcessSpriteCopyRequests(); TransferPlttBuffer(); sub_80F5BF0(); - sub_8089668(); + ScanlineEffect_TransferDma(); } void sub_80EBD68() diff --git a/src/roulette.c b/src/roulette.c index ae16b1460..6d79f9d38 100644 --- a/src/roulette.c +++ b/src/roulette.c @@ -578,7 +578,7 @@ void sub_8115384(void) { case 0x0: SetVBlankCallback(NULL); - remove_some_task(); + ScanlineEffect_Stop(); sub_80F9438(); sub_80F9368(); REG_BG2CNT = 0x4686; diff --git a/src/scanline_effect.c b/src/scanline_effect.c index 670f2d9b3..e9cf0d02a 100644 --- a/src/scanline_effect.c +++ b/src/scanline_effect.c @@ -4,6 +4,9 @@ #include "trig.h" #include "scanline_effect.h" +// Control value to ransfer a single 16-bit value at HBlank +#define HBLANK_DMA_CONTROL_16BIT (((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1) + static void sub_80896F4(void); static void sub_8089714(void); @@ -18,89 +21,89 @@ extern u16 gBattle_BG1_X; extern u8 gUnknown_0202FFA4; -extern struct UnknownTaskStruct2 gUnknown_03004DC0; +extern struct ScanlineEffect gScanlineEffect; // Is this a struct? extern u16 gUnknown_03004DE0[][0x3C0]; -void remove_some_task(void) +void ScanlineEffect_Stop(void) { - gUnknown_03004DC0.unk15 = 0; + gScanlineEffect.unk15 = 0; DmaStop(0); - if (gUnknown_03004DC0.taskId != 0xFF) + if (gScanlineEffect.taskId != 0xFF) { - DestroyTask(gUnknown_03004DC0.taskId); - gUnknown_03004DC0.taskId = 0xFF; + DestroyTask(gScanlineEffect.taskId); + gScanlineEffect.taskId = 0xFF; } } void dp12_8087EA4(void) { CpuFill16(0, gUnknown_03004DE0, 0x780 * 2); - gUnknown_03004DC0.src[0] = 0; - gUnknown_03004DC0.src[1] = 0; - gUnknown_03004DC0.dest = 0; - gUnknown_03004DC0.unkC = 0; - gUnknown_03004DC0.srcBank = 0; - gUnknown_03004DC0.unk15 = 0; - gUnknown_03004DC0.unk16 = 0; - gUnknown_03004DC0.unk17 = 0; - gUnknown_03004DC0.taskId = 0xFF; + gScanlineEffect.src[0] = 0; + gScanlineEffect.src[1] = 0; + gScanlineEffect.dest = 0; + gScanlineEffect.unkC = 0; + gScanlineEffect.srcBank = 0; + gScanlineEffect.unk15 = 0; + gScanlineEffect.unk16 = 0; + gScanlineEffect.unk17 = 0; + gScanlineEffect.taskId = 0xFF; } void sub_80895F8(struct UnknownTaskStruct unk) { - if (unk.control == (((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1)) + if (unk.control == HBLANK_DMA_CONTROL_16BIT) // 16 bit { - gUnknown_03004DC0.src[0] = &gUnknown_03004DE0[0][1]; - gUnknown_03004DC0.src[1] = &gUnknown_03004DE0[1][1]; - gUnknown_03004DC0.unk10 = sub_80896F4; + gScanlineEffect.src[0] = &gUnknown_03004DE0[0][1]; + gScanlineEffect.src[1] = &gUnknown_03004DE0[1][1]; + gScanlineEffect.unk10 = sub_80896F4; } - else + else // assume 32-bit { - gUnknown_03004DC0.src[0] = &gUnknown_03004DE0[0][2]; - gUnknown_03004DC0.src[1] = &gUnknown_03004DE0[1][2]; - gUnknown_03004DC0.unk10 = sub_8089714; + gScanlineEffect.src[0] = &gUnknown_03004DE0[0][2]; + gScanlineEffect.src[1] = &gUnknown_03004DE0[1][2]; + gScanlineEffect.unk10 = sub_8089714; } - gUnknown_03004DC0.unkC = unk.control; - gUnknown_03004DC0.dest = unk.dest; - gUnknown_03004DC0.unk15 = unk.unk8; - gUnknown_03004DC0.unk16 = unk.unk9; - gUnknown_03004DC0.unk17 = unk.unk9; + gScanlineEffect.unkC = unk.control; + gScanlineEffect.dest = unk.dest; + gScanlineEffect.unk15 = unk.unk8; + gScanlineEffect.unk16 = unk.unk9; + gScanlineEffect.unk17 = unk.unk9; } -void sub_8089668(void) +void ScanlineEffect_TransferDma(void) { - if (gUnknown_03004DC0.unk15) + if (gScanlineEffect.unk15) { - if (gUnknown_03004DC0.unk15 == 3) + if (gScanlineEffect.unk15 == 3) { - gUnknown_03004DC0.unk15 = 0; + gScanlineEffect.unk15 = 0; DmaStop(0); gUnknown_0202FFA4 = 1; } else { DmaStop(0); - DmaSet(0, gUnknown_03004DC0.src[gUnknown_03004DC0.srcBank], gUnknown_03004DC0.dest, gUnknown_03004DC0.unkC); - gUnknown_03004DC0.unk10(); - gUnknown_03004DC0.srcBank ^= 1; + DmaSet(0, gScanlineEffect.src[gScanlineEffect.srcBank], gScanlineEffect.dest, gScanlineEffect.unkC); + gScanlineEffect.unk10(); + gScanlineEffect.srcBank ^= 1; } } } static void sub_80896F4(void) { - u16 *dest = (u16 *)gUnknown_03004DC0.dest; - u16 *src = (u16 *)&gUnknown_03004DE0[gUnknown_03004DC0.srcBank]; + u16 *dest = (u16 *)gScanlineEffect.dest; + u16 *src = (u16 *)&gUnknown_03004DE0[gScanlineEffect.srcBank]; *dest = *src; } static void sub_8089714(void) { - u32 *dest = (u32 *)gUnknown_03004DC0.dest; - u32 *src = (u32 *)&gUnknown_03004DE0[gUnknown_03004DC0.srcBank]; + u32 *dest = (u32 *)gScanlineEffect.dest; + u32 *src = (u32 *)&gUnknown_03004DE0[gScanlineEffect.srcBank]; *dest = *src; } @@ -111,7 +114,7 @@ static void task00_for_dp12(u8 taskId) if (gUnknown_0202FFA4) { DestroyTask(taskId); - gUnknown_03004DC0.taskId = 0xFF; + gScanlineEffect.taskId = 0xFF; } else { @@ -153,7 +156,7 @@ static void task00_for_dp12(u8 taskId) offset = gTasks[taskId].data[3] + 320; for (i = gTasks[taskId].data[0]; i < gTasks[taskId].data[1]; i++) { - gUnknown_03004DE0[gUnknown_03004DC0.srcBank][i] = gUnknown_03004DE0[0][offset] + value; + gUnknown_03004DE0[gScanlineEffect.srcBank][i] = gUnknown_03004DE0[0][offset] + value; offset++; } } @@ -165,7 +168,7 @@ static void task00_for_dp12(u8 taskId) offset = gTasks[taskId].data[3] + 320; for (i = gTasks[taskId].data[0]; i < gTasks[taskId].data[1]; i++) { - gUnknown_03004DE0[gUnknown_03004DC0.srcBank][i] = gUnknown_03004DE0[0][offset] + value; + gUnknown_03004DE0[gScanlineEffect.srcBank][i] = gUnknown_03004DE0[0][offset] + value; offset++; } gTasks[taskId].data[3]++; @@ -177,20 +180,20 @@ static void task00_for_dp12(u8 taskId) } } -static void sub_80898FC(u16 *a1, u8 a2, u8 a3, u8 a4) +static void GenerateWave(u16 *buffer, u8 frequency, u8 amplitude, u8 unused) { u16 i = 0; - u8 offset = 0; + u8 theta = 0; - while (i < 0x100) + while (i < 256) { - a1[i] = (gSineTable[offset] * a3) / 256; - offset += a2; + buffer[i] = (gSineTable[theta] * amplitude) / 256; + theta += frequency; i++; } } -u8 sub_8089944(u8 a1, u8 a2, u8 a3, u8 a4, u8 a5, u8 a6, u8 a7) +u8 ScanlineEffect_InitWave(u8 a1, u8 a2, u8 frequency, u8 amplitude, u8 a5, u8 a6, u8 a7) { int i; int offset; @@ -200,7 +203,7 @@ u8 sub_8089944(u8 a1, u8 a2, u8 a3, u8 a4, u8 a5, u8 a6, u8 a7) dp12_8087EA4(); unk.dest = (void *)(REG_ADDR_BG0HOFS + a6); - unk.control = ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1; + unk.control = HBLANK_DMA_CONTROL_16BIT; unk.unk8 = 1; unk.unk9 = 0; @@ -210,17 +213,17 @@ u8 sub_8089944(u8 a1, u8 a2, u8 a3, u8 a4, u8 a5, u8 a6, u8 a7) gTasks[taskId].data[0] = a1; gTasks[taskId].data[1] = a2; - gTasks[taskId].data[2] = 256 / a3; + gTasks[taskId].data[2] = 256 / frequency; gTasks[taskId].data[3] = 0; gTasks[taskId].data[4] = a5; gTasks[taskId].data[5] = a5; gTasks[taskId].data[6] = a6; gTasks[taskId].data[7] = a7; - gUnknown_03004DC0.taskId = taskId; + gScanlineEffect.taskId = taskId; gUnknown_0202FFA4 = 0; - sub_80898FC(&gUnknown_03004DE0[0][320], a3, a4, a2 - a1); + GenerateWave(&gUnknown_03004DE0[0][320], frequency, amplitude, a2 - a1); offset = 320; diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c index bae037ff7..d8e099130 100644 --- a/src/scene/cable_car.c +++ b/src/scene/cable_car.c @@ -208,7 +208,7 @@ static void CableCarMainCallback_Setup(void) case 0: default: SetVBlankCallback(NULL); - remove_some_task(); + ScanlineEffect_Stop(); DmaFill16Large(3, 0, VRAM, VRAM_SIZE, 0x1000); DmaFill32Defvars(3, 0, OAM, OAM_SIZE); DmaFill16Defvars(3, 0, PLTT, PLTT_SIZE); diff --git a/src/scene/contest_painting.c b/src/scene/contest_painting.c index 3b68f0143..3aa898b03 100644 --- a/src/scene/contest_painting.c +++ b/src/scene/contest_painting.c @@ -147,7 +147,7 @@ static void ShowContestPainting(void) switch (gMain.state) { case 0: - remove_some_task(); + ScanlineEffect_Stop(); SetVBlankCallback(NULL); gUnknown_03005E8C = &ewram15DE0; ContestPaintingInitVars(TRUE); diff --git a/src/scene/evolution_scene.c b/src/scene/evolution_scene.c index dcca1fddb..54af6013f 100644 --- a/src/scene/evolution_scene.c +++ b/src/scene/evolution_scene.c @@ -215,7 +215,7 @@ void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo, sub_800D6D4(); sub_800DAB8(); ResetSpriteData(); - remove_some_task(); + ScanlineEffect_Stop(); ResetTasks(); FreeAllSpritePalettes(); @@ -3934,7 +3934,7 @@ static void VBlankCB_EvolutionScene(void) LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); - sub_8089668(); + ScanlineEffect_TransferDma(); } static void VBlankCB_TradeEvolutionScene(void) @@ -3950,7 +3950,7 @@ static void VBlankCB_TradeEvolutionScene(void) LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); - sub_8089668(); + ScanlineEffect_TransferDma(); } static void sub_81150D8(void) diff --git a/src/scene/hall_of_fame.c b/src/scene/hall_of_fame.c index 948c288ff..f39745c02 100644 --- a/src/scene/hall_of_fame.c +++ b/src/scene/hall_of_fame.c @@ -95,7 +95,7 @@ bool8 sub_80C5DCC(void); bool8 sub_80C5F98(void); void ReturnFromHallOfFamePC(void); u16 SpeciesToPokedexNum(u16 species); -void remove_some_task(void); +void ScanlineEffect_Stop(void); // data and gfx @@ -1278,7 +1278,7 @@ static void sub_81433E0(void) static void sub_8143570(void) { - remove_some_task(); + ScanlineEffect_Stop(); ResetTasks(); ResetSpriteData(); FreeAllSpritePalettes(); diff --git a/src/scene/intro.c b/src/scene/intro.c index beceb6e90..d7d772a40 100644 --- a/src/scene/intro.c +++ b/src/scene/intro.c @@ -873,7 +873,7 @@ static u8 SetUpCopyrightScreen(void) DmaFill16(3, 0, (void *)(PLTT + 2), PLTT_SIZE - 2); ResetPaletteFade(); LoadCopyrightGraphics(0, 0x3800, 0); - remove_some_task(); + ScanlineEffect_Stop(); ResetTasks(); ResetSpriteData(); FreeAllSpritePalettes(); diff --git a/src/scene/title_screen.c b/src/scene/title_screen.c index bd41ac641..ca4194800 100644 --- a/src/scene/title_screen.c +++ b/src/scene/title_screen.c @@ -598,7 +598,7 @@ static void StartPokemonLogoShine(bool8 flashBackground) static void VBlankCB(void) { - sub_8089668(); + ScanlineEffect_TransferDma(); LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); @@ -644,7 +644,7 @@ void CB2_InitTitleScreen(void) LZ77UnCompVram(sLegendaryMonTilemap, (void *)(VRAM + 0xC000)); LZ77UnCompVram(sBackdropTilemap, (void *)(VRAM + 0xC800)); LoadPalette(sLegendaryMonPalettes, 0xE0, sizeof(sLegendaryMonPalettes)); - remove_some_task(); + ScanlineEffect_Stop(); ResetTasks(); ResetSpriteData(); FreeAllSpritePalettes(); @@ -711,7 +711,7 @@ void CB2_InitTitleScreen(void) if (!UpdatePaletteFade()) { StartPokemonLogoShine(FALSE); - sub_8089944(0, 0xA0, 4, 4, 0, 4, 1); + ScanlineEffect_InitWave(0, 0xA0, 4, 4, 0, 4, 1); SetMainCallback2(MainCB2); } break; -- cgit v1.2.3 From beac14a9a0ab072186fa99afcfcc0d844b77a68d Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Wed, 10 Jan 2018 12:12:55 -0600 Subject: label more of scanline_effect.c --- src/battle/anim/draw.c | 28 ++++--- src/battle/battle_2.c | 22 +++--- src/battle/battle_transition.c | 148 +++++++++++++++++----------------- src/contest.c | 2 +- src/debug/matsuda_debug_menu.c | 2 +- src/easy_chat_1.c | 6 +- src/easy_chat_2.c | 2 +- src/engine/trainer_card.c | 28 +++---- src/field/field_screen_effect.c | 18 ++--- src/field/overworld.c | 6 +- src/field/use_pokeblock.c | 4 +- src/pokenav_before.c | 2 +- src/scanline_effect.c | 170 +++++++++++++++++++++++----------------- src/scene/evolution_scene.c | 4 +- src/scene/title_screen.c | 4 +- 15 files changed, 234 insertions(+), 212 deletions(-) (limited to 'src') diff --git a/src/battle/anim/draw.c b/src/battle/anim/draw.c index ac1ae08cb..fc74e3f46 100755 --- a/src/battle/anim/draw.c +++ b/src/battle/anim/draw.c @@ -21,7 +21,8 @@ static void sub_80D0E8C(struct Sprite* sprite); void sub_80D0C88(u8 taskId) { struct Task* task = &gTasks[taskId]; - struct UnknownTaskStruct sp; + struct ScanlineEffectParams params; + s16 i; task->data[0] = sub_8077FC0(gAnimBankTarget) + 32; task->data[1] = 4; @@ -30,30 +31,31 @@ void sub_80D0C88(u8 taskId) task->data[4] = 0; task->data[5] = 0; task->data[15] = sub_807A100(gAnimBankTarget, 0); + if (GetBankIdentity_permutated(gAnimBankTarget) == 1) { task->data[6] = gBattle_BG1_X; - sp.dest = (u16 *)REG_ADDR_BG1HOFS; + params.dmaDest = (u16 *)REG_ADDR_BG1HOFS; } else { task->data[6] = gBattle_BG2_X; - sp.dest = (u16 *)REG_ADDR_BG2HOFS; + params.dmaDest = (u16 *)REG_ADDR_BG2HOFS; } for (i = task->data[0] - 0x40; i <= task->data[0];i++) { if (i >= 0) { - gUnknown_03004DE0[0][i] = task->data[6] + 0xF0; - gUnknown_03004DE0[1][i] = task->data[6] + 0xF0; + gScanlineEffectRegBuffers[0][i] = task->data[6] + 0xF0; + gScanlineEffectRegBuffers[1][i] = task->data[6] + 0xF0; } } - sp.control = 0xa2600001; - sp.unk8 = 1; - sp.unk9 = 0; - sub_80895F8(sp); + params.dmaControl = SCANLINE_EFFECT_DMACNT_16BIT; + params.unk8 = 1; + params.unk9 = 0; + ScanlineEffect_SetParams(params); task->func = sub_80D0D68; } @@ -91,8 +93,8 @@ void sub_80D0D68(u8 taskId) if (task->data[5] >= 0) { - gUnknown_03004DE0[0][task->data[5]] = task->data[6]; - gUnknown_03004DE0[1][task->data[5]] = task->data[6]; + gScanlineEffectRegBuffers[0][task->data[5]] = task->data[6]; + gScanlineEffectRegBuffers[1][task->data[5]] = task->data[6]; } if (++task->data[3] >= task->data[15]) @@ -178,7 +180,7 @@ _080D0DE0:\n\ ldrsh r0, [r3, r1]\n\ cmp r0, 0\n\ blt _080D0E04\n\ - ldr r2, _080D0E28 @ =gUnknown_03004DE0\n\ + ldr r2, _080D0E28 @ =gScanlineEffectRegBuffers\n\ lsls r0, 1\n\ adds r0, r2\n\ ldrh r1, [r3, 0x14]\n\ @@ -212,7 +214,7 @@ _080D0E22:\n\ pop {r0}\n\ bx r0\n\ .align 2, 0\n\ -_080D0E28: .4byte gUnknown_03004DE0\n\ +_080D0E28: .4byte gScanlineEffectRegBuffers\n\ _080D0E2C: .4byte gScanlineEffect\n\ .syntax divided\n"); } diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c index da6c9a2b4..f4fff742c 100644 --- a/src/battle/battle_2.c +++ b/src/battle/battle_2.c @@ -223,17 +223,17 @@ void InitBattle(void) for (i = 0; i < 80; i++) { - gUnknown_03004DE0[0][i] = 0xF0; - gUnknown_03004DE0[1][i] = 0xF0; + gScanlineEffectRegBuffers[0][i] = 0xF0; + gScanlineEffectRegBuffers[1][i] = 0xF0; } for (i = 80; i < 160; i++) { asm(""::"r"(i)); // Needed to stop the compiler from optimizing out the loop counter - gUnknown_03004DE0[0][i] = 0xFF10; - gUnknown_03004DE0[1][i] = 0xFF10; + gScanlineEffectRegBuffers[0][i] = 0xFF10; + gScanlineEffectRegBuffers[1][i] = 0xFF10; } - //sub_80895F8(gUnknown_081F9674.unk0, gUnknown_081F9674.unk4, gUnknown_081F9674.unk8); - sub_80895F8(gUnknown_081F9674); + //ScanlineEffect_SetParams(gUnknown_081F9674.unk0, gUnknown_081F9674.unk4, gUnknown_081F9674.unk8); + ScanlineEffect_SetParams(gUnknown_081F9674); Text_LoadWindowTemplate(&gWindowTemplate_81E6C58); ResetPaletteFade(); gBattle_BG0_X = 0; @@ -1073,7 +1073,7 @@ void sub_800FCFC(void) LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); - ScanlineEffect_TransferDma(); + ScanlineEffect_InitHBlankDmaTransfer(); } void nullsub_36(struct Sprite *sprite) @@ -1201,14 +1201,14 @@ void c2_8011A1C(void) for (i = 0; i < 80; i++) { - gUnknown_03004DE0[0][i] = 0xF0; - gUnknown_03004DE0[1][i] = 0xF0; + gScanlineEffectRegBuffers[0][i] = 0xF0; + gScanlineEffectRegBuffers[1][i] = 0xF0; } for (i = 80; i < 160; i++) { asm(""::"r"(i)); // Needed to stop the compiler from optimizing out the loop counter - gUnknown_03004DE0[0][i] = 0xFF10; - gUnknown_03004DE0[1][i] = 0xFF10; + gScanlineEffectRegBuffers[0][i] = 0xFF10; + gScanlineEffectRegBuffers[1][i] = 0xFF10; } Text_LoadWindowTemplate(&gWindowTemplate_81E6C58); ResetPaletteFade(); diff --git a/src/battle/battle_transition.c b/src/battle/battle_transition.c index 48ef86fa2..843203a1e 100644 --- a/src/battle/battle_transition.c +++ b/src/battle/battle_transition.c @@ -18,8 +18,6 @@ void sub_807DE10(void); void dp12_8087EA4(void); -extern u16 gUnknown_03005560[]; - extern const struct OamData gFieldOamData_32x32; struct TransitionData @@ -674,7 +672,7 @@ static bool8 Phase2_Transition_Swirl_Func1(struct Task* task) sub_811D658(); dp12_8087EA4(); BeginNormalPaletteFade(-1, 4, 0, 0x10, 0); - sub_811D6E8(gUnknown_03005560, TRANSITION_STRUCT.field_14, 0, 2, 0, 160); + sub_811D6E8(gScanlineEffectRegBuffers[1], TRANSITION_STRUCT.field_14, 0, 2, 0, 160); SetVBlankCallback(VBlankCB_Phase2_Transition_Swirl); SetHBlankCallback(HBlankCB_Phase2_Transition_Swirl); @@ -695,7 +693,7 @@ static bool8 Phase2_Transition_Swirl_Func2(struct Task* task) task->data[1] += 4; task->data[2] += 8; - sub_811D6E8(gUnknown_03004DE0[0], TRANSITION_STRUCT.field_14, task->data[1], 2, task->data[2], 160); + sub_811D6E8(gScanlineEffectRegBuffers[0], TRANSITION_STRUCT.field_14, task->data[1], 2, task->data[2], 160); if (!gPaletteFade.active) { @@ -711,12 +709,12 @@ static void VBlankCB_Phase2_Transition_Swirl(void) { VBlankCB_BattleTransition(); if (TRANSITION_STRUCT.VBlank_DMA) - DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); + DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320); } static void HBlankCB_Phase2_Transition_Swirl(void) { - u16 var = gUnknown_03004DE0[1][REG_VCOUNT]; + u16 var = gScanlineEffectRegBuffers[1][REG_VCOUNT]; REG_BG1HOFS = var; REG_BG2HOFS = var; REG_BG3HOFS = var; @@ -735,7 +733,7 @@ static bool8 Phase2_Transition_Shuffle_Func1(struct Task* task) dp12_8087EA4(); BeginNormalPaletteFade(-1, 4, 0, 0x10, 0); - memset(gUnknown_03005560, TRANSITION_STRUCT.field_16, 0x140); + memset(gScanlineEffectRegBuffers[1], TRANSITION_STRUCT.field_16, 0x140); SetVBlankCallback(VBlankCB_Phase2_Transition_Shuffle); SetHBlankCallback(HBlankCB_Phase2_Transition_Shuffle); @@ -764,7 +762,7 @@ static bool8 Phase2_Transition_Shuffle_Func2(struct Task* task) for (i = 0; i < 160; i++, r4 += 4224) { u16 var = r4 / 256; - gUnknown_03004DE0[0][i] = TRANSITION_STRUCT.field_16 + Sin(var, r3); + gScanlineEffectRegBuffers[0][i] = TRANSITION_STRUCT.field_16 + Sin(var, r3); } if (!gPaletteFade.active) @@ -778,12 +776,12 @@ static void VBlankCB_Phase2_Transition_Shuffle(void) { VBlankCB_BattleTransition(); if (TRANSITION_STRUCT.VBlank_DMA) - DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); + DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320); } static void HBlankCB_Phase2_Transition_Shuffle(void) { - u16 var = gUnknown_03004DE0[1][REG_VCOUNT]; + u16 var = gScanlineEffectRegBuffers[1][REG_VCOUNT]; REG_BG1VOFS = var; REG_BG2VOFS = var; REG_BG3VOFS = var; @@ -815,7 +813,7 @@ static bool8 Phase2_Transition_BigPokeball_Func1(struct Task* task) for (i = 0; i < 160; i++) { - gUnknown_03005560[i] = 240; + gScanlineEffectRegBuffers[1][i] = 240; } SetVBlankCallback(VBlankCB0_Phase2_Transition_BigPokeball); @@ -844,7 +842,7 @@ static bool8 Phase2_Transition_BigPokeball_Func2(struct Task* task) dst1[i * 32 + j] = *BigPokeballMap | 0xF000; } } - sub_811D6E8(gUnknown_03004DE0[0], 0, task->data[4], 132, task->data[5], 160); + sub_811D6E8(gScanlineEffectRegBuffers[0], 0, task->data[4], 132, task->data[5], 160); task->tState++; return TRUE; @@ -864,7 +862,7 @@ static bool8 Phase2_Transition_BigPokeball_Func3(struct Task* task) task->data[4] += 8; task->data[5] -= 256; - sub_811D6E8(gUnknown_03004DE0[0], 0, task->data[4], 132, task->data[5] >> 8, 160); + sub_811D6E8(gScanlineEffectRegBuffers[0], 0, task->data[4], 132, task->data[5] >> 8, 160); TRANSITION_STRUCT.VBlank_DMA++; return FALSE; @@ -884,7 +882,7 @@ static bool8 Phase2_Transition_BigPokeball_Func4(struct Task* task) task->data[4] += 8; task->data[5] -= 256; - sub_811D6E8(gUnknown_03004DE0[0], 0, task->data[4], 132, task->data[5] >> 8, 160); + sub_811D6E8(gScanlineEffectRegBuffers[0], 0, task->data[4], 132, task->data[5] >> 8, 160); TRANSITION_STRUCT.VBlank_DMA++; return FALSE; @@ -896,7 +894,7 @@ static bool8 Phase2_Transition_BigPokeball_Func5(struct Task* task) task->data[4] += 8; task->data[5] -= 256; - sub_811D6E8(gUnknown_03004DE0[0], 0, task->data[4], 132, task->data[5] >> 8, 160); + sub_811D6E8(gScanlineEffectRegBuffers[0], 0, task->data[4], 132, task->data[5] >> 8, 160); if (task->data[5] <= 0) { @@ -921,7 +919,7 @@ static bool8 Phase2_Transition_BigPokeball_Func6(struct Task* task) if (task->data[1] < 0) task->data[1] = 0; } - sub_811D764(gUnknown_03004DE0[0], 120, 80, task->data[1]); + sub_811D764(gScanlineEffectRegBuffers[0], 120, 80, task->data[1]); if (task->data[1] == 0) { DmaStop(0); @@ -943,7 +941,7 @@ static void Transition_BigPokeball_Vblank(void) DmaStop(0); VBlankCB_BattleTransition(); if (TRANSITION_STRUCT.VBlank_DMA) - DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); + DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320); REG_WININ = TRANSITION_STRUCT.WININ; REG_WINOUT = TRANSITION_STRUCT.WINOUT; REG_WIN0V = TRANSITION_STRUCT.WIN0V; @@ -954,13 +952,13 @@ static void Transition_BigPokeball_Vblank(void) static void VBlankCB0_Phase2_Transition_BigPokeball(void) { Transition_BigPokeball_Vblank(); - DmaSet(0, gUnknown_03005560, ®_BG0HOFS, 0xA2400001); + DmaSet(0, gScanlineEffectRegBuffers[1], ®_BG0HOFS, 0xA2400001); } static void VBlankCB1_Phase2_Transition_BigPokeball(void) { Transition_BigPokeball_Vblank(); - DmaSet(0, gUnknown_03005560, ®_WIN0H, 0xA2400001); + DmaSet(0, gScanlineEffectRegBuffers[1], ®_WIN0H, 0xA2400001); } static void Phase2Task_Transition_PokeballsTrail(u8 taskID) @@ -1087,7 +1085,7 @@ static bool8 Phase2_Transition_Clockwise_BlackFade_Func1(struct Task* task) for (i = 0; i < 160; i++) { - gUnknown_03005560[i] = 0xF3F4; + gScanlineEffectRegBuffers[1][i] = 0xF3F4; } SetVBlankCallback(VBlankCB_Phase2_Transition_Clockwise_BlackFade); @@ -1104,7 +1102,7 @@ static bool8 Phase2_Transition_Clockwise_BlackFade_Func2(struct Task* task) sub_811D8FC(TRANSITION_STRUCT.data, 120, 80, TRANSITION_STRUCT.data[4], -1, 1, 1); do { - gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (TRANSITION_STRUCT.data[2] + 1) | 0x7800; + gScanlineEffectRegBuffers[0][TRANSITION_STRUCT.data[3]] = (TRANSITION_STRUCT.data[2] + 1) | 0x7800; } while (!sub_811D978(TRANSITION_STRUCT.data, 1, 1)); TRANSITION_STRUCT.data[4] += 16; @@ -1132,7 +1130,7 @@ static bool8 Phase2_Transition_Clockwise_BlackFade_Func3(struct Task* task) r1 = 120, r3 = TRANSITION_STRUCT.data[2] + 1; if (TRANSITION_STRUCT.data[5] >= 80) r1 = TRANSITION_STRUCT.data[2], r3 = 240; - gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (r3) | (r1 << 8); + gScanlineEffectRegBuffers[0][TRANSITION_STRUCT.data[3]] = (r3) | (r1 << 8); if (var != 0) break; var = sub_811D978(TRANSITION_STRUCT.data, 1, 1); @@ -1148,7 +1146,7 @@ static bool8 Phase2_Transition_Clockwise_BlackFade_Func3(struct Task* task) { while (TRANSITION_STRUCT.data[3] < TRANSITION_STRUCT.data[5]) { - gUnknown_03004DE0[0][++TRANSITION_STRUCT.data[3]] = (r3) | (r1 << 8); + gScanlineEffectRegBuffers[0][++TRANSITION_STRUCT.data[3]] = (r3) | (r1 << 8); } } @@ -1163,7 +1161,7 @@ static bool8 Phase2_Transition_Clockwise_BlackFade_Func4(struct Task* task) sub_811D8FC(TRANSITION_STRUCT.data, 120, 80, TRANSITION_STRUCT.data[4], 160, 1, 1); do { - gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (TRANSITION_STRUCT.data[2] << 8) | 0xF0; + gScanlineEffectRegBuffers[0][TRANSITION_STRUCT.data[3]] = (TRANSITION_STRUCT.data[2] << 8) | 0xF0; } while (!sub_811D978(TRANSITION_STRUCT.data, 1, 1)); TRANSITION_STRUCT.data[4] -= 16; @@ -1188,10 +1186,10 @@ static bool8 Phase2_Transition_Clockwise_BlackFade_Func5(struct Task* task) while (1) { - r1 = gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] & 0xFF, r2 = TRANSITION_STRUCT.data[2]; + r1 = gScanlineEffectRegBuffers[0][TRANSITION_STRUCT.data[3]] & 0xFF, r2 = TRANSITION_STRUCT.data[2]; if (TRANSITION_STRUCT.data[5] <= 80) r2 = 120, r1 = TRANSITION_STRUCT.data[2]; - gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (r1) | (r2 << 8); + gScanlineEffectRegBuffers[0][TRANSITION_STRUCT.data[3]] = (r1) | (r2 << 8); r3 = 0; if (var != 0) break; @@ -1208,7 +1206,7 @@ static bool8 Phase2_Transition_Clockwise_BlackFade_Func5(struct Task* task) { while (TRANSITION_STRUCT.data[3] > TRANSITION_STRUCT.data[5]) { - gUnknown_03004DE0[0][--TRANSITION_STRUCT.data[3]] = (r1) | (r2 << 8); + gScanlineEffectRegBuffers[0][--TRANSITION_STRUCT.data[3]] = (r1) | (r2 << 8); } } @@ -1228,7 +1226,7 @@ static bool8 Phase2_Transition_Clockwise_BlackFade_Func6(struct Task* task) r2 = 120, r3 = TRANSITION_STRUCT.data[2]; if (TRANSITION_STRUCT.data[2] >= 120) r2 = 0, r3 = 240; - gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (r3) | (r2 << 8); + gScanlineEffectRegBuffers[0][TRANSITION_STRUCT.data[3]] = (r3) | (r2 << 8); } while (!sub_811D978(TRANSITION_STRUCT.data, 1, 1)); @@ -1253,12 +1251,12 @@ static void VBlankCB_Phase2_Transition_Clockwise_BlackFade(void) DmaStop(0); VBlankCB_BattleTransition(); if (TRANSITION_STRUCT.VBlank_DMA != 0) - DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); + DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320); REG_WININ = TRANSITION_STRUCT.WININ; REG_WINOUT = TRANSITION_STRUCT.WINOUT; REG_WIN0V = TRANSITION_STRUCT.WIN0V; - REG_WIN0H = gUnknown_03004DE0[1][0]; - DmaSet(0, gUnknown_03004DE0[1], ®_WIN0H, 0xA2400001); + REG_WIN0H = gScanlineEffectRegBuffers[1][0]; + DmaSet(0, gScanlineEffectRegBuffers[1], ®_WIN0H, 0xA2400001); } static void Phase2Task_Transition_Ripple(u8 taskID) @@ -1275,7 +1273,7 @@ static bool8 Phase2_Transition_Ripple_Func1(struct Task* task) for (i = 0; i < 160; i++) { - gUnknown_03005560[i] = TRANSITION_STRUCT.field_16; + gScanlineEffectRegBuffers[1][i] = TRANSITION_STRUCT.field_16; } SetVBlankCallback(VBlankCB_Phase2_Transition_Ripple); @@ -1308,7 +1306,7 @@ static bool8 Phase2_Transition_Ripple_Func2(struct Task* task) // todo: fix the asm s16 var = r4 >> 8; asm(""); - gUnknown_03004DE0[0][i] = TRANSITION_STRUCT.field_16 + Sin(var, r3); + gScanlineEffectRegBuffers[0][i] = TRANSITION_STRUCT.field_16 + Sin(var, r3); asm(""); } @@ -1329,12 +1327,12 @@ static void VBlankCB_Phase2_Transition_Ripple(void) { VBlankCB_BattleTransition(); if (TRANSITION_STRUCT.VBlank_DMA) - DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); + DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320); } static void HBlankCB_Phase2_Transition_Ripple(void) { - u16 var = gUnknown_03004DE0[1][REG_VCOUNT]; + u16 var = gScanlineEffectRegBuffers[1][REG_VCOUNT]; REG_BG1VOFS = var; REG_BG2VOFS = var; REG_BG3VOFS = var; @@ -1359,7 +1357,7 @@ static bool8 Phase2_Transition_Wave_Func1(struct Task* task) for (i = 0; i < 160; i++) { - gUnknown_03004DE0[1][i] = 242; + gScanlineEffectRegBuffers[1][i] = 242; } SetVBlankCallback(VBlankCB_Phase2_Transition_Wave); @@ -1375,7 +1373,7 @@ static bool8 Phase2_Transition_Wave_Func2(struct Task* task) bool8 nextFunc; TRANSITION_STRUCT.VBlank_DMA = 0; - toStore = gUnknown_03004DE0[0]; + toStore = gScanlineEffectRegBuffers[0]; r5 = task->data[2]; task->data[2] += 16; task->data[1] += 8; @@ -1411,11 +1409,11 @@ static void VBlankCB_Phase2_Transition_Wave(void) DmaStop(0); VBlankCB_BattleTransition(); if (TRANSITION_STRUCT.VBlank_DMA != 0) - DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); + DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320); REG_WININ = TRANSITION_STRUCT.WININ; REG_WINOUT = TRANSITION_STRUCT.WINOUT; REG_WIN0V = TRANSITION_STRUCT.WIN0V; - DmaSet(0, gUnknown_03004DE0[1], ®_WIN0H, 0xA2400001); + DmaSet(0, gScanlineEffectRegBuffers[1], ®_WIN0H, 0xA2400001); } #define tMugshotOpponentID data[13] @@ -1474,7 +1472,7 @@ static bool8 Phase2_Mugshot_Func1(struct Task* task) for (i = 0; i < 160; i++) { - gUnknown_03004DE0[1][i] = 0xF0F1; + gScanlineEffectRegBuffers[1][i] = 0xF0F1; } SetVBlankCallback(VBlankCB0_Phase2_Mugshots); @@ -1519,7 +1517,7 @@ static bool8 Phase2_Mugshot_Func3(struct Task* task) TRANSITION_STRUCT.VBlank_DMA = 0; - toStore = gUnknown_03004DE0[0]; + toStore = gScanlineEffectRegBuffers[0]; r5 = task->data[1]; task->data[1] += 0x10; @@ -1565,7 +1563,7 @@ static bool8 Phase2_Mugshot_Func4(struct Task* task) TRANSITION_STRUCT.VBlank_DMA = 0; - for (i = 0, toStore = gUnknown_03004DE0[0]; i < 160; i++, toStore++) + for (i = 0, toStore = gScanlineEffectRegBuffers[0]; i < 160; i++, toStore++) { *toStore = 0xF0; } @@ -1608,8 +1606,8 @@ static bool8 Phase2_Mugshot_Func6(struct Task* task) TRANSITION_STRUCT.VBlank_DMA = 0; SetVBlankCallback(NULL); DmaStop(0); - memset(gUnknown_03004DE0[0], 0, 0x140); - memset(gUnknown_03004DE0[1], 0, 0x140); + memset(gScanlineEffectRegBuffers[0], 0, 0x140); + memset(gScanlineEffectRegBuffers[1], 0, 0x140); REG_WIN0H = 0xF0; REG_BLDY = 0; task->tState++; @@ -1642,15 +1640,15 @@ static bool8 Phase2_Mugshot_Func7(struct Task* task) { s16 index1 = 0x50 - i; s16 index2 = 0x50 + i; - if (gUnknown_03004DE0[0][index1] <= 15) + if (gScanlineEffectRegBuffers[0][index1] <= 15) { r6 = TRUE; - gUnknown_03004DE0[0][index1]++; + gScanlineEffectRegBuffers[0][index1]++; } - if (gUnknown_03004DE0[0][index2] <= 15) + if (gScanlineEffectRegBuffers[0][index2] <= 15) { r6 = TRUE; - gUnknown_03004DE0[0][index2]++; + gScanlineEffectRegBuffers[0][index2]++; } } } @@ -1678,7 +1676,7 @@ static bool8 Phase2_Mugshot_Func9(struct Task* task) TRANSITION_STRUCT.VBlank_DMA = 0; task->data[3]++; - memset(gUnknown_03004DE0[0], task->data[3], 0x140); + memset(gScanlineEffectRegBuffers[0], task->data[3], 0x140); if (task->data[3] > 15) task->tState++; @@ -1699,12 +1697,12 @@ static void VBlankCB0_Phase2_Mugshots(void) DmaStop(0); VBlankCB_BattleTransition(); if (TRANSITION_STRUCT.VBlank_DMA != 0) - DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); + DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320); REG_BG0VOFS = TRANSITION_STRUCT.field_1C; REG_WININ = TRANSITION_STRUCT.WININ; REG_WINOUT = TRANSITION_STRUCT.WINOUT; REG_WIN0V = TRANSITION_STRUCT.WIN0V; - DmaSet(0, gUnknown_03004DE0[1], ®_WIN0H, 0xA2400001); + DmaSet(0, gScanlineEffectRegBuffers[1], ®_WIN0H, 0xA2400001); } static void VBlankCB1_Phase2_Mugshots(void) @@ -1712,9 +1710,9 @@ static void VBlankCB1_Phase2_Mugshots(void) DmaStop(0); VBlankCB_BattleTransition(); if (TRANSITION_STRUCT.VBlank_DMA != 0) - DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); + DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320); REG_BLDCNT = TRANSITION_STRUCT.BLDCNT; - DmaSet(0, gUnknown_03004DE0[1], ®_BLDY, 0xA2400001); + DmaSet(0, gScanlineEffectRegBuffers[1], ®_BLDY, 0xA2400001); } static void HBlankCB_Phase2_Mugshots(void) @@ -1856,8 +1854,8 @@ static bool8 Phase2_Transition_Slice_Func1(struct Task* task) for (i = 0; i < 160; i++) { - gUnknown_03004DE0[1][i] = TRANSITION_STRUCT.field_14; - gUnknown_03004DE0[1][160 + i] = 0xF0; + gScanlineEffectRegBuffers[1][i] = TRANSITION_STRUCT.field_14; + gScanlineEffectRegBuffers[1][160 + i] = 0xF0; } REG_IE |= INTR_FLAG_HBLANK; @@ -1886,8 +1884,8 @@ static bool8 Phase2_Transition_Slice_Func2(struct Task* task) for (i = 0; i < 160; i++) { - u16* storeLoc1 = &gUnknown_03004DE0[0][i]; - u16* storeLoc2 = &gUnknown_03004DE0[0][i + 160]; + u16* storeLoc1 = &gScanlineEffectRegBuffers[0][i]; + u16* storeLoc2 = &gScanlineEffectRegBuffers[0][i + 160]; if (1 & i) { *storeLoc1 = TRANSITION_STRUCT.field_14 + task->data[1]; @@ -1923,13 +1921,13 @@ static void VBlankCB_Phase2_Transition_Slice(void) REG_WINOUT = TRANSITION_STRUCT.WINOUT; REG_WIN0V = TRANSITION_STRUCT.WIN0V; if (TRANSITION_STRUCT.VBlank_DMA) - DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 640); - DmaSet(0, &gUnknown_03004DE0[1][160], ®_WIN0H, 0xA2400001); + DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 640); + DmaSet(0, &gScanlineEffectRegBuffers[1][160], ®_WIN0H, 0xA2400001); } static void HBlankCB_Phase2_Transition_Slice(void) { - u16 var = gUnknown_03004DE0[1][REG_VCOUNT]; + u16 var = gScanlineEffectRegBuffers[1][REG_VCOUNT]; REG_BG1HOFS = var; REG_BG2HOFS = var; REG_BG3HOFS = var; @@ -1955,8 +1953,8 @@ static bool8 Phase2_Transition_WhiteFade_Func1(struct Task* task) for (i = 0; i < 160; i++) { - gUnknown_03004DE0[1][i] = 0; - gUnknown_03004DE0[1][i + 160] = 0xF0; + gScanlineEffectRegBuffers[1][i] = 0; + gScanlineEffectRegBuffers[1][i + 160] = 0xF0; } REG_IE |= INTR_FLAG_HBLANK; @@ -2038,8 +2036,8 @@ static void VBlankCB0_Phase2_Transition_WhiteFade(void) REG_WINOUT = TRANSITION_STRUCT.WINOUT; REG_WIN0V = TRANSITION_STRUCT.field_6; if (TRANSITION_STRUCT.VBlank_DMA) - DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 640); - DmaSet(0, &gUnknown_03004DE0[1][160], ®_WIN0H, 0xA2400001); + DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 640); + DmaSet(0, &gScanlineEffectRegBuffers[1][160], ®_WIN0H, 0xA2400001); } static void VBlankCB1_Phase2_Transition_WhiteFade(void) @@ -2055,7 +2053,7 @@ static void VBlankCB1_Phase2_Transition_WhiteFade(void) static void HBlankCB_Phase2_Transition_WhiteFade(void) { - REG_BLDY = gUnknown_03004DE0[1][REG_VCOUNT]; + REG_BLDY = gScanlineEffectRegBuffers[1][REG_VCOUNT]; } static void sub_811CFD0(struct Sprite* sprite) @@ -2069,8 +2067,8 @@ static void sub_811CFD0(struct Sprite* sprite) else { u16 i; - u16* ptr1 = &gUnknown_03004DE0[0][sprite->pos1.y]; - u16* ptr2 = &gUnknown_03004DE0[0][sprite->pos1.y + 160]; + u16* ptr1 = &gScanlineEffectRegBuffers[0][sprite->pos1.y]; + u16* ptr2 = &gScanlineEffectRegBuffers[0][sprite->pos1.y + 160]; for (i = 0; i < 20; i++) { ptr1[i] = sprite->data[0] >> 8; @@ -2168,10 +2166,10 @@ static bool8 Phase2_Transition_Shards_Func1(struct Task* task) for (i = 0; i < 160; i++) { - gUnknown_03004DE0[0][i] = 0xF0; + gScanlineEffectRegBuffers[0][i] = 0xF0; } - CpuSet(gUnknown_03004DE0[0], gUnknown_03004DE0[1], 0xA0); + CpuSet(gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 0xA0); SetVBlankCallback(VBlankCB_Phase2_Transition_Shards); task->tState++; @@ -2200,8 +2198,8 @@ static bool8 Phase2_Transition_Shards_Func3(struct Task* task) for (i = 0, nextFunc = FALSE; i < 16; i++) { - s16 r3 = gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] >> 8; - s16 r4 = gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] & 0xFF; + s16 r3 = gScanlineEffectRegBuffers[0][TRANSITION_STRUCT.data[3]] >> 8; + s16 r4 = gScanlineEffectRegBuffers[0][TRANSITION_STRUCT.data[3]] & 0xFF; if (task->data[2] == 0) { if (r3 < TRANSITION_STRUCT.data[2]) @@ -2216,7 +2214,7 @@ static bool8 Phase2_Transition_Shards_Func3(struct Task* task) if (r4 <= r3) r4 = r3; } - gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (r4) | (r3 << 8); + gScanlineEffectRegBuffers[0][TRANSITION_STRUCT.data[3]] = (r4) | (r3 << 8); if (nextFunc) { task->tState++; @@ -2263,12 +2261,12 @@ static void VBlankCB_Phase2_Transition_Shards(void) DmaStop(0); VBlankCB_BattleTransition(); if (TRANSITION_STRUCT.VBlank_DMA) - DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); + DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320); REG_WININ = TRANSITION_STRUCT.WININ; REG_WINOUT = TRANSITION_STRUCT.WINOUT; REG_WIN0V = TRANSITION_STRUCT.WIN0V; - REG_WIN0H = gUnknown_03004DE0[1][0]; - DmaSet(0, gUnknown_03004DE0[1], ®_WIN0H, 0xA2400001); + REG_WIN0H = gScanlineEffectRegBuffers[1][0]; + DmaSet(0, gScanlineEffectRegBuffers[1], ®_WIN0H, 0xA2400001); } static void CreatePhase1Task(s16 a0, s16 a1, s16 a2, s16 a3, s16 a4) diff --git a/src/contest.c b/src/contest.c index e39ce3daa..e41838cb1 100644 --- a/src/contest.c +++ b/src/contest.c @@ -635,7 +635,7 @@ void ContestVBlankCallback(void) TransferPlttBuffer(); LoadOam(); ProcessSpriteCopyRequests(); - ScanlineEffect_TransferDma(); + ScanlineEffect_InitHBlankDmaTransfer(); } void sub_80ABB70(u8 taskId) diff --git a/src/debug/matsuda_debug_menu.c b/src/debug/matsuda_debug_menu.c index 85a8800e7..7c250b584 100644 --- a/src/debug/matsuda_debug_menu.c +++ b/src/debug/matsuda_debug_menu.c @@ -516,7 +516,7 @@ static void sub_80AA090(void) LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); - ScanlineEffect_TransferDma(); + ScanlineEffect_InitHBlankDmaTransfer(); } static void sub_80AA10C(void) diff --git a/src/easy_chat_1.c b/src/easy_chat_1.c index 7ca647b93..3bed951d6 100644 --- a/src/easy_chat_1.c +++ b/src/easy_chat_1.c @@ -43,7 +43,7 @@ const u16 gBerryMasterWifePhrases[][2] = // const pointer to gEasyChatStruct-> easy_chat might be two separate files. struct Shared1000 *const gEasyChatStruct = (struct Shared1000 *)(gSharedMem + 0x1000); -const struct UnknownTaskStruct gUnknown_083DB698 = +const struct ScanlineEffectParams gUnknown_083DB698 = { ®_BG3VOFS, ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1, @@ -300,7 +300,7 @@ void sub_80E62F8(void) dp12_8087EA4(); ScanlineEffect_Stop(); sub_80EAD08(); - sub_80895F8(gUnknown_083DB698); + ScanlineEffect_SetParams(gUnknown_083DB698); FreeSpriteTileRanges(); FreeAllSpritePalettes(); break; @@ -655,7 +655,7 @@ void sub_80E6A6C(void) ProcessSpriteCopyRequests(); sub_80EAC5C(); TransferPlttBuffer(); - ScanlineEffect_TransferDma(); + ScanlineEffect_InitHBlankDmaTransfer(); } void sub_80E6A88(void) diff --git a/src/easy_chat_2.c b/src/easy_chat_2.c index 0f12b978d..e7b65bef0 100644 --- a/src/easy_chat_2.c +++ b/src/easy_chat_2.c @@ -2053,7 +2053,7 @@ void sub_80EAD08(void) u16 r2; u16 i; - r4 = gUnknown_03004DE0[gScanlineEffect.srcBank]; + r4 = gScanlineEffectRegBuffers[gScanlineEffect.srcBank]; r4 += 88; r2 = (gEasyChatStruct->unk1BA - 88) & 0xFF; diff --git a/src/engine/trainer_card.c b/src/engine/trainer_card.c index f1b115610..be22b24c4 100644 --- a/src/engine/trainer_card.c +++ b/src/engine/trainer_card.c @@ -256,7 +256,7 @@ static void sub_8093254(void) ewram0_2.var_5 ^= 1; } if (ewram0_2.var_4) - DmaCopy16(3, &gUnknown_03004DE0[0], &gUnknown_03004DE0[1], 0x140); + DmaCopy16(3, &gScanlineEffectRegBuffers[0], &gScanlineEffectRegBuffers[1], 0x140); } static void sub_80932AC(Callback callBack) @@ -732,7 +732,7 @@ bool8 sub_8093AA0(struct Task *task) ewram0_2.var_4 = FALSE; dp12_8087EA4(); for (i = 0; i < 0xA0; i++) - gUnknown_03004DE0[1][i] = -4; + gScanlineEffectRegBuffers[1][i] = -4; SetHBlankCallback(sub_8093D7C); ewram0_2.var_4 = TRUE; task->data[0]++; @@ -768,7 +768,7 @@ bool8 sub_8093AF0(struct Task *task) for (i = 0; i < r7; i++) { - gUnknown_03004DE0.filler0[i] = -4 - (u32)i; + gScanlineEffectRegBuffers.filler0[i] = -4 - (u32)i; } //_08093B74 for (; i < r9; i++) @@ -776,10 +776,10 @@ bool8 sub_8093AF0(struct Task *task) u16 var = r6 >> 16; r6 += r5; r5 -= sp0; - gUnknown_03004DE0.filler0[i] = -4 + var; + gScanlineEffectRegBuffers.filler0[i] = -4 + var; } for (; i < 160; i++) - gUnknown_03004DE0.filler0[i] = -4 + (u16)(r10 >> 16); + gScanlineEffectRegBuffers.filler0[i] = -4 + (u16)(r10 >> 16); ewram0_2.var_4 = 1; if (task->data[1] > 0x4A) task->data[0]++; @@ -840,7 +840,7 @@ _08093B18:\n\ movs r3, 0\n\ cmp r3, r7\n\ bcs _08093B74\n\ - ldr r2, _08093C04 @ =gUnknown_03004DE0\n\ + ldr r2, _08093C04 @ =gScanlineEffectRegBuffers\n\ mov r12, r2\n\ ldr r0, _08093C08 @ =0x0000fffc\n\ adds r4, r0, 0\n\ @@ -866,7 +866,7 @@ _08093B74:\n\ lsrs r7, r4, 16\n\ cmp r2, r0\n\ bge _08093BAE\n\ - ldr r0, _08093C04 @ =gUnknown_03004DE0\n\ + ldr r0, _08093C04 @ =gScanlineEffectRegBuffers\n\ mov r9, r0\n\ ldr r4, _08093C08 @ =0x0000fffc\n\ mov r12, r4\n\ @@ -894,7 +894,7 @@ _08093BAE:\n\ asrs r0, 16\n\ cmp r0, 0x9F\n\ bgt _08093BD4\n\ - ldr r4, _08093C04 @ =gUnknown_03004DE0\n\ + ldr r4, _08093C04 @ =gScanlineEffectRegBuffers\n\ ldr r0, _08093C08 @ =0x0000fffc\n\ adds r2, r1, r0\n\ _08093BBE:\n\ @@ -934,7 +934,7 @@ _08093BEA:\n\ .align 2, 0\n\ _08093BFC: .4byte gSharedMem\n\ _08093C00: .4byte 0xffff0000\n\ -_08093C04: .4byte gUnknown_03004DE0\n\ +_08093C04: .4byte gScanlineEffectRegBuffers\n\ _08093C08: .4byte 0x0000fffc\n\ .syntax divided\n"); } @@ -1000,7 +1000,7 @@ _08093C5C:\n\ movs r3, 0\n\ cmp r3, r7\n\ bcs _08093CB8\n\ - ldr r2, _08093D48 @ =gUnknown_03004DE0\n\ + ldr r2, _08093D48 @ =gScanlineEffectRegBuffers\n\ mov r12, r2\n\ ldr r0, _08093D4C @ =0x0000fffc\n\ adds r4, r0, 0\n\ @@ -1026,7 +1026,7 @@ _08093CB8:\n\ lsrs r7, r4, 16\n\ cmp r2, r0\n\ bge _08093CF2\n\ - ldr r0, _08093D48 @ =gUnknown_03004DE0\n\ + ldr r0, _08093D48 @ =gScanlineEffectRegBuffers\n\ mov r9, r0\n\ ldr r3, _08093D4C @ =0x0000fffc\n\ mov r12, r3\n\ @@ -1054,7 +1054,7 @@ _08093CF2:\n\ asrs r0, 16\n\ cmp r0, 0x9F\n\ bgt _08093D18\n\ - ldr r4, _08093D48 @ =gUnknown_03004DE0\n\ + ldr r4, _08093D48 @ =gScanlineEffectRegBuffers\n\ ldr r0, _08093D4C @ =0x0000fffc\n\ adds r2, r1, r0\n\ _08093D02:\n\ @@ -1094,7 +1094,7 @@ _08093D2E:\n\ .align 2, 0\n\ _08093D40: .4byte gSharedMem\n\ _08093D44: .4byte 0xffff0000\n\ -_08093D48: .4byte gUnknown_03004DE0\n\ +_08093D48: .4byte gScanlineEffectRegBuffers\n\ _08093D4C: .4byte 0x0000fffc\n\ .syntax divided\n"); } @@ -1113,7 +1113,7 @@ bool8 sub_8093D50(struct Task *task) void sub_8093D7C(void) { - u16 bgVOffset = gUnknown_03004DE0[1][REG_VCOUNT & 0xFF]; + u16 bgVOffset = gScanlineEffectRegBuffers[1][REG_VCOUNT & 0xFF]; REG_BG0VOFS = bgVOffset; REG_BG1VOFS = bgVOffset; diff --git a/src/field/field_screen_effect.c b/src/field/field_screen_effect.c index b5141e7ea..bc70e1a63 100644 --- a/src/field/field_screen_effect.c +++ b/src/field/field_screen_effect.c @@ -13,7 +13,7 @@ const static u16 gUnknown_0839ACDC[] = { 0xC8, 0x48, 0x38, 0x28, 0x18, 0x0 }; const s32 gMaxFlashLevel = 4; -const static struct UnknownTaskStruct gUnknown_0839ACEC = +const static struct ScanlineEffectParams gUnknown_0839ACEC = { (void *)REG_ADDR_WIN0H, ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1, @@ -64,11 +64,11 @@ static void sub_8081424(u8 taskId) switch (data[0]) { case 0: - sub_8081398(&gUnknown_03004DE0[gScanlineEffect.srcBank][0], data[1], data[2], data[3]); + sub_8081398(&gScanlineEffectRegBuffers[gScanlineEffect.srcBank][0], data[1], data[2], data[3]); data[0] = 1; break; case 1: - sub_8081398(&gUnknown_03004DE0[gScanlineEffect.srcBank][0], data[1], data[2], data[3]); + sub_8081398(&gScanlineEffectRegBuffers[gScanlineEffect.srcBank][0], data[1], data[2], data[3]); data[0] = 0; data[3] += data[5]; if (data[3] > data[4]) @@ -140,8 +140,8 @@ void sub_80815E0(u8 a1) { if (a1) { - sub_8081398(&gUnknown_03004DE0[0][0], 120, 80, gUnknown_0839ACDC[a1]); - CpuFastSet(&gUnknown_03004DE0[0], &gUnknown_03004DE0[1], 480); + sub_8081398(&gScanlineEffectRegBuffers[0][0], 120, 80, gUnknown_0839ACDC[a1]); + CpuFastSet(&gScanlineEffectRegBuffers[0], &gScanlineEffectRegBuffers[1], 480); } } @@ -208,10 +208,10 @@ static void sub_80816A8(u8 taskId) REG_BLDALPHA = 1804; REG_WININ = 63; REG_WINOUT = 30; - sub_8081398(&gUnknown_03004DE0[0][0], data[2], data[3], 1); - CpuFastSet(&gUnknown_03004DE0[0], &gUnknown_03004DE0[1], 480); - //sub_80895F8(gUnknown_0839ACEC[0], gUnknown_0839ACEC[1], gUnknown_0839ACEC[2]); - sub_80895F8(gUnknown_0839ACEC); + sub_8081398(&gScanlineEffectRegBuffers[0][0], data[2], data[3], 1); + CpuFastSet(&gScanlineEffectRegBuffers[0], &gScanlineEffectRegBuffers[1], 480); + //ScanlineEffect_SetParams(gUnknown_0839ACEC[0], gUnknown_0839ACEC[1], gUnknown_0839ACEC[2]); + ScanlineEffect_SetParams(gUnknown_0839ACEC); data[0] = 1; break; case 1: diff --git a/src/field/overworld.c b/src/field/overworld.c index e90fc6396..2590852af 100644 --- a/src/field/overworld.c +++ b/src/field/overworld.c @@ -142,7 +142,7 @@ const struct UCoords32 gUnknown_0821664C[] = { 1, -1}, }; -const struct UnknownTaskStruct gUnknown_08216694 = +const struct ScanlineEffectParams gUnknown_08216694 = { (void *)REG_ADDR_WIN0H, ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1, @@ -1410,7 +1410,7 @@ void VBlankCB_Field(void) { LoadOam(); ProcessSpriteCopyRequests(); - ScanlineEffect_TransferDma(); + ScanlineEffect_InitHBlankDmaTransfer(); sub_8057A58(); TransferPlttBuffer(); sub_8072E74(); @@ -1422,7 +1422,7 @@ void sub_8054814(void) if (val) { sub_80815E0(val); - sub_80895F8(gUnknown_08216694); + ScanlineEffect_SetParams(gUnknown_08216694); } } diff --git a/src/field/use_pokeblock.c b/src/field/use_pokeblock.c index 4af7be386..42020c49a 100644 --- a/src/field/use_pokeblock.c +++ b/src/field/use_pokeblock.c @@ -117,7 +117,7 @@ static void sub_81365A0(void); static void sub_81365C8(void); static void sub_8136638(void); static void sub_81368A4(void); -void ScanlineEffect_TransferDma(void); +void ScanlineEffect_InitHBlankDmaTransfer(void); static void sub_8136B44(void); static u8 sub_81370E4(u8); static void sub_8136BB8(void); @@ -194,7 +194,7 @@ static void sub_8136264(void) ProcessSpriteCopyRequests(); TransferPlttBuffer(); sub_80F5CDC(6); - ScanlineEffect_TransferDma(); + ScanlineEffect_InitHBlankDmaTransfer(); } static void launch_c3_walk_stairs_and_run_once(void (*const func)(void)) diff --git a/src/pokenav_before.c b/src/pokenav_before.c index 7439fc077..b31be2ce1 100644 --- a/src/pokenav_before.c +++ b/src/pokenav_before.c @@ -436,7 +436,7 @@ void sub_80EBD4C() ProcessSpriteCopyRequests(); TransferPlttBuffer(); sub_80F5BF0(); - ScanlineEffect_TransferDma(); + ScanlineEffect_InitHBlankDmaTransfer(); } void sub_80EBD68() diff --git a/src/scanline_effect.c b/src/scanline_effect.c index e9cf0d02a..0fa5b024d 100644 --- a/src/scanline_effect.c +++ b/src/scanline_effect.c @@ -4,27 +4,26 @@ #include "trig.h" #include "scanline_effect.h" -// Control value to ransfer a single 16-bit value at HBlank -#define HBLANK_DMA_CONTROL_16BIT (((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1) +static void CopyValue16Bit(void); +static void CopyValue32Bit(void); -static void sub_80896F4(void); -static void sub_8089714(void); - -extern u16 gUnknown_030041B0; -extern u16 gBattle_BG1_Y; -extern u16 gUnknown_030041B8; -extern u16 gBattle_BG2_Y; -extern u16 gBattle_BG2_X; extern u16 gBattle_BG0_Y; extern u16 gBattle_BG0_X; extern u16 gBattle_BG1_X; +extern u16 gBattle_BG1_Y; +extern u16 gBattle_BG2_X; +extern u16 gBattle_BG2_Y; +extern u16 gUnknown_030041B0; +extern u16 gUnknown_030041B8; -extern u8 gUnknown_0202FFA4; +EWRAM_DATA static u8 gUnknown_0202FFA4 = 0; -extern struct ScanlineEffect gScanlineEffect; +struct ScanlineEffect gScanlineEffect; -// Is this a struct? -extern u16 gUnknown_03004DE0[][0x3C0]; +// Per-scanline register values. +// This is double buffered so that it can be safely written to at any time +// without overwriting the buffer that the DMA is currently reading +u16 gScanlineEffectRegBuffers[2][0x3C0]; void ScanlineEffect_Stop(void) { @@ -39,11 +38,11 @@ void ScanlineEffect_Stop(void) void dp12_8087EA4(void) { - CpuFill16(0, gUnknown_03004DE0, 0x780 * 2); - gScanlineEffect.src[0] = 0; - gScanlineEffect.src[1] = 0; - gScanlineEffect.dest = 0; - gScanlineEffect.unkC = 0; + CpuFill16(0, gScanlineEffectRegBuffers, sizeof(gScanlineEffectRegBuffers)); + gScanlineEffect.src[0] = NULL; + gScanlineEffect.src[1] = NULL; + gScanlineEffect.dmaDest = NULL; + gScanlineEffect.dmaControl = 0; gScanlineEffect.srcBank = 0; gScanlineEffect.unk15 = 0; gScanlineEffect.unk16 = 0; @@ -51,31 +50,35 @@ void dp12_8087EA4(void) gScanlineEffect.taskId = 0xFF; } -void sub_80895F8(struct UnknownTaskStruct unk) +void ScanlineEffect_SetParams(struct ScanlineEffectParams params) { - if (unk.control == HBLANK_DMA_CONTROL_16BIT) // 16 bit + if (params.dmaControl == SCANLINE_EFFECT_DMACNT_16BIT) // 16-bit { - gScanlineEffect.src[0] = &gUnknown_03004DE0[0][1]; - gScanlineEffect.src[1] = &gUnknown_03004DE0[1][1]; - gScanlineEffect.unk10 = sub_80896F4; + // Set the DMA src to the value for the second scanline because the + // first DMA transfer occurs in HBlank *after* the first scanline is drawn + gScanlineEffect.src[0] = (u16 *)gScanlineEffectRegBuffers[0] + 1; + gScanlineEffect.src[1] = (u16 *)gScanlineEffectRegBuffers[1] + 1; + gScanlineEffect.setFirstScanlineReg = CopyValue16Bit; } else // assume 32-bit { - gScanlineEffect.src[0] = &gUnknown_03004DE0[0][2]; - gScanlineEffect.src[1] = &gUnknown_03004DE0[1][2]; - gScanlineEffect.unk10 = sub_8089714; + // Set the DMA src to the value for the second scanline because the + // first DMA transfer occurs in HBlank *after* the first scanline is drawn + gScanlineEffect.src[0] = (u32 *)gScanlineEffectRegBuffers[0] + 1; + gScanlineEffect.src[1] = (u32 *)gScanlineEffectRegBuffers[1] + 1; + gScanlineEffect.setFirstScanlineReg = CopyValue32Bit; } - gScanlineEffect.unkC = unk.control; - gScanlineEffect.dest = unk.dest; - gScanlineEffect.unk15 = unk.unk8; - gScanlineEffect.unk16 = unk.unk9; - gScanlineEffect.unk17 = unk.unk9; + gScanlineEffect.dmaControl = params.dmaControl; + gScanlineEffect.dmaDest = params.dmaDest; + gScanlineEffect.unk15 = params.unk8; + gScanlineEffect.unk16 = params.unk9; + gScanlineEffect.unk17 = params.unk9; } -void ScanlineEffect_TransferDma(void) +void ScanlineEffect_InitHBlankDmaTransfer(void) { - if (gScanlineEffect.unk15) + if (gScanlineEffect.unk15 != 0) { if (gScanlineEffect.unk15 == 3) { @@ -86,28 +89,44 @@ void ScanlineEffect_TransferDma(void) else { DmaStop(0); - DmaSet(0, gScanlineEffect.src[gScanlineEffect.srcBank], gScanlineEffect.dest, gScanlineEffect.unkC); - gScanlineEffect.unk10(); + // Set DMA to copy to dest register on each HBlank for the next frame. + // The HBlank DMA transfers do not occurr during VBlank, so the transfer + // will begin on the HBlank after the first scanline + DmaSet(0, gScanlineEffect.src[gScanlineEffect.srcBank], gScanlineEffect.dmaDest, gScanlineEffect.dmaControl); + // Manually set the reg for the first scanline + gScanlineEffect.setFirstScanlineReg(); + // Swap current buffer gScanlineEffect.srcBank ^= 1; } } } -static void sub_80896F4(void) +// These two functions are used to copy the register for the first scanline, +// depending whether it is a 16-bit register or a 32-bit register. + +static void CopyValue16Bit(void) { - u16 *dest = (u16 *)gScanlineEffect.dest; - u16 *src = (u16 *)&gUnknown_03004DE0[gScanlineEffect.srcBank]; + u16 *dest = (u16 *)gScanlineEffect.dmaDest; + u16 *src = (u16 *)&gScanlineEffectRegBuffers[gScanlineEffect.srcBank]; + *dest = *src; } -static void sub_8089714(void) +static void CopyValue32Bit(void) { - u32 *dest = (u32 *)gScanlineEffect.dest; - u32 *src = (u32 *)&gUnknown_03004DE0[gScanlineEffect.srcBank]; + u32 *dest = (u32 *)gScanlineEffect.dmaDest; + u32 *src = (u32 *)&gScanlineEffectRegBuffers[gScanlineEffect.srcBank]; + *dest = *src; } -static void task00_for_dp12(u8 taskId) +#define tStartLine data[0] +#define tEndLine data[1] +#define framesUntilMove data[4] +#define tDelayInterval data[5] +#define tRegOffset data[6] + +static void TaskFunc_UpdateWavePerFrame(u8 taskId) { int value = 0; @@ -120,7 +139,7 @@ static void task00_for_dp12(u8 taskId) { if (gTasks[taskId].data[7]) { - switch (gTasks[taskId].data[6]) + switch (gTasks[taskId].tRegOffset) { case 0x0: value = gBattle_BG0_X; @@ -148,15 +167,16 @@ static void task00_for_dp12(u8 taskId) break; } } - if (gTasks[taskId].data[4]) + if (gTasks[taskId].framesUntilMove != 0) { int i; int offset; - gTasks[taskId].data[4]--; + + gTasks[taskId].framesUntilMove--; offset = gTasks[taskId].data[3] + 320; - for (i = gTasks[taskId].data[0]; i < gTasks[taskId].data[1]; i++) + for (i = gTasks[taskId].tStartLine; i < gTasks[taskId].tEndLine; i++) { - gUnknown_03004DE0[gScanlineEffect.srcBank][i] = gUnknown_03004DE0[0][offset] + value; + gScanlineEffectRegBuffers[gScanlineEffect.srcBank][i] = gScanlineEffectRegBuffers[0][offset] + value; offset++; } } @@ -164,18 +184,17 @@ static void task00_for_dp12(u8 taskId) { int i; int offset; - gTasks[taskId].data[4] = gTasks[taskId].data[5]; + + gTasks[taskId].framesUntilMove = gTasks[taskId].tDelayInterval; offset = gTasks[taskId].data[3] + 320; - for (i = gTasks[taskId].data[0]; i < gTasks[taskId].data[1]; i++) + for (i = gTasks[taskId].tStartLine; i < gTasks[taskId].tEndLine; i++) { - gUnknown_03004DE0[gScanlineEffect.srcBank][i] = gUnknown_03004DE0[0][offset] + value; + gScanlineEffectRegBuffers[gScanlineEffect.srcBank][i] = gScanlineEffectRegBuffers[0][offset] + value; offset++; } gTasks[taskId].data[3]++; if (gTasks[taskId].data[3] == gTasks[taskId].data[2]) - { gTasks[taskId].data[3] = 0; - } } } } @@ -193,44 +212,47 @@ static void GenerateWave(u16 *buffer, u8 frequency, u8 amplitude, u8 unused) } } -u8 ScanlineEffect_InitWave(u8 a1, u8 a2, u8 frequency, u8 amplitude, u8 a5, u8 a6, u8 a7) +// Initializes a background "wave" effect that affects scanlines startLine (inclusive) to endLine (exclusive). +// 'frequency' and 'amplitude' control the frequency and amplitude of the wave. +// 'delayInterval' controls how fast the wave travels up the screen. The wave will shift upwards one scanline every 'delayInterval'+1 frames. +// 'regOffset' is the offset of the video register to modify. +u8 ScanlineEffect_InitWave(u8 startLine, u8 endLine, u8 frequency, u8 amplitude, u8 delayInterval, u8 regOffset, bool8 a7) { int i; int offset; - struct UnknownTaskStruct unk; + struct ScanlineEffectParams params; u8 taskId; dp12_8087EA4(); - unk.dest = (void *)(REG_ADDR_BG0HOFS + a6); - unk.control = HBLANK_DMA_CONTROL_16BIT; - unk.unk8 = 1; - unk.unk9 = 0; - - sub_80895F8(unk); + params.dmaDest = (void *)(REG_ADDR_BG0HOFS + regOffset); + params.dmaControl = SCANLINE_EFFECT_DMACNT_16BIT; + params.unk8 = 1; + params.unk9 = 0; + ScanlineEffect_SetParams(params); - taskId = CreateTask(task00_for_dp12, 0); + taskId = CreateTask(TaskFunc_UpdateWavePerFrame, 0); - gTasks[taskId].data[0] = a1; - gTasks[taskId].data[1] = a2; - gTasks[taskId].data[2] = 256 / frequency; - gTasks[taskId].data[3] = 0; - gTasks[taskId].data[4] = a5; - gTasks[taskId].data[5] = a5; - gTasks[taskId].data[6] = a6; - gTasks[taskId].data[7] = a7; + gTasks[taskId].tStartLine = startLine; + gTasks[taskId].tEndLine = endLine; + gTasks[taskId].data[2] = 256 / frequency; + gTasks[taskId].data[3] = 0; + gTasks[taskId].framesUntilMove = delayInterval; + gTasks[taskId].tDelayInterval = delayInterval; + gTasks[taskId].tRegOffset = regOffset; + gTasks[taskId].data[7] = a7; gScanlineEffect.taskId = taskId; gUnknown_0202FFA4 = 0; - GenerateWave(&gUnknown_03004DE0[0][320], frequency, amplitude, a2 - a1); + GenerateWave(&gScanlineEffectRegBuffers[0][320], frequency, amplitude, endLine - startLine); offset = 320; - for (i = a1; i < a2; i++) + for (i = startLine; i < endLine; i++) { - gUnknown_03004DE0[0][i] = gUnknown_03004DE0[0][offset]; - gUnknown_03004DE0[1][i] = gUnknown_03004DE0[0][offset]; + gScanlineEffectRegBuffers[0][i] = gScanlineEffectRegBuffers[0][offset]; + gScanlineEffectRegBuffers[1][i] = gScanlineEffectRegBuffers[0][offset]; offset++; } diff --git a/src/scene/evolution_scene.c b/src/scene/evolution_scene.c index 54af6013f..aeea3e292 100644 --- a/src/scene/evolution_scene.c +++ b/src/scene/evolution_scene.c @@ -3934,7 +3934,7 @@ static void VBlankCB_EvolutionScene(void) LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); - ScanlineEffect_TransferDma(); + ScanlineEffect_InitHBlankDmaTransfer(); } static void VBlankCB_TradeEvolutionScene(void) @@ -3950,7 +3950,7 @@ static void VBlankCB_TradeEvolutionScene(void) LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); - ScanlineEffect_TransferDma(); + ScanlineEffect_InitHBlankDmaTransfer(); } static void sub_81150D8(void) diff --git a/src/scene/title_screen.c b/src/scene/title_screen.c index ca4194800..2de3554fe 100644 --- a/src/scene/title_screen.c +++ b/src/scene/title_screen.c @@ -598,7 +598,7 @@ static void StartPokemonLogoShine(bool8 flashBackground) static void VBlankCB(void) { - ScanlineEffect_TransferDma(); + ScanlineEffect_InitHBlankDmaTransfer(); LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); @@ -711,7 +711,7 @@ void CB2_InitTitleScreen(void) if (!UpdatePaletteFade()) { StartPokemonLogoShine(FALSE); - ScanlineEffect_InitWave(0, 0xA0, 4, 4, 0, 4, 1); + ScanlineEffect_InitWave(0, DISPLAY_HEIGHT, 4, 4, 0, 4, 1); SetMainCallback2(MainCB2); } break; -- cgit v1.2.3 From bb2c758e8fa730b2bd19b92119a2bd7e37af57f8 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Wed, 10 Jan 2018 13:18:31 -0600 Subject: finish labeling scanline_effect.c --- src/battle/anim/draw.c | 4 +- src/battle/battle_2.c | 20 ++-- src/battle/battle_4.c | 4 +- src/battle/battle_controller_player.c | 4 +- src/battle/battle_transition.c | 22 ++-- src/battle/reshow_battle_screen.c | 10 +- src/contest.c | 14 +-- src/debug/matsuda_debug_menu.c | 14 +-- src/easy_chat_1.c | 2 +- src/easy_chat_2.c | 2 +- src/engine/option_menu.c | 2 +- src/engine/reset_rtc_screen.c | 2 +- src/engine/trainer_card.c | 2 +- src/field/field_screen_effect.c | 6 +- src/field/overworld.c | 2 +- src/field/start_menu.c | 2 +- src/pokemon/pokemon_summary_screen.c | 20 ++-- src/scanline_effect.c | 187 +++++++++++++++++----------------- src/scene/evolution_scene.c | 24 ++--- src/scene/hall_of_fame.c | 2 +- src/scene/title_screen.c | 2 +- 21 files changed, 174 insertions(+), 173 deletions(-) (limited to 'src') diff --git a/src/battle/anim/draw.c b/src/battle/anim/draw.c index fc74e3f46..f9e505bf2 100755 --- a/src/battle/anim/draw.c +++ b/src/battle/anim/draw.c @@ -53,8 +53,8 @@ void sub_80D0C88(u8 taskId) } params.dmaControl = SCANLINE_EFFECT_DMACNT_16BIT; - params.unk8 = 1; - params.unk9 = 0; + params.initState = 1; + params.unused9 = 0; ScanlineEffect_SetParams(params); task->func = sub_80D0D68; } diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c index f4fff742c..990535b4e 100644 --- a/src/battle/battle_2.c +++ b/src/battle/battle_2.c @@ -108,9 +108,9 @@ extern u16 gUnknown_02024DE8; extern u8 gActionSelectionCursor[]; extern u8 gMoveSelectionCursor[]; extern u8 gUnknown_02038470[]; -extern u16 gUnknown_030041B0; +extern u16 gBattle_BG3_X; extern u16 gBattle_BG1_Y; -extern u16 gUnknown_030041B8; +extern u16 gBattle_BG3_Y; extern struct Window gUnknown_030041D0; extern u16 gBattle_WIN1H; extern struct Window gUnknown_03004210; @@ -219,7 +219,7 @@ void InitBattle(void) REG_WINOUT = 0; gBattle_WIN0H = 0xF0; gBattle_WIN0V = 0x5051; - dp12_8087EA4(); + ScanlineEffect_Clear(); for (i = 0; i < 80; i++) { @@ -242,8 +242,8 @@ void InitBattle(void) gBattle_BG1_Y = 0; gBattle_BG2_X = 0; gBattle_BG2_Y = 0; - gUnknown_030041B0 = 0; - gUnknown_030041B8 = 0; + gBattle_BG3_X = 0; + gBattle_BG3_Y = 0; gBattleTerrain = BattleSetup_GetTerrain(); Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6C58); Text_InitWindowWithTemplate(&gUnknown_030041D0, &gWindowTemplate_81E71D0); @@ -1064,8 +1064,8 @@ void sub_800FCFC(void) REG_BG1VOFS = gBattle_BG1_Y; REG_BG2HOFS = gBattle_BG2_X; REG_BG2VOFS = gBattle_BG2_Y; - REG_BG3HOFS = gUnknown_030041B0; - REG_BG3VOFS = gUnknown_030041B8; + REG_BG3HOFS = gBattle_BG3_X; + REG_BG3VOFS = gBattle_BG3_Y; REG_WIN0H = gBattle_WIN0H; REG_WIN0V = gBattle_WIN0V; REG_WIN1H = gBattle_WIN1H; @@ -1197,7 +1197,7 @@ void c2_8011A1C(void) REG_WINOUT = 0; gBattle_WIN0H = 0xF0; gBattle_WIN0V = 0x5051; - dp12_8087EA4(); + ScanlineEffect_Clear(); for (i = 0; i < 80; i++) { @@ -1218,8 +1218,8 @@ void c2_8011A1C(void) gBattle_BG1_Y = 0; gBattle_BG2_X = 0; gBattle_BG2_Y = 0; - gUnknown_030041B0 = 0; - gUnknown_030041B8 = 0; + gBattle_BG3_X = 0; + gBattle_BG3_Y = 0; Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6C58); Text_InitWindowWithTemplate(&gUnknown_030041D0, &gWindowTemplate_81E71D0); diff --git a/src/battle/battle_4.c b/src/battle/battle_4.c index 164329c1b..ae8f94130 100644 --- a/src/battle/battle_4.c +++ b/src/battle/battle_4.c @@ -93,7 +93,7 @@ extern u16 gChosenMove; //last used move in battle extern u8 gBankInMenu; extern u8 gActionForBanks[4]; extern u16 gUnknown_02024C2C[4]; //last used moves 2, used by sketch -extern u16 gUnknown_030041B0; +extern u16 gBattle_BG3_X; extern u16 gUnknown_02024C4C[4]; //last used moves by banks, another one extern u8 gCurrentTurnActionNumber; extern u16 gTrappingMoves[]; @@ -17229,7 +17229,7 @@ static void atkF2_displaydexinfo(void) LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(0x0600d000)); LoadCompressedPalette(gBattleTerrainPalette_BattleTower, 0x20, 0x60); REG_BG3CNT = 0x5a0b; - gUnknown_030041B0 = 0x100; + gBattle_BG3_X = 0x100; BeginNormalPaletteFade(0xfffc, 0, 0x10, 0, 0); gBattleCommunication[0]++; } diff --git a/src/battle/battle_controller_player.c b/src/battle/battle_controller_player.c index 489581132..a5f833b6c 100644 --- a/src/battle/battle_controller_player.c +++ b/src/battle/battle_controller_player.c @@ -67,9 +67,9 @@ extern u8 gUnknown_02024E68[]; extern struct SpriteTemplate gUnknown_02024E8C; extern u8 gAnimMoveTurn; extern u8 gUnknown_02038470[]; -extern u16 gUnknown_030041B0; +extern u16 gBattle_BG3_X; extern u16 gBattle_BG1_Y; -extern u16 gUnknown_030041B8; +extern u16 gBattle_BG3_Y; extern u16 gBattle_BG2_Y; extern u16 gBattle_BG2_X; extern u16 gBattle_BG0_X; diff --git a/src/battle/battle_transition.c b/src/battle/battle_transition.c index 843203a1e..f7cdc0694 100644 --- a/src/battle/battle_transition.c +++ b/src/battle/battle_transition.c @@ -16,7 +16,7 @@ #include "scanline_effect.h" void sub_807DE10(void); -void dp12_8087EA4(void); +void ScanlineEffect_Clear(void); extern const struct OamData gFieldOamData_32x32; @@ -670,7 +670,7 @@ static bool8 Phase2_Transition_Swirl_Func1(struct Task* task) u16 savedIME; sub_811D658(); - dp12_8087EA4(); + ScanlineEffect_Clear(); BeginNormalPaletteFade(-1, 4, 0, 0x10, 0); sub_811D6E8(gScanlineEffectRegBuffers[1], TRANSITION_STRUCT.field_14, 0, 2, 0, 160); @@ -730,7 +730,7 @@ static bool8 Phase2_Transition_Shuffle_Func1(struct Task* task) u16 savedIME; sub_811D658(); - dp12_8087EA4(); + ScanlineEffect_Clear(); BeginNormalPaletteFade(-1, 4, 0, 0x10, 0); memset(gScanlineEffectRegBuffers[1], TRANSITION_STRUCT.field_16, 0x140); @@ -798,7 +798,7 @@ static bool8 Phase2_Transition_BigPokeball_Func1(struct Task* task) u16 *dst1, *dst2; sub_811D658(); - dp12_8087EA4(); + ScanlineEffect_Clear(); task->data[1] = 16; task->data[2] = 0; @@ -1076,7 +1076,7 @@ static bool8 Phase2_Transition_Clockwise_BlackFade_Func1(struct Task* task) u16 i; sub_811D658(); - dp12_8087EA4(); + ScanlineEffect_Clear(); TRANSITION_STRUCT.WININ = 0; TRANSITION_STRUCT.WINOUT = 63; @@ -1269,7 +1269,7 @@ static bool8 Phase2_Transition_Ripple_Func1(struct Task* task) u8 i; sub_811D658(); - dp12_8087EA4(); + ScanlineEffect_Clear(); for (i = 0; i < 160; i++) { @@ -1348,7 +1348,7 @@ static bool8 Phase2_Transition_Wave_Func1(struct Task* task) u8 i; sub_811D658(); - dp12_8087EA4(); + ScanlineEffect_Clear(); TRANSITION_STRUCT.WININ = 63; TRANSITION_STRUCT.WINOUT = 0; @@ -1460,7 +1460,7 @@ static bool8 Phase2_Mugshot_Func1(struct Task* task) u8 i; sub_811D658(); - dp12_8087EA4(); + ScanlineEffect_Clear(); Mugshots_CreateOpponentPlayerSprites(task); task->data[1] = 0; @@ -1844,7 +1844,7 @@ static bool8 Phase2_Transition_Slice_Func1(struct Task* task) u16 i; sub_811D658(); - dp12_8087EA4(); + ScanlineEffect_Clear(); task->data[2] = 256; task->data[3] = 1; @@ -1943,7 +1943,7 @@ static bool8 Phase2_Transition_WhiteFade_Func1(struct Task* task) u16 i; sub_811D658(); - dp12_8087EA4(); + ScanlineEffect_Clear(); TRANSITION_STRUCT.BLDCNT = 0xBF; TRANSITION_STRUCT.BLDY = 0; @@ -2158,7 +2158,7 @@ static bool8 Phase2_Transition_Shards_Func1(struct Task* task) u16 i; sub_811D658(); - dp12_8087EA4(); + ScanlineEffect_Clear(); TRANSITION_STRUCT.WININ = 0x3F; TRANSITION_STRUCT.WINOUT = 0; diff --git a/src/battle/reshow_battle_screen.c b/src/battle/reshow_battle_screen.c index 83dad5f60..a78cb20df 100644 --- a/src/battle/reshow_battle_screen.c +++ b/src/battle/reshow_battle_screen.c @@ -15,9 +15,9 @@ extern u16 gBattle_BG2_Y; extern u16 gBattle_BG2_X; extern u16 gBattle_BG0_X; extern u16 gBattle_BG1_X; -extern u16 gUnknown_030041B0; +extern u16 gBattle_BG3_X; extern u16 gBattle_BG1_Y; -extern u16 gUnknown_030041B8; +extern u16 gBattle_BG3_Y; extern u16 gBattle_BG0_Y; extern u8 gReservedSpritePaletteCount; extern u8 gActionSelectionCursor[4]; @@ -77,7 +77,7 @@ static void CB2_ReshowBattleScreenAfterMenu(void) switch (gReshowState) { case 0: - dp12_8087EA4(); + ScanlineEffect_Clear(); Text_LoadWindowTemplate(&gWindowTemplate_81E6C58); ResetPaletteFade(); Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6C58); @@ -87,8 +87,8 @@ static void CB2_ReshowBattleScreenAfterMenu(void) gBattle_BG1_Y = 0; gBattle_BG2_X = 0; gBattle_BG2_Y = 0; - gUnknown_030041B0 = 0; - gUnknown_030041B8 = 0; + gBattle_BG3_X = 0; + gBattle_BG3_Y = 0; break; case 1: { diff --git a/src/contest.c b/src/contest.c index e41838cb1..875fe4502 100644 --- a/src/contest.c +++ b/src/contest.c @@ -51,9 +51,9 @@ extern u8 gBanksBySide[]; extern u8 gObjectBankIDs[]; extern u8 gIsLinkContest; extern u8 gContestPlayerMonIndex; -extern u16 gUnknown_030041B0; +extern u16 gBattle_BG3_X; extern s16 gBattle_BG1_Y; -extern u16 gUnknown_030041B8; +extern u16 gBattle_BG3_Y; extern u16 gBattle_WIN1H; extern struct Window gUnknown_03004210; extern u16 gBattle_WIN0V; @@ -330,8 +330,8 @@ void ResetContestGpuRegs(void) gBattle_BG1_Y = 0; gBattle_BG2_X = 0; gBattle_BG2_Y = 0; - gUnknown_030041B0 = 0; - gUnknown_030041B8 = 0; + gBattle_BG3_X = 0; + gBattle_BG3_Y = 0; gBattle_WIN0H = 0; gBattle_WIN0V = 0; gBattle_WIN1H = 0; @@ -412,7 +412,7 @@ void CB2_StartContest(void) SetVBlankCallback(NULL); SetUpContestWindow(); ResetContestGpuRegs(); - dp12_8087EA4(); + ScanlineEffect_Clear(); ResetPaletteFade(); gPaletteFade.bufferTransferDisabled = TRUE; DmaClearLarge32(3, (void *)VRAM, VRAM_SIZE, 0x1000); @@ -626,8 +626,8 @@ void ContestVBlankCallback(void) REG_BG1VOFS = gBattle_BG1_Y; REG_BG2HOFS = gBattle_BG2_X; REG_BG2VOFS = gBattle_BG2_Y; - REG_BG3HOFS = gUnknown_030041B0; - REG_BG3VOFS = gUnknown_030041B8; + REG_BG3HOFS = gBattle_BG3_X; + REG_BG3VOFS = gBattle_BG3_Y; REG_WIN0H = gBattle_WIN0H; REG_WIN0V = gBattle_WIN0V; REG_WIN1H = gBattle_WIN1H; diff --git a/src/debug/matsuda_debug_menu.c b/src/debug/matsuda_debug_menu.c index 7c250b584..1da337b04 100644 --- a/src/debug/matsuda_debug_menu.c +++ b/src/debug/matsuda_debug_menu.c @@ -35,8 +35,8 @@ extern u16 gBattle_BG1_X; extern u16 gBattle_BG1_Y; extern u16 gBattle_BG2_X; extern u16 gBattle_BG2_Y; -extern u16 gUnknown_030041B0; -extern u16 gUnknown_030041B8; +extern u16 gBattle_BG3_X; +extern u16 gBattle_BG3_Y; extern struct Window gUnknown_03004210; extern u8 (*gCallback_03004AE8)(void); @@ -463,8 +463,8 @@ static void sub_80A9F50(void) gBattle_BG1_Y = 0; gBattle_BG2_X = 0; gBattle_BG2_Y = 0; - gUnknown_030041B0 = 0; - gUnknown_030041B8 = 0; + gBattle_BG3_X = 0; + gBattle_BG3_Y = 0; } static void sub_80A9FE4(void) @@ -511,8 +511,8 @@ static void sub_80AA090(void) REG_BG1VOFS = gBattle_BG1_Y; REG_BG2HOFS = gBattle_BG2_X; REG_BG2VOFS = gBattle_BG2_Y; - REG_BG3HOFS = gUnknown_030041B0; - REG_BG3VOFS = gUnknown_030041B8; + REG_BG3HOFS = gBattle_BG3_X; + REG_BG3VOFS = gBattle_BG3_Y; LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); @@ -528,7 +528,7 @@ static void sub_80AA10C(void) gPaletteFade.bufferTransferDisabled = 1; SetVBlankCallback(0); sub_80A9F50(); - dp12_8087EA4(); + ScanlineEffect_Clear(); ResetPaletteFade(); ResetSpriteData(); ResetTasks(); diff --git a/src/easy_chat_1.c b/src/easy_chat_1.c index 3bed951d6..4b64846f9 100644 --- a/src/easy_chat_1.c +++ b/src/easy_chat_1.c @@ -297,7 +297,7 @@ void sub_80E62F8(void) SetVBlankCallback(0); ResetPaletteFade(); ResetSpriteData(); - dp12_8087EA4(); + ScanlineEffect_Clear(); ScanlineEffect_Stop(); sub_80EAD08(); ScanlineEffect_SetParams(gUnknown_083DB698); diff --git a/src/easy_chat_2.c b/src/easy_chat_2.c index e7b65bef0..dc8bddd5a 100644 --- a/src/easy_chat_2.c +++ b/src/easy_chat_2.c @@ -2053,7 +2053,7 @@ void sub_80EAD08(void) u16 r2; u16 i; - r4 = gScanlineEffectRegBuffers[gScanlineEffect.srcBank]; + r4 = gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer]; r4 += 88; r2 = (gEasyChatStruct->unk1BA - 88) & 0xFF; diff --git a/src/engine/option_menu.c b/src/engine/option_menu.c index cb5f66649..1fc78efaa 100644 --- a/src/engine/option_menu.c +++ b/src/engine/option_menu.c @@ -3,12 +3,12 @@ #include "main.h" #include "menu.h" #include "palette.h" +#include "scanline_effect.h" #include "sprite.h" #include "strings2.h" #include "task.h" extern void SetPokemonCryStereo(u32 val); -extern void ScanlineEffect_Stop(void); //Task data enum { diff --git a/src/engine/reset_rtc_screen.c b/src/engine/reset_rtc_screen.c index d077bc670..a8b49a8eb 100644 --- a/src/engine/reset_rtc_screen.c +++ b/src/engine/reset_rtc_screen.c @@ -439,7 +439,7 @@ void CB2_InitResetRtcScreen(void) ResetOamRange(0, 128); LoadOam(); ScanlineEffect_Stop(); - dp12_8087EA4(); + ScanlineEffect_Clear(); ResetSpriteData(); ResetTasks(); ResetPaletteFade(); diff --git a/src/engine/trainer_card.c b/src/engine/trainer_card.c index be22b24c4..ab43ac716 100644 --- a/src/engine/trainer_card.c +++ b/src/engine/trainer_card.c @@ -730,7 +730,7 @@ bool8 sub_8093AA0(struct Task *task) u32 i; ewram0_2.var_4 = FALSE; - dp12_8087EA4(); + ScanlineEffect_Clear(); for (i = 0; i < 0xA0; i++) gScanlineEffectRegBuffers[1][i] = -4; SetHBlankCallback(sub_8093D7C); diff --git a/src/field/field_screen_effect.c b/src/field/field_screen_effect.c index bc70e1a63..61301c5a9 100644 --- a/src/field/field_screen_effect.c +++ b/src/field/field_screen_effect.c @@ -64,11 +64,11 @@ static void sub_8081424(u8 taskId) switch (data[0]) { case 0: - sub_8081398(&gScanlineEffectRegBuffers[gScanlineEffect.srcBank][0], data[1], data[2], data[3]); + sub_8081398(gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer], data[1], data[2], data[3]); data[0] = 1; break; case 1: - sub_8081398(&gScanlineEffectRegBuffers[gScanlineEffect.srcBank][0], data[1], data[2], data[3]); + sub_8081398(gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer], data[1], data[2], data[3]); data[0] = 0; data[3] += data[5]; if (data[3] > data[4]) @@ -85,7 +85,7 @@ static void sub_8081424(u8 taskId) } break; case 2: - dp12_8087EA4(); + ScanlineEffect_Clear(); DestroyTask(taskId); break; } diff --git a/src/field/overworld.c b/src/field/overworld.c index 2590852af..86b0a5dac 100644 --- a/src/field/overworld.c +++ b/src/field/overworld.c @@ -1731,7 +1731,7 @@ void sub_8054D4C(u32 a1) ResetTasks(); ResetSpriteData(); ResetPaletteFade(); - dp12_8087EA4(); + ScanlineEffect_Clear(); ResetCameraUpdateInfo(); InstallCameraPanAheadCallback(); sub_805C7C4(0); diff --git a/src/field/start_menu.c b/src/field/start_menu.c index 6017f56bf..d6881cb01 100644 --- a/src/field/start_menu.c +++ b/src/field/start_menu.c @@ -771,7 +771,7 @@ static bool32 sub_80719FC(u8 *step) ResetSpriteData(); ResetTasks(); ResetPaletteFade(); - dp12_8087EA4(); + ScanlineEffect_Clear(); break; case 2: Text_LoadWindowTemplate(&gWindowTemplate_81E6CE4); diff --git a/src/pokemon/pokemon_summary_screen.c b/src/pokemon/pokemon_summary_screen.c index ec327796a..bf8306fc0 100644 --- a/src/pokemon/pokemon_summary_screen.c +++ b/src/pokemon/pokemon_summary_screen.c @@ -123,12 +123,12 @@ extern u8 StorageSystemGetNextMonIndex(struct BoxPokemon *, u8, u8, u8); extern struct MusicPlayerInfo gMPlay_BGM; extern u8 gUnknown_020384F0; extern u8 gUnknown_08208238[]; -extern u16 gUnknown_030041B8; +extern u16 gBattle_BG3_Y; extern u16 gBattle_BG2_Y; extern u16 gBattle_BG1_Y; extern u16 gBattle_BG1_X; extern u16 gBattle_BG2_X; -extern u16 gUnknown_030041B0; +extern u16 gBattle_BG3_X; extern TaskFunc gUnknown_03005CF0; extern struct Sprite *gUnknown_020384F4; extern struct SpriteTemplate gUnknown_02024E8C; @@ -586,8 +586,8 @@ void sub_809D85C(void) REG_BG1VOFS = gBattle_BG1_Y; REG_BG2HOFS = gBattle_BG2_X; REG_BG2VOFS = gBattle_BG2_Y; - REG_BG3HOFS = gUnknown_030041B0; - REG_BG3VOFS = gUnknown_030041B8; + REG_BG3HOFS = gBattle_BG3_X; + REG_BG3VOFS = gBattle_BG3_Y; LoadOam(); ProcessSpriteCopyRequests(); @@ -813,11 +813,11 @@ bool8 sub_809DA84(void) case 20: if (GetMonData(&pssData.loadedMon, MON_DATA_IS_EGG)) { - gUnknown_030041B0 = 256; + gBattle_BG3_X = 256; } else { - gUnknown_030041B0 = 0; + gBattle_BG3_X = 0; } gMain.state++; @@ -872,8 +872,8 @@ static void sub_809DE64(void) gBattle_BG1_Y = 0; gBattle_BG2_X = 0; gBattle_BG2_Y = 0; - gUnknown_030041B0 = 0; - gUnknown_030041B8 = 0; + gBattle_BG3_X = 0; + gBattle_BG3_Y = 0; REG_BG0HOFS = 0; REG_BG0VOFS = 0; @@ -2176,11 +2176,11 @@ void sub_809F43C(u8 taskId) pssData.loadGfxState = 0; if (GetMonData(&pssData.loadedMon, MON_DATA_IS_EGG)) { - gUnknown_030041B0 = 256; + gBattle_BG3_X = 256; } else { - gUnknown_030041B0 = 0; + gBattle_BG3_X = 0; } gMain.state++; diff --git a/src/scanline_effect.c b/src/scanline_effect.c index 0fa5b024d..b4de0689f 100644 --- a/src/scanline_effect.c +++ b/src/scanline_effect.c @@ -13,10 +13,10 @@ extern u16 gBattle_BG1_X; extern u16 gBattle_BG1_Y; extern u16 gBattle_BG2_X; extern u16 gBattle_BG2_Y; -extern u16 gUnknown_030041B0; -extern u16 gUnknown_030041B8; +extern u16 gBattle_BG3_X; +extern u16 gBattle_BG3_Y; -EWRAM_DATA static u8 gUnknown_0202FFA4 = 0; +EWRAM_DATA static u8 sShouldStopWaveTask = FALSE; struct ScanlineEffect gScanlineEffect; @@ -27,27 +27,27 @@ u16 gScanlineEffectRegBuffers[2][0x3C0]; void ScanlineEffect_Stop(void) { - gScanlineEffect.unk15 = 0; + gScanlineEffect.state = 0; DmaStop(0); - if (gScanlineEffect.taskId != 0xFF) + if (gScanlineEffect.waveTaskId != 0xFF) { - DestroyTask(gScanlineEffect.taskId); - gScanlineEffect.taskId = 0xFF; + DestroyTask(gScanlineEffect.waveTaskId); + gScanlineEffect.waveTaskId = 0xFF; } } -void dp12_8087EA4(void) +void ScanlineEffect_Clear(void) { CpuFill16(0, gScanlineEffectRegBuffers, sizeof(gScanlineEffectRegBuffers)); - gScanlineEffect.src[0] = NULL; - gScanlineEffect.src[1] = NULL; + gScanlineEffect.dmaSrcBuffers[0] = NULL; + gScanlineEffect.dmaSrcBuffers[1] = NULL; gScanlineEffect.dmaDest = NULL; gScanlineEffect.dmaControl = 0; - gScanlineEffect.srcBank = 0; - gScanlineEffect.unk15 = 0; - gScanlineEffect.unk16 = 0; - gScanlineEffect.unk17 = 0; - gScanlineEffect.taskId = 0xFF; + gScanlineEffect.srcBuffer = 0; + gScanlineEffect.state = 0; + gScanlineEffect.unused16 = 0; + gScanlineEffect.unused17 = 0; + gScanlineEffect.waveTaskId = 0xFF; } void ScanlineEffect_SetParams(struct ScanlineEffectParams params) @@ -56,48 +56,49 @@ void ScanlineEffect_SetParams(struct ScanlineEffectParams params) { // Set the DMA src to the value for the second scanline because the // first DMA transfer occurs in HBlank *after* the first scanline is drawn - gScanlineEffect.src[0] = (u16 *)gScanlineEffectRegBuffers[0] + 1; - gScanlineEffect.src[1] = (u16 *)gScanlineEffectRegBuffers[1] + 1; + gScanlineEffect.dmaSrcBuffers[0] = (u16 *)gScanlineEffectRegBuffers[0] + 1; + gScanlineEffect.dmaSrcBuffers[1] = (u16 *)gScanlineEffectRegBuffers[1] + 1; gScanlineEffect.setFirstScanlineReg = CopyValue16Bit; } else // assume 32-bit { // Set the DMA src to the value for the second scanline because the // first DMA transfer occurs in HBlank *after* the first scanline is drawn - gScanlineEffect.src[0] = (u32 *)gScanlineEffectRegBuffers[0] + 1; - gScanlineEffect.src[1] = (u32 *)gScanlineEffectRegBuffers[1] + 1; + gScanlineEffect.dmaSrcBuffers[0] = (u32 *)gScanlineEffectRegBuffers[0] + 1; + gScanlineEffect.dmaSrcBuffers[1] = (u32 *)gScanlineEffectRegBuffers[1] + 1; gScanlineEffect.setFirstScanlineReg = CopyValue32Bit; } gScanlineEffect.dmaControl = params.dmaControl; - gScanlineEffect.dmaDest = params.dmaDest; - gScanlineEffect.unk15 = params.unk8; - gScanlineEffect.unk16 = params.unk9; - gScanlineEffect.unk17 = params.unk9; + gScanlineEffect.dmaDest = params.dmaDest; + gScanlineEffect.state = params.initState; + gScanlineEffect.unused16 = params.unused9; + gScanlineEffect.unused17 = params.unused9; } void ScanlineEffect_InitHBlankDmaTransfer(void) { - if (gScanlineEffect.unk15 != 0) + if (gScanlineEffect.state == 0) { - if (gScanlineEffect.unk15 == 3) - { - gScanlineEffect.unk15 = 0; - DmaStop(0); - gUnknown_0202FFA4 = 1; - } - else - { - DmaStop(0); - // Set DMA to copy to dest register on each HBlank for the next frame. - // The HBlank DMA transfers do not occurr during VBlank, so the transfer - // will begin on the HBlank after the first scanline - DmaSet(0, gScanlineEffect.src[gScanlineEffect.srcBank], gScanlineEffect.dmaDest, gScanlineEffect.dmaControl); - // Manually set the reg for the first scanline - gScanlineEffect.setFirstScanlineReg(); - // Swap current buffer - gScanlineEffect.srcBank ^= 1; - } + return; + } + else if (gScanlineEffect.state == 3) + { + gScanlineEffect.state = 0; + DmaStop(0); + sShouldStopWaveTask = TRUE; + } + else + { + DmaStop(0); + // Set DMA to copy to dest register on each HBlank for the next frame. + // The HBlank DMA transfers do not occurr during VBlank, so the transfer + // will begin on the HBlank after the first scanline + DmaSet(0, gScanlineEffect.dmaSrcBuffers[gScanlineEffect.srcBuffer], gScanlineEffect.dmaDest, gScanlineEffect.dmaControl); + // Manually set the reg for the first scanline + gScanlineEffect.setFirstScanlineReg(); + // Swap current buffer + gScanlineEffect.srcBuffer ^= 1; } } @@ -107,7 +108,7 @@ void ScanlineEffect_InitHBlankDmaTransfer(void) static void CopyValue16Bit(void) { u16 *dest = (u16 *)gScanlineEffect.dmaDest; - u16 *src = (u16 *)&gScanlineEffectRegBuffers[gScanlineEffect.srcBank]; + u16 *src = (u16 *)&gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer]; *dest = *src; } @@ -115,86 +116,87 @@ static void CopyValue16Bit(void) static void CopyValue32Bit(void) { u32 *dest = (u32 *)gScanlineEffect.dmaDest; - u32 *src = (u32 *)&gScanlineEffectRegBuffers[gScanlineEffect.srcBank]; + u32 *src = (u32 *)&gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer]; *dest = *src; } -#define tStartLine data[0] -#define tEndLine data[1] -#define framesUntilMove data[4] -#define tDelayInterval data[5] -#define tRegOffset data[6] +#define tStartLine data[0] +#define tEndLine data[1] +#define tWaveLength data[2] +#define tSrcBufferOffset data[3] +#define tFramesUntilMove data[4] +#define tDelayInterval data[5] +#define tRegOffset data[6] +#define tApplyBattleBgOffsets data[7] static void TaskFunc_UpdateWavePerFrame(u8 taskId) { int value = 0; + int i; + int offset; - if (gUnknown_0202FFA4) + if (sShouldStopWaveTask) { DestroyTask(taskId); - gScanlineEffect.taskId = 0xFF; + gScanlineEffect.waveTaskId = 0xFF; } else { - if (gTasks[taskId].data[7]) + if (gTasks[taskId].tApplyBattleBgOffsets) { switch (gTasks[taskId].tRegOffset) { - case 0x0: + case SCANLINE_EFFECT_REG_BG0HOFS: value = gBattle_BG0_X; break; - case 0x2: + case SCANLINE_EFFECT_REG_BG0VOFS: value = gBattle_BG0_Y; break; - case 0x4: + case SCANLINE_EFFECT_REG_BG1HOFS: value = gBattle_BG1_X; break; - case 0x6: + case SCANLINE_EFFECT_REG_BG1VOFS: value = gBattle_BG1_Y; break; - case 0x8: + case SCANLINE_EFFECT_REG_BG2HOFS: value = gBattle_BG2_X; break; - case 0xA: + case SCANLINE_EFFECT_REG_BG2VOFS: value = gBattle_BG2_Y; break; - case 0xC: - value = gUnknown_030041B0; + case SCANLINE_EFFECT_REG_BG3HOFS: + value = gBattle_BG3_X; break; - case 0xE: - value = gUnknown_030041B8; + case SCANLINE_EFFECT_REG_BG3VOFS: + value = gBattle_BG3_Y; break; } } - if (gTasks[taskId].framesUntilMove != 0) + if (gTasks[taskId].tFramesUntilMove != 0) { - int i; - int offset; - - gTasks[taskId].framesUntilMove--; - offset = gTasks[taskId].data[3] + 320; + gTasks[taskId].tFramesUntilMove--; + offset = gTasks[taskId].tSrcBufferOffset + 320; for (i = gTasks[taskId].tStartLine; i < gTasks[taskId].tEndLine; i++) { - gScanlineEffectRegBuffers[gScanlineEffect.srcBank][i] = gScanlineEffectRegBuffers[0][offset] + value; + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = gScanlineEffectRegBuffers[0][offset] + value; offset++; } } else { - int i; - int offset; - - gTasks[taskId].framesUntilMove = gTasks[taskId].tDelayInterval; - offset = gTasks[taskId].data[3] + 320; + gTasks[taskId].tFramesUntilMove = gTasks[taskId].tDelayInterval; + offset = gTasks[taskId].tSrcBufferOffset + 320; for (i = gTasks[taskId].tStartLine; i < gTasks[taskId].tEndLine; i++) { - gScanlineEffectRegBuffers[gScanlineEffect.srcBank][i] = gScanlineEffectRegBuffers[0][offset] + value; + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = gScanlineEffectRegBuffers[0][offset] + value; offset++; } - gTasks[taskId].data[3]++; - if (gTasks[taskId].data[3] == gTasks[taskId].data[2]) - gTasks[taskId].data[3] = 0; + + // increment src buffer offset + gTasks[taskId].tSrcBufferOffset++; + if (gTasks[taskId].tSrcBufferOffset == gTasks[taskId].tWaveLength) + gTasks[taskId].tSrcBufferOffset = 0; } } } @@ -216,39 +218,38 @@ static void GenerateWave(u16 *buffer, u8 frequency, u8 amplitude, u8 unused) // 'frequency' and 'amplitude' control the frequency and amplitude of the wave. // 'delayInterval' controls how fast the wave travels up the screen. The wave will shift upwards one scanline every 'delayInterval'+1 frames. // 'regOffset' is the offset of the video register to modify. -u8 ScanlineEffect_InitWave(u8 startLine, u8 endLine, u8 frequency, u8 amplitude, u8 delayInterval, u8 regOffset, bool8 a7) +u8 ScanlineEffect_InitWave(u8 startLine, u8 endLine, u8 frequency, u8 amplitude, u8 delayInterval, u8 regOffset, bool8 applyBattleBgOffsets) { int i; int offset; struct ScanlineEffectParams params; u8 taskId; - dp12_8087EA4(); + ScanlineEffect_Clear(); params.dmaDest = (void *)(REG_ADDR_BG0HOFS + regOffset); params.dmaControl = SCANLINE_EFFECT_DMACNT_16BIT; - params.unk8 = 1; - params.unk9 = 0; + params.initState = 1; + params.unused9 = 0; ScanlineEffect_SetParams(params); taskId = CreateTask(TaskFunc_UpdateWavePerFrame, 0); - gTasks[taskId].tStartLine = startLine; - gTasks[taskId].tEndLine = endLine; - gTasks[taskId].data[2] = 256 / frequency; - gTasks[taskId].data[3] = 0; - gTasks[taskId].framesUntilMove = delayInterval; - gTasks[taskId].tDelayInterval = delayInterval; - gTasks[taskId].tRegOffset = regOffset; - gTasks[taskId].data[7] = a7; + gTasks[taskId].tStartLine = startLine; + gTasks[taskId].tEndLine = endLine; + gTasks[taskId].tWaveLength = 256 / frequency; + gTasks[taskId].tSrcBufferOffset = 0; + gTasks[taskId].tFramesUntilMove = delayInterval; + gTasks[taskId].tDelayInterval = delayInterval; + gTasks[taskId].tRegOffset = regOffset; + gTasks[taskId].tApplyBattleBgOffsets = applyBattleBgOffsets; - gScanlineEffect.taskId = taskId; - gUnknown_0202FFA4 = 0; + gScanlineEffect.waveTaskId = taskId; + sShouldStopWaveTask = FALSE; GenerateWave(&gScanlineEffectRegBuffers[0][320], frequency, amplitude, endLine - startLine); offset = 320; - for (i = startLine; i < endLine; i++) { gScanlineEffectRegBuffers[0][i] = gScanlineEffectRegBuffers[0][offset]; diff --git a/src/scene/evolution_scene.c b/src/scene/evolution_scene.c index aeea3e292..53eb2f1e8 100644 --- a/src/scene/evolution_scene.c +++ b/src/scene/evolution_scene.c @@ -71,8 +71,8 @@ extern u16 gBattle_BG1_X; extern u16 gBattle_BG1_Y; extern u16 gBattle_BG2_X; extern u16 gBattle_BG2_Y; -extern u16 gUnknown_030041B0; -extern u16 gUnknown_030041B8; +extern u16 gBattle_BG3_X; +extern u16 gBattle_BG3_Y; extern u8 gBattleTerrain; extern u8 gReservedSpritePaletteCount; extern u16 gMoveToLearn; @@ -206,8 +206,8 @@ void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo, gBattle_BG1_Y = 0; gBattle_BG2_X = 0; gBattle_BG2_Y = 0; - gUnknown_030041B0 = 256; - gUnknown_030041B8 = 0; + gBattle_BG3_X = 256; + gBattle_BG3_Y = 0; Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6C58); gBattleTerrain = BATTLE_TERRAIN_PLAIN; @@ -314,8 +314,8 @@ static void CB2_EvolutionSceneLoadGraphics(void) gBattle_BG1_Y = 0; gBattle_BG2_X = 0; gBattle_BG2_Y = 0; - gUnknown_030041B0 = 256; - gUnknown_030041B8 = 0; + gBattle_BG3_X = 256; + gBattle_BG3_Y = 0; Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6C58); gBattleTerrain = BATTLE_TERRAIN_PLAIN; @@ -368,8 +368,8 @@ static void CB2_TradeEvolutionSceneLoadGraphics(void) gBattle_BG1_Y = 0; gBattle_BG2_X = 0; gBattle_BG2_Y = 0; - gUnknown_030041B0 = 256; - gUnknown_030041B8 = 0; + gBattle_BG3_X = 256; + gBattle_BG3_Y = 0; gMain.state++; break; case 1: @@ -3929,8 +3929,8 @@ static void VBlankCB_EvolutionScene(void) REG_BG1VOFS = gBattle_BG1_Y; REG_BG2HOFS = gBattle_BG2_X; REG_BG2VOFS = gBattle_BG2_Y; - REG_BG3HOFS = gUnknown_030041B0; - REG_BG3VOFS = gUnknown_030041B8; + REG_BG3HOFS = gBattle_BG3_X; + REG_BG3VOFS = gBattle_BG3_Y; LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); @@ -3945,8 +3945,8 @@ static void VBlankCB_TradeEvolutionScene(void) REG_BG1VOFS = gBattle_BG1_Y; REG_BG2HOFS = gBattle_BG2_X; REG_BG2VOFS = gBattle_BG2_Y; - REG_BG3HOFS = gUnknown_030041B0; - REG_BG3VOFS = gUnknown_030041B8; + REG_BG3HOFS = gBattle_BG3_X; + REG_BG3VOFS = gBattle_BG3_Y; LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); diff --git a/src/scene/hall_of_fame.c b/src/scene/hall_of_fame.c index f39745c02..303dcf3e0 100644 --- a/src/scene/hall_of_fame.c +++ b/src/scene/hall_of_fame.c @@ -16,6 +16,7 @@ #include "data2.h" #include "decompress.h" #include "random.h" +#include "scanline_effect.h" #include "trig.h" #include "ewram.h" @@ -95,7 +96,6 @@ bool8 sub_80C5DCC(void); bool8 sub_80C5F98(void); void ReturnFromHallOfFamePC(void); u16 SpeciesToPokedexNum(u16 species); -void ScanlineEffect_Stop(void); // data and gfx diff --git a/src/scene/title_screen.c b/src/scene/title_screen.c index 2de3554fe..202b752a6 100644 --- a/src/scene/title_screen.c +++ b/src/scene/title_screen.c @@ -711,7 +711,7 @@ void CB2_InitTitleScreen(void) if (!UpdatePaletteFade()) { StartPokemonLogoShine(FALSE); - ScanlineEffect_InitWave(0, DISPLAY_HEIGHT, 4, 4, 0, 4, 1); + ScanlineEffect_InitWave(0, DISPLAY_HEIGHT, 4, 4, 0, SCANLINE_EFFECT_REG_BG1HOFS, TRUE); SetMainCallback2(MainCB2); } break; -- cgit v1.2.3