Redo partial decomp of intro (force push)
This commit is contained in:
-702
@@ -5,708 +5,6 @@
|
||||
|
||||
.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
|
||||
sub_80ECB98: @ 80ECB98
|
||||
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);
|
||||
bool8 sub_800A4BC(void);
|
||||
bool32 sub_800B270(void);
|
||||
void sub_800B388(void);
|
||||
void sub_8054A28(void);
|
||||
|
||||
#endif // GUARD_LINK_H
|
||||
|
||||
@@ -210,6 +210,7 @@ SECTIONS {
|
||||
asm/battle_tower.o(.text);
|
||||
asm/battle_controller_oak.o(.text);
|
||||
asm/player_pc.o(.text);
|
||||
src/intro.o(.text);
|
||||
asm/intro.o(.text);
|
||||
asm/battle_anim_special.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