summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/title_screen.s636
-rw-r--r--include/berry_fix_program.h6
-rw-r--r--include/clear_save_data_screen.h6
-rw-r--r--include/graphics.h2
-rw-r--r--include/palette.h1
-rw-r--r--src/title_screen.c231
6 files changed, 245 insertions, 637 deletions
diff --git a/asm/title_screen.s b/asm/title_screen.s
index 47a1b30a9..686ecbbcd 100644
--- a/asm/title_screen.s
+++ b/asm/title_screen.s
@@ -5,642 +5,6 @@
.text
- thumb_func_start sub_80792C8
-sub_80792C8: @ 80792C8
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _080792EC @ =gTasks+0x8
- adds r4, r0, r1
- movs r1, 0
- ldrsh r0, [r4, r1]
- cmp r0, 0x5
- bls _080792E2
- b _08079414
-_080792E2:
- lsls r0, 2
- ldr r1, _080792F0 @ =_080792F4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080792EC: .4byte gTasks+0x8
-_080792F0: .4byte _080792F4
- .align 2, 0
-_080792F4:
- .4byte _0807930C
- .4byte _08079344
- .4byte _08079368
- .4byte _0807937C
- .4byte _080793BC
- .4byte _08079404
-_0807930C:
- movs r1, 0x80
- lsls r1, 6
- movs r0, 0
- bl SetGpuRegBits
- movs r0, 0x48
- movs r1, 0x3F
- bl SetGpuReg
- movs r0, 0x4A
- movs r1, 0x37
- bl SetGpuReg
- movs r0, 0x44
- movs r1, 0xA0
- bl SetGpuReg
- movs r0, 0x40
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x80
- lsls r0, 7
- movs r1, 0
- movs r2, 0
- bl BlendPalettes
- b _080793AA
-_08079344:
- movs r1, 0xC0
- lsls r1, 1
- adds r0, r1, 0
- ldrh r1, [r4, 0x2]
- adds r0, r1
- strh r0, [r4, 0x2]
- lsls r0, 16
- asrs r0, 20
- strh r0, [r4, 0x4]
- cmp r0, 0xEF
- ble _08079364
- movs r0, 0xF0
- strh r0, [r4, 0x4]
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
-_08079364:
- ldrh r1, [r4, 0x4]
- b _080793F6
-_08079368:
- ldrh r0, [r4, 0x6]
- adds r0, 0x1
- strh r0, [r4, 0x6]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x9
- ble _08079414
- movs r0, 0
- strh r0, [r4, 0x6]
- b _080793AA
-_0807937C:
- movs r0, 0x4A
- movs r1, 0x3B
- bl SetGpuReg
- ldr r1, _080793B4 @ =0x0000f0f0
- movs r0, 0x40
- bl SetGpuReg
- ldr r1, _080793B8 @ =0xffff1000
- movs r0, 0x2
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x80
- lsls r0, 8
- movs r1, 0
- movs r2, 0
- bl BlendPalettes
- movs r1, 0xF0
- lsls r1, 4
- adds r0, r1, 0
- strh r0, [r4, 0x2]
-_080793AA:
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- b _08079414
- .align 2, 0
-_080793B4: .4byte 0x0000f0f0
-_080793B8: .4byte 0xffff1000
-_080793BC:
- ldr r1, _08079400 @ =0xfffffe80
- adds r0, r1, 0
- ldrh r1, [r4, 0x2]
- adds r0, r1
- strh r0, [r4, 0x2]
- lsls r0, 16
- asrs r0, 20
- strh r0, [r4, 0x4]
- cmp r0, 0
- bgt _080793DA
- movs r0, 0
- strh r0, [r4, 0x4]
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
-_080793DA:
- movs r0, 0x4
- ldrsh r1, [r4, r0]
- negs r1, r1
- lsls r1, 8
- movs r0, 0x2
- movs r2, 0
- bl ChangeBgX
- ldrh r1, [r4, 0x4]
- lsls r1, 8
- movs r0, 0xF0
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
-_080793F6:
- movs r0, 0x40
- bl SetGpuReg
- b _08079414
- .align 2, 0
-_08079400: .4byte 0xfffffe80
-_08079404:
- movs r1, 0x80
- lsls r1, 6
- movs r0, 0
- bl ClearGpuRegBits
- adds r0, r5, 0
- bl DestroyTask
-_08079414:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80792C8
-
- thumb_func_start sub_807941C
-sub_807941C: @ 807941C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, _08079460 @ =gTasks+0x8
- adds r5, r0, r1
- movs r1, 0x1E
- ldrsh r0, [r5, r1]
- cmp r0, 0
- beq _08079444
- ldr r0, _08079464 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08079444
- movs r0, 0x1
- strh r0, [r5, 0x1C]
-_08079444:
- movs r3, 0x1C
- ldrsh r0, [r5, r3]
- cmp r0, 0
- beq _08079468
- ldr r0, _08079464 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08079468
- adds r0, r2, 0
- bl DestroyTask
- b _08079510
- .align 2, 0
-_08079460: .4byte gTasks+0x8
-_08079464: .4byte gPaletteFade
-_08079468:
- movs r1, 0x2
- ldrsh r0, [r5, r1]
- ldrh r2, [r5, 0x2]
- cmp r0, 0
- bne _08079476
- movs r0, 0x3C
- b _08079478
-_08079476:
- movs r0, 0x1E
-_08079478:
- strh r0, [r5, 0x4]
- ldrh r0, [r5]
- adds r0, 0x1
- strh r0, [r5]
- lsls r0, 16
- asrs r0, 16
- movs r3, 0x4
- ldrsh r1, [r5, r3]
- cmp r0, r1
- blt _08079510
- movs r0, 0
- strh r0, [r5]
- movs r0, 0x1
- eors r0, r2
- strh r0, [r5, 0x2]
- lsls r0, 16
- cmp r0, 0
- beq _080794CC
- ldr r2, _080794C0 @ =gPlttBufferUnfaded
- ldr r4, _080794C4 @ =gUnknown_8EAE094
- ldr r1, _080794C8 @ =gPlttBufferFaded
- movs r0, 0xF1
- lsls r0, 1
- adds r1, r0
- adds r2, r0
- movs r3, 0x4
-_080794AC:
- ldrh r0, [r4, 0xC]
- strh r0, [r2]
- ldrh r0, [r4, 0xC]
- strh r0, [r1]
- adds r1, 0x2
- adds r2, 0x2
- subs r3, 0x1
- cmp r3, 0
- bge _080794AC
- b _080794F2
- .align 2, 0
-_080794C0: .4byte gPlttBufferUnfaded
-_080794C4: .4byte gUnknown_8EAE094
-_080794C8: .4byte gPlttBufferFaded
-_080794CC:
- movs r3, 0
- ldr r2, _08079518 @ =gPlttBufferUnfaded
- ldr r0, _0807951C @ =gUnknown_8EAE094
- ldr r1, _08079520 @ =gPlttBufferFaded
- adds r4, r0, 0x2
- movs r0, 0xF1
- lsls r0, 1
- adds r1, r0
- adds r2, r0
-_080794DE:
- ldrh r0, [r4]
- strh r0, [r2]
- ldrh r0, [r4]
- strh r0, [r1]
- adds r4, 0x2
- adds r1, 0x2
- adds r2, 0x2
- adds r3, 0x1
- cmp r3, 0x4
- ble _080794DE
-_080794F2:
- movs r1, 0x1C
- ldrsh r0, [r5, r1]
- cmp r0, 0
- beq _08079510
- movs r0, 0x80
- lsls r0, 8
- ldr r2, _08079524 @ =gPaletteFade
- ldrh r1, [r2, 0x4]
- lsls r1, 21
- lsrs r1, 27
- ldrh r2, [r2, 0x6]
- lsls r2, 17
- lsrs r2, 17
- bl BlendPalettes
-_08079510:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08079518: .4byte gPlttBufferUnfaded
-_0807951C: .4byte gUnknown_8EAE094
-_08079520: .4byte gPlttBufferFaded
-_08079524: .4byte gPaletteFade
- thumb_func_end sub_807941C
-
- thumb_func_start sub_8079528
-sub_8079528: @ 8079528
- push {lr}
- ldr r0, _08079548 @ =sub_807941C
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0807954C @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r0, 0x1
- strh r0, [r1, 0x26]
- pop {r0}
- bx r0
- .align 2, 0
-_08079548: .4byte sub_807941C
-_0807954C: .4byte gTasks
- thumb_func_end sub_8079528
-
- thumb_func_start sub_8079550
-sub_8079550: @ 8079550
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r5, r0, 16
- asrs r4, r5, 16
- cmp r4, 0
- blt _08079574
- ldr r3, _08079618 @ =gScanlineEffectRegBuffers
- lsls r2, r4, 1
- ldr r0, _0807961C @ =gScanlineEffect
- ldrb r1, [r0, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- adds r2, r0
- adds r2, r3
- movs r0, 0x10
- strh r0, [r2]
-_08079574:
- movs r3, 0
- mov r8, r5
- adds r6, r4, 0
- ldr r0, _08079618 @ =gScanlineEffectRegBuffers
- mov r12, r0
- ldr r7, _0807961C @ =gScanlineEffect
- movs r5, 0xF
- lsls r2, r6, 1
- adds r4, r2, 0
-_08079586:
- adds r0, r6, r3
- cmp r0, 0
- blt _0807959A
- ldrb r1, [r7, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- adds r0, r4, r0
- add r0, r12
- strh r5, [r0]
-_0807959A:
- subs r0, r6, r3
- cmp r0, 0
- blt _080795AE
- ldrb r1, [r7, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- adds r0, r2, r0
- add r0, r12
- strh r5, [r0]
-_080795AE:
- subs r5, 0x1
- subs r2, 0x2
- adds r4, 0x2
- adds r3, 0x1
- cmp r3, 0xF
- ble _08079586
- mov r1, r8
- asrs r0, r1, 16
- adds r3, r0, 0
- adds r3, 0x10
- cmp r3, 0x9F
- bgt _080795E6
- ldr r6, _08079618 @ =gScanlineEffectRegBuffers
- ldr r5, _0807961C @ =gScanlineEffect
- movs r4, 0
-_080795CC:
- cmp r3, 0
- blt _080795E0
- lsls r2, r3, 1
- ldrb r1, [r5, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- adds r2, r0
- adds r2, r6
- strh r4, [r2]
-_080795E0:
- adds r3, 0x1
- cmp r3, 0x9F
- ble _080795CC
-_080795E6:
- mov r1, r8
- asrs r0, r1, 16
- adds r3, r0, 0
- subs r3, 0x10
- cmp r3, 0
- blt _0807960E
- ldr r6, _08079618 @ =gScanlineEffectRegBuffers
- ldr r5, _0807961C @ =gScanlineEffect
- movs r4, 0
-_080795F8:
- lsls r2, r3, 1
- ldrb r1, [r5, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- adds r2, r0
- adds r2, r6
- strh r4, [r2]
- subs r3, 0x1
- cmp r3, 0
- bge _080795F8
-_0807960E:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08079618: .4byte gScanlineEffectRegBuffers
-_0807961C: .4byte gScanlineEffect
- thumb_func_end sub_8079550
-
- thumb_func_start sub_8079620
-sub_8079620: @ 8079620
- push {lr}
- ldr r1, _08079644 @ =gScanlineEffect
- ldrb r0, [r1, 0x15]
- cmp r0, 0
- beq _0807962E
- movs r0, 0x3
- strb r0, [r1, 0x15]
-_0807962E:
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0
- bl SetGpuReg
- pop {r0}
- bx r0
- .align 2, 0
-_08079644: .4byte gScanlineEffect
- thumb_func_end sub_8079620
-
- thumb_func_start sub_8079648
-sub_8079648: @ 8079648
- push {r4,lr}
- ldr r0, _080796BC @ =sub_80792C8
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- beq _0807965C
- bl DestroyTask
-_0807965C:
- bl sub_8071898
- bl ResetPaletteFadeControl
- ldr r0, _080796C0 @ =gUnknown_8EAB6C4
- movs r2, 0xD0
- lsls r2, 1
- movs r1, 0
- bl LoadPalette
- ldr r0, _080796C4 @ =gUnknown_8EAD5E8
- movs r1, 0xD0
- movs r2, 0x20
- bl LoadPalette
- ldr r4, _080796C8 @ =gUnknown_8EAE094
- adds r0, r4, 0
- movs r1, 0xF0
- movs r2, 0x20
- bl LoadPalette
- adds r0, r4, 0
- movs r1, 0xE0
- movs r2, 0x20
- bl LoadPalette
- bl ResetBgPositions
- movs r1, 0xE0
- lsls r1, 8
- movs r0, 0
- bl ClearGpuRegBits
- movs r0, 0x1
- bl ShowBg
- movs r0, 0x2
- bl ShowBg
- movs r0, 0
- bl ShowBg
- movs r0, 0x3
- bl ShowBg
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080796BC: .4byte sub_80792C8
-_080796C0: .4byte gUnknown_8EAB6C4
-_080796C4: .4byte gUnknown_8EAD5E8
-_080796C8: .4byte gUnknown_8EAE094
- thumb_func_end sub_8079648
-
- thumb_func_start sub_80796CC
-sub_80796CC: @ 80796CC
- push {lr}
- bl UpdatePaletteFade
- lsls r0, 24
- cmp r0, 0
- bne _080796DE
- ldr r0, _080796E4 @ =sub_80F55A0
- bl SetMainCallback2
-_080796DE:
- pop {r0}
- bx r0
- .align 2, 0
-_080796E4: .4byte sub_80F55A0
- thumb_func_end sub_80796CC
-
- thumb_func_start sub_80796E8
-sub_80796E8: @ 80796E8
- push {lr}
- bl UpdatePaletteFade
- lsls r0, 24
- cmp r0, 0
- bne _080796FE
- bl m4aMPlayAllStop
- ldr r0, _08079704 @ =mb_berry_fix_serve
- bl SetMainCallback2
-_080796FE:
- pop {r0}
- bx r0
- .align 2, 0
-_08079704: .4byte mb_berry_fix_serve
- thumb_func_end sub_80796E8
-
- thumb_func_start sub_8079708
-sub_8079708: @ 8079708
- push {r4,r5,lr}
- movs r5, 0
- ldr r4, _08079728 @ =gUnknown_83BFB9C
-_0807970E:
- adds r0, r4, 0
- bl LoadCompressedSpriteSheet
- adds r4, 0x8
- adds r5, 0x1
- cmp r5, 0x3
- bls _0807970E
- ldr r0, _0807972C @ =gUnknown_83BFBBC
- bl LoadSpritePalettes
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08079728: .4byte gUnknown_83BFB9C
-_0807972C: .4byte gUnknown_83BFBBC
- thumb_func_end sub_8079708
-
- thumb_func_start sub_8079730
-sub_8079730: @ 8079730
- push {r4,lr}
- adds r4, r0, 0
- adds r2, r4, 0
- adds r2, 0x2E
- ldrh r0, [r4, 0x2E]
- ldrh r1, [r2, 0x2]
- subs r0, r1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 20
- strh r0, [r4, 0x20]
- movs r1, 0x8
- negs r1, r1
- cmp r0, r1
- blt _08079774
- ldrh r0, [r2, 0x6]
- ldrh r1, [r2, 0x4]
- adds r0, r1
- strh r0, [r2, 0x4]
- lsls r0, 16
- asrs r0, 20
- strh r0, [r4, 0x22]
- subs r0, 0x10
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xB8
- bhi _08079774
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _0807977C
-_08079774:
- adds r0, r4, 0
- bl DestroySprite
- b _080797A6
-_0807977C:
- ldrh r1, [r2, 0xE]
- movs r3, 0xE
- ldrsh r0, [r2, r3]
- cmp r0, 0
- beq _080797A6
- subs r0, r1, 0x1
- strh r0, [r2, 0xE]
- lsls r0, 16
- cmp r0, 0
- bne _080797A6
- adds r0, r4, 0
- movs r1, 0
- bl StartSpriteAnim
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
-_080797A6:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8079730
-
thumb_func_start sub_80797AC
sub_80797AC: @ 80797AC
push {r4-r7,lr}
diff --git a/include/berry_fix_program.h b/include/berry_fix_program.h
new file mode 100644
index 000000000..fc0748fd9
--- /dev/null
+++ b/include/berry_fix_program.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_BERRY_FIX_PROGRAM_H
+#define GUARD_BERRY_FIX_PROGRAM_H
+
+void mb_berry_fix_serve(void);
+
+#endif //GUARD_BERRY_FIX_PROGRAM_H
diff --git a/include/clear_save_data_screen.h b/include/clear_save_data_screen.h
new file mode 100644
index 000000000..7edf7d03e
--- /dev/null
+++ b/include/clear_save_data_screen.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_CLEAR_SAVE_DATA_SCREEN_H
+#define GUARD_CLEAR_SAVE_DATA_SCREEN_H
+
+void sub_80F55A0(void);
+
+#endif //GUARD_CLEAR_SAVE_DATA_SCREEN_H
diff --git a/include/graphics.h b/include/graphics.h
index bd25f4d1a..dd91731b6 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -968,7 +968,7 @@ extern const u8 gUnknown_8EAD390[];
extern const u16 gUnknown_8EAD5E8[];
extern const u8 gUnknown_8EAD608[];
extern const u8 gUnknown_8EADEE4[];
-extern const u16 gUnknown_8EAE094[];
+extern u16 gUnknown_8EAE094[]; // If this is const, title_screen.c does not match
extern const u8 gUnknown_8EAE0B4[];
extern const u8 gUnknown_8EAE374[];
extern const u16 gUnknown_8EAE488[];
diff --git a/include/palette.h b/include/palette.h
index feac1f11f..300236d1e 100644
--- a/include/palette.h
+++ b/include/palette.h
@@ -75,6 +75,7 @@ void TintPalette_GrayScale2(u16 *, u16);
void TintPalette_SepiaTone(u16 *, u16);
void sub_80717A8(u32, s8, u8, u8, u16, u8, u8);
bool32 sub_807185C(u8);
+void sub_8071898(void);
extern struct PaletteFadeControl gPaletteFade;
diff --git a/src/title_screen.c b/src/title_screen.c
index 32324ec7a..d4c861841 100644
--- a/src/title_screen.c
+++ b/src/title_screen.c
@@ -16,6 +16,9 @@
#include "new_game.h"
#include "save.h"
#include "main_menu.h"
+#include "clear_save_data_screen.h"
+#include "berry_fix_program.h"
+#include "decompress.h"
#include "constants/songs.h"
#include "constants/species.h"
@@ -626,3 +629,231 @@ void sub_80791C0(s16 * data)
break;
}
}
+
+void sub_80792C8(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ switch (data[0])
+ {
+ case 0:
+ SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
+ SetGpuReg(REG_OFFSET_WININ, WIN_RANGE(0x00, 0x3F));
+ SetGpuReg(REG_OFFSET_WINOUT, WIN_RANGE(0x00, 0x37));
+ SetGpuReg(REG_OFFSET_WIN0V, 0xA0);
+ SetGpuReg(REG_OFFSET_WIN0H, 0x00);
+ BlendPalettes(0x00004000, 0, RGB_BLACK);
+ data[0]++;
+ break;
+ case 1:
+ data[1] += 0x180;
+ data[2] = data[1] >> 4;
+ if (data[2] >= 0xF0)
+ {
+ data[2] = 0xF0;
+ data[0]++;
+ }
+ SetGpuReg(REG_OFFSET_WIN0H, data[2]);
+ break;
+ case 2:
+ data[3]++;
+ if (data[3] >= 10)
+ {
+ data[3] = 0;
+ data[0]++;
+ }
+ break;
+ case 3:
+ SetGpuReg(REG_OFFSET_WINOUT, WIN_RANGE(0, 0x3B));
+ SetGpuReg(REG_OFFSET_WIN0H, 0xF0F0);
+ ChangeBgX(2, -0xF000, 0);
+ BlendPalettes(0x00008000, 0, RGB_BLACK);
+ data[1] = 0xF00;
+ data[0]++;
+ break;
+ case 4:
+ data[1] -= 0x180;
+ data[2] = data[1] >> 4;
+ if (data[2] <= 0)
+ {
+ data[2] = 0;
+ data[0]++;
+ }
+ ChangeBgX(2, -data[2] << 8, 0);
+ SetGpuReg(REG_OFFSET_WIN0H, (data[2] << 8) | 0xF0);
+ break;
+ case 5:
+ ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
+ DestroyTask(taskId);
+ break;
+ }
+}
+
+void sub_807941C(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+ s32 i;
+
+ if (data[15] && gPaletteFade.active)
+ data[14] = 1;
+ if (data[14] && !gPaletteFade.active)
+ DestroyTask(taskId);
+ else
+ {
+ if (!data[1])
+ data[2] = 60;
+ else
+ data[2] = 30;
+ data[0]++;
+ if (data[0] >= data[2])
+ {
+ data[0] = 0;
+ data[1] ^= 1;
+ if (data[1])
+ {
+ for (i = 0; i < 5; i++)
+ {
+ gPlttBufferUnfaded[0xF1 + i] = gUnknown_8EAE094[6];
+ gPlttBufferFaded[0xF1 + i] = gUnknown_8EAE094[6];
+ }
+ }
+ else
+ {
+ for (i = 0; i < 5; i++)
+ {
+ gPlttBufferUnfaded[0xF1 + i] = gUnknown_8EAE094[1 + i];
+ gPlttBufferFaded[0xF1 + i] = gUnknown_8EAE094[1 + i];
+ }
+ }
+ if (data[14])
+ {
+ BlendPalettes(0x00008000, gPaletteFade.y, gPaletteFade.blendColor);
+ }
+ }
+ }
+}
+
+void sub_8079528(void)
+{
+ u8 taskId = FindTaskIdByFunc(sub_807941C);
+ gTasks[taskId].data[15] = TRUE;
+}
+
+void sub_8079550(s16 a0)
+{
+ s32 i;
+
+ if (a0 >= 0)
+ {
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][a0] = 16;
+ }
+
+ for (i = 0; i < 16; i++)
+ {
+ if (a0 + i >= 0)
+ {
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][a0 + i] = 15 - i;
+ }
+ if (a0 - i >= 0)
+ {
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][a0 - i] = 15 - i;
+ }
+ }
+ for (i = a0 + 16; i < 160; i++)
+ {
+ if (i >= 0)
+ {
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = 0;
+ }
+ }
+ for (i = a0 - 16; i >= 0; i--)
+ {
+ if (i >= 0)
+ {
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = 0;
+ }
+ }
+}
+
+void sub_8079620(void)
+{
+ if (gScanlineEffect.state)
+ gScanlineEffect.state = 3;
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDY, 0);
+}
+
+void sub_8079648(void)
+{
+ u8 taskId;
+
+ taskId = FindTaskIdByFunc(sub_80792C8);
+ if (taskId != 0xFF)
+ DestroyTask(taskId);
+
+ sub_8071898();
+ ResetPaletteFadeControl();
+ LoadPalette(gUnknown_8EAB6C4, 0x00, 0x1A0);
+ LoadPalette(gUnknown_8EAD5E8, 0xD0, 0x20);
+ LoadPalette(gUnknown_8EAE094, 0xF0, 0x20);
+ LoadPalette(gUnknown_8EAE094, 0xE0, 0x20);
+ ResetBgPositions();
+ ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON | DISPCNT_WIN1_ON | DISPCNT_OBJWIN_ON);
+ ShowBg(1);
+ ShowBg(2);
+ ShowBg(0);
+ ShowBg(3);
+}
+
+void sub_80796CC(void)
+{
+ if (!UpdatePaletteFade())
+ SetMainCallback2(sub_80F55A0);
+}
+
+void sub_80796E8(void)
+{
+ if (!UpdatePaletteFade())
+ {
+ m4aMPlayAllStop();
+ SetMainCallback2(mb_berry_fix_serve);
+ }
+}
+
+void sub_8079708(void)
+{
+ s32 i;
+
+ for (i = 0; i < NELEMS(gUnknown_83BFB9C); i++)
+ LoadCompressedSpriteSheet(&gUnknown_83BFB9C[i]);
+ LoadSpritePalettes(gUnknown_83BFBBC);
+}
+
+void sub_8079730(struct Sprite * sprite)
+{
+ s16 * data = sprite->data;
+ sprite->data[0] -= data[1];
+ sprite->pos1.x = sprite->data[0] >> 4;
+ if (sprite->pos1.x < -8)
+ {
+ DestroySprite(sprite);
+ return;
+ }
+ data[2] += data[3];
+ sprite->pos1.y = data[2] >> 4;
+ if (sprite->pos1.y < 0x10 || sprite->pos1.y > 0xc8)
+ {
+ DestroySprite(sprite);
+ return;
+ }
+ if (sprite->animEnded)
+ {
+ DestroySprite(sprite);
+ return;
+ }
+ if (data[7] != 0 && --data[7] == 0)
+ {
+ StartSpriteAnim(sprite, 0);
+ sprite->invisible = FALSE;
+ }
+}