summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/battle_anim_812C144.s38
-rwxr-xr-xasm/battle_intro.s48
-rw-r--r--asm/contest_link_80C2020.s28
-rwxr-xr-xasm/dark.s40
-rwxr-xr-xasm/dragon.s18
-rwxr-xr-xasm/fight.s12
-rwxr-xr-xasm/ghost.s6
-rwxr-xr-xasm/ground.s64
-rwxr-xr-xasm/normal.s32
-rw-r--r--asm/pokenav.s22
-rwxr-xr-xasm/psychic.s14
-rwxr-xr-xasm/rock.s10
-rwxr-xr-xasm/water.s44
-rw-r--r--common_syms/scanline_effect.txt2
-rw-r--r--include/data2.h4
-rw-r--r--include/scanline_effect.h48
-rw-r--r--include/unknown_task.h42
-rw-r--r--ld_script.txt2
-rwxr-xr-xsrc/battle/anim/draw.c36
-rw-r--r--src/battle/battle_2.c44
-rw-r--r--src/battle/battle_4.c4
-rw-r--r--src/battle/battle_controller_player.c4
-rw-r--r--src/battle/battle_transition.c172
-rw-r--r--src/battle/reshow_battle_screen.c12
-rw-r--r--src/contest.c18
-rw-r--r--src/debug/matsuda_debug_menu.c18
-rw-r--r--src/easy_chat_1.c12
-rw-r--r--src/easy_chat_2.c4
-rw-r--r--src/engine/main.c4
-rw-r--r--src/engine/main_menu.c8
-rw-r--r--src/engine/option_menu.c4
-rw-r--r--src/engine/reset_rtc_screen.c6
-rw-r--r--src/engine/trainer_card.c32
-rw-r--r--src/field/diploma.c4
-rw-r--r--src/field/field_screen_effect.c24
-rw-r--r--src/field/item_menu.c4
-rw-r--r--src/field/overworld.c12
-rw-r--r--src/field/party_menu.c4
-rw-r--r--src/field/pokeblock.c4
-rw-r--r--src/field/shop.c4
-rw-r--r--src/field/start_menu.c6
-rw-r--r--src/field/starter_choose.c4
-rw-r--r--src/field/use_pokeblock.c4
-rw-r--r--src/field/wallclock.c4
-rw-r--r--src/pokemon/mail.c4
-rw-r--r--src/pokemon/pokedex.c6
-rw-r--r--src/pokemon/pokemon_summary_screen.c24
-rw-r--r--src/pokenav_before.c6
-rw-r--r--src/roulette.c4
-rw-r--r--src/scanline_effect.c261
-rw-r--r--src/scene/cable_car.c4
-rw-r--r--src/scene/contest_painting.c4
-rw-r--r--src/scene/evolution_scene.c32
-rw-r--r--src/scene/hall_of_fame.c4
-rw-r--r--src/scene/intro.c4
-rwxr-xr-xsrc/scene/intro_credits_graphics.c2
-rw-r--r--src/scene/title_screen.c8
-rw-r--r--src/unknown_task.c235
-rw-r--r--sym_common.txt28
-rw-r--r--sym_ewram.txt7
60 files changed, 783 insertions, 776 deletions
diff --git a/asm/battle_anim_812C144.s b/asm/battle_anim_812C144.s
index 02eec98ec..8a6a8fffa 100644
--- a/asm/battle_anim_812C144.s
+++ b/asm/battle_anim_812C144.s
@@ -1752,7 +1752,7 @@ _0812CE70:
ldrsh r0, [r5, r6]
cmp r1, r0
bgt _0812CEA6
- ldr r4, _0812CEB0 @ =gUnknown_03004DE0
+ ldr r4, _0812CEB0 @ =gScanlineEffectRegBuffers
movs r0, 0xF0
lsls r0, 3
adds r0, r4
@@ -1777,7 +1777,7 @@ _0812CEA6:
ldr r0, _0812CEB4 @ =REG_BG1HOFS
b _0812CEBA
.align 2, 0
-_0812CEB0: .4byte gUnknown_03004DE0
+_0812CEB0: .4byte gScanlineEffectRegBuffers
_0812CEB4: .4byte REG_BG1HOFS
_0812CEB8:
ldr r0, _0812CEE4 @ =REG_BG2HOFS
@@ -1794,7 +1794,7 @@ _0812CEBA:
ldr r0, [sp]
ldr r1, [sp, 0x4]
ldr r2, [sp, 0x8]
- bl sub_80895F8
+ bl ScanlineEffect_SetParams
ldr r0, _0812CEEC @ =sub_812CEF0
str r0, [r5]
add sp, 0xC
@@ -1889,7 +1889,7 @@ _0812CF74:
ldrsh r0, [r4, r2]
cmp r1, r0
bge _0812CFA8
- ldr r5, _0812D000 @ =gUnknown_03004DE0
+ ldr r5, _0812D000 @ =gScanlineEffectRegBuffers
movs r0, 0xF0
lsls r0, 3
adds r6, r5, r0
@@ -1917,7 +1917,7 @@ _0812CFA8:
ldrsh r0, [r4, r2]
cmp r1, r0
bgt _0812CFDC
- ldr r5, _0812D000 @ =gUnknown_03004DE0
+ ldr r5, _0812D000 @ =gScanlineEffectRegBuffers
movs r0, 0xF0
lsls r0, 3
adds r6, r5, r0
@@ -1946,7 +1946,7 @@ _0812CFDC:
ldrsh r0, [r4, r1]
cmp r0, 0
beq _0812CFF2
- ldr r1, _0812D004 @ =gUnknown_03004DC0
+ ldr r1, _0812D004 @ =gScanlineEffect
movs r0, 0x3
strb r0, [r1, 0x15]
_0812CFF2:
@@ -1957,8 +1957,8 @@ _0812CFF8:
pop {r0}
bx r0
.align 2, 0
-_0812D000: .4byte gUnknown_03004DE0
-_0812D004: .4byte gUnknown_03004DC0
+_0812D000: .4byte gScanlineEffectRegBuffers
+_0812D004: .4byte gScanlineEffect
thumb_func_end sub_812CEF0
thumb_func_start sub_812D008
@@ -6545,7 +6545,7 @@ _0812F3EE:
ldrh r3, [r0]
movs r7, 0
movs r2, 0
- ldr r6, _0812F468 @ =gUnknown_03004DE0
+ ldr r6, _0812F468 @ =gScanlineEffectRegBuffers
movs r0, 0xF0
lsls r0, 3
adds r0, r6
@@ -6586,7 +6586,7 @@ _0812F3FE:
ldr r0, [sp]
ldr r1, [sp, 0x4]
ldr r2, [sp, 0x8]
- bl sub_80895F8
+ bl ScanlineEffect_SetParams
ldr r0, _0812F470 @ =sub_812F474
str r0, [r4]
add sp, 0xC
@@ -6599,7 +6599,7 @@ _0812F458: .4byte REG_BLDCNT
_0812F45C: .4byte 0x00003f44
_0812F460: .4byte gBattle_BG2_X
_0812F464: .4byte gBattle_BG2_Y
-_0812F468: .4byte gUnknown_03004DE0
+_0812F468: .4byte gScanlineEffectRegBuffers
_0812F46C: .4byte 0xa6600001
_0812F470: .4byte sub_812F474
thumb_func_end sub_812F314
@@ -6711,7 +6711,7 @@ _0812F4EA:
ldrsh r0, [r6, r3]
cmp r1, r0
ble _0812F60A
- ldr r0, _0812F660 @ =gUnknown_03004DC0
+ ldr r0, _0812F660 @ =gScanlineEffect
mov r10, r0
ldr r1, [sp, 0x4]
lsls r0, r1, 16
@@ -6732,7 +6732,7 @@ _0812F55A:
subs r0, r1
lsls r0, 7
adds r2, r0
- ldr r0, _0812F664 @ =gUnknown_03004DE0
+ ldr r0, _0812F664 @ =gScanlineEffectRegBuffers
adds r2, r0
lsls r4, 16
asrs r4, 16
@@ -6750,7 +6750,7 @@ _0812F55A:
subs r0, r1
lsls r0, 7
adds r3, r0
- ldr r1, _0812F664 @ =gUnknown_03004DE0
+ ldr r1, _0812F664 @ =gScanlineEffectRegBuffers
adds r3, r1
lsls r1, r7, 16
asrs r1, 16
@@ -6814,7 +6814,7 @@ _0812F60A:
lsls r1, r2, 17
cmp r1, 0
blt _0812F636
- ldr r4, _0812F664 @ =gUnknown_03004DE0
+ ldr r4, _0812F664 @ =gScanlineEffectRegBuffers
ldr r7, [sp, 0x4]
lsls r0, r7, 16
asrs r0, 16
@@ -6856,8 +6856,8 @@ _0812F636:
strh r0, [r6, 0xE]
b _0812F676
.align 2, 0
-_0812F660: .4byte gUnknown_03004DC0
-_0812F664: .4byte gUnknown_03004DE0
+_0812F660: .4byte gScanlineEffect
+_0812F664: .4byte gScanlineEffectRegBuffers
_0812F668: .4byte gSineTable
_0812F66C: .4byte 0xffff0000
_0812F670:
@@ -6898,14 +6898,14 @@ _0812F6A6:
asrs r0, 16
cmp r0, 0xC
ble _0812F712
- ldr r1, _0812F6C0 @ =gUnknown_03004DC0
+ ldr r1, _0812F6C0 @ =gScanlineEffect
movs r0, 0x3
strb r0, [r1, 0x15]
movs r0, 0
strh r0, [r6, 0xC]
b _0812F700
.align 2, 0
-_0812F6C0: .4byte gUnknown_03004DC0
+_0812F6C0: .4byte gScanlineEffect
_0812F6C4:
ldrh r0, [r6, 0xC]
adds r0, 0x1
diff --git a/asm/battle_intro.s b/asm/battle_intro.s
index 4bfcf42fb..3f3c58a65 100755
--- a/asm/battle_intro.s
+++ b/asm/battle_intro.s
@@ -299,9 +299,9 @@ _080E45E6:
strh r0, [r1, 0xC]
_080E45FE:
movs r3, 0
- ldr r5, _080E46A0 @ =gUnknown_03004DC0
+ ldr r5, _080E46A0 @ =gScanlineEffect
mov r9, r5
- ldr r7, _080E46A4 @ =gUnknown_03004DE0
+ ldr r7, _080E46A4 @ =gScanlineEffectRegBuffers
mov r6, r9
adds r5, r1, 0
_080E460A:
@@ -319,8 +319,8 @@ _080E460A:
ble _080E460A
cmp r3, 0x9F
bgt _080E464E
- ldr r7, _080E46A4 @ =gUnknown_03004DE0
- ldr r6, _080E46A0 @ =gUnknown_03004DC0
+ ldr r7, _080E46A4 @ =gScanlineEffectRegBuffers
+ ldr r6, _080E46A0 @ =gScanlineEffect
ldr r1, _080E46A8 @ =gTasks
mov r2, r12
adds r0, r2, r4
@@ -377,8 +377,8 @@ _080E4690: .4byte gBattle_BG1_Y
_080E4694: .4byte 0x0000ffc8
_080E4698: .4byte gBattle_WIN0V
_080E469C: .4byte 0xfffffc04
-_080E46A0: .4byte gUnknown_03004DC0
-_080E46A4: .4byte gUnknown_03004DE0
+_080E46A0: .4byte gScanlineEffect
+_080E46A4: .4byte gScanlineEffectRegBuffers
_080E46A8: .4byte gTasks
_080E46AC: .4byte 0x0600e000
_080E46B0: .4byte 0x05000200
@@ -669,9 +669,9 @@ _080E48CC:
strh r0, [r1, 0xC]
_080E48E0:
movs r3, 0
- ldr r4, _080E4978 @ =gUnknown_03004DC0
+ ldr r4, _080E4978 @ =gScanlineEffect
mov r8, r4
- ldr r0, _080E497C @ =gUnknown_03004DE0
+ ldr r0, _080E497C @ =gScanlineEffectRegBuffers
mov r12, r0
mov r7, r8
adds r4, r1, 0
@@ -690,9 +690,9 @@ _080E48EE:
ble _080E48EE
cmp r3, 0x9F
bgt _080E4932
- ldr r1, _080E497C @ =gUnknown_03004DE0
+ ldr r1, _080E497C @ =gScanlineEffectRegBuffers
mov r12, r1
- ldr r7, _080E4978 @ =gUnknown_03004DC0
+ ldr r7, _080E4978 @ =gScanlineEffect
ldr r1, _080E4980 @ =gTasks
adds r0, r6, r5
lsls r0, 3
@@ -745,8 +745,8 @@ _080E4932:
.align 2, 0
_080E4970: .4byte gBattle_WIN0V
_080E4974: .4byte 0xfffffc04
-_080E4978: .4byte gUnknown_03004DC0
-_080E497C: .4byte gUnknown_03004DE0
+_080E4978: .4byte gScanlineEffect
+_080E497C: .4byte gScanlineEffectRegBuffers
_080E4980: .4byte gTasks
_080E4984: .4byte 0x0600e000
_080E4988: .4byte 0x05000200
@@ -978,9 +978,9 @@ _080E4B3A:
strh r0, [r1, 0xC]
_080E4B50:
movs r3, 0
- ldr r6, _080E4BE8 @ =gUnknown_03004DC0
+ ldr r6, _080E4BE8 @ =gScanlineEffect
mov r8, r6
- ldr r7, _080E4BEC @ =gUnknown_03004DE0
+ ldr r7, _080E4BEC @ =gScanlineEffectRegBuffers
adds r5, r1, 0
_080E4B5A:
lsls r2, r3, 1
@@ -997,8 +997,8 @@ _080E4B5A:
ble _080E4B5A
cmp r3, 0x9F
bgt _080E4B9E
- ldr r7, _080E4BEC @ =gUnknown_03004DE0
- ldr r6, _080E4BE8 @ =gUnknown_03004DC0
+ ldr r7, _080E4BEC @ =gScanlineEffectRegBuffers
+ ldr r6, _080E4BE8 @ =gScanlineEffect
ldr r1, _080E4BF0 @ =gTasks
mov r2, r12
adds r0, r2, r4
@@ -1053,8 +1053,8 @@ _080E4B9E:
.align 2, 0
_080E4BE0: .4byte gBattle_WIN0V
_080E4BE4: .4byte 0xfffffc04
-_080E4BE8: .4byte gUnknown_03004DC0
-_080E4BEC: .4byte gUnknown_03004DE0
+_080E4BE8: .4byte gScanlineEffect
+_080E4BEC: .4byte gScanlineEffectRegBuffers
_080E4BF0: .4byte gTasks
_080E4BF4: .4byte 0x0600e000
_080E4BF8: .4byte 0x05000200
@@ -1323,9 +1323,9 @@ _080E4E00:
strh r0, [r1, 0xC]
_080E4E16:
movs r3, 0
- ldr r0, _080E4EA4 @ =gUnknown_03004DC0
+ ldr r0, _080E4EA4 @ =gScanlineEffect
mov r9, r0
- ldr r2, _080E4EA8 @ =gUnknown_03004DE0
+ ldr r2, _080E4EA8 @ =gScanlineEffectRegBuffers
mov r8, r2
mov r7, r9
adds r4, r1, 0
@@ -1344,9 +1344,9 @@ _080E4E24:
ble _080E4E24
cmp r3, 0x9F
bgt _080E4E68
- ldr r0, _080E4EA8 @ =gUnknown_03004DE0
+ ldr r0, _080E4EA8 @ =gScanlineEffectRegBuffers
mov r8, r0
- ldr r7, _080E4EA4 @ =gUnknown_03004DC0
+ ldr r7, _080E4EA4 @ =gScanlineEffect
ldr r1, _080E4EAC @ =gTasks
adds r0, r5, r6
lsls r0, 3
@@ -1395,8 +1395,8 @@ _080E4E94:
.align 2, 0
_080E4E9C: .4byte gBattle_WIN0V
_080E4EA0: .4byte 0xfffffc04
-_080E4EA4: .4byte gUnknown_03004DC0
-_080E4EA8: .4byte gUnknown_03004DE0
+_080E4EA4: .4byte gScanlineEffect
+_080E4EA8: .4byte gScanlineEffectRegBuffers
_080E4EAC: .4byte gTasks
_080E4EB0: .4byte REG_BG1CNT
_080E4EB4:
diff --git a/asm/contest_link_80C2020.s b/asm/contest_link_80C2020.s
index 71788c918..6eac528df 100644
--- a/asm/contest_link_80C2020.s
+++ b/asm/contest_link_80C2020.s
@@ -94,9 +94,9 @@ sub_80C2020: @ 80C2020
strh r2, [r0]
ldr r0, _080C2128 @ =gBattle_BG2_Y
strh r2, [r0]
- ldr r0, _080C212C @ =gUnknown_030041B0
+ ldr r0, _080C212C @ =gBattle_BG3_X
strh r2, [r0]
- ldr r0, _080C2130 @ =gUnknown_030041B8
+ ldr r0, _080C2130 @ =gBattle_BG3_Y
strh r2, [r0]
ldr r0, _080C2134 @ =gBattle_WIN0H
strh r2, [r0]
@@ -125,8 +125,8 @@ _080C211C: .4byte gBattle_BG1_X
_080C2120: .4byte gBattle_BG1_Y
_080C2124: .4byte gBattle_BG2_X
_080C2128: .4byte gBattle_BG2_Y
-_080C212C: .4byte gUnknown_030041B0
-_080C2130: .4byte gUnknown_030041B8
+_080C212C: .4byte gBattle_BG3_X
+_080C2130: .4byte gBattle_BG3_Y
_080C2134: .4byte gBattle_WIN0H
_080C2138: .4byte gBattle_WIN0V
_080C213C: .4byte gBattle_WIN1H
@@ -396,7 +396,7 @@ sub_80C2358: @ 80C2358
movs r0, 0
bl SetVBlankCallback
bl sub_80C2020
- bl dp12_8087EA4
+ bl ScanlineEffect_Clear
bl ResetPaletteFade
bl ResetSpriteData
bl ResetTasks
@@ -506,11 +506,11 @@ sub_80C2448: @ 80C2448
ldrh r0, [r0]
strh r0, [r1]
adds r1, 0x2
- ldr r0, _080C24DC @ =gUnknown_030041B0
+ ldr r0, _080C24DC @ =gBattle_BG3_X
ldrh r0, [r0]
strh r0, [r1]
adds r1, 0x2
- ldr r0, _080C24E0 @ =gUnknown_030041B8
+ ldr r0, _080C24E0 @ =gBattle_BG3_Y
ldrh r0, [r0]
strh r0, [r1]
adds r1, 0x22
@@ -532,7 +532,7 @@ sub_80C2448: @ 80C2448
bl LoadOam
bl ProcessSpriteCopyRequests
bl TransferPlttBuffer
- bl sub_8089668
+ bl ScanlineEffect_InitHBlankDmaTransfer
pop {r0}
bx r0
.align 2, 0
@@ -543,8 +543,8 @@ _080C24CC: .4byte gBattle_BG1_X
_080C24D0: .4byte gBattle_BG1_Y
_080C24D4: .4byte gBattle_BG2_X
_080C24D8: .4byte gBattle_BG2_Y
-_080C24DC: .4byte gUnknown_030041B0
-_080C24E0: .4byte gUnknown_030041B8
+_080C24DC: .4byte gBattle_BG3_X
+_080C24E0: .4byte gBattle_BG3_Y
_080C24E4: .4byte gBattle_WIN0H
_080C24E8: .4byte gBattle_WIN0V
_080C24EC: .4byte gBattle_WIN1H
@@ -1826,11 +1826,11 @@ _080C2F24: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
thumb_func_start sub_80C2F28
sub_80C2F28: @ 80C2F28
push {r4,r5,lr}
- ldr r2, _080C2F5C @ =gUnknown_030041B0
+ ldr r2, _080C2F5C @ =gBattle_BG3_X
ldrh r3, [r2]
adds r0, r3, 0x2
strh r0, [r2]
- ldr r4, _080C2F60 @ =gUnknown_030041B8
+ ldr r4, _080C2F60 @ =gBattle_BG3_Y
ldrh r5, [r4]
adds r1, r5, 0x1
strh r1, [r4]
@@ -1854,8 +1854,8 @@ _080C2F56:
pop {r0}
bx r0
.align 2, 0
-_080C2F5C: .4byte gUnknown_030041B0
-_080C2F60: .4byte gUnknown_030041B8
+_080C2F5C: .4byte gBattle_BG3_X
+_080C2F60: .4byte gBattle_BG3_Y
thumb_func_end sub_80C2F28
thumb_func_start sub_80C2F64
diff --git a/asm/dark.s b/asm/dark.s
index f3274861c..9e09d8fbe 100755
--- a/asm/dark.s
+++ b/asm/dark.s
@@ -386,7 +386,7 @@ _080E01F4:
movs r0, 0x3
bl sub_80E08CC
movs r3, 0
- ldr r4, _080E0290 @ =gUnknown_03004DE0
+ ldr r4, _080E0290 @ =gScanlineEffectRegBuffers
movs r0, 0xF0
lsls r0, 3
adds r6, r4, r0
@@ -406,7 +406,7 @@ _080E0220:
ldr r0, [sp]
ldr r1, [sp, 0x4]
ldr r2, [sp, 0x8]
- bl sub_80895F8
+ bl ScanlineEffect_SetParams
ldr r1, _080E0294 @ =REG_WINOUT
movs r0, 0x3F
eors r7, r0
@@ -441,7 +441,7 @@ _080E0280: .4byte 0x00003f44
_080E0284: .4byte REG_BG2VOFS
_080E0288: .4byte gBattle_BG1_X
_080E028C: .4byte 0xa2600001
-_080E0290: .4byte gUnknown_03004DE0
+_080E0290: .4byte gScanlineEffectRegBuffers
_080E0294: .4byte REG_WINOUT
_080E0298: .4byte gBattle_WIN0H
_080E029C: .4byte gBattle_WIN0V
@@ -575,7 +575,7 @@ _080E0380:
.align 2, 0
_080E0398: .4byte gBattle_WIN0H
_080E039C:
- ldr r1, _080E03AC @ =gUnknown_03004DC0
+ ldr r1, _080E03AC @ =gScanlineEffect
movs r0, 0x3
strb r0, [r1, 0x15]
_080E03A2:
@@ -584,7 +584,7 @@ _080E03A2:
strh r0, [r4, 0x8]
b _080E03B6
.align 2, 0
-_080E03AC: .4byte gUnknown_03004DC0
+_080E03AC: .4byte gScanlineEffect
_080E03B0:
adds r0, r2, 0
bl DestroyAnimVisualTask
@@ -786,7 +786,7 @@ _080E054E:
str r0, [sp, 0xC]
movs r3, 0
add r4, sp, 0xC
- ldr r6, _080E059C @ =gUnknown_03004DE0
+ ldr r6, _080E059C @ =gScanlineEffectRegBuffers
movs r0, 0xF0
lsls r0, 3
adds r7, r6, r0
@@ -815,7 +815,7 @@ _080E055C:
strb r2, [r4, 0x9]
ldr r0, [sp, 0xC]
ldr r2, [r4, 0x8]
- bl sub_80895F8
+ bl ScanlineEffect_SetParams
_080E0590:
ldrh r0, [r5, 0x8]
adds r0, 0x1
@@ -823,7 +823,7 @@ _080E0590:
b _080E05F2
.align 2, 0
_080E0598: .4byte REG_BG2VOFS
-_080E059C: .4byte gUnknown_03004DE0
+_080E059C: .4byte gScanlineEffectRegBuffers
_080E05A0: .4byte 0xa2600001
_080E05A4:
movs r1, 0xE
@@ -1043,7 +1043,7 @@ _080E0732:
.align 2, 0
_080E0750: .4byte REG_BLDALPHA
_080E0754:
- ldr r1, _080E0764 @ =gUnknown_03004DC0
+ ldr r1, _080E0764 @ =gScanlineEffect
movs r0, 0x3
strb r0, [r1, 0x15]
_080E075A:
@@ -1052,7 +1052,7 @@ _080E075A:
strh r0, [r4, 0x8]
b _080E0784
.align 2, 0
-_080E0764: .4byte gUnknown_03004DC0
+_080E0764: .4byte gScanlineEffect
_080E0768:
ldr r0, _080E078C @ =gBattle_WIN0H
movs r1, 0
@@ -1102,9 +1102,9 @@ sub_80E079C: @ 80E079C
movs r4, 0
cmp r0, 0
ble _080E07FC
- ldr r0, _080E0888 @ =gUnknown_03004DE0
+ ldr r0, _080E0888 @ =gScanlineEffectRegBuffers
mov r12, r0
- ldr r7, _080E088C @ =gUnknown_03004DC0
+ ldr r7, _080E088C @ =gScanlineEffect
_080E07D0:
lsls r2, r4, 16
asrs r2, 16
@@ -1136,9 +1136,9 @@ _080E07FC:
ldrsh r0, [r6, r2]
cmp r1, r0
bgt _080E0846
- ldr r0, _080E0888 @ =gUnknown_03004DE0
+ ldr r0, _080E0888 @ =gScanlineEffectRegBuffers
mov r12, r0
- ldr r7, _080E088C @ =gUnknown_03004DC0
+ ldr r7, _080E088C @ =gScanlineEffect
_080E0810:
asrs r4, r3, 16
cmp r4, 0
@@ -1179,8 +1179,8 @@ _080E0846:
ldrsh r0, [r6, r3]
cmp r1, r0
bge _080E08BE
- ldr r7, _080E0888 @ =gUnknown_03004DE0
- ldr r4, _080E088C @ =gUnknown_03004DC0
+ ldr r7, _080E0888 @ =gScanlineEffectRegBuffers
+ ldr r4, _080E088C @ =gScanlineEffect
_080E085E:
asrs r3, r2, 16
cmp r3, 0
@@ -1204,15 +1204,15 @@ _080E0876:
blt _080E085E
b _080E08BE
.align 2, 0
-_080E0888: .4byte gUnknown_03004DE0
-_080E088C: .4byte gUnknown_03004DC0
+_080E0888: .4byte gScanlineEffectRegBuffers
+_080E088C: .4byte gScanlineEffect
_080E0890:
movs r1, 0x1C
ldrsh r0, [r6, r1]
adds r5, r0, 0
adds r5, 0x9F
movs r4, 0
- ldr r3, _080E08C8 @ =gUnknown_03004DE0
+ ldr r3, _080E08C8 @ =gScanlineEffectRegBuffers
movs r2, 0xF0
lsls r2, 3
adds r6, r3, r2
@@ -1238,7 +1238,7 @@ _080E08BE:
pop {r0}
bx r0
.align 2, 0
-_080E08C8: .4byte gUnknown_03004DE0
+_080E08C8: .4byte gScanlineEffectRegBuffers
thumb_func_end sub_80E079C
thumb_func_start sub_80E08CC
diff --git a/asm/dragon.s b/asm/dragon.s
index 7c4ea0547..59fdc4b68 100755
--- a/asm/dragon.s
+++ b/asm/dragon.s
@@ -510,7 +510,7 @@ _080DF996:
ldrsh r0, [r4, r1]
cmp r3, r0
bgt _080DF9C4
- ldr r5, _080DF9EC @ =gUnknown_03004DE0
+ ldr r5, _080DF9EC @ =gScanlineEffectRegBuffers
movs r0, 0xF0
lsls r0, 3
adds r6, r5, r0
@@ -533,7 +533,7 @@ _080DF9C4:
ldr r0, [sp]
ldr r1, [sp, 0x4]
ldr r2, [sp, 0x8]
- bl sub_80895F8
+ bl ScanlineEffect_SetParams
ldr r0, _080DF9F0 @ =sub_80DF9F4
str r0, [r4]
add sp, 0xC
@@ -545,7 +545,7 @@ _080DF9DC: .4byte REG_BG2HOFS
_080DF9E0: .4byte gBattle_BG2_X
_080DF9E4: .4byte 0xa2600001
_080DF9E8: .4byte gAnimBankAttacker
-_080DF9EC: .4byte gUnknown_03004DE0
+_080DF9EC: .4byte gScanlineEffectRegBuffers
_080DF9F0: .4byte sub_80DF9F4
thumb_func_end sub_80DF924
@@ -630,7 +630,7 @@ _080DFA8A:
bl sub_80DFAB0
b _080DFAAA
_080DFA92:
- ldr r1, _080DFAA0 @ =gUnknown_03004DC0
+ ldr r1, _080DFAA0 @ =gScanlineEffect
movs r0, 0x3
strb r0, [r1, 0x15]
ldrh r0, [r2, 0x8]
@@ -638,7 +638,7 @@ _080DFA92:
strh r0, [r2, 0x8]
b _080DFAAA
.align 2, 0
-_080DFAA0: .4byte gUnknown_03004DC0
+_080DFAA0: .4byte gScanlineEffect
_080DFAA4:
adds r0, r3, 0
bl DestroyAnimVisualTask
@@ -659,11 +659,11 @@ sub_80DFAB0: @ 80DFAB0
ldrsh r0, [r5, r1]
cmp r4, r0
bgt _080DFB06
- ldr r7, _080DFB1C @ =gUnknown_03004DE0
+ ldr r7, _080DFB1C @ =gScanlineEffectRegBuffers
mov r12, r7
ldr r0, _080DFB20 @ =gSineTable
mov r8, r0
- ldr r6, _080DFB24 @ =gUnknown_03004DC0
+ ldr r6, _080DFB24 @ =gScanlineEffect
_080DFACE:
lsls r2, r4, 1
ldrb r1, [r6, 0x14]
@@ -705,9 +705,9 @@ _080DFB06:
pop {r0}
bx r0
.align 2, 0
-_080DFB1C: .4byte gUnknown_03004DE0
+_080DFB1C: .4byte gScanlineEffectRegBuffers
_080DFB20: .4byte gSineTable
-_080DFB24: .4byte gUnknown_03004DC0
+_080DFB24: .4byte gScanlineEffect
thumb_func_end sub_80DFAB0
thumb_func_start sub_80DFB28
diff --git a/asm/fight.s b/asm/fight.s
index d0d042113..1969aee14 100755
--- a/asm/fight.s
+++ b/asm/fight.s
@@ -1688,7 +1688,7 @@ _080D9CDE:
lsls r0, 24
cmp r0, 0
bne _080D9D14
- ldr r1, _080D9D10 @ =gUnknown_030041B0
+ ldr r1, _080D9D10 @ =gBattle_BG3_X
ldrh r0, [r4, 0x1A]
lsls r0, 16
asrs r0, 24
@@ -1699,9 +1699,9 @@ _080D9CDE:
b _080D9D24
.align 2, 0
_080D9D0C: .4byte gAnimBankTarget
-_080D9D10: .4byte gUnknown_030041B0
+_080D9D10: .4byte gBattle_BG3_X
_080D9D14:
- ldr r2, _080D9D64 @ =gUnknown_030041B0
+ ldr r2, _080D9D64 @ =gBattle_BG3_X
ldrh r1, [r4, 0x1A]
lsls r1, 16
asrs r1, 24
@@ -1710,7 +1710,7 @@ _080D9D14:
strh r0, [r2]
adds r7, r2, 0
_080D9D24:
- ldr r3, _080D9D68 @ =gUnknown_030041B8
+ ldr r3, _080D9D68 @ =gBattle_BG3_Y
ldrh r2, [r4, 0x1C]
lsls r0, r2, 16
asrs r0, 24
@@ -1741,8 +1741,8 @@ _080D9D5C:
pop {r0}
bx r0
.align 2, 0
-_080D9D64: .4byte gUnknown_030041B0
-_080D9D68: .4byte gUnknown_030041B8
+_080D9D64: .4byte gBattle_BG3_X
+_080D9D68: .4byte gBattle_BG3_Y
_080D9D6C: .4byte gBattleAnimArgs
thumb_func_end sub_80D9C80
diff --git a/asm/ghost.s b/asm/ghost.s
index 0db176d08..daf7cd9a5 100755
--- a/asm/ghost.s
+++ b/asm/ghost.s
@@ -1334,7 +1334,7 @@ _080DE584:
_080DE59C:
movs r2, 0x2
movs r3, 0x6
- bl sub_8089944
+ bl ScanlineEffect_InitWave
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x1C]
@@ -1507,7 +1507,7 @@ _080DE6E8:
beq _080DE740
b _080DE7AA
_080DE6EE:
- ldr r1, _080DE710 @ =gUnknown_03004DC0
+ ldr r1, _080DE710 @ =gScanlineEffect
movs r0, 0x3
strb r0, [r1, 0x15]
movs r0, 0x1
@@ -1523,7 +1523,7 @@ _080DE6EE:
ldr r0, _080DE714 @ =0x0000fdff
b _080DE720
.align 2, 0
-_080DE710: .4byte gUnknown_03004DC0
+_080DE710: .4byte gScanlineEffect
_080DE714: .4byte 0x0000fdff
_080DE718:
movs r2, 0x80
diff --git a/asm/ground.s b/asm/ground.s
index fd4cecbfd..e846d1c70 100755
--- a/asm/ground.s
+++ b/asm/ground.s
@@ -631,7 +631,7 @@ _080E13D6:
_080E13F8: .4byte gBattle_BG2_Y
_080E13FC: .4byte gSprites
_080E1400:
- ldr r1, _080E1410 @ =gUnknown_03004DC0
+ ldr r1, _080E1410 @ =gScanlineEffect
movs r0, 0x3
strb r0, [r1, 0x15]
_080E1406:
@@ -640,7 +640,7 @@ _080E1406:
strh r0, [r4, 0x8]
b _080E1432
.align 2, 0
-_080E1410: .4byte gUnknown_03004DC0
+_080E1410: .4byte gScanlineEffect
_080E1414:
adds r0, r2, 0
bl DestroyAnimVisualTask
@@ -925,7 +925,7 @@ _080E161C:
ldrsh r0, [r0, r1]
cmp r0, 0
bne _080E1662
- ldr r1, _080E1658 @ =gUnknown_03004DC0
+ ldr r1, _080E1658 @ =gScanlineEffect
movs r0, 0x3
strb r0, [r1, 0x15]
_080E164A:
@@ -935,7 +935,7 @@ _080E164A:
b _080E1662
.align 2, 0
_080E1654: .4byte gSprites
-_080E1658: .4byte gUnknown_03004DC0
+_080E1658: .4byte gScanlineEffect
_080E165C:
adds r0, r2, 0
bl DestroyAnimVisualTask
@@ -980,7 +980,7 @@ _080E169C:
asrs r4, r0, 16
cmp r2, r0
bge _080E16C8
- ldr r5, _080E1720 @ =gUnknown_03004DE0
+ ldr r5, _080E1720 @ =gScanlineEffectRegBuffers
movs r0, 0xF0
lsls r0, 3
adds r6, r5, r0
@@ -1003,7 +1003,7 @@ _080E16C8:
asrs r0, r1, 16
cmp r0, 0x9F
bgt _080E16F6
- ldr r4, _080E1720 @ =gUnknown_03004DE0
+ ldr r4, _080E1720 @ =gScanlineEffectRegBuffers
lsls r0, r3, 16
asrs r0, 16
adds r3, r0, 0
@@ -1035,7 +1035,7 @@ _080E16F6:
ldr r0, [sp]
ldr r1, [sp, 0x4]
ldr r2, [sp, 0x8]
- bl sub_80895F8
+ bl ScanlineEffect_SetParams
add sp, 0xC
pop {r4-r6}
pop {r0}
@@ -1043,7 +1043,7 @@ _080E16F6:
.align 2, 0
_080E1718: .4byte gBattle_BG2_X
_080E171C: .4byte REG_BG2HOFS
-_080E1720: .4byte gUnknown_03004DE0
+_080E1720: .4byte gScanlineEffectRegBuffers
_080E1724: .4byte 0xa2600001
thumb_func_end sub_80E1668
@@ -1243,14 +1243,14 @@ _080E189C:
beq _080E18C8
cmp r0, 0x5
bne _080E1908
- ldr r0, _080E18C0 @ =gUnknown_030041B0
+ ldr r0, _080E18C0 @ =gBattle_BG3_X
ldrh r0, [r0]
strh r0, [r4, 0x22]
ldr r0, _080E18C4 @ =sub_80E1934
b _080E1926
.align 2, 0
_080E18BC: .4byte gAnimMovePower
-_080E18C0: .4byte gUnknown_030041B0
+_080E18C0: .4byte gBattle_BG3_X
_080E18C4: .4byte sub_80E1934
_080E18C8:
movs r0, 0
@@ -1351,16 +1351,16 @@ _080E1962:
ands r0, r1
cmp r0, 0
bne _080E198C
- ldr r1, _080E1988 @ =gUnknown_030041B0
+ ldr r1, _080E1988 @ =gBattle_BG3_X
ldrh r0, [r3, 0x26]
ldrh r2, [r3, 0x22]
adds r0, r2
strh r0, [r1]
b _080E1996
.align 2, 0
-_080E1988: .4byte gUnknown_030041B0
+_080E1988: .4byte gBattle_BG3_X
_080E198C:
- ldr r0, _080E19B4 @ =gUnknown_030041B0
+ ldr r0, _080E19B4 @ =gBattle_BG3_X
ldrh r1, [r3, 0x22]
ldrh r2, [r3, 0x26]
subs r1, r2
@@ -1382,7 +1382,7 @@ _080E1996:
strh r0, [r3, 0x24]
b _080E1A0C
.align 2, 0
-_080E19B4: .4byte gUnknown_030041B0
+_080E19B4: .4byte gBattle_BG3_X
_080E19B8:
ldrh r0, [r3, 0xA]
adds r0, 0x1
@@ -1397,16 +1397,16 @@ _080E19B8:
ands r1, r0
cmp r1, 0
bne _080E19E4
- ldr r1, _080E19E0 @ =gUnknown_030041B0
+ ldr r1, _080E19E0 @ =gBattle_BG3_X
ldrh r0, [r3, 0x24]
ldrh r2, [r3, 0x22]
adds r0, r2
strh r0, [r1]
b _080E19EE
.align 2, 0
-_080E19E0: .4byte gUnknown_030041B0
+_080E19E0: .4byte gBattle_BG3_X
_080E19E4:
- ldr r0, _080E1A14 @ =gUnknown_030041B0
+ ldr r0, _080E1A14 @ =gBattle_BG3_X
ldrh r1, [r3, 0x22]
ldrh r2, [r3, 0x24]
subs r1, r2
@@ -1433,9 +1433,9 @@ _080E1A0C:
strh r0, [r3, 0x8]
b _080E1A24
.align 2, 0
-_080E1A14: .4byte gUnknown_030041B0
+_080E1A14: .4byte gBattle_BG3_X
_080E1A18:
- ldr r1, _080E1A28 @ =gUnknown_030041B0
+ ldr r1, _080E1A28 @ =gBattle_BG3_X
ldrh r0, [r3, 0x22]
strh r0, [r1]
adds r0, r2, 0
@@ -1444,7 +1444,7 @@ _080E1A24:
pop {r0}
bx r0
.align 2, 0
-_080E1A28: .4byte gUnknown_030041B0
+_080E1A28: .4byte gBattle_BG3_X
thumb_func_end sub_80E1934
thumb_func_start sub_80E1A2C
@@ -1719,10 +1719,10 @@ _080E1BE2:
movs r0, 0xFF
ands r1, r0
strh r1, [r4, 0xC]
- ldr r2, _080E1C50 @ =gUnknown_030041B0
+ ldr r2, _080E1C50 @ =gBattle_BG3_X
ldrh r0, [r4, 0xA]
strh r0, [r2]
- ldr r0, _080E1C54 @ =gUnknown_030041B8
+ ldr r0, _080E1C54 @ =gBattle_BG3_Y
strh r1, [r0]
ldrh r0, [r6, 0x4]
strh r0, [r4, 0xE]
@@ -1736,8 +1736,8 @@ _080E1C40: .4byte gAnimBankAttacker
_080E1C44: .4byte sub_80E1C58
_080E1C48: .4byte gTasks
_080E1C4C: .4byte 0x000001ff
-_080E1C50: .4byte gUnknown_030041B0
-_080E1C54: .4byte gUnknown_030041B8
+_080E1C50: .4byte gBattle_BG3_X
+_080E1C54: .4byte gBattle_BG3_Y
thumb_func_end sub_80E1BB0
thumb_func_start sub_80E1C58
@@ -1757,10 +1757,10 @@ sub_80E1C58: @ 80E1C58
ldrsh r0, [r2, r4]
cmp r1, r0
bne _080E1C98
- ldr r0, _080E1C90 @ =gUnknown_030041B0
+ ldr r0, _080E1C90 @ =gBattle_BG3_X
movs r1, 0
strh r1, [r0]
- ldr r0, _080E1C94 @ =gUnknown_030041B8
+ ldr r0, _080E1C94 @ =gBattle_BG3_Y
strh r1, [r0]
adds r0, r3, 0
bl DestroyTask
@@ -1768,13 +1768,13 @@ sub_80E1C58: @ 80E1C58
.align 2, 0
_080E1C88: .4byte gTasks
_080E1C8C: .4byte gBattleAnimArgs
-_080E1C90: .4byte gUnknown_030041B0
-_080E1C94: .4byte gUnknown_030041B8
+_080E1C90: .4byte gBattle_BG3_X
+_080E1C94: .4byte gBattle_BG3_Y
_080E1C98:
- ldr r1, _080E1CAC @ =gUnknown_030041B0
+ ldr r1, _080E1CAC @ =gBattle_BG3_X
ldrh r0, [r2, 0xA]
strh r0, [r1]
- ldr r1, _080E1CB0 @ =gUnknown_030041B8
+ ldr r1, _080E1CB0 @ =gBattle_BG3_Y
ldrh r0, [r2, 0xC]
strh r0, [r1]
_080E1CA4:
@@ -1782,8 +1782,8 @@ _080E1CA4:
pop {r0}
bx r0
.align 2, 0
-_080E1CAC: .4byte gUnknown_030041B0
-_080E1CB0: .4byte gUnknown_030041B8
+_080E1CAC: .4byte gBattle_BG3_X
+_080E1CB0: .4byte gBattle_BG3_Y
thumb_func_end sub_80E1C58
.align 2, 0 @ Don't pad with nop.
diff --git a/asm/normal.s b/asm/normal.s
index a800b348a..8465e2c2b 100755
--- a/asm/normal.s
+++ b/asm/normal.s
@@ -1103,15 +1103,15 @@ _080E24F0:
beq _080E2508
b _080E2518
_080E24F6:
- ldr r1, _080E24FC @ =gUnknown_030041B0
+ ldr r1, _080E24FC @ =gBattle_BG3_X
b _080E250A
.align 2, 0
-_080E24FC: .4byte gUnknown_030041B0
+_080E24FC: .4byte gBattle_BG3_X
_080E2500:
- ldr r1, _080E2504 @ =gUnknown_030041B8
+ ldr r1, _080E2504 @ =gBattle_BG3_Y
b _080E250A
.align 2, 0
-_080E2504: .4byte gUnknown_030041B8
+_080E2504: .4byte gBattle_BG3_Y
_080E2508:
ldr r1, _080E2514 @ =gSpriteCoordOffsetX
_080E250A:
@@ -1359,10 +1359,10 @@ sub_80E26BC: @ 80E26BC
strh r1, [r2, 0xE]
ldrh r1, [r3, 0x6]
strh r1, [r2, 0x18]
- ldr r4, _080E2704 @ =gUnknown_030041B0
+ ldr r4, _080E2704 @ =gBattle_BG3_X
ldrh r1, [r3]
strh r1, [r4]
- ldr r4, _080E2708 @ =gUnknown_030041B8
+ ldr r4, _080E2708 @ =gBattle_BG3_Y
ldrh r1, [r3, 0x2]
strh r1, [r4]
ldr r1, _080E270C @ =sub_80E2710
@@ -1374,8 +1374,8 @@ sub_80E26BC: @ 80E26BC
.align 2, 0
_080E26FC: .4byte gTasks
_080E2700: .4byte gBattleAnimArgs
-_080E2704: .4byte gUnknown_030041B0
-_080E2708: .4byte gUnknown_030041B8
+_080E2704: .4byte gBattle_BG3_X
+_080E2708: .4byte gBattle_BG3_Y
_080E270C: .4byte sub_80E2710
thumb_func_end sub_80E26BC
@@ -1395,7 +1395,7 @@ sub_80E2710: @ 80E2710
mov r12, r1
cmp r0, 0
bne _080E2796
- ldr r0, _080E2744 @ =gUnknown_030041B0
+ ldr r0, _080E2744 @ =gBattle_BG3_X
ldrh r2, [r0]
movs r7, 0x8
ldrsh r1, [r3, r7]
@@ -1407,12 +1407,12 @@ sub_80E2710: @ 80E2710
b _080E274A
.align 2, 0
_080E2740: .4byte gTasks
-_080E2744: .4byte gUnknown_030041B0
+_080E2744: .4byte gBattle_BG3_X
_080E2748:
ldrh r0, [r3, 0x8]
_080E274A:
strh r0, [r6]
- ldr r2, _080E2768 @ =gUnknown_030041B8
+ ldr r2, _080E2768 @ =gBattle_BG3_Y
ldrh r3, [r2]
lsls r1, r5, 2
adds r0, r1, r5
@@ -1426,7 +1426,7 @@ _080E274A:
movs r0, 0
b _080E2770
.align 2, 0
-_080E2768: .4byte gUnknown_030041B8
+_080E2768: .4byte gBattle_BG3_Y
_080E276C:
ldrh r0, [r4, 0xA]
negs r0, r0
@@ -3905,13 +3905,13 @@ sub_80E3AD0: @ 80E3AD0
ldrh r7, [r1, 0x1E]
adds r2, r7
strh r2, [r1, 0x1E]
- ldr r6, _080E3B40 @ =gUnknown_030041B0
+ ldr r6, _080E3B40 @ =gBattle_BG3_X
lsls r0, r3, 16
asrs r0, 24
ldrh r4, [r6]
adds r0, r4
strh r0, [r6]
- ldr r4, _080E3B44 @ =gUnknown_030041B8
+ ldr r4, _080E3B44 @ =gBattle_BG3_Y
lsls r0, r2, 16
asrs r0, 24
ldrh r7, [r4]
@@ -3942,8 +3942,8 @@ _080E3B36:
bx r0
.align 2, 0
_080E3B3C: .4byte gTasks
-_080E3B40: .4byte gUnknown_030041B0
-_080E3B44: .4byte gUnknown_030041B8
+_080E3B40: .4byte gBattle_BG3_X
+_080E3B44: .4byte gBattle_BG3_Y
_080E3B48: .4byte gBattleAnimArgs
thumb_func_end sub_80E3AD0
diff --git a/asm/pokenav.s b/asm/pokenav.s
index 7c766addc..67b4ece33 100644
--- a/asm/pokenav.s
+++ b/asm/pokenav.s
@@ -10956,8 +10956,8 @@ sub_80F5B50: @ 80F5B50
_080F5B68: .4byte gUnknown_083DFEC4
_080F5B6C: .4byte 0x00009345
_080F5B70:
- bl dp12_8087EA4
- ldr r0, _080F5BA8 @ =gUnknown_03004DE0
+ bl ScanlineEffect_Clear
+ ldr r0, _080F5BA8 @ =gScanlineEffectRegBuffers
movs r2, 0xEF
movs r3, 0xF4
lsls r3, 3
@@ -10984,7 +10984,7 @@ _080F5B82:
movs r0, 0x1
b _080F5BCE
.align 2, 0
-_080F5BA8: .4byte gUnknown_03004DE0
+_080F5BA8: .4byte gScanlineEffectRegBuffers
_080F5BAC: .4byte gUnknown_083DFEC4
_080F5BB0: .4byte 0x00009345
_080F5BB4:
@@ -10995,7 +10995,7 @@ _080F5BB4:
ldr r0, [sp]
ldr r1, [sp, 0x4]
ldr r2, [sp, 0x8]
- bl sub_80895F8
+ bl ScanlineEffect_SetParams
ldrb r0, [r4]
adds r0, 0x1
strb r0, [r4]
@@ -11013,14 +11013,14 @@ _080F5BD8: .4byte gUnknown_083E4990
thumb_func_start sub_80F5BDC
sub_80F5BDC: @ 80F5BDC
push {lr}
- ldr r1, _080F5BEC @ =gUnknown_03004DC0
+ ldr r1, _080F5BEC @ =gScanlineEffect
movs r0, 0x3
strb r0, [r1, 0x15]
- bl sub_8089668
+ bl ScanlineEffect_InitHBlankDmaTransfer
pop {r0}
bx r0
.align 2, 0
-_080F5BEC: .4byte gUnknown_03004DC0
+_080F5BEC: .4byte gScanlineEffect
thumb_func_end sub_80F5BDC
thumb_func_start sub_80F5BF0
@@ -11045,7 +11045,7 @@ sub_80F5BF0: @ 80F5BF0
adds r0, r4, 0
bl sub_80F5A1C
movs r6, 0
- ldr r1, _080F5CC4 @ =gUnknown_03004DE0
+ ldr r1, _080F5CC4 @ =gScanlineEffectRegBuffers
mov r12, r1
movs r0, 0xF0
lsls r0, 3
@@ -11128,7 +11128,7 @@ _080F5CA6:
_080F5CB8: .4byte gUnknown_083DFEC4
_080F5CBC: .4byte 0x00009344
_080F5CC0: .4byte 0x0000911c
-_080F5CC4: .4byte gUnknown_03004DE0
+_080F5CC4: .4byte gScanlineEffectRegBuffers
_080F5CC8: .4byte 0x0000ffff
_080F5CCC: .4byte 0x00009130
_080F5CD0: .4byte 0x00009132
@@ -11164,7 +11164,7 @@ sub_80F5CDC: @ 80F5CDC
lsls r0, 17
lsrs r5, r0, 16
movs r7, 0
- ldr r1, _080F5DBC @ =gUnknown_03004DE0
+ ldr r1, _080F5DBC @ =gScanlineEffectRegBuffers
mov r12, r1
movs r4, 0xF0
lsls r4, 3
@@ -11248,7 +11248,7 @@ _080F5DA0:
_080F5DB0: .4byte gUnknown_083DFEC4
_080F5DB4: .4byte 0x00009344
_080F5DB8: .4byte 0x0000911c
-_080F5DBC: .4byte gUnknown_03004DE0
+_080F5DBC: .4byte gScanlineEffectRegBuffers
_080F5DC0: .4byte 0x0000ffff
_080F5DC4: .4byte 0x00009130
_080F5DC8: .4byte 0x00009132
diff --git a/asm/psychic.s b/asm/psychic.s
index 20e558bf6..7dbedd08f 100755
--- a/asm/psychic.s
+++ b/asm/psychic.s
@@ -1588,7 +1588,7 @@ _080DC380:
adds r0, 0x40
cmp r1, r0
bgt _080DC3BA
- ldr r5, _080DC3E8 @ =gUnknown_03004DE0
+ ldr r5, _080DC3E8 @ =gScanlineEffectRegBuffers
movs r0, 0xF0
lsls r0, 3
adds r6, r5, r0
@@ -1621,7 +1621,7 @@ _080DC3BA:
ldr r0, [sp]
ldr r1, [sp, 0x4]
ldr r2, [sp, 0x8]
- bl sub_80895F8
+ bl ScanlineEffect_SetParams
ldr r0, _080DC3F0 @ =sub_80DC3F4
str r0, [r4]
add sp, 0xC
@@ -1631,7 +1631,7 @@ _080DC3BA:
.align 2, 0
_080DC3E0: .4byte gBattle_BG2_X
_080DC3E4: .4byte REG_BG2HOFS
-_080DC3E8: .4byte gUnknown_03004DE0
+_080DC3E8: .4byte gScanlineEffectRegBuffers
_080DC3EC: .4byte 0xa2600001
_080DC3F0: .4byte sub_80DC3F4
thumb_func_end sub_80DC2D4
@@ -1676,7 +1676,7 @@ _080DC426:
ldr r0, _080DC470 @ =gSineTable
mov r9, r0
movs r7, 0x3
- ldr r1, _080DC474 @ =gUnknown_03004DE0
+ ldr r1, _080DC474 @ =gScanlineEffectRegBuffers
mov r12, r1
movs r2, 0xF0
lsls r2, 3
@@ -1704,7 +1704,7 @@ _080DC448:
b _080DC484
.align 2, 0
_080DC470: .4byte gSineTable
-_080DC474: .4byte gUnknown_03004DE0
+_080DC474: .4byte gScanlineEffectRegBuffers
_080DC478:
cmp r3, 0
bge _080DC488
@@ -1753,7 +1753,7 @@ _080DC4BE:
ble _080DC4E6
b _080DC4D4
_080DC4CE:
- ldr r1, _080DC4DC @ =gUnknown_03004DC0
+ ldr r1, _080DC4DC @ =gScanlineEffect
movs r0, 0x3
strb r0, [r1, 0x15]
_080DC4D4:
@@ -1762,7 +1762,7 @@ _080DC4D4:
strh r0, [r5, 0x8]
b _080DC4E6
.align 2, 0
-_080DC4DC: .4byte gUnknown_03004DC0
+_080DC4DC: .4byte gScanlineEffect
_080DC4E0:
adds r0, r2, 0
bl DestroyAnimVisualTask
diff --git a/asm/rock.s b/asm/rock.s
index 923c842be..2f878db2c 100755
--- a/asm/rock.s
+++ b/asm/rock.s
@@ -1549,7 +1549,7 @@ sub_80DDA8C: @ 80DDA8C
movs r0, 0xC8
strh r0, [r5, 0xA]
_080DDAAE:
- ldr r4, _080DDAEC @ =gUnknown_030041B8
+ ldr r4, _080DDAEC @ =gBattle_BG3_Y
movs r1, 0xA
ldrsh r0, [r5, r1]
movs r1, 0xA
@@ -1577,7 +1577,7 @@ _080DDADA:
bx r0
.align 2, 0
_080DDAE8: .4byte gTasks
-_080DDAEC: .4byte gUnknown_030041B8
+_080DDAEC: .4byte gBattle_BG3_Y
thumb_func_end sub_80DDA8C
thumb_func_start sub_80DDAF0
@@ -1600,7 +1600,7 @@ sub_80DDAF0: @ 80DDAF0
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
- ldr r0, _080DDB60 @ =gUnknown_030041B8
+ ldr r0, _080DDB60 @ =gBattle_BG3_Y
ldrh r0, [r0]
strh r0, [r4, 0xC]
_080DDB1C:
@@ -1609,7 +1609,7 @@ _080DDB1C:
movs r1, 0xFF
ands r0, r1
strh r0, [r4, 0xA]
- ldr r6, _080DDB60 @ =gUnknown_030041B8
+ ldr r6, _080DDB60 @ =gBattle_BG3_Y
movs r2, 0xA
ldrsh r1, [r4, r2]
movs r0, 0x4
@@ -1635,7 +1635,7 @@ _080DDB54:
bx r0
.align 2, 0
_080DDB5C: .4byte gTasks
-_080DDB60: .4byte gUnknown_030041B8
+_080DDB60: .4byte gBattle_BG3_Y
_080DDB64: .4byte gBattleAnimArgs
_080DDB68: .4byte 0x00000fff
thumb_func_end sub_80DDAF0
diff --git a/asm/water.s b/asm/water.s
index d72f9438c..56e552241 100755
--- a/asm/water.s
+++ b/asm/water.s
@@ -300,7 +300,7 @@ _080D3D9C:
movs r3, 0
movs r2, 0x10
ldrsh r0, [r4, r2]
- ldr r1, _080D3E6C @ =gUnknown_03004DE0
+ ldr r1, _080D3E6C @ =gScanlineEffectRegBuffers
mov r12, r1
cmp r3, r0
bge _080D3DDA
@@ -337,7 +337,7 @@ _080D3DDA:
ldrsh r0, [r4, r3]
cmp r1, r0
bge _080D3E14
- ldr r5, _080D3E6C @ =gUnknown_03004DE0
+ ldr r5, _080D3E6C @ =gScanlineEffectRegBuffers
movs r0, 0xF0
lsls r0, 3
adds r6, r5, r0
@@ -366,7 +366,7 @@ _080D3E14:
asrs r0, r2, 16
cmp r0, 0x9F
bgt _080D3E4A
- ldr r5, _080D3E6C @ =gUnknown_03004DE0
+ ldr r5, _080D3E6C @ =gScanlineEffectRegBuffers
movs r0, 0xF0
lsls r0, 3
adds r6, r5, r0
@@ -407,7 +407,7 @@ _080D3E4A:
ldrh r0, [r4, 0xA]
b _080D3E8A
.align 2, 0
-_080D3E6C: .4byte gUnknown_03004DE0
+_080D3E6C: .4byte gScanlineEffectRegBuffers
_080D3E70: .4byte 0x0000ffff
_080D3E74:
lsls r0, r3, 16
@@ -436,7 +436,7 @@ _080D3E8A:
ldr r0, [sp]
ldr r1, [sp, 0x4]
ldr r2, [sp, 0x8]
- bl sub_80895F8
+ bl ScanlineEffect_SetParams
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
@@ -475,8 +475,8 @@ _080D3EE8:
ldrsh r0, [r4, r1]
cmp r3, r0
bge _080D3F1C
- ldr r6, _080D3F80 @ =gUnknown_03004DE0
- ldr r5, _080D3F84 @ =gUnknown_03004DC0
+ ldr r6, _080D3F80 @ =gScanlineEffectRegBuffers
+ ldr r5, _080D3F84 @ =gScanlineEffect
_080D3EF6:
lsls r1, r3, 16
asrs r1, 16
@@ -505,8 +505,8 @@ _080D3F1C:
ldrsh r0, [r4, r3]
cmp r1, r0
bge _080D3F50
- ldr r6, _080D3F80 @ =gUnknown_03004DE0
- ldr r5, _080D3F84 @ =gUnknown_03004DC0
+ ldr r6, _080D3F80 @ =gScanlineEffectRegBuffers
+ ldr r5, _080D3F84 @ =gScanlineEffect
_080D3F2E:
asrs r3, r2, 16
lsls r2, r3, 1
@@ -531,8 +531,8 @@ _080D3F50:
asrs r0, r1, 16
cmp r0, 0x9F
bgt _080D4032
- ldr r6, _080D3F80 @ =gUnknown_03004DE0
- ldr r5, _080D3F84 @ =gUnknown_03004DC0
+ ldr r6, _080D3F80 @ =gScanlineEffectRegBuffers
+ ldr r5, _080D3F84 @ =gScanlineEffect
_080D3F5E:
asrs r3, r1, 16
lsls r2, r3, 1
@@ -551,16 +551,16 @@ _080D3F5E:
ble _080D3F5E
b _080D4032
.align 2, 0
-_080D3F80: .4byte gUnknown_03004DE0
-_080D3F84: .4byte gUnknown_03004DC0
+_080D3F80: .4byte gScanlineEffectRegBuffers
+_080D3F84: .4byte gScanlineEffect
_080D3F88:
movs r3, 0
movs r1, 0x10
ldrsh r0, [r4, r1]
cmp r3, r0
bge _080D3FBC
- ldr r6, _080D403C @ =gUnknown_03004DE0
- ldr r5, _080D4040 @ =gUnknown_03004DC0
+ ldr r6, _080D403C @ =gScanlineEffectRegBuffers
+ ldr r5, _080D4040 @ =gScanlineEffect
_080D3F96:
lsls r1, r3, 16
asrs r1, 16
@@ -589,8 +589,8 @@ _080D3FBC:
ldrsh r0, [r4, r3]
cmp r1, r0
bge _080D3FF0
- ldr r6, _080D403C @ =gUnknown_03004DE0
- ldr r5, _080D4040 @ =gUnknown_03004DC0
+ ldr r6, _080D403C @ =gScanlineEffectRegBuffers
+ ldr r5, _080D4040 @ =gScanlineEffect
_080D3FCE:
asrs r3, r2, 16
lsls r2, r3, 1
@@ -615,8 +615,8 @@ _080D3FF0:
asrs r0, r1, 16
cmp r0, 0x9F
bgt _080D401C
- ldr r6, _080D403C @ =gUnknown_03004DE0
- ldr r5, _080D4040 @ =gUnknown_03004DC0
+ ldr r6, _080D403C @ =gScanlineEffectRegBuffers
+ ldr r5, _080D4040 @ =gScanlineEffect
_080D3FFE:
asrs r3, r1, 16
lsls r2, r3, 1
@@ -640,7 +640,7 @@ _080D401C:
negs r0, r0
cmp r1, r0
bne _080D4032
- bl remove_some_task
+ bl ScanlineEffect_Stop
adds r0, r7, 0
bl DestroyTask
_080D4032:
@@ -649,8 +649,8 @@ _080D4032:
pop {r0}
bx r0
.align 2, 0
-_080D403C: .4byte gUnknown_03004DE0
-_080D4040: .4byte gUnknown_03004DC0
+_080D403C: .4byte gScanlineEffectRegBuffers
+_080D4040: .4byte gScanlineEffect
thumb_func_end sub_80D3D68
thumb_func_start sub_80D4044
diff --git a/common_syms/scanline_effect.txt b/common_syms/scanline_effect.txt
new file mode 100644
index 000000000..280e7f891
--- /dev/null
+++ b/common_syms/scanline_effect.txt
@@ -0,0 +1,2 @@
+gScanlineEffect
+gScanlineEffectRegBuffers
diff --git a/include/data2.h b/include/data2.h
index 97cb4fd7a..9f6644714 100644
--- a/include/data2.h
+++ b/include/data2.h
@@ -3,7 +3,7 @@
#include "sprite.h"
-struct UnknownTaskStruct;
+struct ScanlineEffectParams;
struct MonCoords
{
@@ -42,7 +42,7 @@ extern u8 gSpeciesNames[][11];
extern const u8 gMoveNames[][13];
extern const u8 gAbilityNames[][13];
extern const u8 gTypeNames[][7];
-extern const struct UnknownTaskStruct gUnknown_081F9674;
+extern const struct ScanlineEffectParams gUnknown_081F9674;
extern const u8 gUnknown_081F96C8[];
extern struct CompressedSpriteSheet gUnknown_081FAEA4;
extern struct CompressedSpritePalette gUnknown_081FAEAC;
diff --git a/include/scanline_effect.h b/include/scanline_effect.h
new file mode 100644
index 000000000..314a856fa
--- /dev/null
+++ b/include/scanline_effect.h
@@ -0,0 +1,48 @@
+#ifndef GUARD_SCANLINE_EFFECT_H
+#define GUARD_SCANLINE_EFFECT_H
+
+// DMA control value to ransfer a single 16-bit value at HBlank
+#define SCANLINE_EFFECT_DMACNT_16BIT (((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_SRC_INC | DMA_DEST_INC | DMA_16BIT | DMA_DEST_RELOAD) << 16) | 1)
+
+#define SCANLINE_EFFECT_REG_BG0HOFS (REG_ADDR_BG0HOFS - REG_ADDR_BG0HOFS)
+#define SCANLINE_EFFECT_REG_BG0VOFS (REG_ADDR_BG0VOFS - REG_ADDR_BG0HOFS)
+#define SCANLINE_EFFECT_REG_BG1HOFS (REG_ADDR_BG1HOFS - REG_ADDR_BG0HOFS)
+#define SCANLINE_EFFECT_REG_BG1VOFS (REG_ADDR_BG1VOFS - REG_ADDR_BG0HOFS)
+#define SCANLINE_EFFECT_REG_BG2HOFS (REG_ADDR_BG2HOFS - REG_ADDR_BG0HOFS)
+#define SCANLINE_EFFECT_REG_BG2VOFS (REG_ADDR_BG2VOFS - REG_ADDR_BG0HOFS)
+#define SCANLINE_EFFECT_REG_BG3HOFS (REG_ADDR_BG3HOFS - REG_ADDR_BG0HOFS)
+#define SCANLINE_EFFECT_REG_BG3VOFS (REG_ADDR_BG3VOFS - REG_ADDR_BG0HOFS)
+
+struct ScanlineEffectParams
+{
+ volatile void *dmaDest;
+ u32 dmaControl;
+ u8 initState;
+ u8 unused9;
+};
+
+struct ScanlineEffect
+{
+ void *dmaSrcBuffers[2];
+ volatile void *dmaDest;
+ u32 dmaControl;
+ void (*setFirstScanlineReg)(void);
+ u8 srcBuffer;
+ u8 state;
+ u8 unused16;
+ u8 unused17;
+ u8 waveTaskId;
+ u8 filler19[0x7];
+};
+
+extern struct ScanlineEffect gScanlineEffect;
+
+extern u16 gScanlineEffectRegBuffers[][0x3C0];
+
+void ScanlineEffect_Stop(void);
+void ScanlineEffect_Clear(void);
+void ScanlineEffect_SetParams(struct ScanlineEffectParams);
+void ScanlineEffect_InitHBlankDmaTransfer(void);
+u8 ScanlineEffect_InitWave(u8 startLine, u8 endLine, u8 frequency, u8 amplitude, u8 delayInterval, u8 regOffset, bool8 a7);
+
+#endif // GUARD_SCANLINE_EFFECT_H
diff --git a/include/unknown_task.h b/include/unknown_task.h
deleted file mode 100644
index 011e5f5b5..000000000
--- a/include/unknown_task.h
+++ /dev/null
@@ -1,42 +0,0 @@
-#ifndef GUARD_UNKNOWN_TASK_H
-#define GUARD_UNKNOWN_TASK_H
-
-struct UnknownTaskStruct
-{
- volatile void *dest;
- u32 control;
- u8 unk8;
- u8 unk9;
-};
-
-struct UnknownTaskStruct2
-{
- void *src[2];
- volatile void *dest;
- u32 unkC;
- void (*unk10)(void);
- u8 srcBank;
- u8 unk15;
- u8 unk16;
- u8 unk17;
- u8 taskId;
- u8 filler19[0x7];
-};
-
-extern struct UnknownTaskStruct2 gUnknown_03004DC0;
-
-extern u16 gUnknown_03004DE0[][0x3C0];
-
-void remove_some_task(void);
-void remove_some_task(void);
-void dp12_8087EA4(void);
-void dp12_8087EA4(void);
-//void sub_80895F8(u32 i, u32 i1, u32 i2);
-//void sub_80895F8();
-void sub_80895F8(struct UnknownTaskStruct unk);
-void sub_8089668(void);
-void sub_8089668();
-//void sub_8089944(int i, int i1, int i2, int i3, int i4, int i5, int i6);
-u8 sub_8089944(u8 a1, u8 a2, u8 a3, u8 a4, u8 a5, u8 a6, u8 a7);
-
-#endif // GUARD_UNKNOWN_TASK_H
diff --git a/ld_script.txt b/ld_script.txt
index c8ede2726..9b385d3b8 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -119,7 +119,7 @@ SECTIONS {
src/field/trainer_see.o(.text);
src/field/wild_encounter.o(.text);
src/field/field_effect.o(.text);
- src/unknown_task.o(.text);
+ src/scanline_effect.o(.text);
src/pokemon/pokemon_menu.o(.text);
src/engine/option_menu.o(.text);
src/pokemon/pokedex.o(.text);
diff --git a/src/battle/anim/draw.c b/src/battle/anim/draw.c
index 3adb62e06..f9e505bf2 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;
@@ -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.initState = 1;
+ params.unused9 = 0;
+ ScanlineEffect_SetParams(params);
task->func = sub_80D0D68;
}
@@ -91,13 +93,13 @@ 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])
{
- gUnknown_03004DC0.unk15 = 3;
+ gScanlineEffect.unk15 = 3;
DestroyAnimVisualTask(taskId);
}
}
@@ -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\
@@ -202,7 +204,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\
@@ -212,8 +214,8 @@ _080D0E22:\n\
pop {r0}\n\
bx r0\n\
.align 2, 0\n\
-_080D0E28: .4byte gUnknown_03004DE0\n\
-_080D0E2C: .4byte gUnknown_03004DC0\n\
+_080D0E28: .4byte gScanlineEffectRegBuffers\n\
+_080D0E2C: .4byte gScanlineEffect\n\
.syntax divided\n");
}
#endif
diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c
index 249b67e0d..990535b4e 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"
@@ -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,21 +219,21 @@ void InitBattle(void)
REG_WINOUT = 0;
gBattle_WIN0H = 0xF0;
gBattle_WIN0V = 0x5051;
- dp12_8087EA4();
+ ScanlineEffect_Clear();
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;
@@ -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;
@@ -1073,7 +1073,7 @@ void sub_800FCFC(void)
LoadOam();
ProcessSpriteCopyRequests();
TransferPlttBuffer();
- sub_8089668();
+ ScanlineEffect_InitHBlankDmaTransfer();
}
void nullsub_36(struct Sprite *sprite)
@@ -1197,18 +1197,18 @@ void c2_8011A1C(void)
REG_WINOUT = 0;
gBattle_WIN0H = 0xF0;
gBattle_WIN0V = 0x5051;
- dp12_8087EA4();
+ ScanlineEffect_Clear();
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();
@@ -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 985f43945..f7cdc0694 100644
--- a/src/battle/battle_transition.c
+++ b/src/battle/battle_transition.c
@@ -13,12 +13,10 @@
#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);
-
-extern u16 gUnknown_03005560[];
+void ScanlineEffect_Clear(void);
extern const struct OamData gFieldOamData_32x32;
@@ -672,9 +670,9 @@ 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(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;
@@ -732,10 +730,10 @@ static bool8 Phase2_Transition_Shuffle_Func1(struct Task* task)
u16 savedIME;
sub_811D658();
- dp12_8087EA4();
+ ScanlineEffect_Clear();
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;
@@ -800,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;
@@ -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, &REG_BG0HOFS, 0xA2400001);
+ DmaSet(0, gScanlineEffectRegBuffers[1], &REG_BG0HOFS, 0xA2400001);
}
static void VBlankCB1_Phase2_Transition_BigPokeball(void)
{
Transition_BigPokeball_Vblank();
- DmaSet(0, gUnknown_03005560, &REG_WIN0H, 0xA2400001);
+ DmaSet(0, gScanlineEffectRegBuffers[1], &REG_WIN0H, 0xA2400001);
}
static void Phase2Task_Transition_PokeballsTrail(u8 taskID)
@@ -1078,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;
@@ -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], &REG_WIN0H, 0xA2400001);
+ REG_WIN0H = gScanlineEffectRegBuffers[1][0];
+ DmaSet(0, gScanlineEffectRegBuffers[1], &REG_WIN0H, 0xA2400001);
}
static void Phase2Task_Transition_Ripple(u8 taskID)
@@ -1271,11 +1269,11 @@ static bool8 Phase2_Transition_Ripple_Func1(struct Task* task)
u8 i;
sub_811D658();
- dp12_8087EA4();
+ ScanlineEffect_Clear();
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;
@@ -1350,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;
@@ -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], &REG_WIN0H, 0xA2400001);
+ DmaSet(0, gScanlineEffectRegBuffers[1], &REG_WIN0H, 0xA2400001);
}
#define tMugshotOpponentID data[13]
@@ -1462,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;
@@ -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], &REG_WIN0H, 0xA2400001);
+ DmaSet(0, gScanlineEffectRegBuffers[1], &REG_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], &REG_BLDY, 0xA2400001);
+ DmaSet(0, gScanlineEffectRegBuffers[1], &REG_BLDY, 0xA2400001);
}
static void HBlankCB_Phase2_Mugshots(void)
@@ -1846,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;
@@ -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], &REG_WIN0H, 0xA2400001);
+ DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 640);
+ DmaSet(0, &gScanlineEffectRegBuffers[1][160], &REG_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;
@@ -1945,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;
@@ -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], &REG_WIN0H, 0xA2400001);
+ DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 640);
+ DmaSet(0, &gScanlineEffectRegBuffers[1][160], &REG_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;
@@ -2160,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;
@@ -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], &REG_WIN0H, 0xA2400001);
+ REG_WIN0H = gScanlineEffectRegBuffers[1][0];
+ DmaSet(0, gScanlineEffectRegBuffers[1], &REG_WIN0H, 0xA2400001);
}
static void CreatePhase1Task(s16 a0, s16 a1, s16 a2, s16 a3, s16 a4)
diff --git a/src/battle/reshow_battle_screen.c b/src/battle/reshow_battle_screen.c
index 42bb3ba7f..a78cb20df 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"
@@ -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 8985d6490..875fe4502 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
@@ -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;
@@ -635,7 +635,7 @@ void ContestVBlankCallback(void)
TransferPlttBuffer();
LoadOam();
ProcessSpriteCopyRequests();
- sub_8089668();
+ ScanlineEffect_InitHBlankDmaTransfer();
}
void sub_80ABB70(u8 taskId)
diff --git a/src/debug/matsuda_debug_menu.c b/src/debug/matsuda_debug_menu.c
index 0585c4e00..1da337b04 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;
@@ -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,12 +511,12 @@ 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();
- sub_8089668();
+ ScanlineEffect_InitHBlankDmaTransfer();
}
static void sub_80AA10C(void)
@@ -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 cb0e98b71..4b64846f9 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;
@@ -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 =
{
&REG_BG3VOFS,
((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1,
@@ -297,10 +297,10 @@ void sub_80E62F8(void)
SetVBlankCallback(0);
ResetPaletteFade();
ResetSpriteData();
- dp12_8087EA4();
- remove_some_task();
+ ScanlineEffect_Clear();
+ 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();
- sub_8089668();
+ ScanlineEffect_InitHBlankDmaTransfer();
}
void sub_80E6A88(void)
diff --git a/src/easy_chat_2.c b/src/easy_chat_2.c
index 66af7fc04..dc8bddd5a 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);
@@ -2053,7 +2053,7 @@ void sub_80EAD08(void)
u16 r2;
u16 i;
- r4 = gUnknown_03004DE0[gUnknown_03004DC0.srcBank];
+ r4 = gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer];
r4 += 88;
r2 = (gEasyChatStruct->unk1BA - 88) & 0xFF;
diff --git a/src/engine/main.c b/src/engine/main.c
index 82a5fffb4..1bed4080b 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[];
@@ -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 715570fe0..a0b8b7020 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))
@@ -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..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 remove_some_task(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 6e9efd342..a8b49a8eb 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
{
@@ -438,8 +438,8 @@ void CB2_InitResetRtcScreen(void)
ResetOamRange(0, 128);
LoadOam();
- remove_some_task();
- dp12_8087EA4();
+ ScanlineEffect_Stop();
+ ScanlineEffect_Clear();
ResetSpriteData();
ResetTasks();
ResetPaletteFade();
diff --git a/src/engine/trainer_card.c b/src/engine/trainer_card.c
index 70942fc29..ab43ac716 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"
@@ -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)
@@ -730,9 +730,9 @@ bool8 sub_8093AA0(struct Task *task)
u32 i;
ewram0_2.var_4 = FALSE;
- dp12_8087EA4();
+ ScanlineEffect_Clear();
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/diploma.c b/src/field/diploma.c
index 7028eec02..978eca7eb 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);
@@ -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 6e818ce68..61301c5a9 100644
--- a/src/field/field_screen_effect.c
+++ b/src/field/field_screen_effect.c
@@ -7,13 +7,13 @@
#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 };
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,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(gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer], 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(gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer], 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
@@ -85,7 +85,7 @@ static void sub_8081424(u8 taskId)
}
break;
case 2:
- dp12_8087EA4();
+ ScanlineEffect_Clear();
DestroyTask(taskId);
break;
}
@@ -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/item_menu.c b/src/field/item_menu.c
index 2be5f1e1d..e0575af4c 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
@@ -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 9fab20876..86b0a5dac 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
@@ -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();
- sub_8089668();
+ 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);
}
}
@@ -1669,7 +1669,7 @@ void sub_8054BA8(void)
REG_DISPCNT = 0;
- remove_some_task();
+ ScanlineEffect_Stop();
DmaClear16(3, PLTT + 2, PLTT_SIZE - 2);
@@ -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/party_menu.c b/src/field/party_menu.c
index 9cad5bd73..7d243f569 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"
@@ -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 dd94e1755..7e8bdc2ce 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"
@@ -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 d56d65c3f..1dc6ba0cd 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"
@@ -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 5b2276d1b..d6881cb01 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 {
@@ -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;
@@ -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/field/starter_choose.c b/src/field/starter_choose.c
index 91b706e78..418488774 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;
@@ -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..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 sub_8089668(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);
- sub_8089668();
+ ScanlineEffect_InitHBlankDmaTransfer();
}
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 4f2a6dccd..aaa7f9ae8 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[];
@@ -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 ab43c033a..921a3ad93 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
@@ -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 48ce26bb8..4fb6a4920 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
@@ -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 d98383c6d..bf8306fc0 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);
@@ -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();
@@ -701,7 +701,7 @@ bool8 sub_809DA84(void)
gMain.state++;
break;
case 1:
- remove_some_task();
+ ScanlineEffect_Stop();
gMain.state++;
break;
case 2:
@@ -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/pokenav_before.c b/src/pokenav_before.c
index 3b534c96c..b31be2ce1 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[];
@@ -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_InitHBlankDmaTransfer();
}
void sub_80EBD68()
diff --git a/src/roulette.c b/src/roulette.c
index e88c36c01..6d79f9d38 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\"");
@@ -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
new file mode 100644
index 000000000..b4de0689f
--- /dev/null
+++ b/src/scanline_effect.c
@@ -0,0 +1,261 @@
+#include "global.h"
+#include "data2.h"
+#include "task.h"
+#include "trig.h"
+#include "scanline_effect.h"
+
+static void CopyValue16Bit(void);
+static void CopyValue32Bit(void);
+
+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 gBattle_BG3_X;
+extern u16 gBattle_BG3_Y;
+
+EWRAM_DATA static u8 sShouldStopWaveTask = FALSE;
+
+struct ScanlineEffect gScanlineEffect;
+
+// 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)
+{
+ gScanlineEffect.state = 0;
+ DmaStop(0);
+ if (gScanlineEffect.waveTaskId != 0xFF)
+ {
+ DestroyTask(gScanlineEffect.waveTaskId);
+ gScanlineEffect.waveTaskId = 0xFF;
+ }
+}
+
+void ScanlineEffect_Clear(void)
+{
+ CpuFill16(0, gScanlineEffectRegBuffers, sizeof(gScanlineEffectRegBuffers));
+ gScanlineEffect.dmaSrcBuffers[0] = NULL;
+ gScanlineEffect.dmaSrcBuffers[1] = NULL;
+ gScanlineEffect.dmaDest = NULL;
+ gScanlineEffect.dmaControl = 0;
+ gScanlineEffect.srcBuffer = 0;
+ gScanlineEffect.state = 0;
+ gScanlineEffect.unused16 = 0;
+ gScanlineEffect.unused17 = 0;
+ gScanlineEffect.waveTaskId = 0xFF;
+}
+
+void ScanlineEffect_SetParams(struct ScanlineEffectParams params)
+{
+ if (params.dmaControl == SCANLINE_EFFECT_DMACNT_16BIT) // 16-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.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.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.state = params.initState;
+ gScanlineEffect.unused16 = params.unused9;
+ gScanlineEffect.unused17 = params.unused9;
+}
+
+void ScanlineEffect_InitHBlankDmaTransfer(void)
+{
+ if (gScanlineEffect.state == 0)
+ {
+ 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;
+ }
+}
+
+// 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.dmaDest;
+ u16 *src = (u16 *)&gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer];
+
+ *dest = *src;
+}
+
+static void CopyValue32Bit(void)
+{
+ u32 *dest = (u32 *)gScanlineEffect.dmaDest;
+ u32 *src = (u32 *)&gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer];
+
+ *dest = *src;
+}
+
+#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 (sShouldStopWaveTask)
+ {
+ DestroyTask(taskId);
+ gScanlineEffect.waveTaskId = 0xFF;
+ }
+ else
+ {
+ if (gTasks[taskId].tApplyBattleBgOffsets)
+ {
+ switch (gTasks[taskId].tRegOffset)
+ {
+ case SCANLINE_EFFECT_REG_BG0HOFS:
+ value = gBattle_BG0_X;
+ break;
+ case SCANLINE_EFFECT_REG_BG0VOFS:
+ value = gBattle_BG0_Y;
+ break;
+ case SCANLINE_EFFECT_REG_BG1HOFS:
+ value = gBattle_BG1_X;
+ break;
+ case SCANLINE_EFFECT_REG_BG1VOFS:
+ value = gBattle_BG1_Y;
+ break;
+ case SCANLINE_EFFECT_REG_BG2HOFS:
+ value = gBattle_BG2_X;
+ break;
+ case SCANLINE_EFFECT_REG_BG2VOFS:
+ value = gBattle_BG2_Y;
+ break;
+ case SCANLINE_EFFECT_REG_BG3HOFS:
+ value = gBattle_BG3_X;
+ break;
+ case SCANLINE_EFFECT_REG_BG3VOFS:
+ value = gBattle_BG3_Y;
+ break;
+ }
+ }
+ if (gTasks[taskId].tFramesUntilMove != 0)
+ {
+ gTasks[taskId].tFramesUntilMove--;
+ offset = gTasks[taskId].tSrcBufferOffset + 320;
+ for (i = gTasks[taskId].tStartLine; i < gTasks[taskId].tEndLine; i++)
+ {
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = gScanlineEffectRegBuffers[0][offset] + value;
+ offset++;
+ }
+ }
+ else
+ {
+ gTasks[taskId].tFramesUntilMove = gTasks[taskId].tDelayInterval;
+ offset = gTasks[taskId].tSrcBufferOffset + 320;
+ for (i = gTasks[taskId].tStartLine; i < gTasks[taskId].tEndLine; i++)
+ {
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = gScanlineEffectRegBuffers[0][offset] + value;
+ offset++;
+ }
+
+ // increment src buffer offset
+ gTasks[taskId].tSrcBufferOffset++;
+ if (gTasks[taskId].tSrcBufferOffset == gTasks[taskId].tWaveLength)
+ gTasks[taskId].tSrcBufferOffset = 0;
+ }
+ }
+}
+
+static void GenerateWave(u16 *buffer, u8 frequency, u8 amplitude, u8 unused)
+{
+ u16 i = 0;
+ u8 theta = 0;
+
+ while (i < 256)
+ {
+ buffer[i] = (gSineTable[theta] * amplitude) / 256;
+ theta += frequency;
+ i++;
+ }
+}
+
+// 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 applyBattleBgOffsets)
+{
+ int i;
+ int offset;
+ struct ScanlineEffectParams params;
+ u8 taskId;
+
+ ScanlineEffect_Clear();
+
+ params.dmaDest = (void *)(REG_ADDR_BG0HOFS + regOffset);
+ params.dmaControl = SCANLINE_EFFECT_DMACNT_16BIT;
+ params.initState = 1;
+ params.unused9 = 0;
+ ScanlineEffect_SetParams(params);
+
+ taskId = CreateTask(TaskFunc_UpdateWavePerFrame, 0);
+
+ 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.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];
+ gScanlineEffectRegBuffers[1][i] = gScanlineEffectRegBuffers[0][offset];
+ offset++;
+ }
+
+ return taskId;
+}
diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c
index 52a0aeebf..d8e099130 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"
@@ -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 401872644..3aa898b03 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;
@@ -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 167130aa5..53eb2f1e8 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"
@@ -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;
@@ -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();
@@ -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,12 +3929,12 @@ 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();
- sub_8089668();
+ ScanlineEffect_InitHBlankDmaTransfer();
}
static void VBlankCB_TradeEvolutionScene(void)
@@ -3945,12 +3945,12 @@ 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();
- sub_8089668();
+ ScanlineEffect_InitHBlankDmaTransfer();
}
static void sub_81150D8(void)
diff --git a/src/scene/hall_of_fame.c b/src/scene/hall_of_fame.c
index 948c288ff..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 remove_some_task(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 4dc6cc91c..d7d772a40 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;
@@ -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/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..202b752a6 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
@@ -598,7 +598,7 @@ static void StartPokemonLogoShine(bool8 flashBackground)
static void VBlankCB(void)
{
- sub_8089668();
+ ScanlineEffect_InitHBlankDmaTransfer();
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, DISPLAY_HEIGHT, 4, 4, 0, SCANLINE_EFFECT_REG_BG1HOFS, TRUE);
SetMainCallback2(MainCB2);
}
break;
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;
-}
diff --git a/sym_common.txt b/sym_common.txt
index f620e9e49..cfb1b6b13 100644
--- a/sym_common.txt
+++ b/sym_common.txt
@@ -8,13 +8,13 @@
@ battle
.align 2
-gUnknown_030041B0: @ 30041B0
+gBattle_BG3_X: @ 30041B0
.space 0x4
gBattle_BG1_Y: @ 30041B4
.space 0x4
-gUnknown_030041B8: @ 30041B8
+gBattle_BG3_Y: @ 30041B8
.space 0x8
gBattleTextBuff1: @ 30041C0
@@ -137,29 +137,7 @@ gUnknown_03004AE4: @ 3004AE4
.include "debug/mori_debug_menu.o"
@ unknown_task
-
- .align 4
-gUnknown_03004DC0: @ 3004DC0
- .space 0x20
-
-gUnknown_03004DE0: @ 3004DE0
- .space 0x2
-
-gUnknown_03004DE2: @ 3004DE2
- .space 0x2
-
-gUnknown_03004DE4: @ 3004DE4
- .space 0x27C
-
-gUnknown_03005060: @ 3005060
- .space 0x500
-
-gUnknown_03005560: @ 3005560
- .space 0x140
-
-gUnknown_030056A0: @ 30056A0
- .space 0x640
-
+ .include "scanline_effect.o"
.include "pokemon/pokemon_menu.o"
.include "pokemon/pokedex.o"
diff --git a/sym_ewram.txt b/sym_ewram.txt
index fc4ea94ef..dcbadf96e 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -368,12 +368,7 @@ gUnknown_0202FF58: @ 202FF58
.include "src/battle/battle_setup.o"
.include "src/field/wild_encounter.o"
.include "src/field/field_effect.o"
-
-@ unknown_task
-
-gUnknown_0202FFA4: @ 202FFA4
- .space 0x4
-
+ .include "src/scanline_effect.o"
.include "src/pokemon/pokemon_menu.o"
.include "src/pokemon/pokedex.o"
.include "src/engine/trainer_card.o"