Redo partial decomp of intro (force push)
This commit is contained in:
-702
@@ -5,708 +5,6 @@
|
|||||||
|
|
||||||
.text
|
.text
|
||||||
|
|
||||||
thumb_func_start sub_80EC5A4
|
|
||||||
sub_80EC5A4: @ 80EC5A4
|
|
||||||
push {lr}
|
|
||||||
bl LoadOam
|
|
||||||
bl ProcessSpriteCopyRequests
|
|
||||||
bl TransferPlttBuffer
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
thumb_func_end sub_80EC5A4
|
|
||||||
|
|
||||||
thumb_func_start sub_80EC5B8
|
|
||||||
sub_80EC5B8: @ 80EC5B8
|
|
||||||
push {lr}
|
|
||||||
bl UpdatePaletteFade
|
|
||||||
lsls r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
bne _080EC5CA
|
|
||||||
ldr r0, _080EC5D0 @ =sub_80EC870
|
|
||||||
bl SetMainCallback2
|
|
||||||
_080EC5CA:
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_080EC5D0: .4byte sub_80EC870
|
|
||||||
thumb_func_end sub_80EC5B8
|
|
||||||
|
|
||||||
thumb_func_start load_copyright_graphics
|
|
||||||
load_copyright_graphics: @ 80EC5D4
|
|
||||||
push {r4-r6,lr}
|
|
||||||
adds r3, r0, 0
|
|
||||||
adds r4, r1, 0
|
|
||||||
adds r5, r2, 0
|
|
||||||
lsls r3, 16
|
|
||||||
lsrs r3, 16
|
|
||||||
lsls r4, 16
|
|
||||||
lsrs r4, 16
|
|
||||||
lsls r5, 16
|
|
||||||
lsrs r5, 16
|
|
||||||
ldr r0, _080EC610 @ =gUnknown_8402280
|
|
||||||
movs r6, 0xC0
|
|
||||||
lsls r6, 19
|
|
||||||
adds r3, r6
|
|
||||||
adds r1, r3, 0
|
|
||||||
bl LZ77UnCompVram
|
|
||||||
ldr r0, _080EC614 @ =gUnknown_84024E4
|
|
||||||
adds r4, r6
|
|
||||||
adds r1, r4, 0
|
|
||||||
bl LZ77UnCompVram
|
|
||||||
ldr r0, _080EC618 @ =gUnknown_8402260
|
|
||||||
adds r1, r5, 0
|
|
||||||
movs r2, 0x20
|
|
||||||
bl LoadPalette
|
|
||||||
pop {r4-r6}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_080EC610: .4byte gUnknown_8402280
|
|
||||||
_080EC614: .4byte gUnknown_84024E4
|
|
||||||
_080EC618: .4byte gUnknown_8402260
|
|
||||||
thumb_func_end load_copyright_graphics
|
|
||||||
|
|
||||||
thumb_func_start SerialCb_CopyrightScreen
|
|
||||||
SerialCb_CopyrightScreen: @ 80EC61C
|
|
||||||
push {lr}
|
|
||||||
ldr r0, _080EC628 @ =gUnknown_203AAD4
|
|
||||||
bl GameCubeMultiBoot_HandleSerialInterrupt
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_080EC628: .4byte gUnknown_203AAD4
|
|
||||||
thumb_func_end SerialCb_CopyrightScreen
|
|
||||||
|
|
||||||
thumb_func_start sub_80EC62C
|
|
||||||
sub_80EC62C: @ 80EC62C
|
|
||||||
push {r4-r6,lr}
|
|
||||||
sub sp, 0xC
|
|
||||||
ldr r0, _080EC64C @ =gMain
|
|
||||||
movs r1, 0x87
|
|
||||||
lsls r1, 3
|
|
||||||
adds r5, r0, r1
|
|
||||||
ldrb r4, [r5]
|
|
||||||
cmp r4, 0x8C
|
|
||||||
bne _080EC640
|
|
||||||
b _080EC778
|
|
||||||
_080EC640:
|
|
||||||
cmp r4, 0x8C
|
|
||||||
bgt _080EC650
|
|
||||||
cmp r4, 0
|
|
||||||
beq _080EC65E
|
|
||||||
b _080EC732
|
|
||||||
.align 2, 0
|
|
||||||
_080EC64C: .4byte gMain
|
|
||||||
_080EC650:
|
|
||||||
cmp r4, 0x8D
|
|
||||||
bne _080EC656
|
|
||||||
b _080EC7A4
|
|
||||||
_080EC656:
|
|
||||||
cmp r4, 0x8E
|
|
||||||
bne _080EC65C
|
|
||||||
b _080EC808
|
|
||||||
_080EC65C:
|
|
||||||
b _080EC732
|
|
||||||
_080EC65E:
|
|
||||||
movs r0, 0
|
|
||||||
bl SetVBlankCallback
|
|
||||||
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 r1, 0xA0
|
|
||||||
lsls r1, 19
|
|
||||||
ldr r2, _080EC74C @ =0x00007fff
|
|
||||||
adds r0, r2, 0
|
|
||||||
strh r0, [r1]
|
|
||||||
movs r0, 0
|
|
||||||
movs r1, 0
|
|
||||||
bl SetGpuReg
|
|
||||||
movs r0, 0x10
|
|
||||||
movs r1, 0
|
|
||||||
bl SetGpuReg
|
|
||||||
movs r0, 0x12
|
|
||||||
movs r1, 0
|
|
||||||
bl SetGpuReg
|
|
||||||
add r0, sp, 0x4
|
|
||||||
strh r4, [r0]
|
|
||||||
ldr r1, _080EC750 @ =0x040000d4
|
|
||||||
str r0, [r1]
|
|
||||||
movs r0, 0xC0
|
|
||||||
lsls r0, 19
|
|
||||||
str r0, [r1, 0x4]
|
|
||||||
ldr r0, _080EC754 @ =0x8100c000
|
|
||||||
str r0, [r1, 0x8]
|
|
||||||
ldr r0, [r1, 0x8]
|
|
||||||
str r4, [sp, 0x8]
|
|
||||||
add r0, sp, 0x8
|
|
||||||
str r0, [r1]
|
|
||||||
movs r0, 0xE0
|
|
||||||
lsls r0, 19
|
|
||||||
str r0, [r1, 0x4]
|
|
||||||
ldr r0, _080EC758 @ =0x85000100
|
|
||||||
str r0, [r1, 0x8]
|
|
||||||
ldr r0, [r1, 0x8]
|
|
||||||
add r0, sp, 0x4
|
|
||||||
strh r4, [r0]
|
|
||||||
str r0, [r1]
|
|
||||||
ldr r0, _080EC75C @ =0x05000002
|
|
||||||
str r0, [r1, 0x4]
|
|
||||||
ldr r0, _080EC760 @ =0x810001ff
|
|
||||||
str r0, [r1, 0x8]
|
|
||||||
ldr r0, [r1, 0x8]
|
|
||||||
bl ResetPaletteFade
|
|
||||||
movs r1, 0xE0
|
|
||||||
lsls r1, 6
|
|
||||||
movs r0, 0
|
|
||||||
movs r2, 0
|
|
||||||
bl load_copyright_graphics
|
|
||||||
bl ScanlineEffect_Stop
|
|
||||||
bl ResetTasks
|
|
||||||
bl ResetSpriteData
|
|
||||||
bl FreeAllSpritePalettes
|
|
||||||
movs r0, 0x1
|
|
||||||
negs r0, r0
|
|
||||||
ldr r1, _080EC764 @ =0x0000ffff
|
|
||||||
str r1, [sp]
|
|
||||||
movs r1, 0
|
|
||||||
movs r2, 0x10
|
|
||||||
movs r3, 0
|
|
||||||
bl BeginNormalPaletteFade
|
|
||||||
movs r1, 0xE0
|
|
||||||
lsls r1, 3
|
|
||||||
movs r0, 0x8
|
|
||||||
bl SetGpuReg
|
|
||||||
movs r0, 0x1
|
|
||||||
bl EnableInterrupts
|
|
||||||
ldr r0, _080EC768 @ =sub_80EC5A4
|
|
||||||
bl SetVBlankCallback
|
|
||||||
movs r1, 0xA0
|
|
||||||
lsls r1, 1
|
|
||||||
movs r0, 0
|
|
||||||
bl SetGpuReg
|
|
||||||
ldr r0, _080EC76C @ =SerialCb_CopyrightScreen
|
|
||||||
bl SetSerialCallback
|
|
||||||
ldr r0, _080EC770 @ =gUnknown_203AAD4
|
|
||||||
bl GameCubeMultiBoot_Init
|
|
||||||
_080EC732:
|
|
||||||
bl UpdatePaletteFade
|
|
||||||
ldr r0, _080EC774 @ =gMain
|
|
||||||
movs r1, 0x87
|
|
||||||
lsls r1, 3
|
|
||||||
adds r0, r1
|
|
||||||
ldrb r1, [r0]
|
|
||||||
adds r1, 0x1
|
|
||||||
strb r1, [r0]
|
|
||||||
ldr r0, _080EC770 @ =gUnknown_203AAD4
|
|
||||||
bl GameCubeMultiBoot_Main
|
|
||||||
b _080EC812
|
|
||||||
.align 2, 0
|
|
||||||
_080EC74C: .4byte 0x00007fff
|
|
||||||
_080EC750: .4byte 0x040000d4
|
|
||||||
_080EC754: .4byte 0x8100c000
|
|
||||||
_080EC758: .4byte 0x85000100
|
|
||||||
_080EC75C: .4byte 0x05000002
|
|
||||||
_080EC760: .4byte 0x810001ff
|
|
||||||
_080EC764: .4byte 0x0000ffff
|
|
||||||
_080EC768: .4byte sub_80EC5A4
|
|
||||||
_080EC76C: .4byte SerialCb_CopyrightScreen
|
|
||||||
_080EC770: .4byte gUnknown_203AAD4
|
|
||||||
_080EC774: .4byte gMain
|
|
||||||
_080EC778:
|
|
||||||
ldr r4, _080EC7A0 @ =gUnknown_203AAD4
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl GameCubeMultiBoot_Main
|
|
||||||
ldrb r0, [r4, 0x2]
|
|
||||||
cmp r0, 0x1
|
|
||||||
beq _080EC812
|
|
||||||
movs r0, 0x1
|
|
||||||
negs r0, r0
|
|
||||||
movs r1, 0
|
|
||||||
str r1, [sp]
|
|
||||||
movs r2, 0
|
|
||||||
movs r3, 0x10
|
|
||||||
bl BeginNormalPaletteFade
|
|
||||||
ldrb r0, [r5]
|
|
||||||
adds r0, 0x1
|
|
||||||
strb r0, [r5]
|
|
||||||
b _080EC812
|
|
||||||
.align 2, 0
|
|
||||||
_080EC7A0: .4byte gUnknown_203AAD4
|
|
||||||
_080EC7A4:
|
|
||||||
bl UpdatePaletteFade
|
|
||||||
lsls r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
bne _080EC812
|
|
||||||
ldrb r0, [r5]
|
|
||||||
adds r0, 0x1
|
|
||||||
strb r0, [r5]
|
|
||||||
ldr r5, _080EC7E4 @ =gUnknown_203AAD4
|
|
||||||
ldrb r0, [r5, 0x2]
|
|
||||||
cmp r0, 0
|
|
||||||
beq _080EC7F4
|
|
||||||
ldrb r0, [r5, 0x2]
|
|
||||||
cmp r0, 0x2
|
|
||||||
bne _080EC7FE
|
|
||||||
ldr r6, _080EC7E8 @ =0x020000ac
|
|
||||||
ldr r4, [r6]
|
|
||||||
ldr r0, _080EC7EC @ =0x65366347
|
|
||||||
cmp r4, r0
|
|
||||||
bne _080EC7DC
|
|
||||||
ldr r0, _080EC7F0 @ =gMultiBootProgram_PokemonColosseum_Start
|
|
||||||
movs r1, 0x80
|
|
||||||
lsls r1, 18
|
|
||||||
movs r2, 0xA0
|
|
||||||
lsls r2, 9
|
|
||||||
bl CpuSet
|
|
||||||
str r4, [r6]
|
|
||||||
_080EC7DC:
|
|
||||||
adds r0, r5, 0
|
|
||||||
bl GameCubeMultiBoot_ExecuteProgram
|
|
||||||
b _080EC7FE
|
|
||||||
.align 2, 0
|
|
||||||
_080EC7E4: .4byte gUnknown_203AAD4
|
|
||||||
_080EC7E8: .4byte 0x020000ac
|
|
||||||
_080EC7EC: .4byte 0x65366347
|
|
||||||
_080EC7F0: .4byte gMultiBootProgram_PokemonColosseum_Start
|
|
||||||
_080EC7F4:
|
|
||||||
bl GameCubeMultiBoot_Quit
|
|
||||||
ldr r0, _080EC804 @ =SerialCB
|
|
||||||
bl SetSerialCallback
|
|
||||||
_080EC7FE:
|
|
||||||
movs r0, 0
|
|
||||||
b _080EC814
|
|
||||||
.align 2, 0
|
|
||||||
_080EC804: .4byte SerialCB
|
|
||||||
_080EC808:
|
|
||||||
bl sub_800B388
|
|
||||||
ldr r0, _080EC81C @ =sub_80EC5B8
|
|
||||||
bl SetMainCallback2
|
|
||||||
_080EC812:
|
|
||||||
movs r0, 0x1
|
|
||||||
_080EC814:
|
|
||||||
add sp, 0xC
|
|
||||||
pop {r4-r6}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
.align 2, 0
|
|
||||||
_080EC81C: .4byte sub_80EC5B8
|
|
||||||
thumb_func_end sub_80EC62C
|
|
||||||
|
|
||||||
thumb_func_start c2_copyright_1
|
|
||||||
c2_copyright_1: @ 80EC820
|
|
||||||
push {lr}
|
|
||||||
bl sub_80EC62C
|
|
||||||
lsls r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
bne _080EC858
|
|
||||||
bl ResetMenuAndMonGlobals
|
|
||||||
bl Save_ResetSaveCounters
|
|
||||||
movs r0, 0
|
|
||||||
bl Save_LoadGameData
|
|
||||||
ldr r0, _080EC85C @ =gSaveFileStatus
|
|
||||||
ldrh r0, [r0]
|
|
||||||
cmp r0, 0
|
|
||||||
beq _080EC846
|
|
||||||
cmp r0, 0x2
|
|
||||||
bne _080EC84A
|
|
||||||
_080EC846:
|
|
||||||
bl Sav2_ClearSetDefault
|
|
||||||
_080EC84A:
|
|
||||||
ldr r0, _080EC860 @ =gSaveBlock2Ptr
|
|
||||||
ldr r0, [r0]
|
|
||||||
ldrb r0, [r0, 0x15]
|
|
||||||
lsls r0, 31
|
|
||||||
lsrs r0, 31
|
|
||||||
bl SetPokemonCryStereo
|
|
||||||
_080EC858:
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_080EC85C: .4byte gSaveFileStatus
|
|
||||||
_080EC860: .4byte gSaveBlock2Ptr
|
|
||||||
thumb_func_end c2_copyright_1
|
|
||||||
|
|
||||||
thumb_func_start sub_80EC864
|
|
||||||
sub_80EC864: @ 80EC864
|
|
||||||
push {lr}
|
|
||||||
bl sub_80EC62C
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
thumb_func_end sub_80EC864
|
|
||||||
|
|
||||||
thumb_func_start sub_80EC870
|
|
||||||
sub_80EC870: @ 80EC870
|
|
||||||
push {r4,lr}
|
|
||||||
sub sp, 0xC
|
|
||||||
ldr r0, _080EC88C @ =gMain
|
|
||||||
movs r1, 0x87
|
|
||||||
lsls r1, 3
|
|
||||||
adds r0, r1
|
|
||||||
ldrb r4, [r0]
|
|
||||||
cmp r4, 0x1
|
|
||||||
beq _080EC944
|
|
||||||
cmp r4, 0x1
|
|
||||||
bgt _080EC890
|
|
||||||
cmp r4, 0
|
|
||||||
beq _080EC8A0
|
|
||||||
b _080EC894
|
|
||||||
.align 2, 0
|
|
||||||
_080EC88C: .4byte gMain
|
|
||||||
_080EC890:
|
|
||||||
cmp r4, 0x2
|
|
||||||
beq _080EC988
|
|
||||||
_080EC894:
|
|
||||||
ldr r0, _080EC928 @ =gMain
|
|
||||||
movs r1, 0x87
|
|
||||||
lsls r1, 3
|
|
||||||
adds r0, r1
|
|
||||||
movs r1, 0
|
|
||||||
strb r1, [r0]
|
|
||||||
_080EC8A0:
|
|
||||||
movs r0, 0
|
|
||||||
bl SetVBlankCallback
|
|
||||||
movs r0, 0
|
|
||||||
movs r1, 0
|
|
||||||
bl SetGpuReg
|
|
||||||
ldr r0, _080EC92C @ =gHeap
|
|
||||||
movs r1, 0xE0
|
|
||||||
lsls r1, 9
|
|
||||||
bl InitHeap
|
|
||||||
bl ResetTasks
|
|
||||||
bl ResetSpriteData
|
|
||||||
bl ResetPaletteFade
|
|
||||||
bl ResetTempTileDataBuffers
|
|
||||||
bl sub_80ECA00
|
|
||||||
add r1, sp, 0x4
|
|
||||||
movs r0, 0
|
|
||||||
strh r0, [r1]
|
|
||||||
ldr r1, _080EC930 @ =0x040000d4
|
|
||||||
add r0, sp, 0x4
|
|
||||||
str r0, [r1]
|
|
||||||
movs r0, 0xC0
|
|
||||||
lsls r0, 19
|
|
||||||
str r0, [r1, 0x4]
|
|
||||||
ldr r0, _080EC934 @ =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, _080EC938 @ =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, _080EC93C @ =0x81000200
|
|
||||||
str r0, [r1, 0x8]
|
|
||||||
ldr r0, [r1, 0x8]
|
|
||||||
movs r2, 0x80
|
|
||||||
lsls r2, 3
|
|
||||||
movs r0, 0
|
|
||||||
movs r1, 0
|
|
||||||
bl FillPalette
|
|
||||||
movs r0, 0
|
|
||||||
bl ResetBgsAndClearDma3BusyFlags
|
|
||||||
ldr r1, _080EC940 @ =gUnknown_840BB80
|
|
||||||
movs r0, 0
|
|
||||||
movs r2, 0x2
|
|
||||||
bl InitBgsFromTemplates
|
|
||||||
b _080EC9B8
|
|
||||||
.align 2, 0
|
|
||||||
_080EC928: .4byte gMain
|
|
||||||
_080EC92C: .4byte gHeap
|
|
||||||
_080EC930: .4byte 0x040000d4
|
|
||||||
_080EC934: .4byte 0x8100c000
|
|
||||||
_080EC938: .4byte 0x85000100
|
|
||||||
_080EC93C: .4byte 0x81000200
|
|
||||||
_080EC940: .4byte gUnknown_840BB80
|
|
||||||
_080EC944:
|
|
||||||
ldr r0, _080EC978 @ =gUnknown_8402630
|
|
||||||
movs r1, 0
|
|
||||||
movs r2, 0x20
|
|
||||||
bl LoadPalette
|
|
||||||
ldr r1, _080EC97C @ =gUnknown_8402650
|
|
||||||
movs r0, 0
|
|
||||||
str r0, [sp]
|
|
||||||
movs r0, 0x3
|
|
||||||
movs r2, 0
|
|
||||||
movs r3, 0
|
|
||||||
bl DecompressAndCopyTileDataToVram
|
|
||||||
ldr r1, _080EC980 @ =gUnknown_8402668
|
|
||||||
str r4, [sp]
|
|
||||||
movs r0, 0x3
|
|
||||||
movs r2, 0
|
|
||||||
movs r3, 0
|
|
||||||
bl DecompressAndCopyTileDataToVram
|
|
||||||
ldr r0, _080EC984 @ =gUnknown_840270C
|
|
||||||
movs r1, 0xD0
|
|
||||||
movs r2, 0x20
|
|
||||||
bl LoadPalette
|
|
||||||
b _080EC9B8
|
|
||||||
.align 2, 0
|
|
||||||
_080EC978: .4byte gUnknown_8402630
|
|
||||||
_080EC97C: .4byte gUnknown_8402650
|
|
||||||
_080EC980: .4byte gUnknown_8402668
|
|
||||||
_080EC984: .4byte gUnknown_840270C
|
|
||||||
_080EC988:
|
|
||||||
bl FreeTempTileDataBuffersIfPossible
|
|
||||||
lsls r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
bne _080EC9C6
|
|
||||||
bl sub_80ECA70
|
|
||||||
movs r0, 0x1
|
|
||||||
negs r0, r0
|
|
||||||
movs r1, 0x10
|
|
||||||
movs r2, 0
|
|
||||||
bl BlendPalettes
|
|
||||||
ldr r0, _080EC9B0 @ =sub_80EC9D4
|
|
||||||
bl SetMainCallback2
|
|
||||||
ldr r0, _080EC9B4 @ =sub_80EC9EC
|
|
||||||
bl SetVBlankCallback
|
|
||||||
b _080EC9C6
|
|
||||||
.align 2, 0
|
|
||||||
_080EC9B0: .4byte sub_80EC9D4
|
|
||||||
_080EC9B4: .4byte sub_80EC9EC
|
|
||||||
_080EC9B8:
|
|
||||||
ldr r1, _080EC9D0 @ =gMain
|
|
||||||
movs r0, 0x87
|
|
||||||
lsls r0, 3
|
|
||||||
adds r1, r0
|
|
||||||
ldrb r0, [r1]
|
|
||||||
adds r0, 0x1
|
|
||||||
strb r0, [r1]
|
|
||||||
_080EC9C6:
|
|
||||||
add sp, 0xC
|
|
||||||
pop {r4}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_080EC9D0: .4byte gMain
|
|
||||||
thumb_func_end sub_80EC870
|
|
||||||
|
|
||||||
thumb_func_start sub_80EC9D4
|
|
||||||
sub_80EC9D4: @ 80EC9D4
|
|
||||||
push {lr}
|
|
||||||
bl RunTasks
|
|
||||||
bl AnimateSprites
|
|
||||||
bl BuildOamBuffer
|
|
||||||
bl UpdatePaletteFade
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
thumb_func_end sub_80EC9D4
|
|
||||||
|
|
||||||
thumb_func_start sub_80EC9EC
|
|
||||||
sub_80EC9EC: @ 80EC9EC
|
|
||||||
push {lr}
|
|
||||||
bl LoadOam
|
|
||||||
bl ProcessSpriteCopyRequests
|
|
||||||
bl TransferPlttBuffer
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
thumb_func_end sub_80EC9EC
|
|
||||||
|
|
||||||
thumb_func_start sub_80ECA00
|
|
||||||
sub_80ECA00: @ 80ECA00
|
|
||||||
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
|
|
||||||
movs r1, 0x82
|
|
||||||
lsls r1, 5
|
|
||||||
movs r0, 0
|
|
||||||
bl SetGpuRegBits
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
thumb_func_end sub_80ECA00
|
|
||||||
|
|
||||||
thumb_func_start sub_80ECA70
|
|
||||||
sub_80ECA70: @ 80ECA70
|
|
||||||
push {r4,lr}
|
|
||||||
ldr r0, _080ECA9C @ =0x000028bc
|
|
||||||
bl Alloc
|
|
||||||
adds r4, r0, 0
|
|
||||||
ldr r1, _080ECAA0 @ =sub_80ECAF0
|
|
||||||
bl sub_80ECAA8
|
|
||||||
ldr r0, _080ECAA4 @ =sub_80ECAB0
|
|
||||||
movs r1, 0x3
|
|
||||||
bl CreateTask
|
|
||||||
strb r0, [r4, 0x5]
|
|
||||||
ldrb r0, [r4, 0x5]
|
|
||||||
movs r1, 0
|
|
||||||
adds r2, r4, 0
|
|
||||||
bl SetWordTaskArg
|
|
||||||
pop {r4}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_080ECA9C: .4byte 0x000028bc
|
|
||||||
_080ECAA0: .4byte sub_80ECAF0
|
|
||||||
_080ECAA4: .4byte sub_80ECAB0
|
|
||||||
thumb_func_end sub_80ECA70
|
|
||||||
|
|
||||||
thumb_func_start sub_80ECAA8
|
|
||||||
sub_80ECAA8: @ 80ECAA8
|
|
||||||
str r1, [r0]
|
|
||||||
movs r1, 0
|
|
||||||
strb r1, [r0, 0x4]
|
|
||||||
bx lr
|
|
||||||
thumb_func_end sub_80ECAA8
|
|
||||||
|
|
||||||
thumb_func_start sub_80ECAB0
|
|
||||||
sub_80ECAB0: @ 80ECAB0
|
|
||||||
push {r4,lr}
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
movs r1, 0
|
|
||||||
bl GetWordTaskArg
|
|
||||||
adds r4, r0, 0
|
|
||||||
ldr r0, _080ECAE8 @ =gMain
|
|
||||||
ldrh r1, [r0, 0x2E]
|
|
||||||
movs r0, 0xD
|
|
||||||
ands r0, r1
|
|
||||||
cmp r0, 0
|
|
||||||
beq _080ECAD8
|
|
||||||
ldr r0, [r4]
|
|
||||||
ldr r1, _080ECAEC @ =sub_80EDBE8
|
|
||||||
cmp r0, r1
|
|
||||||
beq _080ECAD8
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl sub_80ECAA8
|
|
||||||
_080ECAD8:
|
|
||||||
ldr r1, [r4]
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl _call_via_r1
|
|
||||||
pop {r4}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_080ECAE8: .4byte gMain
|
|
||||||
_080ECAEC: .4byte sub_80EDBE8
|
|
||||||
thumb_func_end sub_80ECAB0
|
|
||||||
|
|
||||||
thumb_func_start sub_80ECAF0
|
|
||||||
sub_80ECAF0: @ 80ECAF0
|
|
||||||
push {r4,r5,lr}
|
|
||||||
sub sp, 0xC
|
|
||||||
adds r5, r0, 0
|
|
||||||
ldrb r0, [r5, 0x4]
|
|
||||||
cmp r0, 0
|
|
||||||
beq _080ECB02
|
|
||||||
cmp r0, 0x1
|
|
||||||
beq _080ECB78
|
|
||||||
b _080ECB8A
|
|
||||||
_080ECB02:
|
|
||||||
ldr r0, _080ECB68 @ =gUnknown_840BBA8
|
|
||||||
bl InitWindows
|
|
||||||
ldr r0, _080ECB6C @ =gUnknown_840272C
|
|
||||||
ldr r1, _080ECB70 @ =0x0000043c
|
|
||||||
adds r4, r5, r1
|
|
||||||
adds r1, r4, 0
|
|
||||||
bl LZ77UnCompWram
|
|
||||||
ldr r0, _080ECB74 @ =gUnknown_84028F8
|
|
||||||
adds r1, r5, 0
|
|
||||||
adds r1, 0x3C
|
|
||||||
bl LZ77UnCompWram
|
|
||||||
movs r0, 0x20
|
|
||||||
str r0, [sp]
|
|
||||||
str r0, [sp, 0x4]
|
|
||||||
movs r0, 0x11
|
|
||||||
str r0, [sp, 0x8]
|
|
||||||
movs r0, 0x2
|
|
||||||
movs r1, 0
|
|
||||||
movs r2, 0
|
|
||||||
movs r3, 0
|
|
||||||
bl FillBgTilemapBufferRect
|
|
||||||
movs r0, 0
|
|
||||||
movs r1, 0
|
|
||||||
bl FillWindowPixelBuffer
|
|
||||||
movs r0, 0x90
|
|
||||||
str r0, [sp]
|
|
||||||
movs r0, 0x10
|
|
||||||
str r0, [sp, 0x4]
|
|
||||||
movs r0, 0
|
|
||||||
adds r1, r4, 0
|
|
||||||
movs r2, 0
|
|
||||||
movs r3, 0x28
|
|
||||||
bl BlitBitmapToWindow
|
|
||||||
movs r0, 0
|
|
||||||
bl PutWindowTilemap
|
|
||||||
movs r0, 0
|
|
||||||
movs r1, 0x3
|
|
||||||
bl CopyWindowToVram
|
|
||||||
ldrb r0, [r5, 0x4]
|
|
||||||
adds r0, 0x1
|
|
||||||
strb r0, [r5, 0x4]
|
|
||||||
b _080ECB8A
|
|
||||||
.align 2, 0
|
|
||||||
_080ECB68: .4byte gUnknown_840BBA8
|
|
||||||
_080ECB6C: .4byte gUnknown_840272C
|
|
||||||
_080ECB70: .4byte 0x0000043c
|
|
||||||
_080ECB74: .4byte gUnknown_84028F8
|
|
||||||
_080ECB78:
|
|
||||||
bl IsDma3ManagerBusyWithBgCopy
|
|
||||||
lsls r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
bne _080ECB8A
|
|
||||||
ldr r1, _080ECB94 @ =sub_80ECB98
|
|
||||||
adds r0, r5, 0
|
|
||||||
bl sub_80ECAA8
|
|
||||||
_080ECB8A:
|
|
||||||
add sp, 0xC
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_080ECB94: .4byte sub_80ECB98
|
|
||||||
thumb_func_end sub_80ECAF0
|
|
||||||
|
|
||||||
thumb_func_start sub_80ECB98
|
thumb_func_start sub_80ECB98
|
||||||
sub_80ECB98: @ 80ECB98
|
sub_80ECB98: @ 80ECB98
|
||||||
push {r4,r5,lr}
|
push {r4,r5,lr}
|
||||||
|
|||||||
BIN
Binary file not shown.
@@ -0,0 +1,17 @@
|
|||||||
|
#ifndef GUARD_LIBGCMMULTIBOOT_H
|
||||||
|
#define GUARD_LIBGCNMULTIBOOT_H
|
||||||
|
|
||||||
|
struct GcmbStruct
|
||||||
|
{
|
||||||
|
u16 gcmb_field_0;
|
||||||
|
vu8 gcmb_field_2;
|
||||||
|
u8 filler3[0x2C - 0x3];
|
||||||
|
};
|
||||||
|
|
||||||
|
void GameCubeMultiBoot_Main(struct GcmbStruct *pStruct);
|
||||||
|
void GameCubeMultiBoot_ExecuteProgram(struct GcmbStruct *pStruct);
|
||||||
|
void GameCubeMultiBoot_Init(struct GcmbStruct *pStruct);
|
||||||
|
void GameCubeMultiBoot_HandleSerialInterrupt(struct GcmbStruct *pStruct);
|
||||||
|
void GameCubeMultiBoot_Quit(void);
|
||||||
|
|
||||||
|
#endif // GUARD_LIBGCNMULTIBOOT_H
|
||||||
@@ -207,5 +207,7 @@ void sub_80098D8(void);
|
|||||||
void CloseLink(void);
|
void CloseLink(void);
|
||||||
bool8 sub_800A4BC(void);
|
bool8 sub_800A4BC(void);
|
||||||
bool32 sub_800B270(void);
|
bool32 sub_800B270(void);
|
||||||
|
void sub_800B388(void);
|
||||||
|
void sub_8054A28(void);
|
||||||
|
|
||||||
#endif // GUARD_LINK_H
|
#endif // GUARD_LINK_H
|
||||||
|
|||||||
@@ -210,6 +210,7 @@ SECTIONS {
|
|||||||
asm/battle_tower.o(.text);
|
asm/battle_tower.o(.text);
|
||||||
asm/battle_controller_oak.o(.text);
|
asm/battle_controller_oak.o(.text);
|
||||||
asm/player_pc.o(.text);
|
asm/player_pc.o(.text);
|
||||||
|
src/intro.o(.text);
|
||||||
asm/intro.o(.text);
|
asm/intro.o(.text);
|
||||||
asm/battle_anim_special.o(.text);
|
asm/battle_anim_special.o(.text);
|
||||||
asm/hall_of_fame.o(.text);
|
asm/hall_of_fame.o(.text);
|
||||||
|
|||||||
+289
@@ -0,0 +1,289 @@
|
|||||||
|
#include "global.h"
|
||||||
|
#include "m4a.h"
|
||||||
|
#include "malloc.h"
|
||||||
|
#include "bg.h"
|
||||||
|
#include "palette.h"
|
||||||
|
#include "main.h"
|
||||||
|
#include "gpu_regs.h"
|
||||||
|
#include "task.h"
|
||||||
|
#include "scanline_effect.h"
|
||||||
|
#include "libgcnmultiboot.h"
|
||||||
|
#include "new_menu_helpers.h"
|
||||||
|
#include "link.h"
|
||||||
|
#include "menu.h"
|
||||||
|
#include "save.h"
|
||||||
|
#include "new_game.h"
|
||||||
|
|
||||||
|
struct IntroSequenceData
|
||||||
|
{
|
||||||
|
void (*field_0000)(struct IntroSequenceData *);
|
||||||
|
u8 field_0004;
|
||||||
|
u8 field_0005;
|
||||||
|
u8 filler_0006[0x36];
|
||||||
|
u8 field_003C[0x400];
|
||||||
|
u8 field_043C[0x400];
|
||||||
|
u8 filler_083C[0x2080];
|
||||||
|
}; // size: 0x28BC
|
||||||
|
|
||||||
|
EWRAM_DATA struct GcmbStruct gUnknown_203AAD4 = {0};
|
||||||
|
|
||||||
|
void sub_80EC870(void);
|
||||||
|
void sub_80EC9D4(void);
|
||||||
|
void sub_80EC9EC(void);
|
||||||
|
void sub_80ECA00(void);
|
||||||
|
void sub_80ECA70(void);
|
||||||
|
void sub_80ECAB0(u8 taskId);
|
||||||
|
void sub_80ECAA8(struct IntroSequenceData * ptr, void (*cb)(struct IntroSequenceData *));
|
||||||
|
void sub_80ECAF0(struct IntroSequenceData * ptr);
|
||||||
|
void sub_80ECB98(struct IntroSequenceData * ptr);
|
||||||
|
void sub_80EDBE8(struct IntroSequenceData * ptr);
|
||||||
|
|
||||||
|
extern const u32 gMultiBootProgram_PokemonColosseum_Start[];
|
||||||
|
|
||||||
|
extern const u8 gUnknown_8402260[];
|
||||||
|
extern const u8 gUnknown_8402280[];
|
||||||
|
extern const u8 gUnknown_84024E4[];
|
||||||
|
extern const u16 gUnknown_8402630[];
|
||||||
|
extern const u8 gUnknown_8402650[];
|
||||||
|
extern const u8 gUnknown_8402668[];
|
||||||
|
extern const u16 gUnknown_840270C[];
|
||||||
|
extern const u8 gUnknown_840272C[];
|
||||||
|
extern const u8 gUnknown_84028F8[];
|
||||||
|
|
||||||
|
extern const struct BgTemplate gUnknown_840BB80[2];
|
||||||
|
extern const struct WindowTemplate gUnknown_840BBA8[];
|
||||||
|
|
||||||
|
void sub_80EC5A4(void)
|
||||||
|
{
|
||||||
|
LoadOam();
|
||||||
|
ProcessSpriteCopyRequests();
|
||||||
|
TransferPlttBuffer();
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_80EC5B8(void)
|
||||||
|
{
|
||||||
|
if (!UpdatePaletteFade())
|
||||||
|
SetMainCallback2(sub_80EC870);
|
||||||
|
}
|
||||||
|
|
||||||
|
void load_copyright_graphics(u16 a, u16 b, u16 c)
|
||||||
|
{
|
||||||
|
LZ77UnCompVram(gUnknown_8402280, (void *)BG_VRAM + a);
|
||||||
|
LZ77UnCompVram(gUnknown_84024E4, (void *)BG_VRAM + b);
|
||||||
|
LoadPalette(gUnknown_8402260, c, 0x20);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SerialCb_CopyrightScreen(void)
|
||||||
|
{
|
||||||
|
GameCubeMultiBoot_HandleSerialInterrupt(&gUnknown_203AAD4);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 sub_80EC62C(void)
|
||||||
|
{
|
||||||
|
switch (gMain.state)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
SetVBlankCallback(NULL);
|
||||||
|
SetGpuReg(REG_OFFSET_BLDCNT, 0);
|
||||||
|
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
|
||||||
|
SetGpuReg(REG_OFFSET_BLDY, 0);
|
||||||
|
((vu16*)PLTT)[0] = RGB_WHITE;
|
||||||
|
SetGpuReg(REG_OFFSET_DISPCNT, 0);
|
||||||
|
SetGpuReg(REG_OFFSET_BG0HOFS, 0);
|
||||||
|
SetGpuReg(REG_OFFSET_BG0VOFS, 0);
|
||||||
|
DmaFill16(3, 0, VRAM, VRAM_SIZE);
|
||||||
|
DmaFill32(3, 0, OAM, OAM_SIZE);
|
||||||
|
DmaFill16(3, 0, PLTT + sizeof(vu16), PLTT_SIZE - sizeof(vu16));
|
||||||
|
ResetPaletteFade();
|
||||||
|
load_copyright_graphics(0, 0x3800, 0);
|
||||||
|
ScanlineEffect_Stop();
|
||||||
|
ResetTasks();
|
||||||
|
ResetSpriteData();
|
||||||
|
FreeAllSpritePalettes();BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0xFFFF);
|
||||||
|
SetGpuReg(REG_OFFSET_BG0CNT, 0x700);
|
||||||
|
EnableInterrupts(INTR_FLAG_VBLANK);
|
||||||
|
SetVBlankCallback(sub_80EC5A4);
|
||||||
|
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON);
|
||||||
|
SetSerialCallback(SerialCb_CopyrightScreen);
|
||||||
|
GameCubeMultiBoot_Init(&gUnknown_203AAD4);
|
||||||
|
// fallthrough
|
||||||
|
default:
|
||||||
|
UpdatePaletteFade();
|
||||||
|
gMain.state++;
|
||||||
|
GameCubeMultiBoot_Main(&gUnknown_203AAD4);
|
||||||
|
break;
|
||||||
|
case 140:
|
||||||
|
GameCubeMultiBoot_Main(&gUnknown_203AAD4);
|
||||||
|
if (gUnknown_203AAD4.gcmb_field_2 != 1)
|
||||||
|
{
|
||||||
|
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
|
||||||
|
gMain.state++;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 141:
|
||||||
|
if (!UpdatePaletteFade())
|
||||||
|
{
|
||||||
|
gMain.state++;
|
||||||
|
if (gUnknown_203AAD4.gcmb_field_2 != 0)
|
||||||
|
{
|
||||||
|
if (gUnknown_203AAD4.gcmb_field_2 == 2)
|
||||||
|
{
|
||||||
|
if (*((u32 *)0x020000AC) == 0x65366347)
|
||||||
|
{
|
||||||
|
CpuCopy16(gMultiBootProgram_PokemonColosseum_Start, (void *)EWRAM_START, 0x28000);
|
||||||
|
*((u32 *)0x020000AC) = 0x65366347;
|
||||||
|
}
|
||||||
|
GameCubeMultiBoot_ExecuteProgram(&gUnknown_203AAD4);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
GameCubeMultiBoot_Quit();
|
||||||
|
SetSerialCallback(SerialCB);
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 142:
|
||||||
|
sub_800B388();
|
||||||
|
SetMainCallback2(sub_80EC5B8);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void c2_copyright_1(void)
|
||||||
|
{
|
||||||
|
if (!sub_80EC62C())
|
||||||
|
{
|
||||||
|
ResetMenuAndMonGlobals();
|
||||||
|
Save_ResetSaveCounters();
|
||||||
|
Save_LoadGameData(0);
|
||||||
|
if (gSaveFileStatus == SAVE_STATUS_EMPTY || gSaveFileStatus == SAVE_STATUS_INVALID)
|
||||||
|
Sav2_ClearSetDefault();
|
||||||
|
SetPokemonCryStereo(gSaveBlock2Ptr->optionsSound);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_80EC864(void)
|
||||||
|
{
|
||||||
|
sub_80EC62C();
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_80EC870(void)
|
||||||
|
{
|
||||||
|
switch (gMain.state)
|
||||||
|
{
|
||||||
|
default:
|
||||||
|
gMain.state = 0;
|
||||||
|
// fallthrough
|
||||||
|
case 0:
|
||||||
|
SetVBlankCallback(NULL);
|
||||||
|
SetGpuReg(REG_OFFSET_DISPCNT, 0);
|
||||||
|
InitHeap(gHeap, HEAP_SIZE);
|
||||||
|
ResetTasks();
|
||||||
|
ResetSpriteData();
|
||||||
|
ResetPaletteFade();
|
||||||
|
ResetTempTileDataBuffers();
|
||||||
|
sub_80ECA00();
|
||||||
|
DmaFill16(3, 0, VRAM, VRAM_SIZE);
|
||||||
|
DmaFill32(3, 0, OAM, OAM_SIZE);
|
||||||
|
DmaFill16(3, 0, PLTT, PLTT_SIZE);
|
||||||
|
FillPalette(0, 0, 0x400);
|
||||||
|
ResetBgsAndClearDma3BusyFlags(0);
|
||||||
|
InitBgsFromTemplates(0, gUnknown_840BB80, NELEMS(gUnknown_840BB80));
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
LoadPalette(gUnknown_8402630, 0x00, 0x20);
|
||||||
|
DecompressAndCopyTileDataToVram(3, gUnknown_8402650, 0, 0, 0);
|
||||||
|
DecompressAndCopyTileDataToVram(3, gUnknown_8402668, 0, 0, 1);
|
||||||
|
LoadPalette(gUnknown_840270C, 0xD0, 0x20);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
if (!FreeTempTileDataBuffersIfPossible())
|
||||||
|
{
|
||||||
|
sub_80ECA70();
|
||||||
|
BlendPalettes(0xFFFFFFFF, 16, RGB_BLACK);
|
||||||
|
SetMainCallback2(sub_80EC9D4);
|
||||||
|
SetVBlankCallback(sub_80EC9EC);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
gMain.state++;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_80EC9D4(void)
|
||||||
|
{
|
||||||
|
RunTasks();
|
||||||
|
AnimateSprites();
|
||||||
|
BuildOamBuffer();
|
||||||
|
UpdatePaletteFade();
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_80EC9EC(void)
|
||||||
|
{
|
||||||
|
LoadOam();
|
||||||
|
ProcessSpriteCopyRequests();
|
||||||
|
TransferPlttBuffer();
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_80ECA00(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);
|
||||||
|
SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON);
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_80ECA70(void)
|
||||||
|
{
|
||||||
|
struct IntroSequenceData * ptr = Alloc(sizeof(struct IntroSequenceData));
|
||||||
|
sub_80ECAA8(ptr, sub_80ECAF0);
|
||||||
|
ptr->field_0005 = CreateTask(sub_80ECAB0, 3);
|
||||||
|
SetWordTaskArg(ptr->field_0005, 0, (uintptr_t)ptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_80ECAA8(struct IntroSequenceData * ptr, void (*cb)(struct IntroSequenceData *))
|
||||||
|
{
|
||||||
|
ptr->field_0000 = cb;
|
||||||
|
ptr->field_0004 = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_80ECAB0(u8 taskId)
|
||||||
|
{
|
||||||
|
struct IntroSequenceData * ptr = (void *)GetWordTaskArg(taskId, 0);
|
||||||
|
if (JOY_NEW(A_BUTTON | START_BUTTON | SELECT_BUTTON) && ptr->field_0000 != sub_80EDBE8)
|
||||||
|
sub_80ECAA8(ptr, sub_80EDBE8);
|
||||||
|
ptr->field_0000(ptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_80ECAF0(struct IntroSequenceData * this)
|
||||||
|
{
|
||||||
|
switch (this->field_0004)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
InitWindows(gUnknown_840BBA8);
|
||||||
|
LZ77UnCompWram(gUnknown_840272C, this->field_043C);
|
||||||
|
LZ77UnCompWram(gUnknown_84028F8, this->field_003C);
|
||||||
|
FillBgTilemapBufferRect(2, 0x000, 0, 0, 32, 32, 0x11);
|
||||||
|
FillWindowPixelBuffer(0, 0x00);
|
||||||
|
BlitBitmapToWindow(0, this->field_043C, 0, 40, 144, 16);
|
||||||
|
PutWindowTilemap(0);
|
||||||
|
CopyWindowToVram(0, 3);
|
||||||
|
this->field_0004++;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
if (!IsDma3ManagerBusyWithBgCopy())
|
||||||
|
sub_80ECAA8(this, sub_80ECB98);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user