through sub_80C3B28

This commit is contained in:
PikalaxALT
2020-01-07 11:23:31 -05:00
parent 5249e584f7
commit 268cf6626f
2 changed files with 98 additions and 310 deletions
-310
View File
@@ -5,316 +5,6 @@
.text
thumb_func_start sub_80C3AC8
sub_80C3AC8: @ 80C3AC8
push {lr}
lsls r0, 24
lsrs r0, 24
cmp r0, 0
beq _080C3AE4
cmp r0, 0x1
beq _080C3AF0
ldr r0, _080C3AE0 @ =gUnknown_20399E4
ldr r0, [r0]
ldrb r0, [r0, 0x16]
b _080C3AF6
.align 2, 0
_080C3AE0: .4byte gUnknown_20399E4
_080C3AE4:
ldr r0, _080C3AEC @ =gUnknown_20399E4
ldr r0, [r0]
ldrb r0, [r0, 0x16]
b _080C3AF6
.align 2, 0
_080C3AEC: .4byte gUnknown_20399E4
_080C3AF0:
ldr r0, _080C3AFC @ =gUnknown_20399E4
ldr r0, [r0]
ldrb r0, [r0, 0x18]
_080C3AF6:
pop {r1}
bx r1
.align 2, 0
_080C3AFC: .4byte gUnknown_20399E4
thumb_func_end sub_80C3AC8
thumb_func_start sub_80C3B00
sub_80C3B00: @ 80C3B00
push {lr}
ldr r0, _080C3B24 @ =gSaveBlock1Ptr
ldr r1, [r0]
movs r0, 0x4
ldrsb r0, [r1, r0]
lsls r0, 16
lsrs r0, 16
ldrb r1, [r1, 0x5]
lsls r1, 24
asrs r1, 24
lsls r1, 16
lsrs r1, 16
bl Overworld_GetMapHeaderByGroupAndId
ldrb r0, [r0, 0x14]
pop {r1}
bx r1
.align 2, 0
_080C3B24: .4byte gSaveBlock1Ptr
thumb_func_end sub_80C3B00
thumb_func_start sub_80C3B28
sub_80C3B28: @ 80C3B28
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
ldr r0, _080C3B58 @ =gSaveBlock1Ptr
ldr r1, [r0]
movs r0, 0x4
ldrsb r0, [r1, r0]
ldrb r1, [r1, 0x5]
lsls r1, 24
asrs r1, 24
bl get_map_light_level_by_bank_and_number
lsls r0, 24
lsrs r0, 24
subs r0, 0x1
cmp r0, 0x8
bhi _080C3B84
lsls r0, 2
ldr r1, _080C3B5C @ =_080C3B60
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080C3B58: .4byte gSaveBlock1Ptr
_080C3B5C: .4byte _080C3B60
.align 2, 0
_080C3B60:
.4byte _080C3B84
.4byte _080C3B84
.4byte _080C3B84
.4byte _080C3BAC
.4byte _080C3B84
.4byte _080C3B84
.4byte _080C3BAC
.4byte _080C3C2C
.4byte _080C3BF0
_080C3B84:
ldr r0, _080C3BA0 @ =gUnknown_20399E4
ldr r2, [r0]
ldr r1, _080C3BA4 @ =gMapHeader
ldrb r0, [r1, 0x14]
strh r0, [r2, 0x14]
ldr r0, [r1]
ldrh r1, [r0]
ldrh r0, [r0, 0x4]
mov r8, r0
ldr r0, _080C3BA8 @ =gSaveBlock1Ptr
ldr r0, [r0]
ldrh r4, [r0]
ldrh r5, [r0, 0x2]
b _080C3C9A
.align 2, 0
_080C3BA0: .4byte gUnknown_20399E4
_080C3BA4: .4byte gMapHeader
_080C3BA8: .4byte gSaveBlock1Ptr
_080C3BAC:
ldr r4, _080C3BE8 @ =gSaveBlock1Ptr
ldr r1, [r4]
adds r0, r1, 0
adds r0, 0x24
ldrb r0, [r0]
lsls r0, 24
asrs r0, 24
lsls r0, 16
lsrs r0, 16
adds r1, 0x25
ldrb r1, [r1]
lsls r1, 24
asrs r1, 24
lsls r1, 16
lsrs r1, 16
bl Overworld_GetMapHeaderByGroupAndId
adds r2, r0, 0
ldr r0, _080C3BEC @ =gUnknown_20399E4
ldr r1, [r0]
ldrb r0, [r2, 0x14]
strh r0, [r1, 0x14]
ldr r0, [r2]
ldrh r1, [r0]
ldrh r0, [r0, 0x4]
mov r8, r0
ldr r0, [r4]
ldrh r4, [r0, 0x28]
ldrh r5, [r0, 0x2A]
b _080C3C9A
.align 2, 0
_080C3BE8: .4byte gSaveBlock1Ptr
_080C3BEC: .4byte gUnknown_20399E4
_080C3BF0:
ldr r4, _080C3C24 @ =gSaveBlock1Ptr
ldr r1, [r4]
movs r0, 0x14
ldrsb r0, [r1, r0]
lsls r0, 16
lsrs r0, 16
ldrb r1, [r1, 0x15]
lsls r1, 24
asrs r1, 24
lsls r1, 16
lsrs r1, 16
bl Overworld_GetMapHeaderByGroupAndId
adds r2, r0, 0
ldr r0, _080C3C28 @ =gUnknown_20399E4
ldr r1, [r0]
ldrb r0, [r2, 0x14]
strh r0, [r1, 0x14]
ldr r0, [r2]
ldrh r1, [r0]
ldrh r0, [r0, 0x4]
mov r8, r0
ldr r0, [r4]
ldrh r4, [r0, 0x18]
ldrh r5, [r0, 0x1A]
b _080C3C9A
.align 2, 0
_080C3C24: .4byte gSaveBlock1Ptr
_080C3C28: .4byte gUnknown_20399E4
_080C3C2C:
ldr r4, _080C3C5C @ =gUnknown_20399E4
ldr r0, [r4]
ldr r1, _080C3C60 @ =gMapHeader
ldrb r1, [r1, 0x14]
strh r1, [r0, 0x14]
cmp r1, 0xC4
beq _080C3C68
ldr r0, _080C3C64 @ =gSaveBlock1Ptr
ldr r0, [r0]
adds r5, r0, 0
adds r5, 0x24
movs r0, 0
ldrsb r0, [r5, r0]
lsls r0, 16
lsrs r0, 16
movs r1, 0x1
ldrsb r1, [r5, r1]
lsls r1, 16
lsrs r1, 16
bl Overworld_GetMapHeaderByGroupAndId
adds r2, r0, 0
b _080C3C8E
.align 2, 0
_080C3C5C: .4byte gUnknown_20399E4
_080C3C60: .4byte gMapHeader
_080C3C64: .4byte gSaveBlock1Ptr
_080C3C68:
ldr r0, _080C3D30 @ =gSaveBlock1Ptr
ldr r0, [r0]
adds r5, r0, 0
adds r5, 0x14
ldrb r0, [r0, 0x14]
lsls r0, 24
asrs r0, 24
lsls r0, 16
lsrs r0, 16
movs r1, 0x1
ldrsb r1, [r5, r1]
lsls r1, 16
lsrs r1, 16
bl Overworld_GetMapHeaderByGroupAndId
adds r2, r0, 0
ldr r1, [r4]
ldrb r0, [r2, 0x14]
strh r0, [r1, 0x14]
_080C3C8E:
ldr r0, [r2]
ldrh r1, [r0]
ldrh r0, [r0, 0x4]
mov r8, r0
ldrh r4, [r5, 0x4]
ldrh r5, [r5, 0x6]
_080C3C9A:
ldr r0, _080C3D34 @ =gUnknown_20399E4
ldr r7, [r0]
ldrh r0, [r7, 0x14]
subs r0, 0x58
strh r0, [r7, 0x14]
ldr r0, _080C3D38 @ =gUnknown_83F2178
mov r10, r0
ldrh r0, [r7, 0x14]
lsls r0, 2
mov r9, r0
add r0, r10
ldrh r6, [r0]
adds r0, r1, 0
adds r1, r6, 0
bl __udivsi3
lsls r0, 16
lsrs r1, r0, 16
cmp r1, 0
bne _080C3CC4
movs r1, 0x1
_080C3CC4:
adds r0, r4, 0
bl __udivsi3
lsls r0, 16
lsrs r4, r0, 16
cmp r4, r6
bcc _080C3CD8
subs r0, r6, 0x1
lsls r0, 16
lsrs r4, r0, 16
_080C3CD8:
mov r0, r10
adds r0, 0x2
add r0, r9
ldrh r6, [r0]
mov r0, r8
adds r1, r6, 0
bl __udivsi3
lsls r0, 16
lsrs r1, r0, 16
cmp r1, 0
bne _080C3CF2
movs r1, 0x1
_080C3CF2:
adds r0, r5, 0
bl __udivsi3
lsls r0, 16
lsrs r5, r0, 16
cmp r5, r6
bcc _080C3D06
subs r0, r6, 0x1
lsls r0, 16
lsrs r5, r0, 16
_080C3D06:
ldr r1, _080C3D3C @ =gUnknown_83F1E60
mov r2, r9
adds r0, r2, r1
ldrh r0, [r0]
adds r0, r4, r0
strh r0, [r7]
ldrh r0, [r7, 0x14]
lsls r0, 2
adds r1, 0x2
adds r0, r1
ldrh r0, [r0]
adds r0, r5, r0
strh r0, [r7, 0x2]
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080C3D30: .4byte gSaveBlock1Ptr
_080C3D34: .4byte gUnknown_20399E4
_080C3D38: .4byte gUnknown_83F2178
_080C3D3C: .4byte gUnknown_83F1E60
thumb_func_end sub_80C3B28
thumb_func_start sub_80C3D40
sub_80C3D40: @ 80C3D40
push {r4,r5,lr}
+98
View File
@@ -310,6 +310,8 @@ extern const struct UnkStruct_80C4CF0 gUnknown_83F1C34;
extern const struct OamData gUnknown_83F1C3C;
extern const union AnimCmd *const gUnknown_83F1C50[];
extern const u8 *const gUnknown_83F1CAC[];
extern const u16 gUnknown_83F1E60[][2];
extern const u16 gUnknown_83F2178[][2];
static void RegionMap_DarkenPalette(u16 *pal, u16 size, u16 tint)
{
@@ -2440,3 +2442,99 @@ u8 sub_80C3878(u8 mapsec)
return 1;
}
}
u8 sub_80C3AC8(u8 a0)
{
switch (a0)
{
default:
return gUnknown_20399E4->field_016;
case 0:
return gUnknown_20399E4->field_016;
case 1:
return gUnknown_20399E4->field_018;
}
}
u8 sub_80C3B00(void)
{
return Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum)->regionMapSectionId;
}
void sub_80C3B28(void)
{
u16 width;
u32 divisor;
u16 height;
u16 x;
u16 y;
u32 r6;
const struct MapHeader * mapHeader;
struct WarpData * warp;
switch (get_map_light_level_by_bank_and_number(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum))
{
default:
case 1:
case 2:
case 3:
case 5:
case 6:
gUnknown_20399E4->field_014 = gMapHeader.regionMapSectionId;
width = gMapHeader.mapLayout->width;
height = gMapHeader.mapLayout->height;
x = gSaveBlock1Ptr->pos.x;
y = gSaveBlock1Ptr->pos.y;
break;
case 4:
case 7:
mapHeader = Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->escapeWarp.mapGroup, gSaveBlock1Ptr->escapeWarp.mapNum);
gUnknown_20399E4->field_014 = mapHeader->regionMapSectionId;
width = mapHeader->mapLayout->width;
height = mapHeader->mapLayout->height;
x = gSaveBlock1Ptr->escapeWarp.x;
y = gSaveBlock1Ptr->escapeWarp.y;
break;
case 9:
mapHeader = Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->warp2.mapGroup, gSaveBlock1Ptr->warp2.mapNum);
gUnknown_20399E4->field_014 = mapHeader->regionMapSectionId;
width = mapHeader->mapLayout->width;
height = mapHeader->mapLayout->height;
x = gSaveBlock1Ptr->warp2.x;
y = gSaveBlock1Ptr->warp2.y;
break;
case 8:
if ((gUnknown_20399E4->field_014 = gMapHeader.regionMapSectionId) != MAPSEC_SPECIAL_AREA)
{
warp = &gSaveBlock1Ptr->escapeWarp;
mapHeader = Overworld_GetMapHeaderByGroupAndId(warp->mapGroup, warp->mapNum);
}
else
{
warp = &gSaveBlock1Ptr->warp2;
mapHeader = Overworld_GetMapHeaderByGroupAndId(warp->mapGroup, warp->mapNum);
gUnknown_20399E4->field_014 = mapHeader->regionMapSectionId;
}
width = mapHeader->mapLayout->width;
height = mapHeader->mapLayout->height;
x = warp->x;
y = warp->y;
break;
}
gUnknown_20399E4->field_014 -= MAPSECS_KANTO;
divisor = width / gUnknown_83F2178[gUnknown_20399E4->field_014][0];
if (divisor == 0)
divisor = 1;
x /= divisor;
if (x >= gUnknown_83F2178[gUnknown_20399E4->field_014][0])
x = gUnknown_83F2178[gUnknown_20399E4->field_014][0] - 1;
divisor = height / gUnknown_83F2178[gUnknown_20399E4->field_014][1];
if (divisor == 0)
divisor = 1;
y /= divisor;
if (y >= gUnknown_83F2178[gUnknown_20399E4->field_014][1])
y = gUnknown_83F2178[gUnknown_20399E4->field_014][1] - 1;
gUnknown_20399E4->field_000 = x + gUnknown_83F1E60[gUnknown_20399E4->field_014][0];
gUnknown_20399E4->field_002 = y + gUnknown_83F1E60[gUnknown_20399E4->field_014][1];
}