title_screen: data and code thru sub_8078C9C

This commit is contained in:
PikalaxALT 2019-07-30 22:07:15 -04:00
parent 23d917f7c8
commit ea8f529f2d
13 changed files with 268 additions and 477 deletions

View File

@ -5,468 +5,6 @@
.text
thumb_func_start CB2_InitTitleScreen
CB2_InitTitleScreen: @ 8078914
push {r4-r6,lr}
sub sp, 0xC
ldr r0, _08078930 @ =gMain
movs r1, 0x87
lsls r1, 3
adds r0, r1
ldrb r6, [r0]
cmp r6, 0x1
beq _080789F0
cmp r6, 0x1
bgt _08078934
cmp r6, 0
beq _08078946
b _0807893A
.align 2, 0
_08078930: .4byte gMain
_08078934:
cmp r6, 0x2
bne _0807893A
b _08078AC0
_0807893A:
ldr r0, _080789D0 @ =gMain
movs r1, 0x87
lsls r1, 3
adds r0, r1
movs r1, 0
strb r1, [r0]
_08078946:
movs r0, 0
bl SetVBlankCallback
bl StartTimer1
ldr r0, _080789D4 @ =gHeap
movs r1, 0xE0
lsls r1, 9
bl InitHeap
bl ResetTasks
bl ResetSpriteData
bl FreeAllSpritePalettes
bl ResetPaletteFade
bl sub_8078B34
add r1, sp, 0x4
movs r0, 0
strh r0, [r1]
ldr r1, _080789D8 @ =0x040000d4
add r0, sp, 0x4
str r0, [r1]
movs r0, 0xC0
lsls r0, 19
str r0, [r1, 0x4]
ldr r0, _080789DC @ =0x8100c000
str r0, [r1, 0x8]
ldr r0, [r1, 0x8]
movs r2, 0
str r2, [sp, 0x8]
add r0, sp, 0x8
str r0, [r1]
movs r0, 0xE0
lsls r0, 19
str r0, [r1, 0x4]
ldr r0, _080789E0 @ =0x85000100
str r0, [r1, 0x8]
ldr r0, [r1, 0x8]
add r0, sp, 0x4
strh r2, [r0]
str r0, [r1]
movs r0, 0xA0
lsls r0, 19
str r0, [r1, 0x4]
ldr r0, _080789E4 @ =0x81000200
str r0, [r1, 0x8]
ldr r0, [r1, 0x8]
movs r0, 0
bl ResetBgsAndClearDma3BusyFlags
ldr r1, _080789E8 @ =gUnknown_83BFB74
movs r0, 0
movs r2, 0x4
bl InitBgsFromTemplates
movs r1, 0x82
lsls r1, 5
movs r0, 0
bl SetGpuRegBits
ldr r1, _080789EC @ =gUnknown_2037F30
movs r0, 0xFF
strb r0, [r1]
b _08078B18
.align 2, 0
_080789D0: .4byte gMain
_080789D4: .4byte gHeap
_080789D8: .4byte 0x040000d4
_080789DC: .4byte 0x8100c000
_080789E0: .4byte 0x85000100
_080789E4: .4byte 0x81000200
_080789E8: .4byte gUnknown_83BFB74
_080789EC: .4byte gUnknown_2037F30
_080789F0:
ldr r0, _08078A94 @ =gUnknown_8EAB6C4
movs r2, 0xD0
lsls r2, 1
movs r1, 0
bl LoadPalette
ldr r1, _08078A98 @ =gUnknown_8EAB8C4
movs r4, 0
str r4, [sp]
movs r0, 0
movs r2, 0
movs r3, 0
bl DecompressAndCopyTileDataToVram
ldr r1, _08078A9C @ =gUnknown_8EAD390
str r6, [sp]
movs r0, 0
movs r2, 0
movs r3, 0
bl DecompressAndCopyTileDataToVram
ldr r0, _08078AA0 @ =gUnknown_8EAD5E8
movs r1, 0xD0
movs r2, 0x20
bl LoadPalette
ldr r1, _08078AA4 @ =gUnknown_8EAD608
str r4, [sp]
movs r0, 0x1
movs r2, 0
movs r3, 0
bl DecompressAndCopyTileDataToVram
ldr r1, _08078AA8 @ =gUnknown_8EADEE4
str r6, [sp]
movs r0, 0x1
movs r2, 0
movs r3, 0
bl DecompressAndCopyTileDataToVram
ldr r5, _08078AAC @ =gUnknown_8EAE094
adds r0, r5, 0
movs r1, 0xF0
movs r2, 0x20
bl LoadPalette
ldr r1, _08078AB0 @ =gUnknown_8EAE0B4
str r4, [sp]
movs r0, 0x2
movs r2, 0
movs r3, 0
bl DecompressAndCopyTileDataToVram
ldr r1, _08078AB4 @ =gUnknown_8EAE374
str r6, [sp]
movs r0, 0x2
movs r2, 0
movs r3, 0
bl DecompressAndCopyTileDataToVram
adds r0, r5, 0
movs r1, 0xE0
movs r2, 0x20
bl LoadPalette
ldr r1, _08078AB8 @ =gUnknown_83BF58C
str r4, [sp]
movs r0, 0x3
movs r2, 0
movs r3, 0
bl DecompressAndCopyTileDataToVram
ldr r1, _08078ABC @ =gUnknown_83BF5A8
str r6, [sp]
movs r0, 0x3
movs r2, 0
movs r3, 0
bl DecompressAndCopyTileDataToVram
bl sub_8079708
b _08078B18
.align 2, 0
_08078A94: .4byte gUnknown_8EAB6C4
_08078A98: .4byte gUnknown_8EAB8C4
_08078A9C: .4byte gUnknown_8EAD390
_08078AA0: .4byte gUnknown_8EAD5E8
_08078AA4: .4byte gUnknown_8EAD608
_08078AA8: .4byte gUnknown_8EADEE4
_08078AAC: .4byte gUnknown_8EAE094
_08078AB0: .4byte gUnknown_8EAE0B4
_08078AB4: .4byte gUnknown_8EAE374
_08078AB8: .4byte gUnknown_83BF58C
_08078ABC: .4byte gUnknown_83BF5A8
_08078AC0:
bl FreeTempTileDataBuffersIfPossible
lsls r0, 24
cmp r0, 0
bne _08078B26
ldr r0, _08078B00 @ =0x0000ffff
movs r1, 0x10
movs r2, 0
bl BlendPalettes
ldr r0, _08078B04 @ =sub_8078C24
movs r1, 0x4
bl CreateTask
ldr r0, _08078B08 @ =sub_8078BEC
movs r1, 0x2
bl CreateTask
ldr r1, _08078B0C @ =gUnknown_2037F30
strb r0, [r1]
ldr r0, _08078B10 @ =sub_8078BB4
bl SetVBlankCallback
ldr r0, _08078B14 @ =sub_8078B9C
bl SetMainCallback2
movs r0, 0x8B
lsls r0, 1
bl m4aSongNumStart
b _08078B26
.align 2, 0
_08078B00: .4byte 0x0000ffff
_08078B04: .4byte sub_8078C24
_08078B08: .4byte sub_8078BEC
_08078B0C: .4byte gUnknown_2037F30
_08078B10: .4byte sub_8078BB4
_08078B14: .4byte sub_8078B9C
_08078B18:
ldr r1, _08078B30 @ =gMain
movs r0, 0x87
lsls r0, 3
adds r1, r0
ldrb r0, [r1]
adds r0, 0x1
strb r0, [r1]
_08078B26:
add sp, 0xC
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_08078B30: .4byte gMain
thumb_func_end CB2_InitTitleScreen
thumb_func_start sub_8078B34
sub_8078B34: @ 8078B34
push {lr}
movs r0, 0
movs r1, 0
bl SetGpuReg
movs r0, 0x50
movs r1, 0
bl SetGpuReg
movs r0, 0x52
movs r1, 0
bl SetGpuReg
movs r0, 0x54
movs r1, 0
bl SetGpuReg
movs r0, 0x10
movs r1, 0
bl SetGpuReg
movs r0, 0x12
movs r1, 0
bl SetGpuReg
movs r0, 0x14
movs r1, 0
bl SetGpuReg
movs r0, 0x16
movs r1, 0
bl SetGpuReg
movs r0, 0x18
movs r1, 0
bl SetGpuReg
movs r0, 0x1A
movs r1, 0
bl SetGpuReg
movs r0, 0x1C
movs r1, 0
bl SetGpuReg
movs r0, 0x1E
movs r1, 0
bl SetGpuReg
pop {r0}
bx r0
thumb_func_end sub_8078B34
thumb_func_start sub_8078B9C
sub_8078B9C: @ 8078B9C
push {lr}
bl RunTasks
bl AnimateSprites
bl BuildOamBuffer
bl UpdatePaletteFade
pop {r0}
bx r0
thumb_func_end sub_8078B9C
thumb_func_start sub_8078BB4
sub_8078BB4: @ 8078BB4
push {lr}
bl LoadOam
bl ProcessSpriteCopyRequests
bl TransferPlttBuffer
bl ScanlineEffect_InitHBlankDmaTransfer
ldr r1, _08078BE4 @ =gUnknown_2037F30
ldrb r0, [r1]
cmp r0, 0xFF
beq _08078BE0
ldr r2, _08078BE8 @ =gTasks
adds r1, r0, 0
lsls r0, r1, 2
adds r0, r1
lsls r0, 3
adds r0, r2
ldrh r1, [r0, 0x8]
adds r1, 0x1
strh r1, [r0, 0x8]
_08078BE0:
pop {r0}
bx r0
.align 2, 0
_08078BE4: .4byte gUnknown_2037F30
_08078BE8: .4byte gTasks
thumb_func_end sub_8078BB4
thumb_func_start sub_8078BEC
sub_8078BEC: @ 8078BEC
push {lr}
lsls r0, 24
lsrs r2, r0, 24
lsls r0, r2, 2
adds r0, r2
lsls r0, 3
ldr r1, _08078C18 @ =gTasks+0x8
adds r0, r1
movs r3, 0
ldrsh r1, [r0, r3]
ldr r0, _08078C1C @ =0x00000a8b
cmp r1, r0
ble _08078C12
ldr r1, _08078C20 @ =gUnknown_2037F30
movs r0, 0xFF
strb r0, [r1]
adds r0, r2, 0
bl DestroyTask
_08078C12:
pop {r0}
bx r0
.align 2, 0
_08078C18: .4byte gTasks+0x8
_08078C1C: .4byte 0x00000a8b
_08078C20: .4byte gUnknown_2037F30
thumb_func_end sub_8078BEC
thumb_func_start sub_8078C24
sub_8078C24: @ 8078C24
push {r4,lr}
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
ldr r0, _08078C6C @ =gTasks+0x8
adds r4, r1, r0
ldr r0, _08078C70 @ =gMain
ldrh r1, [r0, 0x2E]
movs r0, 0xB
ands r0, r1
cmp r0, 0
beq _08078C74
movs r1, 0
ldrsh r0, [r4, r1]
cmp r0, 0x3
beq _08078C74
cmp r0, 0x4
beq _08078C74
cmp r0, 0x5
beq _08078C74
bl sub_8079620
bl sub_8079648
movs r2, 0xA
ldrsh r0, [r4, r2]
bl sub_8079A10
adds r0, r4, 0
movs r1, 0x3
bl sub_8078C90
b _08078C86
.align 2, 0
_08078C6C: .4byte gTasks+0x8
_08078C70: .4byte gMain
_08078C74:
ldr r0, _08078C8C @ =gUnknown_83BFB84
movs r2, 0
ldrsh r1, [r4, r2]
lsls r1, 2
adds r1, r0
ldr r1, [r1]
adds r0, r4, 0
bl _call_via_r1
_08078C86:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08078C8C: .4byte gUnknown_83BFB84
thumb_func_end sub_8078C24
thumb_func_start sub_8078C90
sub_8078C90: @ 8078C90
lsls r1, 24
lsrs r1, 24
movs r2, 0
strh r2, [r0, 0x2]
strh r1, [r0]
bx lr
thumb_func_end sub_8078C90
thumb_func_start sub_8078C9C
sub_8078C9C: @ 8078C9C
push {r4-r6,lr}
mov r6, r8
push {r6}
sub sp, 0x10
mov r8, r0
movs r0, 0
bl HideBg
movs r0, 0x1
bl ShowBg
movs r0, 0x2
bl ShowBg
movs r0, 0x3
bl ShowBg
ldr r0, _08078D14 @ =0x04000054
str r0, [sp]
ldr r0, _08078D18 @ =0xa2600001
str r0, [sp, 0x4]
mov r1, sp
movs r5, 0
movs r0, 0x1
strb r0, [r1, 0x8]
mov r0, sp
strb r5, [r0, 0x9]
add r0, sp, 0xC
strh r5, [r0]
ldr r4, _08078D1C @ =gScanlineEffectRegBuffers
ldr r6, _08078D20 @ =0x010000a0
adds r1, r4, 0
adds r2, r6, 0
bl CpuSet
mov r0, sp
adds r0, 0xE
strh r5, [r0]
movs r1, 0xF0
lsls r1, 3
adds r4, r1
adds r1, r4, 0
adds r2, r6, 0
bl CpuSet
ldr r0, [sp]
ldr r1, [sp, 0x4]
ldr r2, [sp, 0x8]
bl ScanlineEffect_SetParams
mov r0, r8
movs r1, 0x1
bl sub_8078C90
add sp, 0x10
pop {r3}
mov r8, r3
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_08078D14: .4byte 0x04000054
_08078D18: .4byte 0xa2600001
_08078D1C: .4byte gScanlineEffectRegBuffers
_08078D20: .4byte 0x010000a0
thumb_func_end sub_8078C9C
thumb_func_start sub_8078D24
sub_8078D24: @ 8078D24
push {r4,lr}

View File

@ -1,6 +1,9 @@
.section .rodata
.align 2
gUnknown_83BFBE4:: @ 83BFBE4
.incbin "baserom.gba", 0x3BFBE4, 0x2FD8
gUnknown_83C2BBC:: @ 83C2BBC
.incbin "baserom.gba", 0x3C2BBC, 0x4

View File

@ -16379,11 +16379,12 @@ gUnknown_8EAE0B4:: @ 8EAE0B4
gUnknown_8EAE374:: @ 8EAE374
.incbin "baserom.gba", 0xEAE374, 0x114
@ title_screen
gUnknown_8EAE488:: @ 8EAE488
.incbin "baserom.gba", 0xEAE488, 0x20 @UNKNOWN
.incbin "graphics/title_screen/unk_8eae488.gbapal"
gUnknown_8EAE4A8:: @ 8EAE4A8
.incbin "baserom.gba", 0xEAE4A8, 0x80
.incbin "graphics/title_screen/unk_8eae4a8.4bpp.lz"
gUnknown_8EAE528:: @ 8EAE528
.incbin "baserom.gba", 0xEAE528, 0x20 @UNKNOWN

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 B

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 188 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 539 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 150 B

View File

@ -1,34 +1,88 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnknown_83BF58C:: @ 83BF58C
.incbin "baserom.gba", 0x3BF58C, 0x1C
gUnknown_83BF64C:: @ 83BF64C
.incbin "data/graphics/title_screen/unk_83bf64c.4bpp.lz"
gUnknown_83BF5A8:: @ 83BF5A8
.incbin "baserom.gba", 0x3BF5A8, 0x55C
gUnknown_83BF77C::
.incbin "data/graphics/title_screen/unk_83bf77c.gbapal"
gUnknown_83BF79C::
.incbin "data/graphics/title_screen/unk_83bf79c.4bpp.lz"
gUnknown_83BFA14::
.incbin "data/graphics/title_screen/unk_83bfa14.4bpp.lz"
gOamData_83BFAB4::
.4byte 0x40000000, 0x00000c00
gSpriteAnims_83BFABC::
obj_image_anim_frame 0x0, 0x3
obj_image_anim_frame 0x4, 0x6
obj_image_anim_frame 0x8, 0x6
obj_image_anim_frame 0xc, 0x6
obj_image_anim_frame 0x10, 0x6
obj_image_anim_frame 0x14, 0x6
obj_image_anim_frame 0x18, 0x6
obj_image_anim_frame 0x1c, 0x6
obj_image_anim_frame 0x20, 0x6
obj_image_anim_frame 0x24, 0x6
obj_image_anim_end
gSpriteAnims_83BFAE8::
obj_image_anim_frame 0x18, 0x6
obj_image_anim_frame 0x1c, 0x6
obj_image_anim_frame 0x20, 0x6
obj_image_anim_frame 0x24, 0x6
obj_image_anim_end
gSpriteAnimTable_83BFAFC::
.4byte gSpriteAnims_83BFABC
.4byte gSpriteAnims_83BFAE8
gUnknown_83BFB04:: @ 83BFB04
.incbin "baserom.gba", 0x3BFB04, 0x18
spr_template 0, 0, gOamData_83BFAB4, gSpriteAnimTable_83BFAFC, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
gUnknown_83BFB1C:: @ 83BFB1C
.incbin "baserom.gba", 0x3BFB1C, 0x20
spr_template 1, 0, gOamData_83BFAB4, gSpriteAnimTable_83BFAFC, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
gOamData_83BFB34::
.4byte 0xc0008000, 0x00000000
gUnknown_83BFB3C:: @ 83BFB3C
.incbin "baserom.gba", 0x3BFB3C, 0x20
spr_template 2, 2, gOamData_83BFB34, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
gOamData_83BFB54::
.4byte 0xc0000800, 0x00000000
gUnknown_83BFB5C:: @ 83BFB5C
.incbin "baserom.gba", 0x3BFB5C, 0x18
spr_template 3, 2, gOamData_83BFB54, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
gUnknown_83BFB74:: @ 83BFB74
.incbin "baserom.gba", 0x3BFB74, 0x10
.4byte 0x000009f0
.4byte 0x000011e5
.4byte 0x000021da
.4byte 0x000031cf
gUnknown_83BFB84:: @ 83BFB84
.incbin "baserom.gba", 0x3BFB84, 0x18
.4byte sub_8078C9C
.4byte sub_8078D24
.4byte sub_8078DA4
.4byte sub_8078FC4
.4byte sub_80790CC
.4byte sub_80791C0
gUnknown_83BFB9C:: @ 83BFB9C
.incbin "baserom.gba", 0x3BFB9C, 0x20
obj_tiles gUnknown_83BF79C, 0x500, 0
obj_tiles gUnknown_83BFA14, 0x500, 1
obj_tiles gUnknown_8EAE4A8, 0x400, 2
obj_tiles gUnknown_83BF64C, 0x800, 3
gUnknown_83BFBBC:: @ 83BFBBC
.incbin "baserom.gba", 0x3BFBBC, 0x18
obj_pal gUnknown_83BF77C, 0
obj_pal gUnknown_8EAE488, 2
null_obj_pal
gUnknown_83BFBD4:: @ 83BFBD4
.incbin "baserom.gba", 0x3BFBD4, 0x2FE8
.incbin "baserom.gba", 0x3BFBD4, 0xF

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 B

View File

@ -65,6 +65,7 @@ void ClearPokemonCrySongs(void);
void RestoreSerialTimer3IntrHandlers(void);
void SetVBlankCounter1Ptr(u32 *ptr);
void DisableVBlankCounter1(void);
void StartTimer1(void);
extern const char RomHeaderGameCode[4];
extern const char RomHeaderSoftwareVersion;

View File

@ -115,6 +115,7 @@ SECTIONS {
src/task.o(.text);
asm/reshow_battle_screen.o(.text);
asm/battle_anim_status_effects.o(.text);
src/title_screen.o(.text);
asm/title_screen.o(.text);
src/reset_save_heap.o(.text);
asm/field_weather.o(.text);
@ -405,6 +406,7 @@ SECTIONS {
data/battle_anim.o(.rodata);
data/map_events.o(.rodata);
data/battle_anim_status_effects.o(.rodata);
src/title_screen.o(.rodata);
data/title_screen.o(.rodata);
data/field_weather.o(.rodata);
data/data_835B488.o(.rodata);

192
src/title_screen.c Normal file
View File

@ -0,0 +1,192 @@
#include "global.h"
#include "malloc.h"
#include "palette.h"
#include "gpu_regs.h"
#include "bg.h"
#include "task.h"
#include "main.h"
#include "new_menu_helpers.h"
#include "m4a.h"
#include "scanline_effect.h"
#include "constants/songs.h"
EWRAM_DATA u8 gUnknown_2037F30 = 0;
void sub_8078B34(void);
void sub_8078B9C(void);
void sub_8078BB4(void);
void sub_8078BEC(u8 taskId);
void sub_8078C24(u8 taskId);
void sub_8078C90(s16 * data, u8 a1);
void sub_8078C9C(s16 * data);
void sub_8078D24(s16 * data);
void sub_8078DA4(s16 * data);
void sub_8078FC4(s16 * data);
void sub_80790CC(s16 * data);
void sub_80791C0(s16 * data);
void sub_8079708(void);
void sub_8079620(void);
void sub_8079648(void);
void sub_8079A10(s16 a0);
const u8 gUnknown_83BF58C[] = INCBIN_U8("data/graphics/title_screen/unk_83BF58C.4bpp.lz");
const u8 gUnknown_83BF5A8[] = INCBIN_U8("data/graphics/title_screen/unk_83BF5A8.bin.lz");
extern const struct BgTemplate gUnknown_83BFB74[4];
extern const void (*const gUnknown_83BFB84[])(s16 * data);
/*graphics.h*/
extern const u16 gUnknown_8EAB6C4[];
extern const u8 gUnknown_8EAB8C4[];
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 const u8 gUnknown_8EAE0B4[];
extern const u8 gUnknown_8EAE374[];
void CB2_InitTitleScreen(void)
{
switch (gMain.state)
{
default:
gMain.state = 0;
// fallthrough
case 0:
SetVBlankCallback(NULL);
StartTimer1();
InitHeap(gHeap, HEAP_SIZE);
ResetTasks();
ResetSpriteData();
FreeAllSpritePalettes();
ResetPaletteFade();
sub_8078B34();
DmaFill16(3, 0, (void *)VRAM, VRAM_SIZE);
DmaFill32(3, 0, (void *)OAM, OAM_SIZE);
DmaFill16(3, 0, (void *)PLTT, PLTT_SIZE);
ResetBgsAndClearDma3BusyFlags(FALSE);
InitBgsFromTemplates(0, gUnknown_83BFB74, NELEMS(gUnknown_83BFB74));
SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON);
gUnknown_2037F30 = 0xFF;
break;
case 1:
LoadPalette(gUnknown_8EAB6C4, 0, 0x1A0);
DecompressAndCopyTileDataToVram(0, gUnknown_8EAB8C4, 0, 0, 0);
DecompressAndCopyTileDataToVram(0, gUnknown_8EAD390, 0, 0, 1);
LoadPalette(gUnknown_8EAD5E8, 0xD0, 0x20);
DecompressAndCopyTileDataToVram(1, gUnknown_8EAD608, 0, 0, 0);
DecompressAndCopyTileDataToVram(1, gUnknown_8EADEE4, 0, 0, 1);
LoadPalette(gUnknown_8EAE094, 0xF0, 0x20);
DecompressAndCopyTileDataToVram(2, gUnknown_8EAE0B4, 0, 0, 0);
DecompressAndCopyTileDataToVram(2, gUnknown_8EAE374, 0, 0, 1);
LoadPalette(gUnknown_8EAE094, 0xE0, 0x20);
DecompressAndCopyTileDataToVram(3, gUnknown_83BF58C, 0, 0, 0);
DecompressAndCopyTileDataToVram(3, gUnknown_83BF5A8, 0, 0, 1);
sub_8079708();
break;
case 2:
if (!FreeTempTileDataBuffersIfPossible())
{
BlendPalettes(0x0000FFFF, 0x10, RGB_BLACK);
CreateTask(sub_8078C24, 4);
gUnknown_2037F30 = CreateTask(sub_8078BEC, 2);
SetVBlankCallback(sub_8078BB4);
SetMainCallback2(sub_8078B9C);
m4aSongNumStart(BGM_FRLG_TITLE);
}
return;
}
gMain.state++;
}
void sub_8078B34(void)
{
SetGpuReg(REG_OFFSET_DISPCNT, 0);
SetGpuReg(REG_OFFSET_BLDCNT, 0);
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
SetGpuReg(REG_OFFSET_BLDY, 0);
SetGpuReg(REG_OFFSET_BG0HOFS, 0);
SetGpuReg(REG_OFFSET_BG0VOFS, 0);
SetGpuReg(REG_OFFSET_BG1HOFS, 0);
SetGpuReg(REG_OFFSET_BG1VOFS, 0);
SetGpuReg(REG_OFFSET_BG2HOFS, 0);
SetGpuReg(REG_OFFSET_BG2VOFS, 0);
SetGpuReg(REG_OFFSET_BG3HOFS, 0);
SetGpuReg(REG_OFFSET_BG3VOFS, 0);
}
void sub_8078B9C(void)
{
RunTasks();
AnimateSprites();
BuildOamBuffer();
UpdatePaletteFade();
}
void sub_8078BB4(void)
{
LoadOam();
ProcessSpriteCopyRequests();
TransferPlttBuffer();
ScanlineEffect_InitHBlankDmaTransfer();
if (gUnknown_2037F30 != 0xFF)
gTasks[gUnknown_2037F30].data[0]++;
}
void sub_8078BEC(u8 taskId)
{
s16 * data = gTasks[taskId].data;
if (data[0] >= 2700)
{
gUnknown_2037F30 = 0xFF;
DestroyTask(taskId);
}
}
void sub_8078C24(u8 taskId)
{
s16 * data = gTasks[taskId].data;
if (JOY_NEW(A_BUTTON | B_BUTTON | START_BUTTON)
&& data[0] != 3 && data[0] != 4 && data[0] != 5)
{
sub_8079620();
sub_8079648();
sub_8079A10(data[5]);
sub_8078C90(data, 3);
}
else
{
gUnknown_83BFB84[data[0]](data);
}
}
void sub_8078C90(s16 * data, u8 a1)
{
data[1] = 0;
data[0] = a1;
}
void sub_8078C9C(s16 * data)
{
struct ScanlineEffectParams params;
HideBg(0);
ShowBg(1);
ShowBg(2);
ShowBg(3);
params.dmaDest = (volatile void *)REG_ADDR_BLDY;
params.dmaControl = SCANLINE_EFFECT_DMACNT_16BIT;
params.initState = 1;
params.unused9 = 0;
CpuFill16(0, gScanlineEffectRegBuffers[0], 0x140);
CpuFill16(0, gScanlineEffectRegBuffers[1], 0x140);
ScanlineEffect_SetParams(params);
sub_8078C90(data, 1);
}