fldeff_flash.c
This commit is contained in:
@@ -1,964 +0,0 @@
|
|||||||
.include "asm/macros.inc"
|
|
||||||
.include "constants/constants.inc"
|
|
||||||
|
|
||||||
.syntax unified
|
|
||||||
|
|
||||||
.text
|
|
||||||
|
|
||||||
thumb_func_start SetUpFieldMove_Flash
|
|
||||||
SetUpFieldMove_Flash: @ 80C9B2C
|
|
||||||
push {lr}
|
|
||||||
ldr r0, _080C9B54 @ =gMapHeader
|
|
||||||
ldrb r0, [r0, 0x15]
|
|
||||||
cmp r0, 0x1
|
|
||||||
bne _080C9B6C
|
|
||||||
ldr r0, _080C9B58 @ =0x00000806
|
|
||||||
bl FlagGet
|
|
||||||
lsls r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
bne _080C9B6C
|
|
||||||
ldr r1, _080C9B5C @ =gFieldCallback2
|
|
||||||
ldr r0, _080C9B60 @ =FieldCallback_PrepareFadeInFromMenu
|
|
||||||
str r0, [r1]
|
|
||||||
ldr r1, _080C9B64 @ =gPostMenuFieldCallback
|
|
||||||
ldr r0, _080C9B68 @ =sub_80C9B74
|
|
||||||
str r0, [r1]
|
|
||||||
movs r0, 0x1
|
|
||||||
b _080C9B6E
|
|
||||||
.align 2, 0
|
|
||||||
_080C9B54: .4byte gMapHeader
|
|
||||||
_080C9B58: .4byte 0x00000806
|
|
||||||
_080C9B5C: .4byte gFieldCallback2
|
|
||||||
_080C9B60: .4byte FieldCallback_PrepareFadeInFromMenu
|
|
||||||
_080C9B64: .4byte gPostMenuFieldCallback
|
|
||||||
_080C9B68: .4byte sub_80C9B74
|
|
||||||
_080C9B6C:
|
|
||||||
movs r0, 0
|
|
||||||
_080C9B6E:
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end SetUpFieldMove_Flash
|
|
||||||
|
|
||||||
thumb_func_start sub_80C9B74
|
|
||||||
sub_80C9B74: @ 80C9B74
|
|
||||||
push {r4,lr}
|
|
||||||
bl CreateFieldEffectShowMon
|
|
||||||
adds r4, r0, 0
|
|
||||||
lsls r4, 24
|
|
||||||
lsrs r4, 24
|
|
||||||
bl GetCursorSelectionMonId
|
|
||||||
ldr r1, _080C9BA4 @ =gFieldEffectArguments
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
str r0, [r1]
|
|
||||||
ldr r1, _080C9BA8 @ =gTasks
|
|
||||||
lsls r0, r4, 2
|
|
||||||
adds r0, r4
|
|
||||||
lsls r0, 3
|
|
||||||
adds r0, r1
|
|
||||||
ldr r2, _080C9BAC @ =sub_80C9BB0
|
|
||||||
lsrs r1, r2, 16
|
|
||||||
strh r1, [r0, 0x18]
|
|
||||||
strh r2, [r0, 0x1A]
|
|
||||||
pop {r4}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_080C9BA4: .4byte gFieldEffectArguments
|
|
||||||
_080C9BA8: .4byte gTasks
|
|
||||||
_080C9BAC: .4byte sub_80C9BB0
|
|
||||||
thumb_func_end sub_80C9B74
|
|
||||||
|
|
||||||
thumb_func_start sub_80C9BB0
|
|
||||||
sub_80C9BB0: @ 80C9BB0
|
|
||||||
push {lr}
|
|
||||||
movs r0, 0xC8
|
|
||||||
bl PlaySE
|
|
||||||
ldr r0, _080C9BC8 @ =0x00000806
|
|
||||||
bl FlagSet
|
|
||||||
ldr r0, _080C9BCC @ =EventScript_FldEffFlash
|
|
||||||
bl ScriptContext1_SetupScript
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_080C9BC8: .4byte 0x00000806
|
|
||||||
_080C9BCC: .4byte EventScript_FldEffFlash
|
|
||||||
thumb_func_end sub_80C9BB0
|
|
||||||
|
|
||||||
thumb_func_start sub_80C9BD0
|
|
||||||
sub_80C9BD0: @ 80C9BD0
|
|
||||||
push {lr}
|
|
||||||
bl RunTasks
|
|
||||||
bl AnimateSprites
|
|
||||||
bl BuildOamBuffer
|
|
||||||
bl UpdatePaletteFade
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
thumb_func_end sub_80C9BD0
|
|
||||||
|
|
||||||
thumb_func_start sub_80C9BE8
|
|
||||||
sub_80C9BE8: @ 80C9BE8
|
|
||||||
push {lr}
|
|
||||||
bl LoadOam
|
|
||||||
bl ProcessSpriteCopyRequests
|
|
||||||
bl TransferPlttBuffer
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
thumb_func_end sub_80C9BE8
|
|
||||||
|
|
||||||
thumb_func_start sub_80C9BFC
|
|
||||||
sub_80C9BFC: @ 80C9BFC
|
|
||||||
push {lr}
|
|
||||||
sub sp, 0x8
|
|
||||||
movs r0, 0
|
|
||||||
bl SetVBlankCallback
|
|
||||||
movs r0, 0
|
|
||||||
movs r1, 0
|
|
||||||
bl SetGpuReg
|
|
||||||
movs r0, 0xC
|
|
||||||
movs r1, 0
|
|
||||||
bl SetGpuReg
|
|
||||||
movs r0, 0xA
|
|
||||||
movs r1, 0
|
|
||||||
bl SetGpuReg
|
|
||||||
movs r0, 0x8
|
|
||||||
movs r1, 0
|
|
||||||
bl SetGpuReg
|
|
||||||
movs r0, 0x18
|
|
||||||
movs r1, 0
|
|
||||||
bl SetGpuReg
|
|
||||||
movs r0, 0x1A
|
|
||||||
movs r1, 0
|
|
||||||
bl SetGpuReg
|
|
||||||
movs r0, 0x14
|
|
||||||
movs r1, 0
|
|
||||||
bl SetGpuReg
|
|
||||||
movs r0, 0x16
|
|
||||||
movs r1, 0
|
|
||||||
bl SetGpuReg
|
|
||||||
movs r0, 0x10
|
|
||||||
movs r1, 0
|
|
||||||
bl SetGpuReg
|
|
||||||
movs r0, 0x12
|
|
||||||
movs r1, 0
|
|
||||||
bl SetGpuReg
|
|
||||||
mov r1, sp
|
|
||||||
movs r0, 0
|
|
||||||
strh r0, [r1]
|
|
||||||
ldr r1, _080C9CC8 @ =0x040000d4
|
|
||||||
mov r0, sp
|
|
||||||
str r0, [r1]
|
|
||||||
movs r0, 0xC0
|
|
||||||
lsls r0, 19
|
|
||||||
str r0, [r1, 0x4]
|
|
||||||
ldr r0, _080C9CCC @ =0x8100c000
|
|
||||||
str r0, [r1, 0x8]
|
|
||||||
ldr r0, [r1, 0x8]
|
|
||||||
movs r2, 0
|
|
||||||
str r2, [sp, 0x4]
|
|
||||||
add r0, sp, 0x4
|
|
||||||
str r0, [r1]
|
|
||||||
movs r0, 0xE0
|
|
||||||
lsls r0, 19
|
|
||||||
str r0, [r1, 0x4]
|
|
||||||
ldr r0, _080C9CD0 @ =0x85000100
|
|
||||||
str r0, [r1, 0x8]
|
|
||||||
ldr r0, [r1, 0x8]
|
|
||||||
mov r0, sp
|
|
||||||
strh r2, [r0]
|
|
||||||
str r0, [r1]
|
|
||||||
ldr r0, _080C9CD4 @ =0x05000002
|
|
||||||
str r0, [r1, 0x4]
|
|
||||||
ldr r0, _080C9CD8 @ =0x810001ff
|
|
||||||
str r0, [r1, 0x8]
|
|
||||||
ldr r0, [r1, 0x8]
|
|
||||||
bl ResetPaletteFade
|
|
||||||
bl ResetTasks
|
|
||||||
bl ResetSpriteData
|
|
||||||
movs r0, 0x1
|
|
||||||
bl EnableInterrupts
|
|
||||||
ldr r0, _080C9CDC @ =sub_80C9BE8
|
|
||||||
bl SetVBlankCallback
|
|
||||||
ldr r0, _080C9CE0 @ =sub_80C9BD0
|
|
||||||
bl SetMainCallback2
|
|
||||||
bl sub_80C9CE8
|
|
||||||
lsls r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
bne _080C9CC2
|
|
||||||
ldr r0, _080C9CE4 @ =gMain
|
|
||||||
ldr r0, [r0, 0x8]
|
|
||||||
bl SetMainCallback2
|
|
||||||
_080C9CC2:
|
|
||||||
add sp, 0x8
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_080C9CC8: .4byte 0x040000d4
|
|
||||||
_080C9CCC: .4byte 0x8100c000
|
|
||||||
_080C9CD0: .4byte 0x85000100
|
|
||||||
_080C9CD4: .4byte 0x05000002
|
|
||||||
_080C9CD8: .4byte 0x810001ff
|
|
||||||
_080C9CDC: .4byte sub_80C9BE8
|
|
||||||
_080C9CE0: .4byte sub_80C9BD0
|
|
||||||
_080C9CE4: .4byte gMain
|
|
||||||
thumb_func_end sub_80C9BFC
|
|
||||||
|
|
||||||
thumb_func_start sub_80C9CE8
|
|
||||||
sub_80C9CE8: @ 80C9CE8
|
|
||||||
push {r4-r7,lr}
|
|
||||||
bl get_map_light_from_warp0
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r7, r0, 24
|
|
||||||
bl GetCurrentMapType
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r6, r0, 24
|
|
||||||
movs r4, 0
|
|
||||||
bl sub_80561B4
|
|
||||||
ldr r5, _080C9D24 @ =gMapHeader
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
ldrb r1, [r5, 0x14]
|
|
||||||
cmp r0, r1
|
|
||||||
beq _080C9D36
|
|
||||||
ldrb r0, [r5, 0x14]
|
|
||||||
movs r1, 0
|
|
||||||
bl sub_80F8154
|
|
||||||
cmp r0, 0x1
|
|
||||||
bne _080C9D36
|
|
||||||
ldrb r0, [r5, 0x14]
|
|
||||||
bl sub_80CA160
|
|
||||||
movs r0, 0x1
|
|
||||||
b _080C9D70
|
|
||||||
.align 2, 0
|
|
||||||
_080C9D24: .4byte gMapHeader
|
|
||||||
_080C9D28:
|
|
||||||
adds r0, r3, 0x4
|
|
||||||
adds r0, r2, r0
|
|
||||||
ldr r0, [r0]
|
|
||||||
bl _call_via_r0
|
|
||||||
movs r0, 0x1
|
|
||||||
b _080C9D70
|
|
||||||
_080C9D36:
|
|
||||||
ldr r5, _080C9D78 @ =gUnknown_83F5738
|
|
||||||
lsls r1, r4, 1
|
|
||||||
adds r0, r1, r4
|
|
||||||
lsls r0, 2
|
|
||||||
adds r0, r5
|
|
||||||
ldrb r0, [r0]
|
|
||||||
cmp r0, 0
|
|
||||||
beq _080C9D6E
|
|
||||||
adds r3, r5, 0
|
|
||||||
_080C9D48:
|
|
||||||
adds r0, r1, r4
|
|
||||||
lsls r2, r0, 2
|
|
||||||
adds r1, r2, r3
|
|
||||||
ldrb r0, [r1]
|
|
||||||
cmp r0, r7
|
|
||||||
bne _080C9D5A
|
|
||||||
ldrb r0, [r1, 0x1]
|
|
||||||
cmp r0, r6
|
|
||||||
beq _080C9D28
|
|
||||||
_080C9D5A:
|
|
||||||
adds r0, r4, 0x1
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r4, r0, 24
|
|
||||||
lsls r1, r4, 1
|
|
||||||
adds r0, r1, r4
|
|
||||||
lsls r0, 2
|
|
||||||
adds r0, r5
|
|
||||||
ldrb r0, [r0]
|
|
||||||
cmp r0, 0
|
|
||||||
bne _080C9D48
|
|
||||||
_080C9D6E:
|
|
||||||
movs r0, 0
|
|
||||||
_080C9D70:
|
|
||||||
pop {r4-r7}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
.align 2, 0
|
|
||||||
_080C9D78: .4byte gUnknown_83F5738
|
|
||||||
thumb_func_end sub_80C9CE8
|
|
||||||
|
|
||||||
thumb_func_start sub_80C9D7C
|
|
||||||
sub_80C9D7C: @ 80C9D7C
|
|
||||||
push {r4-r6,lr}
|
|
||||||
lsls r0, 24
|
|
||||||
lsls r1, 24
|
|
||||||
lsrs r5, r0, 24
|
|
||||||
lsrs r4, r1, 24
|
|
||||||
movs r3, 0
|
|
||||||
ldr r1, _080C9DAC @ =gUnknown_83F5738
|
|
||||||
ldrb r0, [r1]
|
|
||||||
cmp r0, 0
|
|
||||||
beq _080C9DC4
|
|
||||||
adds r6, r1, 0
|
|
||||||
_080C9D92:
|
|
||||||
lsls r0, r3, 1
|
|
||||||
adds r0, r3
|
|
||||||
lsls r0, 2
|
|
||||||
adds r2, r0, r6
|
|
||||||
ldrb r0, [r2]
|
|
||||||
cmp r0, r5
|
|
||||||
bne _080C9DB0
|
|
||||||
ldrb r0, [r2, 0x1]
|
|
||||||
cmp r0, r4
|
|
||||||
bne _080C9DB0
|
|
||||||
ldrb r0, [r2, 0x2]
|
|
||||||
b _080C9DC6
|
|
||||||
.align 2, 0
|
|
||||||
_080C9DAC: .4byte gUnknown_83F5738
|
|
||||||
_080C9DB0:
|
|
||||||
adds r0, r3, 0x1
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r3, r0, 24
|
|
||||||
lsls r0, r3, 1
|
|
||||||
adds r0, r3
|
|
||||||
lsls r0, 2
|
|
||||||
adds r0, r1
|
|
||||||
ldrb r0, [r0]
|
|
||||||
cmp r0, 0
|
|
||||||
bne _080C9D92
|
|
||||||
_080C9DC4:
|
|
||||||
movs r0, 0
|
|
||||||
_080C9DC6:
|
|
||||||
pop {r4-r6}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end sub_80C9D7C
|
|
||||||
|
|
||||||
thumb_func_start sub_80C9DCC
|
|
||||||
sub_80C9DCC: @ 80C9DCC
|
|
||||||
push {r4-r6,lr}
|
|
||||||
lsls r0, 24
|
|
||||||
lsls r1, 24
|
|
||||||
lsrs r5, r0, 24
|
|
||||||
lsrs r4, r1, 24
|
|
||||||
movs r3, 0
|
|
||||||
ldr r1, _080C9DFC @ =gUnknown_83F5738
|
|
||||||
ldrb r0, [r1]
|
|
||||||
cmp r0, 0
|
|
||||||
beq _080C9E14
|
|
||||||
adds r6, r1, 0
|
|
||||||
_080C9DE2:
|
|
||||||
lsls r0, r3, 1
|
|
||||||
adds r0, r3
|
|
||||||
lsls r0, 2
|
|
||||||
adds r2, r0, r6
|
|
||||||
ldrb r0, [r2]
|
|
||||||
cmp r0, r5
|
|
||||||
bne _080C9E00
|
|
||||||
ldrb r0, [r2, 0x1]
|
|
||||||
cmp r0, r4
|
|
||||||
bne _080C9E00
|
|
||||||
ldrb r0, [r2, 0x3]
|
|
||||||
b _080C9E16
|
|
||||||
.align 2, 0
|
|
||||||
_080C9DFC: .4byte gUnknown_83F5738
|
|
||||||
_080C9E00:
|
|
||||||
adds r0, r3, 0x1
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r3, r0, 24
|
|
||||||
lsls r0, r3, 1
|
|
||||||
adds r0, r3
|
|
||||||
lsls r0, 2
|
|
||||||
adds r0, r1
|
|
||||||
ldrb r0, [r0]
|
|
||||||
cmp r0, 0
|
|
||||||
bne _080C9DE2
|
|
||||||
_080C9E14:
|
|
||||||
movs r0, 0
|
|
||||||
_080C9E16:
|
|
||||||
pop {r4-r6}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end sub_80C9DCC
|
|
||||||
|
|
||||||
thumb_func_start sub_80C9E1C
|
|
||||||
sub_80C9E1C: @ 80C9E1C
|
|
||||||
push {lr}
|
|
||||||
ldr r0, _080C9E2C @ =sub_80C9E30
|
|
||||||
movs r1, 0
|
|
||||||
bl CreateTask
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_080C9E2C: .4byte sub_80C9E30
|
|
||||||
thumb_func_end sub_80C9E1C
|
|
||||||
|
|
||||||
thumb_func_start sub_80C9E30
|
|
||||||
sub_80C9E30: @ 80C9E30
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
ldr r2, _080C9E44 @ =gTasks
|
|
||||||
lsls r1, r0, 2
|
|
||||||
adds r1, r0
|
|
||||||
lsls r1, 3
|
|
||||||
adds r1, r2
|
|
||||||
ldr r0, _080C9E48 @ =sub_80C9E4C
|
|
||||||
str r0, [r1]
|
|
||||||
bx lr
|
|
||||||
.align 2, 0
|
|
||||||
_080C9E44: .4byte gTasks
|
|
||||||
_080C9E48: .4byte sub_80C9E4C
|
|
||||||
thumb_func_end sub_80C9E30
|
|
||||||
|
|
||||||
thumb_func_start sub_80C9E4C
|
|
||||||
sub_80C9E4C: @ 80C9E4C
|
|
||||||
push {r4,lr}
|
|
||||||
adds r4, r0, 0
|
|
||||||
lsls r4, 24
|
|
||||||
lsrs r4, 24
|
|
||||||
movs r0, 0
|
|
||||||
movs r1, 0
|
|
||||||
bl SetGpuReg
|
|
||||||
ldr r0, _080C9EC8 @ =gUnknown_83F5A44
|
|
||||||
ldr r1, _080C9ECC @ =0x0600c000
|
|
||||||
bl LZ77UnCompVram
|
|
||||||
ldr r0, _080C9ED0 @ =gUnknown_83F5864
|
|
||||||
ldr r1, _080C9ED4 @ =0x0600f800
|
|
||||||
bl LZ77UnCompVram
|
|
||||||
ldr r0, _080C9ED8 @ =gUnknown_83F5804
|
|
||||||
movs r1, 0xE0
|
|
||||||
movs r2, 0x20
|
|
||||||
bl LoadPalette
|
|
||||||
ldr r0, _080C9EDC @ =gUnknown_83F5844 + 0x10
|
|
||||||
movs r1, 0xE0
|
|
||||||
movs r2, 0x10
|
|
||||||
bl LoadPalette
|
|
||||||
ldr r1, _080C9EE0 @ =0x00003e41
|
|
||||||
movs r0, 0x50
|
|
||||||
bl SetGpuReg
|
|
||||||
movs r0, 0x52
|
|
||||||
movs r1, 0
|
|
||||||
bl SetGpuReg
|
|
||||||
movs r0, 0x54
|
|
||||||
movs r1, 0
|
|
||||||
bl SetGpuReg
|
|
||||||
ldr r1, _080C9EE4 @ =0x00001f0c =BGCNT_PRIORITY(0) | BGCNT_CHARBASE(3) | BGCNT_SCREENBASE(31)
|
|
||||||
movs r0, 0x8
|
|
||||||
bl SetGpuReg
|
|
||||||
movs r1, 0x8A
|
|
||||||
lsls r1, 5
|
|
||||||
movs r0, 0
|
|
||||||
bl SetGpuReg
|
|
||||||
ldr r1, _080C9EE8 @ =gTasks
|
|
||||||
lsls r0, r4, 2
|
|
||||||
adds r0, r4
|
|
||||||
lsls r0, 3
|
|
||||||
adds r0, r1
|
|
||||||
ldr r1, _080C9EEC @ =sub_80C9EF0
|
|
||||||
str r1, [r0]
|
|
||||||
movs r2, 0
|
|
||||||
movs r1, 0x10
|
|
||||||
strh r1, [r0, 0x8]
|
|
||||||
strh r2, [r0, 0xA]
|
|
||||||
pop {r4}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_080C9EC8: .4byte gUnknown_83F5A44
|
|
||||||
_080C9ECC: .4byte 0x0600c000
|
|
||||||
_080C9ED0: .4byte gUnknown_83F5864
|
|
||||||
_080C9ED4: .4byte 0x0600f800
|
|
||||||
_080C9ED8: .4byte gUnknown_83F5804
|
|
||||||
_080C9EDC: .4byte gUnknown_83F5844 + 0x10
|
|
||||||
_080C9EE0: .4byte 0x00003e41
|
|
||||||
_080C9EE4: .4byte 0x00001f0c
|
|
||||||
_080C9EE8: .4byte gTasks
|
|
||||||
_080C9EEC: .4byte sub_80C9EF0
|
|
||||||
thumb_func_end sub_80C9E4C
|
|
||||||
|
|
||||||
thumb_func_start sub_80C9EF0
|
|
||||||
sub_80C9EF0: @ 80C9EF0
|
|
||||||
push {r4,r5,lr}
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
ldr r2, _080C9F20 @ =gTasks
|
|
||||||
lsls r1, r0, 2
|
|
||||||
adds r1, r0
|
|
||||||
lsls r1, 3
|
|
||||||
adds r5, r1, r2
|
|
||||||
ldrh r4, [r5, 0xA]
|
|
||||||
movs r0, 0x80
|
|
||||||
lsls r0, 5
|
|
||||||
adds r1, r4, r0
|
|
||||||
lsls r1, 16
|
|
||||||
lsrs r1, 16
|
|
||||||
movs r0, 0x52
|
|
||||||
bl SetGpuReg
|
|
||||||
cmp r4, 0x10
|
|
||||||
bhi _080C9F24
|
|
||||||
ldrh r0, [r5, 0xA]
|
|
||||||
adds r0, 0x1
|
|
||||||
strh r0, [r5, 0xA]
|
|
||||||
b _080C9F2C
|
|
||||||
.align 2, 0
|
|
||||||
_080C9F20: .4byte gTasks
|
|
||||||
_080C9F24:
|
|
||||||
movs r0, 0
|
|
||||||
strh r0, [r5, 0xC]
|
|
||||||
ldr r0, _080C9F34 @ =sub_80C9F38
|
|
||||||
str r0, [r5]
|
|
||||||
_080C9F2C:
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_080C9F34: .4byte sub_80C9F38
|
|
||||||
thumb_func_end sub_80C9EF0
|
|
||||||
|
|
||||||
thumb_func_start sub_80C9F38
|
|
||||||
sub_80C9F38: @ 80C9F38
|
|
||||||
push {r4,lr}
|
|
||||||
adds r4, r0, 0
|
|
||||||
lsls r4, 24
|
|
||||||
lsrs r4, 24
|
|
||||||
ldr r1, _080C9F74 @ =0x00001010
|
|
||||||
movs r0, 0x52
|
|
||||||
bl SetGpuReg
|
|
||||||
ldr r1, _080C9F78 @ =gTasks
|
|
||||||
lsls r0, r4, 2
|
|
||||||
adds r0, r4
|
|
||||||
lsls r0, 3
|
|
||||||
adds r4, r0, r1
|
|
||||||
ldrh r1, [r4, 0xC]
|
|
||||||
cmp r1, 0x7
|
|
||||||
bhi _080C9F80
|
|
||||||
adds r0, r1, 0x1
|
|
||||||
strh r0, [r4, 0xC]
|
|
||||||
lsls r1, 1
|
|
||||||
ldr r0, _080C9F7C @ =gUnknown_83F5844 + 0x10
|
|
||||||
adds r0, r1, r0
|
|
||||||
movs r2, 0x10
|
|
||||||
subs r2, r1
|
|
||||||
lsls r2, 16
|
|
||||||
lsrs r2, 16
|
|
||||||
movs r1, 0xE0
|
|
||||||
bl LoadPalette
|
|
||||||
b _080C9F92
|
|
||||||
.align 2, 0
|
|
||||||
_080C9F74: .4byte 0x00001010
|
|
||||||
_080C9F78: .4byte gTasks
|
|
||||||
_080C9F7C: .4byte gUnknown_83F5844 + 0x10
|
|
||||||
_080C9F80:
|
|
||||||
ldr r0, _080C9F98 @ =gUnknown_83F5804
|
|
||||||
movs r1, 0
|
|
||||||
movs r2, 0x20
|
|
||||||
bl LoadPalette
|
|
||||||
ldr r0, _080C9F9C @ =sub_80C9FA0
|
|
||||||
str r0, [r4]
|
|
||||||
movs r0, 0x8
|
|
||||||
strh r0, [r4, 0xC]
|
|
||||||
_080C9F92:
|
|
||||||
pop {r4}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_080C9F98: .4byte gUnknown_83F5804
|
|
||||||
_080C9F9C: .4byte sub_80C9FA0
|
|
||||||
thumb_func_end sub_80C9F38
|
|
||||||
|
|
||||||
thumb_func_start sub_80C9FA0
|
|
||||||
sub_80C9FA0: @ 80C9FA0
|
|
||||||
push {lr}
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
ldr r2, _080C9FC0 @ =gTasks
|
|
||||||
lsls r1, r0, 2
|
|
||||||
adds r1, r0
|
|
||||||
lsls r1, 3
|
|
||||||
adds r1, r2
|
|
||||||
ldrh r2, [r1, 0xC]
|
|
||||||
movs r3, 0xC
|
|
||||||
ldrsh r0, [r1, r3]
|
|
||||||
cmp r0, 0
|
|
||||||
beq _080C9FC4
|
|
||||||
subs r0, r2, 0x1
|
|
||||||
strh r0, [r1, 0xC]
|
|
||||||
b _080C9FCC
|
|
||||||
.align 2, 0
|
|
||||||
_080C9FC0: .4byte gTasks
|
|
||||||
_080C9FC4:
|
|
||||||
ldr r0, _080C9FD0 @ =gMain
|
|
||||||
ldr r0, [r0, 0x8]
|
|
||||||
bl SetMainCallback2
|
|
||||||
_080C9FCC:
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_080C9FD0: .4byte gMain
|
|
||||||
thumb_func_end sub_80C9FA0
|
|
||||||
|
|
||||||
thumb_func_start sub_80C9FD4
|
|
||||||
sub_80C9FD4: @ 80C9FD4
|
|
||||||
push {lr}
|
|
||||||
ldr r0, _080C9FE4 @ =sub_80C9FE8
|
|
||||||
movs r1, 0
|
|
||||||
bl CreateTask
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_080C9FE4: .4byte sub_80C9FE8
|
|
||||||
thumb_func_end sub_80C9FD4
|
|
||||||
|
|
||||||
thumb_func_start sub_80C9FE8
|
|
||||||
sub_80C9FE8: @ 80C9FE8
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
ldr r2, _080C9FFC @ =gTasks
|
|
||||||
lsls r1, r0, 2
|
|
||||||
adds r1, r0
|
|
||||||
lsls r1, 3
|
|
||||||
adds r1, r2
|
|
||||||
ldr r0, _080CA000 @ =sub_80CA004
|
|
||||||
str r0, [r1]
|
|
||||||
bx lr
|
|
||||||
.align 2, 0
|
|
||||||
_080C9FFC: .4byte gTasks
|
|
||||||
_080CA000: .4byte sub_80CA004
|
|
||||||
thumb_func_end sub_80C9FE8
|
|
||||||
|
|
||||||
thumb_func_start sub_80CA004
|
|
||||||
sub_80CA004: @ 80CA004
|
|
||||||
push {r4,lr}
|
|
||||||
adds r4, r0, 0
|
|
||||||
lsls r4, 24
|
|
||||||
lsrs r4, 24
|
|
||||||
movs r0, 0
|
|
||||||
movs r1, 0
|
|
||||||
bl SetGpuReg
|
|
||||||
ldr r0, _080CA080 @ =gUnknown_83F5A44
|
|
||||||
ldr r1, _080CA084 @ =0x0600c000
|
|
||||||
bl LZ77UnCompVram
|
|
||||||
ldr r0, _080CA088 @ =gUnknown_83F5864
|
|
||||||
ldr r1, _080CA08C @ =0x0600f800
|
|
||||||
bl LZ77UnCompVram
|
|
||||||
movs r0, 0x50
|
|
||||||
movs r1, 0
|
|
||||||
bl SetGpuReg
|
|
||||||
movs r0, 0x52
|
|
||||||
movs r1, 0
|
|
||||||
bl SetGpuReg
|
|
||||||
movs r0, 0x54
|
|
||||||
movs r1, 0
|
|
||||||
bl SetGpuReg
|
|
||||||
ldr r1, _080CA090 @ =0x00001f0c
|
|
||||||
movs r0, 0x8
|
|
||||||
bl SetGpuReg
|
|
||||||
movs r1, 0x8A
|
|
||||||
lsls r1, 5
|
|
||||||
movs r0, 0
|
|
||||||
bl SetGpuReg
|
|
||||||
ldr r0, _080CA094 @ =gUnknown_83F5804
|
|
||||||
movs r1, 0xE0
|
|
||||||
movs r2, 0x20
|
|
||||||
bl LoadPalette
|
|
||||||
ldr r0, _080CA098 @ =gUnknown_83F5824
|
|
||||||
movs r1, 0
|
|
||||||
movs r2, 0x20
|
|
||||||
bl LoadPalette
|
|
||||||
ldr r1, _080CA09C @ =gTasks
|
|
||||||
lsls r0, r4, 2
|
|
||||||
adds r0, r4
|
|
||||||
lsls r0, 3
|
|
||||||
adds r0, r1
|
|
||||||
ldr r1, _080CA0A0 @ =sub_80CA0A4
|
|
||||||
str r1, [r0]
|
|
||||||
movs r2, 0
|
|
||||||
movs r1, 0x10
|
|
||||||
strh r1, [r0, 0x8]
|
|
||||||
strh r2, [r0, 0xA]
|
|
||||||
strh r2, [r0, 0xC]
|
|
||||||
pop {r4}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_080CA080: .4byte gUnknown_83F5A44
|
|
||||||
_080CA084: .4byte 0x0600c000
|
|
||||||
_080CA088: .4byte gUnknown_83F5864
|
|
||||||
_080CA08C: .4byte 0x0600f800
|
|
||||||
_080CA090: .4byte 0x00001f0c
|
|
||||||
_080CA094: .4byte gUnknown_83F5804
|
|
||||||
_080CA098: .4byte gUnknown_83F5824
|
|
||||||
_080CA09C: .4byte gTasks
|
|
||||||
_080CA0A0: .4byte sub_80CA0A4
|
|
||||||
thumb_func_end sub_80CA004
|
|
||||||
|
|
||||||
thumb_func_start sub_80CA0A4
|
|
||||||
sub_80CA0A4: @ 80CA0A4
|
|
||||||
push {r4,lr}
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
ldr r2, _080CA0D8 @ =gTasks
|
|
||||||
lsls r1, r0, 2
|
|
||||||
adds r1, r0
|
|
||||||
lsls r1, 3
|
|
||||||
adds r4, r1, r2
|
|
||||||
ldrh r1, [r4, 0xC]
|
|
||||||
cmp r1, 0xF
|
|
||||||
bhi _080CA0E0
|
|
||||||
adds r2, r1, 0x1
|
|
||||||
adds r0, r2, 0x1
|
|
||||||
strh r0, [r4, 0xC]
|
|
||||||
movs r0, 0xF
|
|
||||||
subs r0, r1
|
|
||||||
lsls r0, 1
|
|
||||||
ldr r1, _080CA0DC @ =gUnknown_83F5844
|
|
||||||
adds r0, r1
|
|
||||||
lsls r2, 17
|
|
||||||
lsrs r2, 16
|
|
||||||
movs r1, 0xE0
|
|
||||||
bl LoadPalette
|
|
||||||
b _080CA0F4
|
|
||||||
.align 2, 0
|
|
||||||
_080CA0D8: .4byte gTasks
|
|
||||||
_080CA0DC: .4byte gUnknown_83F5844
|
|
||||||
_080CA0E0:
|
|
||||||
ldr r1, _080CA0FC @ =0x00001010
|
|
||||||
movs r0, 0x52
|
|
||||||
bl SetGpuReg
|
|
||||||
ldr r1, _080CA100 @ =0x00003e41
|
|
||||||
movs r0, 0x50
|
|
||||||
bl SetGpuReg
|
|
||||||
ldr r0, _080CA104 @ =sub_80CA108
|
|
||||||
str r0, [r4]
|
|
||||||
_080CA0F4:
|
|
||||||
pop {r4}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_080CA0FC: .4byte 0x00001010
|
|
||||||
_080CA100: .4byte 0x00003e41
|
|
||||||
_080CA104: .4byte sub_80CA108
|
|
||||||
thumb_func_end sub_80CA0A4
|
|
||||||
|
|
||||||
thumb_func_start sub_80CA108
|
|
||||||
sub_80CA108: @ 80CA108
|
|
||||||
push {r4,r5,lr}
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
ldr r2, _080CA13C @ =gTasks
|
|
||||||
lsls r1, r0, 2
|
|
||||||
adds r1, r0
|
|
||||||
lsls r1, 3
|
|
||||||
adds r5, r1, r2
|
|
||||||
ldrh r0, [r5, 0xA]
|
|
||||||
movs r1, 0x10
|
|
||||||
subs r1, r0
|
|
||||||
lsls r1, 16
|
|
||||||
lsrs r4, r1, 16
|
|
||||||
movs r0, 0x80
|
|
||||||
lsls r0, 21
|
|
||||||
adds r1, r0
|
|
||||||
lsrs r1, 16
|
|
||||||
movs r0, 0x52
|
|
||||||
bl SetGpuReg
|
|
||||||
cmp r4, 0
|
|
||||||
beq _080CA140
|
|
||||||
ldrh r0, [r5, 0xA]
|
|
||||||
adds r0, 0x1
|
|
||||||
strh r0, [r5, 0xA]
|
|
||||||
b _080CA152
|
|
||||||
.align 2, 0
|
|
||||||
_080CA13C: .4byte gTasks
|
|
||||||
_080CA140:
|
|
||||||
ldr r0, _080CA158 @ =gUnknown_83F5824
|
|
||||||
movs r1, 0
|
|
||||||
movs r2, 0x20
|
|
||||||
bl LoadPalette
|
|
||||||
ldr r0, _080CA15C @ =gMain
|
|
||||||
ldr r0, [r0, 0x8]
|
|
||||||
bl SetMainCallback2
|
|
||||||
_080CA152:
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_080CA158: .4byte gUnknown_83F5824
|
|
||||||
_080CA15C: .4byte gMain
|
|
||||||
thumb_func_end sub_80CA108
|
|
||||||
|
|
||||||
thumb_func_start sub_80CA160
|
|
||||||
sub_80CA160: @ 80CA160
|
|
||||||
push {r4,lr}
|
|
||||||
adds r4, r0, 0
|
|
||||||
lsls r4, 24
|
|
||||||
lsrs r4, 24
|
|
||||||
ldr r0, _080CA188 @ =sub_80CA190
|
|
||||||
movs r1, 0
|
|
||||||
bl CreateTask
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
ldr r2, _080CA18C @ =gTasks
|
|
||||||
lsls r1, r0, 2
|
|
||||||
adds r1, r0
|
|
||||||
lsls r1, 3
|
|
||||||
adds r1, r2
|
|
||||||
strh r4, [r1, 0xE]
|
|
||||||
pop {r4}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_080CA188: .4byte sub_80CA190
|
|
||||||
_080CA18C: .4byte gTasks
|
|
||||||
thumb_func_end sub_80CA160
|
|
||||||
|
|
||||||
thumb_func_start sub_80CA190
|
|
||||||
sub_80CA190: @ 80CA190
|
|
||||||
push {r4-r6,lr}
|
|
||||||
sub sp, 0x4
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r5, r0, 24
|
|
||||||
lsls r0, r5, 2
|
|
||||||
adds r0, r5
|
|
||||||
lsls r0, 3
|
|
||||||
ldr r1, _080CA1B8 @ =gTasks+0x8
|
|
||||||
adds r4, r0, r1
|
|
||||||
movs r1, 0
|
|
||||||
ldrsh r0, [r4, r1]
|
|
||||||
cmp r0, 0x5
|
|
||||||
bls _080CA1AC
|
|
||||||
b _080CA2D2
|
|
||||||
_080CA1AC:
|
|
||||||
lsls r0, 2
|
|
||||||
ldr r1, _080CA1BC @ =_080CA1C0
|
|
||||||
adds r0, r1
|
|
||||||
ldr r0, [r0]
|
|
||||||
mov pc, r0
|
|
||||||
.align 2, 0
|
|
||||||
_080CA1B8: .4byte gTasks+0x8
|
|
||||||
_080CA1BC: .4byte _080CA1C0
|
|
||||||
.align 2, 0
|
|
||||||
_080CA1C0:
|
|
||||||
.4byte _080CA1D8
|
|
||||||
.4byte _080CA208
|
|
||||||
.4byte _080CA224
|
|
||||||
.4byte _080CA24E
|
|
||||||
.4byte _080CA262
|
|
||||||
.4byte _080CA2A4
|
|
||||||
_080CA1D8:
|
|
||||||
ldr r0, _080CA204 @ =gMain
|
|
||||||
ldr r2, [r0, 0xC]
|
|
||||||
adds r0, r5, 0
|
|
||||||
movs r1, 0x5
|
|
||||||
bl SetWordTaskArg
|
|
||||||
movs r0, 0
|
|
||||||
bl SetVBlankCallback
|
|
||||||
bl sub_80F8180
|
|
||||||
ldrb r0, [r4, 0x6]
|
|
||||||
bl sub_80F819C
|
|
||||||
movs r0, 0x1
|
|
||||||
negs r0, r0
|
|
||||||
movs r1, 0x10
|
|
||||||
movs r2, 0
|
|
||||||
bl BlendPalettes
|
|
||||||
b _080CA294
|
|
||||||
.align 2, 0
|
|
||||||
_080CA204: .4byte gMain
|
|
||||||
_080CA208:
|
|
||||||
bl sub_80F8258
|
|
||||||
cmp r0, 0
|
|
||||||
bne _080CA2D2
|
|
||||||
ldrb r0, [r4, 0x6]
|
|
||||||
bl sub_80F8318
|
|
||||||
strh r0, [r4, 0x8]
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
movs r1, 0x3
|
|
||||||
bl CopyWindowToVram
|
|
||||||
b _080CA294
|
|
||||||
_080CA224:
|
|
||||||
bl IsDma3ManagerBusyWithBgCopy
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
bne _080CA2D2
|
|
||||||
movs r1, 0x1
|
|
||||||
negs r1, r1
|
|
||||||
str r0, [sp]
|
|
||||||
adds r0, r1, 0
|
|
||||||
movs r2, 0x10
|
|
||||||
movs r3, 0
|
|
||||||
bl BeginNormalPaletteFade
|
|
||||||
adds r0, r5, 0
|
|
||||||
movs r1, 0x5
|
|
||||||
bl GetWordTaskArg
|
|
||||||
bl SetVBlankCallback
|
|
||||||
b _080CA294
|
|
||||||
_080CA24E:
|
|
||||||
bl UpdatePaletteFade
|
|
||||||
lsls r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
bne _080CA2D2
|
|
||||||
ldrb r0, [r4, 0x6]
|
|
||||||
bl sub_80F856C
|
|
||||||
strh r0, [r4, 0x4]
|
|
||||||
b _080CA294
|
|
||||||
_080CA262:
|
|
||||||
ldrh r0, [r4, 0x2]
|
|
||||||
adds r0, 0x1
|
|
||||||
strh r0, [r4, 0x2]
|
|
||||||
lsls r0, 16
|
|
||||||
asrs r0, 16
|
|
||||||
movs r2, 0x4
|
|
||||||
ldrsh r1, [r4, r2]
|
|
||||||
cmp r0, r1
|
|
||||||
bgt _080CA280
|
|
||||||
ldr r0, _080CA29C @ =gMain
|
|
||||||
ldrh r1, [r0, 0x2C]
|
|
||||||
movs r0, 0x2
|
|
||||||
ands r0, r1
|
|
||||||
cmp r0, 0
|
|
||||||
beq _080CA2D2
|
|
||||||
_080CA280:
|
|
||||||
movs r0, 0x1
|
|
||||||
negs r0, r0
|
|
||||||
movs r1, 0x2
|
|
||||||
negs r1, r1
|
|
||||||
ldr r2, _080CA2A0 @ =0x00007fff
|
|
||||||
str r2, [sp]
|
|
||||||
movs r2, 0
|
|
||||||
movs r3, 0x10
|
|
||||||
bl BeginNormalPaletteFade
|
|
||||||
_080CA294:
|
|
||||||
ldrh r0, [r4]
|
|
||||||
adds r0, 0x1
|
|
||||||
strh r0, [r4]
|
|
||||||
b _080CA2D2
|
|
||||||
.align 2, 0
|
|
||||||
_080CA29C: .4byte gMain
|
|
||||||
_080CA2A0: .4byte 0x00007fff
|
|
||||||
_080CA2A4:
|
|
||||||
bl UpdatePaletteFade
|
|
||||||
lsls r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
bne _080CA2D2
|
|
||||||
lsls r6, r5, 2
|
|
||||||
movs r1, 0
|
|
||||||
adds r0, r4, 0
|
|
||||||
adds r0, 0x1E
|
|
||||||
_080CA2B6:
|
|
||||||
strh r1, [r0]
|
|
||||||
subs r0, 0x2
|
|
||||||
cmp r0, r4
|
|
||||||
bge _080CA2B6
|
|
||||||
movs r1, 0x8
|
|
||||||
ldrsh r0, [r4, r1]
|
|
||||||
bl sub_80F8234
|
|
||||||
ldr r1, _080CA2DC @ =gTasks
|
|
||||||
adds r0, r6, r5
|
|
||||||
lsls r0, 3
|
|
||||||
adds r0, r1
|
|
||||||
ldr r1, _080CA2E0 @ =sub_80CA004
|
|
||||||
str r1, [r0]
|
|
||||||
_080CA2D2:
|
|
||||||
add sp, 0x4
|
|
||||||
pop {r4-r6}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_080CA2DC: .4byte gTasks
|
|
||||||
_080CA2E0: .4byte sub_80CA004
|
|
||||||
thumb_func_end sub_80CA190
|
|
||||||
|
|
||||||
.align 2, 0 @ Don't pad with nop.
|
|
||||||
@@ -1,74 +0,0 @@
|
|||||||
#include "constants/species.h"
|
|
||||||
#include "constants/items.h"
|
|
||||||
.include "asm/macros.inc"
|
|
||||||
.include "constants/constants.inc"
|
|
||||||
.section .rodata
|
|
||||||
.align 2
|
|
||||||
|
|
||||||
gUnknown_83F5738:: @ 83F5738
|
|
||||||
.byte 1, 4, 1, 0
|
|
||||||
.4byte sub_80C9FD4
|
|
||||||
.4byte sub_80CA160
|
|
||||||
.byte 2, 4, 1, 0
|
|
||||||
.4byte sub_80C9FD4
|
|
||||||
.4byte sub_80CA160
|
|
||||||
.byte 3, 4, 1, 0
|
|
||||||
.4byte sub_80C9FD4
|
|
||||||
.4byte sub_80CA160
|
|
||||||
.byte 5, 4, 1, 0
|
|
||||||
.4byte sub_80C9FD4
|
|
||||||
.4byte sub_80CA160
|
|
||||||
.byte 6, 4, 1, 0
|
|
||||||
.4byte sub_80C9FD4
|
|
||||||
.4byte sub_80CA160
|
|
||||||
.byte 7, 4, 1, 0
|
|
||||||
.4byte sub_80C9FD4
|
|
||||||
.4byte sub_80CA160
|
|
||||||
.byte 8, 4, 1, 0
|
|
||||||
.4byte sub_80C9FD4
|
|
||||||
.4byte sub_80CA160
|
|
||||||
.byte 9, 4, 1, 0
|
|
||||||
.4byte sub_80C9FD4
|
|
||||||
.4byte sub_80CA160
|
|
||||||
.byte 4, 1, 0, 1
|
|
||||||
.4byte sub_80C9E1C
|
|
||||||
.4byte sub_80CA160
|
|
||||||
.byte 4, 2, 0, 1
|
|
||||||
.4byte sub_80C9E1C
|
|
||||||
.4byte sub_80CA160
|
|
||||||
.byte 4, 3, 0, 1
|
|
||||||
.4byte sub_80C9E1C
|
|
||||||
.4byte sub_80CA160
|
|
||||||
.byte 4, 5, 0, 1
|
|
||||||
.4byte sub_80C9E1C
|
|
||||||
.4byte sub_80CA160
|
|
||||||
.byte 4, 6, 0, 1
|
|
||||||
.4byte sub_80C9E1C
|
|
||||||
.4byte sub_80CA160
|
|
||||||
.byte 4, 7, 0, 1
|
|
||||||
.4byte sub_80C9E1C
|
|
||||||
.4byte sub_80CA160
|
|
||||||
.byte 4, 8, 0, 1
|
|
||||||
.4byte sub_80C9E1C
|
|
||||||
.4byte sub_80CA160
|
|
||||||
.byte 4, 9, 0, 1
|
|
||||||
.4byte sub_80C9E1C
|
|
||||||
.4byte sub_80CA160
|
|
||||||
.byte 0, 0, 0, 0
|
|
||||||
.4byte NULL
|
|
||||||
.4byte NULL
|
|
||||||
|
|
||||||
gUnknown_83F5804:: @ 83F5804
|
|
||||||
.incbin "graphics/field_effects/flash_white.gbapal"
|
|
||||||
|
|
||||||
gUnknown_83F5824:: @ 83F5824
|
|
||||||
.incbin "graphics/field_effects/flash_black.gbapal"
|
|
||||||
|
|
||||||
gUnknown_83F5844:: @ 83F5844
|
|
||||||
.incbin "graphics/field_effects/flash_gradient.gbapal"
|
|
||||||
|
|
||||||
gUnknown_83F5864:: @ 83F5864
|
|
||||||
.incbin "graphics/field_effects/flash_effect_map.bin.lz"
|
|
||||||
|
|
||||||
gUnknown_83F5A44:: @ 83F5A44
|
|
||||||
.incbin "graphics/field_effects/flash_effect_tiles.4bpp.lz"
|
|
||||||
@@ -1209,4 +1209,7 @@ extern const u8 CableClub_Text_AwaitingLinkupBCancel[];
|
|||||||
extern const u8 CableClub_Text_StartLinkWithXPlayersAConfirmBCancel[];
|
extern const u8 CableClub_Text_StartLinkWithXPlayersAConfirmBCancel[];
|
||||||
extern const u8 CableClub_Text_PleaseWaitBCancel[];
|
extern const u8 CableClub_Text_PleaseWaitBCancel[];
|
||||||
|
|
||||||
|
// fldeff_flash
|
||||||
|
extern const u8 EventScript_FldEffFlash[];
|
||||||
|
|
||||||
#endif //GUARD_EVENT_SCRIPTS_H
|
#endif //GUARD_EVENT_SCRIPTS_H
|
||||||
|
|||||||
@@ -50,5 +50,10 @@ u16 sub_80F856C(u8 id);
|
|||||||
bool8 sub_80F8110(u8 mapsec, bool8 forceFirstTime);
|
bool8 sub_80F8110(u8 mapsec, bool8 forceFirstTime);
|
||||||
bool32 sub_80F83B0(void);
|
bool32 sub_80F83B0(void);
|
||||||
const struct MapPreviewScreen * GetDungeonMapPreviewScreenInfo(u8 mapsec);
|
const struct MapPreviewScreen * GetDungeonMapPreviewScreenInfo(u8 mapsec);
|
||||||
|
bool32 sub_80F8154(u8 mapsec, u8 forceFirstTime);
|
||||||
|
void sub_80F8180(void);
|
||||||
|
void sub_80F819C(u8 mapsec);
|
||||||
|
bool32 sub_80F8258(void);
|
||||||
|
void sub_80F8234(s32 windowId);
|
||||||
|
|
||||||
#endif //GUARD_MAP_PREVIEW_SCREEN_H
|
#endif //GUARD_MAP_PREVIEW_SCREEN_H
|
||||||
|
|||||||
@@ -192,6 +192,7 @@ void sub_8057F48(void);
|
|||||||
void SetMainCallback1(MainCallback cb);
|
void SetMainCallback1(MainCallback cb);
|
||||||
void CB1_Overworld(void);
|
void CB1_Overworld(void);
|
||||||
void sub_80568C4(void);
|
void sub_80568C4(void);
|
||||||
|
u8 sub_80561B4(void);
|
||||||
|
|
||||||
extern u16 gHeldKeyCodeToSend;
|
extern u16 gHeldKeyCodeToSend;
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -183,7 +183,7 @@ SECTIONS {
|
|||||||
src/battle_ai_script_commands.o(.text);
|
src/battle_ai_script_commands.o(.text);
|
||||||
src/fldeff_rocksmash.o(.text);
|
src/fldeff_rocksmash.o(.text);
|
||||||
src/fldeff_dig.o(.text);
|
src/fldeff_dig.o(.text);
|
||||||
asm/fldeff_flash.o(.text);
|
src/fldeff_flash.o(.text);
|
||||||
src/post_battle_event_funcs.o(.text);
|
src/post_battle_event_funcs.o(.text);
|
||||||
src/prof_pc.o(.text);
|
src/prof_pc.o(.text);
|
||||||
src/hof_pc.o(.text);
|
src/hof_pc.o(.text);
|
||||||
@@ -489,7 +489,7 @@ SECTIONS {
|
|||||||
src/region_map.o(.rodata);
|
src/region_map.o(.rodata);
|
||||||
src/image_processing_effects.o(.rodata);
|
src/image_processing_effects.o(.rodata);
|
||||||
src/battle_ai_script_commands.o(.rodata);
|
src/battle_ai_script_commands.o(.rodata);
|
||||||
data/fldeff_flash.o(.rodata);
|
src/fldeff_flash.o(.rodata);
|
||||||
src/field_specials.o(.rodata);
|
src/field_specials.o(.rodata);
|
||||||
src/battle_records.o(.rodata);
|
src/battle_records.o(.rodata);
|
||||||
src/evolution_scene.o(.rodata);
|
src/evolution_scene.o(.rodata);
|
||||||
|
|||||||
@@ -0,0 +1,476 @@
|
|||||||
|
#include "global.h"
|
||||||
|
#include "gflib.h"
|
||||||
|
#include "event_data.h"
|
||||||
|
#include "event_scripts.h"
|
||||||
|
#include "fldeff.h"
|
||||||
|
#include "field_effect.h"
|
||||||
|
#include "map_preview_screen.h"
|
||||||
|
#include "overworld.h"
|
||||||
|
#include "party_menu.h"
|
||||||
|
#include "script.h"
|
||||||
|
#include "constants/songs.h"
|
||||||
|
|
||||||
|
struct FlashStruct
|
||||||
|
{
|
||||||
|
u8 fromType;
|
||||||
|
u8 toType;
|
||||||
|
bool8 isEnter;
|
||||||
|
bool8 isExit;
|
||||||
|
void (*func1)(void);
|
||||||
|
void (*func2)(u8 mapSecId);
|
||||||
|
};
|
||||||
|
|
||||||
|
static void sub_80C9B74(void);
|
||||||
|
static void sub_80C9BB0(void);
|
||||||
|
static bool8 sub_80C9CE8(void);
|
||||||
|
static void sub_80C9E1C(void);
|
||||||
|
static void sub_80C9E30(u8 taskId);
|
||||||
|
static void sub_80C9E4C(u8 taskId);
|
||||||
|
static void sub_80C9EF0(u8 taskId);
|
||||||
|
static void sub_80C9F38(u8 taskId);
|
||||||
|
static void sub_80C9FA0(u8 taskId);
|
||||||
|
static void sub_80C9FD4(void);
|
||||||
|
static void sub_80C9FE8(u8 taskId);
|
||||||
|
static void sub_80CA004(u8 taskId);
|
||||||
|
static void sub_80CA0A4(u8 taskId);
|
||||||
|
static void sub_80CA108(u8 taskId);
|
||||||
|
static void sub_80CA160(u8 mapsecId);
|
||||||
|
static void sub_80CA190(u8 taskId);
|
||||||
|
|
||||||
|
static const struct FlashStruct gUnknown_83F5738[] = {
|
||||||
|
{
|
||||||
|
.fromType = 1,
|
||||||
|
.toType = 4,
|
||||||
|
.isEnter = TRUE,
|
||||||
|
.isExit = FALSE,
|
||||||
|
.func1 = sub_80C9FD4,
|
||||||
|
.func2 = sub_80CA160
|
||||||
|
}, {
|
||||||
|
.fromType = 2,
|
||||||
|
.toType = 4,
|
||||||
|
.isEnter = TRUE,
|
||||||
|
.isExit = FALSE,
|
||||||
|
.func1 = sub_80C9FD4,
|
||||||
|
.func2 = sub_80CA160
|
||||||
|
}, {
|
||||||
|
.fromType = 3,
|
||||||
|
.toType = 4,
|
||||||
|
.isEnter = TRUE,
|
||||||
|
.isExit = FALSE,
|
||||||
|
.func1 = sub_80C9FD4,
|
||||||
|
.func2 = sub_80CA160
|
||||||
|
}, {
|
||||||
|
.fromType = 5,
|
||||||
|
.toType = 4,
|
||||||
|
.isEnter = TRUE,
|
||||||
|
.isExit = FALSE,
|
||||||
|
.func1 = sub_80C9FD4,
|
||||||
|
.func2 = sub_80CA160
|
||||||
|
}, {
|
||||||
|
.fromType = 6,
|
||||||
|
.toType = 4,
|
||||||
|
.isEnter = TRUE,
|
||||||
|
.isExit = FALSE,
|
||||||
|
.func1 = sub_80C9FD4,
|
||||||
|
.func2 = sub_80CA160
|
||||||
|
}, {
|
||||||
|
.fromType = 7,
|
||||||
|
.toType = 4,
|
||||||
|
.isEnter = TRUE,
|
||||||
|
.isExit = FALSE,
|
||||||
|
.func1 = sub_80C9FD4,
|
||||||
|
.func2 = sub_80CA160
|
||||||
|
}, {
|
||||||
|
.fromType = 8,
|
||||||
|
.toType = 4,
|
||||||
|
.isEnter = TRUE,
|
||||||
|
.isExit = FALSE,
|
||||||
|
.func1 = sub_80C9FD4,
|
||||||
|
.func2 = sub_80CA160
|
||||||
|
}, {
|
||||||
|
.fromType = 9,
|
||||||
|
.toType = 4,
|
||||||
|
.isEnter = TRUE,
|
||||||
|
.isExit = FALSE,
|
||||||
|
.func1 = sub_80C9FD4,
|
||||||
|
.func2 = sub_80CA160
|
||||||
|
}, {
|
||||||
|
.fromType = 4,
|
||||||
|
.toType = 1,
|
||||||
|
.isEnter = FALSE,
|
||||||
|
.isExit = TRUE,
|
||||||
|
.func1 = sub_80C9E1C,
|
||||||
|
.func2 = sub_80CA160
|
||||||
|
}, {
|
||||||
|
.fromType = 4,
|
||||||
|
.toType = 2,
|
||||||
|
.isEnter = FALSE,
|
||||||
|
.isExit = TRUE,
|
||||||
|
.func1 = sub_80C9E1C,
|
||||||
|
.func2 = sub_80CA160
|
||||||
|
}, {
|
||||||
|
.fromType = 4,
|
||||||
|
.toType = 3,
|
||||||
|
.isEnter = FALSE,
|
||||||
|
.isExit = TRUE,
|
||||||
|
.func1 = sub_80C9E1C,
|
||||||
|
.func2 = sub_80CA160
|
||||||
|
}, {
|
||||||
|
.fromType = 4,
|
||||||
|
.toType = 5,
|
||||||
|
.isEnter = FALSE,
|
||||||
|
.isExit = TRUE,
|
||||||
|
.func1 = sub_80C9E1C,
|
||||||
|
.func2 = sub_80CA160
|
||||||
|
}, {
|
||||||
|
.fromType = 4,
|
||||||
|
.toType = 6,
|
||||||
|
.isEnter = FALSE,
|
||||||
|
.isExit = TRUE,
|
||||||
|
.func1 = sub_80C9E1C,
|
||||||
|
.func2 = sub_80CA160
|
||||||
|
}, {
|
||||||
|
.fromType = 4,
|
||||||
|
.toType = 7,
|
||||||
|
.isEnter = FALSE,
|
||||||
|
.isExit = TRUE,
|
||||||
|
.func1 = sub_80C9E1C,
|
||||||
|
.func2 = sub_80CA160
|
||||||
|
}, {
|
||||||
|
.fromType = 4,
|
||||||
|
.toType = 8,
|
||||||
|
.isEnter = FALSE,
|
||||||
|
.isExit = TRUE,
|
||||||
|
.func1 = sub_80C9E1C,
|
||||||
|
.func2 = sub_80CA160
|
||||||
|
}, {
|
||||||
|
.fromType = 4,
|
||||||
|
.toType = 9,
|
||||||
|
.isEnter = FALSE,
|
||||||
|
.isExit = TRUE,
|
||||||
|
.func1 = sub_80C9E1C,
|
||||||
|
.func2 = sub_80CA160
|
||||||
|
}, {0}
|
||||||
|
};
|
||||||
|
|
||||||
|
static const u16 gUnknown_83F5804[] = INCBIN_U16("graphics/field_effects/flash_white.gbapal");
|
||||||
|
static const u16 gUnknown_83F5824[] = INCBIN_U16("graphics/field_effects/flash_black.gbapal");
|
||||||
|
static const u16 gUnknown_83F5844[] = INCBIN_U16("graphics/field_effects/flash_gradient.gbapal");
|
||||||
|
static const u32 gUnknown_83F5864[] = INCBIN_U32("graphics/field_effects/flash_effect_map.bin.lz");
|
||||||
|
static const u32 gUnknown_83F5A44[] = INCBIN_U32("graphics/field_effects/flash_effect_tiles.4bpp.lz");
|
||||||
|
|
||||||
|
bool8 SetUpFieldMove_Flash(void)
|
||||||
|
{
|
||||||
|
if (gMapHeader.cave != TRUE)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
if (FlagGet(FLAG_SYS_FLASH_ACTIVE))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu;
|
||||||
|
gPostMenuFieldCallback = sub_80C9B74;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void sub_80C9B74(void)
|
||||||
|
{
|
||||||
|
u8 taskId = CreateFieldEffectShowMon();
|
||||||
|
gFieldEffectArguments[0] = GetCursorSelectionMonId();
|
||||||
|
gTasks[taskId].data[8] = ((uintptr_t)sub_80C9BB0) >> 16;
|
||||||
|
gTasks[taskId].data[9] = ((uintptr_t)sub_80C9BB0);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void sub_80C9BB0(void)
|
||||||
|
{
|
||||||
|
PlaySE(SE_W115);
|
||||||
|
FlagSet(FLAG_SYS_FLASH_ACTIVE);
|
||||||
|
ScriptContext1_SetupScript(EventScript_FldEffFlash);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void sub_80C9BD0(void)
|
||||||
|
{
|
||||||
|
RunTasks();
|
||||||
|
AnimateSprites();
|
||||||
|
BuildOamBuffer();
|
||||||
|
UpdatePaletteFade();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void sub_80C9BE8(void)
|
||||||
|
{
|
||||||
|
LoadOam();
|
||||||
|
ProcessSpriteCopyRequests();
|
||||||
|
TransferPlttBuffer();
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_80C9BFC(void)
|
||||||
|
{
|
||||||
|
SetVBlankCallback(NULL);
|
||||||
|
|
||||||
|
SetGpuReg(REG_OFFSET_DISPCNT, 0);
|
||||||
|
SetGpuReg(REG_OFFSET_BG2CNT, 0);
|
||||||
|
SetGpuReg(REG_OFFSET_BG1CNT, 0);
|
||||||
|
SetGpuReg(REG_OFFSET_BG0CNT, 0);
|
||||||
|
SetGpuReg(REG_OFFSET_BG2HOFS, 0);
|
||||||
|
SetGpuReg(REG_OFFSET_BG2VOFS, 0);
|
||||||
|
SetGpuReg(REG_OFFSET_BG1HOFS, 0);
|
||||||
|
SetGpuReg(REG_OFFSET_BG1VOFS, 0);
|
||||||
|
SetGpuReg(REG_OFFSET_BG0HOFS, 0);
|
||||||
|
SetGpuReg(REG_OFFSET_BG0VOFS, 0);
|
||||||
|
|
||||||
|
DmaFill16(3, 0, (void *)VRAM, VRAM_SIZE);
|
||||||
|
DmaFill32(3, 0, (void *)OAM, OAM_SIZE);
|
||||||
|
DmaFill16(3, 0, (void *)(PLTT + 2), PLTT_SIZE - 2);
|
||||||
|
ResetPaletteFade();
|
||||||
|
ResetTasks();
|
||||||
|
ResetSpriteData();
|
||||||
|
EnableInterrupts(INTR_FLAG_VBLANK);
|
||||||
|
SetVBlankCallback(sub_80C9BE8);
|
||||||
|
SetMainCallback2(sub_80C9BD0);
|
||||||
|
if (!sub_80C9CE8())
|
||||||
|
SetMainCallback2(gMain.savedCallback);
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool8 sub_80C9CE8(void)
|
||||||
|
{
|
||||||
|
u8 fromType = get_map_light_from_warp0();
|
||||||
|
u8 toType = GetCurrentMapType();
|
||||||
|
u8 i = 0;
|
||||||
|
if (sub_80561B4() != gMapHeader.regionMapSectionId && sub_80F8154(gMapHeader.regionMapSectionId, FALSE) == TRUE)
|
||||||
|
{
|
||||||
|
sub_80CA160(gMapHeader.regionMapSectionId);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
for (; gUnknown_83F5738[i].fromType != 0; i++)
|
||||||
|
{
|
||||||
|
if (gUnknown_83F5738[i].fromType == fromType && gUnknown_83F5738[i].toType == toType)
|
||||||
|
{
|
||||||
|
gUnknown_83F5738[i].func1();
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 sub_80C9D7C(u8 _fromType, u8 _toType)
|
||||||
|
{
|
||||||
|
u8 fromType = _fromType;
|
||||||
|
u8 toType = _toType;
|
||||||
|
u8 i = 0;
|
||||||
|
for (; gUnknown_83F5738[i].fromType != 0; i++)
|
||||||
|
{
|
||||||
|
if (gUnknown_83F5738[i].fromType == fromType && gUnknown_83F5738[i].toType == toType)
|
||||||
|
{
|
||||||
|
return gUnknown_83F5738[i].isEnter;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 sub_80C9DCC(u8 _fromType, u8 _toType)
|
||||||
|
{
|
||||||
|
u8 fromType = _fromType;
|
||||||
|
u8 toType = _toType;
|
||||||
|
u8 i = 0;
|
||||||
|
for (; gUnknown_83F5738[i].fromType != 0; i++)
|
||||||
|
{
|
||||||
|
if (gUnknown_83F5738[i].fromType == fromType && gUnknown_83F5738[i].toType == toType)
|
||||||
|
{
|
||||||
|
return gUnknown_83F5738[i].isExit;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void sub_80C9E1C(void)
|
||||||
|
{
|
||||||
|
CreateTask(sub_80C9E30, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void sub_80C9E30(u8 taskId)
|
||||||
|
{
|
||||||
|
gTasks[taskId].func = sub_80C9E4C;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void sub_80C9E4C(u8 taskId)
|
||||||
|
{
|
||||||
|
SetGpuReg(REG_OFFSET_DISPCNT, 0);
|
||||||
|
LZ77UnCompVram(gUnknown_83F5A44, (void *)BG_CHAR_ADDR(3));
|
||||||
|
LZ77UnCompVram(gUnknown_83F5864, (void *)BG_SCREEN_ADDR(31));
|
||||||
|
LoadPalette(gUnknown_83F5804, 0xE0, 0x20);
|
||||||
|
LoadPalette(gUnknown_83F5844 + 8, 0xE0, 0x10);
|
||||||
|
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG0 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ | BLDCNT_TGT2_BD);
|
||||||
|
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
|
||||||
|
SetGpuReg(REG_OFFSET_BLDY, 0);
|
||||||
|
SetGpuReg(REG_OFFSET_BG0CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(3) | BGCNT_SCREENBASE(31));
|
||||||
|
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_OBJ_ON);
|
||||||
|
gTasks[taskId].func = sub_80C9EF0;
|
||||||
|
gTasks[taskId].data[0] = 16;
|
||||||
|
gTasks[taskId].data[1] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void sub_80C9EF0(u8 taskId)
|
||||||
|
{
|
||||||
|
u16 r4 = gTasks[taskId].data[1];
|
||||||
|
SetGpuReg(REG_OFFSET_BLDALPHA, (16 << 8) + r4);
|
||||||
|
if (r4 <= 16)
|
||||||
|
{
|
||||||
|
gTasks[taskId].data[1]++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
gTasks[taskId].data[2] = 0;
|
||||||
|
gTasks[taskId].func = sub_80C9F38;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void sub_80C9F38(u8 taskId)
|
||||||
|
{
|
||||||
|
u16 r4;
|
||||||
|
SetGpuReg(REG_OFFSET_BLDALPHA, (16 << 8) + 16);
|
||||||
|
r4 = gTasks[taskId].data[2];
|
||||||
|
if (r4 < 8)
|
||||||
|
{
|
||||||
|
gTasks[taskId].data[2]++;
|
||||||
|
LoadPalette(gUnknown_83F5844 + 8 + r4, 0xE0, 0x10 - 2 * r4);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
LoadPalette(gUnknown_83F5804, 0x00, 0x20);
|
||||||
|
gTasks[taskId].func = sub_80C9FA0;
|
||||||
|
gTasks[taskId].data[2] = 8;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void sub_80C9FA0(u8 taskId)
|
||||||
|
{
|
||||||
|
if (gTasks[taskId].data[2] != 0)
|
||||||
|
gTasks[taskId].data[2]--;
|
||||||
|
else
|
||||||
|
SetMainCallback2(gMain.savedCallback);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void sub_80C9FD4(void)
|
||||||
|
{
|
||||||
|
CreateTask(sub_80C9FE8, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void sub_80C9FE8(u8 taskId)
|
||||||
|
{
|
||||||
|
gTasks[taskId].func = sub_80CA004;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void sub_80CA004(u8 taskId)
|
||||||
|
{
|
||||||
|
SetGpuReg(REG_OFFSET_DISPCNT, 0);
|
||||||
|
LZ77UnCompVram(gUnknown_83F5A44, (void *)BG_CHAR_ADDR(3));
|
||||||
|
LZ77UnCompVram(gUnknown_83F5864, (void *)BG_SCREEN_ADDR(31));
|
||||||
|
SetGpuReg(REG_OFFSET_BLDCNT, 0);
|
||||||
|
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
|
||||||
|
SetGpuReg(REG_OFFSET_BLDY, 0);
|
||||||
|
SetGpuReg(REG_OFFSET_BG0CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(3) | BGCNT_SCREENBASE(31));
|
||||||
|
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_OBJ_ON);
|
||||||
|
LoadPalette(gUnknown_83F5804, 0xE0, 0x20);
|
||||||
|
LoadPalette(gUnknown_83F5824, 0, 0x20);
|
||||||
|
gTasks[taskId].func = sub_80CA0A4;
|
||||||
|
gTasks[taskId].data[0] = 16;
|
||||||
|
gTasks[taskId].data[1] = 0;
|
||||||
|
gTasks[taskId].data[2] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void sub_80CA0A4(u8 taskId)
|
||||||
|
{
|
||||||
|
u16 r4;
|
||||||
|
r4 = gTasks[taskId].data[2];
|
||||||
|
if (r4 < 16)
|
||||||
|
{
|
||||||
|
gTasks[taskId].data[2]++;
|
||||||
|
gTasks[taskId].data[2]++;
|
||||||
|
LoadPalette(&gUnknown_83F5844[16 - (r4 + 1)], 0xE0, 2 * (r4 + 1));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SetGpuReg(REG_OFFSET_BLDALPHA, (16 << 8) + 16);
|
||||||
|
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG0 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ | BLDCNT_TGT2_BD);
|
||||||
|
gTasks[taskId].func = sub_80CA108;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void sub_80CA108(u8 taskId)
|
||||||
|
{
|
||||||
|
u16 r4 = 16 - gTasks[taskId].data[1];
|
||||||
|
SetGpuReg(REG_OFFSET_BLDALPHA, (16 << 8) + r4);
|
||||||
|
if (r4 != 0)
|
||||||
|
{
|
||||||
|
gTasks[taskId].data[1]++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
LoadPalette(gUnknown_83F5824, 0x00, 0x20);
|
||||||
|
SetMainCallback2(gMain.savedCallback);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void sub_80CA160(u8 mapSecId)
|
||||||
|
{
|
||||||
|
u8 taskId = CreateTask(sub_80CA190, 0);
|
||||||
|
gTasks[taskId].data[3] = mapSecId;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void sub_80CA190(u8 taskId)
|
||||||
|
{
|
||||||
|
s16 *data = gTasks[taskId].data;
|
||||||
|
switch (data[0])
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
SetWordTaskArg(taskId, 5, (uintptr_t)gMain.vblankCallback);
|
||||||
|
SetVBlankCallback(NULL);
|
||||||
|
sub_80F8180();
|
||||||
|
sub_80F819C(data[3]);
|
||||||
|
BlendPalettes(0xFFFFFFFF, 0x10, RGB_BLACK);
|
||||||
|
data[0]++;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
if (!sub_80F8258())
|
||||||
|
{
|
||||||
|
data[4] = sub_80F8318(data[3]);
|
||||||
|
CopyWindowToVram(data[4], 3);
|
||||||
|
data[0]++;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
if (!IsDma3ManagerBusyWithBgCopy())
|
||||||
|
{
|
||||||
|
BeginNormalPaletteFade(0xFFFFFFFF, -1, 16, 0, RGB_BLACK);
|
||||||
|
SetVBlankCallback((IntrCallback)GetWordTaskArg(taskId, 5));
|
||||||
|
data[0]++;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
if (!UpdatePaletteFade())
|
||||||
|
{
|
||||||
|
data[2] = sub_80F856C(data[3]);
|
||||||
|
data[0]++;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
data[1]++;
|
||||||
|
if (data[1] > data[2] || JOY_HELD(B_BUTTON))
|
||||||
|
{
|
||||||
|
BeginNormalPaletteFade(0xFFFFFFFF, -2, 0, 16, RGB_WHITE);
|
||||||
|
data[0]++;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
if (!UpdatePaletteFade())
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
for (i = 0; i < 16; i++)
|
||||||
|
{
|
||||||
|
data[i] = 0;
|
||||||
|
}
|
||||||
|
sub_80F8234(data[4]);
|
||||||
|
gTasks[taskId].func = sub_80CA004;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -364,7 +364,7 @@ bool8 sub_80F8110(u8 mapsec, u8 forceFirstTime)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool8 sub_80F8154(u8 mapsec, u8 forceFirstTime)
|
bool32 sub_80F8154(u8 mapsec, u8 forceFirstTime)
|
||||||
{
|
{
|
||||||
if (gQuestLogState == 2)
|
if (gQuestLogState == 2)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user