sub_80C3D40

This commit is contained in:
PikalaxALT
2020-01-07 12:01:00 -05:00
parent 268cf6626f
commit e34c1fd3d6
2 changed files with 182 additions and 461 deletions
-460
View File
@@ -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}
+182 -1
View File
@@ -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);
}