diff options
-rw-r--r-- | asm/region_map.s | 460 | ||||
-rw-r--r-- | src/region_map.c | 183 |
2 files changed, 182 insertions, 461 deletions
diff --git a/asm/region_map.s b/asm/region_map.s index 85735a08b..a91d4bd7e 100644 --- a/asm/region_map.s +++ b/asm/region_map.s @@ -5,466 +5,6 @@ .text - thumb_func_start sub_80C3D40 -sub_80C3D40: @ 80C3D40 - push {r4,r5,lr} - bl sub_80C3B00 - lsls r0, 16 - lsrs r0, 16 - subs r0, 0x66 - cmp r0, 0x5C - bls _080C3D52 - b _080C4132 -_080C3D52: - lsls r0, 2 - ldr r1, _080C3D5C @ =_080C3D60 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080C3D5C: .4byte _080C3D60 - .align 2, 0 -_080C3D60: - .4byte _080C4034 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C40A0 - .4byte _080C40C4 - .4byte _080C40E8 - .4byte _080C4108 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4064 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4028 - .4byte _080C4132 - .4byte _080C3F24 - .4byte _080C3F50 - .4byte _080C3F78 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C3F44 - .4byte _080C3EE4 - .4byte _080C3EF0 - .4byte _080C3ED4 - .4byte _080C3F38 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C3F04 - .4byte _080C4132 - .4byte _080C3F10 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C3FB0 - .4byte _080C3FC8 - .4byte _080C3FD4 - .4byte _080C4132 - .4byte _080C3FF4 - .4byte _080C3FBC - .4byte _080C4014 - .4byte _080C4132 - .4byte _080C3FE0 - .4byte _080C4132 - .4byte _080C4008 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C3FA4 - .4byte _080C4008 - .4byte _080C4008 - .4byte _080C4008 - .4byte _080C4008 - .4byte _080C4008 - .4byte _080C4008 - .4byte _080C4008 -_080C3ED4: - ldr r0, _080C3EE0 @ =gUnknown_20399E4 - ldr r1, [r0] - movs r0, 0xC - strh r0, [r1] - strh r0, [r1, 0x2] - b _080C4136 - .align 2, 0 -_080C3EE0: .4byte gUnknown_20399E4 -_080C3EE4: - ldr r0, _080C3EEC @ =gUnknown_20399E4 - ldr r1, [r0] - movs r0, 0xE - b _080C411C - .align 2, 0 -_080C3EEC: .4byte gUnknown_20399E4 -_080C3EF0: - ldr r0, _080C3F00 @ =gUnknown_20399E4 - ldr r1, [r0] - movs r0, 0x4 - strh r0, [r1] - movs r0, 0xE - strh r0, [r1, 0x2] - b _080C4136 - .align 2, 0 -_080C3F00: .4byte gUnknown_20399E4 -_080C3F04: - ldr r0, _080C3F0C @ =gUnknown_20399E4 - ldr r1, [r0] - movs r0, 0x12 - b _080C411C - .align 2, 0 -_080C3F0C: .4byte gUnknown_20399E4 -_080C3F10: - ldr r0, _080C3F20 @ =gUnknown_20399E4 - ldr r1, [r0] - movs r0, 0x12 - strh r0, [r1] - movs r0, 0x4 - strh r0, [r1, 0x2] - b _080C4136 - .align 2, 0 -_080C3F20: .4byte gUnknown_20399E4 -_080C3F24: - ldr r0, _080C3F34 @ =gUnknown_20399E4 - ldr r1, [r0] - movs r0, 0xE - strh r0, [r1] - movs r0, 0x9 - strh r0, [r1, 0x2] - b _080C4136 - .align 2, 0 -_080C3F34: .4byte gUnknown_20399E4 -_080C3F38: - ldr r0, _080C3F40 @ =gUnknown_20399E4 - ldr r1, [r0] - movs r0, 0x2 - b _080C3FE6 - .align 2, 0 -_080C3F40: .4byte gUnknown_20399E4 -_080C3F44: - ldr r0, _080C3F4C @ =gUnknown_20399E4 - ldr r1, [r0] - movs r0, 0xB - b _080C411C - .align 2, 0 -_080C3F4C: .4byte gUnknown_20399E4 -_080C3F50: - ldr r0, _080C3F70 @ =gUnknown_20399E4 - ldr r1, [r0] - movs r2, 0xE - strh r2, [r1] - movs r0, 0x7 - strh r0, [r1, 0x2] - ldr r0, _080C3F74 @ =gSaveBlock1Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x5] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x1E - beq _080C3F6C - b _080C4136 -_080C3F6C: - b _080C40B6 - .align 2, 0 -_080C3F70: .4byte gUnknown_20399E4 -_080C3F74: .4byte gSaveBlock1Ptr -_080C3F78: - ldr r0, _080C3F9C @ =gUnknown_20399E4 - ldr r1, [r0] - movs r0, 0xC - strh r0, [r1] - movs r2, 0x6 - strh r2, [r1, 0x2] - ldr r0, _080C3FA0 @ =gSaveBlock1Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x5] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x23 - beq _080C3F94 - b _080C4136 -_080C3F94: - movs r0, 0xF - strh r0, [r1] - b _080C4136 - .align 2, 0 -_080C3F9C: .4byte gUnknown_20399E4 -_080C3FA0: .4byte gSaveBlock1Ptr -_080C3FA4: - ldr r0, _080C3FAC @ =gUnknown_20399E4 - ldr r1, [r0] - movs r0, 0x12 - b _080C4092 - .align 2, 0 -_080C3FAC: .4byte gUnknown_20399E4 -_080C3FB0: - ldr r0, _080C3FB8 @ =gUnknown_20399E4 - ldr r1, [r0] - movs r0, 0xA - b _080C401A - .align 2, 0 -_080C3FB8: .4byte gUnknown_20399E4 -_080C3FBC: - ldr r0, _080C3FC4 @ =gUnknown_20399E4 - ldr r1, [r0] - movs r0, 0x5 - b _080C411C - .align 2, 0 -_080C3FC4: .4byte gUnknown_20399E4 -_080C3FC8: - ldr r0, _080C3FD0 @ =gUnknown_20399E4 - ldr r1, [r0] - movs r0, 0x2 - b _080C3FE6 - .align 2, 0 -_080C3FD0: .4byte gUnknown_20399E4 -_080C3FD4: - ldr r0, _080C3FDC @ =gUnknown_20399E4 - ldr r1, [r0] - movs r0, 0xE - b _080C4078 - .align 2, 0 -_080C3FDC: .4byte gUnknown_20399E4 -_080C3FE0: - ldr r0, _080C3FF0 @ =gUnknown_20399E4 - ldr r1, [r0] - movs r0, 0x11 -_080C3FE6: - strh r0, [r1] - movs r0, 0x3 - strh r0, [r1, 0x2] - b _080C4136 - .align 2, 0 -_080C3FF0: .4byte gUnknown_20399E4 -_080C3FF4: - ldr r0, _080C4004 @ =gUnknown_20399E4 - ldr r1, [r0] - movs r0, 0x11 - strh r0, [r1] - movs r0, 0xB - strh r0, [r1, 0x2] - b _080C4136 - .align 2, 0 -_080C4004: .4byte gUnknown_20399E4 -_080C4008: - ldr r0, _080C4010 @ =gUnknown_20399E4 - ldr r1, [r0] - movs r0, 0x9 - b _080C4078 - .align 2, 0 -_080C4010: .4byte gUnknown_20399E4 -_080C4014: - ldr r0, _080C4024 @ =gUnknown_20399E4 - ldr r1, [r0] - movs r0, 0x10 -_080C401A: - strh r0, [r1] - movs r0, 0x8 - strh r0, [r1, 0x2] - b _080C4136 - .align 2, 0 -_080C4024: .4byte gUnknown_20399E4 -_080C4028: - ldr r0, _080C4030 @ =gUnknown_20399E4 - ldr r1, [r0] - movs r0, 0x4 - b _080C411C - .align 2, 0 -_080C4030: .4byte gUnknown_20399E4 -_080C4034: - ldr r0, _080C404C @ =gSaveBlock1Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x5] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0 - bne _080C4054 - ldr r0, _080C4050 @ =gUnknown_20399E4 - ldr r1, [r0] - movs r0, 0x4 - b _080C40D8 - .align 2, 0 -_080C404C: .4byte gSaveBlock1Ptr -_080C4050: .4byte gUnknown_20399E4 -_080C4054: - cmp r0, 0x3 - bne _080C412C - ldr r0, _080C4060 @ =gUnknown_20399E4 - ldr r1, [r0] - movs r0, 0x4 - b _080C40B4 - .align 2, 0 -_080C4060: .4byte gUnknown_20399E4 -_080C4064: - ldr r0, _080C4080 @ =gSaveBlock1Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x5] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x27 - bne _080C4088 - ldr r0, _080C4084 @ =gUnknown_20399E4 - ldr r1, [r0] - movs r0, 0x4 -_080C4078: - strh r0, [r1] - movs r0, 0xC - strh r0, [r1, 0x2] - b _080C4136 - .align 2, 0 -_080C4080: .4byte gSaveBlock1Ptr -_080C4084: .4byte gUnknown_20399E4 -_080C4088: - cmp r0, 0x28 - bne _080C4136 - ldr r0, _080C409C @ =gUnknown_20399E4 - ldr r1, [r0] - movs r0, 0x4 -_080C4092: - strh r0, [r1] - movs r0, 0xD - strh r0, [r1, 0x2] - b _080C4136 - .align 2, 0 -_080C409C: .4byte gUnknown_20399E4 -_080C40A0: - ldr r0, _080C40BC @ =gSaveBlock1Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x5] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x1 - bne _080C412C - ldr r0, _080C40C0 @ =gUnknown_20399E4 - ldr r1, [r0] - movs r0, 0xE -_080C40B4: - strh r0, [r1] -_080C40B6: - movs r0, 0x5 - strh r0, [r1, 0x2] - b _080C4136 - .align 2, 0 -_080C40BC: .4byte gSaveBlock1Ptr -_080C40C0: .4byte gUnknown_20399E4 -_080C40C4: - ldr r0, _080C40E0 @ =gSaveBlock1Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x5] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0 - bne _080C412C - ldr r0, _080C40E4 @ =gUnknown_20399E4 - ldr r1, [r0] - movs r0, 0xE -_080C40D8: - strh r0, [r1] - movs r0, 0x7 - strh r0, [r1, 0x2] - b _080C4136 - .align 2, 0 -_080C40E0: .4byte gSaveBlock1Ptr -_080C40E4: .4byte gUnknown_20399E4 -_080C40E8: - ldr r0, _080C4100 @ =gSaveBlock1Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x5] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0 - bne _080C412C - ldr r0, _080C4104 @ =gUnknown_20399E4 - ldr r1, [r0] - movs r0, 0xD - b _080C411C - .align 2, 0 -_080C4100: .4byte gSaveBlock1Ptr -_080C4104: .4byte gUnknown_20399E4 -_080C4108: - ldr r0, _080C4124 @ =gSaveBlock1Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x5] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0 - bne _080C412C - ldr r0, _080C4128 @ =gUnknown_20399E4 - ldr r1, [r0] - movs r0, 0xF -_080C411C: - strh r0, [r1] - movs r0, 0x6 - strh r0, [r1, 0x2] - b _080C4136 - .align 2, 0 -_080C4124: .4byte gSaveBlock1Ptr -_080C4128: .4byte gUnknown_20399E4 -_080C412C: - bl sub_80C3B28 - b _080C4136 -_080C4132: - bl sub_80C3B28 -_080C4136: - bl sub_80C0E20 - lsls r0, 24 - lsrs r0, 24 - ldr r4, _080C4160 @ =gUnknown_20399E4 - ldr r1, [r4] - movs r3, 0x2 - ldrsh r2, [r1, r3] - movs r5, 0 - ldrsh r3, [r1, r5] - movs r1, 0 - bl sub_80C4164 - ldr r1, [r4] - lsls r0, 24 - lsrs r0, 24 - strh r0, [r1, 0x14] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080C4160: .4byte gUnknown_20399E4 - thumb_func_end sub_80C3D40 - thumb_func_start sub_80C4164 sub_80C4164: @ 80C4164 push {r4,r5,lr} diff --git a/src/region_map.c b/src/region_map.c index c380319dc..40dbadf0e 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -18,6 +18,7 @@ #include "constants/flags.h" #include "constants/songs.h" #include "constants/region_map.h" +#include "constants/maps.h" #define FREE_IF_NOT_NULL(ptr) ({ \ if (ptr) { \ @@ -2456,7 +2457,7 @@ u8 sub_80C3AC8(u8 a0) } } -u8 sub_80C3B00(void) +u16 sub_80C3B00(void) { return Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum)->regionMapSectionId; } @@ -2538,3 +2539,183 @@ void sub_80C3B28(void) gUnknown_20399E4->field_000 = x + gUnknown_83F1E60[gUnknown_20399E4->field_014][0]; gUnknown_20399E4->field_002 = y + gUnknown_83F1E60[gUnknown_20399E4->field_014][1]; } + +void sub_80C3D40(void) +{ + switch (sub_80C3B00()) + { + case MAPSEC_KANTO_SAFARI_ZONE: + gUnknown_20399E4->field_000 = 12; + gUnknown_20399E4->field_002 = 12; + break; + case MAPSEC_SILPH_CO: + gUnknown_20399E4->field_000 = 14; + gUnknown_20399E4->field_002 = 6; + break; + case MAPSEC_POKEMON_MANSION: + gUnknown_20399E4->field_000 = 4; + gUnknown_20399E4->field_002 = 14; + break; + case MAPSEC_POKEMON_TOWER: + gUnknown_20399E4->field_000 = 18; + gUnknown_20399E4->field_002 = 6; + break; + case MAPSEC_POWER_PLANT: + gUnknown_20399E4->field_000 = 18; + gUnknown_20399E4->field_002 = 4; + break; + case MAPSEC_S_S_ANNE: + gUnknown_20399E4->field_000 = 14; + gUnknown_20399E4->field_002 = 9; + break; + case MAPSEC_POKEMON_LEAGUE: + gUnknown_20399E4->field_000 = 2; + gUnknown_20399E4->field_002 = 3; + break; + case MAPSEC_ROCKET_HIDEOUT: + gUnknown_20399E4->field_000 = 11; + gUnknown_20399E4->field_002 = 6; + break; + case MAPSEC_UNDERGROUND_PATH: + gUnknown_20399E4->field_000 = 14; + gUnknown_20399E4->field_002 = 7; + if (gSaveBlock1Ptr->location.mapNum == MAP_NUM(UNDERGROUND_PATH_NORTH_ENTRANCE)) + { + gUnknown_20399E4->field_000 = 14; // optimized out but required to match + gUnknown_20399E4->field_002 = 5; + } + break; + case MAPSEC_UNDERGROUND_PATH_2: + gUnknown_20399E4->field_000 = 12; + gUnknown_20399E4->field_002 = 6; + if (gSaveBlock1Ptr->location.mapNum == MAP_NUM(UNDERGROUND_PATH_EAST_ENTRANCE)) + { + gUnknown_20399E4->field_000 = 15; + gUnknown_20399E4->field_002 = 6; // optimized out but required to match + } + break; + case MAPSEC_BIRTH_ISLAND: + gUnknown_20399E4->field_000 = 18; + gUnknown_20399E4->field_002 = 13; + break; + case MAPSEC_NAVEL_ROCK: + gUnknown_20399E4->field_000 = 10; + gUnknown_20399E4->field_002 = 8; + break; + case MAPSEC_TRAINER_TOWER_2: + gUnknown_20399E4->field_000 = 5; + gUnknown_20399E4->field_002 = 6; + break; + case MAPSEC_MT_EMBER: + gUnknown_20399E4->field_000 = 2; + gUnknown_20399E4->field_002 = 3; + break; + case MAPSEC_BERRY_FOREST: + gUnknown_20399E4->field_000 = 14; + gUnknown_20399E4->field_002 = 12; + break; + case MAPSEC_PATTERN_BUSH: + gUnknown_20399E4->field_000 = 17; + gUnknown_20399E4->field_002 = 3; + break; + case MAPSEC_ROCKET_WAREHOUSE: + gUnknown_20399E4->field_000 = 17; + gUnknown_20399E4->field_002 = 11; + break; + case MAPSEC_DILFORD_CHAMBER: + case MAPSEC_LIPTOO_CHAMBER: + case MAPSEC_MONEAN_CHAMBER: + case MAPSEC_RIXY_CHAMBER: + case MAPSEC_SCUFIB_CHAMBER: + case MAPSEC_TANOBY_CHAMBERS: + case MAPSEC_VIAPOIS_CHAMBER: + case MAPSEC_WEEPTH_CHAMBER: + gUnknown_20399E4->field_000 = 9; + gUnknown_20399E4->field_002 = 12; + break; + case MAPSEC_DOTTED_HOLE: + gUnknown_20399E4->field_000 = 16; + gUnknown_20399E4->field_002 = 8; + break; + case MAPSEC_VIRIDIAN_FOREST: + gUnknown_20399E4->field_000 = 4; + gUnknown_20399E4->field_002 = 6; + break; + case MAPSEC_ROUTE_2: + if (gSaveBlock1Ptr->location.mapNum == MAP_NUM(PALLET_TOWN)) + { + gUnknown_20399E4->field_000 = 4; + gUnknown_20399E4->field_002 = 7; + } + else if (gSaveBlock1Ptr->location.mapNum == MAP_NUM(CERULEAN_CITY)) + { + gUnknown_20399E4->field_000 = 4; + gUnknown_20399E4->field_002 = 5; + } + else + { + sub_80C3B28(); + } + break; + case MAPSEC_ROUTE_21: + if (gSaveBlock1Ptr->location.mapNum == MAP_NUM(ROUTE21_NORTH)) + { + gUnknown_20399E4->field_000 = 4; + gUnknown_20399E4->field_002 = 12; + } + else if (gSaveBlock1Ptr->location.mapNum == MAP_NUM(ROUTE21_SOUTH)) + { + gUnknown_20399E4->field_000 = 4; + gUnknown_20399E4->field_002 = 13; + } + break; + case MAPSEC_ROUTE_5: + if (gSaveBlock1Ptr->location.mapNum == MAP_NUM(VIRIDIAN_CITY)) + { + gUnknown_20399E4->field_000 = 14; + gUnknown_20399E4->field_002 = 5; + } + else + { + sub_80C3B28(); + } + break; + case MAPSEC_ROUTE_6: + if (gSaveBlock1Ptr->location.mapNum == MAP_NUM(PALLET_TOWN)) + { + gUnknown_20399E4->field_000 = 14; + gUnknown_20399E4->field_002 = 7; + } + else + { + sub_80C3B28(); + } + break; + case MAPSEC_ROUTE_7: + if (gSaveBlock1Ptr->location.mapNum == MAP_NUM(PALLET_TOWN)) + { + gUnknown_20399E4->field_000 = 13; + gUnknown_20399E4->field_002 = 6; + } + else + { + sub_80C3B28(); + } + break; + case MAPSEC_ROUTE_8: + if (gSaveBlock1Ptr->location.mapNum == MAP_NUM(PALLET_TOWN)) + { + gUnknown_20399E4->field_000 = 15; + gUnknown_20399E4->field_002 = 6; + } + else + { + sub_80C3B28(); + } + break; + default: + sub_80C3B28(); + break; + } + gUnknown_20399E4->field_014 = sub_80C4164(sub_80C0E20(), 0, gUnknown_20399E4->field_002, gUnknown_20399E4->field_000); +} |