through sub_80C3B28
This commit is contained in:
@@ -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}
|
||||
|
||||
@@ -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];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user