diff options
author | PikalaxALT <PikalaxALT@users.noreply.github.com> | 2019-01-07 16:53:40 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-01-07 16:53:40 -0500 |
commit | 8f7400809626c0f72dfe751665126f94181fd7c1 (patch) | |
tree | 17f9256f07ff23163cf13af85fdc36847549cbbe | |
parent | 08ffdce1b642dfc00080f99578049b8c3ddfd7e9 (diff) | |
parent | 6da60e9b36303ac9d67a59db9092adb1dae6b43f (diff) |
Merge pull request #39 from PikalaxALT/fieldmap
fieldmap
-rw-r--r-- | asm/field_camera.s | 4 | ||||
-rw-r--r-- | asm/field_control_avatar.s | 8 | ||||
-rw-r--r-- | asm/field_door.s | 8 | ||||
-rw-r--r-- | asm/field_effect_helpers.s | 8 | ||||
-rw-r--r-- | asm/field_map_obj.s | 16 | ||||
-rw-r--r-- | asm/field_tasks.s | 4 | ||||
-rw-r--r-- | asm/fieldmap.s | 2400 | ||||
-rw-r--r-- | asm/fldeff_cut.s | 2 | ||||
-rw-r--r-- | asm/item_use.s | 2 | ||||
-rw-r--r-- | asm/overworld.s | 36 | ||||
-rw-r--r-- | asm/shop.s | 8 | ||||
-rw-r--r-- | asm/start_menu.s | 2 | ||||
-rw-r--r-- | asm/tileset_anims.s | 120 | ||||
-rw-r--r-- | common_syms/fieldmap.txt | 1 | ||||
-rw-r--r-- | data/data.s | 22 | ||||
-rw-r--r-- | data/fieldmap.s | 6 | ||||
-rw-r--r-- | include/fieldmap.h | 21 | ||||
-rw-r--r-- | include/global.fieldmap.h | 14 | ||||
-rw-r--r-- | include/global.h | 3 | ||||
-rw-r--r-- | include/menu.h | 1 | ||||
-rw-r--r-- | include/new_menu_helpers.h | 1 | ||||
-rw-r--r-- | include/overworld.h | 3 | ||||
-rw-r--r-- | include/palette.h | 2 | ||||
-rw-r--r-- | include/quest_log.h | 1 | ||||
-rw-r--r-- | ld_script.txt | 4 | ||||
-rw-r--r-- | src/fieldmap.c | 1025 | ||||
-rw-r--r-- | src/save.c | 4 | ||||
-rw-r--r-- | sym_bss.txt | 12 | ||||
-rw-r--r-- | sym_common.txt | 4 | ||||
-rw-r--r-- | sym_ewram.txt | 12 |
30 files changed, 1187 insertions, 2567 deletions
diff --git a/asm/field_camera.s b/asm/field_camera.s index 3d4ca0025..5541c6472 100644 --- a/asm/field_camera.s +++ b/asm/field_camera.s @@ -528,7 +528,7 @@ sub_805A948: @ 805A948 mov r8, r1 adds r0, r6, 0 adds r1, r7, 0 - bl sub_8058E48 + bl MapGridGetMetatileIdAt lsls r0, 16 lsrs r4, r0, 16 movs r0, 0x80 @@ -557,7 +557,7 @@ _0805A98C: asrs r0, 16 lsls r1, r7, 16 asrs r1, 16 - bl sub_8058F8C + bl MapGridGetMetatileLayerTypeAt lsls r0, 24 lsrs r0, 24 lsls r1, r4, 4 diff --git a/asm/field_control_avatar.s b/asm/field_control_avatar.s index 39055b8e9..d1d1a6812 100644 --- a/asm/field_control_avatar.s +++ b/asm/field_control_avatar.s @@ -884,7 +884,7 @@ sub_806CF38: @ 806CF38 ldrh r1, [r4, 0x2] b _0806CF7E _0806CF60: - ldr r1, _0806CFA4 @ =gUnknown_826D2D8 + ldr r1, _0806CFA4 @ =gDirectionToVectors lsls r2, r6, 3 adds r0, r2, r1 ldr r3, [r0] @@ -919,7 +919,7 @@ _0806CF9E: movs r0, 0 b _0806CFDE .align 2, 0 -_0806CFA4: .4byte gUnknown_826D2D8 +_0806CFA4: .4byte gDirectionToVectors _0806CFA8: .4byte gMapObjects _0806CFAC: movs r4, 0 @@ -994,7 +994,7 @@ _0806D02A: lsrs r0, 24 cmp r0, 0x1 bne _0806D092 - ldr r1, _0806D09C @ =gUnknown_826D2D8 + ldr r1, _0806D09C @ =gDirectionToVectors mov r0, r8 lsls r2, r0, 3 adds r0, r2, r1 @@ -1042,7 +1042,7 @@ _0806D092: b _0806D0C8 .align 2, 0 _0806D098: .4byte gMapObjects -_0806D09C: .4byte gUnknown_826D2D8 +_0806D09C: .4byte gDirectionToVectors _0806D0A0: ldr r0, _0806D0D4 @ =gSelectedEventObject strb r5, [r0] diff --git a/asm/field_door.s b/asm/field_door.s index 4384531d0..bcb8a6082 100644 --- a/asm/field_door.s +++ b/asm/field_door.s @@ -337,7 +337,7 @@ sub_805B158: @ 805B158 adds r6, r2, 0 adds r0, r5, 0 adds r1, r6, 0 - bl sub_8058E48 + bl MapGridGetMetatileIdAt adds r1, r0, 0 lsls r1, 16 lsrs r1, 16 @@ -392,7 +392,7 @@ sub_805B1B8: @ 805B1B8 adds r6, r2, 0 adds r0, r5, 0 adds r1, r6, 0 - bl sub_8058E48 + bl MapGridGetMetatileIdAt adds r1, r0, 0 lsls r1, 16 lsrs r1, 16 @@ -439,7 +439,7 @@ sub_805B210: @ 805B210 adds r6, r2, 0 adds r0, r5, 0 adds r1, r6, 0 - bl sub_8058E48 + bl MapGridGetMetatileIdAt adds r1, r0, 0 lsls r1, 16 lsrs r1, 16 @@ -643,7 +643,7 @@ sub_805B388: @ 805B388 adds r4, r0, 0 adds r0, r1, 0 adds r1, r2, 0 - bl sub_8058E48 + bl MapGridGetMetatileIdAt adds r1, r0, 0 lsls r1, 16 lsrs r1, 16 diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index ed746de25..be79c3b21 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -845,7 +845,7 @@ unc_grass_normal: @ 80DB3EC lsrs r4, r0, 8 lsls r0, 24 lsrs r7, r0, 24 - ldr r3, _080DB498 @ =gUnknown_2036E18 + ldr r3, _080DB498 @ =gCamera ldrb r1, [r3] movs r0, 0x1 ands r0, r1 @@ -921,7 +921,7 @@ _080DB48C: bl FieldEffectStop b _080DB4E4 .align 2, 0 -_080DB498: .4byte gUnknown_2036E18 +_080DB498: .4byte gCamera _080DB49C: .4byte gSaveBlock1Ptr _080DB4A0: mov r0, sp @@ -1196,7 +1196,7 @@ unc_grass_tall: @ 80DB69C lsrs r7, r0, 8 lsls r0, 24 lsrs r6, r0, 24 - ldr r3, _080DB748 @ =gUnknown_2036E18 + ldr r3, _080DB748 @ =gCamera ldrb r1, [r3] movs r0, 0x1 ands r0, r1 @@ -1272,7 +1272,7 @@ _080DB73C: bl FieldEffectStop b _080DB786 .align 2, 0 -_080DB748: .4byte gUnknown_2036E18 +_080DB748: .4byte gCamera _080DB74C: .4byte gSaveBlock1Ptr _080DB750: mov r0, sp diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index 14951c20c..ef1c75939 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -673,7 +673,7 @@ sub_805E2E8: @ 805E2E8 lsls r0, 24 cmp r0, 0 beq _0805E37C - ldr r1, _0805E374 @ =gUnknown_3005040 + ldr r1, _0805E374 @ =VMap ldr r0, [r1] adds r3, r0, 0 subs r3, 0x10 @@ -736,7 +736,7 @@ _0805E36A: movs r0, 0 b _0805E37E .align 2, 0 -_0805E374: .4byte gUnknown_3005040 +_0805E374: .4byte VMap _0805E378: .4byte gSaveBlock1Ptr _0805E37C: movs r0, 0x1 @@ -3516,7 +3516,7 @@ npc_coords_shift_still: @ 805F818 thumb_func_start UpdateFieldObjectCoordsForCameraUpdate UpdateFieldObjectCoordsForCameraUpdate: @ 805F82C push {r4,r5,lr} - ldr r2, _0805F88C @ =gUnknown_2036E18 + ldr r2, _0805F88C @ =gCamera ldrb r1, [r2] movs r0, 0x1 ands r0, r1 @@ -3566,7 +3566,7 @@ _0805F884: pop {r0} bx r0 .align 2, 0 -_0805F88C: .4byte gUnknown_2036E18 +_0805F88C: .4byte gCamera _0805F890: .4byte gMapObjects thumb_func_end UpdateFieldObjectCoordsForCameraUpdate @@ -12332,13 +12332,13 @@ npc_block_way: @ 80636AC _080636E2: adds r0, r5, 0 adds r1, r4, 0 - bl sub_8058DC4 + bl MapGridIsImpassableAt lsls r0, 24 cmp r0, 0 bne _08063724 adds r0, r5, 0 adds r1, r4, 0 - bl sub_8059334 + bl GetMapBorderIdAt movs r1, 0x1 negs r1, r1 cmp r0, r1 @@ -12432,13 +12432,13 @@ sub_8063770: @ 8063770 lsrs r4, r1, 31 adds r0, r6, 0 adds r1, r5, 0 - bl sub_8058DC4 + bl MapGridIsImpassableAt lsls r0, 24 cmp r0, 0 bne _080637E8 adds r0, r6, 0 adds r1, r5, 0 - bl sub_8059334 + bl GetMapBorderIdAt movs r1, 0x1 negs r1, r1 cmp r0, r1 diff --git a/asm/field_tasks.s b/asm/field_tasks.s index 306b52940..b4106c021 100644 --- a/asm/field_tasks.s +++ b/asm/field_tasks.s @@ -490,7 +490,7 @@ _0806EB8E: ldrsh r0, [r0, r3] movs r2, 0 ldrsh r1, [r4, r2] - bl sub_8058E48 + bl MapGridGetMetatileIdAt ldr r1, _0806EBDC @ =0x0000020a cmp r0, r1 bne _0806EBE4 @@ -534,7 +534,7 @@ sub_806EC04: @ 806EC04 asrs r4, r1, 16 adds r0, r5, 0 adds r1, r4, 0 - bl sub_8058E48 + bl MapGridGetMetatileIdAt ldr r1, _0806EC38 @ =0x0000022f ldr r2, _0806EC3C @ =0x00000237 cmp r0, r1 diff --git a/asm/fieldmap.s b/asm/fieldmap.s deleted file mode 100644 index a8b2d36ee..000000000 --- a/asm/fieldmap.s +++ /dev/null @@ -1,2400 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start mapconnection_get_mapheader -mapconnection_get_mapheader: @ 80589C4 - push {lr} - ldrb r2, [r0, 0x8] - ldrb r1, [r0, 0x9] - adds r0, r2, 0 - bl get_mapheader_by_bank_and_number - pop {r1} - bx r1 - thumb_func_end mapconnection_get_mapheader - - thumb_func_start not_trainer_hill_battle_pyramid -not_trainer_hill_battle_pyramid: @ 80589D4 - push {lr} - ldr r0, _080589E4 @ =gMapHeader - bl sub_8058A00 - bl mapheader_run_script_with_tag_x1 - pop {r0} - bx r0 - .align 2, 0 -_080589E4: .4byte gMapHeader - thumb_func_end not_trainer_hill_battle_pyramid - - thumb_func_start sub_80589E8 -sub_80589E8: @ 80589E8 - push {lr} - ldr r0, _080589FC @ =gMapHeader - bl sub_8058A00 - bl sub_80591C4 - bl mapheader_run_script_with_tag_x1 - pop {r0} - bx r0 - .align 2, 0 -_080589FC: .4byte gMapHeader - thumb_func_end sub_80589E8 - - thumb_func_start sub_8058A00 -sub_8058A00: @ 8058A00 - push {r4-r6,lr} - sub sp, 0x4 - adds r6, r0, 0 - ldr r5, [r6] - ldr r0, _08058A58 @ =0x03ff03ff - str r0, [sp] - ldr r4, _08058A5C @ =gUnknown_2031DFC - ldr r2, _08058A60 @ =0x01001400 - mov r0, sp - adds r1, r4, 0 - bl CpuFastSet - ldr r2, _08058A64 @ =gUnknown_3005040 - str r4, [r2, 0x8] - ldr r1, [r5] - adds r1, 0xF - str r1, [r2] - ldr r0, [r5, 0x4] - adds r0, 0xE - str r0, [r2, 0x4] - muls r1, r0 - movs r0, 0xA0 - lsls r0, 6 - cmp r1, r0 - ble _08058A3E - ldr r0, _08058A68 @ =gUnknown_8352F18 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/fieldmap.c" - ldr r2, _08058A6C @ =gUnknown_8352F4C "VMap.Xsize * VMap.Ysize <= VIRTUAL_MAP_SIZE" - movs r1, 0x9E - movs r3, 0x1 - bl AGBAssert -_08058A3E: - ldr r0, [r5, 0xC] - ldrh r1, [r5] - ldrh r2, [r5, 0x4] - bl map_copy_with_padding - adds r0, r6, 0 - bl mapheader_copy_mapdata_of_adjacent_maps - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08058A58: .4byte 0x03ff03ff -_08058A5C: .4byte gUnknown_2031DFC -_08058A60: .4byte 0x01001400 -_08058A64: .4byte gUnknown_3005040 -_08058A68: .4byte gUnknown_8352F18 -_08058A6C: .4byte gUnknown_8352F4C - thumb_func_end sub_8058A00 - - thumb_func_start map_copy_with_padding -map_copy_with_padding: @ 8058A70 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r7, r0, 0 - lsls r1, 16 - lsrs r1, 16 - mov r8, r1 - lsls r2, 16 - lsrs r2, 16 - ldr r0, _08058AC4 @ =gUnknown_3005040 - ldr r4, [r0, 0x8] - ldr r1, [r0] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 1 - adds r0, 0xE - adds r4, r0 - cmp r2, 0 - beq _08058AB8 - mov r0, r8 - lsls r6, r0, 1 - adds r5, r2, 0 - movs r0, 0x1E - adds r0, r6 - mov r9, r0 -_08058AA4: - adds r0, r7, 0 - adds r1, r4, 0 - mov r2, r8 - bl CpuSet - add r4, r9 - adds r7, r6 - subs r5, 0x1 - cmp r5, 0 - bne _08058AA4 -_08058AB8: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08058AC4: .4byte gUnknown_3005040 - thumb_func_end map_copy_with_padding - - thumb_func_start mapheader_copy_mapdata_of_adjacent_maps -mapheader_copy_mapdata_of_adjacent_maps: @ 8058AC8 - push {r4-r7,lr} - adds r6, r0, 0 - ldr r2, _08058B00 @ =gUnknown_2036E24 - ldr r0, _08058B04 @ =gUnknown_8352EEC - ldr r0, [r0] - str r0, [r2] - ldr r0, [r6, 0xC] - cmp r0, 0 - beq _08058B4C - ldr r1, [r0] - ldr r5, [r0, 0x4] - cmp r1, 0 - ble _08058B4C - adds r4, r2, 0 - adds r7, r1, 0 -_08058AE6: - adds r0, r5, 0 - bl mapconnection_get_mapheader - adds r1, r0, 0 - ldr r2, [r5, 0x4] - ldrb r0, [r5] - cmp r0, 0x2 - beq _08058B1E - cmp r0, 0x2 - bgt _08058B08 - cmp r0, 0x1 - beq _08058B12 - b _08058B44 - .align 2, 0 -_08058B00: .4byte gUnknown_2036E24 -_08058B04: .4byte gUnknown_8352EEC -_08058B08: - cmp r0, 0x3 - beq _08058B2A - cmp r0, 0x4 - beq _08058B36 - b _08058B44 -_08058B12: - adds r0, r6, 0 - bl fillSouthConnection - ldrb r0, [r4] - movs r1, 0x1 - b _08058B40 -_08058B1E: - adds r0, r6, 0 - bl fillNorthConnection - ldrb r0, [r4] - movs r1, 0x2 - b _08058B40 -_08058B2A: - adds r0, r6, 0 - bl fillWestConnection - ldrb r0, [r4] - movs r1, 0x4 - b _08058B40 -_08058B36: - adds r0, r6, 0 - bl fillEastConnection - ldrb r0, [r4] - movs r1, 0x8 -_08058B40: - orrs r0, r1 - strb r0, [r4] -_08058B44: - subs r7, 0x1 - adds r5, 0xC - cmp r7, 0 - bne _08058AE6 -_08058B4C: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end mapheader_copy_mapdata_of_adjacent_maps - - thumb_func_start sub_8058B54 -sub_8058B54: @ 8058B54 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r5, [sp, 0x18] - ldr r4, [r2] - ldr r7, [r4] - adds r2, r7, 0 - muls r2, r5 - adds r2, r3 - lsls r2, 1 - ldr r3, [r4, 0xC] - adds r6, r3, r2 - ldr r3, _08058BB0 @ =gUnknown_3005040 - ldr r2, [r3] - muls r1, r2 - adds r1, r0 - lsls r1, 1 - ldr r0, [r3, 0x8] - adds r5, r0, r1 - ldr r0, [sp, 0x20] - cmp r0, 0 - ble _08058BA6 - adds r4, r0, 0 - ldr r3, _08058BB4 @ =0x001fffff - mov r8, r3 -_08058B86: - adds r0, r6, 0 - adds r1, r5, 0 - ldr r2, [sp, 0x1C] - mov r3, r8 - ands r2, r3 - bl CpuSet - ldr r0, _08058BB0 @ =gUnknown_3005040 - ldr r0, [r0] - lsls r0, 1 - adds r5, r0 - lsls r0, r7, 1 - adds r6, r0 - subs r4, 0x1 - cmp r4, 0 - bne _08058B86 -_08058BA6: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08058BB0: .4byte gUnknown_3005040 -_08058BB4: .4byte 0x001fffff - thumb_func_end sub_8058B54 - - thumb_func_start fillSouthConnection -fillSouthConnection: @ 8058BB8 - push {r4-r7,lr} - sub sp, 0xC - adds r3, r0, 0 - adds r5, r1, 0 - cmp r5, 0 - beq _08058C12 - ldr r0, [r5] - ldr r4, [r0] - adds r2, 0x7 - ldr r0, [r3] - ldr r0, [r0, 0x4] - adds r7, r0, 0x7 - cmp r2, 0 - bge _08058BEC - negs r6, r2 - adds r2, r4 - ldr r0, _08058BE8 @ =gUnknown_3005040 - ldr r3, [r0] - cmp r2, r3 - bge _08058BE2 - adds r3, r2, 0 -_08058BE2: - movs r2, 0 - b _08058BFC - .align 2, 0 -_08058BE8: .4byte gUnknown_3005040 -_08058BEC: - movs r6, 0 - adds r0, r2, r4 - ldr r1, _08058C1C @ =gUnknown_3005040 - ldr r1, [r1] - subs r3, r1, r2 - cmp r0, r1 - bge _08058BFC - adds r3, r4, 0 -_08058BFC: - movs r0, 0 - str r0, [sp] - str r3, [sp, 0x4] - movs r0, 0x7 - str r0, [sp, 0x8] - adds r0, r2, 0 - adds r1, r7, 0 - adds r2, r5, 0 - adds r3, r6, 0 - bl sub_8058B54 -_08058C12: - add sp, 0xC - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08058C1C: .4byte gUnknown_3005040 - thumb_func_end fillSouthConnection - - thumb_func_start fillNorthConnection -fillNorthConnection: @ 8058C20 - push {r4-r7,lr} - sub sp, 0xC - adds r5, r1, 0 - cmp r5, 0 - beq _08058C74 - ldr r0, [r5] - ldr r4, [r0] - ldr r0, [r0, 0x4] - adds r2, 0x7 - subs r7, r0, 0x7 - cmp r2, 0 - bge _08058C50 - negs r6, r2 - adds r2, r4 - ldr r0, _08058C4C @ =gUnknown_3005040 - ldr r3, [r0] - cmp r2, r3 - bge _08058C46 - adds r3, r2, 0 -_08058C46: - movs r2, 0 - b _08058C60 - .align 2, 0 -_08058C4C: .4byte gUnknown_3005040 -_08058C50: - movs r6, 0 - adds r0, r2, r4 - ldr r1, _08058C7C @ =gUnknown_3005040 - ldr r1, [r1] - subs r3, r1, r2 - cmp r0, r1 - bge _08058C60 - adds r3, r4, 0 -_08058C60: - str r7, [sp] - str r3, [sp, 0x4] - movs r0, 0x7 - str r0, [sp, 0x8] - adds r0, r2, 0 - movs r1, 0 - adds r2, r5, 0 - adds r3, r6, 0 - bl sub_8058B54 -_08058C74: - add sp, 0xC - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08058C7C: .4byte gUnknown_3005040 - thumb_func_end fillNorthConnection - - thumb_func_start fillWestConnection -fillWestConnection: @ 8058C80 - push {r4-r7,lr} - sub sp, 0xC - adds r5, r1, 0 - cmp r5, 0 - beq _08058CD4 - ldr r0, [r5] - ldr r1, [r0] - ldr r4, [r0, 0x4] - adds r2, 0x7 - subs r7, r1, 0x7 - cmp r2, 0 - bge _08058CB0 - negs r6, r2 - adds r1, r2, r4 - ldr r0, _08058CAC @ =gUnknown_3005040 - ldr r3, [r0, 0x4] - cmp r1, r3 - bge _08058CA6 - adds r3, r1, 0 -_08058CA6: - movs r2, 0 - b _08058CC0 - .align 2, 0 -_08058CAC: .4byte gUnknown_3005040 -_08058CB0: - movs r6, 0 - adds r0, r2, r4 - ldr r1, _08058CDC @ =gUnknown_3005040 - ldr r1, [r1, 0x4] - subs r3, r1, r2 - cmp r0, r1 - bge _08058CC0 - adds r3, r4, 0 -_08058CC0: - str r6, [sp] - movs r0, 0x7 - str r0, [sp, 0x4] - str r3, [sp, 0x8] - movs r0, 0 - adds r1, r2, 0 - adds r2, r5, 0 - adds r3, r7, 0 - bl sub_8058B54 -_08058CD4: - add sp, 0xC - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08058CDC: .4byte gUnknown_3005040 - thumb_func_end fillWestConnection - - thumb_func_start fillEastConnection -fillEastConnection: @ 8058CE0 - push {r4-r7,lr} - sub sp, 0xC - adds r3, r0, 0 - adds r5, r1, 0 - cmp r5, 0 - beq _08058D38 - ldr r0, [r5] - ldr r4, [r0, 0x4] - ldr r0, [r3] - ldr r0, [r0] - adds r7, r0, 0x7 - adds r2, 0x7 - cmp r2, 0 - bge _08058D14 - negs r6, r2 - adds r1, r2, r4 - ldr r0, _08058D10 @ =gUnknown_3005040 - ldr r3, [r0, 0x4] - cmp r1, r3 - bge _08058D0A - adds r3, r1, 0 -_08058D0A: - movs r2, 0 - b _08058D24 - .align 2, 0 -_08058D10: .4byte gUnknown_3005040 -_08058D14: - movs r6, 0 - adds r0, r2, r4 - ldr r1, _08058D40 @ =gUnknown_3005040 - ldr r1, [r1, 0x4] - subs r3, r1, r2 - cmp r0, r1 - bge _08058D24 - adds r3, r4, 0 -_08058D24: - str r6, [sp] - movs r0, 0x8 - str r0, [sp, 0x4] - str r3, [sp, 0x8] - adds r0, r7, 0 - adds r1, r2, 0 - adds r2, r5, 0 - movs r3, 0 - bl sub_8058B54 -_08058D38: - add sp, 0xC - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08058D40: .4byte gUnknown_3005040 - thumb_func_end fillEastConnection - - thumb_func_start MapGridGetZCoordAt -MapGridGetZCoordAt: @ 8058D44 - push {r4-r7,lr} - adds r2, r0, 0 - adds r7, r1, 0 - cmp r2, 0 - blt _08058D74 - ldr r1, _08058D70 @ =gUnknown_3005040 - ldr r3, [r1] - cmp r2, r3 - bge _08058D74 - cmp r7, 0 - blt _08058D74 - ldr r0, [r1, 0x4] - cmp r7, r0 - bge _08058D74 - adds r0, r3, 0 - muls r0, r7 - adds r0, r2, r0 - ldr r1, [r1, 0x8] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - b _08058DA8 - .align 2, 0 -_08058D70: .4byte gUnknown_3005040 -_08058D74: - ldr r0, _08058DB4 @ =gMapHeader - ldr r6, [r0] - subs r0, r2, 0x7 - ldrb r5, [r6, 0x18] - lsls r1, r5, 3 - adds r0, r1 - adds r1, r5, 0 - bl __modsi3 - adds r4, r0, 0 - subs r0, r7, 0x7 - ldrb r1, [r6, 0x19] - lsls r2, r1, 3 - adds r0, r2 - bl __modsi3 - muls r0, r5 - adds r4, r0 - ldr r0, [r6, 0x8] - lsls r4, 1 - adds r4, r0 - ldrh r1, [r4] - movs r2, 0xC0 - lsls r2, 4 - adds r0, r2, 0 - orrs r1, r0 -_08058DA8: - ldr r0, _08058DB8 @ =0x000003ff - cmp r1, r0 - beq _08058DBC - lsrs r0, r1, 12 - b _08058DBE - .align 2, 0 -_08058DB4: .4byte gMapHeader -_08058DB8: .4byte 0x000003ff -_08058DBC: - movs r0, 0 -_08058DBE: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end MapGridGetZCoordAt - - thumb_func_start sub_8058DC4 -sub_8058DC4: @ 8058DC4 - push {r4-r7,lr} - adds r2, r0, 0 - adds r7, r1, 0 - cmp r2, 0 - blt _08058DF4 - ldr r1, _08058DF0 @ =gUnknown_3005040 - ldr r3, [r1] - cmp r2, r3 - bge _08058DF4 - cmp r7, 0 - blt _08058DF4 - ldr r0, [r1, 0x4] - cmp r7, r0 - bge _08058DF4 - adds r0, r3, 0 - muls r0, r7 - adds r0, r2, r0 - ldr r1, [r1, 0x8] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - b _08058E28 - .align 2, 0 -_08058DF0: .4byte gUnknown_3005040 -_08058DF4: - ldr r0, _08058E38 @ =gMapHeader - ldr r6, [r0] - subs r0, r2, 0x7 - ldrb r5, [r6, 0x18] - lsls r1, r5, 3 - adds r0, r1 - adds r1, r5, 0 - bl __modsi3 - adds r4, r0, 0 - subs r0, r7, 0x7 - ldrb r1, [r6, 0x19] - lsls r2, r1, 3 - adds r0, r2 - bl __modsi3 - muls r0, r5 - adds r4, r0 - ldr r0, [r6, 0x8] - lsls r4, 1 - adds r4, r0 - ldrh r1, [r4] - movs r2, 0xC0 - lsls r2, 4 - adds r0, r2, 0 - orrs r1, r0 -_08058E28: - ldr r0, _08058E3C @ =0x000003ff - cmp r1, r0 - beq _08058E40 - movs r0, 0xC0 - lsls r0, 4 - ands r1, r0 - lsrs r0, r1, 10 - b _08058E42 - .align 2, 0 -_08058E38: .4byte gMapHeader -_08058E3C: .4byte 0x000003ff -_08058E40: - movs r0, 0x1 -_08058E42: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8058DC4 - - thumb_func_start sub_8058E48 -sub_8058E48: @ 8058E48 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - mov r8, r0 - mov r9, r1 - cmp r0, 0 - blt _08058E80 - ldr r1, _08058E7C @ =gUnknown_3005040 - ldr r2, [r1] - cmp r8, r2 - bge _08058E80 - mov r0, r9 - cmp r0, 0 - blt _08058E80 - ldr r0, [r1, 0x4] - cmp r9, r0 - bge _08058E80 - mov r0, r9 - muls r0, r2 - add r0, r8 - ldr r1, [r1, 0x8] - lsls r0, 1 - adds r0, r1 - ldrh r7, [r0] - b _08058EBA - .align 2, 0 -_08058E7C: .4byte gUnknown_3005040 -_08058E80: - ldr r0, _08058EC8 @ =gMapHeader - ldr r6, [r0] - mov r0, r8 - subs r0, 0x7 - ldrb r5, [r6, 0x18] - lsls r1, r5, 3 - adds r0, r1 - adds r1, r5, 0 - bl __modsi3 - adds r4, r0, 0 - mov r0, r9 - subs r0, 0x7 - ldrb r1, [r6, 0x19] - lsls r2, r1, 3 - adds r0, r2 - bl __modsi3 - muls r0, r5 - adds r4, r0 - ldr r0, [r6, 0x8] - lsls r4, 1 - adds r4, r0 - ldrh r1, [r4] - movs r2, 0xC0 - lsls r2, 4 - adds r0, r2, 0 - adds r7, r0, 0 - orrs r7, r1 -_08058EBA: - ldr r0, _08058ECC @ =0x000003ff - cmp r7, r0 - beq _08058ED0 - ands r7, r0 - adds r0, r7, 0 - b _08058F0A - .align 2, 0 -_08058EC8: .4byte gMapHeader -_08058ECC: .4byte 0x000003ff -_08058ED0: - ldr r0, _08058F18 @ =gMapHeader - ldr r6, [r0] - mov r0, r8 - subs r0, 0x7 - ldrb r5, [r6, 0x18] - lsls r1, r5, 3 - adds r0, r1 - adds r1, r5, 0 - bl __modsi3 - adds r4, r0, 0 - mov r0, r9 - subs r0, 0x7 - ldrb r1, [r6, 0x19] - lsls r2, r1, 3 - adds r0, r2 - bl __modsi3 - muls r0, r5 - adds r4, r0 - ldr r0, [r6, 0x8] - lsls r4, 1 - adds r4, r0 - ldrh r0, [r4] - movs r2, 0xC0 - lsls r2, 4 - adds r1, r2, 0 - orrs r0, r1 - ands r0, r7 -_08058F0A: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08058F18: .4byte gMapHeader - thumb_func_end sub_8058E48 - - thumb_func_start sub_8058F1C -sub_8058F1C: @ 8058F1C - push {lr} - adds r2, r0, 0 - lsls r1, 24 - lsrs r3, r1, 24 - cmp r3, 0x7 - bhi _08058F3A - ldr r1, _08058F40 @ =gUnknown_8352EF0 - lsls r0, r3, 2 - adds r0, r1 - ldr r0, [r0] - ands r2, r0 - ldr r0, _08058F44 @ =gUnknown_8352F10 - adds r0, r3, r0 - ldrb r0, [r0] - lsrs r2, r0 -_08058F3A: - adds r0, r2, 0 - pop {r1} - bx r1 - .align 2, 0 -_08058F40: .4byte gUnknown_8352EF0 -_08058F44: .4byte gUnknown_8352F10 - thumb_func_end sub_8058F1C - - thumb_func_start sub_8058F48 -sub_8058F48: @ 8058F48 - push {r4,lr} - adds r4, r2, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r0, 16 - asrs r0, 16 - lsls r1, 16 - asrs r1, 16 - bl sub_8058E48 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - ldr r0, _08058F74 @ =gMapHeader - ldr r0, [r0] - adds r2, r4, 0 - bl sub_8059080 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08058F74: .4byte gMapHeader - thumb_func_end sub_8058F48 - - thumb_func_start MapGridGetMetatileBehaviorAt -MapGridGetMetatileBehaviorAt: @ 8058F78 - push {lr} - lsls r0, 16 - asrs r0, 16 - lsls r1, 16 - asrs r1, 16 - movs r2, 0 - bl sub_8058F48 - pop {r1} - bx r1 - thumb_func_end MapGridGetMetatileBehaviorAt - - thumb_func_start sub_8058F8C -sub_8058F8C: @ 8058F8C - push {lr} - lsls r0, 16 - asrs r0, 16 - lsls r1, 16 - asrs r1, 16 - movs r2, 0x6 - bl sub_8058F48 - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end sub_8058F8C - - thumb_func_start MapGridSetMetatileIdAt -MapGridSetMetatileIdAt: @ 8058FA4 - push {r4,r5,lr} - adds r3, r0, 0 - lsls r2, 16 - lsrs r5, r2, 16 - cmp r3, 0 - blt _08058FDC - ldr r2, _08058FE4 @ =gUnknown_3005040 - ldr r4, [r2] - cmp r3, r4 - bge _08058FDC - cmp r1, 0 - blt _08058FDC - ldr r0, [r2, 0x4] - cmp r1, r0 - bge _08058FDC - muls r1, r4 - adds r1, r3, r1 - ldr r0, [r2, 0x8] - lsls r1, 1 - adds r1, r0 - ldrh r0, [r1] - movs r2, 0xF0 - lsls r2, 8 - ands r2, r0 - ldr r0, _08058FE8 @ =0x00000fff - ands r0, r5 - orrs r2, r0 - strh r2, [r1] -_08058FDC: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08058FE4: .4byte gUnknown_3005040 -_08058FE8: .4byte 0x00000fff - thumb_func_end MapGridSetMetatileIdAt - - thumb_func_start MapGridSetMetatileEntryAt -MapGridSetMetatileEntryAt: @ 8058FEC - push {r4,r5,lr} - adds r3, r0, 0 - lsls r2, 16 - lsrs r5, r2, 16 - cmp r3, 0 - blt _08059018 - ldr r2, _08059020 @ =gUnknown_3005040 - ldr r4, [r2] - cmp r3, r4 - bge _08059018 - cmp r1, 0 - blt _08059018 - ldr r0, [r2, 0x4] - cmp r1, r0 - bge _08059018 - adds r0, r4, 0 - muls r0, r1 - adds r0, r3, r0 - ldr r1, [r2, 0x8] - lsls r0, 1 - adds r0, r1 - strh r5, [r0] -_08059018: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08059020: .4byte gUnknown_3005040 - thumb_func_end MapGridSetMetatileEntryAt - - thumb_func_start sub_8059024 -sub_8059024: @ 8059024 - push {r4,r5,lr} - adds r4, r0, 0 - adds r3, r1, 0 - adds r5, r2, 0 - cmp r4, 0 - blt _08059076 - ldr r2, _08059060 @ =gUnknown_3005040 - ldr r1, [r2] - cmp r4, r1 - bge _08059076 - cmp r3, 0 - blt _08059076 - ldr r0, [r2, 0x4] - cmp r3, r0 - bge _08059076 - cmp r5, 0 - beq _08059064 - adds r0, r1, 0 - muls r0, r3 - adds r0, r4, r0 - ldr r1, [r2, 0x8] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r3, 0xC0 - lsls r3, 4 - adds r2, r3, 0 - orrs r1, r2 - strh r1, [r0] - b _08059076 - .align 2, 0 -_08059060: .4byte gUnknown_3005040 -_08059064: - muls r1, r3 - adds r1, r4, r1 - ldr r0, [r2, 0x8] - lsls r1, 1 - adds r1, r0 - ldrh r2, [r1] - ldr r0, _0805907C @ =0x0000f3ff - ands r0, r2 - strh r0, [r1] -_08059076: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0805907C: .4byte 0x0000f3ff - thumb_func_end sub_8059024 - - thumb_func_start sub_8059080 -sub_8059080: @ 8059080 - push {r4-r6,lr} - adds r4, r0, 0 - lsls r1, 16 - lsrs r3, r1, 16 - adds r5, r3, 0 - lsls r2, 24 - lsrs r2, 24 - adds r6, r2, 0 - ldr r0, _080590A4 @ =0x0000027f - cmp r3, r0 - bhi _080590A8 - ldr r0, [r4, 0x10] - ldr r1, [r0, 0x14] - lsls r0, r3, 2 - adds r0, r1 - ldr r0, [r0] - adds r1, r2, 0 - b _080590C8 - .align 2, 0 -_080590A4: .4byte 0x0000027f -_080590A8: - ldr r0, _080590B4 @ =0x000003ff - cmp r3, r0 - bls _080590B8 - movs r0, 0xFF - b _080590CC - .align 2, 0 -_080590B4: .4byte 0x000003ff -_080590B8: - ldr r0, [r4, 0x14] - ldr r1, [r0, 0x14] - lsls r0, r5, 2 - adds r0, r1 - ldr r1, _080590D4 @ =0xfffff600 - adds r0, r1 - ldr r0, [r0] - adds r1, r6, 0 -_080590C8: - bl sub_8058F1C -_080590CC: - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_080590D4: .4byte 0xfffff600 - thumb_func_end sub_8059080 - - thumb_func_start sub_80590D8 -sub_80590D8: @ 80590D8 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r0, _08059144 @ =gSaveBlock2Ptr - ldr r0, [r0] - ldr r1, _08059148 @ =0x00000898 - adds r4, r0, r1 - ldr r0, _0805914C @ =gUnknown_3005040 - ldr r0, [r0] - mov r8, r0 - ldr r0, _08059150 @ =gSaveBlock1Ptr - ldr r0, [r0] - movs r2, 0 - ldrsh r6, [r0, r2] - movs r1, 0x2 - ldrsh r0, [r0, r1] - adds r1, r0, 0 - adds r1, 0xE - cmp r0, r1 - bge _08059138 - mov r12, r1 - ldr r2, _08059154 @ =gUnknown_2031DFC - mov r9, r2 - lsls r7, r6, 1 -_0805910A: - adds r1, r6, 0 - adds r3, r1, 0 - adds r3, 0xF - adds r5, r0, 0x1 - cmp r1, r3 - bge _08059132 - mov r2, r8 - muls r2, r0 - adds r0, r2, 0 - lsls r0, 1 - add r0, r9 - adds r2, r7, r0 - subs r1, r3, r1 -_08059124: - ldrh r0, [r2] - strh r0, [r4] - adds r4, 0x2 - adds r2, 0x2 - subs r1, 0x1 - cmp r1, 0 - bne _08059124 -_08059132: - adds r0, r5, 0 - cmp r0, r12 - blt _0805910A -_08059138: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08059144: .4byte gSaveBlock2Ptr -_08059148: .4byte 0x00000898 -_0805914C: .4byte gUnknown_3005040 -_08059150: .4byte gSaveBlock1Ptr -_08059154: .4byte gUnknown_2031DFC - thumb_func_end sub_80590D8 - - thumb_func_start sub_8059158 -sub_8059158: @ 8059158 - push {r4,lr} - movs r2, 0 - movs r1, 0 - ldr r0, _08059184 @ =gSaveBlock2Ptr - ldr r0, [r0] - ldr r4, _08059188 @ =0x00000898 - adds r3, r0, r4 - ldr r4, _0805918C @ =0x000001ff -_08059168: - lsls r0, r1, 1 - adds r0, r3, r0 - ldrh r0, [r0] - orrs r2, r0 - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, r4 - bls _08059168 - cmp r2, 0 - beq _08059190 - movs r0, 0 - b _08059192 - .align 2, 0 -_08059184: .4byte gSaveBlock2Ptr -_08059188: .4byte 0x00000898 -_0805918C: .4byte 0x000001ff -_08059190: - movs r0, 0x1 -_08059192: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8059158 - - thumb_func_start sub_8059198 -sub_8059198: @ 8059198 - push {lr} - sub sp, 0x4 - mov r1, sp - movs r0, 0 - strh r0, [r1] - ldr r0, _080591B8 @ =gSaveBlock2Ptr - ldr r1, [r0] - ldr r0, _080591BC @ =0x00000898 - adds r1, r0 - ldr r2, _080591C0 @ =0x01000100 - mov r0, sp - bl CpuSet - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_080591B8: .4byte gSaveBlock2Ptr -_080591BC: .4byte 0x00000898 -_080591C0: .4byte 0x01000100 - thumb_func_end sub_8059198 - - thumb_func_start sub_80591C4 -sub_80591C4: @ 80591C4 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r0, _0805923C @ =gSaveBlock2Ptr - ldr r0, [r0] - ldr r1, _08059240 @ =0x00000898 - adds r4, r0, r1 - bl sub_8059158 - cmp r0, 0 - bne _08059230 - ldr r0, _08059244 @ =gUnknown_3005040 - ldr r0, [r0] - mov r8, r0 - ldr r0, _08059248 @ =gSaveBlock1Ptr - ldr r0, [r0] - movs r2, 0 - ldrsh r6, [r0, r2] - movs r1, 0x2 - ldrsh r0, [r0, r1] - adds r1, r0, 0 - adds r1, 0xE - cmp r0, r1 - bge _0805922C - mov r12, r1 - ldr r2, _0805924C @ =gUnknown_2031DFC - mov r9, r2 - lsls r7, r6, 1 -_080591FE: - adds r1, r6, 0 - adds r3, r1, 0 - adds r3, 0xF - adds r5, r0, 0x1 - cmp r1, r3 - bge _08059226 - mov r2, r8 - muls r2, r0 - adds r0, r2, 0 - lsls r0, 1 - add r0, r9 - adds r2, r7, r0 - subs r1, r3, r1 -_08059218: - ldrh r0, [r4] - strh r0, [r2] - adds r4, 0x2 - adds r2, 0x2 - subs r1, 0x1 - cmp r1, 0 - bne _08059218 -_08059226: - adds r0, r5, 0 - cmp r0, r12 - blt _080591FE -_0805922C: - bl sub_8059198 -_08059230: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0805923C: .4byte gSaveBlock2Ptr -_08059240: .4byte 0x00000898 -_08059244: .4byte gUnknown_3005040 -_08059248: .4byte gSaveBlock1Ptr -_0805924C: .4byte gUnknown_2031DFC - thumb_func_end sub_80591C4 - - thumb_func_start sub_8059250 -sub_8059250: @ 8059250 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - lsls r0, 24 - lsrs r1, r0, 24 - adds r2, r1, 0 - ldr r0, _0805929C @ =gSaveBlock2Ptr - ldr r0, [r0] - ldr r3, _080592A0 @ =0x00000898 - adds r3, r0, r3 - str r3, [sp, 0x4] - ldr r0, _080592A4 @ =gUnknown_3005040 - ldr r0, [r0] - str r0, [sp] - movs r4, 0 - mov r9, r4 - mov r8, r4 - ldr r0, _080592A8 @ =gSaveBlock1Ptr - ldr r0, [r0] - movs r3, 0 - ldrsh r6, [r0, r3] - str r6, [sp, 0x8] - movs r4, 0x2 - ldrsh r5, [r0, r4] - movs r7, 0xF - movs r6, 0xE - mov r12, r6 - cmp r1, 0x2 - beq _080592B6 - cmp r1, 0x2 - bgt _080592AC - cmp r1, 0x1 - beq _080592BE - b _080592D6 - .align 2, 0 -_0805929C: .4byte gSaveBlock2Ptr -_080592A0: .4byte 0x00000898 -_080592A4: .4byte gUnknown_3005040 -_080592A8: .4byte gSaveBlock1Ptr -_080592AC: - cmp r2, 0x3 - beq _080592C8 - cmp r2, 0x4 - beq _080592D0 - b _080592D6 -_080592B6: - adds r5, 0x1 - movs r0, 0xD - mov r12, r0 - b _080592D6 -_080592BE: - movs r1, 0x1 - mov r8, r1 - movs r3, 0xD - mov r12, r3 - b _080592D6 -_080592C8: - ldr r4, [sp, 0x8] - adds r4, 0x1 - str r4, [sp, 0x8] - b _080592D4 -_080592D0: - movs r6, 0x1 - mov r9, r6 -_080592D4: - movs r7, 0xE -_080592D6: - movs r1, 0 - cmp r1, r12 - bge _0805931A - ldr r0, _08059330 @ =gUnknown_2031DFC - mov r10, r0 -_080592E0: - adds r4, r1, 0x1 - cmp r7, 0 - beq _08059314 - adds r0, r1, r5 - ldr r3, [sp] - adds r2, r3, 0 - muls r2, r0 - add r1, r8 - lsls r0, r1, 4 - subs r0, r1 - add r0, r9 - ldr r6, [sp, 0x8] - adds r2, r6, r2 - adds r3, r7, 0 - lsls r2, 1 - add r2, r10 - lsls r0, 1 - ldr r6, [sp, 0x4] - adds r1, r0, r6 -_08059306: - ldrh r0, [r1] - strh r0, [r2] - adds r1, 0x2 - adds r2, 0x2 - subs r3, 0x1 - cmp r3, 0 - bne _08059306 -_08059314: - adds r1, r4, 0 - cmp r1, r12 - blt _080592E0 -_0805931A: - bl sub_8059198 - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08059330: .4byte gUnknown_2031DFC - thumb_func_end sub_8059250 - - thumb_func_start sub_8059334 -sub_8059334: @ 8059334 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r7, r0, 0 - mov r8, r1 - cmp r7, 0 - blt _08059374 - ldr r1, _0805936C @ =gUnknown_3005040 - ldr r2, [r1] - cmp r7, r2 - bge _08059374 - mov r0, r8 - cmp r0, 0 - blt _08059374 - ldr r0, [r1, 0x4] - cmp r8, r0 - bge _08059374 - mov r0, r8 - muls r0, r2 - adds r0, r7, r0 - ldr r1, [r1, 0x8] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - ldr r0, _08059370 @ =0x000003ff - cmp r1, r0 - beq _08059422 - b _080593B0 - .align 2, 0 -_0805936C: .4byte gUnknown_3005040 -_08059370: .4byte 0x000003ff -_08059374: - ldr r0, _080593CC @ =gMapHeader - ldr r6, [r0] - subs r0, r7, 0x7 - ldrb r5, [r6, 0x18] - lsls r1, r5, 3 - adds r0, r1 - adds r1, r5, 0 - bl __modsi3 - adds r4, r0, 0 - mov r0, r8 - subs r0, 0x7 - ldrb r1, [r6, 0x19] - lsls r2, r1, 3 - adds r0, r2 - bl __modsi3 - muls r0, r5 - adds r4, r0 - ldr r0, [r6, 0x8] - lsls r4, 1 - adds r4, r0 - ldrh r1, [r4] - movs r2, 0xC0 - lsls r2, 4 - adds r0, r2, 0 - orrs r0, r1 - ldr r1, _080593D0 @ =0x000003ff - cmp r0, r1 - beq _08059422 -_080593B0: - ldr r1, _080593D4 @ =gUnknown_3005040 - ldr r0, [r1] - subs r0, 0x8 - cmp r7, r0 - blt _080593DC - ldr r0, _080593D8 @ =gUnknown_2036E24 - ldrb r1, [r0] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _08059422 - movs r0, 0x4 - b _08059432 - .align 2, 0 -_080593CC: .4byte gMapHeader -_080593D0: .4byte 0x000003ff -_080593D4: .4byte gUnknown_3005040 -_080593D8: .4byte gUnknown_2036E24 -_080593DC: - cmp r7, 0x6 - bgt _080593F4 - ldr r0, _080593F0 @ =gUnknown_2036E24 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _08059422 - movs r0, 0x3 - b _08059432 - .align 2, 0 -_080593F0: .4byte gUnknown_2036E24 -_080593F4: - ldr r0, [r1, 0x4] - subs r0, 0x7 - cmp r8, r0 - blt _08059410 - ldr r0, _0805940C @ =gUnknown_2036E24 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08059422 - movs r0, 0x1 - b _08059432 - .align 2, 0 -_0805940C: .4byte gUnknown_2036E24 -_08059410: - mov r0, r8 - cmp r0, 0x6 - bgt _08059430 - ldr r0, _08059428 @ =gUnknown_2036E24 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _0805942C -_08059422: - movs r0, 0x1 - negs r0, r0 - b _08059432 - .align 2, 0 -_08059428: .4byte gUnknown_2036E24 -_0805942C: - movs r0, 0x2 - b _08059432 -_08059430: - movs r0, 0 -_08059432: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8059334 - - thumb_func_start GetPostCameraMoveMapBorderId -GetPostCameraMoveMapBorderId: @ 805943C - push {r4,lr} - adds r3, r1, 0 - ldr r1, _08059460 @ =gSaveBlock1Ptr - ldr r1, [r1] - movs r4, 0 - ldrsh r2, [r1, r4] - adds r0, 0x7 - adds r2, r0 - movs r0, 0x2 - ldrsh r1, [r1, r0] - adds r3, 0x7 - adds r1, r3 - adds r0, r2, 0 - bl sub_8059334 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08059460: .4byte gSaveBlock1Ptr - thumb_func_end GetPostCameraMoveMapBorderId - - thumb_func_start CanCameraMoveInDirection -CanCameraMoveInDirection: @ 8059464 - push {r4,r5,lr} - ldr r1, _0805949C @ =gSaveBlock1Ptr - ldr r4, [r1] - movs r1, 0 - ldrsh r3, [r4, r1] - ldr r2, _080594A0 @ =gUnknown_826D2D8 - lsls r0, 3 - adds r1, r0, r2 - ldr r1, [r1] - adds r1, 0x7 - adds r3, r1 - movs r5, 0x2 - ldrsh r1, [r4, r5] - adds r2, 0x4 - adds r0, r2 - ldr r0, [r0] - adds r0, 0x7 - adds r1, r0 - adds r0, r3, 0 - bl sub_8059334 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _080594A4 - movs r0, 0x1 - b _080594A6 - .align 2, 0 -_0805949C: .4byte gSaveBlock1Ptr -_080594A0: .4byte gUnknown_826D2D8 -_080594A4: - movs r0, 0 -_080594A6: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end CanCameraMoveInDirection - - thumb_func_start sub_80594AC -sub_80594AC: @ 80594AC - push {r4-r7,lr} - adds r5, r0, 0 - adds r4, r1, 0 - adds r6, r2, 0 - adds r7, r3, 0 - bl mapconnection_get_mapheader - adds r3, r0, 0 - cmp r4, 0x2 - beq _08059514 - cmp r4, 0x2 - bgt _080594CA - cmp r4, 0x1 - beq _08059500 - b _08059526 -_080594CA: - cmp r4, 0x3 - beq _080594E8 - cmp r4, 0x4 - bne _08059526 - ldr r0, _080594E4 @ =gSaveBlock1Ptr - ldr r1, [r0] - negs r0, r6 - strh r0, [r1] - ldr r2, [r5, 0x4] - ldrh r0, [r1, 0x2] - subs r0, r2 - b _08059524 - .align 2, 0 -_080594E4: .4byte gSaveBlock1Ptr -_080594E8: - ldr r0, _080594FC @ =gSaveBlock1Ptr - ldr r1, [r0] - ldr r0, [r3] - ldr r0, [r0] - strh r0, [r1] - ldr r2, [r5, 0x4] - ldrh r0, [r1, 0x2] - subs r0, r2 - b _08059524 - .align 2, 0 -_080594FC: .4byte gSaveBlock1Ptr -_08059500: - ldr r0, _08059510 @ =gSaveBlock1Ptr - ldr r1, [r0] - ldr r2, [r5, 0x4] - ldrh r0, [r1] - subs r0, r2 - strh r0, [r1] - negs r0, r7 - b _08059524 - .align 2, 0 -_08059510: .4byte gSaveBlock1Ptr -_08059514: - ldr r0, _0805952C @ =gSaveBlock1Ptr - ldr r1, [r0] - ldr r2, [r5, 0x4] - ldrh r0, [r1] - subs r0, r2 - strh r0, [r1] - ldr r0, [r3] - ldr r0, [r0, 0x4] -_08059524: - strh r0, [r1, 0x2] -_08059526: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0805952C: .4byte gSaveBlock1Ptr - thumb_func_end sub_80594AC - - thumb_func_start CameraMove -CameraMove: @ 8059530 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - mov r10, r0 - mov r9, r1 - ldr r1, _08059570 @ =gUnknown_2036E18 - ldrb r0, [r1] - movs r1, 0x2 - negs r1, r1 - ands r1, r0 - ldr r2, _08059570 @ =gUnknown_2036E18 - strb r1, [r2] - mov r0, r10 - mov r1, r9 - bl GetPostCameraMoveMapBorderId - adds r7, r0, 0 - adds r0, r7, 0x1 - cmp r0, 0x1 - bhi _08059578 - ldr r0, _08059574 @ =gSaveBlock1Ptr - ldr r1, [r0] - ldrh r0, [r1] - add r0, r10 - strh r0, [r1] - ldrh r0, [r1, 0x2] - add r0, r9 - strh r0, [r1, 0x2] - b _080595E2 - .align 2, 0 -_08059570: .4byte gUnknown_2036E18 -_08059574: .4byte gSaveBlock1Ptr -_08059578: - bl sub_80590D8 - ldr r1, _080595F8 @ =gSaveBlock1Ptr - ldr r0, [r1] - movs r2, 0 - ldrsh r5, [r0, r2] - movs r1, 0x2 - ldrsh r6, [r0, r1] - lsls r2, r7, 24 - lsrs r2, 24 - mov r8, r2 - mov r0, r8 - adds r1, r5, 0 - adds r2, r6, 0 - bl sub_8059600 - adds r4, r0, 0 - adds r1, r7, 0 - mov r2, r10 - mov r3, r9 - bl sub_80594AC - ldrb r0, [r4, 0x8] - ldrb r1, [r4, 0x9] - bl sub_8055864 - ldr r1, _080595FC @ =gUnknown_2036E18 - ldrb r0, [r1] - movs r1, 0x1 - orrs r0, r1 - ldr r2, _080595FC @ =gUnknown_2036E18 - strb r0, [r2] - ldr r0, _080595F8 @ =gSaveBlock1Ptr - ldr r1, [r0] - movs r2, 0 - ldrsh r0, [r1, r2] - subs r5, r0 - ldr r0, _080595FC @ =gUnknown_2036E18 - str r5, [r0, 0x4] - movs r2, 0x2 - ldrsh r0, [r1, r2] - subs r6, r0 - ldr r0, _080595FC @ =gUnknown_2036E18 - str r6, [r0, 0x8] - ldrh r0, [r1] - add r0, r10 - strh r0, [r1] - ldrh r0, [r1, 0x2] - add r0, r9 - strh r0, [r1, 0x2] - mov r0, r8 - bl sub_8059250 -_080595E2: - ldr r0, _080595FC @ =gUnknown_2036E18 - ldrb r0, [r0] - lsls r0, 31 - lsrs r0, 31 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080595F8: .4byte gSaveBlock1Ptr -_080595FC: .4byte gUnknown_2036E18 - thumb_func_end CameraMove - - thumb_func_start sub_8059600 -sub_8059600: @ 8059600 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - mov r9, r1 - mov r8, r2 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, _0805963C @ =gMapHeader - ldr r0, [r0, 0xC] - ldr r7, [r0] - ldr r4, [r0, 0x4] - movs r5, 0 - cmp r5, r7 - bge _08059648 -_0805961E: - ldrb r0, [r4] - cmp r0, r6 - bne _08059640 - adds r0, r6, 0 - mov r1, r9 - mov r2, r8 - adds r3, r4, 0 - bl sub_8059658 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08059640 - adds r0, r4, 0 - b _0805964A - .align 2, 0 -_0805963C: .4byte gMapHeader -_08059640: - adds r5, 0x1 - adds r4, 0xC - cmp r5, r7 - blt _0805961E -_08059648: - movs r0, 0 -_0805964A: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8059600 - - thumb_func_start sub_8059658 -sub_8059658: @ 8059658 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r7, r1, 0 - mov r8, r2 - adds r5, r3, 0 - lsls r0, 24 - lsrs r4, r0, 24 - adds r6, r4, 0 - adds r0, r5, 0 - bl mapconnection_get_mapheader - adds r2, r0, 0 - cmp r4, 0x1 - blt _080596B0 - cmp r4, 0x2 - bgt _08059690 - ldr r0, _0805968C @ =gMapHeader - ldr r0, [r0] - ldr r1, [r0] - ldr r0, [r2] - ldr r2, [r0] - ldr r3, [r5, 0x4] - adds r0, r7, 0 - b _080596A2 - .align 2, 0 -_0805968C: .4byte gMapHeader -_08059690: - cmp r6, 0x4 - bgt _080596B0 - ldr r0, _080596AC @ =gMapHeader - ldr r0, [r0] - ldr r1, [r0, 0x4] - ldr r0, [r2] - ldr r2, [r0, 0x4] - ldr r3, [r5, 0x4] - mov r0, r8 -_080596A2: - bl sub_80596BC - lsls r0, 24 - lsrs r0, 24 - b _080596B2 - .align 2, 0 -_080596AC: .4byte gMapHeader -_080596B0: - movs r0, 0 -_080596B2: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8059658 - - thumb_func_start sub_80596BC -sub_80596BC: @ 80596BC - push {r4,lr} - adds r4, r0, 0 - adds r0, r2, 0 - adds r2, r3, 0 - cmp r3, 0 - bge _080596CA - movs r3, 0 -_080596CA: - adds r2, r0, r2 - cmp r2, r1 - bge _080596D2 - adds r1, r2, 0 -_080596D2: - cmp r3, r4 - bgt _080596DE - cmp r4, r1 - bgt _080596DE - movs r0, 0x1 - b _080596E0 -_080596DE: - movs r0, 0 -_080596E0: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80596BC - - thumb_func_start sub_80596E8 -sub_80596E8: @ 80596E8 - push {lr} - cmp r0, 0 - blt _080596F6 - cmp r0, r1 - bge _080596F6 - movs r0, 0x1 - b _080596F8 -_080596F6: - movs r0, 0 -_080596F8: - pop {r1} - bx r1 - thumb_func_end sub_80596E8 - - thumb_func_start sub_80596FC -sub_80596FC: @ 80596FC - push {r4-r6,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r6, r2, 0 - bl mapconnection_get_mapheader - adds r1, r0, 0 - ldrb r0, [r4] - cmp r0, 0x1 - blt _08059734 - cmp r0, 0x2 - bgt _08059722 - ldr r0, [r4, 0x4] - subs r0, r5, r0 - ldr r1, [r1] - ldr r1, [r1] - bl sub_80596E8 - b _08059736 -_08059722: - cmp r0, 0x4 - bgt _08059734 - ldr r0, [r4, 0x4] - subs r0, r6, r0 - ldr r1, [r1] - ldr r1, [r1, 0x4] - bl sub_80596E8 - b _08059736 -_08059734: - movs r0, 0 -_08059736: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80596FC - - thumb_func_start sub_805973C -sub_805973C: @ 805973C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - lsls r1, 16 - lsrs r1, 16 - ldr r2, _0805975C @ =gMapHeader - ldr r0, [r2, 0xC] - cmp r0, 0 - bne _08059764 - b _080597DA - .align 2, 0 -_0805975C: .4byte gMapHeader -_08059760: - adds r0, r4, 0 - b _080597DC -_08059764: - ldr r7, [r0] - ldr r4, [r0, 0x4] - movs r6, 0 - cmp r6, r7 - bge _080597DA - lsls r0, r1, 16 - asrs r5, r0, 16 - mov r9, r2 - mov r1, r8 - lsls r0, r1, 16 - asrs r0, 16 - mov r10, r0 -_0805977C: - ldrb r1, [r4] - adds r3, r1, 0 - subs r0, r1, 0x5 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bls _080597D2 - cmp r1, 0x2 - bne _08059792 - cmp r5, 0x6 - bgt _080597D2 -_08059792: - cmp r1, 0x1 - bne _080597A2 - mov r2, r9 - ldr r0, [r2] - ldr r0, [r0, 0x4] - adds r0, 0x7 - cmp r5, r0 - blt _080597D2 -_080597A2: - mov r0, r8 - lsls r2, r0, 16 - cmp r1, 0x3 - bne _080597B0 - mov r1, r10 - cmp r1, 0x6 - bgt _080597D2 -_080597B0: - cmp r3, 0x4 - bne _080597C2 - asrs r1, r2, 16 - mov r3, r9 - ldr r0, [r3] - ldr r0, [r0] - adds r0, 0x7 - cmp r1, r0 - blt _080597D2 -_080597C2: - asrs r1, r2, 16 - subs r1, 0x7 - adds r0, r4, 0 - subs r2, r5, 0x7 - bl sub_80596FC - cmp r0, 0x1 - beq _08059760 -_080597D2: - adds r6, 0x1 - adds r4, 0xC - cmp r6, r7 - blt _0805977C -_080597DA: - movs r0, 0 -_080597DC: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_805973C - - thumb_func_start sub_80597EC -sub_80597EC: @ 80597EC - lsls r0, 16 - lsrs r0, 16 - lsls r1, 16 - lsrs r1, 16 - ldr r2, _08059804 @ =gSaveBlock1Ptr - ldr r2, [r2] - subs r0, 0x7 - strh r0, [r2] - subs r1, 0x7 - strh r1, [r2, 0x2] - bx lr - .align 2, 0 -_08059804: .4byte gSaveBlock1Ptr - thumb_func_end sub_80597EC - - thumb_func_start sav1_camera_get_focus_coords -sav1_camera_get_focus_coords: @ 8059808 - ldr r2, _0805981C @ =gSaveBlock1Ptr - ldr r3, [r2] - ldrh r2, [r3] - adds r2, 0x7 - strh r2, [r0] - ldrh r0, [r3, 0x2] - adds r0, 0x7 - strh r0, [r1] - bx lr - .align 2, 0 -_0805981C: .4byte gSaveBlock1Ptr - thumb_func_end sav1_camera_get_focus_coords - - thumb_func_start SetCameraCoords -SetCameraCoords: @ 8059820 - ldr r2, _0805982C @ =gSaveBlock1Ptr - ldr r2, [r2] - strh r0, [r2] - strh r1, [r2, 0x2] - bx lr - .align 2, 0 -_0805982C: .4byte gSaveBlock1Ptr - thumb_func_end SetCameraCoords - - thumb_func_start GetCameraCoords -GetCameraCoords: @ 8059830 - ldr r2, _08059840 @ =gSaveBlock1Ptr - ldr r3, [r2] - ldrh r2, [r3] - strh r2, [r0] - ldrh r0, [r3, 0x2] - strh r0, [r1] - bx lr - .align 2, 0 -_08059840: .4byte gSaveBlock1Ptr - thumb_func_end GetCameraCoords - - thumb_func_start copy_tileset_patterns_to_vram -copy_tileset_patterns_to_vram: @ 8059844 - push {r4-r7,lr} - sub sp, 0x4 - adds r3, r0, 0 - lsls r1, 16 - lsrs r4, r1, 16 - adds r6, r4, 0 - lsls r2, 16 - lsrs r5, r2, 16 - adds r7, r5, 0 - cmp r3, 0 - beq _08059880 - ldrb r0, [r3] - cmp r0, 0 - bne _08059870 - ldr r1, [r3, 0x4] - lsls r2, r4, 21 - lsrs r2, 16 - movs r0, 0x2 - adds r3, r5, 0 - bl LoadBgTiles - b _08059880 -_08059870: - ldr r1, [r3, 0x4] - lsls r2, r6, 5 - movs r0, 0 - str r0, [sp] - movs r0, 0x2 - adds r3, r7, 0 - bl sub_80F68F0 -_08059880: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end copy_tileset_patterns_to_vram - - thumb_func_start copy_tileset_patterns_to_vram2 -copy_tileset_patterns_to_vram2: @ 8059888 - push {r4-r7,lr} - sub sp, 0x4 - adds r3, r0, 0 - lsls r1, 16 - lsrs r4, r1, 16 - adds r6, r4, 0 - lsls r2, 16 - lsrs r5, r2, 16 - adds r7, r5, 0 - cmp r3, 0 - beq _080598C4 - ldrb r0, [r3] - cmp r0, 0 - bne _080598B4 - ldr r1, [r3, 0x4] - lsls r2, r4, 21 - lsrs r2, 16 - movs r0, 0x2 - adds r3, r5, 0 - bl LoadBgTiles - b _080598C4 -_080598B4: - ldr r1, [r3, 0x4] - lsls r2, r6, 5 - movs r0, 0 - str r0, [sp] - movs r0, 0x2 - adds r3, r7, 0 - bl sub_80F69E8 -_080598C4: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end copy_tileset_patterns_to_vram2 - - thumb_func_start sub_80598CC -sub_80598CC: @ 80598CC - push {r4,r5,lr} - lsls r0, 16 - lsrs r4, r0, 16 - lsls r1, 16 - lsrs r5, r1, 16 - ldr r0, _080598EC @ =gUnknown_2036E28 - ldrb r0, [r0] - cmp r0, 0x1 - beq _080598F0 - cmp r0, 0x1 - ble _0805993A - cmp r0, 0x2 - beq _08059904 - cmp r0, 0x3 - beq _08059918 - b _0805993A - .align 2, 0 -_080598EC: .4byte gUnknown_2036E28 -_080598F0: - lsls r4, 1 - ldr r0, _08059900 @ =gPlttBufferUnfaded - adds r0, r4, r0 - adds r1, r5, 0 - bl TintPalette_GrayScale - b _0805992C - .align 2, 0 -_08059900: .4byte gPlttBufferUnfaded -_08059904: - lsls r4, 1 - ldr r0, _08059914 @ =gPlttBufferUnfaded - adds r0, r4, r0 - adds r1, r5, 0 - bl TintPalette_SepiaTone - b _0805992C - .align 2, 0 -_08059914: .4byte gPlttBufferUnfaded -_08059918: - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8111F38 - lsls r4, 1 - ldr r0, _08059940 @ =gPlttBufferUnfaded - adds r0, r4, r0 - adds r1, r5, 0 - bl TintPalette_GrayScale -_0805992C: - ldr r0, _08059940 @ =gPlttBufferUnfaded - adds r0, r4, r0 - ldr r1, _08059944 @ =gPlttBufferFaded - adds r1, r4, r1 - adds r2, r5, 0 - bl CpuSet -_0805993A: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08059940: .4byte gPlttBufferUnfaded -_08059944: .4byte gPlttBufferFaded - thumb_func_end sub_80598CC - - thumb_func_start sub_8059948 -sub_8059948: @ 8059948 - push {r4-r6,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 24 - lsrs r6, r1, 24 - ldr r0, _08059968 @ =gUnknown_2036E28 - ldrb r0, [r0] - cmp r0, 0x1 - beq _0805996C - cmp r0, 0x1 - ble _080599B8 - cmp r0, 0x2 - beq _08059980 - cmp r0, 0x3 - beq _08059994 - b _080599B8 - .align 2, 0 -_08059968: .4byte gUnknown_2036E28 -_0805996C: - lsls r4, 5 - ldr r0, _0805997C @ =gPlttBufferUnfaded - adds r0, r4, r0 - lsls r1, r6, 4 - bl TintPalette_GrayScale - b _080599AA - .align 2, 0 -_0805997C: .4byte gPlttBufferUnfaded -_08059980: - lsls r4, 5 - ldr r0, _08059990 @ =gPlttBufferUnfaded - adds r0, r4, r0 - lsls r1, r6, 4 - bl TintPalette_SepiaTone - b _080599AA - .align 2, 0 -_08059990: .4byte gPlttBufferUnfaded -_08059994: - lsls r0, r4, 4 - lsls r5, r6, 4 - adds r1, r5, 0 - bl sub_8111F38 - lsls r4, 5 - ldr r0, _080599C0 @ =gPlttBufferUnfaded - adds r0, r4, r0 - adds r1, r5, 0 - bl TintPalette_GrayScale -_080599AA: - ldr r0, _080599C0 @ =gPlttBufferUnfaded - adds r0, r4, r0 - ldr r1, _080599C4 @ =gPlttBufferFaded - adds r1, r4, r1 - lsls r2, r6, 3 - bl CpuFastSet -_080599B8: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080599C0: .4byte gPlttBufferUnfaded -_080599C4: .4byte gPlttBufferFaded - thumb_func_end sub_8059948 - - thumb_func_start apply_map_tileset_palette -apply_map_tileset_palette: @ 80599C8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - adds r4, r0, 0 - lsls r1, 16 - lsrs r5, r1, 16 - mov r8, r5 - lsls r6, r2, 16 - lsrs r7, r6, 16 - adds r2, r7, 0 - movs r1, 0 - mov r0, sp - strh r1, [r0] - cmp r4, 0 - beq _08059A46 - ldrb r0, [r4, 0x1] - cmp r0, 0 - bne _08059A1C - mov r0, sp - adds r1, r5, 0 - movs r2, 0x2 - bl LoadPalette - ldr r0, [r4, 0x8] - adds r0, 0x2 - adds r5, 0x1 - lsls r5, 16 - lsrs r5, 16 - subs r4, r7, 0x2 - lsls r2, r4, 16 - lsrs r2, 16 - adds r1, r5, 0 - bl LoadPalette - lsls r4, 15 - lsrs r4, 16 - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80598CC - b _08059A46 -_08059A1C: - cmp r0, 0x1 - bne _08059A36 - ldr r0, [r4, 0x8] - adds r0, 0xE0 - adds r1, r5, 0 - adds r2, r7, 0 - bl LoadPalette - lsrs r1, r6, 17 - adds r0, r5, 0 - bl sub_80598CC - b _08059A46 -_08059A36: - ldr r0, [r4, 0x8] - mov r1, r8 - bl LoadCompressedPalette - lsrs r1, r6, 17 - mov r0, r8 - bl sub_80598CC -_08059A46: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end apply_map_tileset_palette - - thumb_func_start sub_8059A54 -sub_8059A54: @ 8059A54 - push {lr} - ldr r0, [r0, 0x10] - movs r1, 0xA0 - lsls r1, 2 - movs r2, 0 - bl copy_tileset_patterns_to_vram - pop {r0} - bx r0 - thumb_func_end sub_8059A54 - - thumb_func_start sub_8059A68 -sub_8059A68: @ 8059A68 - push {lr} - ldr r0, [r0, 0x14] - movs r1, 0xC0 - lsls r1, 1 - movs r2, 0xA0 - lsls r2, 2 - bl copy_tileset_patterns_to_vram - pop {r0} - bx r0 - thumb_func_end sub_8059A68 - - thumb_func_start copy_map_tileset2_to_vram_2 -copy_map_tileset2_to_vram_2: @ 8059A7C - push {lr} - ldr r0, [r0, 0x14] - movs r1, 0xC0 - lsls r1, 1 - movs r2, 0xA0 - lsls r2, 2 - bl copy_tileset_patterns_to_vram2 - pop {r0} - bx r0 - thumb_func_end copy_map_tileset2_to_vram_2 - - thumb_func_start sub_8059A90 -sub_8059A90: @ 8059A90 - push {lr} - ldr r0, [r0, 0x10] - movs r1, 0 - movs r2, 0xE0 - bl apply_map_tileset_palette - pop {r0} - bx r0 - thumb_func_end sub_8059A90 - - thumb_func_start sub_8059AA0 -sub_8059AA0: @ 8059AA0 - push {lr} - ldr r0, [r0, 0x14] - movs r1, 0x70 - movs r2, 0xC0 - bl apply_map_tileset_palette - pop {r0} - bx r0 - thumb_func_end sub_8059AA0 - - thumb_func_start copy_map_tileset1_tileset2_to_vram -copy_map_tileset1_tileset2_to_vram: @ 8059AB0 - push {r4,r5,lr} - adds r5, r0, 0 - cmp r5, 0 - beq _08059AD2 - ldr r0, [r5, 0x10] - movs r4, 0xA0 - lsls r4, 2 - adds r1, r4, 0 - movs r2, 0 - bl copy_tileset_patterns_to_vram2 - ldr r0, [r5, 0x14] - movs r1, 0xC0 - lsls r1, 1 - adds r2, r4, 0 - bl copy_tileset_patterns_to_vram2 -_08059AD2: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end copy_map_tileset1_tileset2_to_vram - - thumb_func_start apply_map_tileset1_tileset2_palette -apply_map_tileset1_tileset2_palette: @ 8059AD8 - push {r4,lr} - adds r4, r0, 0 - cmp r4, 0 - beq _08059AEA - bl sub_8059A90 - adds r0, r4, 0 - bl sub_8059AA0 -_08059AEA: - pop {r4} - pop {r0} - bx r0 - thumb_func_end apply_map_tileset1_tileset2_palette - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/fldeff_cut.s b/asm/fldeff_cut.s index 2497c695d..ac5ab0a72 100644 --- a/asm/fldeff_cut.s +++ b/asm/fldeff_cut.s @@ -380,7 +380,7 @@ sub_8097B50: @ 8097B50 asrs r0, 16 lsrs r7, r1, 16 asrs r1, 16 - bl sub_8058E48 + bl MapGridGetMetatileIdAt lsls r0, 16 lsrs r2, r0, 16 ldr r1, _08097B84 @ =gUnknown_83D4100 diff --git a/asm/item_use.s b/asm/item_use.s index 0b6dacdd4..fce57bc88 100644 --- a/asm/item_use.s +++ b/asm/item_use.s @@ -544,7 +544,7 @@ _080A13D4: ldrsh r0, [r0, r1] movs r2, 0 ldrsh r1, [r4, r2] - bl sub_8058DC4 + bl MapGridIsImpassableAt lsls r0, 24 cmp r0, 0 beq _080A13D0 diff --git a/asm/overworld.s b/asm/overworld.s index 071cca7e6..679203034 100644 --- a/asm/overworld.s +++ b/asm/overworld.s @@ -1723,7 +1723,7 @@ sub_8055864: @ 8055864 ldr r0, [r4] bl copy_map_tileset2_to_vram_2 ldr r0, [r4] - bl sub_8059AA0 + bl apply_map_tileset2_palette movs r4, 0x7 _080558D4: lsls r0, r4, 24 @@ -4024,14 +4024,14 @@ _08056AEE: _08056AF4: ldr r0, _08056B00 @ =gMapHeader ldr r0, [r0] - bl sub_8059A54 + bl copy_map_tileset1_to_vram b _08056B62 .align 2, 0 _08056B00: .4byte gMapHeader _08056B04: ldr r0, _08056B10 @ =gMapHeader ldr r0, [r0] - bl sub_8059A68 + bl copy_map_tileset2_to_vram b _08056B62 .align 2, 0 _08056B10: .4byte gMapHeader @@ -4166,14 +4166,14 @@ _08056C2A: _08056C30: ldr r0, _08056C3C @ =gMapHeader ldr r0, [r0] - bl sub_8059A54 + bl copy_map_tileset1_to_vram b _08056CCA .align 2, 0 _08056C3C: .4byte gMapHeader _08056C40: ldr r0, _08056C4C @ =gMapHeader ldr r0, [r0] - bl sub_8059A68 + bl copy_map_tileset2_to_vram b _08056CCA .align 2, 0 _08056C4C: .4byte gMapHeader @@ -4355,14 +4355,14 @@ _08056DCA: _08056DD0: ldr r0, _08056DDC @ =gMapHeader ldr r0, [r0] - bl sub_8059A54 + bl copy_map_tileset1_to_vram b _08056E3E .align 2, 0 _08056DDC: .4byte gMapHeader _08056DE0: ldr r0, _08056DEC @ =gMapHeader ldr r0, [r0] - bl sub_8059A68 + bl copy_map_tileset2_to_vram b _08056E3E .align 2, 0 _08056DEC: .4byte gMapHeader @@ -4690,7 +4690,7 @@ mli4_mapscripts_and_other: @ 805709C adds r4, 0x2 mov r0, sp adds r1, r4, 0 - bl sav1_camera_get_focus_coords + bl GetCameraFocusCoords bl sub_8055A6C adds r5, r0, 0 mov r0, sp @@ -4792,7 +4792,7 @@ sub_8057178: @ 8057178 adds r4, 0x2 mov r0, sp adds r1, r4, 0 - bl sav1_camera_get_focus_coords + bl GetCameraFocusCoords mov r2, sp ldr r0, _080571A4 @ =gUnknown_300502C ldrb r1, [r0] @@ -4801,7 +4801,7 @@ sub_8057178: @ 8057178 lsls r0, 16 lsrs r0, 16 ldrh r1, [r4] - bl sub_80597EC + bl SetCameraFocusCoords add sp, 0x4 pop {r4} pop {r0} @@ -4820,7 +4820,7 @@ sub_80571A8: @ 80571A8 adds r4, 0x2 mov r0, sp adds r1, r4, 0 - bl sav1_camera_get_focus_coords + bl GetCameraFocusCoords mov r3, sp mov r2, sp ldr r0, _08057224 @ =gUnknown_300502C @@ -5066,14 +5066,14 @@ _080573C2: _080573C8: ldr r0, _080573D4 @ =gMapHeader ldr r0, [r0] - bl sub_8059A54 + bl copy_map_tileset1_to_vram b _08057412 .align 2, 0 _080573D4: .4byte gMapHeader _080573D8: ldr r0, _080573E4 @ =gMapHeader ldr r0, [r0] - bl sub_8059A68 + bl copy_map_tileset2_to_vram b _08057412 .align 2, 0 _080573E4: .4byte gMapHeader @@ -5415,14 +5415,14 @@ _080576CC: _080576D2: ldr r0, _080576DC @ =gMapHeader ldr r0, [r0] - bl sub_8059A54 + bl copy_map_tileset1_to_vram b _0805772A .align 2, 0 _080576DC: .4byte gMapHeader _080576E0: ldr r0, _080576EC @ =gMapHeader ldr r0, [r0] - bl sub_8059A68 + bl copy_map_tileset2_to_vram b _0805772A .align 2, 0 _080576EC: .4byte gMapHeader @@ -6748,7 +6748,7 @@ _08058074: ldr r1, [r4, 0x8] str r0, [sp] str r1, [sp, 0x4] - ldr r3, _080580E4 @ =gUnknown_826D2D8 + ldr r3, _080580E4 @ =gDirectionToVectors ldrb r0, [r4, 0x3] lsls r0, 3 adds r0, r3 @@ -6801,7 +6801,7 @@ _080580E0: ldr r0, _080580F8 @ =gUnknown_81BB9A3 b _08058122 .align 2, 0 -_080580E4: .4byte gUnknown_826D2D8 +_080580E4: .4byte gDirectionToVectors _080580E8: .4byte 0xffff0000 _080580EC: .4byte 0x0000ffff _080580F0: .4byte 0xffffff00 @@ -7829,7 +7829,7 @@ _08058854: bls _08058810 asrs r0, r3, 16 asrs r1, r5, 16 - bl sub_8058DC4 + bl MapGridIsImpassableAt lsls r0, 24 lsrs r0, 24 _0805886A: diff --git a/asm/shop.s b/asm/shop.s index 25a2311ce..aed90ff85 100644 --- a/asm/shop.s +++ b/asm/shop.s @@ -1632,7 +1632,7 @@ _0809B7B2: movs r3, 0 ldrsh r1, [r2, r3] adds r1, r7 - bl sub_8058E48 + bl MapGridGetMetatileIdAt lsls r0, 16 lsrs r5, r0, 16 mov r0, sp @@ -1645,7 +1645,7 @@ _0809B7B2: adds r1, r7, r1 lsls r1, 16 asrs r1, 16 - bl sub_8058F8C + bl MapGridGetMetatileLayerTypeAt lsls r0, 24 lsrs r3, r0, 24 ldr r0, _0809B808 @ =0x0000027f @@ -2940,7 +2940,7 @@ _0809C238: adds r5, r1, r0 adds r0, r5, 0 adds r1, r6, 0 - bl sub_8058E48 + bl MapGridGetMetatileIdAt movs r2, 0 ldrsh r1, [r7, r2] lsls r0, 16 @@ -3006,7 +3006,7 @@ _0809C2B8: adds r5, r1, r0 adds r0, r5, 0 adds r1, r6, 0 - bl sub_8058E48 + bl MapGridGetMetatileIdAt movs r1, 0x2 subs r1, r7 lsls r1, 1 diff --git a/asm/start_menu.s b/asm/start_menu.s index 4a58b11ad..cfd970001 100644 --- a/asm/start_menu.s +++ b/asm/start_menu.s @@ -1109,7 +1109,7 @@ _0806F61E: thumb_func_start sub_806F624 sub_806F624: @ 806F624 push {lr} - bl sub_80590D8 + bl save_serialize_map ldr r1, _0806F63C @ =gUnknown_3000FA4 ldr r0, _0806F640 @ =sub_806F7A8 str r0, [r1] diff --git a/asm/tileset_anims.s b/asm/tileset_anims.s index 37280ab70..693962d39 100644 --- a/asm/tileset_anims.s +++ b/asm/tileset_anims.s @@ -132,11 +132,11 @@ sub_806FFB0: @ 806FFB0 sub_806FFBC: @ 806FFBC push {r4,lr} bl ResetTilesetAnimBuffer - ldr r2, _08070014 @ =gUnknown_3000FAE + ldr r2, _08070014 @ =sPrimaryTilesetCBCounter ldrh r0, [r2] adds r0, 0x1 strh r0, [r2] - ldr r1, _08070018 @ =gUnknown_3000FB0 + ldr r1, _08070018 @ =sPrimaryTilesetCBBufferSize lsls r0, 16 lsrs r0, 16 ldrh r1, [r1] @@ -145,11 +145,11 @@ sub_806FFBC: @ 806FFBC movs r0, 0 strh r0, [r2] _0806FFDA: - ldr r4, _0807001C @ =gUnknown_3000FB2 + ldr r4, _0807001C @ =sSecondaryTilesetCBCounter ldrh r0, [r4] adds r0, 0x1 strh r0, [r4] - ldr r1, _08070020 @ =gUnknown_3000FB4 + ldr r1, _08070020 @ =sSecondaryTilesetCBBufferSize lsls r0, 16 lsrs r0, 16 ldrh r1, [r1] @@ -158,14 +158,14 @@ _0806FFDA: movs r0, 0 strh r0, [r4] _0806FFF2: - ldr r0, _08070024 @ =gUnknown_3000FB8 + ldr r0, _08070024 @ =sPrimaryTilesetCB ldr r1, [r0] cmp r1, 0 beq _08070000 ldrh r0, [r2] bl _call_via_r1 _08070000: - ldr r0, _08070028 @ =gUnknown_3000FBC + ldr r0, _08070028 @ =sSecondaryTilesetCB ldr r1, [r0] cmp r1, 0 beq _0807000E @@ -176,23 +176,23 @@ _0807000E: pop {r0} bx r0 .align 2, 0 -_08070014: .4byte gUnknown_3000FAE -_08070018: .4byte gUnknown_3000FB0 -_0807001C: .4byte gUnknown_3000FB2 -_08070020: .4byte gUnknown_3000FB4 -_08070024: .4byte gUnknown_3000FB8 -_08070028: .4byte gUnknown_3000FBC +_08070014: .4byte sPrimaryTilesetCBCounter +_08070018: .4byte sPrimaryTilesetCBBufferSize +_0807001C: .4byte sSecondaryTilesetCBCounter +_08070020: .4byte sSecondaryTilesetCBBufferSize +_08070024: .4byte sPrimaryTilesetCB +_08070028: .4byte sSecondaryTilesetCB thumb_func_end sub_806FFBC thumb_func_start cur_mapheader_run_tileset1_func cur_mapheader_run_tileset1_func: @ 807002C push {lr} - ldr r0, _08070058 @ =gUnknown_3000FAE + ldr r0, _08070058 @ =sPrimaryTilesetCBCounter movs r1, 0 strh r1, [r0] - ldr r0, _0807005C @ =gUnknown_3000FB0 + ldr r0, _0807005C @ =sPrimaryTilesetCBBufferSize strh r1, [r0] - ldr r1, _08070060 @ =gUnknown_3000FB8 + ldr r1, _08070060 @ =sPrimaryTilesetCB movs r0, 0 str r0, [r1] ldr r0, _08070064 @ =gMapHeader @@ -208,21 +208,21 @@ _08070052: pop {r0} bx r0 .align 2, 0 -_08070058: .4byte gUnknown_3000FAE -_0807005C: .4byte gUnknown_3000FB0 -_08070060: .4byte gUnknown_3000FB8 +_08070058: .4byte sPrimaryTilesetCBCounter +_0807005C: .4byte sPrimaryTilesetCBBufferSize +_08070060: .4byte sPrimaryTilesetCB _08070064: .4byte gMapHeader thumb_func_end cur_mapheader_run_tileset1_func thumb_func_start cur_mapheader_run_tileset2_func cur_mapheader_run_tileset2_func: @ 8070068 push {lr} - ldr r0, _08070094 @ =gUnknown_3000FB2 + ldr r0, _08070094 @ =sSecondaryTilesetCBCounter movs r1, 0 strh r1, [r0] - ldr r0, _08070098 @ =gUnknown_3000FB4 + ldr r0, _08070098 @ =sSecondaryTilesetCBBufferSize strh r1, [r0] - ldr r1, _0807009C @ =gUnknown_3000FBC + ldr r1, _0807009C @ =sSecondaryTilesetCB movs r0, 0 str r0, [r1] ldr r0, _080700A0 @ =gMapHeader @@ -238,9 +238,9 @@ _0807008E: pop {r0} bx r0 .align 2, 0 -_08070094: .4byte gUnknown_3000FB2 -_08070098: .4byte gUnknown_3000FB4 -_0807009C: .4byte gUnknown_3000FBC +_08070094: .4byte sSecondaryTilesetCBCounter +_08070098: .4byte sSecondaryTilesetCBBufferSize +_0807009C: .4byte sSecondaryTilesetCB _080700A0: .4byte gMapHeader thumb_func_end cur_mapheader_run_tileset2_func @@ -342,22 +342,22 @@ _0807014C: thumb_func_start sub_8070154 sub_8070154: @ 8070154 - ldr r1, _0807016C @ =gUnknown_3000FAE + ldr r1, _0807016C @ =sPrimaryTilesetCBCounter movs r0, 0 strh r0, [r1] - ldr r1, _08070170 @ =gUnknown_3000FB0 + ldr r1, _08070170 @ =sPrimaryTilesetCBBufferSize movs r2, 0xA0 lsls r2, 2 adds r0, r2, 0 strh r0, [r1] - ldr r1, _08070174 @ =gUnknown_3000FB8 + ldr r1, _08070174 @ =sPrimaryTilesetCB ldr r0, _08070178 @ =sub_8070120 str r0, [r1] bx lr .align 2, 0 -_0807016C: .4byte gUnknown_3000FAE -_08070170: .4byte gUnknown_3000FB0 -_08070174: .4byte gUnknown_3000FB8 +_0807016C: .4byte sPrimaryTilesetCBCounter +_08070170: .4byte sPrimaryTilesetCBBufferSize +_08070174: .4byte sPrimaryTilesetCB _08070178: .4byte sub_8070120 thumb_func_end sub_8070154 @@ -410,20 +410,20 @@ _080701D0: thumb_func_start sub_80701D8 sub_80701D8: @ 80701D8 - ldr r1, _080701EC @ =gUnknown_3000FB2 + ldr r1, _080701EC @ =sSecondaryTilesetCBCounter movs r0, 0 strh r0, [r1] - ldr r1, _080701F0 @ =gUnknown_3000FB4 + ldr r1, _080701F0 @ =sSecondaryTilesetCBBufferSize movs r0, 0x78 strh r0, [r1] - ldr r1, _080701F4 @ =gUnknown_3000FBC + ldr r1, _080701F4 @ =sSecondaryTilesetCB ldr r0, _080701F8 @ =sub_80701AC str r0, [r1] bx lr .align 2, 0 -_080701EC: .4byte gUnknown_3000FB2 -_080701F0: .4byte gUnknown_3000FB4 -_080701F4: .4byte gUnknown_3000FBC +_080701EC: .4byte sSecondaryTilesetCBCounter +_080701F0: .4byte sSecondaryTilesetCBBufferSize +_080701F4: .4byte sSecondaryTilesetCB _080701F8: .4byte sub_80701AC thumb_func_end sub_80701D8 @@ -474,20 +474,20 @@ _08070248: thumb_func_start sub_8070250 sub_8070250: @ 8070250 - ldr r1, _08070264 @ =gUnknown_3000FB2 + ldr r1, _08070264 @ =sSecondaryTilesetCBCounter movs r0, 0 strh r0, [r1] - ldr r1, _08070268 @ =gUnknown_3000FB4 + ldr r1, _08070268 @ =sSecondaryTilesetCBBufferSize movs r0, 0xA0 strh r0, [r1] - ldr r1, _0807026C @ =gUnknown_3000FBC + ldr r1, _0807026C @ =sSecondaryTilesetCB ldr r0, _08070270 @ =sub_8070224 str r0, [r1] bx lr .align 2, 0 -_08070264: .4byte gUnknown_3000FB2 -_08070268: .4byte gUnknown_3000FB4 -_0807026C: .4byte gUnknown_3000FBC +_08070264: .4byte sSecondaryTilesetCBCounter +_08070268: .4byte sSecondaryTilesetCBBufferSize +_0807026C: .4byte sSecondaryTilesetCB _08070270: .4byte sub_8070224 thumb_func_end sub_8070250 @@ -531,22 +531,22 @@ _080702B0: thumb_func_start sub_80702B4 sub_80702B4: @ 80702B4 - ldr r1, _080702CC @ =gUnknown_3000FB2 + ldr r1, _080702CC @ =sSecondaryTilesetCBCounter movs r0, 0 strh r0, [r1] - ldr r1, _080702D0 @ =gUnknown_3000FB4 + ldr r1, _080702D0 @ =sSecondaryTilesetCBBufferSize movs r2, 0x80 lsls r2, 1 adds r0, r2, 0 strh r0, [r1] - ldr r1, _080702D4 @ =gUnknown_3000FBC + ldr r1, _080702D4 @ =sSecondaryTilesetCB ldr r0, _080702D8 @ =sub_807029C str r0, [r1] bx lr .align 2, 0 -_080702CC: .4byte gUnknown_3000FB2 -_080702D0: .4byte gUnknown_3000FB4 -_080702D4: .4byte gUnknown_3000FBC +_080702CC: .4byte sSecondaryTilesetCBCounter +_080702D0: .4byte sSecondaryTilesetCBBufferSize +_080702D4: .4byte sSecondaryTilesetCB _080702D8: .4byte sub_807029C thumb_func_end sub_80702B4 @@ -589,20 +589,20 @@ _08070318: thumb_func_start sub_807031C sub_807031C: @ 807031C - ldr r1, _08070330 @ =gUnknown_3000FB2 + ldr r1, _08070330 @ =sSecondaryTilesetCBCounter movs r0, 0 strh r0, [r1] - ldr r1, _08070334 @ =gUnknown_3000FB4 + ldr r1, _08070334 @ =sSecondaryTilesetCBBufferSize movs r0, 0xF0 strh r0, [r1] - ldr r1, _08070338 @ =gUnknown_3000FBC + ldr r1, _08070338 @ =sSecondaryTilesetCB ldr r0, _0807033C @ =sub_8070304 str r0, [r1] bx lr .align 2, 0 -_08070330: .4byte gUnknown_3000FB2 -_08070334: .4byte gUnknown_3000FB4 -_08070338: .4byte gUnknown_3000FBC +_08070330: .4byte sSecondaryTilesetCBCounter +_08070334: .4byte sSecondaryTilesetCBBufferSize +_08070338: .4byte sSecondaryTilesetCB _0807033C: .4byte sub_8070304 thumb_func_end sub_807031C @@ -645,22 +645,22 @@ _0807037C: thumb_func_start sub_8070380 sub_8070380: @ 8070380 - ldr r1, _08070398 @ =gUnknown_3000FB2 + ldr r1, _08070398 @ =sSecondaryTilesetCBCounter movs r0, 0 strh r0, [r1] - ldr r1, _0807039C @ =gUnknown_3000FB4 + ldr r1, _0807039C @ =sSecondaryTilesetCBBufferSize movs r2, 0x80 lsls r2, 1 adds r0, r2, 0 strh r0, [r1] - ldr r1, _080703A0 @ =gUnknown_3000FBC + ldr r1, _080703A0 @ =sSecondaryTilesetCB ldr r0, _080703A4 @ =sub_8070368 str r0, [r1] bx lr .align 2, 0 -_08070398: .4byte gUnknown_3000FB2 -_0807039C: .4byte gUnknown_3000FB4 -_080703A0: .4byte gUnknown_3000FBC +_08070398: .4byte sSecondaryTilesetCBCounter +_0807039C: .4byte sSecondaryTilesetCBBufferSize +_080703A0: .4byte sSecondaryTilesetCB _080703A4: .4byte sub_8070368 thumb_func_end sub_8070380 diff --git a/common_syms/fieldmap.txt b/common_syms/fieldmap.txt new file mode 100644 index 000000000..b593fc3f2 --- /dev/null +++ b/common_syms/fieldmap.txt @@ -0,0 +1 @@ +VMap
\ No newline at end of file diff --git a/data/data.s b/data/data.s index b02f4b451..dd692cb33 100644 --- a/data/data.s +++ b/data/data.s @@ -908,7 +908,7 @@ gUnknown_826D29E:: @ 826D29E gUnknown_826D2B0:: @ 826D2B0 .incbin "baserom.gba", 0x26D2B0, 0x28 -gUnknown_826D2D8:: @ 826D2D8 +gDirectionToVectors:: @ 826D2D8 .incbin "baserom.gba", 0x26D2D8, 0x48 gUnknown_826D320:: @ 826D320 @@ -933,23 +933,3 @@ gUnknown_834EB8C:: @ 834EB8C .incbin "baserom.gba", 0x34EB8C, 0x5FC .include "data/maps/groups.inc" - -gUnknown_8352754:: @ 8352754 - .incbin "baserom.gba", 0x352754, 0x798 - -gUnknown_8352EEC:: @ 8352EEC - .incbin "baserom.gba", 0x352EEC, 0x4 - -gUnknown_8352EF0:: @ 8352EF0 - .incbin "baserom.gba", 0x352EF0, 0x20 - -gUnknown_8352F10:: @ 8352F10 - .incbin "baserom.gba", 0x352F10, 0x8 - - .align 2 -gUnknown_8352F18:: @ 8352F18 - .asciz "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/fieldmap.c" - - .align 2 -gUnknown_8352F4C:: @ 8352F4C - .asciz "VMap.Xsize * VMap.Ysize <= VIRTUAL_MAP_SIZE" diff --git a/data/fieldmap.s b/data/fieldmap.s new file mode 100644 index 000000000..3b24a4f86 --- /dev/null +++ b/data/fieldmap.s @@ -0,0 +1,6 @@ + .include "asm/macros.inc" + + .section .rodata + +gUnknown_8352754:: @ 8352754 + .incbin "baserom.gba", 0x352754, 0x798 diff --git a/include/fieldmap.h b/include/fieldmap.h index c5abdb2e1..537626edc 100644 --- a/include/fieldmap.h +++ b/include/fieldmap.h @@ -3,19 +3,24 @@ #include "global.h" -extern struct MapCoords { - int width; - int height; -} gUnknown_03005DC0; +#define NUM_TILES_IN_PRIMARY 640 +#define NUM_TILES_TOTAL 1024 +#define NUM_METATILES_IN_PRIMARY 640 +#define NUM_METATILES_TOTAL 1024 +#define NUM_PALS_IN_PRIMARY 7 +#define NUM_PALS_TOTAL 13 +#define VIRTUAL_MAP_SIZE 0x2800 + +extern struct BackupMapData VMap; u32 MapGridGetMetatileIdAt(int, int); u32 MapGridGetMetatileBehaviorAt(int, int); void MapGridSetMetatileIdAt(int, int, u16); void MapGridSetMetatileEntryAt(int, int, u16); void GetCameraCoords(u16*, u16*); -bool8 MapGridIsImpassableAt(s16, s16); -s32 GetMapBorderIdAt(s16, s16); -bool32 CanCameraMoveInDirection(u8); -u16 GetBehaviorByMetatileId(u16 metatileId); +bool8 MapGridIsImpassableAt(s32, s32); +s32 GetMapBorderIdAt(s32, s32); +bool32 CanCameraMoveInDirection(s32); +u32 GetBehaviorByMetatileIdAndMapData(struct MapData *mapData, u16 metatile, u8 attr); #endif //GUARD_FIELDMAP_H diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h index ed5054b7d..b602741a6 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -51,8 +51,8 @@ struct Tileset /*0x04*/ void *tiles; /*0x08*/ void *palettes; /*0x0c*/ void *metatiles; - /*0x10*/ void *metatileAttributes; /*0x14*/ TilesetCB callback; + /*0x10*/ void *metatileAttributes; }; struct MapData @@ -63,12 +63,14 @@ struct MapData /*0x0c*/ u16 *map; /*0x10*/ struct Tileset *primaryTileset; /*0x14*/ struct Tileset *secondaryTileset; + /*0x18*/ u8 unk18; + /*0x19*/ u8 unk19; }; struct BackupMapData { - s32 width; - s32 height; + s32 Xsize; + s32 Ysize; u16 *map; }; @@ -149,9 +151,9 @@ struct MapEvents struct MapConnection { /*0x00*/ u8 direction; - /*0x01*/ u32 offset; - /*0x05*/ u8 mapGroup; - /*0x06*/ u8 mapNum; + /*0x04*/ u32 offset; + /*0x08*/ u8 mapGroup; + /*0x09*/ u8 mapNum; }; struct MapConnections diff --git a/include/global.h b/include/global.h index f418ff757..26ce4a8cc 100644 --- a/include/global.h +++ b/include/global.h @@ -328,7 +328,8 @@ struct SaveBlock2 /*0x0AC*/ u8 filler_AC[0x3F4]; /*0x4A0*/ u32 unk_4A0[0x2F]; /*0x55c*/ struct UnkSaveBlock2Substruct_55C unk_55C; - /*0x574*/ u8 filler_574[0x524]; + /*0x574*/ u8 filler_574[0x324]; + /*0x898*/ u16 mapView[0x100]; /*0xA98*/ struct LinkBattleRecords linkBattleRecords; /*0xAF0*/ struct BerryCrush berryCrush; /*0xB00*/ u8 filler_B00[0x420]; diff --git a/include/menu.h b/include/menu.h index b932693f7..b5078df5e 100644 --- a/include/menu.h +++ b/include/menu.h @@ -37,5 +37,6 @@ void clear_scheduled_bg_copies_to_vram(void); void AddTextPrinterParametrized2(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, const struct TextColor *color, s8 speed, const u8 *str); void sub_8197B1C(u8 windowId, bool8 copyToVram, u16 a2, u16 a3); void sub_810F4D8(u8 windowId, bool32 someBool); +void *sub_80F68F0(u8 bgId, const void *src, u32 size, u16 offset, u8 mode); #endif // GUARD_MENU_H diff --git a/include/new_menu_helpers.h b/include/new_menu_helpers.h index ce8e8d697..32b46b552 100644 --- a/include/new_menu_helpers.h +++ b/include/new_menu_helpers.h @@ -22,5 +22,6 @@ void sub_80F6EE4(u8 windowId, bool8 transfer); void sub_80F7974(const u8 *); u8 GetStartMenuWindowId(void); void sub_80F7998(void); +void sub_80F69E8(u8 bgId, const void *src, u32 size, u16 offset, u8 mode); #endif // GUARD_NEW_MENU_HELPERS_H diff --git a/include/overworld.h b/include/overworld.h index fbea3a4d9..b32d9cf48 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -24,6 +24,8 @@ struct UCoords32 u32 x, y; }; +extern struct UCoords32 gDirectionToVectors[]; + extern struct LinkPlayerMapObject gLinkPlayerMapObjects[4]; extern MainCallback gFieldCallback; @@ -96,5 +98,6 @@ extern u8 gUnknown_2036E28; extern bool8 (* gUnknown_3005024)(void); void SetLastHealLocationWarp(u8 healLocaionId); +void sub_8055864(u8 mapGroup, u8 mapNum); #endif //GUARD_ROM4_H diff --git a/include/palette.h b/include/palette.h index 3af0d5d7b..31c8ffefe 100644 --- a/include/palette.h +++ b/include/palette.h @@ -70,6 +70,8 @@ void BeginHardwarePaletteFade(u8, u8, u8, u8, u8); void BlendPalettes(u32, u8, u16); void BlendPalettesUnfaded(u32, u8, u16); void sub_80716F8(const u16 *, u16 *, u16, u8); +void TintPalette_GrayScale(u16 *, u16); +void TintPalette_SepiaTone(u16 *, u16); extern struct PaletteFadeControl gPaletteFade; diff --git a/include/quest_log.h b/include/quest_log.h index 31220b86c..7f4bafada 100644 --- a/include/quest_log.h +++ b/include/quest_log.h @@ -24,6 +24,7 @@ void sub_8113550(u16, const u16 *); void sub_8115748(u16); u8 sub_8112CAC(void); bool8 sub_81119D4(void (*func)(void)); +void sub_8111F38(u16, u16); extern u8 gUnknown_203ADFA; diff --git a/ld_script.txt b/ld_script.txt index 5bfe7f28c..7d2adefe7 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -91,7 +91,7 @@ SECTIONS { asm/play_time.o(.text); asm/new_game.o(.text); asm/overworld.o(.text); - asm/fieldmap.o(.text); + src/fieldmap.o(.text); src/metatile_behavior.o(.text); asm/field_camera.o(.text); asm/field_door.o(.text); @@ -367,6 +367,8 @@ SECTIONS { src/bg_regs.o(.rodata); src/string_util.o(.rodata); data/data.o(.rodata); + data/fieldmap.o(.rodata); + src/fieldmap.o(.rodata); src/metatile_behavior.o(.rodata); data/metatile_behavior.o(.rodata); data/data_835B488.o(.rodata); diff --git a/src/fieldmap.c b/src/fieldmap.c new file mode 100644 index 000000000..be5e1d54a --- /dev/null +++ b/src/fieldmap.c @@ -0,0 +1,1025 @@ +#include "global.h" +#include "bg.h" +#include "palette.h" +#include "overworld.h" +#include "script.h" +#include "menu.h" +#include "new_menu_helpers.h" +#include "quest_log.h" +#include "fieldmap.h" + +struct ConnectionFlags +{ + u8 south:1; + u8 north:1; + u8 west:1; + u8 east:1; +}; + +void sub_8058A00(struct MapHeader *mapHeader); +void map_copy_with_padding(u16 *map, u16 width, u16 height); +void mapheader_copy_mapdata_of_adjacent_maps(struct MapHeader *mapHeader); +void fillSouthConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset); +void fillNorthConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset); +void fillWestConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset); +void fillEastConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset); +void LoadSavedMapView(void); +struct MapConnection *sub_8059600(u8 direction, s32 x, s32 y); +bool8 sub_8059658(u8 direction, s32 x, s32 y, struct MapConnection *connection); +bool8 sub_80596BC(s32 x, s32 src_width, s32 dest_width, s32 offset); + +struct BackupMapData VMap; +EWRAM_DATA u16 gBackupMapData[VIRTUAL_MAP_SIZE] = {}; +EWRAM_DATA struct MapHeader gMapHeader = {}; +EWRAM_DATA struct Camera gCamera = {}; +EWRAM_DATA struct ConnectionFlags gMapConnectionFlags = {}; + +const struct ConnectionFlags sDummyConnectionFlags = {}; + +const u32 gUnknown_8352EF0[] = { + 0x1ff, + 0x3e00, + 0x3c000, + 0xfc0000, + 0x7000000, + 0x18000000, + 0x60000000, + 0x80000000 +}; + +const u8 gUnknown_8352F10[] = { + 0, + 9, + 14, + 18, + 24, + 27, + 29, + 31 +}; + +const struct MapHeader * mapconnection_get_mapheader(struct MapConnection * connection) +{ + return get_mapheader_by_bank_and_number(connection->mapGroup, connection->mapNum); +} + +void not_trainer_hill_battle_pyramid(void) +{ + sub_8058A00(&gMapHeader); + mapheader_run_script_with_tag_x1(); +} + +void sub_80589E8(void) +{ + sub_8058A00(&gMapHeader); + LoadSavedMapView(); + mapheader_run_script_with_tag_x1(); +} + +void sub_8058A00(struct MapHeader * mapHeader) +{ + const struct MapData * mapData = mapHeader->mapData; + CpuFastFill(0x03FF03FF, gBackupMapData, sizeof(gBackupMapData)); + VMap.map = gBackupMapData; + VMap.Xsize = mapData->width + 15; + VMap.Ysize = mapData->height + 14; + AGB_ASSERT_EX(VMap.Xsize * VMap.Ysize <= VIRTUAL_MAP_SIZE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/fieldmap.c", 158); + map_copy_with_padding(mapData->map, mapData->width, mapData->height); + mapheader_copy_mapdata_of_adjacent_maps(mapHeader); +} + +void map_copy_with_padding(u16 *map, u16 width, u16 height) +{ + s32 y; + u16 *dest = VMap.map; + dest += VMap.Xsize * 7 + 7; + + for (y = 0; y < height; y++) + { + CpuCopy16(map, dest, width * sizeof(u16)); + dest += width + 15; + map += width; + } +} + +void mapheader_copy_mapdata_of_adjacent_maps(struct MapHeader *mapHeader) +{ + s32 count; + struct MapConnection *connection; + s32 i; + + gMapConnectionFlags = sDummyConnectionFlags; + + /* + * This null pointer check is new to FireRed. It was kept in + * Emerald, with the above struct assignment moved to after + * this check. + */ + if (mapHeader->connections) + { + count = mapHeader->connections->count; + connection = mapHeader->connections->connections; + // Emerald puts this line here instead: + // gMapConnectionFlags = sDummyConnectionFlags; + for (i = 0; i < count; i++, connection++) + { + struct MapHeader const *cMap = mapconnection_get_mapheader(connection); + u32 offset = connection->offset; + switch (connection->direction) + { + case CONNECTION_SOUTH: + fillSouthConnection(mapHeader, cMap, offset); + gMapConnectionFlags.south = 1; + break; + case CONNECTION_NORTH: + fillNorthConnection(mapHeader, cMap, offset); + gMapConnectionFlags.north = 1; + break; + case CONNECTION_WEST: + fillWestConnection(mapHeader, cMap, offset); + gMapConnectionFlags.west = 1; + break; + case CONNECTION_EAST: + fillEastConnection(mapHeader, cMap, offset); + gMapConnectionFlags.east = 1; + break; + } + } + } +} + +void sub_8058B54(s32 x, s32 y, const struct MapHeader *connectedMapHeader, s32 x2, s32 y2, s32 width, s32 height) +{ + s32 i; + u16 *src; + u16 *dest; + s32 mapWidth; + + mapWidth = connectedMapHeader->mapData->width; + src = &connectedMapHeader->mapData->map[mapWidth * y2 + x2]; + dest = &VMap.map[VMap.Xsize * y + x]; + + for (i = 0; i < height; i++) + { + CpuCopy16(src, dest, width * 2); + dest += VMap.Xsize; + src += mapWidth; + } +} + +void fillSouthConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset) +{ + s32 x, y; + s32 x2; + s32 width; + s32 cWidth; + + if (connectedMapHeader) + { + cWidth = connectedMapHeader->mapData->width; + x = offset + 7; + y = mapHeader->mapData->height + 7; + if (x < 0) + { + x2 = -x; + x += cWidth; + if (x < VMap.Xsize) + { + width = x; + } + else + { + width = VMap.Xsize; + } + x = 0; + } + else + { + x2 = 0; + if (x + cWidth < VMap.Xsize) + { + width = cWidth; + } + else + { + width = VMap.Xsize - x; + } + } + + sub_8058B54( + x, y, + connectedMapHeader, + x2, /*y2*/ 0, + width, /*height*/ 7); + } +} + +void fillNorthConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset) +{ + s32 x; + s32 x2, y2; + s32 width; + s32 cWidth, cHeight; + + if (connectedMapHeader) + { + cWidth = connectedMapHeader->mapData->width; + cHeight = connectedMapHeader->mapData->height; + x = offset + 7; + y2 = cHeight - 7; + if (x < 0) + { + x2 = -x; + x += cWidth; + if (x < VMap.Xsize) + { + width = x; + } + else + { + width = VMap.Xsize; + } + x = 0; + } + else + { + x2 = 0; + if (x + cWidth < VMap.Xsize) + { + width = cWidth; + } + else + { + width = VMap.Xsize - x; + } + } + + sub_8058B54( + x, /*y*/ 0, + connectedMapHeader, + x2, y2, + width, /*height*/ 7); + + } +} + +void fillWestConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset) +{ + s32 y; + s32 x2, y2; + s32 height; + s32 cWidth, cHeight; + if (connectedMapHeader) + { + cWidth = connectedMapHeader->mapData->width; + cHeight = connectedMapHeader->mapData->height; + y = offset + 7; + x2 = cWidth - 7; + if (y < 0) + { + y2 = -y; + if (y + cHeight < VMap.Ysize) + { + height = y + cHeight; + } + else + { + height = VMap.Ysize; + } + y = 0; + } + else + { + y2 = 0; + if (y + cHeight < VMap.Ysize) + { + height = cHeight; + } + else + { + height = VMap.Ysize - y; + } + } + + sub_8058B54( + /*x*/ 0, y, + connectedMapHeader, + x2, y2, + /*width*/ 7, height); + } +} + +void fillEastConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset) +{ + s32 x, y; + s32 y2; + s32 height; + s32 cHeight; + if (connectedMapHeader) + { + cHeight = connectedMapHeader->mapData->height; + x = mapHeader->mapData->width + 7; + y = offset + 7; + if (y < 0) + { + y2 = -y; + if (y + cHeight < VMap.Ysize) + { + height = y + cHeight; + } + else + { + height = VMap.Ysize; + } + y = 0; + } + else + { + y2 = 0; + if (y + cHeight < VMap.Ysize) + { + height = cHeight; + } + else + { + height = VMap.Ysize - y; + } + } + + sub_8058B54( + x, y, + connectedMapHeader, + /*x2*/ 0, y2, + /*width*/ 8, height); + } +} + +union Block +{ + struct + { + u16 block:10; + u16 collision:2; + u16 elevation:4; + } block; + u16 value; +}; + +#define MapGridGetBorderTileAt(x, y) ({ \ + u16 block; \ + s32 xprime; \ + s32 yprime; \ + \ + struct MapData *mapData = gMapHeader.mapData; \ + \ + xprime = x - 7; \ + xprime += 8 * mapData->unk18; \ + xprime %= mapData->unk18; \ + \ + yprime = y - 7; \ + yprime += 8 * mapData->unk19; \ + yprime %= mapData->unk19; \ + \ + block = mapData->border[xprime + yprime * mapData->unk18]; \ + block |= 0xC00; \ + block; \ +}) + +#define MapGridGetBorderTileAt2(x, y) ({ \ + u16 block; \ + s32 xprime; \ + s32 yprime; \ + \ + struct MapData *mapData = gMapHeader.mapData; \ + \ + xprime = x - 7; \ + xprime += 8 * mapData->unk18; \ + xprime %= mapData->unk18; \ + \ + yprime = y - 7; \ + yprime += 8 * mapData->unk19; \ + yprime %= mapData->unk19; \ + \ + block = mapData->border[xprime + yprime * mapData->unk18] | 0xC00; \ + block; \ +}) + +#define AreCoordsWithinMapGridBounds(x, y) (x >= 0 && x < VMap.Xsize && y >= 0 && y < VMap.Ysize) + +#define MapGridGetTileAt(x, y) (AreCoordsWithinMapGridBounds(x, y) ? VMap.map[x + VMap.Xsize * y] : MapGridGetBorderTileAt2(x, y)) + +u8 MapGridGetZCoordAt(s32 x, s32 y) +{ + u16 block = MapGridGetTileAt(x, y); + + if (block == 0x3ff) + { + return 0; + } + + return block >> 12; +} + +u8 MapGridIsImpassableAt(s32 x, s32 y) +{ + + u16 block = MapGridGetTileAt(x, y); + + if (block == 0x3ff) + { + return 1; + } + + return (block & 0xc00) >> 10; +} + +u32 MapGridGetMetatileIdAt(s32 x, s32 y) +{ + u16 block = MapGridGetTileAt(x, y); + + if (block == 0x3FF) + { + return MapGridGetBorderTileAt(x, y) & 0x3FF; + } + return block & 0x3FF; +} + +u32 sub_8058F1C(u32 original, u8 bit) +{ + if (bit >= 8) + return original; + + return (original & gUnknown_8352EF0[bit]) >> gUnknown_8352F10[bit]; +} + +u32 sub_8058F48(s16 x, s16 y, u8 z) +{ + u16 metatileId = MapGridGetMetatileIdAt(x, y); + return GetBehaviorByMetatileIdAndMapData(gMapHeader.mapData, metatileId, z); +} + +u32 MapGridGetMetatileBehaviorAt(s32 x, s32 y) +{ + return sub_8058F48(x, y, 0); +} + +u8 MapGridGetMetatileLayerTypeAt(s32 x, s32 y) +{ + return sub_8058F48(x, y, 6); +} + +void MapGridSetMetatileIdAt(s32 x, s32 y, u16 metatile) +{ + s32 i; + if (x >= 0 && x < VMap.Xsize + && y >= 0 && y < VMap.Ysize) + { + i = x + y * VMap.Xsize; + VMap.map[i] = (VMap.map[i] & 0xf000) | (metatile & 0xfff); + } +} + +void MapGridSetMetatileEntryAt(s32 x, s32 y, u16 metatile) +{ + s32 i; + if (x >= 0 && x < VMap.Xsize + && y >= 0 && y < VMap.Ysize) + { + i = x + VMap.Xsize * y; + VMap.map[i] = metatile; + } +} + +void sub_8059024(s32 x, s32 y, bool32 arg2) +{ + if (x >= 0 && x < VMap.Xsize + && y >= 0 && y < VMap.Ysize) + { + if (arg2) + { + VMap.map[x + VMap.Xsize * y] |= 0x0C00; + } + else + { + VMap.map[x + VMap.Xsize * y] &= ~0x0C00; + } + } +} + +u32 GetBehaviorByMetatileIdAndMapData(struct MapData *mapData, u16 metatile, u8 attr) +{ + u32 * attributes; + + if (metatile < NUM_METATILES_IN_PRIMARY) + { + attributes = mapData->primaryTileset->metatileAttributes; + return sub_8058F1C(attributes[metatile], attr); + } + else if (metatile < 0x400) + { + attributes = mapData->secondaryTileset->metatileAttributes; + return sub_8058F1C(attributes[metatile - NUM_METATILES_IN_PRIMARY], attr); + } + else + { + return 0xFF; + } +} + +void save_serialize_map(void) +{ + s32 i, j; + s32 x, y; + u16 *mapView; + s32 width; + mapView = gSaveBlock2Ptr->mapView; + width = VMap.Xsize; + x = gSaveBlock1Ptr->pos.x; + y = gSaveBlock1Ptr->pos.y; + for (i = y; i < y + 14; i++) + { + for (j = x; j < x + 15; j++) + { + *mapView++ = gBackupMapData[width * i + j]; + } + } +} + +bool32 SavedMapViewIsEmpty(void) +{ + u16 i; + u32 marker = 0; + + // BUG: This loop extends past the bounds of the mapView array. Its size is only 0x100. + for (i = 0; i < 0x200; i++) + marker |= gSaveBlock2Ptr->mapView[i]; + + if (marker == 0) + return TRUE; + else + return FALSE; +} + +void ClearSavedMapView(void) +{ + CpuFill16(0, gSaveBlock2Ptr->mapView, sizeof(gSaveBlock2Ptr->mapView)); +} + +void LoadSavedMapView(void) +{ + s32 i, j; + s32 x, y; + u16 *mapView; + s32 width; + mapView = gSaveBlock2Ptr->mapView; + if (!SavedMapViewIsEmpty()) + { + width = VMap.Xsize; + x = gSaveBlock1Ptr->pos.x; + y = gSaveBlock1Ptr->pos.y; + for (i = y; i < y + 14; i++) + { + for (j = x; j < x + 15; j++) + { + gBackupMapData[j + width * i] = *mapView; + mapView++; + } + } + ClearSavedMapView(); + } +} + +void sub_8059250(u8 a1) +{ + s32 width; + u16 *mapView; + s32 x0, y0; + s32 x2, y2; + u16 *src, *dest; + s32 srci, desti; + s32 r9, r8; + s32 x, y; + s32 i, j; + mapView = gSaveBlock2Ptr->mapView; + width = VMap.Xsize; + r9 = 0; + r8 = 0; + x0 = gSaveBlock1Ptr->pos.x; + y0 = gSaveBlock1Ptr->pos.y; + x2 = 15; + y2 = 14; + switch (a1) + { + case CONNECTION_NORTH: + y0 += 1; + y2 = 13; + break; + case CONNECTION_SOUTH: + r8 = 1; + y2 = 13; + break; + case CONNECTION_WEST: + x0 += 1; + x2 = 14; + break; + case CONNECTION_EAST: + r9 = 1; + x2 = 14; + break; + } + for (y = 0; y < y2; y++) + { + i = 0; + j = 0; + for (x = 0; x < x2; x++) + { + desti = width * (y + y0); + srci = (y + r8) * 15 + r9; + src = &mapView[srci + i]; + dest = &gBackupMapData[x0 + desti + j]; + *dest = *src; + i++; + j++; + } + } + ClearSavedMapView(); +} + +s32 GetMapBorderIdAt(s32 x, s32 y) +{ + if (MapGridGetTileAt(x, y) == 0x3FF) + { + return -1; + } + + if (x >= VMap.Xsize - 8) + { + if (!gMapConnectionFlags.east) + { + return -1; + } + return CONNECTION_EAST; + } + + if (x < 7) + { + if (!gMapConnectionFlags.west) + { + return -1; + } + return CONNECTION_WEST; + } + + if (y >= VMap.Ysize - 7) + { + if (!gMapConnectionFlags.south) + { + return -1; + } + return CONNECTION_SOUTH; + } + + if (y < 7) + { + if (!gMapConnectionFlags.north) + { + return -1; + } + return CONNECTION_NORTH; + } + + return 0; +} + +s32 GetPostCameraMoveMapBorderId(s32 x, s32 y) +{ + return GetMapBorderIdAt(7 + gSaveBlock1Ptr->pos.x + x, 7 + gSaveBlock1Ptr->pos.y + y); +} + +bool32 CanCameraMoveInDirection(s32 direction) +{ + s32 x, y; + + x = gSaveBlock1Ptr->pos.x + 7 + gDirectionToVectors[direction].x; + y = gSaveBlock1Ptr->pos.y + 7 + gDirectionToVectors[direction].y; + if (GetMapBorderIdAt(x, y) == -1) + { + return FALSE; + } + return TRUE; +} + +void sub_80594AC(struct MapConnection *connection, int direction, s32 x, s32 y) +{ + struct MapHeader const *mapHeader; + mapHeader = mapconnection_get_mapheader(connection); + switch (direction) + { + case CONNECTION_EAST: + gSaveBlock1Ptr->pos.x = -x; + gSaveBlock1Ptr->pos.y -= connection->offset; + break; + case CONNECTION_WEST: + gSaveBlock1Ptr->pos.x = mapHeader->mapData->width; + gSaveBlock1Ptr->pos.y -= connection->offset; + break; + case CONNECTION_SOUTH: + gSaveBlock1Ptr->pos.x -= connection->offset; + gSaveBlock1Ptr->pos.y = -y; + break; + case CONNECTION_NORTH: + gSaveBlock1Ptr->pos.x -= connection->offset; + gSaveBlock1Ptr->pos.y = mapHeader->mapData->height; + break; + } +} + +bool8 CameraMove(s32 x, s32 y) +{ + u32 direction; + struct MapConnection *connection; + s32 old_x, old_y; + gCamera.active = FALSE; + direction = GetPostCameraMoveMapBorderId(x, y); + if (direction + 1 <= 1) + { + gSaveBlock1Ptr->pos.x += x; + gSaveBlock1Ptr->pos.y += y; + } + else + { + save_serialize_map(); + old_x = gSaveBlock1Ptr->pos.x; + 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); + gCamera.active = TRUE; + gCamera.x = old_x - gSaveBlock1Ptr->pos.x; + gCamera.y = old_y - gSaveBlock1Ptr->pos.y; + gSaveBlock1Ptr->pos.x += x; + gSaveBlock1Ptr->pos.y += y; + sub_8059250(direction); + } + return gCamera.active; +} + +struct MapConnection *sub_8059600(u8 direction, s32 x, s32 y) +{ + s32 count; + struct MapConnection *connection; + s32 i; + count = gMapHeader.connections->count; + connection = gMapHeader.connections->connections; + for (i = 0; i < count; i++, connection++) + { + if (connection->direction == direction && sub_8059658(direction, x, y, connection) == TRUE) + return connection; + } + return NULL; + +} + +bool8 sub_8059658(u8 direction, s32 x, s32 y, struct MapConnection *connection) +{ + struct MapHeader const *mapHeader; + mapHeader = mapconnection_get_mapheader(connection); + switch (direction) + { + case CONNECTION_SOUTH: + case CONNECTION_NORTH: + return sub_80596BC(x, gMapHeader.mapData->width, mapHeader->mapData->width, connection->offset); + case CONNECTION_WEST: + case CONNECTION_EAST: + return sub_80596BC(y, gMapHeader.mapData->height, mapHeader->mapData->height, connection->offset); + } + return FALSE; +} + +bool8 sub_80596BC(s32 x, s32 src_width, s32 dest_width, s32 offset) +{ + s32 offset2 = max(offset, 0); + + if (dest_width + offset < src_width) + src_width = dest_width + offset; + + if (offset2 <= x && x <= src_width) + return TRUE; + + return FALSE; +} + +bool32 sub_80596E8(s32 x, s32 width) +{ + if (x >= 0 && x < width) + return TRUE; + + return FALSE; +} + +s32 sub_80596FC(struct MapConnection *connection, s32 x, s32 y) +{ + struct MapHeader const *mapHeader; + mapHeader = mapconnection_get_mapheader(connection); + switch (connection->direction) + { + case CONNECTION_SOUTH: + case CONNECTION_NORTH: + return sub_80596E8(x - connection->offset, mapHeader->mapData->width); + case CONNECTION_WEST: + case CONNECTION_EAST: + return sub_80596E8(y - connection->offset, mapHeader->mapData->height); + } + return FALSE; +} + +struct MapConnection *sub_805973C(s16 x, s16 y) +{ + s32 count; + struct MapConnection *connection; + s32 i; + u8 direction; + if (!gMapHeader.connections) + { + return NULL; + } + else + { + count = gMapHeader.connections->count; + connection = gMapHeader.connections->connections; + for (i = 0; i < count; i++, connection++) + { + direction = connection->direction; + if ((direction == CONNECTION_DIVE || direction == CONNECTION_EMERGE) + || (direction == CONNECTION_NORTH && y > 6) + || (direction == CONNECTION_SOUTH && y < gMapHeader.mapData->height + 7) + || (direction == CONNECTION_WEST && x > 6) + || (direction == CONNECTION_EAST && x < gMapHeader.mapData->width + 7)) + { + continue; + } + if (sub_80596FC(connection, x - 7, y - 7) == TRUE) + { + return connection; + } + } + } + return NULL; +} + +void SetCameraFocusCoords(u16 x, u16 y) +{ + gSaveBlock1Ptr->pos.x = x - 7; + gSaveBlock1Ptr->pos.y = y - 7; +} + +void GetCameraFocusCoords(u16 *x, u16 *y) +{ + *x = gSaveBlock1Ptr->pos.x + 7; + *y = gSaveBlock1Ptr->pos.y + 7; +} + +void SetCameraCoords(u16 x, u16 y) +{ + gSaveBlock1Ptr->pos.x = x; + gSaveBlock1Ptr->pos.y = y; +} + +void GetCameraCoords(u16 *x, u16 *y) +{ + *x = gSaveBlock1Ptr->pos.x; + *y = gSaveBlock1Ptr->pos.y; +} +void copy_tileset_patterns_to_vram(struct Tileset const *tileset, u16 numTiles, u16 offset) +{ + if (tileset) + { + if (!tileset->isCompressed) + LoadBgTiles(2, tileset->tiles, numTiles * 32, offset); + else + sub_80F68F0(2, tileset->tiles, numTiles * 32, offset, 0); + } +} + +void copy_tileset_patterns_to_vram2(struct Tileset const *tileset, u16 numTiles, u16 offset) +{ + if (tileset) + { + if (!tileset->isCompressed) + LoadBgTiles(2, tileset->tiles, numTiles * 32, offset); + else + sub_80F69E8(2, tileset->tiles, numTiles * 32, offset, 0); + } +} + +void sub_80598CC(u16 a0, u16 a1) +{ + switch (gUnknown_2036E28) + { + case 0: + return; + case 1: + TintPalette_GrayScale(gPlttBufferUnfaded + a0, a1); + break; + case 2: + TintPalette_SepiaTone(gPlttBufferUnfaded + a0, a1); + break; + case 3: + sub_8111F38(a0, a1); + TintPalette_GrayScale(gPlttBufferUnfaded + a0, a1); + break; + default: + return; + } + CpuCopy16(gPlttBufferUnfaded + a0, gPlttBufferFaded + a0, a1 * sizeof(u16)); +} + +void sub_8059948(u8 a0, u8 a1) +{ + switch (gUnknown_2036E28) + { + case 0: + return; + case 1: + TintPalette_GrayScale(gPlttBufferUnfaded + a0 * 16, a1 * 16); + break; + case 2: + TintPalette_SepiaTone(gPlttBufferUnfaded + a0 * 16, a1 * 16); + break; + case 3: + sub_8111F38(a0 * 16, a1 * 16); + TintPalette_GrayScale(gPlttBufferUnfaded + a0 * 16, a1 * 16); + break; + default: + return; + } + CpuFastCopy(gPlttBufferUnfaded + a0 * 16, gPlttBufferFaded + a0 * 16, a1 * 16 * sizeof(u16)); +} + +void apply_map_tileset_palette(struct Tileset const *tileset, u16 destOffset, u16 size) +{ + u16 black = RGB_BLACK; + + if (tileset) + { + if (tileset->isSecondary == FALSE) + { + LoadPalette(&black, destOffset, 2); + LoadPalette(((u16*)tileset->palettes) + 1, destOffset + 1, size - 2); + sub_80598CC(destOffset + 1, (size - 2) >> 1); + } + else if (tileset->isSecondary == TRUE) + { + LoadPalette(((u16*)tileset->palettes) + (NUM_PALS_IN_PRIMARY * 16), destOffset, size); + sub_80598CC(destOffset, size >> 1); + } + else + { + LoadCompressedPalette((u32*)tileset->palettes, destOffset, size); + sub_80598CC(destOffset, size >> 1); + } + } +} + +void copy_map_tileset1_to_vram(const struct MapData *mapData) +{ + copy_tileset_patterns_to_vram(mapData->primaryTileset, NUM_TILES_IN_PRIMARY, 0); +} + +void copy_map_tileset2_to_vram(const struct MapData *mapData) +{ + copy_tileset_patterns_to_vram(mapData->secondaryTileset, NUM_TILES_TOTAL - NUM_TILES_IN_PRIMARY, NUM_TILES_IN_PRIMARY); +} + +void copy_map_tileset2_to_vram_2(const struct MapData *mapData) +{ + copy_tileset_patterns_to_vram2(mapData->secondaryTileset, NUM_TILES_TOTAL - NUM_TILES_IN_PRIMARY, NUM_TILES_IN_PRIMARY); +} + +void apply_map_tileset1_palette(const struct MapData *mapData) +{ + apply_map_tileset_palette(mapData->primaryTileset, 0, NUM_PALS_IN_PRIMARY * 16 * 2); +} + +void apply_map_tileset2_palette(const struct MapData *mapData) +{ + apply_map_tileset_palette(mapData->secondaryTileset, NUM_PALS_IN_PRIMARY * 16, (NUM_PALS_TOTAL - NUM_PALS_IN_PRIMARY) * 16 * 2); +} + +void copy_map_tileset1_tileset2_to_vram(struct MapData const *mapData) +{ + if (mapData) + { + copy_tileset_patterns_to_vram2(mapData->primaryTileset, NUM_TILES_IN_PRIMARY, 0); + copy_tileset_patterns_to_vram2(mapData->secondaryTileset, NUM_TILES_TOTAL - NUM_TILES_IN_PRIMARY, NUM_TILES_IN_PRIMARY); + } +} + +void apply_map_tileset1_tileset2_palette(struct MapData const *mapData) +{ + if (mapData) + { + apply_map_tileset1_palette(mapData); + apply_map_tileset2_palette(mapData); + } +}
\ No newline at end of file diff --git a/src/save.c b/src/save.c index ef38d8b17..761e3c92d 100644 --- a/src/save.c +++ b/src/save.c @@ -69,7 +69,7 @@ const struct SaveSectionOffsets gSaveSectionOffsets[] = extern void DoSaveFailedScreen(u8 saveType); // save_failed_screen extern void sub_800AB9C(void); // link extern bool8 sub_800A4BC(void); // link -extern void sub_80590D8(void); // fieldmap +extern void save_serialize_map(void); // fieldmap extern void sub_804C1C0(void); // load_save extern void sav2_gender2_inplace_and_xFE(void); // load_save @@ -867,7 +867,7 @@ void sub_80DA634(u8 taskId) case 2: if (sub_800A4BC()) { - sub_80590D8(); + save_serialize_map(); gTasks[taskId].data[0] = 3; } break; diff --git a/sym_bss.txt b/sym_bss.txt index 20d8d561d..529460f3e 100644 --- a/sym_bss.txt +++ b/sym_bss.txt @@ -111,22 +111,22 @@ gUnknown_3000FA9: @ 3000FA9 gUnknown_3000FAC: @ 3000FAC .space 0x2 -gUnknown_3000FAE: @ 3000FAE +sPrimaryTilesetCBCounter: @ 3000FAE .space 0x2 -gUnknown_3000FB0: @ 3000FB0 +sPrimaryTilesetCBBufferSize: @ 3000FB0 .space 0x2 -gUnknown_3000FB2: @ 3000FB2 +sSecondaryTilesetCBCounter: @ 3000FB2 .space 0x2 -gUnknown_3000FB4: @ 3000FB4 +sSecondaryTilesetCBBufferSize: @ 3000FB4 .space 0x4 -gUnknown_3000FB8: @ 3000FB8 +sPrimaryTilesetCB: @ 3000FB8 .space 0x4 -gUnknown_3000FBC: @ 3000FBC +sSecondaryTilesetCB: @ 3000FBC .space 0x4 .include "src/sound.o" diff --git a/sym_common.txt b/sym_common.txt index 333dae222..16c275b01 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -160,9 +160,9 @@ gUnknown_300502C: @ 300502C gUnknown_3005030: @ 3005030 .space 0x10 -gUnknown_3005040: @ 3005040 - .space 0x10 + .include "fieldmap.o" + .align 4 gUnknown_3005050: @ 3005050 .space 0x18 diff --git a/sym_ewram.txt b/sym_ewram.txt index fbb152faa..b978e59c4 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -593,17 +593,7 @@ gUnknown_2031DEA: @ 2031DEA gUnknown_2031DEC: @ 2031DEC .space 0x10 -gUnknown_2031DFC: @ 2031DFC - .space 0x5000 - -gMapHeader: @ 2036DFC - .space 0x1C - -gUnknown_2036E18: @ 2036E18 - .space 0xC - -gUnknown_2036E24: @ 2036E24 - .space 0x4 + .include "src/fieldmap.o" gUnknown_2036E28: @ 2036E28 .space 0x4 |