From ea8f529f2d5bb520b83d5b7721dc47ba1b489d45 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 30 Jul 2019 22:07:15 -0400 Subject: [PATCH] title_screen: data and code thru sub_8078C9C --- asm/title_screen.s | 462 --------------------- data/field_weather.s | 3 + data/graphics.s | 5 +- data/graphics/title_screen/unk_83BF58C.png | Bin 0 -> 78 bytes data/graphics/title_screen/unk_83BF5A8.bin | Bin 0 -> 1280 bytes data/graphics/title_screen/unk_83bf64c.png | Bin 0 -> 188 bytes data/graphics/title_screen/unk_83bf79c.png | Bin 0 -> 539 bytes data/graphics/title_screen/unk_83bfa14.png | Bin 0 -> 150 bytes data/title_screen.s | 80 +++- graphics/title_screen/unk_8eae4a8.png | Bin 0 -> 148 bytes include/main.h | 1 + ld_script.txt | 2 + src/title_screen.c | 192 +++++++++ 13 files changed, 268 insertions(+), 477 deletions(-) create mode 100644 data/graphics/title_screen/unk_83BF58C.png create mode 100644 data/graphics/title_screen/unk_83BF5A8.bin create mode 100644 data/graphics/title_screen/unk_83bf64c.png create mode 100644 data/graphics/title_screen/unk_83bf79c.png create mode 100644 data/graphics/title_screen/unk_83bfa14.png create mode 100644 graphics/title_screen/unk_8eae4a8.png create mode 100644 src/title_screen.c diff --git a/asm/title_screen.s b/asm/title_screen.s index e62cc9a9f..293a289ce 100644 --- a/asm/title_screen.s +++ b/asm/title_screen.s @@ -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} diff --git a/data/field_weather.s b/data/field_weather.s index a25e44344..517480d9a 100644 --- a/data/field_weather.s +++ b/data/field_weather.s @@ -1,6 +1,9 @@ .section .rodata .align 2 +gUnknown_83BFBE4:: @ 83BFBE4 + .incbin "baserom.gba", 0x3BFBE4, 0x2FD8 + gUnknown_83C2BBC:: @ 83C2BBC .incbin "baserom.gba", 0x3C2BBC, 0x4 diff --git a/data/graphics.s b/data/graphics.s index 83d14001d..f62234529 100644 --- a/data/graphics.s +++ b/data/graphics.s @@ -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 diff --git a/data/graphics/title_screen/unk_83BF58C.png b/data/graphics/title_screen/unk_83BF58C.png new file mode 100644 index 0000000000000000000000000000000000000000..895457c3cbf45e8ae4075dfbbf1cb77ecc83f9e8 GIT binary patch literal 78 zcmeAS@N?(olHy`uVBq!ia0vp^96+qV0wfsDXLs`gDN#=s#}JO0$q5QVXIPj{af&M_ abTTlgpV5(2Z2kyR$KdJe=d#Wzp$PyKMi1=( literal 0 HcmV?d00001 diff --git a/data/graphics/title_screen/unk_83BF5A8.bin b/data/graphics/title_screen/unk_83BF5A8.bin new file mode 100644 index 0000000000000000000000000000000000000000..375fbeb7a5b236d5bed83205c85b26f85c675b08 GIT binary patch literal 1280 gcmZR4z&NBK(*w#N^Mg@18Uh0s0z*6Z4Sm-G008 zDd0c@vp@*LWbp+vnDkUfrrFc5`D7#!smmbn1J93Wau?*gc4LY*${mf0?4 za@)1XGY$}>NO?l?r}=#h0D!0fC2FlQ6+s8cv{%T4S92hQ5)dhlECBSPt*mi!rd1u6 zX(b{k*h(0FH6}CT`&HTni^*#UHM%ymv@A;;kkzIV2*wL*Dvvn1$}0SO4*=D^9kBG~ zaRa~)oh98TOWPL?ONP3R;0+;^-Ugno6cMx#!r+}0RGQ$F;h7+hpdf!UHVkCU+DL8F zSQi4VG0iDJ_+`t`ECE^*i+pk0Vol?9iqP5!oy|{p12^OjcR7eq;I~rY=p|!CZ@XA) z$>HFk3(&8?VGUImofr1^gG2C<0aJYky>l@WmlcI07h5ySkQ>*=0!#$wiEcTL1m_t+ za!L+!1UO3`?0EDu0z}1(_Wz!A`(&VrF9Pb2=KZYA+Znyge9t5cdp4@f(5B^fg*z@@r(z54q d+y2tNp?__&Y+JPpAVB~C002ovPDHLkV1gBA=BNMw literal 0 HcmV?d00001 diff --git a/data/graphics/title_screen/unk_83bfa14.png b/data/graphics/title_screen/unk_83bfa14.png new file mode 100644 index 0000000000000000000000000000000000000000..f4f030a5b39ae3f023f4a511f3c8c383a46868e5 GIT binary patch literal 150 zcmeAS@N?(olHy`uVBq!ia0vp^0zkZgg&9bG7yqaZqznRlLR^E+ZUHj?|KI!nTlfE~ zj{ny%99?2qyrny7@0_TkOMp_y0H~Pt$<*IKA;yv*zhDN3XE)M-91%|!#}JF&9GB9Jl&@Ck7ZI=f}>(X&gItf_8p zzIyfE|8HLZuPQ8QmiV?rqB%++D=Es+QuA4mz*$X(ZVrxb-@Z)= 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); +}