through sub_80C3B28
This commit is contained in:
@@ -5,316 +5,6 @@
|
|||||||
|
|
||||||
.text
|
.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
|
thumb_func_start sub_80C3D40
|
||||||
sub_80C3D40: @ 80C3D40
|
sub_80C3D40: @ 80C3D40
|
||||||
push {r4,r5,lr}
|
push {r4,r5,lr}
|
||||||
|
|||||||
@@ -310,6 +310,8 @@ extern const struct UnkStruct_80C4CF0 gUnknown_83F1C34;
|
|||||||
extern const struct OamData gUnknown_83F1C3C;
|
extern const struct OamData gUnknown_83F1C3C;
|
||||||
extern const union AnimCmd *const gUnknown_83F1C50[];
|
extern const union AnimCmd *const gUnknown_83F1C50[];
|
||||||
extern const u8 *const gUnknown_83F1CAC[];
|
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)
|
static void RegionMap_DarkenPalette(u16 *pal, u16 size, u16 tint)
|
||||||
{
|
{
|
||||||
@@ -2440,3 +2442,99 @@ u8 sub_80C3878(u8 mapsec)
|
|||||||
return 1;
|
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];
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user