diff options
49 files changed, 1451 insertions, 3580 deletions
diff --git a/asm/overworld.s b/asm/overworld.s index f840e590a..f17e829e7 100644 --- a/asm/overworld.s +++ b/asm/overworld.s @@ -5,3301 +5,6 @@ .text - thumb_func_start sub_8054BC8 -sub_8054BC8: @ 8054BC8 - push {r4,lr} - ldr r0, _08054BFC @ =EventScript_ResetEliteFourEnd - bl ScriptContext2_RunNewScript - ldr r0, _08054C00 @ =gSaveBlock1Ptr - ldr r4, [r0] - movs r0, 0xA4 - lsls r0, 2 - adds r4, r0 - bl ComputeWhiteOutMoneyLoss - adds r1, r0, 0 - adds r0, r4, 0 - bl RemoveMoney - bl HealPlayerParty - bl sub_8054DD8 - bl sub_80554BC - bl WarpIntoMap - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08054BFC: .4byte EventScript_ResetEliteFourEnd -_08054C00: .4byte gSaveBlock1Ptr - thumb_func_end sub_8054BC8 - - thumb_func_start ComputeWhiteOutMoneyLoss -ComputeWhiteOutMoneyLoss: @ 8054C04 - push {r4,lr} - bl CountBadgesForOverworldWhiteOutLossCalculation - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl GetPlayerPartyHighestLevel - lsls r0, 24 - lsrs r0, 24 - ldr r1, _08054C40 @ =sWhiteOutMoneyLossMultipliers - adds r4, r1 - ldrb r1, [r4] - lsls r1, 2 - adds r4, r0, 0 - muls r4, r1 - ldr r0, _08054C44 @ =gSaveBlock1Ptr - ldr r0, [r0] - movs r1, 0xA4 - lsls r1, 2 - adds r0, r1 - bl GetMoney - cmp r4, r0 - bls _08054C38 - adds r4, r0, 0 -_08054C38: - adds r0, r4, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08054C40: .4byte sWhiteOutMoneyLossMultipliers -_08054C44: .4byte gSaveBlock1Ptr - thumb_func_end ComputeWhiteOutMoneyLoss - - thumb_func_start OverworldWhiteOutGetMoneyLoss -OverworldWhiteOutGetMoneyLoss: @ 8054C48 - push {r4,r5,lr} - bl ComputeWhiteOutMoneyLoss - adds r4, r0, 0 - ldr r5, _08054C6C @ =gStringVar1 - bl CountDigits - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0 - bl ConvertIntToDecimalStringN - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08054C6C: .4byte gStringVar1 - thumb_func_end OverworldWhiteOutGetMoneyLoss - - thumb_func_start CountBadgesForOverworldWhiteOutLossCalculation -CountBadgesForOverworldWhiteOutLossCalculation: @ 8054C70 - push {r4-r6,lr} - movs r6, 0 - movs r5, 0 - ldr r4, _08054C9C @ =sWhiteOutMoneyLossBadgeFlagIDs -_08054C78: - ldrh r0, [r4] - bl FlagGet - lsls r0, 24 - cmp r0, 0 - beq _08054C8A - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 -_08054C8A: - adds r4, 0x2 - adds r5, 0x1 - cmp r5, 0x7 - bls _08054C78 - adds r0, r6, 0 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_08054C9C: .4byte sWhiteOutMoneyLossBadgeFlagIDs - thumb_func_end CountBadgesForOverworldWhiteOutLossCalculation - - thumb_func_start Overworld_ResetStateAfterFly -Overworld_ResetStateAfterFly: @ 8054CA0 - push {lr} - bl ResetInitialPlayerAvatarState - movs r0, 0x83 - lsls r0, 4 - bl FlagClear - ldr r0, _08054CEC @ =0x0000405e - movs r1, 0 - bl VarSet - ldr r0, _08054CF0 @ =0x00000802 - bl FlagClear - movs r0, 0x80 - lsls r0, 4 - bl FlagClear - ldr r0, _08054CF4 @ =0x0000406e - movs r1, 0 - bl VarSet - ldr r0, _08054CF8 @ =0x00000805 - bl FlagClear - ldr r0, _08054CFC @ =0x00000806 - bl FlagClear - ldr r0, _08054D00 @ =0x00000808 - bl FlagClear - ldr r0, _08054D04 @ =0x0000404d - movs r1, 0 - bl VarSet - pop {r0} - bx r0 - .align 2, 0 -_08054CEC: .4byte 0x0000405e -_08054CF0: .4byte 0x00000802 -_08054CF4: .4byte 0x0000406e -_08054CF8: .4byte 0x00000805 -_08054CFC: .4byte 0x00000806 -_08054D00: .4byte 0x00000808 -_08054D04: .4byte 0x0000404d - thumb_func_end Overworld_ResetStateAfterFly - - thumb_func_start Overworld_ResetStateAfterTeleport -Overworld_ResetStateAfterTeleport: @ 8054D08 - push {lr} - bl ResetInitialPlayerAvatarState - movs r0, 0x83 - lsls r0, 4 - bl FlagClear - ldr r0, _08054D54 @ =0x0000405e - movs r1, 0 - bl VarSet - ldr r0, _08054D58 @ =0x00000802 - bl FlagClear - movs r0, 0x80 - lsls r0, 4 - bl FlagClear - ldr r0, _08054D5C @ =0x0000406e - movs r1, 0 - bl VarSet - ldr r0, _08054D60 @ =0x00000805 - bl FlagClear - ldr r0, _08054D64 @ =0x00000806 - bl FlagClear - ldr r0, _08054D68 @ =0x00000808 - bl FlagClear - ldr r0, _08054D6C @ =0x0000404d - movs r1, 0 - bl VarSet - pop {r0} - bx r0 - .align 2, 0 -_08054D54: .4byte 0x0000405e -_08054D58: .4byte 0x00000802 -_08054D5C: .4byte 0x0000406e -_08054D60: .4byte 0x00000805 -_08054D64: .4byte 0x00000806 -_08054D68: .4byte 0x00000808 -_08054D6C: .4byte 0x0000404d - thumb_func_end Overworld_ResetStateAfterTeleport - - thumb_func_start Overworld_ResetStateAfterDigEscRope -Overworld_ResetStateAfterDigEscRope: @ 8054D70 - push {lr} - bl ResetInitialPlayerAvatarState - movs r0, 0x83 - lsls r0, 4 - bl FlagClear - ldr r0, _08054DBC @ =0x0000405e - movs r1, 0 - bl VarSet - ldr r0, _08054DC0 @ =0x00000802 - bl FlagClear - movs r0, 0x80 - lsls r0, 4 - bl FlagClear - ldr r0, _08054DC4 @ =0x0000406e - movs r1, 0 - bl VarSet - ldr r0, _08054DC8 @ =0x00000805 - bl FlagClear - ldr r0, _08054DCC @ =0x00000806 - bl FlagClear - ldr r0, _08054DD0 @ =0x00000808 - bl FlagClear - ldr r0, _08054DD4 @ =0x0000404d - movs r1, 0 - bl VarSet - pop {r0} - bx r0 - .align 2, 0 -_08054DBC: .4byte 0x0000405e -_08054DC0: .4byte 0x00000802 -_08054DC4: .4byte 0x0000406e -_08054DC8: .4byte 0x00000805 -_08054DCC: .4byte 0x00000806 -_08054DD0: .4byte 0x00000808 -_08054DD4: .4byte 0x0000404d - thumb_func_end Overworld_ResetStateAfterDigEscRope - - thumb_func_start sub_8054DD8 -sub_8054DD8: @ 8054DD8 - push {lr} - bl ResetInitialPlayerAvatarState - movs r0, 0x83 - lsls r0, 4 - bl FlagClear - ldr r0, _08054E24 @ =0x0000405e - movs r1, 0 - bl VarSet - ldr r0, _08054E28 @ =0x00000802 - bl FlagClear - movs r0, 0x80 - lsls r0, 4 - bl FlagClear - ldr r0, _08054E2C @ =0x0000406e - movs r1, 0 - bl VarSet - ldr r0, _08054E30 @ =0x00000805 - bl FlagClear - ldr r0, _08054E34 @ =0x00000806 - bl FlagClear - ldr r0, _08054E38 @ =0x00000808 - bl FlagClear - ldr r0, _08054E3C @ =0x0000404d - movs r1, 0 - bl VarSet - pop {r0} - bx r0 - .align 2, 0 -_08054E24: .4byte 0x0000405e -_08054E28: .4byte 0x00000802 -_08054E2C: .4byte 0x0000406e -_08054E30: .4byte 0x00000805 -_08054E34: .4byte 0x00000806 -_08054E38: .4byte 0x00000808 -_08054E3C: .4byte 0x0000404d - thumb_func_end sub_8054DD8 - - thumb_func_start sub_8054E40 -sub_8054E40: @ 8054E40 - push {lr} - movs r0, 0x80 - lsls r0, 4 - bl FlagClear - ldr r0, _08054E64 @ =0x0000406e - movs r1, 0 - bl VarSet - bl sub_805610C - bl UpdateLocationHistoryForRoamer - bl RoamerMoveToOtherLocationSet - pop {r0} - bx r0 - .align 2, 0 -_08054E64: .4byte 0x0000406e - thumb_func_end sub_8054E40 - - thumb_func_start ResetGameStats -ResetGameStats: @ 8054E68 - push {r4,r5,lr} - movs r2, 0 - ldr r5, _08054E8C @ =gSaveBlock1Ptr - movs r4, 0x90 - lsls r4, 5 - movs r3, 0 -_08054E74: - ldr r0, [r5] - lsls r1, r2, 2 - adds r0, r4 - adds r0, r1 - str r3, [r0] - adds r2, 0x1 - cmp r2, 0x3F - ble _08054E74 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08054E8C: .4byte gSaveBlock1Ptr - thumb_func_end ResetGameStats - - thumb_func_start IncrementGameStat -IncrementGameStat: @ 8054E90 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x33 - bhi _08054EB8 - adds r0, r4, 0 - bl GetGameStat - adds r1, r0, 0 - ldr r0, _08054EAC @ =0x00fffffe - cmp r1, r0 - bhi _08054EB0 - adds r1, 0x1 - b _08054EB2 - .align 2, 0 -_08054EAC: .4byte 0x00fffffe -_08054EB0: - ldr r1, _08054EC0 @ =0x00ffffff -_08054EB2: - adds r0, r4, 0 - bl SetGameStat -_08054EB8: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08054EC0: .4byte 0x00ffffff - thumb_func_end IncrementGameStat - - thumb_func_start GetGameStat -GetGameStat: @ 8054EC4 - push {lr} - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x33 - bhi _08054EF8 - ldr r0, _08054EF0 @ =gSaveBlock1Ptr - ldr r2, [r0] - lsls r0, r1, 2 - movs r1, 0x90 - lsls r1, 5 - adds r2, r1 - adds r2, r0 - ldr r0, _08054EF4 @ =gSaveBlock2Ptr - ldr r1, [r0] - movs r0, 0xF2 - lsls r0, 4 - adds r1, r0 - ldr r0, [r2] - ldr r1, [r1] - eors r0, r1 - b _08054EFA - .align 2, 0 -_08054EF0: .4byte gSaveBlock1Ptr -_08054EF4: .4byte gSaveBlock2Ptr -_08054EF8: - movs r0, 0 -_08054EFA: - pop {r1} - bx r1 - thumb_func_end GetGameStat - - thumb_func_start SetGameStat -SetGameStat: @ 8054F00 - push {lr} - adds r3, r1, 0 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x33 - bhi _08054F2A - ldr r0, _08054F30 @ =gSaveBlock1Ptr - ldr r1, [r0] - lsls r0, r2, 2 - movs r2, 0x90 - lsls r2, 5 - adds r1, r2 - adds r1, r0 - ldr r0, _08054F34 @ =gSaveBlock2Ptr - ldr r0, [r0] - movs r2, 0xF2 - lsls r2, 4 - adds r0, r2 - ldr r0, [r0] - eors r0, r3 - str r0, [r1] -_08054F2A: - pop {r0} - bx r0 - .align 2, 0 -_08054F30: .4byte gSaveBlock1Ptr -_08054F34: .4byte gSaveBlock2Ptr - thumb_func_end SetGameStat - - thumb_func_start sub_8054F38 -sub_8054F38: @ 8054F38 - push {r4-r6,lr} - adds r5, r0, 0 - movs r4, 0 - ldr r6, _08054F64 @ =gSaveBlock1Ptr -_08054F40: - lsls r1, r4, 2 - movs r0, 0x90 - lsls r0, 5 - adds r1, r0 - ldr r0, [r6] - adds r0, r1 - adds r1, r5, 0 - bl ApplyNewEncryptionKeyToWord - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3F - bls _08054F40 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08054F64: .4byte gSaveBlock1Ptr - thumb_func_end sub_8054F38 - - thumb_func_start sub_8054F68 -sub_8054F68: @ 8054F68 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - movs r0, 0 - mov r9, r0 - mov r8, r0 - ldr r1, _08055040 @ =gMapHeader - ldr r0, [r1, 0x4] - ldrb r0, [r0] - cmp r9, r0 - bcc _08054F86 - b _08055092 -_08054F86: - ldr r2, _08055044 @ =gSaveBlock1Ptr - mov r10, r2 -_08054F8A: - ldr r3, _08055040 @ =gMapHeader - ldr r0, [r3, 0x4] - ldr r1, [r0, 0x4] - mov r4, r9 - lsls r0, r4, 1 - add r0, r9 - lsls r7, r0, 3 - adds r2, r7, r1 - ldrb r0, [r2, 0x2] - cmp r0, 0xFF - bne _08055054 - ldrb r4, [r2, 0x8] - ldrb r5, [r2, 0xC] - str r5, [sp] - ldrb r2, [r2, 0xE] - str r2, [sp, 0x4] - adds r0, r2, 0 - adds r1, r5, 0 - bl Overworld_GetMapHeaderByGroupAndId - mov r6, r10 - ldr r1, [r6] - mov r2, r8 - lsls r3, r2, 1 - add r3, r8 - lsls r3, 3 - adds r1, r3 - ldr r0, [r0, 0x4] - ldr r2, [r0, 0x4] - lsls r0, r4, 1 - adds r0, r4 - lsls r0, 3 - adds r0, r2 - movs r5, 0x8E - lsls r5, 4 - adds r1, r5 - subs r0, 0x18 - ldm r0!, {r2,r5,r6} - stm r1!, {r2,r5,r6} - ldm r0!, {r2,r5,r6} - stm r1!, {r2,r5,r6} - mov r6, r10 - ldr r1, [r6] - adds r1, r3 - ldr r2, _08055040 @ =gMapHeader - ldr r0, [r2, 0x4] - ldr r0, [r0, 0x4] - adds r0, r7, r0 - ldrb r0, [r0] - movs r5, 0x8E - lsls r5, 4 - adds r1, r5 - strb r0, [r1] - ldr r1, [r6] - adds r1, r3 - ldr r0, [r2, 0x4] - ldr r0, [r0, 0x4] - adds r0, r7, r0 - ldrh r2, [r0, 0x4] - ldr r6, _08055048 @ =0x000008e4 - adds r0, r1, r6 - strh r2, [r0] - ldr r2, _08055040 @ =gMapHeader - ldr r0, [r2, 0x4] - ldr r0, [r0, 0x4] - adds r0, r7, r0 - ldrh r2, [r0, 0x6] - adds r5, 0x6 - adds r0, r1, r5 - strh r2, [r0] - adds r6, 0x4 - adds r1, r6 - strb r4, [r1] - mov r1, r10 - ldr r0, [r1] - adds r0, r3 - ldr r2, _0805504C @ =0x000008ec - adds r1, r0, r2 - mov r3, sp - ldrh r3, [r3] - strh r3, [r1] - ldr r4, _08055050 @ =0x000008ee - adds r1, r0, r4 - mov r5, sp - ldrh r5, [r5, 0x4] - strh r5, [r1] - subs r6, 0x6 - adds r0, r6 - movs r1, 0xFF - strb r1, [r0] - b _08055072 - .align 2, 0 -_08055040: .4byte gMapHeader -_08055044: .4byte gSaveBlock1Ptr -_08055048: .4byte 0x000008e4 -_0805504C: .4byte 0x000008ec -_08055050: .4byte 0x000008ee -_08055054: - mov r0, r10 - ldr r1, [r0] - mov r3, r8 - lsls r0, r3, 1 - add r0, r8 - lsls r0, 3 - adds r1, r0 - movs r4, 0x8E - lsls r4, 4 - adds r1, r4 - adds r0, r2, 0 - ldm r0!, {r2,r5,r6} - stm r1!, {r2,r5,r6} - ldm r0!, {r3-r5} - stm r1!, {r3-r5} -_08055072: - mov r0, r8 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - ldr r6, _080550A4 @ =gMapHeader - ldr r0, [r6, 0x4] - ldrb r0, [r0] - cmp r9, r0 - bcs _08055092 - b _08054F8A -_08055092: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080550A4: .4byte gMapHeader - thumb_func_end sub_8054F68 - - thumb_func_start sub_80550A8 -sub_80550A8: @ 80550A8 - push {lr} - ldr r0, _080550D0 @ =gMapHeader - ldr r1, [r0, 0x4] - ldr r0, _080550D4 @ =gSaveBlock1Ptr - ldr r0, [r0] - ldr r2, [r1, 0x4] - movs r3, 0x8E - lsls r3, 4 - adds r1, r0, r3 - movs r3, 0x3F -_080550BC: - ldr r0, [r2, 0x10] - str r0, [r1, 0x10] - adds r2, 0x18 - adds r1, 0x18 - subs r3, 0x1 - cmp r3, 0 - bge _080550BC - pop {r0} - bx r0 - .align 2, 0 -_080550D0: .4byte gMapHeader -_080550D4: .4byte gSaveBlock1Ptr - thumb_func_end sub_80550A8 - - thumb_func_start Overworld_SetMapObjTemplateCoords -Overworld_SetMapObjTemplateCoords: @ 80550D8 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r1, 16 - lsrs r4, r1, 16 - lsls r2, 16 - lsrs r2, 16 - ldr r0, _08055100 @ =gSaveBlock1Ptr - ldr r0, [r0] - movs r1, 0 - movs r6, 0x8E - lsls r6, 4 - adds r3, r0, r6 -_080550F2: - ldrb r0, [r3] - cmp r0, r5 - bne _08055104 - strh r4, [r3, 0x4] - strh r2, [r3, 0x6] - b _0805510C - .align 2, 0 -_08055100: .4byte gSaveBlock1Ptr -_08055104: - adds r3, 0x18 - adds r1, 0x1 - cmp r1, 0x3F - ble _080550F2 -_0805510C: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end Overworld_SetMapObjTemplateCoords - - thumb_func_start Overworld_SetMapObjTemplateMovementType -Overworld_SetMapObjTemplateMovementType: @ 8055114 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 24 - lsrs r1, 24 - ldr r0, _08055134 @ =gSaveBlock1Ptr - ldr r0, [r0] - movs r3, 0 - movs r5, 0x8E - lsls r5, 4 - adds r2, r0, r5 -_0805512A: - ldrb r0, [r2] - cmp r0, r4 - bne _08055138 - strb r1, [r2, 0x9] - b _08055140 - .align 2, 0 -_08055134: .4byte gSaveBlock1Ptr -_08055138: - adds r2, 0x18 - adds r3, 0x1 - cmp r3, 0x3F - ble _0805512A -_08055140: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end Overworld_SetMapObjTemplateMovementType - - thumb_func_start mapdata_load_assets_to_gpu_and_full_redraw -mapdata_load_assets_to_gpu_and_full_redraw: @ 8055148 - push {r4,lr} - bl move_tilemap_camera_to_upper_left_corner - ldr r4, _0805516C @ =gMapHeader - ldr r0, [r4] - bl copy_map_tileset1_tileset2_to_vram - ldr r0, [r4] - bl apply_map_tileset1_tileset2_palette - bl DrawWholeMapView - bl InitTilesetAnimations - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0805516C: .4byte gMapHeader - thumb_func_end mapdata_load_assets_to_gpu_and_full_redraw - - thumb_func_start get_mapdata_header -get_mapdata_header: @ 8055170 - push {lr} - ldr r0, _08055180 @ =gSaveBlock1Ptr - ldr r0, [r0] - ldrh r1, [r0, 0x32] - cmp r1, 0 - bne _08055184 - movs r0, 0 - b _0805518E - .align 2, 0 -_08055180: .4byte gSaveBlock1Ptr -_08055184: - ldr r0, _08055194 @ =gMapLayouts - subs r1, 0x1 - lsls r1, 2 - adds r1, r0 - ldr r0, [r1] -_0805518E: - pop {r1} - bx r1 - .align 2, 0 -_08055194: .4byte gMapLayouts - thumb_func_end get_mapdata_header - - thumb_func_start warp_shift -warp_shift: @ 8055198 - ldr r3, _080551C4 @ =gUnknown_2031DB4 - ldr r0, _080551C8 @ =gSaveBlock1Ptr - ldr r2, [r0] - ldr r0, [r2, 0x4] - ldr r1, [r2, 0x8] - str r0, [r3] - str r1, [r3, 0x4] - ldr r0, _080551CC @ =gUnknown_2031DBC - ldr r1, [r0, 0x4] - ldr r0, [r0] - str r0, [r2, 0x4] - str r1, [r2, 0x8] - ldr r2, _080551D0 @ =gUnknown_2031DC4 - ldr r0, _080551D4 @ =sDummyWarpData - ldr r1, [r0, 0x4] - ldr r0, [r0] - str r0, [r2] - str r1, [r2, 0x4] - ldr r2, _080551D8 @ =gUnknown_2031DCC - str r0, [r2] - str r1, [r2, 0x4] - bx lr - .align 2, 0 -_080551C4: .4byte gUnknown_2031DB4 -_080551C8: .4byte gSaveBlock1Ptr -_080551CC: .4byte gUnknown_2031DBC -_080551D0: .4byte gUnknown_2031DC4 -_080551D4: .4byte sDummyWarpData -_080551D8: .4byte gUnknown_2031DCC - thumb_func_end warp_shift - - thumb_func_start warp_set -warp_set: @ 80551DC - push {r4,r5,lr} - ldr r4, [sp, 0xC] - ldr r5, [sp, 0x10] - strb r1, [r0] - strb r2, [r0, 0x1] - strb r3, [r0, 0x2] - lsls r4, 24 - asrs r4, 24 - strh r4, [r0, 0x4] - lsls r5, 24 - asrs r5, 24 - strh r5, [r0, 0x6] - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end warp_set - - thumb_func_start warp_data_is_not_neg_1 -warp_data_is_not_neg_1: @ 80551FC - push {lr} - adds r1, r0, 0 - movs r2, 0 - ldrsb r2, [r1, r2] - movs r0, 0x1 - negs r0, r0 - cmp r2, r0 - bne _08055230 - movs r0, 0x1 - ldrsb r0, [r1, r0] - cmp r0, r2 - bne _08055230 - movs r2, 0x2 - ldrsb r2, [r1, r2] - cmp r2, r0 - bne _08055230 - movs r0, 0x4 - ldrsh r3, [r1, r0] - cmp r3, r2 - bne _08055230 - movs r2, 0x6 - ldrsh r0, [r1, r2] - cmp r0, r3 - bne _08055230 - movs r0, 0x1 - b _08055232 -_08055230: - movs r0, 0 -_08055232: - pop {r1} - bx r1 - thumb_func_end warp_data_is_not_neg_1 - - thumb_func_start Overworld_GetMapHeaderByGroupAndId -Overworld_GetMapHeaderByGroupAndId: @ 8055238 - lsls r0, 16 - lsls r1, 16 - ldr r2, _0805524C @ =gMapGroups - lsrs r0, 14 - adds r0, r2 - ldr r0, [r0] - lsrs r1, 14 - adds r1, r0 - ldr r0, [r1] - bx lr - .align 2, 0 -_0805524C: .4byte gMapGroups - thumb_func_end Overworld_GetMapHeaderByGroupAndId - - thumb_func_start warp1_get_mapheader -warp1_get_mapheader: @ 8055250 - push {lr} - ldr r1, _08055270 @ =gUnknown_2031DBC - 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 - pop {r1} - bx r1 - .align 2, 0 -_08055270: .4byte gUnknown_2031DBC - thumb_func_end warp1_get_mapheader - - thumb_func_start set_current_map_header_from_sav1_save_old_name -set_current_map_header_from_sav1_save_old_name: @ 8055274 - push {r4-r6,lr} - ldr r4, _080552B4 @ =gMapHeader - ldr r5, _080552B8 @ =gSaveBlock1Ptr - ldr r1, [r5] - movs r0, 0x4 - ldrsb r0, [r1, r0] - lsls r0, 16 - lsrs r0, 16 - ldrb r1, [r1, 0x5] - lsls r1, 24 - asrs r1, 24 - lsls r1, 16 - lsrs r1, 16 - bl Overworld_GetMapHeaderByGroupAndId - adds r1, r4, 0 - ldm r0!, {r2,r3,r6} - stm r1!, {r2,r3,r6} - ldm r0!, {r2,r3,r6} - stm r1!, {r2,r3,r6} - ldr r0, [r0] - str r0, [r1] - ldr r1, [r5] - ldrh r0, [r4, 0x12] - strh r0, [r1, 0x32] - bl get_mapdata_header - str r0, [r4] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080552B4: .4byte gMapHeader -_080552B8: .4byte gSaveBlock1Ptr - thumb_func_end set_current_map_header_from_sav1_save_old_name - - thumb_func_start set_current_map_header_from_sav1 -set_current_map_header_from_sav1: @ 80552BC - push {r4,r5,lr} - ldr r4, _080552F4 @ =gMapHeader - ldr r0, _080552F8 @ =gSaveBlock1Ptr - ldr r1, [r0] - movs r0, 0x4 - ldrsb r0, [r1, r0] - lsls r0, 16 - lsrs r0, 16 - ldrb r1, [r1, 0x5] - lsls r1, 24 - asrs r1, 24 - lsls r1, 16 - lsrs r1, 16 - bl Overworld_GetMapHeaderByGroupAndId - adds r1, r4, 0 - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - ldr r0, [r0] - str r0, [r1] - bl get_mapdata_header - str r0, [r4] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080552F4: .4byte gMapHeader -_080552F8: .4byte gSaveBlock1Ptr - thumb_func_end set_current_map_header_from_sav1 - - thumb_func_start update_camera_pos_from_warpid -update_camera_pos_from_warpid: @ 80552FC - push {r4,r5,lr} - ldr r0, _0805532C @ =gSaveBlock1Ptr - ldr r2, [r0] - movs r1, 0x6 - ldrsb r1, [r2, r1] - adds r4, r0, 0 - cmp r1, 0 - blt _08055334 - ldr r3, _08055330 @ =gMapHeader - ldr r0, [r3, 0x4] - ldrb r5, [r0, 0x1] - cmp r1, r5 - bge _08055334 - ldr r0, [r0, 0x8] - lsls r1, 3 - adds r0, r1, r0 - ldrh r0, [r0] - strh r0, [r2] - ldr r0, [r3, 0x4] - ldr r0, [r0, 0x8] - adds r1, r0 - ldrh r0, [r1, 0x2] - strh r0, [r2, 0x2] - b _0805536C - .align 2, 0 -_0805532C: .4byte gSaveBlock1Ptr -_08055330: .4byte gMapHeader -_08055334: - ldr r1, [r4] - ldrh r3, [r1, 0x8] - movs r2, 0x8 - ldrsh r0, [r1, r2] - cmp r0, 0 - blt _08055350 - ldrh r2, [r1, 0xA] - movs r5, 0xA - ldrsh r0, [r1, r5] - cmp r0, 0 - blt _08055350 - strh r3, [r1] - strh r2, [r1, 0x2] - b _0805536C -_08055350: - ldr r3, [r4] - ldr r2, _08055374 @ =gMapHeader - ldr r0, [r2] - ldr r0, [r0] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - strh r0, [r3] - ldr r0, [r2] - ldr r0, [r0, 0x4] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - strh r0, [r3, 0x2] -_0805536C: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08055374: .4byte gMapHeader - thumb_func_end update_camera_pos_from_warpid - - thumb_func_start WarpIntoMap -WarpIntoMap: @ 8055378 - push {lr} - bl warp_shift - bl set_current_map_header_from_sav1_save_old_name - bl update_camera_pos_from_warpid - pop {r0} - bx r0 - thumb_func_end WarpIntoMap - - thumb_func_start SetWarpDestination -SetWarpDestination: @ 805538C - push {r4-r6,lr} - sub sp, 0x8 - adds r4, r0, 0 - adds r5, r1, 0 - adds r6, r2, 0 - ldr r1, [sp, 0x18] - ldr r0, _080553C4 @ =gUnknown_2031DBC - lsls r4, 24 - asrs r4, 24 - lsls r5, 24 - asrs r5, 24 - lsls r6, 24 - asrs r6, 24 - lsls r3, 24 - asrs r3, 24 - str r3, [sp] - lsls r1, 24 - asrs r1, 24 - str r1, [sp, 0x4] - adds r1, r4, 0 - adds r2, r5, 0 - adds r3, r6, 0 - bl warp_set - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080553C4: .4byte gUnknown_2031DBC - thumb_func_end SetWarpDestination - - thumb_func_start SetWarpDestinationToMapWarp -SetWarpDestinationToMapWarp: @ 80553C8 - push {lr} - sub sp, 0x4 - lsls r0, 24 - asrs r0, 24 - lsls r1, 24 - asrs r1, 24 - lsls r2, 24 - asrs r2, 24 - movs r3, 0x1 - negs r3, r3 - str r3, [sp] - bl SetWarpDestination - add sp, 0x4 - pop {r0} - bx r0 - thumb_func_end SetWarpDestinationToMapWarp - - thumb_func_start SetDynamicWarp -SetDynamicWarp: @ 80553E8 - push {r4,r5,lr} - sub sp, 0x8 - ldr r0, _08055418 @ =gSaveBlock1Ptr - ldr r5, [r0] - adds r0, r5, 0 - adds r0, 0x14 - lsls r1, 24 - asrs r1, 24 - lsls r2, 24 - asrs r2, 24 - lsls r3, 24 - asrs r3, 24 - movs r4, 0 - ldrsb r4, [r5, r4] - str r4, [sp] - movs r4, 0x2 - ldrsb r4, [r5, r4] - str r4, [sp, 0x4] - bl warp_set - add sp, 0x8 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08055418: .4byte gSaveBlock1Ptr - thumb_func_end SetDynamicWarp - - thumb_func_start SetDynamicWarpWithCoords -SetDynamicWarpWithCoords: @ 805541C - push {r4,r5,lr} - sub sp, 0x8 - ldr r4, [sp, 0x14] - ldr r5, [sp, 0x18] - ldr r0, _08055450 @ =gSaveBlock1Ptr - ldr r0, [r0] - adds r0, 0x14 - lsls r1, 24 - asrs r1, 24 - lsls r2, 24 - asrs r2, 24 - lsls r3, 24 - asrs r3, 24 - lsls r4, 24 - asrs r4, 24 - str r4, [sp] - lsls r5, 24 - asrs r5, 24 - str r5, [sp, 0x4] - bl warp_set - add sp, 0x8 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08055450: .4byte gSaveBlock1Ptr - thumb_func_end SetDynamicWarpWithCoords - - thumb_func_start SetWarpDestinationToDynamicWarp -SetWarpDestinationToDynamicWarp: @ 8055454 - ldr r2, _08055464 @ =gUnknown_2031DBC - ldr r0, _08055468 @ =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, [r0, 0x18] - ldr r0, [r0, 0x14] - str r0, [r2] - str r1, [r2, 0x4] - bx lr - .align 2, 0 -_08055464: .4byte gUnknown_2031DBC -_08055468: .4byte gSaveBlock1Ptr - thumb_func_end SetWarpDestinationToDynamicWarp - - thumb_func_start sub_805546C -sub_805546C: @ 805546C - push {r4,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - bl GetHealLocationPointer - adds r4, r0, 0 - cmp r4, 0 - beq _0805549A - 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, 0x4] - lsls r4, 24 - asrs r4, 24 - str r4, [sp] - bl SetWarpDestination -_0805549A: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_805546C - - thumb_func_start copy_saved_warp3_bank_and_enter_x_to_warp1 -copy_saved_warp3_bank_and_enter_x_to_warp1: @ 80554A4 - ldr r2, _080554B4 @ =gUnknown_2031DBC - ldr r0, _080554B8 @ =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, [r0, 0x20] - ldr r0, [r0, 0x1C] - str r0, [r2] - str r1, [r2, 0x4] - bx lr - .align 2, 0 -_080554B4: .4byte gUnknown_2031DBC -_080554B8: .4byte gSaveBlock1Ptr - thumb_func_end copy_saved_warp3_bank_and_enter_x_to_warp1 - - thumb_func_start sub_80554BC -sub_80554BC: @ 80554BC - push {lr} - ldr r0, _080554C8 @ =gUnknown_2031DBC - bl SetWhiteoutRespawnWarpAndHealerNpc - pop {r0} - bx r0 - .align 2, 0 -_080554C8: .4byte gUnknown_2031DBC - thumb_func_end sub_80554BC - - thumb_func_start SetLastHealLocationWarp -SetLastHealLocationWarp: @ 80554CC - push {r4,r5,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r0, 24 - bl GetHealLocationPointer - adds r5, r0, 0 - cmp r5, 0 - beq _08055500 - ldr r0, _08055508 @ =gSaveBlock1Ptr - ldr r0, [r0] - adds r0, 0x1C - movs r1, 0 - ldrsb r1, [r5, r1] - movs r2, 0x1 - ldrsb r2, [r5, r2] - movs r3, 0x1 - negs r3, r3 - movs r4, 0x2 - ldrsb r4, [r5, r4] - str r4, [sp] - movs r4, 0x4 - ldrsb r4, [r5, r4] - str r4, [sp, 0x4] - bl warp_set -_08055500: - add sp, 0x8 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08055508: .4byte gSaveBlock1Ptr - thumb_func_end SetLastHealLocationWarp - - thumb_func_start UpdateEscapeWarp -UpdateEscapeWarp: @ 805550C - push {r4-r7,lr} - sub sp, 0x4 - lsls r0, 16 - lsrs r6, r0, 16 - lsls r1, 16 - lsrs r7, r1, 16 - bl GetCurrentMapType - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r1, _08055598 @ =gUnknown_2031DBC - movs r0, 0 - ldrsb r0, [r1, r0] - ldrb r1, [r1, 0x1] - lsls r1, 24 - asrs r1, 24 - bl get_map_light_level_by_bank_and_number - lsls r0, 24 - lsrs r5, r0, 24 - adds r0, r4, 0 - bl IsMapTypeOutdoors - lsls r0, 24 - cmp r0, 0 - beq _08055590 - adds r0, r5, 0 - bl IsMapTypeOutdoors - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08055590 - ldr r5, _0805559C @ =gSaveBlock1Ptr - ldr r0, [r5] - ldrh r0, [r0, 0x4] - cmp r0, 0x1 - beq _08055590 - bl GetPlayerFacingDirection - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x1 - eors r0, r1 - negs r4, r0 - orrs r4, r0 - ldr r1, [r5] - movs r0, 0x4 - ldrsb r0, [r1, r0] - ldrb r1, [r1, 0x5] - lsls r1, 24 - asrs r1, 24 - movs r2, 0x1 - negs r2, r2 - subs r3, r6, 0x7 - lsls r3, 24 - asrs r3, 24 - lsrs r4, 31 - subs r4, 0x7 - adds r4, r7, r4 - lsls r4, 24 - asrs r4, 24 - str r4, [sp] - bl SetEscapeWarp -_08055590: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08055598: .4byte gUnknown_2031DBC -_0805559C: .4byte gSaveBlock1Ptr - thumb_func_end UpdateEscapeWarp - - thumb_func_start SetEscapeWarp -SetEscapeWarp: @ 80555A0 - push {r4-r6,lr} - sub sp, 0x8 - adds r4, r0, 0 - adds r5, r1, 0 - adds r6, r2, 0 - ldr r1, [sp, 0x18] - ldr r0, _080555DC @ =gSaveBlock1Ptr - ldr r0, [r0] - adds r0, 0x24 - lsls r4, 24 - asrs r4, 24 - lsls r5, 24 - asrs r5, 24 - lsls r6, 24 - asrs r6, 24 - lsls r3, 24 - asrs r3, 24 - str r3, [sp] - lsls r1, 24 - asrs r1, 24 - str r1, [sp, 0x4] - adds r1, r4, 0 - adds r2, r5, 0 - adds r3, r6, 0 - bl warp_set - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080555DC: .4byte gSaveBlock1Ptr - thumb_func_end SetEscapeWarp - - thumb_func_start sub_80555E0 -sub_80555E0: @ 80555E0 - ldr r2, _080555F0 @ =gUnknown_2031DBC - ldr r0, _080555F4 @ =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, [r0, 0x28] - ldr r0, [r0, 0x24] - str r0, [r2] - str r1, [r2, 0x4] - bx lr - .align 2, 0 -_080555F0: .4byte gUnknown_2031DBC -_080555F4: .4byte gSaveBlock1Ptr - thumb_func_end sub_80555E0 - - thumb_func_start SetFixedDiveWarp -SetFixedDiveWarp: @ 80555F8 - push {r4-r6,lr} - sub sp, 0x8 - adds r4, r0, 0 - adds r5, r1, 0 - adds r6, r2, 0 - ldr r1, [sp, 0x18] - ldr r0, _08055630 @ =gUnknown_2031DC4 - lsls r4, 24 - asrs r4, 24 - lsls r5, 24 - asrs r5, 24 - lsls r6, 24 - asrs r6, 24 - lsls r3, 24 - asrs r3, 24 - str r3, [sp] - lsls r1, 24 - asrs r1, 24 - str r1, [sp, 0x4] - adds r1, r4, 0 - adds r2, r5, 0 - adds r3, r6, 0 - bl warp_set - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08055630: .4byte gUnknown_2031DC4 - thumb_func_end SetFixedDiveWarp - - thumb_func_start warp1_set_to_warp2 -warp1_set_to_warp2: @ 8055634 - ldr r2, _08055644 @ =gUnknown_2031DBC - ldr r0, _08055648 @ =gUnknown_2031DC4 - ldr r1, [r0, 0x4] - ldr r0, [r0] - str r0, [r2] - str r1, [r2, 0x4] - bx lr - .align 2, 0 -_08055644: .4byte gUnknown_2031DBC -_08055648: .4byte gUnknown_2031DC4 - thumb_func_end warp1_set_to_warp2 - - thumb_func_start SetFixedHoleWarp -SetFixedHoleWarp: @ 805564C - push {r4-r6,lr} - sub sp, 0x8 - adds r4, r0, 0 - adds r5, r1, 0 - adds r6, r2, 0 - ldr r1, [sp, 0x18] - ldr r0, _08055684 @ =gUnknown_2031DCC - lsls r4, 24 - asrs r4, 24 - lsls r5, 24 - asrs r5, 24 - lsls r6, 24 - asrs r6, 24 - lsls r3, 24 - asrs r3, 24 - str r3, [sp] - lsls r1, 24 - asrs r1, 24 - str r1, [sp, 0x4] - adds r1, r4, 0 - adds r2, r5, 0 - adds r3, r6, 0 - bl warp_set - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08055684: .4byte gUnknown_2031DCC - thumb_func_end SetFixedHoleWarp - - thumb_func_start SetWarpDestinationToFixedHoleWarp -SetWarpDestinationToFixedHoleWarp: @ 8055688 - push {r4-r6,lr} - sub sp, 0x4 - lsls r0, 16 - lsrs r5, r0, 16 - lsls r1, 16 - lsrs r6, r1, 16 - ldr r4, _080556B0 @ =gUnknown_2031DCC - adds r0, r4, 0 - bl warp_data_is_not_neg_1 - cmp r0, 0x1 - bne _080556BC - ldr r2, _080556B4 @ =gUnknown_2031DBC - ldr r0, _080556B8 @ =gUnknown_2031DB4 - ldr r1, [r0, 0x4] - ldr r0, [r0] - str r0, [r2] - str r1, [r2, 0x4] - b _080556D6 - .align 2, 0 -_080556B0: .4byte gUnknown_2031DCC -_080556B4: .4byte gUnknown_2031DBC -_080556B8: .4byte gUnknown_2031DB4 -_080556BC: - movs r0, 0 - ldrsb r0, [r4, r0] - movs r1, 0x1 - ldrsb r1, [r4, r1] - movs r2, 0x1 - negs r2, r2 - lsls r3, r5, 24 - asrs r3, 24 - lsls r4, r6, 24 - asrs r4, 24 - str r4, [sp] - bl SetWarpDestination -_080556D6: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end SetWarpDestinationToFixedHoleWarp - - thumb_func_start warp1_set_to_sav1w -warp1_set_to_sav1w: @ 80556E0 - ldr r2, _080556F0 @ =gUnknown_2031DBC - ldr r0, _080556F4 @ =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, [r0, 0x10] - ldr r0, [r0, 0xC] - str r0, [r2] - str r1, [r2, 0x4] - bx lr - .align 2, 0 -_080556F0: .4byte gUnknown_2031DBC -_080556F4: .4byte gSaveBlock1Ptr - thumb_func_end warp1_set_to_sav1w - - thumb_func_start sub_80556F8 -sub_80556F8: @ 80556F8 - push {r4-r6,lr} - sub sp, 0x8 - adds r4, r0, 0 - adds r5, r1, 0 - adds r6, r2, 0 - ldr r1, [sp, 0x18] - ldr r0, _08055734 @ =gSaveBlock1Ptr - ldr r0, [r0] - adds r0, 0xC - lsls r4, 24 - asrs r4, 24 - lsls r5, 24 - asrs r5, 24 - lsls r6, 24 - asrs r6, 24 - lsls r3, 24 - asrs r3, 24 - str r3, [sp] - lsls r1, 24 - asrs r1, 24 - str r1, [sp, 0x4] - adds r1, r4, 0 - adds r2, r5, 0 - adds r3, r6, 0 - bl warp_set - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08055734: .4byte gSaveBlock1Ptr - thumb_func_end sub_80556F8 - - thumb_func_start sub_8055738 -sub_8055738: @ 8055738 - push {r4,r5,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r0, 24 - bl GetHealLocationPointer - adds r5, r0, 0 - cmp r5, 0 - beq _0805576C - ldr r0, _08055774 @ =gSaveBlock1Ptr - ldr r0, [r0] - adds r0, 0xC - movs r1, 0 - ldrsb r1, [r5, r1] - movs r2, 0x1 - ldrsb r2, [r5, r2] - movs r3, 0x1 - negs r3, r3 - movs r4, 0x2 - ldrsb r4, [r5, r4] - str r4, [sp] - movs r4, 0x4 - ldrsb r4, [r5, r4] - str r4, [sp, 0x4] - bl warp_set -_0805576C: - add sp, 0x8 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08055774: .4byte gSaveBlock1Ptr - thumb_func_end sub_8055738 - - thumb_func_start sub_8055778 -sub_8055778: @ 8055778 - ldr r0, _08055788 @ =gSaveBlock1Ptr - ldr r2, [r0] - ldr r0, [r2, 0x14] - ldr r1, [r2, 0x18] - str r0, [r2, 0xC] - str r1, [r2, 0x10] - bx lr - .align 2, 0 -_08055788: .4byte gSaveBlock1Ptr - thumb_func_end sub_8055778 - - thumb_func_start GetMapConnection -GetMapConnection: @ 805578C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080557A0 @ =gMapHeader - ldr r0, [r0, 0xC] - ldr r3, [r0] - ldr r1, [r0, 0x4] - cmp r1, 0 - bne _080557A8 - b _080557BC - .align 2, 0 -_080557A0: .4byte gMapHeader -_080557A4: - adds r0, r1, 0 - b _080557BE -_080557A8: - movs r2, 0 - cmp r2, r3 - bge _080557BC -_080557AE: - ldrb r0, [r1] - cmp r0, r4 - beq _080557A4 - adds r2, 0x1 - adds r1, 0xC - cmp r2, r3 - blt _080557AE -_080557BC: - movs r0, 0 -_080557BE: - pop {r4} - pop {r1} - bx r1 - thumb_func_end GetMapConnection - - thumb_func_start sub_80557C4 -sub_80557C4: @ 80557C4 - push {r4,r5,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - lsls r1, 16 - lsrs r4, r1, 16 - lsls r2, 16 - lsrs r5, r2, 16 - bl GetMapConnection - adds r1, r0, 0 - cmp r1, 0 - beq _080557FC - movs r0, 0x8 - ldrsb r0, [r1, r0] - ldrb r1, [r1, 0x9] - lsls r1, 24 - asrs r1, 24 - movs r2, 0x1 - negs r2, r2 - lsls r3, r4, 24 - asrs r3, 24 - lsls r4, r5, 24 - asrs r4, 24 - str r4, [sp] - bl SetWarpDestination - b _08055818 -_080557FC: - bl mapheader_run_script_with_tag_x6 - ldr r0, _08055810 @ =gUnknown_2031DC4 - bl warp_data_is_not_neg_1 - cmp r0, 0 - beq _08055814 - movs r0, 0 - b _0805581A - .align 2, 0 -_08055810: .4byte gUnknown_2031DC4 -_08055814: - bl warp1_set_to_warp2 -_08055818: - movs r0, 0x1 -_0805581A: - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80557C4 - - thumb_func_start SetDiveWarpEmerge -SetDiveWarpEmerge: @ 8055824 - push {lr} - adds r3, r0, 0 - adds r2, r1, 0 - lsls r3, 16 - lsrs r3, 16 - lsls r2, 16 - lsrs r2, 16 - movs r0, 0x6 - adds r1, r3, 0 - bl sub_80557C4 - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end SetDiveWarpEmerge - - thumb_func_start SetDiveWarpDive -SetDiveWarpDive: @ 8055844 - push {lr} - adds r3, r0, 0 - adds r2, r1, 0 - lsls r3, 16 - lsrs r3, 16 - lsls r2, 16 - lsrs r2, 16 - movs r0, 0x5 - adds r1, r3, 0 - bl sub_80557C4 - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end SetDiveWarpDive - - thumb_func_start sub_8055864 -sub_8055864: @ 8055864 - push {r4,r5,lr} - sub sp, 0x4 - lsls r0, 24 - lsls r1, 24 - lsrs r5, r0, 24 - asrs r0, 24 - lsrs r4, r1, 24 - asrs r1, 24 - movs r3, 0x1 - negs r3, r3 - str r3, [sp] - adds r2, r3, 0 - bl SetWarpDestination - bl sub_8055E94 - bl warp_shift - bl set_current_map_header_from_sav1_save_old_name - bl sub_8054F68 - bl TrySetMapSaveWarpStatus - bl sub_806E110 - bl nullsub_74 - bl RestartWildEncounterImmunitySteps - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_810C578 - bl SetSav1WeatherFromCurrMapHeader - bl sub_805610C - bl sub_8055CB8 - bl Overworld_ClearSavedMusic - bl mapheader_run_script_with_tag_x3 - bl TryRegenerateRenewableHiddenItems - bl InitMap - ldr r4, _0805591C @ =gMapHeader - ldr r0, [r4] - bl copy_map_tileset2_to_vram_2 - ldr r0, [r4] - bl apply_map_tileset2_palette - movs r4, 0x7 -_080558D4: - lsls r0, r4, 24 - lsrs r0, 24 - bl ApplyWeatherGammaShiftToPal - adds r4, 0x1 - cmp r4, 0xC - ble _080558D4 - bl InitSecondaryTilesetAnimation - bl UpdateLocationHistoryForRoamer - bl RoamerMove - bl sub_8110920 - bl DoCurrentWeather - bl ResetFieldTasksArgs - bl mapheader_run_script_with_tag_x5 - bl GetLastUsedWarpMapSectionId - ldr r1, _0805591C @ =gMapHeader - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1, 0x14] - cmp r0, r1 - beq _08055914 - movs r0, 0x1 - bl CreateMapNamePopupIfNotAlreadyRunning -_08055914: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0805591C: .4byte gMapHeader - thumb_func_end sub_8055864 - - thumb_func_start sub_8055920 -sub_8055920: @ 8055920 - push {r4,lr} - bl set_current_map_header_from_sav1_save_old_name - bl sub_8054F68 - ldr r0, _0805599C @ =gMapHeader - ldrb r0, [r0, 0x17] - bl IsMapTypeOutdoors - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl TrySetMapSaveWarpStatus - bl sub_806E110 - bl nullsub_74 - bl RestartWildEncounterImmunitySteps - ldr r0, _080559A0 @ =gSaveBlock1Ptr - ldr r1, [r0] - movs r0, 0x4 - ldrsb r0, [r1, r0] - lsls r0, 16 - lsrs r0, 16 - ldrb r1, [r1, 0x5] - lsls r1, 24 - asrs r1, 24 - lsls r1, 16 - lsrs r1, 16 - bl sub_810C578 - bl SetSav1WeatherFromCurrMapHeader - bl sub_805610C - cmp r4, 0 - beq _08055974 - ldr r0, _080559A4 @ =0x00000806 - bl FlagClear -_08055974: - bl sub_8055CB8 - bl Overworld_ClearSavedMusic - bl mapheader_run_script_with_tag_x3 - bl TryRegenerateRenewableHiddenItems - bl UpdateLocationHistoryForRoamer - bl RoamerMoveToOtherLocationSet - bl sub_8110920 - bl InitMap - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0805599C: .4byte gMapHeader -_080559A0: .4byte gSaveBlock1Ptr -_080559A4: .4byte 0x00000806 - thumb_func_end sub_8055920 - - thumb_func_start sub_80559A8 -sub_80559A8: @ 80559A8 - push {lr} - bl set_current_map_header_from_sav1_save_old_name - bl sub_8054F68 - ldr r0, _080559E0 @ =gMapHeader - ldrb r0, [r0, 0x17] - bl IsMapTypeOutdoors - bl TrySetMapSaveWarpStatus - bl SetSav1WeatherFromCurrMapHeader - bl sub_805610C - bl sub_8055CB8 - bl sub_8110920 - bl sub_8111708 - bl set_current_map_header_from_sav1 - bl InitMap - pop {r0} - bx r0 - .align 2, 0 -_080559E0: .4byte gMapHeader - thumb_func_end sub_80559A8 - - thumb_func_start ResetInitialPlayerAvatarState -ResetInitialPlayerAvatarState: @ 80559E4 - ldr r0, _080559F4 @ =gUnknown_2031DD4 - movs r2, 0 - movs r1, 0x1 - strb r1, [r0, 0x1] - strb r1, [r0] - strb r2, [r0, 0x2] - bx lr - .align 2, 0 -_080559F4: .4byte gUnknown_2031DD4 - thumb_func_end ResetInitialPlayerAvatarState - - thumb_func_start sub_80559F8 -sub_80559F8: @ 80559F8 - ldr r1, _08055A04 @ =gUnknown_2031DD4 - strb r0, [r1, 0x1] - movs r0, 0x1 - strb r0, [r1] - strb r0, [r1, 0x2] - bx lr - .align 2, 0 -_08055A04: .4byte gUnknown_2031DD4 - thumb_func_end sub_80559F8 - - thumb_func_start StoreInitialPlayerAvatarState -StoreInitialPlayerAvatarState: @ 8055A08 - push {r4,lr} - bl GetPlayerFacingDirection - ldr r4, _08055A24 @ =gUnknown_2031DD4 - strb r0, [r4, 0x1] - movs r0, 0x2 - bl TestPlayerAvatarFlags - lsls r0, 24 - cmp r0, 0 - beq _08055A28 - movs r0, 0x2 - b _08055A5A - .align 2, 0 -_08055A24: .4byte gUnknown_2031DD4 -_08055A28: - movs r0, 0x4 - bl TestPlayerAvatarFlags - lsls r0, 24 - cmp r0, 0 - beq _08055A38 - movs r0, 0x4 - b _08055A5A -_08055A38: - movs r0, 0x8 - bl TestPlayerAvatarFlags - lsls r0, 24 - cmp r0, 0 - beq _08055A48 - movs r0, 0x8 - b _08055A5A -_08055A48: - movs r0, 0x10 - bl TestPlayerAvatarFlags - lsls r0, 24 - cmp r0, 0 - beq _08055A58 - movs r0, 0x10 - b _08055A5A -_08055A58: - movs r0, 0x1 -_08055A5A: - strb r0, [r4] - ldr r1, _08055A68 @ =gUnknown_2031DD4 - movs r0, 0 - strb r0, [r1, 0x2] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08055A68: .4byte gUnknown_2031DD4 - thumb_func_end StoreInitialPlayerAvatarState - - thumb_func_start sub_8055A6C -sub_8055A6C: @ 8055A6C - push {r4-r7,lr} - bl GetCurrentMapType - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - bl sub_8055C74 - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - ldr r6, _08055ABC @ =gUnknown_2031DD4 - adds r0, r6, 0 - adds r1, r4, 0 - adds r2, r5, 0 - bl sub_8055ACC - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r0, _08055AC0 @ =0xffffff00 - ands r7, r0 - orrs r7, r1 - adds r0, r6, 0 - adds r2, r4, 0 - adds r3, r5, 0 - bl sub_8055B74 - lsls r0, 24 - lsrs r0, 16 - ldr r1, _08055AC4 @ =0xffff00ff - ands r7, r1 - orrs r7, r0 - ldr r0, _08055AC8 @ =0xff00ffff - ands r7, r0 - str r7, [r6] - adds r0, r6, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08055ABC: .4byte gUnknown_2031DD4 -_08055AC0: .4byte 0xffffff00 -_08055AC4: .4byte 0xffff00ff -_08055AC8: .4byte 0xff00ffff - thumb_func_end sub_8055A6C - - thumb_func_start sub_8055ACC -sub_8055ACC: @ 8055ACC - push {r4-r6,lr} - adds r6, r0, 0 - lsls r1, 16 - lsrs r5, r1, 16 - lsls r2, 24 - lsrs r4, r2, 24 - cmp r4, 0x8 - beq _08055AE8 - ldr r0, _08055AF0 @ =0x00000802 - bl FlagGet - lsls r0, 24 - cmp r0, 0 - bne _08055B30 -_08055AE8: - cmp r4, 0x5 - bne _08055AF4 - movs r0, 0x10 - b _08055B32 - .align 2, 0 -_08055AF0: .4byte 0x00000802 -_08055AF4: - adds r0, r5, 0 - bl sub_8055B38 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08055B30 - lsls r0, r5, 24 - lsrs r0, 24 - bl MetatileBehavior_IsSurfable - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08055B16 - movs r0, 0x8 - b _08055B32 -_08055B16: - bl sub_8055C9C - cmp r0, 0x1 - bne _08055B30 - ldrb r0, [r6] - cmp r0, 0x2 - bne _08055B28 - movs r0, 0x2 - b _08055B32 -_08055B28: - cmp r0, 0x4 - bne _08055B30 - movs r0, 0x4 - b _08055B32 -_08055B30: - movs r0, 0x1 -_08055B32: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_8055ACC - - thumb_func_start sub_8055B38 -sub_8055B38: @ 8055B38 - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl MetatileBehavior_IsSurfable - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08055B6C - ldr r0, _08055B60 @ =gSaveBlock1Ptr - ldr r0, [r0] - ldrh r1, [r0, 0x4] - ldr r0, _08055B64 @ =0x00005601 - cmp r1, r0 - beq _08055B5C - ldr r0, _08055B68 @ =0x00005701 - cmp r1, r0 - bne _08055B6C -_08055B5C: - movs r0, 0x1 - b _08055B6E - .align 2, 0 -_08055B60: .4byte gSaveBlock1Ptr -_08055B64: .4byte 0x00005601 -_08055B68: .4byte 0x00005701 -_08055B6C: - movs r0, 0 -_08055B6E: - pop {r1} - bx r1 - thumb_func_end sub_8055B38 - - thumb_func_start sub_8055B74 -sub_8055B74: @ 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 sub_8055B74 - - thumb_func_start sub_8055C74 -sub_8055C74: @ 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 sub_8055C74 - - thumb_func_start sub_8055C9C -sub_8055C9C: @ 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 sub_8055C9C - - thumb_func_start sub_8055CB8 -sub_8055CB8: @ 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 sub_8055CB8 - - 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 get_mapdata_header - 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 @ =gUnknown_2031DBC - ldr r1, [r0, 0x4] - ldr r0, [r0] - str r0, [r2] - str r1, [r2, 0x4] - bx lr - .align 2, 0 -_08055D68: .4byte gUnknown_2031DBC - 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 @ =gUnknown_2031DBC - bl sub_8055D6C - lsls r0, 16 - lsrs r0, 16 - pop {r1} - bx r1 - .align 2, 0 -_08055DB4: .4byte gUnknown_2031DBC - 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 warp1_get_mapheader - 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 sub_805610C -sub_805610C: @ 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 sub_805610C - - thumb_func_start sub_8056124 -sub_8056124: @ 8056124 - push {lr} - lsls r0, 16 - lsrs r1, r0, 16 - movs r0, 0x8D - lsls r0, 1 - cmp r1, r0 - beq _08056138 - adds r0, 0x17 - cmp r1, r0 - bne _08056150 -_08056138: - ldr r0, _0805614C @ =gMapHeader - ldrb r0, [r0, 0x14] - cmp r0, 0x84 - beq _08056148 - cmp r0, 0x7B - beq _08056148 - cmp r0, 0x61 - bne _08056150 -_08056148: - movs r0, 0 - b _08056152 - .align 2, 0 -_0805614C: .4byte gMapHeader -_08056150: - movs r0, 0x1 -_08056152: - pop {r1} - bx r1 - thumb_func_end sub_8056124 - - thumb_func_start get_map_light_level_by_bank_and_number -get_map_light_level_by_bank_and_number: @ 8056158 - push {lr} - lsls r0, 24 - asrs r0, 8 - lsrs r0, 16 - lsls r1, 24 - asrs r1, 8 - lsrs r1, 16 - bl Overworld_GetMapHeaderByGroupAndId - ldrb r0, [r0, 0x17] - pop {r1} - bx r1 - thumb_func_end get_map_light_level_by_bank_and_number - - thumb_func_start get_map_light_level_from_warp -get_map_light_level_from_warp: @ 8056170 - push {lr} - movs r2, 0 - ldrsb r2, [r0, r2] - movs r1, 0x1 - ldrsb r1, [r0, r1] - adds r0, r2, 0 - bl get_map_light_level_by_bank_and_number - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end get_map_light_level_from_warp - - thumb_func_start GetCurrentMapType -GetCurrentMapType: @ 8056188 - push {lr} - ldr r0, _0805619C @ =gSaveBlock1Ptr - ldr r0, [r0] - adds r0, 0x4 - bl get_map_light_level_from_warp - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_0805619C: .4byte gSaveBlock1Ptr - thumb_func_end GetCurrentMapType - - thumb_func_start GetLastUsedWarpMapType -GetLastUsedWarpMapType: @ 80561A0 - push {lr} - ldr r0, _080561B0 @ =gUnknown_2031DB4 - bl get_map_light_level_from_warp - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_080561B0: .4byte gUnknown_2031DB4 - thumb_func_end GetLastUsedWarpMapType - - thumb_func_start GetLastUsedWarpMapSectionId -GetLastUsedWarpMapSectionId: @ 80561B4 - push {lr} - ldr r1, _080561D4 @ =gUnknown_2031DB4 - 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 - ldrb r0, [r0, 0x14] - pop {r1} - bx r1 - .align 2, 0 -_080561D4: .4byte gUnknown_2031DB4 - thumb_func_end GetLastUsedWarpMapSectionId - - thumb_func_start IsMapTypeOutdoors -IsMapTypeOutdoors: @ 80561D8 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - beq _080561F2 - cmp r0, 0x1 - beq _080561F2 - cmp r0, 0x5 - beq _080561F2 - cmp r0, 0x2 - beq _080561F2 - cmp r0, 0x6 - bne _080561F6 -_080561F2: - movs r0, 0x1 - b _080561F8 -_080561F6: - movs r0, 0 -_080561F8: - pop {r1} - bx r1 - thumb_func_end IsMapTypeOutdoors - - thumb_func_start Overworld_MapTypeAllowsTeleportAndFly -Overworld_MapTypeAllowsTeleportAndFly: @ 80561FC - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - beq _08056212 - cmp r0, 0x1 - beq _08056212 - cmp r0, 0x6 - beq _08056212 - cmp r0, 0x2 - bne _08056216 -_08056212: - movs r0, 0x1 - b _08056218 -_08056216: - movs r0, 0 -_08056218: - pop {r1} - bx r1 - thumb_func_end Overworld_MapTypeAllowsTeleportAndFly - - thumb_func_start IsMapTypeIndoors -IsMapTypeIndoors: @ 805621C - push {lr} - lsls r0, 24 - movs r1, 0xF8 - lsls r1, 24 - adds r0, r1 - lsrs r0, 24 - cmp r0, 0x1 - bls _08056230 - movs r0, 0 - b _08056232 -_08056230: - movs r0, 0x1 -_08056232: - pop {r1} - bx r1 - thumb_func_end IsMapTypeIndoors - - thumb_func_start GetSavedWarpRegionMapSectionId -GetSavedWarpRegionMapSectionId: @ 8056238 - push {lr} - ldr r0, _0805625C @ =gSaveBlock1Ptr - ldr r1, [r0] - movs r0, 0x14 - ldrsb r0, [r1, r0] - lsls r0, 16 - lsrs r0, 16 - ldrb r1, [r1, 0x15] - lsls r1, 24 - asrs r1, 24 - lsls r1, 16 - lsrs r1, 16 - bl Overworld_GetMapHeaderByGroupAndId - ldrb r0, [r0, 0x14] - pop {r1} - bx r1 - .align 2, 0 -_0805625C: .4byte gSaveBlock1Ptr - thumb_func_end GetSavedWarpRegionMapSectionId - - thumb_func_start GetCurrentRegionMapSectionId -GetCurrentRegionMapSectionId: @ 8056260 - push {lr} - ldr r0, _08056284 @ =gSaveBlock1Ptr - ldr r1, [r0] - movs r0, 0x4 - ldrsb r0, [r1, r0] - lsls r0, 16 - lsrs r0, 16 - ldrb r1, [r1, 0x5] - lsls r1, 24 - asrs r1, 24 - lsls r1, 16 - lsrs r1, 16 - bl Overworld_GetMapHeaderByGroupAndId - ldrb r0, [r0, 0x14] - pop {r1} - bx r1 - .align 2, 0 -_08056284: .4byte gSaveBlock1Ptr - thumb_func_end GetCurrentRegionMapSectionId - - thumb_func_start GetCurrentMapBattleScene -GetCurrentMapBattleScene: @ 8056288 - push {lr} - ldr r0, _080562AC @ =gSaveBlock1Ptr - ldr r1, [r0] - movs r0, 0x4 - ldrsb r0, [r1, r0] - lsls r0, 16 - lsrs r0, 16 - ldrb r1, [r1, 0x5] - lsls r1, 24 - asrs r1, 24 - lsls r1, 16 - lsrs r1, 16 - bl Overworld_GetMapHeaderByGroupAndId - ldrb r0, [r0, 0x1B] - pop {r1} - bx r1 - .align 2, 0 -_080562AC: .4byte gSaveBlock1Ptr - thumb_func_end GetCurrentMapBattleScene - - thumb_func_start InitOverworldBgs -InitOverworldBgs: @ 80562B0 - push {r4-r6,lr} - mov r6, r8 - push {r6} - bl MoveSaveBlocks_ResetHeap_ - bl sub_8056E80 - movs r0, 0 - bl ResetBgsAndClearDma3BusyFlags - ldr r1, _08056344 @ =gUnknown_826D320 - movs r0, 0 - movs r2, 0x4 - bl InitBgsFromTemplates - movs r0, 0x1 - movs r1, 0x5 - movs r2, 0x1 - bl SetBgAttribute - movs r0, 0x2 - movs r1, 0x5 - movs r2, 0x1 - bl SetBgAttribute - movs r0, 0x3 - movs r1, 0x5 - movs r2, 0x1 - bl SetBgAttribute - ldr r0, _08056348 @ =gBGTilemapBuffers2 - mov r8, r0 - movs r4, 0x80 - lsls r4, 4 - adds r0, r4, 0 - bl AllocZeroed - mov r1, r8 - str r0, [r1] - ldr r6, _0805634C @ =gBGTilemapBuffers1 - adds r0, r4, 0 - bl AllocZeroed - str r0, [r6] - ldr r5, _08056350 @ =gBGTilemapBuffers3 - adds r0, r4, 0 - bl AllocZeroed - str r0, [r5] - mov r0, r8 - ldr r1, [r0] - movs r0, 0x1 - bl SetBgTilemapBuffer - ldr r1, [r6] - movs r0, 0x2 - bl SetBgTilemapBuffer - ldr r1, [r5] - movs r0, 0x3 - bl SetBgTilemapBuffer - bl InitStandardTextBoxWindows - bl ResetBg0 - bl sub_8069348 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08056344: .4byte gUnknown_826D320 -_08056348: .4byte gBGTilemapBuffers2 -_0805634C: .4byte gBGTilemapBuffers1 -_08056350: .4byte gBGTilemapBuffers3 - thumb_func_end InitOverworldBgs - - thumb_func_start sub_8056354 -sub_8056354: @ 8056354 - push {r4-r6,lr} - mov r6, r8 - push {r6} - movs r0, 0 - bl ResetBgsAndClearDma3BusyFlags - ldr r1, _080563E0 @ =gUnknown_826D320 - movs r0, 0 - movs r2, 0x4 - bl InitBgsFromTemplates - movs r0, 0x1 - movs r1, 0x5 - movs r2, 0x1 - bl SetBgAttribute - movs r0, 0x2 - movs r1, 0x5 - movs r2, 0x1 - bl SetBgAttribute - movs r0, 0x3 - movs r1, 0x5 - movs r2, 0x1 - bl SetBgAttribute - ldr r0, _080563E4 @ =gBGTilemapBuffers2 - mov r8, r0 - movs r4, 0x80 - lsls r4, 4 - adds r0, r4, 0 - bl AllocZeroed - mov r1, r8 - str r0, [r1] - ldr r6, _080563E8 @ =gBGTilemapBuffers1 - adds r0, r4, 0 - bl AllocZeroed - str r0, [r6] - ldr r5, _080563EC @ =gBGTilemapBuffers3 - adds r0, r4, 0 - bl AllocZeroed - str r0, [r5] - mov r0, r8 - ldr r1, [r0] - movs r0, 0x1 - bl SetBgTilemapBuffer - ldr r1, [r6] - movs r0, 0x2 - bl SetBgTilemapBuffer - ldr r1, [r5] - movs r0, 0x3 - bl SetBgTilemapBuffer - bl InitStandardTextBoxWindows - bl ResetBg0 - bl sub_8069348 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080563E0: .4byte gUnknown_826D320 -_080563E4: .4byte gBGTilemapBuffers2 -_080563E8: .4byte gBGTilemapBuffers1 -_080563EC: .4byte gBGTilemapBuffers3 - thumb_func_end sub_8056354 - - thumb_func_start CleanupOverworldWindowsAndTilemaps -CleanupOverworldWindowsAndTilemaps: @ 80563F0 - push {lr} - bl FreeAllOverworldWindowBuffers - ldr r0, _08056414 @ =gBGTilemapBuffers3 - ldr r0, [r0] - bl Free - ldr r0, _08056418 @ =gBGTilemapBuffers1 - ldr r0, [r0] - bl Free - ldr r0, _0805641C @ =gBGTilemapBuffers2 - ldr r0, [r0] - bl Free - pop {r0} - bx r0 - .align 2, 0 -_08056414: .4byte gBGTilemapBuffers3 -_08056418: .4byte gBGTilemapBuffers1 -_0805641C: .4byte gBGTilemapBuffers2 - thumb_func_end CleanupOverworldWindowsAndTilemaps - - thumb_func_start sub_8056420 -sub_8056420: @ 8056420 - push {lr} - bl ResetSafariZoneFlag - pop {r0} - bx r0 - thumb_func_end sub_8056420 - - thumb_func_start IsUpdateLinkStateCBActive -IsUpdateLinkStateCBActive: @ 805642C - push {lr} - ldr r0, _0805643C @ =gMain - ldr r1, [r0] - ldr r0, _08056440 @ =c1_link_related - cmp r1, r0 - beq _08056444 - movs r0, 0 - b _08056446 - .align 2, 0 -_0805643C: .4byte gMain -_08056440: .4byte c1_link_related -_08056444: - movs r0, 0x1 -_08056446: - pop {r1} - bx r1 - thumb_func_end IsUpdateLinkStateCBActive - - thumb_func_start sub_805644C -sub_805644C: @ 805644C - push {r4-r6,lr} - sub sp, 0x4 - lsls r0, 16 - lsrs r0, 16 - adds r5, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r4, r1, 0 - bl sub_8112B3C - bl sub_805BEB8 - mov r6, sp - mov r0, sp - bl FieldClearPlayerInput - mov r0, sp - adds r1, r5, 0 - adds r2, r4, 0 - bl FieldGetPlayerInput - mov r0, sp - bl FieldInput_HandleCancelSignpost - bl ScriptContext2_IsEnabled - lsls r0, 24 - cmp r0, 0 - bne _080564BA - mov r0, sp - bl ProcessPlayerFieldInput - cmp r0, 0x1 - bne _080564B0 - ldr r0, _080564A8 @ =gUnknown_3005E88 - ldrb r0, [r0] - cmp r0, 0x2 - bne _0805649E - ldr r0, _080564AC @ =gInputToStoreInQuestLogMaybe - bl sub_81127F8 -_0805649E: - bl ScriptContext2_Enable - bl DismissMapNamePopup - b _080564BA - .align 2, 0 -_080564A8: .4byte gUnknown_3005E88 -_080564AC: .4byte gInputToStoreInQuestLogMaybe -_080564B0: - ldrb r0, [r6, 0x2] - adds r1, r5, 0 - adds r2, r4, 0 - bl player_step -_080564BA: - bl RunQuestLogCB - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_805644C - thumb_func_start sub_80564C8 sub_80564C8: @ 80564C8 push {lr} @@ -3492,7 +197,7 @@ CB2_NewGame: @ 8056644 push {lr} bl FieldClearVBlankHBlankCallbacks bl StopMapMusic - bl sub_8056420 + bl ResetSafariZoneFlag_ bl NewGameInitData bl ResetInitialPlayerAvatarState bl PlayTimeCounter_Start @@ -3539,7 +244,7 @@ CB2_WhiteOut: @ 80566A4 bls _08056702 bl FieldClearVBlankHBlankCallbacks bl StopMapMusic - bl sub_8056420 + bl ResetSafariZoneFlag_ bl sub_8054BC8 movs r0, 0x2 bl sub_80559F8 @@ -3645,7 +350,7 @@ c2_80567AC: @ 80567AC cmp r0, 0 beq _080567CC bl SetFieldVBlankCallback - ldr r0, _080567D4 @ =c1_link_related + ldr r0, _080567D4 @ =CB1_UpdateLinkState bl SetMainCallback1 bl sub_80578D8 ldr r0, _080567D8 @ =sub_80565B4 @@ -3655,7 +360,7 @@ _080567CC: bx r0 .align 2, 0 _080567D0: .4byte gMain + 0x438 -_080567D4: .4byte c1_link_related +_080567D4: .4byte CB1_UpdateLinkState _080567D8: .4byte sub_80565B4 thumb_func_end c2_80567AC @@ -3724,7 +429,7 @@ c2_8056854: @ 8056854 push {lr} bl FieldClearVBlankHBlankCallbacks bl StopMapMusic - ldr r0, _08056878 @ =c1_link_related + ldr r0, _08056878 @ =CB1_UpdateLinkState bl SetMainCallback1 bl sub_80578D8 ldr r0, _0805687C @ =gWirelessCommType @@ -3735,7 +440,7 @@ c2_8056854: @ 8056854 ldr r0, _08056884 @ =FieldCB_ReturnToFieldWirelessLink b _0805688C .align 2, 0 -_08056878: .4byte c1_link_related +_08056878: .4byte CB1_UpdateLinkState _0805687C: .4byte gWirelessCommType _08056880: .4byte gFieldCallback _08056884: .4byte FieldCB_ReturnToFieldWirelessLink @@ -3838,8 +543,8 @@ CB2_ContinueSavedGame: @ 8056938 push {lr} bl FieldClearVBlankHBlankCallbacks bl StopMapMusic - bl sub_8056420 - bl set_current_map_header_from_sav1 + bl ResetSafariZoneFlag_ + bl LoadSaveblockMapHeader bl sub_80550A8 bl UnfreezeObjectEvents bl sub_8054E40 @@ -3857,7 +562,7 @@ CB2_ContinueSavedGame: @ 8056938 cmp r0, 0x1 bne _0805699C bl sav2_x9_clear_bit1 - bl warp1_set_to_sav1w + bl SetWarpDestinationToContinueGameWarp bl WarpIntoMap ldr r0, _08056998 @ =CB2_LoadMap bl SetMainCallback2 @@ -4001,7 +706,7 @@ _08056AB0: b _08056B62 _08056ABE: movs r0, 0x1 - bl sub_8055920 + bl mli0_load_map b _08056B62 _08056AC6: movs r0, 0x1 @@ -4124,7 +829,7 @@ _08056BD0: bl InitOverworldBgs bl FieldClearVBlankHBlankCallbacks adds r0, r5, 0 - bl sub_8055920 + bl mli0_load_map b _08056CCA _08056BE0: bl sub_8111F14 @@ -4691,7 +1396,7 @@ mli4_mapscripts_and_other: @ 805709C mov r0, sp adds r1, r4, 0 bl GetCameraFocusCoords - bl sub_8055A6C + bl GetInitialPlayerAvatarState adds r5, r0, 0 mov r0, sp movs r1, 0 @@ -4943,7 +1648,7 @@ sub_80572A8: @ 80572A8 ldr r0, _080572D0 @ =gUnknown_2036E28 movs r1, 0x1 strb r1, [r0] - bl set_current_map_header_from_sav1 + bl LoadSaveblockMapHeader bl ScriptContext1_Init bl ScriptContext2_Disable movs r0, 0 @@ -5033,7 +1738,7 @@ _0805735C: movs r0, 0 strb r0, [r1] movs r0, 0 - bl sub_8055920 + bl mli0_load_map b _08057412 .align 2, 0 _0805738C: .4byte gUnknown_2031DE0 @@ -5123,8 +1828,8 @@ sub_8057430: @ 8057430 ldr r1, _08057484 @ =gUnknown_2036E28 movs r0, 0x3 strb r0, [r1] - bl sub_8056420 - bl set_current_map_header_from_sav1 + bl ResetSafariZoneFlag_ + bl LoadSaveblockMapHeader bl sub_80550A8 bl UnfreezeObjectEvents bl sub_8054E40 @@ -5138,7 +1843,7 @@ sub_8057430: @ 8057430 cmp r0, 0x1 bne _08057490 bl sav2_x9_clear_bit1 - bl warp1_set_to_sav1w + bl SetWarpDestinationToContinueGameWarp bl WarpIntoMap ldr r0, _0805748C @ =CB2_LoadMap bl SetMainCallback2 @@ -5294,7 +1999,7 @@ _08057560: ands r0, r2 adds r6, r0, 0 orrs r6, r1 - ldr r0, _08057608 @ =gUnknown_2031DBC + ldr r0, _08057608 @ =sWarpDestination str r5, [r0] str r6, [r0, 0x4] ldr r1, _0805760C @ =gUnknown_2031DE8 @@ -5331,7 +2036,7 @@ _080575F8: .4byte 0xffffff00 _080575FC: .4byte 0xffff00ff _08057600: .4byte 0xffff0000 _08057604: .4byte 0x0000ffff -_08057608: .4byte gUnknown_2031DBC +_08057608: .4byte sWarpDestination _0805760C: .4byte gUnknown_2031DE8 _08057610: .4byte gPaletteFade _08057614: .4byte gFieldCallback2 @@ -5390,9 +2095,9 @@ _0805766C: .4byte _0805770C .4byte _08057712 _08057690: - bl sub_8056354 + bl InitOverworldBgs_NoResetHeap movs r0, 0 - bl sub_8055920 + bl mli0_load_map b _0805772A _0805769C: bl ScanlineEffect_Clear @@ -5633,8 +2338,8 @@ _0805787C: .4byte gPaletteFade _08057880: .4byte CB2_LoadMap thumb_func_end sub_8057854 - thumb_func_start c1_link_related -c1_link_related: @ 8057884 + thumb_func_start CB1_UpdateLinkState +CB1_UpdateLinkState: @ 8057884 push {r4,lr} ldr r0, _080578C8 @ =gWirelessCommType ldrb r0, [r0] @@ -5669,7 +2374,7 @@ _080578C8: .4byte gWirelessCommType _080578CC: .4byte gLocalLinkPlayerId _080578D0: .4byte gLinkPartnersHeldKeys _080578D4: .4byte gUnknown_3000E84 - thumb_func_end c1_link_related + thumb_func_end CB1_UpdateLinkState thumb_func_start sub_80578D8 sub_80578D8: @ 80578D8 diff --git a/berry_fix/payload/include/global.h b/berry_fix/payload/include/global.h index 63b4e0391..ef161c249 100644 --- a/berry_fix/payload/include/global.h +++ b/berry_fix/payload/include/global.h @@ -639,8 +639,8 @@ struct SaveBlock1 /* 0x02025734 */ { /*0x00*/ struct Coords16 pos; /*0x04*/ struct WarpData location; - /*0x0C*/ struct WarpData warp1; - /*0x14*/ struct WarpData warp2; + /*0x0C*/ struct WarpData continueGameWarp; + /*0x14*/ struct WarpData dynamicWarp; /*0x1C*/ struct WarpData lastHealLocation; /*0x24*/ struct WarpData warp4; /*0x2C*/ u16 savedMusic; diff --git a/common_syms/overworld.txt b/common_syms/overworld.txt new file mode 100644 index 000000000..e2aec44b1 --- /dev/null +++ b/common_syms/overworld.txt @@ -0,0 +1,8 @@ +gBGTilemapBuffers1 +gBGTilemapBuffers2 +gBGTilemapBuffers3 +gFieldCallback +gFieldCallback2 +gHeldKeyCodeToSend +gLocalLinkPlayerId +gFieldLinkPlayerCount diff --git a/data/maps/CinnabarIsland/scripts.inc b/data/maps/CinnabarIsland/scripts.inc index e0260dac5..40e8288cd 100644 --- a/data/maps/CinnabarIsland/scripts.inc +++ b/data/maps/CinnabarIsland/scripts.inc @@ -60,7 +60,7 @@ CinnabarIsland_OnFrame:: @ 8166F6E CinnabarIsland_EventScript_ExitPokeCenterForOneIsland:: @ 8166F88 lockall - clearflag FLAG_SPECIAL_FLAG_0x4001 + clearflag FLAG_DONT_TRANSITION_MUSIC savebgm MUS_DUMMY textcolor 0 setvar VAR_MAP_SCENE_CINNABAR_ISLAND_2, 2 diff --git a/data/maps/CinnabarIsland_PokemonCenter_1F/scripts.inc b/data/maps/CinnabarIsland_PokemonCenter_1F/scripts.inc index c96169d1d..844c38997 100644 --- a/data/maps/CinnabarIsland_PokemonCenter_1F/scripts.inc +++ b/data/maps/CinnabarIsland_PokemonCenter_1F/scripts.inc @@ -36,7 +36,7 @@ CinnabarIsland_PokemonCenter_1F_EventScript_Bill:: @ 816E90A closemessage playbgm MUS_ANNAI, 1 savebgm MUS_ANNAI - setflag FLAG_SPECIAL_FLAG_0x4001 + setflag FLAG_DONT_TRANSITION_MUSIC setflag FLAG_HIDE_CINNABAR_POKECENTER_BILL delay 20 compare VAR_FACING, DIR_SOUTH diff --git a/data/maps/PalletTown/scripts.inc b/data/maps/PalletTown/scripts.inc index b165ae6b9..1b98d4cb4 100644 --- a/data/maps/PalletTown/scripts.inc +++ b/data/maps/PalletTown/scripts.inc @@ -224,7 +224,7 @@ PalletTown_EventScript_OakTrigger:: @ 8165605 clearflag FLAG_HIDE_OAK_IN_HIS_LAB setvar VAR_MAP_SCENE_PALLET_TOWN_OAK, 1 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 waitstate releaseall diff --git a/data/maps/PalletTown_ProfessorOaksLab/scripts.inc b/data/maps/PalletTown_ProfessorOaksLab/scripts.inc index 461318e35..facebea6b 100644 --- a/data/maps/PalletTown_ProfessorOaksLab/scripts.inc +++ b/data/maps/PalletTown_ProfessorOaksLab/scripts.inc @@ -238,7 +238,7 @@ PalletTown_ProfessorOaksLab_ChooseStarterScene:: @ 816923E waitmovement 0 applymovement LOCALID_RIVAL, Movement_WalkInPlaceFastestUp waitmovement 0 - clearflag FLAG_SPECIAL_FLAG_0x4001 + clearflag FLAG_DONT_TRANSITION_MUSIC savebgm SE_STOP fadedefaultbgm msgbox PalletTown_ProfessorOaksLab_Text_RivalFedUpWithWaiting diff --git a/data/overworld.s b/data/overworld.s index 245ee3696..7104acdc6 100644 --- a/data/overworld.s +++ b/data/overworld.s @@ -5,98 +5,6 @@ .section .rodata .align 2, 0 -sWhiteOutMoneyLossMultipliers:: @ 826D294 - .byte 2 - .byte 4 - .byte 6 - .byte 9 - .byte 12 - .byte 16 - .byte 20 - .byte 25 - .byte 30 - - .align 1 -sWhiteOutMoneyLossBadgeFlagIDs:: @ 826D29E - .2byte FLAG_BADGE01_GET - .2byte FLAG_BADGE02_GET - .2byte FLAG_BADGE03_GET - .2byte FLAG_BADGE04_GET - .2byte FLAG_BADGE05_GET - .2byte FLAG_BADGE06_GET - .2byte FLAG_BADGE07_GET - .2byte FLAG_BADGE08_GET - - .align 2 -sDummyWarpData:: @ 826D2B0 - map MAP_UNDEFINED - .byte 0xFF - .align 1 - .2byte 0xFFFF, 0xFFFF - -sUnusedData:: @ 826D2B8 - .4byte 1200 - .4byte 3600 - .4byte 1200 - .4byte 2400 - .4byte 50 - .4byte 80 - .4byte -44 - .4byte 44 - -gDirectionToVectors:: @ 826D2D8 - .4byte 0, 0 - .4byte 0, 1 - .4byte 0, -1 - .4byte -1, 0 - .4byte 1, 0 - .4byte -1, 1 - .4byte 1, 1 - .4byte -1, -1 - .4byte 1, -1 - -gUnknown_826D320:: @ 826D320 - .4byte 0x000001f8 - @ { - @ .bg = 0, - @ .charBaseIndex = 2, - @ .mapBaseIndex = 31, - @ .screenSize = 0, - @ .paletteMode = 0, - @ .priority = 0, - @ .baseTile = 0x0000 - @ } - .4byte 0x000011d1 - @ { - @ .bg = 1, - @ .charBaseIndex = 0, - @ .mapBaseIndex = 29, - @ .screenSize = 0, - @ .paletteMode = 0, - @ .priority = 1, - @ .baseTile = 0x0000 - @ } - .4byte 0x000021c2 - @ { - @ .bg = 2, - @ .charBaseIndex = 0, - @ .mapBaseIndex = 28, - @ .screenSize = 0, - @ .paletteMode = 0, - @ .priority = 2, - @ .baseTile = 0x0000 - @ } - .4byte 0x000031e3 - @ { - @ .bg = 3, - @ .charBaseIndex = 0, - @ .mapBaseIndex = 30, - @ .screenSize = 0, - @ .paletteMode = 0, - @ .priority = 3, - @ .baseTile = 0x0000 - @ } - gFlashEffectParams:: @ 826D330 .4byte REG_WIN0H .4byte (2 >> 1) | ((DMA_16BIT | DMA_DEST_RELOAD | DMA_SRC_INC | DMA_REPEAT | DMA_START_HBLANK | DMA_ENABLE) << 16) diff --git a/include/constants/flags.h b/include/constants/flags.h index 6fd532a0e..212718bc9 100644 --- a/include/constants/flags.h +++ b/include/constants/flags.h @@ -1319,6 +1319,7 @@ #define FLAG_SYS_SAFARI_MODE (SYS_FLAGS + 0x0) #define FLAG_SYS_VS_SEEKER_CHARGING (SYS_FLAGS + 0x1) +#define FLAG_SYS_CRUISE_MODE (SYS_FLAGS + 0x2) #define FLAG_SYS_WHITE_FLUTE_ACTIVE (SYS_FLAGS + 0x3) #define FLAG_SYS_BLACK_FLUTE_ACTIVE (SYS_FLAGS + 0x4) #define FLAG_SYS_USE_STRENGTH (SYS_FLAGS + 0x5) @@ -1437,7 +1438,7 @@ #define SPECIAL_FLAGS_START 0x4000 #define SPECIAL_FLAGS_COUNT 16 #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_0x4003 0x4003 #define FLAG_SPECIAL_FLAG_0x4004 0x4004 diff --git a/include/event_data.h b/include/event_data.h index e635cbc6d..269762b23 100644 --- a/include/event_data.h +++ b/include/event_data.h @@ -58,5 +58,6 @@ void ResetMysteryEventFlags(void); void ResetMysteryEventVars(void); bool32 IsNationalPokedexEnabled(void); void sub_806E190(void); +void ClearTempFieldEventData(void); #endif // GUARD_EVENT_DATA_H diff --git a/include/event_scripts.h b/include/event_scripts.h index 9b78854fa..add2da0d1 100644 --- a/include/event_scripts.h +++ b/include/event_scripts.h @@ -1259,4 +1259,8 @@ extern const u8 EventScript_FieldPoison[]; extern const u8 EventScript_EggHatch[]; extern const u8 EventScript_1C1361[]; +// overworld + +extern const u8 EventScript_ResetEliteFourEnd[]; + #endif //GUARD_EVENT_SCRIPTS_H diff --git a/include/field_camera.h b/include/field_camera.h index 2d1ce2ce9..9c23bb774 100644 --- a/include/field_camera.h +++ b/include/field_camera.h @@ -31,5 +31,6 @@ void SetCameraPanning(s16 x, s16 y); void UpdateCameraPanning(void); void InstallCameraPanAheadCallback(void); void DrawDoorMetatileAt(int x, int y, const u16 *data); +void move_tilemap_camera_to_upper_left_corner(void); #endif //GUARD_FIELD_CAMERA_H diff --git a/include/field_message_box.h b/include/field_message_box.h index a6ef14aae..b822fb8f7 100644 --- a/include/field_message_box.h +++ b/include/field_message_box.h @@ -9,5 +9,6 @@ bool8 ShowFieldAutoScrollMessage(const u8 *message); void HideFieldMessageBox(void); bool8 IsFieldMessageBoxHidden(void); bool8 textbox_any_visible(void); +void sub_8069348(void); #endif // GUARD_FIELD_MESSAGE_BOX_H diff --git a/include/field_screen_effect.h b/include/field_screen_effect.h index aee7dc5a7..a15d99120 100644 --- a/include/field_screen_effect.h +++ b/include/field_screen_effect.h @@ -11,4 +11,6 @@ void DoOutwardBarnDoorWipe(void); void Task_BarnDoorWipe(u8 taskId); void sub_807F5F0(void); +extern const s32 gMaxFlashLevel; + #endif // GUARD_FIELD_SCREEN_EFFECT_H diff --git a/include/field_specials.h b/include/field_specials.h index 9c44c35bc..cc51eea87 100644 --- a/include/field_specials.h +++ b/include/field_specials.h @@ -31,5 +31,7 @@ void CutMoveOpenDottedHoleDoor(void); void RunMassageCooldownStepCounter(void); void IncrementResortGorgeousStepCounter(void); void IncrementBirthIslandRockStepCount(void); +void ResetCyclingRoadChallengeData(void); +void ResetFieldTasksArgs(void); #endif // GUARD_FIELD_SPECIALS_H diff --git a/include/field_weather.h b/include/field_weather.h index 432c8c100..44d9e5268 100644 --- a/include/field_weather.h +++ b/include/field_weather.h @@ -143,6 +143,7 @@ void sub_807AC98(void); void SetRainStrengthFromSoundEffect(u16 soundEffect); void sub_807A790(s8 gammaIndex); void sub_807A7C4(u8 gammaIndex, u8 gammaTargetIndex, u8 gammaStepDelay); +void ApplyWeatherGammaShiftToPal(u8 paletteIndex); extern const u16 gCloudsWeatherPalette[]; extern const u16 gSandstormWeatherPalette[]; diff --git a/include/fieldmap.h b/include/fieldmap.h index cc4a0f7ed..1971104fc 100644 --- a/include/fieldmap.h +++ b/include/fieldmap.h @@ -24,7 +24,7 @@ void GetCameraCoords(u16*, u16*); bool8 MapGridIsImpassableAt(s32, s32); s32 GetMapBorderIdAt(s32, s32); bool32 CanCameraMoveInDirection(s32); -u32 GetBehaviorByMetatileIdAndMapLayout(struct MapLayout *mapLayout, u16 metatile, u8 attr); +u32 GetBehaviorByMetatileIdAndMapLayout(const struct MapLayout *mapLayout, u16 metatile, u8 attr); const struct MapHeader * mapconnection_get_mapheader(struct MapConnection * connection); struct MapConnection * GetMapConnectionAtPos(s16 x, s16 y); void sub_8059948(u8 a0, u8 a1); @@ -34,5 +34,10 @@ u32 GetMetatileAttributeFromRawMetatileBehavior(u32 original, u8 bit); u32 MapGridGetMetatileAttributeAt(s16 x, s16 y, u8 attr); void MapGridSetMetatileImpassabilityAt(s32 x, s32 y, bool32 arg2); bool8 CameraMove(s32 x, s32 y); +void copy_map_tileset1_tileset2_to_vram(struct MapLayout const * mapLayout); +void apply_map_tileset1_tileset2_palette(struct MapLayout const * mapLayout); +void InitMap(void); +void copy_map_tileset2_to_vram_2(const struct MapLayout * mapLayout); +void apply_map_tileset2_palette(const struct MapLayout * mapLayout); #endif //GUARD_FIELDMAP_H diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h index 1858d3344..0d45a6d68 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -185,22 +185,31 @@ struct MapConnections struct MapHeader { - /* 0x00 */ struct MapLayout *mapLayout; - /* 0x04 */ struct MapEvents *events; - /* 0x08 */ u8 *mapScripts; - /* 0x0C */ struct MapConnections *connections; + /* 0x00 */ const struct MapLayout *mapLayout; + /* 0x04 */ const struct MapEvents *events; + /* 0x08 */ const u8 *mapScripts; + /* 0x0C */ const struct MapConnections *connections; /* 0x10 */ u16 music; /* 0x12 */ u16 mapLayoutId; /* 0x14 */ u8 regionMapSectionId; /* 0x15 */ u8 cave; /* 0x16 */ u8 weather; /* 0x17 */ u8 mapType; - /* 0x18 */ u8 filler_18; + /* 0x18 */ u8 bikingAllowed; /* 0x19 */ u8 escapeRope; /* 0x1A */ s8 flags; /* 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 { /*0x00*/ /* 0*/ u32 active:1; diff --git a/include/global.h b/include/global.h index b2fd67b4b..aa60be994 100644 --- a/include/global.h +++ b/include/global.h @@ -743,8 +743,8 @@ struct SaveBlock1 { /*0x0000*/ struct Coords16 pos; /*0x0004*/ struct WarpData location; - /*0x000C*/ struct WarpData warp1; - /*0x0014*/ struct WarpData warp2; + /*0x000C*/ struct WarpData continueGameWarp; + /*0x0014*/ struct WarpData dynamicWarp; /*0x001C*/ struct WarpData lastHealLocation; /*0x0024*/ struct WarpData escapeWarp; /*0x002C*/ u16 savedMusic; diff --git a/include/heal_location.h b/include/heal_location.h index 9680f8fdd..2480d1723 100644 --- a/include/heal_location.h +++ b/include/heal_location.h @@ -11,7 +11,7 @@ struct HealLocation s16 y; }; -const struct HealLocation *GetHealLocationPointer(u32 loc); +const struct HealLocation *GetHealLocation(u32 loc); void SetWhiteoutRespawnWarpAndHealerNpc(struct WarpData * warp); #endif // GUARD_HEAL_LOCATION_H diff --git a/include/m4a.h b/include/m4a.h index ee23d917a..b67dd0492 100644 --- a/include/m4a.h +++ b/include/m4a.h @@ -25,4 +25,6 @@ void m4aMPlayFadeOutTemporarily(struct MusicPlayerInfo *mplayInfo, u16 speed); void m4aMPlayFadeIn(struct MusicPlayerInfo *mplayInfo, u16 speed); void m4aMPlayImmInit(struct MusicPlayerInfo *mplayInfo); +extern const struct SongHeader mus_win_gym; + #endif //GUARD_M4A_H diff --git a/include/metatile_behavior.h b/include/metatile_behavior.h index a5f5a81b7..899586e0f 100644 --- a/include/metatile_behavior.h +++ b/include/metatile_behavior.h @@ -24,7 +24,7 @@ bool8 MetatileBehavior_IsUnknownWarp6F(u8 metatileBehavior); bool8 MetatileBehavior_IsUnknownWarp6C_to_6F(u8 metatileBehavior); bool8 MetatileBehavior_IsLadder(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_IsSemiDeepWater(u8 metatileBehavior); bool8 MetatileBehavior_IsEastArrowWarp(u8 metatileBehavior); diff --git a/include/overworld.h b/include/overworld.h index 730df3667..b0311c51c 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -53,13 +53,13 @@ struct CreditsOverworldCmd #define MUSIC_DISABLE_STOP 1 #define MUSIC_DISABLE_KEEP 2 -extern struct UCoords32 gDirectionToVectors[]; +extern const struct UCoords32 gDirectionToVectors[]; extern struct LinkPlayerObjectEvent gLinkPlayerObjectEvents[4]; extern MainCallback gFieldCallback; -extern struct WarpData gUnknown_2031DB4; -extern struct WarpData gUnknown_2031DBC; +extern struct WarpData gLastUsedWarp; +extern struct WarpData sWarpDestination; extern u8 gUnknown_2031DE0; extern u8 gFieldLinkPlayerCount; @@ -68,7 +68,7 @@ extern u8 gLocalLinkPlayerId; void IncrementGameStat(u8 index); void Overworld_SetMapObjTemplateCoords(u8, s16, s16); -void Overworld_SetMapObjTemplateMovementType(u8, u8); +void Overworld_SetObjEventTemplateMovementType(u8, u8); void SetWarpDestination(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); @@ -82,8 +82,8 @@ void sub_8084DD4(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); void sub_8084E2C(s8, s8, s8, s8, s8); void sub_8084E80(s8, s8, s8, s8, s8); void sub_8084EBC(s16, s16); -void sub_80555E0(void); -void copy_saved_warp3_bank_and_enter_x_to_warp1(void); +void SetWarpDestinationToEscapeWarp(void); +void SetWarpDestinationToLastHealLocation(void); u8 IsMapTypeOutdoors(u8 mapType); void Overworld_ClearSavedMusic(void); bool32 sub_8056124(u16 song); @@ -100,14 +100,14 @@ void Overworld_ChangeMusicTo(u16); bool32 IsUpdateLinkStateCBActive(void); void ClearLinkPlayerObjectEvents(void); -const struct MapHeader *Overworld_GetMapHeaderByGroupAndId(u16, u16); +const struct MapHeader *const Overworld_GetMapHeaderByGroupAndId(u16, u16); void ObjectEventMoveDestCoords(struct ObjectEvent *, u32, s16 *, s16 *); void sub_8086230(void); void CB2_ReturnToField(void); bool32 sub_8087598(void); void CB2_ReturnToFieldContinueScriptPlayMapMusic(void); void WarpIntoMap(void); -u8 get_map_light_level_by_bank_and_number(s8 mapGroup, s8 mapNum); +u8 GetMapTypeByGroupAndId(s8 mapGroup, s8 mapNum); void sub_8086194(void); void sub_8084CCC(u8 spawn); void SetWarpDestinationToMapWarp(s8 mapGroup, s8 mapNum, s8 warpNum); @@ -116,7 +116,7 @@ void SetWarpDestinationToDynamicWarp(u8 unused); void mapldr_default(void); u32 GetGameStat(u8 statId); -u32 SetGameStat(u8 statId, u32 value); +void SetGameStat(u8 statId, u32 value); void CB2_ContinueSavedGame(void); void sub_8055D5C(struct WarpData *); @@ -141,7 +141,7 @@ extern u8 gUnknown_2036E28; extern bool8 (* gFieldCallback2)(void); void SetLastHealLocationWarp(u8 healLocaionId); -void sub_8055864(u8 mapGroup, u8 mapNum); +void LoadMapFromCameraTransition(u8 mapGroup, u8 mapNum); void CB2_Overworld(void); void CB2_OverworldBasic(void); void CB2_NewGame(void); @@ -153,13 +153,13 @@ void Overworld_FadeOutMapMusic(void); void CB2_LoadMap(void); bool8 BGMusicStopped(void); bool8 IsMapTypeIndoors(u8 mapType); -bool32 sub_8055C9C(void); +bool32 Overworld_IsBikingAllowed(void); void Overworld_ResetStateAfterDigEscRope(void); bool32 sub_8058244(void); u8 GetCurrentMapType(void); u8 GetLastUsedWarpMapType(void); -const struct MapHeader *warp1_get_mapheader(void); +const struct MapHeader *const GetDestinationWarpMapHeader(void); void TryFadeOutOldMapMusic(void); void CB2_ReturnToFieldCableClub(void); void ResetGameStats(void); @@ -172,19 +172,19 @@ bool32 sub_8058318(void); void CB2_ReturnToFieldWithOpenMenu(void); void CB2_WhiteOut(void); void c2_8056854(void); -void sub_8054F38(u32 newKey); -void sub_8055778(int); +void ApplyNewEncryptionKeyToGameStats(u32 newKey); +void SetContinueGameWarpToDynamicWarp(int); -void sub_8055738(u8 loc); +void SetContinueGameWarpToHealLocation(u8 loc); -void sub_8056078(void *, void *); -void sub_805546C(u8 a0); +void UpdateAmbientCry(s16 *state, u16 *delayCounter); +void SetWarpDestinationToHealLocation(u8 a0); bool32 sub_80582E0(void); bool32 sub_8058274(void); u8 GetCurrentMapBattleScene(void); void Overworld_ResetStateAfterFly(void); bool8 sub_8055B38(u16 metatileBehavior); -void sub_8055DB8(void); +void Overworld_ResetMapMusic(void); void sub_8057F5C(void); void sub_8057F34(void); u32 sub_8057EC0(void); diff --git a/include/quest_log.h b/include/quest_log.h index 28c69505b..a353cf709 100644 --- a/include/quest_log.h +++ b/include/quest_log.h @@ -4,23 +4,10 @@ #include "global.h" #include "quest_log_battle.h" #include "constants/quest_log.h" - -struct UnkStruct_3005E90 -{ - u8 unk_0; - u8 unk_1_0:1; - u8 unk_1_1:1; - u8 unk_1_2:1; - u8 unk_1_3:1; - u8 unk_1_4:1; - u8 unk_2; -}; +#include "field_control_avatar.h" extern u8 gQuestLogState; extern u8 gUnknown_3005E88; -extern u16 sNumEventsInLogEntry; -extern struct UnkStruct_3005E90 gUnknown_3005E90; -extern struct QuestLogEntry * sCurQuestLogEntry; extern const u16 gUnknown_84566A8[]; void sub_8112720(u8); @@ -59,5 +46,10 @@ void sub_8112628(u8 movementActionId); void sub_81126AC(u8 movementActionId, u8 duration); void sub_8112588(u8 localId, u8 mapNum, u8 mapGroup, u8 movementActionId, u8 duration); void sub_8112C9C(void); +void sub_8110920(void); +void sub_8111708(void); +void sub_81127F8(struct FieldInput * a0); +void sub_8112B3C(void); +void RunQuestLogCB(void); #endif //GUARD_QUEST_LOG_H diff --git a/include/script.h b/include/script.h index 3dd91ca59..48b169ef1 100644 --- a/include/script.h +++ b/include/script.h @@ -49,10 +49,10 @@ u8 *mapheader_get_tagged_pointer(u8 tag); void mapheader_run_script_by_tag(u8 tag); u8 *mapheader_get_first_match_from_tagged_ptr_list(u8 tag); void RunOnLoadMapScript(void); -void mapheader_run_script_with_tag_x3(void); +void RunOnTransitionMapScript(void); void mapheader_run_script_with_tag_x5(void); void mapheader_run_script_with_tag_x7(void); -void mapheader_run_script_with_tag_x6(void); +void RunOnDiveWarpMapScript(void); bool8 TryRunOnFrameMapScript(void); void mapheader_run_first_tag4_script_list_match(void); u32 CalculateRamScriptChecksum(void); diff --git a/include/vs_seeker.h b/include/vs_seeker.h index d80e558ea..8c3b86194 100644 --- a/include/vs_seeker.h +++ b/include/vs_seeker.h @@ -15,5 +15,6 @@ u8 sub_810CF54(); void sub_810D0D0(void); void sub_810CB90(void); bool8 sub_810C4EC(void); +void TryUpdateRandomTrainerRematches(u16 mapGroup, u16 mapNum); #endif //GUARD_VS_SEEKER_H diff --git a/ld_script.txt b/ld_script.txt index 3012e7066..a91dd536d 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -87,6 +87,7 @@ SECTIONS { src/trade_scene.o(.text); src/play_time.o(.text); src/new_game.o(.text); + src/overworld.o(.text); asm/overworld.o(.text); src/fieldmap.o(.text); src/metatile_behavior.o(.text); @@ -427,6 +428,7 @@ SECTIONS { src/pokeball.o(.rodata); src/trade.o(.rodata); src/trade_scene.o(.rodata); + src/overworld.o(.rodata); data/overworld.o(.rodata); data/tilesets.o(.rodata); data/maps.o(.rodata); diff --git a/src/cable_club.c b/src/cable_club.c index bc41ca4f6..93e333bef 100644 --- a/src/cable_club.c +++ b/src/cable_club.c @@ -724,7 +724,7 @@ static void sub_8081624(void) void CB2_ReturnFromCableClubBattle(void) { gBattleTypeFlags &= (u16)~BATTLE_TYPE_20; - sub_8055DB8(); + Overworld_ResetMapMusic(); LoadPlayerParty(); SavePlayerBag(); Special_UpdateTrainerFansAfterLinkBattle(); diff --git a/src/event_data.c b/src/event_data.c index f16267c98..c012a4a59 100644 --- a/src/event_data.c +++ b/src/event_data.c @@ -38,7 +38,7 @@ void InitEventData(void) memset(sSpecialFlags, 0, SPECIAL_FLAGS_COUNT); } -void sub_806E110(void) +void ClearTempFieldEventData(void) { memset(gSaveBlock1Ptr->flags, 0, 4); memset(gSaveBlock1Ptr->vars, 0, 16 * 2); diff --git a/src/field_effect.c b/src/field_effect.c index b59ce5a6b..c0d7d3463 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -2064,7 +2064,7 @@ static void EscapeRopeFieldEffect_Step1(struct Task * task) if (data[4] == 1 && !gPaletteFade.active && BGMusicStopped() == TRUE) { SetObjectEventDirection(playerObj, task->data[15]); - sub_80555E0(); + SetWarpDestinationToEscapeWarp(); WarpIntoMap(); gFieldCallback = FieldCallback_EscapeRopeExit; SetMainCallback2(CB2_LoadMap); @@ -2331,7 +2331,7 @@ static void TeleportFieldEffectTask4(struct Task * task) { if (BGMusicStopped() == TRUE) { - copy_saved_warp3_bank_and_enter_x_to_warp1(); + SetWarpDestinationToLastHealLocation(); WarpIntoMap(); SetMainCallback2(CB2_LoadMap); gFieldCallback = FieldCallback_TeleportIn; diff --git a/src/field_fadetransition.c b/src/field_fadetransition.c index 03190c095..7ebf9cc30 100644 --- a/src/field_fadetransition.c +++ b/src/field_fadetransition.c @@ -94,7 +94,7 @@ void FadeInFromBlack(void) void WarpFadeOutScreen(void) { - const struct MapHeader *header = warp1_get_mapheader(); + const struct MapHeader *header = GetDestinationWarpMapHeader(); if (header->regionMapSectionId != gMapHeader.regionMapSectionId && MapHasPreviewScreen(header->regionMapSectionId, MPS_TYPE_CAVE)) FadeScreen(FADE_TO_BLACK, 0); else @@ -113,7 +113,7 @@ void WarpFadeOutScreen(void) static void sub_807DC70(void) { - switch (MapTransitionIsEnter(GetCurrentMapType(), warp1_get_mapheader()->mapType)) + switch (MapTransitionIsEnter(GetCurrentMapType(), GetDestinationWarpMapHeader()->mapType)) { case FALSE: FadeScreen(FADE_TO_BLACK, 3); diff --git a/src/field_screen_effect.c b/src/field_screen_effect.c index a12b57b24..c376e1bad 100644 --- a/src/field_screen_effect.c +++ b/src/field_screen_effect.c @@ -399,7 +399,7 @@ static void sub_807F45C(u8 taskId) FillWindowPixelBuffer(windowId, PIXEL_FILL(0)); PutWindowTilemap(windowId); CopyWindowToVram(windowId, 3); - loc = GetHealLocationPointer(1); + loc = GetHealLocation(1); if (gSaveBlock1Ptr->lastHealLocation.mapGroup == loc->group && gSaveBlock1Ptr->lastHealLocation.mapNum == loc->map && gSaveBlock1Ptr->lastHealLocation.warpId == -1 diff --git a/src/field_specials.c b/src/field_specials.c index 59c026b78..0438435f8 100644 --- a/src/field_specials.c +++ b/src/field_specials.c @@ -108,7 +108,7 @@ void ForcePlayerOntoBike(void) Overworld_ChangeMusicTo(MUS_CYCLING); } -void nullsub_74(void) +void ResetCyclingRoadChallengeData(void) { } @@ -840,9 +840,9 @@ static const u8 sElevatorWindowAnimDuration[] = { void GetElevatorFloor(void) { u16 floor = 4; - if (gSaveBlock1Ptr->warp2.mapGroup == MAP_GROUP(ROCKET_HIDEOUT_B1F)) + if (gSaveBlock1Ptr->dynamicWarp.mapGroup == MAP_GROUP(ROCKET_HIDEOUT_B1F)) { - switch (gSaveBlock1Ptr->warp2.mapNum) + switch (gSaveBlock1Ptr->dynamicWarp.mapNum) { case MAP_NUM(SILPH_CO_1F): floor = 4; @@ -888,9 +888,9 @@ void GetElevatorFloor(void) break; } } - if (gSaveBlock1Ptr->warp2.mapGroup == MAP_GROUP(CELADON_CITY_DEPARTMENT_STORE_1F)) + if (gSaveBlock1Ptr->dynamicWarp.mapGroup == MAP_GROUP(CELADON_CITY_DEPARTMENT_STORE_1F)) { - switch (gSaveBlock1Ptr->warp2.mapNum) + switch (gSaveBlock1Ptr->dynamicWarp.mapNum) { case MAP_NUM(CELADON_CITY_DEPARTMENT_STORE_1F): floor = 4; @@ -909,9 +909,9 @@ void GetElevatorFloor(void) break; } } - if (gSaveBlock1Ptr->warp2.mapGroup == MAP_GROUP(TRAINER_TOWER_1F)) + if (gSaveBlock1Ptr->dynamicWarp.mapGroup == MAP_GROUP(TRAINER_TOWER_1F)) { - switch (gSaveBlock1Ptr->warp2.mapNum) + switch (gSaveBlock1Ptr->dynamicWarp.mapNum) { case MAP_NUM(TRAINER_TOWER_1F): case MAP_NUM(TRAINER_TOWER_2F): @@ -937,9 +937,9 @@ u16 InitElevatorFloorSelectMenuPos(void) sElevatorScroll = 0; sElevatorCursorPos = 0; - if (gSaveBlock1Ptr->warp2.mapGroup == MAP_GROUP(ROCKET_HIDEOUT_B1F)) + if (gSaveBlock1Ptr->dynamicWarp.mapGroup == MAP_GROUP(ROCKET_HIDEOUT_B1F)) { - switch (gSaveBlock1Ptr->warp2.mapNum) + switch (gSaveBlock1Ptr->dynamicWarp.mapNum) { case MAP_NUM(SILPH_CO_11F): sElevatorScroll = 0; @@ -999,9 +999,9 @@ u16 InitElevatorFloorSelectMenuPos(void) break; } } - if (gSaveBlock1Ptr->warp2.mapGroup == MAP_GROUP(CELADON_CITY_DEPARTMENT_STORE_1F)) + if (gSaveBlock1Ptr->dynamicWarp.mapGroup == MAP_GROUP(CELADON_CITY_DEPARTMENT_STORE_1F)) { - switch (gSaveBlock1Ptr->warp2.mapNum) + switch (gSaveBlock1Ptr->dynamicWarp.mapNum) { case MAP_NUM(CELADON_CITY_DEPARTMENT_STORE_5F): sElevatorScroll = 0; @@ -1025,9 +1025,9 @@ u16 InitElevatorFloorSelectMenuPos(void) break; } } - if (gSaveBlock1Ptr->warp2.mapGroup == MAP_GROUP(TRAINER_TOWER_1F)) + if (gSaveBlock1Ptr->dynamicWarp.mapGroup == MAP_GROUP(TRAINER_TOWER_1F)) { - switch (gSaveBlock1Ptr->warp2.mapNum) + switch (gSaveBlock1Ptr->dynamicWarp.mapNum) { case MAP_NUM(TRAINER_TOWER_1F): case MAP_NUM(TRAINER_TOWER_2F): @@ -2040,7 +2040,7 @@ const u16 sPokeCenter1FMaps[] = { bool8 sub_80CC87C(void) { s32 i; - u16 mapno = (gUnknown_2031DB4.mapGroup << 8) + gUnknown_2031DB4.mapNum; + u16 mapno = (gLastUsedWarp.mapGroup << 8) + gLastUsedWarp.mapNum; for (i = 0; sPokeCenter1FMaps[i] != MAP_UNDEFINED; i++) { if (sPokeCenter1FMaps[i] == mapno) diff --git a/src/field_tasks.c b/src/field_tasks.c index 6bd4b6f46..4c7b93f20 100644 --- a/src/field_tasks.c +++ b/src/field_tasks.c @@ -63,7 +63,7 @@ static void Task_RunTimeBasedEvents(u8 taskId) { if (gQuestLogState != 2 && gQuestLogState != 3) { - sub_8056078(&data[1], &data[2]); + UpdateAmbientCry(&data[1], &data[2]); } } } diff --git a/src/fieldmap.c b/src/fieldmap.c index 53a97629f..60c6f3dae 100644 --- a/src/fieldmap.c +++ b/src/fieldmap.c @@ -370,7 +370,7 @@ union Block s32 xprime; \ s32 yprime; \ \ - struct MapLayout *mapLayout = gMapHeader.mapLayout; \ + const struct MapLayout *mapLayout = gMapHeader.mapLayout; \ \ xprime = x - 7; \ xprime += 8 * mapLayout->borderWidth; \ @@ -485,7 +485,7 @@ void MapGridSetMetatileImpassabilityAt(s32 x, s32 y, bool32 arg2) } } -u32 GetBehaviorByMetatileIdAndMapLayout(struct MapLayout *mapLayout, u16 metatile, u8 attr) +u32 GetBehaviorByMetatileIdAndMapLayout(const struct MapLayout *mapLayout, u16 metatile, u8 attr) { u32 * attributes; @@ -732,7 +732,7 @@ bool8 CameraMove(s32 x, s32 y) old_y = gSaveBlock1Ptr->pos.y; connection = sub_8059600(direction, gSaveBlock1Ptr->pos.x, gSaveBlock1Ptr->pos.y); sub_80594AC(connection, direction, x, y); - sub_8055864(connection->mapGroup, connection->mapNum); + LoadMapFromCameraTransition(connection->mapGroup, connection->mapNum); gCamera.active = TRUE; gCamera.x = old_x - gSaveBlock1Ptr->pos.x; gCamera.y = old_y - gSaveBlock1Ptr->pos.y; diff --git a/src/heal_location.c b/src/heal_location.c index a8ac8cb46..ae02c7844 100644 --- a/src/heal_location.c +++ b/src/heal_location.c @@ -50,7 +50,7 @@ static const struct HealLocation * GetHealLocationPointerFromMapGroupAndNum(u16 return &sSpawnPoints[i - 1]; } -const struct HealLocation * GetHealLocationPointer(u32 idx) +const struct HealLocation * GetHealLocation(u32 idx) { if (idx == 0) return NULL; diff --git a/src/item_use.c b/src/item_use.c index df3dbaceb..b1751d639 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -268,7 +268,7 @@ void FieldUseFunc_MachBike(u8 taskId) || MetatileBehavior_IsIsolatedVerticalRail(behavior) == TRUE || MetatileBehavior_IsIsolatedHorizontalRail(behavior) == TRUE) sub_80A10C4(taskId, gTasks[taskId].data[3], 2, gUnknown_8416451); - else if (sub_8055C9C() == TRUE && !sub_80BD540()) + else if (Overworld_IsBikingAllowed() == TRUE && !sub_80BD540()) { sItemUseOnFieldCB = ItemUseOnFieldCB_Bicycle; sub_80A103C(taskId); diff --git a/src/itemfinder.c b/src/itemfinder.c index 5d6950acc..51a670b0f 100644 --- a/src/itemfinder.c +++ b/src/itemfinder.c @@ -15,7 +15,7 @@ static void Task_NoResponse_CleanUp(u8 taskId); static void Task_ItemfinderResponseSoundsAndAnims(u8 taskId); static void Task_ItemfinderUnderfootSoundsAndAnims(u8 taskId); -static bool8 HiddenItemIsWithinRangeOfPlayer(struct MapEvents * events, u8 taskId); +static bool8 HiddenItemIsWithinRangeOfPlayer(const struct MapEvents * events, u8 taskId); static void SetUnderfootHiddenItem(u8 taskId, u32 hiddenItem); static void SetNormalHiddenItem(u8 taskId); static void FindHiddenItemsInConnectedMaps(u8 taskId); @@ -199,7 +199,7 @@ static void Task_ItemfinderUnderfootSoundsAndAnims(u8 taskId) tDingTimer++; } -static bool8 HiddenItemIsWithinRangeOfPlayer(struct MapEvents * events, u8 taskId) +static bool8 HiddenItemIsWithinRangeOfPlayer(const struct MapEvents * events, u8 taskId) { s16 x, y, i, dx, dy; PlayerGetDestCoords(&x, &y); @@ -284,7 +284,7 @@ static void SetNormalHiddenItem(u8 taskId) } } -static bool8 HiddenItemAtPos(struct MapEvents * events, s16 x, s16 y) +static bool8 HiddenItemAtPos(const struct MapEvents * events, s16 x, s16 y) { u8 bgEventCount = events->bgEventCount; struct BgEvent * bgEvents = events->bgEvents; diff --git a/src/load_save.c b/src/load_save.c index 7ab28ffc3..85e2d31ba 100644 --- a/src/load_save.c +++ b/src/load_save.c @@ -144,7 +144,7 @@ void sub_804C1AC(void) void SetContinueGameWarpStatusToDynamicWarp(void) { - sub_8055778(0); + SetContinueGameWarpToDynamicWarp(0); gSaveBlock2Ptr->specialSaveWarpFlags |= CONTINUE_GAME_WARP; } @@ -286,7 +286,7 @@ void ApplyNewEncryptionKeyToAllEncryptedData(u32 encryptionKey) for(i = 0; i < NUM_TOWER_CHALLENGE_TYPES; i++) ApplyNewEncryptionKeyToWord(&gSaveBlock1Ptr->trainerTower[i].bestTime, encryptionKey); - sub_8054F38(encryptionKey); + ApplyNewEncryptionKeyToGameStats(encryptionKey); ApplyNewEncryptionKeyToBagItems_(encryptionKey); ApplyNewEncryptionKeyToBerryPowder(encryptionKey); ApplyNewEncryptionKeyToWord(&gSaveBlock1Ptr->money, encryptionKey); diff --git a/src/metatile_behavior.c b/src/metatile_behavior.c index c937a3b48..cbbc37ba1 100644 --- a/src/metatile_behavior.c +++ b/src/metatile_behavior.c @@ -199,7 +199,7 @@ bool8 MetatileBehavior_IsNonAnimDoor(u8 metatileBehavior) return FALSE; } -bool8 MetatileBehavior_ReturnFalse_2(u8 metatileBehavior) { return FALSE; } +bool8 MetatileBehavior_IsDeepSouthWarp(u8 metatileBehavior) { return FALSE; } bool8 MetatileBehavior_IsSurfable(u8 metatileBehavior) { diff --git a/src/overworld.c b/src/overworld.c new file mode 100644 index 000000000..d4299d044 --- /dev/null +++ b/src/overworld.c @@ -0,0 +1,1291 @@ +#include "global.h" +#include "gflib.h" +#include "event_data.h" +#include "event_scripts.h" +#include "field_camera.h" +#include "field_control_avatar.h" +#include "field_message_box.h" +#include "field_player_avatar.h" +#include "field_screen_effect.h" +#include "field_specials.h" +#include "field_weather.h" +#include "fieldmap.h" +#include "heal_location.h" +#include "load_save.h" +#include "m4a.h" +#include "map_name_popup.h" +#include "metatile_behavior.h" +#include "money.h" +#include "new_menu_helpers.h" +#include "overworld.h" +#include "quest_log.h" +#include "random.h" +#include "renewable_hidden_items.h" +#include "roamer.h" +#include "safari_zone.h" +#include "save_location.h" +#include "script.h" +#include "script_pokemon_util.h" +#include "tileset_anims.h" +#include "vs_seeker.h" +#include "wild_encounter.h" +#include "constants/maps.h" +#include "constants/flags.h" +#include "constants/species.h" +#include "constants/region_map_sections.h" +#include "constants/songs.h" + +struct InitialPlayerAvatarState +{ + u8 transitionFlags; + u8 direction; + bool8 unk2; +}; + +EWRAM_DATA struct WarpData gLastUsedWarp = {}; +EWRAM_DATA struct WarpData sWarpDestination = {}; +EWRAM_DATA struct WarpData gFixedDiveWarp = {}; +EWRAM_DATA struct WarpData gFixedHoleWarp = {}; + +// File boundary perhaps? +EWRAM_DATA struct InitialPlayerAvatarState gInitialPlayerAvatarState = {}; + +// File boundary perhaps? +EWRAM_DATA bool8 gDisableMapMusicChangeOnMapLoad = FALSE; +EWRAM_DATA u16 sAmbientCrySpecies = SPECIES_NONE; +EWRAM_DATA bool8 sIsAmbientCryWaterMon = FALSE; + +// File boundary perhaps? +ALIGNED(4) EWRAM_DATA bool8 gUnknown_2031DE0 = FALSE; +EWRAM_DATA const struct CreditsOverworldCmd *gUnknown_2031DE4 = NULL; +EWRAM_DATA s16 gUnknown_2031DE8 = 0; +EWRAM_DATA s16 gUnknown_2031DEA = 0; + +// File boundary perhaps? +EWRAM_DATA struct LinkPlayerObjectEvent gLinkPlayerObjectEvents[4] = {}; + +u16 *gBGTilemapBuffers1; +u16 *gBGTilemapBuffers2; +u16 *gBGTilemapBuffers3; +void (*gFieldCallback)(void); +bool8 (*gFieldCallback2)(void); +u16 gHeldKeyCodeToSend; +u8 gLocalLinkPlayerId; +u8 gFieldLinkPlayerCount; + +u8 CountBadgesForOverworldWhiteOutLossCalculation(void); +void Overworld_ResetStateAfterWhitingOut(void); +void Overworld_SetWhiteoutRespawnPoint(void); +u8 GetAdjustedInitialTransitionFlags(struct InitialPlayerAvatarState *playerStruct, u16 metatileBehavior, u8 mapType); +u8 GetAdjustedInitialDirection(struct InitialPlayerAvatarState *playerStruct, u8 transitionFlags, u16 metatileBehavior, u8 mapType); +u16 GetCenterScreenMetatileBehavior(void); +bool8 sub_8055B38(u16 metatileBehavior); +void SetDefaultFlashLevel(void); +void Overworld_TryMapConnectionMusicTransition(void); +void ChooseAmbientCrySpecies(void); + +void MoveSaveBlocks_ResetHeap_(void); +void sub_8056E80(void); +void CB1_UpdateLinkState(void); + +extern const struct MapLayout * gMapLayouts[]; +extern const struct MapHeader *const *gMapGroups[]; + +// Routines related to game state on warping in + +static const u8 sWhiteOutMoneyLossMultipliers[] = { + 2, + 4, + 6, + 9, + 12, + 16, + 20, + 25, + 30 +}; + +const u16 sWhiteOutMoneyLossBadgeFlagIDs[] = { + FLAG_BADGE01_GET, + FLAG_BADGE02_GET, + FLAG_BADGE03_GET, + FLAG_BADGE04_GET, + FLAG_BADGE05_GET, + FLAG_BADGE06_GET, + FLAG_BADGE07_GET, + FLAG_BADGE08_GET +}; + +void sub_8054BC8(void) +{ + ScriptContext2_RunNewScript(EventScript_ResetEliteFourEnd); + RemoveMoney(&gSaveBlock1Ptr->money, ComputeWhiteOutMoneyLoss()); + HealPlayerParty(); + Overworld_ResetStateAfterWhitingOut(); + Overworld_SetWhiteoutRespawnPoint(); + WarpIntoMap(); +} + +u32 ComputeWhiteOutMoneyLoss(void) +{ + u8 nbadges = CountBadgesForOverworldWhiteOutLossCalculation(); + u8 toplevel = GetPlayerPartyHighestLevel(); + u32 losings = toplevel * 4 * sWhiteOutMoneyLossMultipliers[nbadges]; + u32 money = GetMoney(&gSaveBlock1Ptr->money); + if (losings > money) + losings = money; + return losings; +} + +void OverworldWhiteOutGetMoneyLoss(void) +{ + u32 losings = ComputeWhiteOutMoneyLoss(); + ConvertIntToDecimalStringN(gStringVar1, losings, STR_CONV_MODE_LEFT_ALIGN, CountDigits(losings)); +} + +u8 CountBadgesForOverworldWhiteOutLossCalculation(void) +{ + int i; + u8 nbadges = 0; + for (i = 0; i < NELEMS(sWhiteOutMoneyLossBadgeFlagIDs); i++) + { + if (FlagGet(sWhiteOutMoneyLossBadgeFlagIDs[i])) + nbadges++; + } + return nbadges; +} + +void Overworld_ResetStateAfterFly(void) +{ + ResetInitialPlayerAvatarState(); + FlagClear(FLAG_SYS_ON_CYCLING_ROAD); + VarSet(VAR_MAP_SCENE_ROUTE16, 0); + FlagClear(FLAG_SYS_CRUISE_MODE); + FlagClear(FLAG_SYS_SAFARI_MODE); + VarSet(VAR_MAP_SCENE_FUCHSIA_CITY_SAFARI_ZONE_ENTRANCE, 0); + FlagClear(FLAG_SYS_USE_STRENGTH); + FlagClear(FLAG_SYS_FLASH_ACTIVE); + FlagClear(FLAG_0x808); + VarSet(VAR_0x404D, 0); +} + +void Overworld_ResetStateAfterTeleport(void) +{ + ResetInitialPlayerAvatarState(); + FlagClear(FLAG_SYS_ON_CYCLING_ROAD); + VarSet(VAR_MAP_SCENE_ROUTE16, 0); + FlagClear(FLAG_SYS_CRUISE_MODE); + FlagClear(FLAG_SYS_SAFARI_MODE); + VarSet(VAR_MAP_SCENE_FUCHSIA_CITY_SAFARI_ZONE_ENTRANCE, 0); + FlagClear(FLAG_SYS_USE_STRENGTH); + FlagClear(FLAG_SYS_FLASH_ACTIVE); + FlagClear(FLAG_0x808); + VarSet(VAR_0x404D, 0); +} + +void Overworld_ResetStateAfterDigEscRope(void) +{ + ResetInitialPlayerAvatarState(); + FlagClear(FLAG_SYS_ON_CYCLING_ROAD); + VarSet(VAR_MAP_SCENE_ROUTE16, 0); + FlagClear(FLAG_SYS_CRUISE_MODE); + FlagClear(FLAG_SYS_SAFARI_MODE); + VarSet(VAR_MAP_SCENE_FUCHSIA_CITY_SAFARI_ZONE_ENTRANCE, 0); + FlagClear(FLAG_SYS_USE_STRENGTH); + FlagClear(FLAG_SYS_FLASH_ACTIVE); + FlagClear(FLAG_0x808); + VarSet(VAR_0x404D, 0); +} + +void Overworld_ResetStateAfterWhitingOut(void) +{ + ResetInitialPlayerAvatarState(); + FlagClear(FLAG_SYS_ON_CYCLING_ROAD); + VarSet(VAR_MAP_SCENE_ROUTE16, 0); + FlagClear(FLAG_SYS_CRUISE_MODE); + FlagClear(FLAG_SYS_SAFARI_MODE); + VarSet(VAR_MAP_SCENE_FUCHSIA_CITY_SAFARI_ZONE_ENTRANCE, 0); + FlagClear(FLAG_SYS_USE_STRENGTH); + FlagClear(FLAG_SYS_FLASH_ACTIVE); + FlagClear(FLAG_0x808); + VarSet(VAR_0x404D, 0); +} + +void sub_8054E40(void) +{ + FlagClear(FLAG_SYS_SAFARI_MODE); + VarSet(VAR_MAP_SCENE_FUCHSIA_CITY_SAFARI_ZONE_ENTRANCE, 0); + ChooseAmbientCrySpecies(); + UpdateLocationHistoryForRoamer(); + RoamerMoveToOtherLocationSet(); +} + +// Routines related to game stats + +void ResetGameStats(void) +{ + int i; + + for (i = 0; i < NUM_GAME_STATS; i++) + { + gSaveBlock1Ptr->gameStats[i] = 0; + } +} + +void IncrementGameStat(u8 statId) +{ + u32 statVal; + if (statId >= NUM_USED_GAME_STATS) + return; + statVal = GetGameStat(statId); + if (statVal < 0xFFFFFF) + statVal++; + else + statVal = 0xFFFFFF; + SetGameStat(statId, statVal); +} + +u32 GetGameStat(u8 statId) +{ + if (statId >= NUM_USED_GAME_STATS) + return 0; + else + return gSaveBlock1Ptr->gameStats[statId] ^ gSaveBlock2Ptr->encryptionKey; +} + +void SetGameStat(u8 statId, u32 statVal) +{ + if (statId >= NUM_USED_GAME_STATS) + return; + gSaveBlock1Ptr->gameStats[statId] = statVal ^ gSaveBlock2Ptr->encryptionKey; +} + +void ApplyNewEncryptionKeyToGameStats(u32 newKey) +{ + u8 i; + for (i = 0; i < NUM_GAME_STATS; i++) + { + ApplyNewEncryptionKeyToWord(&gSaveBlock1Ptr->gameStats[i], newKey); + } +} + +// Routines related to object events + +void sub_8054F68(void) +{ + u8 i, j; + u8 mapGroup; + u8 mapNum; + u8 localId; + const struct MapHeader * linkedMap; + + for (i = 0, j = 0; i < gMapHeader.events->objectEventCount; i++) + { + if (gMapHeader.events->objectEvents[i].unk2 == 0xFF) + { + localId = gMapHeader.events->objectEvents[i].elevation; + mapNum = gMapHeader.events->objectEvents[i].trainerType; + mapGroup = gMapHeader.events->objectEvents[i].trainerRange_berryTreeId; + linkedMap = Overworld_GetMapHeaderByGroupAndId(mapGroup, mapNum); + gSaveBlock1Ptr->objectEventTemplates[j] = linkedMap->events->objectEvents[localId - 1]; + gSaveBlock1Ptr->objectEventTemplates[j].localId = gMapHeader.events->objectEvents[i].localId; + gSaveBlock1Ptr->objectEventTemplates[j].x = gMapHeader.events->objectEvents[i].x; + gSaveBlock1Ptr->objectEventTemplates[j].y = gMapHeader.events->objectEvents[i].y; + gSaveBlock1Ptr->objectEventTemplates[j].elevation = localId; + gSaveBlock1Ptr->objectEventTemplates[j].trainerType = mapNum; + gSaveBlock1Ptr->objectEventTemplates[j].trainerRange_berryTreeId = mapGroup; + gSaveBlock1Ptr->objectEventTemplates[j].unk2 = 0xFF; + j++; + } + else + { + gSaveBlock1Ptr->objectEventTemplates[j] = gMapHeader.events->objectEvents[i]; + j++; + } + } +} + +void sub_80550A8(void) +{ + int i; + const struct ObjectEventTemplate * src = gMapHeader.events->objectEvents; + struct ObjectEventTemplate * savObjTemplates = gSaveBlock1Ptr->objectEventTemplates; + + for (i = 0; i < OBJECT_EVENT_TEMPLATES_COUNT; i++) + { + savObjTemplates[i].script = src[i].script; + } +} + +void Overworld_SetMapObjTemplateCoords(u8 localId, s16 x, s16 y) +{ + int i; + struct ObjectEventTemplate * savObjTemplates = gSaveBlock1Ptr->objectEventTemplates; + for (i = 0; i < OBJECT_EVENT_TEMPLATES_COUNT; i++) + { + if (savObjTemplates[i].localId == localId) + { + savObjTemplates[i].x = x; + savObjTemplates[i].y = y; + break; + } + } +} + +void Overworld_SetObjEventTemplateMovementType(u8 localId, u8 movementType) +{ + s32 i; + + struct ObjectEventTemplate *savObjTemplates = gSaveBlock1Ptr->objectEventTemplates; + for (i = 0; i < OBJECT_EVENT_TEMPLATES_COUNT; i++) + { + struct ObjectEventTemplate *objectEventTemplate = &savObjTemplates[i]; + if (objectEventTemplate->localId == localId) + { + objectEventTemplate->movementType = movementType; + return; + } + } +} + +// Routines related to the map layout + +void mapdata_load_assets_to_gpu_and_full_redraw(void) +{ + move_tilemap_camera_to_upper_left_corner(); + copy_map_tileset1_tileset2_to_vram(gMapHeader.mapLayout); + apply_map_tileset1_tileset2_palette(gMapHeader.mapLayout); + DrawWholeMapView(); + InitTilesetAnimations(); +} + +const struct MapLayout *GetMapLayout(void) +{ + u16 mapLayoutId = gSaveBlock1Ptr->mapLayoutId; + if (mapLayoutId) + return gMapLayouts[mapLayoutId - 1]; + return NULL; +} + +// Routines related to warps + +const struct WarpData sDummyWarpData = { + .mapGroup = MAP_GROUP(UNDEFINED), + .mapNum = MAP_NUM(UNDEFINED), + .warpId = 0xFF, + .x = -1, + .y = -1 +}; + +void ApplyCurrentWarp(void) +{ + gLastUsedWarp = gSaveBlock1Ptr->location; + gSaveBlock1Ptr->location = sWarpDestination; + gFixedDiveWarp = sDummyWarpData; + gFixedHoleWarp = sDummyWarpData; +} + +void SetWarpData(struct WarpData *warp, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) +{ + warp->mapGroup = mapGroup; + warp->mapNum = mapNum; + warp->warpId = warpId; + warp->x = x; + warp->y = y; +} + +bool32 IsDummyWarp(struct WarpData *warp) +{ + if (warp->mapGroup != -1) + return FALSE; + else if (warp->mapNum != -1) + return FALSE; + else if (warp->warpId != -1) + return FALSE; + else if (warp->x != -1) + return FALSE; + else if (warp->y != -1) + return FALSE; + else + return TRUE; +} + +struct MapHeader const *const Overworld_GetMapHeaderByGroupAndId(u16 mapGroup, u16 mapNum) +{ + return gMapGroups[mapGroup][mapNum]; +} + +struct MapHeader const *const GetDestinationWarpMapHeader(void) +{ + return Overworld_GetMapHeaderByGroupAndId(sWarpDestination.mapGroup, sWarpDestination.mapNum); +} + +void LoadCurrentMapData(void) +{ + gMapHeader = *Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum); + gSaveBlock1Ptr->mapLayoutId = gMapHeader.mapLayoutId; + gMapHeader.mapLayout = GetMapLayout(); +} + +void LoadSaveblockMapHeader(void) +{ + gMapHeader = *Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum); + gMapHeader.mapLayout = GetMapLayout(); +} + +void SetPlayerCoordsFromWarp(void) +{ + if (gSaveBlock1Ptr->location.warpId >= 0 && gSaveBlock1Ptr->location.warpId < gMapHeader.events->warpCount) + { + gSaveBlock1Ptr->pos.x = gMapHeader.events->warps[gSaveBlock1Ptr->location.warpId].x; + gSaveBlock1Ptr->pos.y = gMapHeader.events->warps[gSaveBlock1Ptr->location.warpId].y; + } + else if (gSaveBlock1Ptr->location.x >= 0 && gSaveBlock1Ptr->location.y >= 0) + { + gSaveBlock1Ptr->pos.x = gSaveBlock1Ptr->location.x; + gSaveBlock1Ptr->pos.y = gSaveBlock1Ptr->location.y; + } + else + { + gSaveBlock1Ptr->pos.x = gMapHeader.mapLayout->width / 2; + gSaveBlock1Ptr->pos.y = gMapHeader.mapLayout->height / 2; + } +} + +void WarpIntoMap(void) +{ + ApplyCurrentWarp(); + LoadCurrentMapData(); + SetPlayerCoordsFromWarp(); +} + +void SetWarpDestination(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) +{ + SetWarpData(&sWarpDestination, mapGroup, mapNum, warpId, x, y); +} + +void SetWarpDestinationToMapWarp(s8 mapGroup, s8 mapNum, s8 warpId) +{ + SetWarpDestination(mapGroup, mapNum, warpId, -1, -1); +} + +void SetDynamicWarp(s32 unused, s8 mapGroup, s8 mapNum, s8 warpId) +{ + SetWarpData(&gSaveBlock1Ptr->dynamicWarp, mapGroup, mapNum, warpId, gSaveBlock1Ptr->pos.x, gSaveBlock1Ptr->pos.y); +} + +void SetDynamicWarpWithCoords(s32 unused, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) +{ + SetWarpData(&gSaveBlock1Ptr->dynamicWarp, mapGroup, mapNum, warpId, x, y); +} + +void SetWarpDestinationToDynamicWarp(u8 unusedWarpId) +{ + sWarpDestination = gSaveBlock1Ptr->dynamicWarp; +} + +void SetWarpDestinationToHealLocation(u8 healLocationId) +{ + const struct HealLocation *warp = GetHealLocation(healLocationId); + if (warp) + SetWarpDestination(warp->group, warp->map, -1, warp->x, warp->y); +} + +void SetWarpDestinationToLastHealLocation(void) +{ + sWarpDestination = gSaveBlock1Ptr->lastHealLocation; +} + +void Overworld_SetWhiteoutRespawnPoint(void) +{ + SetWhiteoutRespawnWarpAndHealerNpc(&sWarpDestination); +} + +void SetLastHealLocationWarp(u8 healLocationId) +{ + const struct HealLocation *healLocation = GetHealLocation(healLocationId); + if (healLocation) + SetWarpData(&gSaveBlock1Ptr->lastHealLocation, healLocation->group, healLocation->map, -1, healLocation->x, healLocation->y); +} + +void UpdateEscapeWarp(s16 x, s16 y) +{ + u8 currMapType = GetCurrentMapType(); + u8 destMapType = GetMapTypeByGroupAndId(sWarpDestination.mapGroup, sWarpDestination.mapNum); + u8 delta; + if (IsMapTypeOutdoors(currMapType) && IsMapTypeOutdoors(destMapType) != TRUE && !(gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(VIRIDIAN_FOREST) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(VIRIDIAN_FOREST))) + { + delta = GetPlayerFacingDirection() != DIR_SOUTH; + SetEscapeWarp(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1, x - 7, y - 7 + delta); + } +} + +void SetEscapeWarp(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) +{ + SetWarpData(&gSaveBlock1Ptr->escapeWarp, mapGroup, mapNum, warpId, x, y); +} + +void SetWarpDestinationToEscapeWarp(void) +{ + sWarpDestination = gSaveBlock1Ptr->escapeWarp; +} + +void SetFixedDiveWarp(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) +{ + SetWarpData(&gFixedDiveWarp, mapGroup, mapNum, warpId, x, y); +} + +void SetWarpDestinationToDiveWarp(void) +{ + sWarpDestination = gFixedDiveWarp; +} + +void SetFixedHoleWarp(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) +{ + SetWarpData(&gFixedHoleWarp, mapGroup, mapNum, warpId, x, y); +} + +void SetWarpDestinationToFixedHoleWarp(s16 x, s16 y) +{ + if (IsDummyWarp(&gFixedHoleWarp) == TRUE) + sWarpDestination = gLastUsedWarp; + else + SetWarpDestination(gFixedHoleWarp.mapGroup, gFixedHoleWarp.mapNum, -1, x, y); +} + +void SetWarpDestinationToContinueGameWarp(void) +{ + sWarpDestination = gSaveBlock1Ptr->continueGameWarp; +} + +void SetContinueGameWarp(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) +{ + SetWarpData(&gSaveBlock1Ptr->continueGameWarp, mapGroup, mapNum, warpId, x, y); +} + +void SetContinueGameWarpToHealLocation(u8 healLocationId) +{ + const struct HealLocation *warp = GetHealLocation(healLocationId); + if (warp) + SetWarpData(&gSaveBlock1Ptr->continueGameWarp, warp->group, warp->map, -1, warp->x, warp->y); +} + +void SetContinueGameWarpToDynamicWarp(int unused) +{ + gSaveBlock1Ptr->continueGameWarp = gSaveBlock1Ptr->dynamicWarp; +} + +const struct MapConnection * GetMapConnection(u8 dir) +{ + s32 i; + s32 count = gMapHeader.connections->count; + const struct MapConnection *connection = gMapHeader.connections->connections; + + if (connection == NULL) + return NULL; + + for(i = 0; i < count; i++, connection++) + if (connection->direction == dir) + return connection; + + return NULL; +} + +bool8 SetDiveWarp(u8 dir, u16 x, u16 y) +{ + const struct MapConnection *connection = GetMapConnection(dir); + + if (connection != NULL) + { + SetWarpDestination(connection->mapGroup, connection->mapNum, -1, x, y); + } + else + { + RunOnDiveWarpMapScript(); + if (IsDummyWarp(&gFixedDiveWarp)) + return FALSE; + SetWarpDestinationToDiveWarp(); + } + return TRUE; +} + +bool8 SetDiveWarpEmerge(u16 x, u16 y) +{ + return SetDiveWarp(CONNECTION_EMERGE, x, y); +} + +bool8 SetDiveWarpDive(u16 x, u16 y) +{ + return SetDiveWarp(CONNECTION_DIVE, x, y); +} + +// Map loaders + +void LoadMapFromCameraTransition(u8 mapGroup, u8 mapNum) +{ + int paletteIndex; + + SetWarpDestination(mapGroup, mapNum, -1, -1, -1); + Overworld_TryMapConnectionMusicTransition(); + ApplyCurrentWarp(); + LoadCurrentMapData(); + sub_8054F68(); + TrySetMapSaveWarpStatus(); + ClearTempFieldEventData(); + ResetCyclingRoadChallengeData(); + RestartWildEncounterImmunitySteps(); + TryUpdateRandomTrainerRematches(mapGroup, mapNum); + SetSav1WeatherFromCurrMapHeader(); + ChooseAmbientCrySpecies(); + SetDefaultFlashLevel(); + Overworld_ClearSavedMusic(); + RunOnTransitionMapScript(); + TryRegenerateRenewableHiddenItems(); + InitMap(); + copy_map_tileset2_to_vram_2(gMapHeader.mapLayout); + apply_map_tileset2_palette(gMapHeader.mapLayout); + for (paletteIndex = 7; paletteIndex < 13; paletteIndex++) + ApplyWeatherGammaShiftToPal(paletteIndex); + InitSecondaryTilesetAnimation(); + UpdateLocationHistoryForRoamer(); + RoamerMove(); + sub_8110920(); + DoCurrentWeather(); + ResetFieldTasksArgs(); + mapheader_run_script_with_tag_x5(); + if (GetLastUsedWarpMapSectionId() != gMapHeader.regionMapSectionId) + CreateMapNamePopupIfNotAlreadyRunning(TRUE); +} + +void mli0_load_map(bool32 a1) +{ + bool8 isOutdoors; + + LoadCurrentMapData(); + sub_8054F68(); + isOutdoors = IsMapTypeOutdoors(gMapHeader.mapType); + + TrySetMapSaveWarpStatus(); + ClearTempFieldEventData(); + ResetCyclingRoadChallengeData(); + RestartWildEncounterImmunitySteps(); + TryUpdateRandomTrainerRematches(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum); + SetSav1WeatherFromCurrMapHeader(); + ChooseAmbientCrySpecies(); + if (isOutdoors) + FlagClear(FLAG_SYS_FLASH_ACTIVE); + SetDefaultFlashLevel(); + Overworld_ClearSavedMusic(); + RunOnTransitionMapScript(); + TryRegenerateRenewableHiddenItems(); + UpdateLocationHistoryForRoamer(); + RoamerMoveToOtherLocationSet(); + sub_8110920(); + InitMap(); +} + +void sub_80559A8(void) +{ + bool8 isOutdoors; + + LoadCurrentMapData(); + sub_8054F68(); + isOutdoors = IsMapTypeOutdoors(gMapHeader.mapType); + TrySetMapSaveWarpStatus(); + SetSav1WeatherFromCurrMapHeader(); + ChooseAmbientCrySpecies(); + SetDefaultFlashLevel(); + sub_8110920(); + sub_8111708(); + LoadSaveblockMapHeader(); + InitMap(); +} + +// Routines related to the initial player avatar state + +void ResetInitialPlayerAvatarState(void) +{ + gInitialPlayerAvatarState.direction = DIR_SOUTH; + gInitialPlayerAvatarState.transitionFlags = PLAYER_AVATAR_FLAG_ON_FOOT; + gInitialPlayerAvatarState.unk2 = FALSE; +} + +void sub_80559F8(u8 dirn) +{ + gInitialPlayerAvatarState.direction = dirn; + gInitialPlayerAvatarState.transitionFlags = PLAYER_AVATAR_FLAG_ON_FOOT; + gInitialPlayerAvatarState.unk2 = TRUE; +} + +void StoreInitialPlayerAvatarState(void) +{ + gInitialPlayerAvatarState.direction = GetPlayerFacingDirection(); + + if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_MACH_BIKE)) + gInitialPlayerAvatarState.transitionFlags = PLAYER_AVATAR_FLAG_MACH_BIKE; + else if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_ACRO_BIKE)) + gInitialPlayerAvatarState.transitionFlags = PLAYER_AVATAR_FLAG_ACRO_BIKE; + else if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING)) + gInitialPlayerAvatarState.transitionFlags = PLAYER_AVATAR_FLAG_SURFING; + else if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_UNDERWATER)) + gInitialPlayerAvatarState.transitionFlags = PLAYER_AVATAR_FLAG_UNDERWATER; + else + gInitialPlayerAvatarState.transitionFlags = PLAYER_AVATAR_FLAG_ON_FOOT; + gInitialPlayerAvatarState.unk2 = FALSE; +} + +struct InitialPlayerAvatarState *GetInitialPlayerAvatarState(void) +{ + struct InitialPlayerAvatarState playerStruct; + u8 mapType = GetCurrentMapType(); + u16 metatileBehavior = GetCenterScreenMetatileBehavior(); + u8 transitionFlags = GetAdjustedInitialTransitionFlags(&gInitialPlayerAvatarState, metatileBehavior, mapType); + playerStruct.transitionFlags = transitionFlags; + playerStruct.direction = GetAdjustedInitialDirection(&gInitialPlayerAvatarState, transitionFlags, metatileBehavior, mapType); + playerStruct.unk2 = FALSE; + gInitialPlayerAvatarState = playerStruct; + return &gInitialPlayerAvatarState; +} + +u8 GetAdjustedInitialTransitionFlags(struct InitialPlayerAvatarState *playerStruct, u16 metatileBehavior, u8 mapType) +{ + if (mapType != MAP_TYPE_INDOOR && FlagGet(FLAG_SYS_CRUISE_MODE)) + return PLAYER_AVATAR_FLAG_ON_FOOT; + else if (mapType == MAP_TYPE_UNDERWATER) + return PLAYER_AVATAR_FLAG_UNDERWATER; + else if (sub_8055B38(metatileBehavior) == TRUE) + return PLAYER_AVATAR_FLAG_ON_FOOT; + else if (MetatileBehavior_IsSurfable(metatileBehavior) == TRUE) + return PLAYER_AVATAR_FLAG_SURFING; + else if (Overworld_IsBikingAllowed() != TRUE) + return PLAYER_AVATAR_FLAG_ON_FOOT; + else if (playerStruct->transitionFlags == PLAYER_AVATAR_FLAG_MACH_BIKE) + return PLAYER_AVATAR_FLAG_MACH_BIKE; + else if (playerStruct->transitionFlags != PLAYER_AVATAR_FLAG_ACRO_BIKE) + return PLAYER_AVATAR_FLAG_ON_FOOT; + else + return PLAYER_AVATAR_FLAG_ACRO_BIKE; +} + +bool8 sub_8055B38(u16 metatileBehavior) +{ + if (MetatileBehavior_IsSurfable(metatileBehavior) != TRUE) + return FALSE; + if ((gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(SEAFOAM_ISLANDS_B3F) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(SEAFOAM_ISLANDS_B3F)) || (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(SEAFOAM_ISLANDS_B4F) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(SEAFOAM_ISLANDS_B4F))) + return TRUE; + 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); +} + +// Routines related to flash level and map perms + +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; +} + +// Routines related to map music + +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); +} + +bool32 sub_8056124(u16 music) +{ + if (music == MUS_CYCLING || music == MUS_NAMINORI) + { + if (gMapHeader.regionMapSectionId == MAPSEC_KANTO_VICTORY_ROAD || gMapHeader.regionMapSectionId == MAPSEC_ROUTE_23 || gMapHeader.regionMapSectionId == MAPSEC_INDIGO_PLATEAU) + return FALSE; + } + return TRUE; +} + +u8 GetMapTypeByGroupAndId(s8 mapGroup, s8 mapNum) +{ + return Overworld_GetMapHeaderByGroupAndId(mapGroup, mapNum)->mapType; +} + +u8 GetMapTypeByWarpData(struct WarpData *warp) +{ + return GetMapTypeByGroupAndId(warp->mapGroup, warp->mapNum); +} + +u8 GetCurrentMapType(void) +{ + return GetMapTypeByWarpData(&gSaveBlock1Ptr->location); +} + +u8 GetLastUsedWarpMapType(void) +{ + return GetMapTypeByWarpData(&gLastUsedWarp); +} + +u8 GetLastUsedWarpMapSectionId(void) +{ + return Overworld_GetMapHeaderByGroupAndId(gLastUsedWarp.mapGroup, gLastUsedWarp.mapNum)->regionMapSectionId; +} + +bool8 IsMapTypeOutdoors(u8 mapType) +{ + if (mapType == MAP_TYPE_ROUTE + || mapType == MAP_TYPE_TOWN + || mapType == MAP_TYPE_UNDERWATER + || mapType == MAP_TYPE_CITY + || mapType == MAP_TYPE_OCEAN_ROUTE) + return TRUE; + else + return FALSE; +} + +bool8 Overworld_MapTypeAllowsTeleportAndFly(u8 mapType) +{ + if (mapType == MAP_TYPE_ROUTE + || mapType == MAP_TYPE_TOWN + || mapType == MAP_TYPE_OCEAN_ROUTE + || mapType == MAP_TYPE_CITY) + return TRUE; + else + return FALSE; +} + +bool8 IsMapTypeIndoors(u8 mapType) +{ + if (mapType == MAP_TYPE_INDOOR + || mapType == MAP_TYPE_SECRET_BASE) + return TRUE; + else + return FALSE; +} + +u8 GetSavedWarpRegionMapSectionId(void) +{ + return Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->dynamicWarp.mapGroup, gSaveBlock1Ptr->dynamicWarp.mapNum)->regionMapSectionId; +} + +u8 GetCurrentRegionMapSectionId(void) +{ + return Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum)->regionMapSectionId; +} + +u8 GetCurrentMapBattleScene(void) +{ + return Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum)->battleType; +} + +const int sUnusedData[] = { + 1200, + 3600, + 1200, + 2400, + 50, + 80, + -44, + 44 +}; + +const struct UCoords32 gDirectionToVectors[] = { + { 0u, 0u}, + { 0u, 1u}, + { 0u, -1u}, + {-1u, 0u}, + { 1u, 0u}, + {-1u, 1u}, + { 1u, 1u}, + {-1u, -1u}, + { 1u, -1u}, +}; + +const struct BgTemplate sOverworldBgTemplates[] = { + { + .bg = 0, + .charBaseIndex = 2, + .mapBaseIndex = 31, + .screenSize = 0, + .paletteMode = 0, + .priority = 0, + .baseTile = 0x000 + }, { + .bg = 1, + .charBaseIndex = 0, + .mapBaseIndex = 29, + .screenSize = 0, + .paletteMode = 0, + .priority = 1, + .baseTile = 0x000 + }, { + .bg = 2, + .charBaseIndex = 0, + .mapBaseIndex = 28, + .screenSize = 0, + .paletteMode = 0, + .priority = 2, + .baseTile = 0x000 + }, { + .bg = 3, + .charBaseIndex = 0, + .mapBaseIndex = 30, + .screenSize = 0, + .paletteMode = 0, + .priority = 3, + .baseTile = 0x000 + } +}; + +void InitOverworldBgs(void) +{ + MoveSaveBlocks_ResetHeap_(); + sub_8056E80(); + ResetBgsAndClearDma3BusyFlags(FALSE); + InitBgsFromTemplates(0, sOverworldBgTemplates, NELEMS(sOverworldBgTemplates)); + SetBgAttribute(1, BG_ATTR_MOSAIC, TRUE); + SetBgAttribute(2, BG_ATTR_MOSAIC, TRUE); + SetBgAttribute(3, BG_ATTR_MOSAIC, TRUE); + gBGTilemapBuffers2 = AllocZeroed(BG_SCREEN_SIZE); + gBGTilemapBuffers1 = AllocZeroed(BG_SCREEN_SIZE); + gBGTilemapBuffers3 = AllocZeroed(BG_SCREEN_SIZE); + SetBgTilemapBuffer(1, gBGTilemapBuffers2); + SetBgTilemapBuffer(2, gBGTilemapBuffers1); + SetBgTilemapBuffer(3, gBGTilemapBuffers3); + InitStandardTextBoxWindows(); + ResetBg0(); + sub_8069348(); +} + +void InitOverworldBgs_NoResetHeap(void) +{ + ResetBgsAndClearDma3BusyFlags(FALSE); + InitBgsFromTemplates(0, sOverworldBgTemplates, NELEMS(sOverworldBgTemplates)); + SetBgAttribute(1, BG_ATTR_MOSAIC, TRUE); + SetBgAttribute(2, BG_ATTR_MOSAIC, TRUE); + SetBgAttribute(3, BG_ATTR_MOSAIC, TRUE); + gBGTilemapBuffers2 = AllocZeroed(BG_SCREEN_SIZE); + gBGTilemapBuffers1 = AllocZeroed(BG_SCREEN_SIZE); + gBGTilemapBuffers3 = AllocZeroed(BG_SCREEN_SIZE); + SetBgTilemapBuffer(1, gBGTilemapBuffers2); + SetBgTilemapBuffer(2, gBGTilemapBuffers1); + SetBgTilemapBuffer(3, gBGTilemapBuffers3); + InitStandardTextBoxWindows(); + ResetBg0(); + sub_8069348(); +} + +void CleanupOverworldWindowsAndTilemaps(void) +{ + FreeAllOverworldWindowBuffers(); + Free(gBGTilemapBuffers3); + Free(gBGTilemapBuffers1); + Free(gBGTilemapBuffers2); +} + +void ResetSafariZoneFlag_(void) +{ + ResetSafariZoneFlag(); +} + +bool32 IsUpdateLinkStateCBActive(void) +{ + if (gMain.callback1 == CB1_UpdateLinkState) + return TRUE; + else + return FALSE; +} + +void sub_805644C(u16 newKeys, u16 heldKeys) +{ + struct FieldInput fieldInput; + + sub_8112B3C(); + sub_805BEB8(); + FieldClearPlayerInput(&fieldInput); + FieldGetPlayerInput(&fieldInput, newKeys, heldKeys); + FieldInput_HandleCancelSignpost(&fieldInput); + if (!ScriptContext2_IsEnabled()) + { + if (ProcessPlayerFieldInput(&fieldInput) == TRUE) + { + if (gUnknown_3005E88 == 2) + sub_81127F8(&gInputToStoreInQuestLogMaybe); + ScriptContext2_Enable(); + DismissMapNamePopup(); + } + else + { + player_step(fieldInput.dpadDirection, newKeys, heldKeys); + } + } + RunQuestLogCB(); +} diff --git a/src/post_battle_event_funcs.c b/src/post_battle_event_funcs.c index 86406fa2a..41427c4a5 100644 --- a/src/post_battle_event_funcs.c +++ b/src/post_battle_event_funcs.c @@ -29,7 +29,7 @@ bool8 EnterHallOfFame(void) SetGameStat(GAME_STAT_FIRST_HOF_PLAY_TIME, (gSaveBlock2Ptr->playTimeHours << 16) | (gSaveBlock2Ptr->playTimeMinutes << 8) | gSaveBlock2Ptr->playTimeSeconds); } sub_804C1AC(); - sub_8055738(SPAWN_PALLET_TOWN); + SetContinueGameWarpToHealLocation(SPAWN_PALLET_TOWN); gaveAtLeastOneRibbon = FALSE; for (i = 0, r7 = &ribbonState; i < PARTY_SIZE; i++) { diff --git a/src/quest_log.c b/src/quest_log.c index 21a05f407..f705335da 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -96,7 +96,7 @@ struct UnkStruct_203B044 u8 gUnknown_3005E88; u16 sNumEventsInLogEntry; -struct UnkStruct_3005E90 gUnknown_3005E90; +struct FieldInput gUnknown_3005E90; struct QuestLogEntry * sCurQuestLogEntry; static struct UnkStruct_300201C * sFlagOrVarRecords; @@ -1536,7 +1536,7 @@ void sub_811278C(u8 movementActionId, u8 duration) } } -void sub_81127F8(struct UnkStruct_3005E90 * a0) +void sub_81127F8(struct FieldInput * a0) { if (sQuestLogCursor < sNumEventsInLogEntry) { @@ -1616,7 +1616,7 @@ static void SetUpQuestLogEntry(u8 kind, struct QuestLogEntry *entry, u16 size) } sQuestLogCursor = 0; gUnknown_203B01C = 0; - gUnknown_3005E90 = (struct UnkStruct_3005E90){}; + gUnknown_3005E90 = (struct FieldInput){}; sNextStepDelay = sCurQuestLogEntry[sQuestLogCursor].unk_4; sMovementScripts[0][0] = sCurQuestLogEntry[sQuestLogCursor].unk_3; sMovementScripts[0][1] = 0xFF; diff --git a/src/region_map.c b/src/region_map.c index 3a902ec0e..f97d67ffc 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -3471,7 +3471,7 @@ static void GetPlayerPositionOnRegionMap(void) const struct MapHeader * mapHeader; struct WarpData * warp; - switch (get_map_light_level_by_bank_and_number(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum)) + switch (GetMapTypeByGroupAndId(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum)) { default: case 1: @@ -3495,12 +3495,12 @@ static void GetPlayerPositionOnRegionMap(void) y = gSaveBlock1Ptr->escapeWarp.y; break; case 9: - mapHeader = Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->warp2.mapGroup, gSaveBlock1Ptr->warp2.mapNum); + mapHeader = Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->dynamicWarp.mapGroup, gSaveBlock1Ptr->dynamicWarp.mapNum); gUnknown_20399E4->field_014 = mapHeader->regionMapSectionId; width = mapHeader->mapLayout->width; height = mapHeader->mapLayout->height; - x = gSaveBlock1Ptr->warp2.x; - y = gSaveBlock1Ptr->warp2.y; + x = gSaveBlock1Ptr->dynamicWarp.x; + y = gSaveBlock1Ptr->dynamicWarp.y; break; case 8: if ((gUnknown_20399E4->field_014 = gMapHeader.regionMapSectionId) != MAPSEC_SPECIAL_AREA) @@ -3510,7 +3510,7 @@ static void GetPlayerPositionOnRegionMap(void) } else { - warp = &gSaveBlock1Ptr->warp2; + warp = &gSaveBlock1Ptr->dynamicWarp; mapHeader = Overworld_GetMapHeaderByGroupAndId(warp->mapGroup, warp->mapNum); gUnknown_20399E4->field_014 = mapHeader->regionMapSectionId; } @@ -4318,7 +4318,7 @@ static void sub_80C4F08(u8 taskId) case 4: if ((sub_80C3AC8(0) == 2 || sub_80C3AC8(0) == 4) && GetRegionMapPermission(MAPPERM_3) == TRUE) { - switch (get_map_light_level_by_bank_and_number(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum)) + switch (GetMapTypeByGroupAndId(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum)) { case 4: case 8: @@ -4388,7 +4388,7 @@ static void sub_80C527C(u16 mapsec) u16 idx = mapsec - MAPSECS_KANTO; if (sMapsecToSpawn[idx][2]) { - sub_805546C(sMapsecToSpawn[idx][2]); + SetWarpDestinationToHealLocation(sMapsecToSpawn[idx][2]); SetUsedFlyQuestLogEvent(sMapsecToSpawn[idx]); } else diff --git a/src/scrcmd.c b/src/scrcmd.c index af977fbc7..bec0f4942 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -1168,7 +1168,7 @@ bool8 ScrCmd_setobjectmovementtype(struct ScriptContext * ctx) u16 localId = VarGet(ScriptReadHalfword(ctx)); u8 movementType = ScriptReadByte(ctx); - Overworld_SetMapObjTemplateMovementType(localId, movementType); + Overworld_SetObjEventTemplateMovementType(localId, movementType); return FALSE; } diff --git a/src/script.c b/src/script.c index ff74b40bc..250d98770 100644 --- a/src/script.c +++ b/src/script.c @@ -358,7 +358,7 @@ void ScriptContext2_RunNewScript(const u8 *ptr) u8 *mapheader_get_tagged_pointer(u8 tag) { - u8 *mapScripts = gMapHeader.mapScripts; + const u8 *mapScripts = gMapHeader.mapScripts; if (mapScripts == NULL) return NULL; @@ -370,7 +370,7 @@ u8 *mapheader_get_tagged_pointer(u8 tag) if (*mapScripts == tag) { mapScripts++; - return (u8 *)(mapScripts[0] + (mapScripts[1] << 8) + (mapScripts[2] << 16) + (mapScripts[3] << 24)); + return T2_READ_PTR(mapScripts); } mapScripts += 5; } @@ -411,7 +411,7 @@ void RunOnLoadMapScript(void) mapheader_run_script_by_tag(1); } -void mapheader_run_script_with_tag_x3(void) +void RunOnTransitionMapScript(void) { mapheader_run_script_by_tag(3); } @@ -426,7 +426,7 @@ void mapheader_run_script_with_tag_x7(void) mapheader_run_script_by_tag(7); } -void mapheader_run_script_with_tag_x6(void) +void RunOnDiveWarpMapScript(void) { mapheader_run_script_by_tag(6); } diff --git a/src/vs_seeker.c b/src/vs_seeker.c index 599e4f9b4..7054a13ed 100644 --- a/src/vs_seeker.c +++ b/src/vs_seeker.c @@ -681,7 +681,7 @@ bool8 sub_810C4EC(void) return FALSE; } -void sub_810C578(void) +void TryUpdateRandomTrainerRematches(u16 mapGroup, u16 mapNum) { FlagClear(FLAG_SYS_VS_SEEKER_CHARGING); sub_810C640(); diff --git a/sym_common.txt b/sym_common.txt index 2a03004de..90e0f5104 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -18,33 +18,8 @@ .include "random.o" .align 2 .include "load_save.o" - - .align 2 - @ .include "overworld.o" -gBGTilemapBuffers1: @ 3005014 - .space 0x4 - -gBGTilemapBuffers2: @ 3005018 - .space 0x4 - -gBGTilemapBuffers3: @ 300501C - .space 0x4 - -gFieldCallback: @ 3005020 - .space 0x4 - -gFieldCallback2: @ 3005024 - .space 0x4 - -gHeldKeyCodeToSend: @ 3005028 - .space 0x4 - -gLocalLinkPlayerId: @ 300502C - .space 0x4 - -gFieldLinkPlayerCount: @ 3005030 - .space 0x10 - + .align 2 + .include "overworld.o" .align 4 .include "fieldmap.o" .align 4 diff --git a/sym_ewram.txt b/sym_ewram.txt index c1eca3171..812c98214 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -32,48 +32,8 @@ .include "src/trade_scene.o" .align 2 .include "src/new_game.o" - .align 2 - @ .include "src/overworld.o" -gUnknown_2031DB4: @ 2031DB4 - .space 0x8 - -gUnknown_2031DBC: @ 2031DBC - .space 0x8 - -gUnknown_2031DC4: @ 2031DC4 - .space 0x8 - -gUnknown_2031DCC: @ 2031DCC - .space 0x8 - -gUnknown_2031DD4: @ 2031DD4 - .space 0x4 - -gDisableMapMusicChangeOnMapLoad: @ 2031DD8 - .space 0x2 - -gUnknown_2031DDA: @ 2031DDA - .space 0x2 - -gUnknown_2031DDC: @ 2031DDC - .space 0x4 - -gUnknown_2031DE0: @ 2031DE0 - .space 0x4 - -gUnknown_2031DE4: @ 2031DE4 - .space 0x4 - -gUnknown_2031DE8: @ 2031DE8 - .space 0x2 - -gUnknown_2031DEA: @ 2031DEA - .space 0x2 - -gLinkPlayerObjectEvents: @ 2031DEC - .space 0x10 - + .include "src/overworld.o" .align 2 .include "src/fieldmap.o" .align 2 |