Decompile seagallop

This commit is contained in:
PikalaxALT
2019-04-24 17:14:11 -04:00
parent 1d28c9820f
commit 2ef974d776
19 changed files with 524 additions and 831 deletions
-795
View File
@@ -1,795 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start sub_8146E78
sub_8146E78: @ 8146E78
push {lr}
movs r0, 0
bl SetVBlankCallback
bl sub_812B478
ldr r0, _08146E90 @ =sub_8146E94
bl SetMainCallback2
pop {r0}
bx r0
.align 2, 0
_08146E90: .4byte sub_8146E94
thumb_func_end sub_8146E78
thumb_func_start sub_8146E94
sub_8146E94: @ 8146E94
push {r4,lr}
sub sp, 0x8
ldr r0, _08146EB4 @ =gMain
movs r1, 0x87
lsls r1, 3
adds r0, r1
ldrb r0, [r0]
cmp r0, 0x7
bls _08146EA8
b _0814703C
_08146EA8:
lsls r0, 2
ldr r1, _08146EB8 @ =_08146EBC
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08146EB4: .4byte gMain
_08146EB8: .4byte _08146EBC
.align 2, 0
_08146EBC:
.4byte _08146EDC
.4byte _08146EE8
.4byte _08146EEE
.4byte _08146F20
.4byte _08146F8C
.4byte _08146FAC
.4byte _08146FBE
.4byte _08146FE4
_08146EDC:
movs r0, 0
bl SetVBlankCallback
bl sub_81471C4
b _08146FCE
_08146EE8:
bl sub_81472FC
b _08146FCE
_08146EEE:
ldr r4, _08146F18 @ =gUnknown_203F3D0
movs r0, 0x80
lsls r0, 4
bl AllocZeroed
str r0, [r4]
movs r0, 0
bl ResetBgsAndClearDma3BusyFlags
ldr r1, _08146F1C @ =gUnknown_846AEF8
movs r0, 0
movs r2, 0x1
bl InitBgsFromTemplates
ldr r1, [r4]
movs r0, 0x3
bl SetBgTilemapBuffer
bl sub_814732C
b _08146FCE
.align 2, 0
_08146F18: .4byte gUnknown_203F3D0
_08146F1C: .4byte gUnknown_846AEF8
_08146F20:
ldr r1, _08146F50 @ =gUnknown_8468C98
movs r2, 0xA4
lsls r2, 3
movs r0, 0x3
movs r3, 0
bl LoadBgTiles
bl sub_81474CC
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _08146F58
ldr r1, _08146F54 @ =gUnknown_84699D8
movs r0, 0x20
str r0, [sp]
str r0, [sp, 0x4]
movs r0, 0x3
movs r2, 0
movs r3, 0
bl CopyToBgTilemapBufferRect
b _08146F6A
.align 2, 0
_08146F50: .4byte gUnknown_8468C98
_08146F54: .4byte gUnknown_84699D8
_08146F58:
ldr r1, _08146F84 @ =gUnknown_84691D8
movs r0, 0x20
str r0, [sp]
str r0, [sp, 0x4]
movs r0, 0x3
movs r2, 0
movs r3, 0
bl CopyToBgTilemapBufferRect
_08146F6A:
ldr r0, _08146F88 @ =gUnknown_84691B8
movs r1, 0x40
movs r2, 0x20
bl LoadPalette
movs r0, 0x2
bl stdpal_get
movs r1, 0xF0
movs r2, 0x20
bl LoadPalette
b _08146FCE
.align 2, 0
_08146F84: .4byte gUnknown_84691D8
_08146F88: .4byte gUnknown_84691B8
_08146F8C:
bl IsDma3ManagerBusyWithBgCopy
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
beq _0814703C
movs r0, 0
bl ShowBg
movs r0, 0x3
bl ShowBg
movs r0, 0x3
bl CopyBgTilemapBufferToVram
b _08146FCE
_08146FAC:
bl sub_8147384
movs r0, 0x1
negs r0, r0
movs r1, 0x10
movs r2, 0
bl BlendPalettes
b _08146FCE
_08146FBE:
movs r0, 0x1
negs r0, r0
movs r1, 0
str r1, [sp]
movs r2, 0x10
movs r3, 0
bl BeginNormalPaletteFade
_08146FCE:
ldr r1, _08146FE0 @ =gMain
movs r0, 0x87
lsls r0, 3
adds r1, r0
ldrb r0, [r1]
adds r0, 0x1
strb r0, [r1]
b _0814703C
.align 2, 0
_08146FE0: .4byte gMain
_08146FE4:
bl sub_814731C
ldr r0, _08147044 @ =sub_8147058
bl SetVBlankCallback
movs r0, 0x13
bl PlaySE
bl sub_81473C4
movs r1, 0x80
lsls r1, 6
movs r0, 0
bl SetGpuRegBits
movs r0, 0x48
movs r1, 0x3F
bl SetGpuReg
movs r0, 0x4A
movs r1, 0
bl SetGpuReg
movs r0, 0x40
movs r1, 0xF0
bl SetGpuReg
ldr r1, _08147048 @ =0x00001888
movs r0, 0x44
bl SetGpuReg
ldr r0, _0814704C @ =sub_8147084
movs r1, 0x8
bl CreateTask
ldr r0, _08147050 @ =sub_814706C
bl SetMainCallback2
ldr r0, _08147054 @ =gMain
movs r1, 0x87
lsls r1, 3
adds r0, r1
movs r1, 0
strb r1, [r0]
_0814703C:
add sp, 0x8
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08147044: .4byte sub_8147058
_08147048: .4byte 0x00001888
_0814704C: .4byte sub_8147084
_08147050: .4byte sub_814706C
_08147054: .4byte gMain
thumb_func_end sub_8146E94
thumb_func_start sub_8147058
sub_8147058: @ 8147058
push {lr}
bl LoadOam
bl ProcessSpriteCopyRequests
bl TransferPlttBuffer
pop {r0}
bx r0
thumb_func_end sub_8147058
thumb_func_start sub_814706C
sub_814706C: @ 814706C
push {lr}
bl RunTasks
bl AnimateSprites
bl BuildOamBuffer
bl UpdatePaletteFade
pop {r0}
bx r0
thumb_func_end sub_814706C
thumb_func_start sub_8147084
sub_8147084: @ 8147084
lsls r0, 24
lsrs r0, 24
ldr r2, _08147098 @ =gTasks
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
adds r1, r2
ldr r0, _0814709C @ =sub_81470CC
str r0, [r1]
bx lr
.align 2, 0
_08147098: .4byte gTasks
_0814709C: .4byte sub_81470CC
thumb_func_end sub_8147084
thumb_func_start sub_81470A0
sub_81470A0: @ 81470A0
push {lr}
bl sub_81474CC
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _081470BC
movs r1, 0xC0
lsls r1, 3
movs r0, 0x3
movs r2, 0x1
bl ChangeBgX
b _081470C8
_081470BC:
movs r1, 0xC0
lsls r1, 3
movs r0, 0x3
movs r2, 0x2
bl ChangeBgX
_081470C8:
pop {r0}
bx r0
thumb_func_end sub_81470A0
thumb_func_start sub_81470CC
sub_81470CC: @ 81470CC
push {r4,lr}
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
ldr r0, _08147100 @ =gTasks
adds r4, r1, r0
bl sub_81470A0
ldrh r0, [r4, 0xA]
adds r0, 0x1
strh r0, [r4, 0xA]
lsls r0, 16
asrs r0, 16
cmp r0, 0x8C
bne _081470FA
bl Overworld_FadeOutMapMusic
bl sub_807DC18
ldr r0, _08147104 @ =sub_8147108
str r0, [r4]
_081470FA:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08147100: .4byte gTasks
_08147104: .4byte sub_8147108
thumb_func_end sub_81470CC
thumb_func_start sub_8147108
sub_8147108: @ 8147108
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
bl sub_81470A0
bl sub_8055FC4
lsls r0, 24
cmp r0, 0
beq _08147136
ldr r0, _0814713C @ =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
cmp r0, 0
bne _08147136
bl sub_8147140
bl sub_812B484
adds r0, r4, 0
bl DestroyTask
_08147136:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0814713C: .4byte gPaletteFade
thumb_func_end sub_8147108
thumb_func_start sub_8147140
sub_8147140: @ 8147140
push {r4,lr}
sub sp, 0x4
ldr r1, _081471AC @ =gSpecialVar_0x8006
ldrh r0, [r1]
cmp r0, 0xA
bls _08147150
movs r0, 0
strh r0, [r1]
_08147150:
ldrh r4, [r1]
lsls r4, 2
ldr r0, _081471B0 @ =gUnknown_846AEFC
adds r4, r0
movs r0, 0
ldrsb r0, [r4, r0]
movs r1, 0x1
ldrsb r1, [r4, r1]
movs r2, 0x1
negs r2, r2
movs r3, 0x2
ldrsb r3, [r4, r3]
ldrb r4, [r4, 0x3]
lsls r4, 24
asrs r4, 24
str r4, [sp]
bl Overworld_SetWarpDestination
bl play_some_sound
movs r0, 0x9
bl PlaySE
ldr r1, _081471B4 @ =gUnknown_3005020
ldr r0, _081471B8 @ =sub_807DF64
str r0, [r1]
bl warp_in
ldr r0, _081471BC @ =sub_805671C
bl SetMainCallback2
bl ResetInitialPlayerAvatarState
bl sub_81473A0
ldr r0, _081471C0 @ =gUnknown_203F3D0
ldr r0, [r0]
bl Free
bl FreeAllWindowBuffers
add sp, 0x4
pop {r4}
pop {r0}
bx r0
.align 2, 0
_081471AC: .4byte gSpecialVar_0x8006
_081471B0: .4byte gUnknown_846AEFC
_081471B4: .4byte gUnknown_3005020
_081471B8: .4byte sub_807DF64
_081471BC: .4byte sub_805671C
_081471C0: .4byte gUnknown_203F3D0
thumb_func_end sub_8147140
thumb_func_start sub_81471C4
sub_81471C4: @ 81471C4
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x8
movs r3, 0xC0
lsls r3, 19
movs r4, 0xC0
lsls r4, 9
add r0, sp, 0x4
mov r8, r0
mov r2, sp
movs r6, 0
ldr r1, _081472F4 @ =0x040000d4
movs r5, 0x80
lsls r5, 5
ldr r7, _081472F8 @ =0x81000800
movs r0, 0x81
lsls r0, 24
mov r12, r0
_081471EA:
strh r6, [r2]
mov r0, sp
str r0, [r1]
str r3, [r1, 0x4]
str r7, [r1, 0x8]
ldr r0, [r1, 0x8]
adds r3, r5
subs r4, r5
cmp r4, r5
bhi _081471EA
strh r6, [r2]
mov r2, sp
str r2, [r1]
str r3, [r1, 0x4]
lsrs r0, r4, 1
mov r2, r12
orrs r0, r2
str r0, [r1, 0x8]
ldr r0, [r1, 0x8]
movs r0, 0xE0
lsls r0, 19
movs r3, 0x80
lsls r3, 3
movs r4, 0
str r4, [sp, 0x4]
ldr r2, _081472F4 @ =0x040000d4
mov r1, r8
str r1, [r2]
str r0, [r2, 0x4]
lsrs r0, r3, 2
movs r1, 0x85
lsls r1, 24
orrs r0, r1
str r0, [r2, 0x8]
ldr r0, [r2, 0x8]
movs r1, 0xA0
lsls r1, 19
mov r0, sp
strh r4, [r0]
str r0, [r2]
str r1, [r2, 0x4]
lsrs r3, 1
movs r0, 0x81
lsls r0, 24
orrs r3, r0
str r3, [r2, 0x8]
ldr r0, [r2, 0x8]
movs r0, 0
movs r1, 0
bl SetGpuReg
movs r0, 0x8
movs r1, 0
bl SetGpuReg
movs r0, 0x10
movs r1, 0
bl SetGpuReg
movs r0, 0x12
movs r1, 0
bl SetGpuReg
movs r0, 0xA
movs r1, 0
bl SetGpuReg
movs r0, 0x14
movs r1, 0
bl SetGpuReg
movs r0, 0x16
movs r1, 0
bl SetGpuReg
movs r0, 0xC
movs r1, 0
bl SetGpuReg
movs r0, 0x18
movs r1, 0
bl SetGpuReg
movs r0, 0x1A
movs r1, 0
bl SetGpuReg
movs r0, 0xE
movs r1, 0
bl SetGpuReg
movs r0, 0x1C
movs r1, 0
bl SetGpuReg
movs r0, 0x1E
movs r1, 0
bl SetGpuReg
movs r0, 0x40
movs r1, 0
bl SetGpuReg
movs r0, 0x44
movs r1, 0
bl SetGpuReg
movs r0, 0x48
movs r1, 0
bl SetGpuReg
movs r0, 0x4A
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
add sp, 0x8
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_081472F4: .4byte 0x040000d4
_081472F8: .4byte 0x81000800
thumb_func_end sub_81471C4
thumb_func_start sub_81472FC
sub_81472FC: @ 81472FC
push {lr}
bl ScanlineEffect_Stop
bl ResetTasks
bl ResetSpriteData
bl dp13_810BB8C
bl ResetPaletteFade
bl FreeAllSpritePalettes
pop {r0}
bx r0
thumb_func_end sub_81472FC
thumb_func_start sub_814731C
sub_814731C: @ 814731C
push {lr}
movs r1, 0xCA
lsls r1, 5
movs r0, 0
bl SetGpuReg
pop {r0}
bx r0
thumb_func_end sub_814731C
thumb_func_start sub_814732C
sub_814732C: @ 814732C
push {lr}
movs r0, 0
movs r1, 0
movs r2, 0
bl ChangeBgX
movs r0, 0
movs r1, 0
movs r2, 0
bl ChangeBgY
movs r0, 0x1
movs r1, 0
movs r2, 0
bl ChangeBgX
movs r0, 0x1
movs r1, 0
movs r2, 0
bl ChangeBgY
movs r0, 0x2
movs r1, 0
movs r2, 0
bl ChangeBgX
movs r0, 0x2
movs r1, 0
movs r2, 0
bl ChangeBgY
movs r0, 0x3
movs r1, 0
movs r2, 0
bl ChangeBgX
movs r0, 0x3
movs r1, 0
movs r2, 0
bl ChangeBgY
pop {r0}
bx r0
thumb_func_end sub_814732C
thumb_func_start sub_8147384
sub_8147384: @ 8147384
push {lr}
ldr r0, _08147398 @ =gUnknown_846AF78
bl LoadSpriteSheets
ldr r0, _0814739C @ =gUnknown_846AF90
bl LoadSpritePalettes
pop {r0}
bx r0
.align 2, 0
_08147398: .4byte gUnknown_846AF78
_0814739C: .4byte gUnknown_846AF90
thumb_func_end sub_8147384
thumb_func_start sub_81473A0
sub_81473A0: @ 81473A0
push {r4,lr}
ldr r4, _081473C0 @ =0x00000bb8
adds r0, r4, 0
bl FreeSpriteTilesByTag
movs r0, 0xFA
lsls r0, 4
bl FreeSpriteTilesByTag
adds r0, r4, 0
bl FreeSpritePaletteByTag
pop {r4}
pop {r0}
bx r0
.align 2, 0
_081473C0: .4byte 0x00000bb8
thumb_func_end sub_81473A0
thumb_func_start sub_81473C4
sub_81473C4: @ 81473C4
push {r4,lr}
ldr r0, _081473FC @ =gUnknown_846AF60
movs r1, 0
movs r2, 0x5C
movs r3, 0
bl CreateSprite
lsls r0, 24
lsrs r0, 24
ldr r2, _08147400 @ =gSprites
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r4, r1, r2
movs r0, 0x30
strh r0, [r4, 0x2E]
bl sub_81474CC
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _08147404
adds r0, r4, 0
movs r1, 0x1
bl StartSpriteAnim
b _08147410
.align 2, 0
_081473FC: .4byte gUnknown_846AF60
_08147400: .4byte gSprites
_08147404:
movs r0, 0xF0
strh r0, [r4, 0x20]
movs r1, 0x2E
ldrsh r0, [r4, r1]
negs r0, r0
strh r0, [r4, 0x2E]
_08147410:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_81473C4
thumb_func_start sub_8147418
sub_8147418: @ 8147418
push {r4,r5,lr}
adds r4, r0, 0
ldrh r0, [r4, 0x2E]
ldrh r1, [r4, 0x30]
adds r0, r1
strh r0, [r4, 0x30]
lsls r0, 16
asrs r5, r0, 20
strh r5, [r4, 0x24]
movs r1, 0x32
ldrsh r0, [r4, r1]
movs r1, 0x5
bl __modsi3
lsls r0, 16
cmp r0, 0
bne _08147446
ldrh r0, [r4, 0x20]
adds r0, r5
lsls r0, 16
asrs r0, 16
bl sub_814746C
_08147446:
ldrh r0, [r4, 0x32]
adds r0, 0x1
strh r0, [r4, 0x32]
movs r1, 0x96
lsls r1, 1
adds r0, r1, 0
ldrh r1, [r4, 0x24]
adds r0, r1
lsls r0, 16
movs r1, 0x96
lsls r1, 18
cmp r0, r1
bls _08147466
adds r0, r4, 0
bl DestroySprite
_08147466:
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_8147418
thumb_func_start sub_814746C
sub_814746C: @ 814746C
push {r4,lr}
adds r1, r0, 0
ldr r0, _081474A8 @ =gUnknown_846AFD0
lsls r1, 16
asrs r1, 16
movs r2, 0x5C
movs r3, 0x8
bl CreateSprite
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0x40
beq _081474A2
bl sub_81474CC
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _081474A2
lsls r0, r4, 4
adds r0, r4
lsls r0, 2
ldr r1, _081474AC @ =gSprites
adds r0, r1
movs r1, 0x1
bl StartSpriteAnim
_081474A2:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_081474A8: .4byte gUnknown_846AFD0
_081474AC: .4byte gSprites
thumb_func_end sub_814746C
thumb_func_start sub_81474B0
sub_81474B0: @ 81474B0
push {lr}
adds r2, r0, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _081474C6
adds r0, r2, 0
bl DestroySprite
_081474C6:
pop {r0}
bx r0
thumb_func_end sub_81474B0
thumb_func_start sub_81474CC
sub_81474CC: @ 81474CC
push {lr}
ldr r2, _081474EC @ =gSpecialVar_0x8004
ldrh r0, [r2]
cmp r0, 0xA
bhi _081474F8
ldr r1, _081474F0 @ =gUnknown_846AF28
lsls r0, 1
adds r0, r1
ldrh r0, [r0]
ldr r1, _081474F4 @ =gSpecialVar_0x8006
ldrh r1, [r1]
asrs r0, r1
movs r1, 0x1
ands r0, r1
b _081474FA
.align 2, 0
_081474EC: .4byte gSpecialVar_0x8004
_081474F0: .4byte gUnknown_846AF28
_081474F4: .4byte gSpecialVar_0x8006
_081474F8:
movs r0, 0x1
_081474FA:
pop {r1}
bx r1
thumb_func_end sub_81474CC
.align 2, 0 @ Don't pad with nop.
+5 -32
View File
@@ -1,38 +1,11 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata .section .rodata
.align 2 .align 2
gUnknown_8468C98:: @ 8468C98 gUnknown_846AFE8:: @ 846AFE8
.incbin "baserom.gba", 0x468C98, 0x520 .incbin "baserom.gba", 0x46AFE8, 0x444
gUnknown_84691B8:: @ 84691B8
.incbin "baserom.gba", 0x4691B8, 0x20
gUnknown_84691D8:: @ 84691D8
.incbin "baserom.gba", 0x4691D8, 0x800
gUnknown_84699D8:: @ 84699D8
.incbin "baserom.gba", 0x4699D8, 0x1520
gUnknown_846AEF8:: @ 846AEF8
.incbin "baserom.gba", 0x46AEF8, 0x4
gUnknown_846AEFC:: @ 846AEFC
.incbin "baserom.gba", 0x46AEFC, 0x2C
gUnknown_846AF28:: @ 846AF28
.incbin "baserom.gba", 0x46AF28, 0x38
gUnknown_846AF60:: @ 846AF60
.incbin "baserom.gba", 0x46AF60, 0x18
gUnknown_846AF78:: @ 846AF78
.incbin "baserom.gba", 0x46AF78, 0x18
gUnknown_846AF90:: @ 846AF90
.incbin "baserom.gba", 0x46AF90, 0x40
gUnknown_846AFD0:: @ 846AFD0
.incbin "baserom.gba", 0x46AFD0, 0x45C
gUnknown_846B42C:: @ 846B42C gUnknown_846B42C:: @ 846B42C
.incbin "baserom.gba", 0x46B42C, 0x10 .incbin "baserom.gba", 0x46B42C, 0x10
Binary file not shown.

After

Width:  |  Height:  |  Size: 283 B

+19
View File
@@ -0,0 +1,19 @@
JASC-PAL
0100
16
0 0 0
213 238 255
172 205 255
139 180 238
106 156 230
49 115 180
65 123 189
82 139 205
205 222 238
172 189 205
123 123 131
90 90 115
49 115 172
238 230 139
230 213 139
213 197 106
Binary file not shown.
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 595 B

+19
View File
@@ -0,0 +1,19 @@
JASC-PAL
0100
16
65 123 180
238 246 255
222 230 238
189 205 230
156 164 189
139 139 156
98 98 123
57 57 106
197 98 98
172 65 106
32 74 156
197 148 0
246 213 24
222 238 255
255 255 255
74 106 139
Binary file not shown.

After

Width:  |  Height:  |  Size: 574 B

+3
View File
@@ -662,3 +662,6 @@ $(FAMECHECKERGFXDIR)/img_845cf00.4bpp: %.4bpp: %.png
$(GLOBALGFXDIR)/fame_checker_bg.4bpp: %.4bpp: %.png $(GLOBALGFXDIR)/fame_checker_bg.4bpp: %.4bpp: %.png
$(GFX) $< $@ -num_tiles 165 $(GFX) $< $@ -num_tiles 165
data/seagallop/unk_8468C98.4bpp: %.4bpp: %.png
$(GFX) $< $@ -num_tiles 41
+2
View File
@@ -9,4 +9,6 @@
#define MAP_GROUP(map) (MAP_##map >> 8) #define MAP_GROUP(map) (MAP_##map >> 8)
#define MAP_NUM(map) (MAP_##map & 0xFF) #define MAP_NUM(map) (MAP_##map & 0xFF)
#define MAP(map) MAP_GROUP(map), MAP_NUM(map)
#endif // GUARD_CONSTANTS_MAPS_H #endif // GUARD_CONSTANTS_MAPS_H
+1
View File
@@ -12,5 +12,6 @@ void DoFallWarp(void);
void sub_807E59C(void); void sub_807E59C(void);
void sub_807E500(void); void sub_807E500(void);
void sub_807DF64(void); void sub_807DF64(void);
void sub_807DC18(void);
#endif // GUARD_FIELD_FADETRANSITION_H #endif // GUARD_FIELD_FADETRANSITION_H
+1
View File
@@ -12,5 +12,6 @@ void sub_80AEDBC(void);
void DoCurrentWeather(void); void DoCurrentWeather(void);
void SetSav1WeatherFromCurrMapHeader(void); void SetSav1WeatherFromCurrMapHeader(void);
void sub_807B0C4(u16 *, u16 *, u32); void sub_807B0C4(u16 *, u16 *, u32);
void play_some_sound(void);
#endif // GUARD_WEATHER_H #endif // GUARD_WEATHER_H
+1
View File
@@ -7,5 +7,6 @@ extern bool8 gUnknown_3005ECC;
void sub_812B484(void); void sub_812B484(void);
void HelpSystem_SetSomeVariable2(u8); void HelpSystem_SetSomeVariable2(u8);
void sub_812B478(void);
#endif //GUARD_HELP_SYSTEM_H #endif //GUARD_HELP_SYSTEM_H
+6
View File
@@ -96,9 +96,15 @@ void sub_80563F0(void);
extern u8 gUnknown_2031DD8; extern u8 gUnknown_2031DD8;
extern u8 gUnknown_2036E28; extern u8 gUnknown_2036E28;
extern void (*gUnknown_3005020)(void);
extern bool8 (* gUnknown_3005024)(void); extern bool8 (* gUnknown_3005024)(void);
void SetLastHealLocationWarp(u8 healLocaionId); void SetLastHealLocationWarp(u8 healLocaionId);
void sub_8055864(u8 mapGroup, u8 mapNum); void sub_8055864(u8 mapGroup, u8 mapNum);
void CB2_NewGame(void); void CB2_NewGame(void);
void Overworld_FadeOutMapMusic(void);
void sub_805671C(void);
bool8 sub_8055FC4(void);
#endif //GUARD_ROM4_H #endif //GUARD_ROM4_H
+19
View File
@@ -0,0 +1,19 @@
#ifndef GUARD_SEAGALLOP_H
#define GUARD_SEAGALLOP_H
enum SeaGallopDestinations
{
SEAGALLOP_VERMILION_CITY,
SEAGALLOP_ONE_ISLAND,
SEAGALLOP_TWO_ISLAND,
SEAGALLOP_THREE_ISLAND,
SEAGALLOP_FOUR_ISLAND,
SEAGALLOP_FIVE_ISLAND,
SEAGALLOP_SIX_ISLAND,
SEAGALLOP_SEVEN_ISLAND,
SEAGALLOP_CINNABAR_ISLAND,
SEAGALLOP_NAVEL_ROCK,
SEAGALLOP_BIRTH_ISLAND
};
#endif //GUARD_SEAGALLOP_H
+3 -1
View File
@@ -248,7 +248,7 @@ SECTIONS {
src/mevent_server.o(.text); src/mevent_server.o(.text);
src/mevent_8145654.o(.text); src/mevent_8145654.o(.text);
src/menews_jisan.o(.text); src/menews_jisan.o(.text);
asm/seagallop.o(.text); src/seagallop.o(.text);
asm/unk_8147500.o(.text); asm/unk_8147500.o(.text);
asm/unk_8147AA8.o(.text); asm/unk_8147AA8.o(.text);
asm/unk_814B6F0.o(.text); asm/unk_814B6F0.o(.text);
@@ -418,6 +418,8 @@ SECTIONS {
data/data_8466FB8.o(.rodata); data/data_8466FB8.o(.rodata);
src/menews_jisan.o(.rodata); src/menews_jisan.o(.rodata);
src/menews_jisan.o(.rodata.str1.4); src/menews_jisan.o(.rodata.str1.4);
. = ALIGN(4);
src/seagallop.o(.rodata);
data/data_8468C98.o(.rodata); data/data_8468C98.o(.rodata);
src/quest_log_8150454.o(.rodata); src/quest_log_8150454.o(.rodata);
data/data_8471F00.o(.rodata); data/data_8471F00.o(.rodata);
+444
View File
@@ -0,0 +1,444 @@
#include "global.h"
#include "gpu_regs.h"
#include "bg.h"
#include "palette.h"
#include "malloc.h"
#include "scanline_effect.h"
#include "battle_dome_cards.h"
#include "window.h"
#include "text_window.h"
#include "sound.h"
#include "task.h"
#include "help_system.h"
#include "overworld.h"
#include "event_data.h"
#include "field_fadetransition.h"
#include "field_weather.h"
#include "constants/songs.h"
#include "constants/maps.h"
#include "seagallop.h"
EWRAM_DATA void * gUnknown_203F3D0 = NULL;
void sub_8146E94(void);
void sub_8147058(void);
void sub_814706C(void);
void sub_8147084(u8 taskId);
void sub_81470CC(u8 taskId);
void sub_8147108(u8 taskId);
void sub_8147140(void);
void sub_81471C4(void);
void sub_81472FC(void);
void sub_814731C(void);
void sub_814732C(void);
void sub_8147384(void);
void sub_81473A0(void);
void sub_81473C4(void);
void sub_8147418(struct Sprite * sprite);
void sub_814746C(s16 x);
void sub_81474B0(struct Sprite * sprite);
bool8 sub_81474CC(void);
const u16 gUnknown_8468C98[] = INCBIN_U16("data/seagallop/unk_8468C98.4bpp");
const u16 gUnknown_84691B8[] = INCBIN_U16("data/seagallop/unk_84691B8.gbapal");
const u16 gUnknown_84691D8[] = INCBIN_U16("data/seagallop/unk_84691D8.bin");
const u16 gUnknown_84699D8[] = INCBIN_U16("data/seagallop/unk_84699D8.bin");
const u16 gUnknown_846A1D8[] = INCBIN_U16("data/seagallop/unk_846A1D8.4bpp");
const u16 gUnknown_846A6D8[] = INCBIN_U16("data/seagallop/unk_846A6D8.gbapal");
const u16 gUnknown_846A6F8[] = INCBIN_U16("data/seagallop/unk_846A6F8.4bpp");
const struct BgTemplate gUnknown_846AEF8[] = {
{
.bg = 3,
.charBaseIndex = 3,
.mapBaseIndex = 30,
.screenSize = 0,
.paletteMode = 0,
.priority = 3,
.baseTile = 0x000
}
};
const s8 gUnknown_846AEFC[][4] = {
{MAP(VERMILIONCITY), 0x17, 0x20},
{MAP(ONEISLAND_HARBOR), 0x08, 0x05},
{MAP(TWOISLAND_HARBOR), 0x08, 0x05},
{MAP(THREEISLAND_HARBOR), 0x08, 0x05},
{MAP(FOURISLAND_HARBOR), 0x08, 0x05},
{MAP(FIVEISLAND_HARBOR), 0x08, 0x05},
{MAP(SIXISLAND_HARBOR), 0x08, 0x05},
{MAP(SEVENISLAND_HARBOR), 0x08, 0x05},
{MAP(CINNABARISLAND), 0x15, 0x07},
{MAP(NAVELROCK_HARBOR), 0x08, 0x05},
{MAP(BIRTHISLAND_HARBOR), 0x08, 0x05}
};
const u16 gUnknown_846AF28[] = {
0x06fe,
0x06fc,
0x06f8,
0x06f0,
0x06e0,
0x04c0,
0x0400,
0x0440,
0x07ff,
0x06e0,
0x0000
};
const union AnimCmd gUnknown_846AF40[] = {
ANIMCMD_FRAME(0, 10),
ANIMCMD_END
};
const union AnimCmd gUnknown_846AF48[] = {
ANIMCMD_FRAME(0, 10, .hFlip = TRUE),
ANIMCMD_END
};
const union AnimCmd *const gUnknown_846AF50[] = {
gUnknown_846AF40,
gUnknown_846AF48
};
const struct OamData gOamData_846AF58 = {
.size = 3
};
const struct SpriteTemplate gUnknown_846AF60 = {
3000,
3000,
&gOamData_846AF58,
gUnknown_846AF50,
NULL,
gDummySpriteAffineAnimTable,
sub_8147418
};
const struct SpriteSheet gUnknown_846AF78[] = {
{(void *)gUnknown_846A6F8, 0x0800, 4000},
{(void *)gUnknown_846A1D8, 0x0500, 3000},
{}
};
const struct SpritePalette gUnknown_846AF90[] = {
{gUnknown_846A6D8, 3000},
{}
};
const union AnimCmd gUnknown_846AFA0[] = {
ANIMCMD_FRAME(0x00, 0x14),
ANIMCMD_FRAME(0x10, 0x14),
ANIMCMD_FRAME(0x20, 0x0f),
ANIMCMD_END,
};
const union AnimCmd gUnknown_846AFB0[] = {
ANIMCMD_FRAME(0x00, 0x14, .hFlip = TRUE),
ANIMCMD_FRAME(0x10, 0x14, .hFlip = TRUE),
ANIMCMD_FRAME(0x20, 0x0f, .hFlip = TRUE),
ANIMCMD_END,
};
const union AnimCmd *const gUnknown_846AFC0[] = {
gUnknown_846AFA0,
gUnknown_846AFB0
};
const struct OamData gOamData_846AFC8 = {
.size = 2
};
const struct SpriteTemplate gUnknown_846AFD0 = {
4000,
3000,
&gOamData_846AFC8,
gUnknown_846AFC0,
NULL,
gDummySpriteAffineAnimTable,
sub_81474B0
};
void sub_8146E78(void)
{
SetVBlankCallback(NULL);
sub_812B478();
SetMainCallback2(sub_8146E94);
}
void sub_8146E94(void)
{
void ** ptr;
switch (gMain.state)
{
case 0:
SetVBlankCallback(NULL); // redundant since the setup routine already did this
sub_81471C4();
gMain.state++;
break;
case 1:
sub_81472FC();
gMain.state++;
break;
case 2:
ptr = &gUnknown_203F3D0;
*ptr = AllocZeroed(0x800);
ResetBgsAndClearDma3BusyFlags(0);
InitBgsFromTemplates(0, gUnknown_846AEF8, NELEMS(gUnknown_846AEF8));
SetBgTilemapBuffer(3, *ptr);
sub_814732C();
gMain.state++;
break;
case 3:
LoadBgTiles(3, gUnknown_8468C98, sizeof(gUnknown_8468C98), 0);
if (sub_81474CC() == TRUE)
{
CopyToBgTilemapBufferRect(3, gUnknown_84699D8, 0, 0, 32, 32);
}
else
{
CopyToBgTilemapBufferRect(3, gUnknown_84691D8, 0, 0, 32, 32);
}
LoadPalette(gUnknown_84691B8, 0x40, 0x20);
LoadPalette(stdpal_get(2), 0xF0, 0x20);
gMain.state++;
break;
case 4:
if (IsDma3ManagerBusyWithBgCopy() != TRUE)
{
ShowBg(0);
ShowBg(3);
CopyBgTilemapBufferToVram(3);
gMain.state++;
}
break;
case 5:
sub_8147384();
BlendPalettes(0xFFFFFFFF, 16, RGB_BLACK);
gMain.state++;
break;
case 6:
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
gMain.state++;
break;
case 7:
sub_814731C();
SetVBlankCallback(sub_8147058);
PlaySE(SE_NAMINORI);
sub_81473C4();
SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
SetGpuReg(REG_OFFSET_WININ, 0x3F);
SetGpuReg(REG_OFFSET_WINOUT, 0x00);
SetGpuReg(REG_OFFSET_WIN0H, 0x00F0);
SetGpuReg(REG_OFFSET_WIN0V, 0x1888);
CreateTask(sub_8147084, 8);
SetMainCallback2(sub_814706C);
gMain.state = 0;
break;
}
}
void sub_8147058(void)
{
LoadOam();
ProcessSpriteCopyRequests();
TransferPlttBuffer();
}
void sub_814706C(void)
{
RunTasks();
AnimateSprites();
BuildOamBuffer();
UpdatePaletteFade();
}
void sub_8147084(u8 taskId)
{
gTasks[taskId].func = sub_81470CC;
}
void sub_81470A0(void)
{
if (sub_81474CC() == TRUE)
{
ChangeBgX(3, 0x600, 1);
}
else
{
ChangeBgX(3, 0x600, 2);
}
}
void sub_81470CC(u8 taskId)
{
struct Task * task = &gTasks[taskId];
sub_81470A0();
if (++task->data[1] == 140)
{
Overworld_FadeOutMapMusic();
sub_807DC18();
task->func = sub_8147108;
}
}
void sub_8147108(u8 taskId)
{
sub_81470A0();
if (sub_8055FC4() && !gPaletteFade.active)
{
sub_8147140();
sub_812B484();
DestroyTask(taskId);
}
}
void sub_8147140(void)
{
const s8 * warpInfo;
if (gSpecialVar_0x8006 >= NELEMS(gUnknown_846AEFC))
gSpecialVar_0x8006 = 0;
warpInfo = gUnknown_846AEFC[gSpecialVar_0x8006];
Overworld_SetWarpDestination(warpInfo[0], warpInfo[1], -1, warpInfo[2], warpInfo[3]);
play_some_sound();
PlaySE(SE_KAIDAN);
gUnknown_3005020 = sub_807DF64;
warp_in();
SetMainCallback2(sub_805671C);
ResetInitialPlayerAvatarState();
sub_81473A0();
Free(gUnknown_203F3D0);
FreeAllWindowBuffers();
}
void sub_81471C4(void)
{
void * dest = (void *) VRAM;
DmaClearLarge16(3, dest, VRAM_SIZE, 0x1000);
DmaClear32(3, (void *)OAM, OAM_SIZE);
DmaClear16(3, (void *)PLTT, PLTT_SIZE);
SetGpuReg(REG_OFFSET_DISPCNT, 0);
SetGpuReg(REG_OFFSET_BG0CNT, 0);
SetGpuReg(REG_OFFSET_BG0HOFS, 0);
SetGpuReg(REG_OFFSET_BG0VOFS, 0);
SetGpuReg(REG_OFFSET_BG1CNT, 0);
SetGpuReg(REG_OFFSET_BG1HOFS, 0);
SetGpuReg(REG_OFFSET_BG1VOFS, 0);
SetGpuReg(REG_OFFSET_BG2CNT, 0);
SetGpuReg(REG_OFFSET_BG2HOFS, 0);
SetGpuReg(REG_OFFSET_BG2VOFS, 0);
SetGpuReg(REG_OFFSET_BG3CNT, 0);
SetGpuReg(REG_OFFSET_BG3HOFS, 0);
SetGpuReg(REG_OFFSET_BG3VOFS, 0);
SetGpuReg(REG_OFFSET_WIN0H, 0);
SetGpuReg(REG_OFFSET_WIN0V, 0);
SetGpuReg(REG_OFFSET_WININ, 0);
SetGpuReg(REG_OFFSET_WINOUT, 0);
SetGpuReg(REG_OFFSET_BLDCNT, 0);
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
SetGpuReg(REG_OFFSET_BLDY, 0);
}
void sub_81472FC(void)
{
ScanlineEffect_Stop();
ResetTasks();
ResetSpriteData();
dp13_810BB8C();
ResetPaletteFade();
FreeAllSpritePalettes();
}
void sub_814731C(void)
{
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG3_ON | DISPCNT_OBJ_ON);
}
void sub_814732C(void)
{
ChangeBgX(0, 0, 0);
ChangeBgY(0, 0, 0);
ChangeBgX(1, 0, 0);
ChangeBgY(1, 0, 0);
ChangeBgX(2, 0, 0);
ChangeBgY(2, 0, 0);
ChangeBgX(3, 0, 0);
ChangeBgY(3, 0, 0);
}
void sub_8147384(void)
{
LoadSpriteSheets(gUnknown_846AF78);
LoadSpritePalettes(gUnknown_846AF90);
}
void sub_81473A0(void)
{
FreeSpriteTilesByTag(3000);
FreeSpriteTilesByTag(4000);
FreeSpritePaletteByTag(3000);
}
void sub_81473C4(void)
{
u8 spriteId = CreateSprite(&gUnknown_846AF60, 0, 92, 0);
gSprites[spriteId].data[0] = 48;
if (sub_81474CC() == TRUE)
{
StartSpriteAnim(&gSprites[spriteId], 1);
}
else
{
gSprites[spriteId].pos1.x = 240;
gSprites[spriteId].data[0] *= -1;
}
}
void sub_8147418(struct Sprite * sprite)
{
sprite->data[1] += sprite->data[0];
sprite->pos2.x = sprite->data[1] >> 4;
if (sprite->data[2] % 5 == 0)
{
sub_814746C(sprite->pos1.x + sprite->pos2.x);
}
sprite->data[2]++;
if ((u16)(300 + sprite->pos2.x) > 600)
{
DestroySprite(sprite);
}
}
void sub_814746C(s16 x)
{
u8 spriteId = CreateSprite(&gUnknown_846AFD0, x, 92, 8);
if (spriteId != MAX_SPRITES)
{
if (sub_81474CC() == TRUE)
{
StartSpriteAnim(&gSprites[spriteId], 1);
}
}
}
void sub_81474B0(struct Sprite * sprite)
{
if (sprite->animEnded)
{
DestroySprite(sprite);
}
}
bool8 sub_81474CC(void)
{
if (gSpecialVar_0x8004 >= NELEMS(gUnknown_846AF28))
{
return TRUE;
}
return (gUnknown_846AF28[gSpecialVar_0x8004] >> gSpecialVar_0x8006) & 1;
}
+1 -3
View File
@@ -1625,9 +1625,7 @@ gUnknown_203F3B8: @ 203F3B8
.include "src/mevent_server_helpers.o" .include "src/mevent_server_helpers.o"
.include "src/mevent_server.o" .include "src/mevent_server.o"
.include "src/mevent_8145654.o" .include "src/mevent_8145654.o"
.include "src/seagallop.o"
gUnknown_203F3D0: @ 203F3D0
.space 0x4
gUnknown_203F3D4: @ 203F3D4 gUnknown_203F3D4: @ 203F3D4
.space 0x4 .space 0x4