through ChooseAmbientCrySpecies

This commit is contained in:
PikalaxALT
2020-03-28 10:42:23 -04:00
parent fe9c3d3b58
commit 816e7ad1f8
15 changed files with 319 additions and 793 deletions
-775
View File
@@ -5,781 +5,6 @@
.text .text
thumb_func_start GetAdjustedInitialDirection
GetAdjustedInitialDirection: @ 8055B74
push {r4-r7,lr}
adds r6, r0, 0
lsls r1, 24
lsrs r7, r1, 24
lsls r2, 16
lsrs r4, r2, 16
lsls r3, 24
lsrs r5, r3, 24
ldr r0, _08055BD4 @ =0x00000802
bl FlagGet
lsls r0, 24
cmp r0, 0
beq _08055B94
cmp r5, 0x6
beq _08055C3E
_08055B94:
lsls r4, 24
lsrs r5, r4, 24
adds r0, r5, 0
bl MetatileBehavior_ReturnFalse_2
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
beq _08055BD0
adds r0, r5, 0
bl MetatileBehavior_IsNonAnimDoor
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
beq _08055C68
adds r0, r5, 0
bl MetatileBehavior_IsWarpDoor_2
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
beq _08055C68
adds r0, r5, 0
bl MetatileBehavior_IsSouthArrowWarp
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _08055BD8
_08055BD0:
movs r0, 0x2
b _08055C6E
.align 2, 0
_08055BD4: .4byte 0x00000802
_08055BD8:
adds r0, r5, 0
bl MetatileBehavior_IsNorthArrowWarp
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
beq _08055C68
adds r0, r5, 0
bl MetatileBehavior_IsWestArrowWarp
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
beq _08055C3E
adds r0, r5, 0
bl MetatileBehavior_IsEastArrowWarp
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
beq _08055C1E
adds r0, r5, 0
bl MetatileBehavior_IsUnknownWarp6C
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
beq _08055C1E
adds r0, r5, 0
bl MetatileBehavior_IsUnknownWarp6E
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _08055C22
_08055C1E:
movs r0, 0x3
b _08055C6E
_08055C22:
adds r0, r5, 0
bl MetatileBehavior_IsUnknownWarp6D
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
beq _08055C3E
adds r0, r5, 0
bl MetatileBehavior_IsUnknownWarp6F
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _08055C42
_08055C3E:
movs r0, 0x4
b _08055C6E
_08055C42:
ldrb r0, [r6]
cmp r0, 0x10
bne _08055C4C
cmp r7, 0x8
beq _08055C6C
_08055C4C:
cmp r0, 0x8
bne _08055C54
cmp r7, 0x10
beq _08055C6C
_08055C54:
lsrs r0, r4, 24
bl MetatileBehavior_IsLadder
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
beq _08055C6C
ldrb r0, [r6, 0x2]
cmp r0, 0
bne _08055C6C
_08055C68:
movs r0, 0x1
b _08055C6E
_08055C6C:
ldrb r0, [r6, 0x1]
_08055C6E:
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end GetAdjustedInitialDirection
thumb_func_start GetCenterScreenMetatileBehavior
GetCenterScreenMetatileBehavior: @ 8055C74
push {lr}
ldr r0, _08055C98 @ =gSaveBlock1Ptr
ldr r1, [r0]
ldrh r0, [r1]
adds r0, 0x7
lsls r0, 16
asrs r0, 16
ldrh r1, [r1, 0x2]
adds r1, 0x7
lsls r1, 16
asrs r1, 16
bl MapGridGetMetatileBehaviorAt
lsls r0, 16
lsrs r0, 16
pop {r1}
bx r1
.align 2, 0
_08055C98: .4byte gSaveBlock1Ptr
thumb_func_end GetCenterScreenMetatileBehavior
thumb_func_start Overworld_IsBikingAllowed
Overworld_IsBikingAllowed: @ 8055C9C
push {lr}
ldr r0, _08055CAC @ =gMapHeader
ldrb r0, [r0, 0x18]
cmp r0, 0
beq _08055CB0
movs r0, 0x1
b _08055CB2
.align 2, 0
_08055CAC: .4byte gMapHeader
_08055CB0:
movs r0, 0
_08055CB2:
pop {r1}
bx r1
thumb_func_end Overworld_IsBikingAllowed
thumb_func_start SetDefaultFlashLevel
SetDefaultFlashLevel: @ 8055CB8
push {lr}
ldr r0, _08055CC8 @ =gMapHeader
ldrb r1, [r0, 0x15]
cmp r1, 0
bne _08055CD0
ldr r0, _08055CCC @ =gSaveBlock1Ptr
ldr r0, [r0]
b _08055CF8
.align 2, 0
_08055CC8: .4byte gMapHeader
_08055CCC: .4byte gSaveBlock1Ptr
_08055CD0:
ldr r0, _08055CE8 @ =0x00000806
bl FlagGet
lsls r0, 24
cmp r0, 0
beq _08055CF0
ldr r0, _08055CEC @ =gSaveBlock1Ptr
ldr r0, [r0]
adds r0, 0x30
movs r1, 0
b _08055CFA
.align 2, 0
_08055CE8: .4byte 0x00000806
_08055CEC: .4byte gSaveBlock1Ptr
_08055CF0:
ldr r0, _08055D00 @ =gSaveBlock1Ptr
ldr r0, [r0]
ldr r1, _08055D04 @ =gMaxFlashLevel
ldr r1, [r1]
_08055CF8:
adds r0, 0x30
_08055CFA:
strb r1, [r0]
pop {r0}
bx r0
.align 2, 0
_08055D00: .4byte gSaveBlock1Ptr
_08055D04: .4byte gMaxFlashLevel
thumb_func_end SetDefaultFlashLevel
thumb_func_start Overworld_SetFlashLevel
Overworld_SetFlashLevel: @ 8055D08
push {lr}
adds r1, r0, 0
cmp r1, 0
blt _08055D18
ldr r0, _08055D28 @ =gMaxFlashLevel
ldr r0, [r0]
cmp r1, r0
ble _08055D1A
_08055D18:
movs r1, 0
_08055D1A:
ldr r0, _08055D2C @ =gSaveBlock1Ptr
ldr r0, [r0]
adds r0, 0x30
strb r1, [r0]
pop {r0}
bx r0
.align 2, 0
_08055D28: .4byte gMaxFlashLevel
_08055D2C: .4byte gSaveBlock1Ptr
thumb_func_end Overworld_SetFlashLevel
thumb_func_start Overworld_GetFlashLevel
Overworld_GetFlashLevel: @ 8055D30
ldr r0, _08055D3C @ =gSaveBlock1Ptr
ldr r0, [r0]
adds r0, 0x30
ldrb r0, [r0]
bx lr
.align 2, 0
_08055D3C: .4byte gSaveBlock1Ptr
thumb_func_end Overworld_GetFlashLevel
thumb_func_start SetCurrentMapLayout
SetCurrentMapLayout: @ 8055D40
push {lr}
ldr r1, _08055D54 @ =gSaveBlock1Ptr
ldr r1, [r1]
strh r0, [r1, 0x32]
bl GetMapLayout
ldr r1, _08055D58 @ =gMapHeader
str r0, [r1]
pop {r0}
bx r0
.align 2, 0
_08055D54: .4byte gSaveBlock1Ptr
_08055D58: .4byte gMapHeader
thumb_func_end SetCurrentMapLayout
thumb_func_start sub_8055D5C
sub_8055D5C: @ 8055D5C
ldr r2, _08055D68 @ =sWarpDestination
ldr r1, [r0, 0x4]
ldr r0, [r0]
str r0, [r2]
str r1, [r2, 0x4]
bx lr
.align 2, 0
_08055D68: .4byte sWarpDestination
thumb_func_end sub_8055D5C
thumb_func_start sub_8055D6C
sub_8055D6C: @ 8055D6C
push {lr}
adds r1, r0, 0
movs r0, 0
ldrsb r0, [r1, r0]
lsls r0, 16
lsrs r0, 16
ldrb r1, [r1, 0x1]
lsls r1, 24
asrs r1, 24
lsls r1, 16
lsrs r1, 16
bl Overworld_GetMapHeaderByGroupAndId
ldrh r0, [r0, 0x10]
pop {r1}
bx r1
thumb_func_end sub_8055D6C
thumb_func_start sub_8055D8C
sub_8055D8C: @ 8055D8C
push {lr}
ldr r0, _08055DA0 @ =gSaveBlock1Ptr
ldr r0, [r0]
adds r0, 0x4
bl sub_8055D6C
lsls r0, 16
lsrs r0, 16
pop {r1}
bx r1
.align 2, 0
_08055DA0: .4byte gSaveBlock1Ptr
thumb_func_end sub_8055D8C
thumb_func_start sub_8055DA4
sub_8055DA4: @ 8055DA4
push {lr}
ldr r0, _08055DB4 @ =sWarpDestination
bl sub_8055D6C
lsls r0, 16
lsrs r0, 16
pop {r1}
bx r1
.align 2, 0
_08055DB4: .4byte sWarpDestination
thumb_func_end sub_8055DA4
thumb_func_start sub_8055DB8
sub_8055DB8: @ 8055DB8
push {lr}
bl ResetMapMusic
pop {r0}
bx r0
thumb_func_end sub_8055DB8
thumb_func_start Overworld_PlaySpecialMapMusic
Overworld_PlaySpecialMapMusic: @ 8055DC4
push {r4,r5,lr}
sub sp, 0x4
ldr r0, _08055DD8 @ =gDisableMapMusicChangeOnMapLoad
ldrb r0, [r0]
cmp r0, 0x1
bne _08055DDC
bl StopMapMusic
b _08055E6C
.align 2, 0
_08055DD8: .4byte gDisableMapMusicChangeOnMapLoad
_08055DDC:
cmp r0, 0x2
beq _08055E6C
ldr r0, _08055E14 @ =gSaveBlock1Ptr
ldr r0, [r0]
ldrh r1, [r0, 0x4]
ldr r0, _08055E18 @ =0x00004f01
cmp r1, r0
bne _08055E24
mov r4, sp
adds r4, 0x2
mov r0, sp
adds r1, r4, 0
bl PlayerGetDestCoords
movs r1, 0
ldrsh r0, [r4, r1]
subs r0, 0x7
cmp r0, 0xA
bgt _08055E24
ldr r0, _08055E1C @ =gMPlayInfo_BGM
ldr r1, [r0]
ldr r0, _08055E20 @ =mus_win_gym
cmp r1, r0
bne _08055E24
movs r0, 0x4
bl FadeInBGM
b _08055E6C
.align 2, 0
_08055E14: .4byte gSaveBlock1Ptr
_08055E18: .4byte 0x00004f01
_08055E1C: .4byte gMPlayInfo_BGM
_08055E20: .4byte mus_win_gym
_08055E24:
bl sub_8055D8C
lsls r0, 16
lsrs r4, r0, 16
ldr r0, _08055E3C @ =gSaveBlock1Ptr
ldr r1, [r0]
ldrh r0, [r1, 0x2C]
cmp r0, 0
beq _08055E40
adds r4, r0, 0
b _08055E5A
.align 2, 0
_08055E3C: .4byte gSaveBlock1Ptr
_08055E40:
movs r0, 0x8
bl TestPlayerAvatarFlags
lsls r0, 24
cmp r0, 0
beq _08055E5A
ldr r5, _08055E74 @ =0x00000131 @ MUS_NAMINORI
adds r0, r5, 0
bl sub_8056124
cmp r0, 0
beq _08055E5A
adds r4, r5, 0
_08055E5A:
bl GetCurrentMapMusic
lsls r0, 16
lsrs r0, 16
cmp r4, r0
beq _08055E6C
adds r0, r4, 0
bl PlayNewMapMusic
_08055E6C:
add sp, 0x4
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08055E74: .4byte 0x00000131
thumb_func_end Overworld_PlaySpecialMapMusic
thumb_func_start Overworld_SetSavedMusic
Overworld_SetSavedMusic: @ 8055E78
ldr r1, _08055E80 @ =gSaveBlock1Ptr
ldr r1, [r1]
strh r0, [r1, 0x2C]
bx lr
.align 2, 0
_08055E80: .4byte gSaveBlock1Ptr
thumb_func_end Overworld_SetSavedMusic
thumb_func_start Overworld_ClearSavedMusic
Overworld_ClearSavedMusic: @ 8055E84
ldr r0, _08055E90 @ =gSaveBlock1Ptr
ldr r1, [r0]
movs r0, 0
strh r0, [r1, 0x2C]
bx lr
.align 2, 0
_08055E90: .4byte gSaveBlock1Ptr
thumb_func_end Overworld_ClearSavedMusic
thumb_func_start sub_8055E94
sub_8055E94: @ 8055E94
push {r4-r6,lr}
ldr r0, _08055EA4 @ =gDisableMapMusicChangeOnMapLoad
ldrb r0, [r0]
cmp r0, 0x1
bne _08055EA8
bl StopMapMusic
b _08055F14
.align 2, 0
_08055EA4: .4byte gDisableMapMusicChangeOnMapLoad
_08055EA8:
cmp r0, 0x2
beq _08055F14
ldr r0, _08055F04 @ =0x00004001
bl FlagGet
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
beq _08055F14
bl sub_8055DA4
lsls r0, 16
lsrs r4, r0, 16
bl GetCurrentMapMusic
lsls r0, 16
lsrs r6, r0, 16
ldr r5, _08055F08 @ =0x00000131 @ MUS_NAMINORI
cmp r6, r5
beq _08055F14
movs r0, 0x8
bl TestPlayerAvatarFlags
lsls r0, 24
cmp r0, 0
beq _08055EE8
adds r0, r5, 0
bl sub_8056124
cmp r0, 0
beq _08055EE8
adds r4, r5, 0
_08055EE8:
cmp r4, r6
beq _08055F14
movs r0, 0x6
bl TestPlayerAvatarFlags
lsls r0, 24
cmp r0, 0
beq _08055F0C
adds r0, r4, 0
movs r1, 0x4
movs r2, 0x4
bl FadeOutAndFadeInNewMapMusic
b _08055F14
.align 2, 0
_08055F04: .4byte 0x00004001
_08055F08: .4byte 0x00000131
_08055F0C:
adds r0, r4, 0
movs r1, 0x8
bl FadeOutAndPlayNewMapMusic
_08055F14:
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end sub_8055E94
thumb_func_start Overworld_ChangeMusicToDefault
Overworld_ChangeMusicToDefault: @ 8055F1C
push {r4,lr}
bl GetCurrentMapMusic
adds r4, r0, 0
lsls r4, 16
lsrs r4, 16
bl sub_8055D8C
lsls r0, 16
lsrs r0, 16
cmp r4, r0
beq _08055F42
bl sub_8055D8C
lsls r0, 16
lsrs r0, 16
movs r1, 0x8
bl FadeOutAndPlayNewMapMusic
_08055F42:
pop {r4}
pop {r0}
bx r0
thumb_func_end Overworld_ChangeMusicToDefault
thumb_func_start Overworld_ChangeMusicTo
Overworld_ChangeMusicTo: @ 8055F48
push {r4,lr}
lsls r0, 16
lsrs r4, r0, 16
bl GetCurrentMapMusic
lsls r0, 16
lsrs r0, 16
cmp r0, r4
beq _08055F62
adds r0, r4, 0
movs r1, 0x8
bl FadeOutAndPlayNewMapMusic
_08055F62:
pop {r4}
pop {r0}
bx r0
thumb_func_end Overworld_ChangeMusicTo
thumb_func_start GetMapMusicFadeoutSpeed
GetMapMusicFadeoutSpeed: @ 8055F68
push {lr}
bl GetDestinationWarpMapHeader
ldrb r0, [r0, 0x17]
bl IsMapTypeIndoors
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
beq _08055F80
movs r0, 0x4
b _08055F82
_08055F80:
movs r0, 0x2
_08055F82:
pop {r1}
bx r1
thumb_func_end GetMapMusicFadeoutSpeed
thumb_func_start TryFadeOutOldMapMusic
TryFadeOutOldMapMusic: @ 8055F88
push {r4,lr}
bl sub_8055DA4
lsls r0, 16
lsrs r4, r0, 16
ldr r0, _08055FC0 @ =0x00004001
bl FlagGet
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
beq _08055FB8
bl GetCurrentMapMusic
lsls r0, 16
lsrs r0, 16
cmp r4, r0
beq _08055FB8
bl GetMapMusicFadeoutSpeed
lsls r0, 24
lsrs r0, 24
bl FadeOutMapMusic
_08055FB8:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08055FC0: .4byte 0x00004001
thumb_func_end TryFadeOutOldMapMusic
thumb_func_start BGMusicStopped
BGMusicStopped: @ 8055FC4
push {lr}
bl IsNotWaitingForBGMStop
lsls r0, 24
lsrs r0, 24
pop {r1}
bx r1
thumb_func_end BGMusicStopped
thumb_func_start Overworld_FadeOutMapMusic
Overworld_FadeOutMapMusic: @ 8055FD4
push {lr}
movs r0, 0x4
bl FadeOutMapMusic
pop {r0}
bx r0
thumb_func_end Overworld_FadeOutMapMusic
thumb_func_start sub_8055FE0
sub_8055FE0: @ 8055FE0
push {r4,lr}
sub sp, 0x4
mov r4, sp
adds r4, 0x2
mov r0, sp
adds r1, r4, 0
bl PlayerGetDestCoords
ldr r0, _0805604C @ =gUnknown_2031DDC
ldrb r0, [r0]
cmp r0, 0x1
bne _08056014
mov r0, sp
movs r1, 0
ldrsh r0, [r0, r1]
movs r2, 0
ldrsh r1, [r4, r2]
bl MapGridGetMetatileBehaviorAt
lsls r0, 24
lsrs r0, 24
bl MetatileBehavior_IsSurfable
lsls r0, 24
cmp r0, 0
beq _0805606A
_08056014:
bl Random
lsls r0, 16
lsrs r0, 16
movs r1, 0x58
bl __umodsi3
adds r0, 0xD4
lsls r0, 24
lsrs r4, r0, 24
bl Random
lsls r0, 16
lsrs r0, 16
movs r1, 0x1E
bl __umodsi3
adds r0, 0x32
lsls r0, 24
lsrs r2, r0, 24
ldr r0, _08056050 @ =gDisableMapMusicChangeOnMapLoad
ldrb r0, [r0]
cmp r0, 0x1
bne _08056054
bl StopMapMusic
b _0805606A
.align 2, 0
_0805604C: .4byte gUnknown_2031DDC
_08056050: .4byte gDisableMapMusicChangeOnMapLoad
_08056054:
cmp r0, 0x2
beq _0805606A
ldr r0, _08056074 @ =gUnknown_2031DDA
ldrh r0, [r0]
lsls r1, r4, 24
asrs r1, 24
lsls r2, 24
asrs r2, 24
movs r3, 0x1
bl PlayCry2
_0805606A:
add sp, 0x4
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08056074: .4byte gUnknown_2031DDA
thumb_func_end sub_8055FE0
thumb_func_start sub_8056078
sub_8056078: @ 8056078
push {r4-r6,lr}
adds r6, r0, 0
adds r5, r1, 0
movs r1, 0
ldrsh r0, [r6, r1]
cmp r0, 0x4
bhi _08056106
lsls r0, 2
ldr r1, _08056090 @ =_08056094
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08056090: .4byte _08056094
.align 2, 0
_08056094:
.4byte _080560A8
.4byte _080560BC
.4byte _080560D8
.4byte _080560F2
.4byte _08056106
_080560A8:
ldr r0, _080560B4 @ =gUnknown_2031DDA
ldrh r0, [r0]
cmp r0, 0
bne _080560B8
movs r0, 0x4
b _08056104
.align 2, 0
_080560B4: .4byte gUnknown_2031DDA
_080560B8:
movs r0, 0x1
b _08056104
_080560BC:
bl Random
lsls r0, 16
lsrs r0, 16
movs r1, 0x96
lsls r1, 4
bl __umodsi3
movs r1, 0x96
lsls r1, 3
adds r0, r1
strh r0, [r5]
movs r0, 0x3
b _08056104
_080560D8:
bl Random
lsls r0, 16
lsrs r0, 16
movs r4, 0x96
lsls r4, 3
adds r1, r4, 0
bl __umodsi3
adds r0, r4
strh r0, [r5]
movs r0, 0x3
b _08056104
_080560F2:
ldrh r0, [r5]
subs r0, 0x1
strh r0, [r5]
lsls r0, 16
cmp r0, 0
bne _08056106
bl sub_8055FE0
movs r0, 0x2
_08056104:
strh r0, [r6]
_08056106:
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end sub_8056078
thumb_func_start ChooseAmbientCrySpecies
ChooseAmbientCrySpecies: @ 805610C
push {lr}
ldr r0, _0805611C @ =gUnknown_2031DDC
bl GetLocalWildMon
ldr r1, _08056120 @ =gUnknown_2031DDA
strh r0, [r1]
pop {r0}
bx r0
.align 2, 0
_0805611C: .4byte gUnknown_2031DDC
_08056120: .4byte gUnknown_2031DDA
thumb_func_end ChooseAmbientCrySpecies
thumb_func_start sub_8056124 thumb_func_start sub_8056124
sub_8056124: @ 8056124 sub_8056124: @ 8056124
push {lr} push {lr}
+1 -1
View File
@@ -60,7 +60,7 @@ CinnabarIsland_OnFrame:: @ 8166F6E
CinnabarIsland_EventScript_ExitPokeCenterForOneIsland:: @ 8166F88 CinnabarIsland_EventScript_ExitPokeCenterForOneIsland:: @ 8166F88
lockall lockall
clearflag FLAG_SPECIAL_FLAG_0x4001 clearflag FLAG_DONT_TRANSITION_MUSIC
savebgm MUS_DUMMY savebgm MUS_DUMMY
textcolor 0 textcolor 0
setvar VAR_MAP_SCENE_CINNABAR_ISLAND_2, 2 setvar VAR_MAP_SCENE_CINNABAR_ISLAND_2, 2
@@ -36,7 +36,7 @@ CinnabarIsland_PokemonCenter_1F_EventScript_Bill:: @ 816E90A
closemessage closemessage
playbgm MUS_ANNAI, 1 playbgm MUS_ANNAI, 1
savebgm MUS_ANNAI savebgm MUS_ANNAI
setflag FLAG_SPECIAL_FLAG_0x4001 setflag FLAG_DONT_TRANSITION_MUSIC
setflag FLAG_HIDE_CINNABAR_POKECENTER_BILL setflag FLAG_HIDE_CINNABAR_POKECENTER_BILL
delay 20 delay 20
compare VAR_FACING, DIR_SOUTH compare VAR_FACING, DIR_SOUTH
+1 -1
View File
@@ -224,7 +224,7 @@ PalletTown_EventScript_OakTrigger:: @ 8165605
clearflag FLAG_HIDE_OAK_IN_HIS_LAB clearflag FLAG_HIDE_OAK_IN_HIS_LAB
setvar VAR_MAP_SCENE_PALLET_TOWN_OAK, 1 setvar VAR_MAP_SCENE_PALLET_TOWN_OAK, 1
setflag FLAG_HIDE_OAK_IN_PALLET_TOWN setflag FLAG_HIDE_OAK_IN_PALLET_TOWN
setflag FLAG_SPECIAL_FLAG_0x4001 setflag FLAG_DONT_TRANSITION_MUSIC
warp MAP_PALLET_TOWN_PROFESSOR_OAKS_LAB, 255, 6, 12 warp MAP_PALLET_TOWN_PROFESSOR_OAKS_LAB, 255, 6, 12
waitstate waitstate
releaseall releaseall
@@ -238,7 +238,7 @@ PalletTown_ProfessorOaksLab_ChooseStarterScene:: @ 816923E
waitmovement 0 waitmovement 0
applymovement LOCALID_RIVAL, Movement_WalkInPlaceFastestUp applymovement LOCALID_RIVAL, Movement_WalkInPlaceFastestUp
waitmovement 0 waitmovement 0
clearflag FLAG_SPECIAL_FLAG_0x4001 clearflag FLAG_DONT_TRANSITION_MUSIC
savebgm SE_STOP savebgm SE_STOP
fadedefaultbgm fadedefaultbgm
msgbox PalletTown_ProfessorOaksLab_Text_RivalFedUpWithWaiting msgbox PalletTown_ProfessorOaksLab_Text_RivalFedUpWithWaiting
+1 -1
View File
@@ -1438,7 +1438,7 @@
#define SPECIAL_FLAGS_START 0x4000 #define SPECIAL_FLAGS_START 0x4000
#define SPECIAL_FLAGS_COUNT 16 #define SPECIAL_FLAGS_COUNT 16
#define FLAG_SPECIAL_FLAG_0x4000 0x4000 #define FLAG_SPECIAL_FLAG_0x4000 0x4000
#define FLAG_SPECIAL_FLAG_0x4001 0x4001 #define FLAG_DONT_TRANSITION_MUSIC 0x4001
#define FLAG_SPECIAL_FLAG_0x4002 0x4002 #define FLAG_SPECIAL_FLAG_0x4002 0x4002
#define FLAG_SPECIAL_FLAG_0x4003 0x4003 #define FLAG_SPECIAL_FLAG_0x4003 0x4003
#define FLAG_SPECIAL_FLAG_0x4004 0x4004 #define FLAG_SPECIAL_FLAG_0x4004 0x4004
+2
View File
@@ -11,4 +11,6 @@ void DoOutwardBarnDoorWipe(void);
void Task_BarnDoorWipe(u8 taskId); void Task_BarnDoorWipe(u8 taskId);
void sub_807F5F0(void); void sub_807F5F0(void);
extern const s32 gMaxFlashLevel;
#endif // GUARD_FIELD_SCREEN_EFFECT_H #endif // GUARD_FIELD_SCREEN_EFFECT_H
+10 -1
View File
@@ -195,12 +195,21 @@ struct MapHeader
/* 0x15 */ u8 cave; /* 0x15 */ u8 cave;
/* 0x16 */ u8 weather; /* 0x16 */ u8 weather;
/* 0x17 */ u8 mapType; /* 0x17 */ u8 mapType;
/* 0x18 */ u8 filler_18; /* 0x18 */ u8 bikingAllowed;
/* 0x19 */ u8 escapeRope; /* 0x19 */ u8 escapeRope;
/* 0x1A */ s8 flags; /* 0x1A */ s8 flags;
/* 0x1B */ u8 battleType; /* 0x1B */ u8 battleType;
}; };
// Flags for gMapHeader.flags, as defined in the map_header_flags macro
#define MAP_ALLOW_BIKE (1 << 0)
#define MAP_ALLOW_ESCAPE_ROPE (1 << 1)
#define MAP_ALLOW_RUN (1 << 2)
#define MAP_SHOW_MAP_NAME (1 << 3)
#define UNUSED_MAP_FLAGS (1 << 4 | 1 << 5 | 1 << 6 | 1 << 7)
#define SHOW_MAP_NAME_ENABLED ((gMapHeader.flags & (MAP_SHOW_MAP_NAME | UNUSED_MAP_FLAGS)) == MAP_SHOW_MAP_NAME)
struct ObjectEvent struct ObjectEvent
{ {
/*0x00*/ /* 0*/ u32 active:1; /*0x00*/ /* 0*/ u32 active:1;
+2
View File
@@ -25,4 +25,6 @@ void m4aMPlayFadeOutTemporarily(struct MusicPlayerInfo *mplayInfo, u16 speed);
void m4aMPlayFadeIn(struct MusicPlayerInfo *mplayInfo, u16 speed); void m4aMPlayFadeIn(struct MusicPlayerInfo *mplayInfo, u16 speed);
void m4aMPlayImmInit(struct MusicPlayerInfo *mplayInfo); void m4aMPlayImmInit(struct MusicPlayerInfo *mplayInfo);
extern const struct SongHeader mus_win_gym;
#endif //GUARD_M4A_H #endif //GUARD_M4A_H
+1 -1
View File
@@ -24,7 +24,7 @@ bool8 MetatileBehavior_IsUnknownWarp6F(u8 metatileBehavior);
bool8 MetatileBehavior_IsUnknownWarp6C_to_6F(u8 metatileBehavior); bool8 MetatileBehavior_IsUnknownWarp6C_to_6F(u8 metatileBehavior);
bool8 MetatileBehavior_IsLadder(u8 metatileBehavior); bool8 MetatileBehavior_IsLadder(u8 metatileBehavior);
bool8 MetatileBehavior_IsNonAnimDoor(u8 metatileBehavior); bool8 MetatileBehavior_IsNonAnimDoor(u8 metatileBehavior);
bool8 MetatileBehavior_ReturnFalse_2(u8 metatileBehavior); bool8 MetatileBehavior_IsDeepSouthWarp(u8 metatileBehavior);
bool8 MetatileBehavior_IsSurfable(u8 metatileBehavior); bool8 MetatileBehavior_IsSurfable(u8 metatileBehavior);
bool8 MetatileBehavior_IsSemiDeepWater(u8 metatileBehavior); bool8 MetatileBehavior_IsSemiDeepWater(u8 metatileBehavior);
bool8 MetatileBehavior_IsEastArrowWarp(u8 metatileBehavior); bool8 MetatileBehavior_IsEastArrowWarp(u8 metatileBehavior);
+2 -2
View File
@@ -177,14 +177,14 @@ void SetContinueGameWarpToDynamicWarp(int);
void SetContinueGameWarpToHealLocation(u8 loc); void SetContinueGameWarpToHealLocation(u8 loc);
void sub_8056078(void *, void *); void UpdateAmbientCry(s16 *state, u16 *delayCounter);
void SetWarpDestinationToHealLocation(u8 a0); void SetWarpDestinationToHealLocation(u8 a0);
bool32 sub_80582E0(void); bool32 sub_80582E0(void);
bool32 sub_8058274(void); bool32 sub_8058274(void);
u8 GetCurrentMapBattleScene(void); u8 GetCurrentMapBattleScene(void);
void Overworld_ResetStateAfterFly(void); void Overworld_ResetStateAfterFly(void);
bool8 sub_8055B38(u16 metatileBehavior); bool8 sub_8055B38(u16 metatileBehavior);
void sub_8055DB8(void); void Overworld_ResetMapMusic(void);
void sub_8057F5C(void); void sub_8057F5C(void);
void sub_8057F34(void); void sub_8057F34(void);
u32 sub_8057EC0(void); u32 sub_8057EC0(void);
+1 -1
View File
@@ -724,7 +724,7 @@ static void sub_8081624(void)
void CB2_ReturnFromCableClubBattle(void) void CB2_ReturnFromCableClubBattle(void)
{ {
gBattleTypeFlags &= (u16)~BATTLE_TYPE_20; gBattleTypeFlags &= (u16)~BATTLE_TYPE_20;
sub_8055DB8(); Overworld_ResetMapMusic();
LoadPlayerParty(); LoadPlayerParty();
SavePlayerBag(); SavePlayerBag();
Special_UpdateTrainerFansAfterLinkBattle(); Special_UpdateTrainerFansAfterLinkBattle();
+1 -1
View File
@@ -63,7 +63,7 @@ static void Task_RunTimeBasedEvents(u8 taskId)
{ {
if (gQuestLogState != 2 && gQuestLogState != 3) if (gQuestLogState != 2 && gQuestLogState != 3)
{ {
sub_8056078(&data[1], &data[2]); UpdateAmbientCry(&data[1], &data[2]);
} }
} }
} }
+1 -1
View File
@@ -199,7 +199,7 @@ bool8 MetatileBehavior_IsNonAnimDoor(u8 metatileBehavior)
return FALSE; return FALSE;
} }
bool8 MetatileBehavior_ReturnFalse_2(u8 metatileBehavior) { return FALSE; } bool8 MetatileBehavior_IsDeepSouthWarp(u8 metatileBehavior) { return FALSE; }
bool8 MetatileBehavior_IsSurfable(u8 metatileBehavior) bool8 MetatileBehavior_IsSurfable(u8 metatileBehavior)
{ {
+294 -6
View File
@@ -5,16 +5,19 @@
#include "field_camera.h" #include "field_camera.h"
#include "field_control_avatar.h" #include "field_control_avatar.h"
#include "field_player_avatar.h" #include "field_player_avatar.h"
#include "field_screen_effect.h"
#include "field_specials.h" #include "field_specials.h"
#include "field_weather.h" #include "field_weather.h"
#include "fieldmap.h" #include "fieldmap.h"
#include "heal_location.h" #include "heal_location.h"
#include "load_save.h" #include "load_save.h"
#include "m4a.h"
#include "map_name_popup.h" #include "map_name_popup.h"
#include "metatile_behavior.h" #include "metatile_behavior.h"
#include "money.h" #include "money.h"
#include "overworld.h" #include "overworld.h"
#include "quest_log.h" #include "quest_log.h"
#include "random.h"
#include "renewable_hidden_items.h" #include "renewable_hidden_items.h"
#include "roamer.h" #include "roamer.h"
#include "save_location.h" #include "save_location.h"
@@ -22,9 +25,11 @@
#include "script_pokemon_util.h" #include "script_pokemon_util.h"
#include "tileset_anims.h" #include "tileset_anims.h"
#include "vs_seeker.h" #include "vs_seeker.h"
#include "wild_encounter.h"
#include "constants/maps.h" #include "constants/maps.h"
#include "constants/flags.h" #include "constants/flags.h"
#include "constants/species.h" #include "constants/species.h"
#include "constants/songs.h"
struct InitialPlayerAvatarState struct InitialPlayerAvatarState
{ {
@@ -39,8 +44,8 @@ EWRAM_DATA struct WarpData gFixedDiveWarp = {};
EWRAM_DATA struct WarpData gFixedHoleWarp = {}; EWRAM_DATA struct WarpData gFixedHoleWarp = {};
EWRAM_DATA struct InitialPlayerAvatarState gInitialPlayerAvatarState = {}; EWRAM_DATA struct InitialPlayerAvatarState gInitialPlayerAvatarState = {};
EWRAM_DATA bool8 gDisableMapMusicChangeOnMapLoad = FALSE; EWRAM_DATA bool8 gDisableMapMusicChangeOnMapLoad = FALSE;
EWRAM_DATA u16 gUnknown_2031DDA = SPECIES_NONE; EWRAM_DATA u16 sAmbientCrySpecies = SPECIES_NONE;
EWRAM_DATA bool8 gUnknown_2031DDC = FALSE; EWRAM_DATA bool8 sIsAmbientCryWaterMon = FALSE;
// File boundary perhaps? // File boundary perhaps?
ALIGNED(4) EWRAM_DATA bool8 gUnknown_2031DE0 = FALSE; ALIGNED(4) EWRAM_DATA bool8 gUnknown_2031DE0 = FALSE;
@@ -57,8 +62,9 @@ void Overworld_SetWhiteoutRespawnPoint(void);
u8 GetAdjustedInitialTransitionFlags(struct InitialPlayerAvatarState *playerStruct, u16 metatileBehavior, u8 mapType); u8 GetAdjustedInitialTransitionFlags(struct InitialPlayerAvatarState *playerStruct, u16 metatileBehavior, u8 mapType);
u8 GetAdjustedInitialDirection(struct InitialPlayerAvatarState *playerStruct, u8 transitionFlags, u16 metatileBehavior, u8 mapType); u8 GetAdjustedInitialDirection(struct InitialPlayerAvatarState *playerStruct, u8 transitionFlags, u16 metatileBehavior, u8 mapType);
u16 GetCenterScreenMetatileBehavior(void); u16 GetCenterScreenMetatileBehavior(void);
void sub_8055E94(void); bool8 sub_8055B38(u16 metatileBehavior);
void SetDefaultFlashLevel(void); void SetDefaultFlashLevel(void);
void Overworld_TryMapConnectionMusicTransition(void);
void ChooseAmbientCrySpecies(void); void ChooseAmbientCrySpecies(void);
extern const struct MapLayout * gMapLayouts[]; extern const struct MapLayout * gMapLayouts[];
@@ -587,7 +593,7 @@ void LoadMapFromCameraTransition(u8 mapGroup, u8 mapNum)
int paletteIndex; int paletteIndex;
SetWarpDestination(mapGroup, mapNum, -1, -1, -1); SetWarpDestination(mapGroup, mapNum, -1, -1, -1);
sub_8055E94(); Overworld_TryMapConnectionMusicTransition();
ApplyCurrentWarp(); ApplyCurrentWarp();
LoadCurrentMapData(); LoadCurrentMapData();
sub_8054F68(); sub_8054F68();
@@ -706,8 +712,6 @@ struct InitialPlayerAvatarState *GetInitialPlayerAvatarState(void)
return &gInitialPlayerAvatarState; return &gInitialPlayerAvatarState;
} }
bool8 sub_8055B38(u16 metatileBehavior);
u8 GetAdjustedInitialTransitionFlags(struct InitialPlayerAvatarState *playerStruct, u16 metatileBehavior, u8 mapType) u8 GetAdjustedInitialTransitionFlags(struct InitialPlayerAvatarState *playerStruct, u16 metatileBehavior, u8 mapType)
{ {
if (mapType != MAP_TYPE_INDOOR && FlagGet(FLAG_SYS_CRUISE_MODE)) if (mapType != MAP_TYPE_INDOOR && FlagGet(FLAG_SYS_CRUISE_MODE))
@@ -736,3 +740,287 @@ bool8 sub_8055B38(u16 metatileBehavior)
return TRUE; return TRUE;
return FALSE; return FALSE;
} }
u8 GetAdjustedInitialDirection(struct InitialPlayerAvatarState *playerStruct, u8 transitionFlags, u16 metatileBehavior, u8 mapType)
{
if (FlagGet(FLAG_SYS_CRUISE_MODE) && mapType == MAP_TYPE_OCEAN_ROUTE)
return DIR_EAST;
else if (MetatileBehavior_IsDeepSouthWarp(metatileBehavior) == TRUE)
return DIR_NORTH;
else if (MetatileBehavior_IsNonAnimDoor(metatileBehavior) == TRUE || MetatileBehavior_IsWarpDoor_2(metatileBehavior) == TRUE)
return DIR_SOUTH;
else if (MetatileBehavior_IsSouthArrowWarp(metatileBehavior) == TRUE)
return DIR_NORTH;
else if (MetatileBehavior_IsNorthArrowWarp(metatileBehavior) == TRUE)
return DIR_SOUTH;
else if (MetatileBehavior_IsWestArrowWarp(metatileBehavior) == TRUE)
return DIR_EAST;
else if (MetatileBehavior_IsEastArrowWarp(metatileBehavior) == TRUE)
return DIR_WEST;
else if (MetatileBehavior_IsUnknownWarp6C(metatileBehavior) == TRUE || MetatileBehavior_IsUnknownWarp6E(metatileBehavior) == TRUE)
return DIR_WEST;
else if (MetatileBehavior_IsUnknownWarp6D(metatileBehavior) == TRUE || MetatileBehavior_IsUnknownWarp6F(metatileBehavior) == TRUE)
return DIR_EAST;
else if ((playerStruct->transitionFlags == PLAYER_AVATAR_FLAG_UNDERWATER && transitionFlags == PLAYER_AVATAR_FLAG_SURFING)
|| (playerStruct->transitionFlags == PLAYER_AVATAR_FLAG_SURFING && transitionFlags == PLAYER_AVATAR_FLAG_UNDERWATER ))
return playerStruct->direction;
else if (MetatileBehavior_IsLadder(metatileBehavior) == TRUE)
return playerStruct->direction;
else if (playerStruct->unk2)
return playerStruct->direction;
else
return DIR_SOUTH;
}
u16 GetCenterScreenMetatileBehavior(void)
{
return MapGridGetMetatileBehaviorAt(gSaveBlock1Ptr->pos.x + 7, gSaveBlock1Ptr->pos.y + 7);
}
bool32 Overworld_IsBikingAllowed(void)
{
if (!gMapHeader.bikingAllowed)
return FALSE;
else
return TRUE;
}
void SetDefaultFlashLevel(void)
{
if (!gMapHeader.cave)
gSaveBlock1Ptr->flashLevel = 0;
else if (FlagGet(FLAG_SYS_FLASH_ACTIVE))
gSaveBlock1Ptr->flashLevel = 0;
else
gSaveBlock1Ptr->flashLevel = gMaxFlashLevel;
}
void Overworld_SetFlashLevel(s32 flashLevel)
{
if (flashLevel < 0 || flashLevel > gMaxFlashLevel)
flashLevel = 0;
gSaveBlock1Ptr->flashLevel = flashLevel;
}
u8 Overworld_GetFlashLevel(void)
{
return gSaveBlock1Ptr->flashLevel;
}
void SetCurrentMapLayout(u16 mapLayoutId)
{
gSaveBlock1Ptr->mapLayoutId = mapLayoutId;
gMapHeader.mapLayout = GetMapLayout();
}
void sub_8055D5C(struct WarpData * warp)
{
sWarpDestination = *warp;
}
u16 GetLocationMusic(struct WarpData * warp)
{
return Overworld_GetMapHeaderByGroupAndId(warp->mapGroup, warp->mapNum)->music;
}
u16 GetCurrLocationDefaultMusic(void)
{
u16 music;
music = GetLocationMusic(&gSaveBlock1Ptr->location);
return music;
}
u16 GetWarpDestinationMusic(void)
{
u16 music = GetLocationMusic(&sWarpDestination);
return music;
}
void Overworld_ResetMapMusic(void)
{
ResetMapMusic();
}
void Overworld_PlaySpecialMapMusic(void)
{
u16 music;
s16 x, y;
if (gDisableMapMusicChangeOnMapLoad == 1)
{
StopMapMusic();
return;
}
if (gDisableMapMusicChangeOnMapLoad == 2)
{
return;
}
if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(POKEMON_LEAGUE_CHAMPIONS_ROOM) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(POKEMON_LEAGUE_CHAMPIONS_ROOM))
{
PlayerGetDestCoords(&x, &y);
if (y - 7 < 11 && gMPlayInfo_BGM.songHeader == &mus_win_gym)
{
FadeInBGM(4);
return;
}
}
music = GetCurrLocationDefaultMusic();
if (gSaveBlock1Ptr->savedMusic)
music = gSaveBlock1Ptr->savedMusic;
else if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING) &&sub_8056124(MUS_NAMINORI))
music = MUS_NAMINORI;
if (music != GetCurrentMapMusic())
PlayNewMapMusic(music);
}
void Overworld_SetSavedMusic(u16 songNum)
{
gSaveBlock1Ptr->savedMusic = songNum;
}
void Overworld_ClearSavedMusic(void)
{
gSaveBlock1Ptr->savedMusic = 0;
}
void Overworld_TryMapConnectionMusicTransition(void)
{
u16 newMusic;
u16 currentMusic;
if (gDisableMapMusicChangeOnMapLoad == 1)
{
StopMapMusic();
return;
}
if (gDisableMapMusicChangeOnMapLoad == 2)
{
return;
}
if (FlagGet(FLAG_DONT_TRANSITION_MUSIC) != TRUE)
{
newMusic = GetWarpDestinationMusic();
currentMusic = GetCurrentMapMusic();
if (currentMusic == MUS_NAMINORI)
return;
if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING) && sub_8056124(MUS_NAMINORI))
newMusic = MUS_NAMINORI;
if (newMusic != currentMusic)
{
if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_MACH_BIKE | PLAYER_AVATAR_FLAG_ACRO_BIKE))
FadeOutAndFadeInNewMapMusic(newMusic, 4, 4);
else
FadeOutAndPlayNewMapMusic(newMusic, 8);
}
}
}
void Overworld_ChangeMusicToDefault(void)
{
u16 currentMusic = GetCurrentMapMusic();
if (currentMusic != GetCurrLocationDefaultMusic())
FadeOutAndPlayNewMapMusic(GetCurrLocationDefaultMusic(), 8);
}
void Overworld_ChangeMusicTo(u16 newMusic)
{
u16 currentMusic = GetCurrentMapMusic();
if (currentMusic != newMusic)
FadeOutAndPlayNewMapMusic(newMusic, 8);
}
u8 GetMapMusicFadeoutSpeed(void)
{
const struct MapHeader *mapHeader = GetDestinationWarpMapHeader();
if (IsMapTypeIndoors(mapHeader->mapType) == TRUE)
return 2;
else
return 4;
}
void TryFadeOutOldMapMusic(void)
{
u16 warpMusic = GetWarpDestinationMusic();
if (FlagGet(FLAG_DONT_TRANSITION_MUSIC) != TRUE && warpMusic != GetCurrentMapMusic())
{
FadeOutMapMusic(GetMapMusicFadeoutSpeed());
}
}
bool8 BGMusicStopped(void)
{
return IsNotWaitingForBGMStop();
}
void Overworld_FadeOutMapMusic(void)
{
FadeOutMapMusic(4);
}
void PlayAmbientCry(void)
{
s16 x, y;
s8 pan;
s8 volume;
PlayerGetDestCoords(&x, &y);
if (sIsAmbientCryWaterMon == TRUE
&& !MetatileBehavior_IsSurfable(MapGridGetMetatileBehaviorAt(x, y)))
return;
pan = (Random() % 88) + 212;
volume = (Random() % 30) + 50;
if (gDisableMapMusicChangeOnMapLoad == 1)
{
StopMapMusic();
return;
}
if (gDisableMapMusicChangeOnMapLoad == 2)
{
return;
}
PlayCry2(sAmbientCrySpecies, pan, volume, 1);
}
void UpdateAmbientCry(s16 *state, u16 *delayCounter)
{
u8 i, monsCount, divBy;
switch (*state)
{
case 0:
if (sAmbientCrySpecies == SPECIES_NONE)
*state = 4;
else
*state = 1;
break;
case 1:
*delayCounter = (Random() % 2400) + 1200;
*state = 3;
break;
case 2:
*delayCounter = (Random() % 1200) + 1200;
*state = 3;
break;
case 3:
(*delayCounter)--;
if (*delayCounter == 0)
{
PlayAmbientCry();
*state = 2;
}
break;
case 4:
break;
}
}
void ChooseAmbientCrySpecies(void)
{
sAmbientCrySpecies = GetLocalWildMon(&sIsAmbientCryWaterMon);
}