summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/region_map.s460
-rw-r--r--src/region_map.c183
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);
+}