diff options
-rw-r--r-- | asm/title_screen.s | 636 | ||||
-rw-r--r-- | include/berry_fix_program.h | 6 | ||||
-rw-r--r-- | include/clear_save_data_screen.h | 6 | ||||
-rw-r--r-- | include/graphics.h | 2 | ||||
-rw-r--r-- | include/palette.h | 1 | ||||
-rw-r--r-- | src/title_screen.c | 231 |
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; + } +} |