through fillEastConnection
This commit is contained in:
+8
-408
@@ -5,406 +5,6 @@
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start map_copy_with_padding
|
||||
map_copy_with_padding: @ 8058A70
|
||||
push {r4-r7,lr}
|
||||
mov r7, r9
|
||||
mov r6, r8
|
||||
push {r6,r7}
|
||||
adds r7, r0, 0
|
||||
lsls r1, 16
|
||||
lsrs r1, 16
|
||||
mov r8, r1
|
||||
lsls r2, 16
|
||||
lsrs r2, 16
|
||||
ldr r0, _08058AC4 @ =VMap
|
||||
ldr r4, [r0, 0x8]
|
||||
ldr r1, [r0]
|
||||
lsls r0, r1, 3
|
||||
subs r0, r1
|
||||
lsls r0, 1
|
||||
adds r0, 0xE
|
||||
adds r4, r0
|
||||
cmp r2, 0
|
||||
beq _08058AB8
|
||||
mov r0, r8
|
||||
lsls r6, r0, 1
|
||||
adds r5, r2, 0
|
||||
movs r0, 0x1E
|
||||
adds r0, r6
|
||||
mov r9, r0
|
||||
_08058AA4:
|
||||
adds r0, r7, 0
|
||||
adds r1, r4, 0
|
||||
mov r2, r8
|
||||
bl CpuSet
|
||||
add r4, r9
|
||||
adds r7, r6
|
||||
subs r5, 0x1
|
||||
cmp r5, 0
|
||||
bne _08058AA4
|
||||
_08058AB8:
|
||||
pop {r3,r4}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08058AC4: .4byte VMap
|
||||
thumb_func_end map_copy_with_padding
|
||||
|
||||
thumb_func_start mapheader_copy_mapdata_of_adjacent_maps
|
||||
mapheader_copy_mapdata_of_adjacent_maps: @ 8058AC8
|
||||
push {r4-r7,lr}
|
||||
adds r6, r0, 0
|
||||
ldr r2, _08058B00 @ =gUnknown_2036E24
|
||||
ldr r0, _08058B04 @ =gUnknown_8352EEC
|
||||
ldr r0, [r0]
|
||||
str r0, [r2]
|
||||
ldr r0, [r6, 0xC]
|
||||
cmp r0, 0
|
||||
beq _08058B4C
|
||||
ldr r1, [r0]
|
||||
ldr r5, [r0, 0x4]
|
||||
cmp r1, 0
|
||||
ble _08058B4C
|
||||
adds r4, r2, 0
|
||||
adds r7, r1, 0
|
||||
_08058AE6:
|
||||
adds r0, r5, 0
|
||||
bl mapconnection_get_mapheader
|
||||
adds r1, r0, 0
|
||||
ldr r2, [r5, 0x4]
|
||||
ldrb r0, [r5]
|
||||
cmp r0, 0x2
|
||||
beq _08058B1E
|
||||
cmp r0, 0x2
|
||||
bgt _08058B08
|
||||
cmp r0, 0x1
|
||||
beq _08058B12
|
||||
b _08058B44
|
||||
.align 2, 0
|
||||
_08058B00: .4byte gUnknown_2036E24
|
||||
_08058B04: .4byte gUnknown_8352EEC
|
||||
_08058B08:
|
||||
cmp r0, 0x3
|
||||
beq _08058B2A
|
||||
cmp r0, 0x4
|
||||
beq _08058B36
|
||||
b _08058B44
|
||||
_08058B12:
|
||||
adds r0, r6, 0
|
||||
bl fillSouthConnection
|
||||
ldrb r0, [r4]
|
||||
movs r1, 0x1
|
||||
b _08058B40
|
||||
_08058B1E:
|
||||
adds r0, r6, 0
|
||||
bl fillNorthConnection
|
||||
ldrb r0, [r4]
|
||||
movs r1, 0x2
|
||||
b _08058B40
|
||||
_08058B2A:
|
||||
adds r0, r6, 0
|
||||
bl fillWestConnection
|
||||
ldrb r0, [r4]
|
||||
movs r1, 0x4
|
||||
b _08058B40
|
||||
_08058B36:
|
||||
adds r0, r6, 0
|
||||
bl fillEastConnection
|
||||
ldrb r0, [r4]
|
||||
movs r1, 0x8
|
||||
_08058B40:
|
||||
orrs r0, r1
|
||||
strb r0, [r4]
|
||||
_08058B44:
|
||||
subs r7, 0x1
|
||||
adds r5, 0xC
|
||||
cmp r7, 0
|
||||
bne _08058AE6
|
||||
_08058B4C:
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end mapheader_copy_mapdata_of_adjacent_maps
|
||||
|
||||
thumb_func_start sub_8058B54
|
||||
sub_8058B54: @ 8058B54
|
||||
push {r4-r7,lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
ldr r5, [sp, 0x18]
|
||||
ldr r4, [r2]
|
||||
ldr r7, [r4]
|
||||
adds r2, r7, 0
|
||||
muls r2, r5
|
||||
adds r2, r3
|
||||
lsls r2, 1
|
||||
ldr r3, [r4, 0xC]
|
||||
adds r6, r3, r2
|
||||
ldr r3, _08058BB0 @ =VMap
|
||||
ldr r2, [r3]
|
||||
muls r1, r2
|
||||
adds r1, r0
|
||||
lsls r1, 1
|
||||
ldr r0, [r3, 0x8]
|
||||
adds r5, r0, r1
|
||||
ldr r0, [sp, 0x20]
|
||||
cmp r0, 0
|
||||
ble _08058BA6
|
||||
adds r4, r0, 0
|
||||
ldr r3, _08058BB4 @ =0x001fffff
|
||||
mov r8, r3
|
||||
_08058B86:
|
||||
adds r0, r6, 0
|
||||
adds r1, r5, 0
|
||||
ldr r2, [sp, 0x1C]
|
||||
mov r3, r8
|
||||
ands r2, r3
|
||||
bl CpuSet
|
||||
ldr r0, _08058BB0 @ =VMap
|
||||
ldr r0, [r0]
|
||||
lsls r0, 1
|
||||
adds r5, r0
|
||||
lsls r0, r7, 1
|
||||
adds r6, r0
|
||||
subs r4, 0x1
|
||||
cmp r4, 0
|
||||
bne _08058B86
|
||||
_08058BA6:
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08058BB0: .4byte VMap
|
||||
_08058BB4: .4byte 0x001fffff
|
||||
thumb_func_end sub_8058B54
|
||||
|
||||
thumb_func_start fillSouthConnection
|
||||
fillSouthConnection: @ 8058BB8
|
||||
push {r4-r7,lr}
|
||||
sub sp, 0xC
|
||||
adds r3, r0, 0
|
||||
adds r5, r1, 0
|
||||
cmp r5, 0
|
||||
beq _08058C12
|
||||
ldr r0, [r5]
|
||||
ldr r4, [r0]
|
||||
adds r2, 0x7
|
||||
ldr r0, [r3]
|
||||
ldr r0, [r0, 0x4]
|
||||
adds r7, r0, 0x7
|
||||
cmp r2, 0
|
||||
bge _08058BEC
|
||||
negs r6, r2
|
||||
adds r2, r4
|
||||
ldr r0, _08058BE8 @ =VMap
|
||||
ldr r3, [r0]
|
||||
cmp r2, r3
|
||||
bge _08058BE2
|
||||
adds r3, r2, 0
|
||||
_08058BE2:
|
||||
movs r2, 0
|
||||
b _08058BFC
|
||||
.align 2, 0
|
||||
_08058BE8: .4byte VMap
|
||||
_08058BEC:
|
||||
movs r6, 0
|
||||
adds r0, r2, r4
|
||||
ldr r1, _08058C1C @ =VMap
|
||||
ldr r1, [r1]
|
||||
subs r3, r1, r2
|
||||
cmp r0, r1
|
||||
bge _08058BFC
|
||||
adds r3, r4, 0
|
||||
_08058BFC:
|
||||
movs r0, 0
|
||||
str r0, [sp]
|
||||
str r3, [sp, 0x4]
|
||||
movs r0, 0x7
|
||||
str r0, [sp, 0x8]
|
||||
adds r0, r2, 0
|
||||
adds r1, r7, 0
|
||||
adds r2, r5, 0
|
||||
adds r3, r6, 0
|
||||
bl sub_8058B54
|
||||
_08058C12:
|
||||
add sp, 0xC
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08058C1C: .4byte VMap
|
||||
thumb_func_end fillSouthConnection
|
||||
|
||||
thumb_func_start fillNorthConnection
|
||||
fillNorthConnection: @ 8058C20
|
||||
push {r4-r7,lr}
|
||||
sub sp, 0xC
|
||||
adds r5, r1, 0
|
||||
cmp r5, 0
|
||||
beq _08058C74
|
||||
ldr r0, [r5]
|
||||
ldr r4, [r0]
|
||||
ldr r0, [r0, 0x4]
|
||||
adds r2, 0x7
|
||||
subs r7, r0, 0x7
|
||||
cmp r2, 0
|
||||
bge _08058C50
|
||||
negs r6, r2
|
||||
adds r2, r4
|
||||
ldr r0, _08058C4C @ =VMap
|
||||
ldr r3, [r0]
|
||||
cmp r2, r3
|
||||
bge _08058C46
|
||||
adds r3, r2, 0
|
||||
_08058C46:
|
||||
movs r2, 0
|
||||
b _08058C60
|
||||
.align 2, 0
|
||||
_08058C4C: .4byte VMap
|
||||
_08058C50:
|
||||
movs r6, 0
|
||||
adds r0, r2, r4
|
||||
ldr r1, _08058C7C @ =VMap
|
||||
ldr r1, [r1]
|
||||
subs r3, r1, r2
|
||||
cmp r0, r1
|
||||
bge _08058C60
|
||||
adds r3, r4, 0
|
||||
_08058C60:
|
||||
str r7, [sp]
|
||||
str r3, [sp, 0x4]
|
||||
movs r0, 0x7
|
||||
str r0, [sp, 0x8]
|
||||
adds r0, r2, 0
|
||||
movs r1, 0
|
||||
adds r2, r5, 0
|
||||
adds r3, r6, 0
|
||||
bl sub_8058B54
|
||||
_08058C74:
|
||||
add sp, 0xC
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08058C7C: .4byte VMap
|
||||
thumb_func_end fillNorthConnection
|
||||
|
||||
thumb_func_start fillWestConnection
|
||||
fillWestConnection: @ 8058C80
|
||||
push {r4-r7,lr}
|
||||
sub sp, 0xC
|
||||
adds r5, r1, 0
|
||||
cmp r5, 0
|
||||
beq _08058CD4
|
||||
ldr r0, [r5]
|
||||
ldr r1, [r0]
|
||||
ldr r4, [r0, 0x4]
|
||||
adds r2, 0x7
|
||||
subs r7, r1, 0x7
|
||||
cmp r2, 0
|
||||
bge _08058CB0
|
||||
negs r6, r2
|
||||
adds r1, r2, r4
|
||||
ldr r0, _08058CAC @ =VMap
|
||||
ldr r3, [r0, 0x4]
|
||||
cmp r1, r3
|
||||
bge _08058CA6
|
||||
adds r3, r1, 0
|
||||
_08058CA6:
|
||||
movs r2, 0
|
||||
b _08058CC0
|
||||
.align 2, 0
|
||||
_08058CAC: .4byte VMap
|
||||
_08058CB0:
|
||||
movs r6, 0
|
||||
adds r0, r2, r4
|
||||
ldr r1, _08058CDC @ =VMap
|
||||
ldr r1, [r1, 0x4]
|
||||
subs r3, r1, r2
|
||||
cmp r0, r1
|
||||
bge _08058CC0
|
||||
adds r3, r4, 0
|
||||
_08058CC0:
|
||||
str r6, [sp]
|
||||
movs r0, 0x7
|
||||
str r0, [sp, 0x4]
|
||||
str r3, [sp, 0x8]
|
||||
movs r0, 0
|
||||
adds r1, r2, 0
|
||||
adds r2, r5, 0
|
||||
adds r3, r7, 0
|
||||
bl sub_8058B54
|
||||
_08058CD4:
|
||||
add sp, 0xC
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08058CDC: .4byte VMap
|
||||
thumb_func_end fillWestConnection
|
||||
|
||||
thumb_func_start fillEastConnection
|
||||
fillEastConnection: @ 8058CE0
|
||||
push {r4-r7,lr}
|
||||
sub sp, 0xC
|
||||
adds r3, r0, 0
|
||||
adds r5, r1, 0
|
||||
cmp r5, 0
|
||||
beq _08058D38
|
||||
ldr r0, [r5]
|
||||
ldr r4, [r0, 0x4]
|
||||
ldr r0, [r3]
|
||||
ldr r0, [r0]
|
||||
adds r7, r0, 0x7
|
||||
adds r2, 0x7
|
||||
cmp r2, 0
|
||||
bge _08058D14
|
||||
negs r6, r2
|
||||
adds r1, r2, r4
|
||||
ldr r0, _08058D10 @ =VMap
|
||||
ldr r3, [r0, 0x4]
|
||||
cmp r1, r3
|
||||
bge _08058D0A
|
||||
adds r3, r1, 0
|
||||
_08058D0A:
|
||||
movs r2, 0
|
||||
b _08058D24
|
||||
.align 2, 0
|
||||
_08058D10: .4byte VMap
|
||||
_08058D14:
|
||||
movs r6, 0
|
||||
adds r0, r2, r4
|
||||
ldr r1, _08058D40 @ =VMap
|
||||
ldr r1, [r1, 0x4]
|
||||
subs r3, r1, r2
|
||||
cmp r0, r1
|
||||
bge _08058D24
|
||||
adds r3, r4, 0
|
||||
_08058D24:
|
||||
str r6, [sp]
|
||||
movs r0, 0x8
|
||||
str r0, [sp, 0x4]
|
||||
str r3, [sp, 0x8]
|
||||
adds r0, r7, 0
|
||||
adds r1, r2, 0
|
||||
adds r2, r5, 0
|
||||
movs r3, 0
|
||||
bl sub_8058B54
|
||||
_08058D38:
|
||||
add sp, 0xC
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08058D40: .4byte VMap
|
||||
thumb_func_end fillEastConnection
|
||||
|
||||
thumb_func_start MapGridGetZCoordAt
|
||||
MapGridGetZCoordAt: @ 8058D44
|
||||
push {r4-r7,lr}
|
||||
@@ -1293,7 +893,7 @@ _080593B0:
|
||||
subs r0, 0x8
|
||||
cmp r7, r0
|
||||
blt _080593DC
|
||||
ldr r0, _080593D8 @ =gUnknown_2036E24
|
||||
ldr r0, _080593D8 @ =gMapConnectionFlags
|
||||
ldrb r1, [r0]
|
||||
movs r0, 0x8
|
||||
ands r0, r1
|
||||
@@ -1305,11 +905,11 @@ _080593B0:
|
||||
_080593CC: .4byte gMapHeader
|
||||
_080593D0: .4byte 0x000003ff
|
||||
_080593D4: .4byte VMap
|
||||
_080593D8: .4byte gUnknown_2036E24
|
||||
_080593D8: .4byte gMapConnectionFlags
|
||||
_080593DC:
|
||||
cmp r7, 0x6
|
||||
bgt _080593F4
|
||||
ldr r0, _080593F0 @ =gUnknown_2036E24
|
||||
ldr r0, _080593F0 @ =gMapConnectionFlags
|
||||
ldrb r1, [r0]
|
||||
movs r0, 0x4
|
||||
ands r0, r1
|
||||
@@ -1318,13 +918,13 @@ _080593DC:
|
||||
movs r0, 0x3
|
||||
b _08059432
|
||||
.align 2, 0
|
||||
_080593F0: .4byte gUnknown_2036E24
|
||||
_080593F0: .4byte gMapConnectionFlags
|
||||
_080593F4:
|
||||
ldr r0, [r1, 0x4]
|
||||
subs r0, 0x7
|
||||
cmp r8, r0
|
||||
blt _08059410
|
||||
ldr r0, _0805940C @ =gUnknown_2036E24
|
||||
ldr r0, _0805940C @ =gMapConnectionFlags
|
||||
ldrb r1, [r0]
|
||||
movs r0, 0x1
|
||||
ands r0, r1
|
||||
@@ -1333,12 +933,12 @@ _080593F4:
|
||||
movs r0, 0x1
|
||||
b _08059432
|
||||
.align 2, 0
|
||||
_0805940C: .4byte gUnknown_2036E24
|
||||
_0805940C: .4byte gMapConnectionFlags
|
||||
_08059410:
|
||||
mov r0, r8
|
||||
cmp r0, 0x6
|
||||
bgt _08059430
|
||||
ldr r0, _08059428 @ =gUnknown_2036E24
|
||||
ldr r0, _08059428 @ =gMapConnectionFlags
|
||||
ldrb r1, [r0]
|
||||
movs r0, 0x2
|
||||
ands r0, r1
|
||||
@@ -1349,7 +949,7 @@ _08059422:
|
||||
negs r0, r0
|
||||
b _08059432
|
||||
.align 2, 0
|
||||
_08059428: .4byte gUnknown_2036E24
|
||||
_08059428: .4byte gMapConnectionFlags
|
||||
_0805942C:
|
||||
movs r0, 0x2
|
||||
b _08059432
|
||||
|
||||
+2
-2
@@ -5,8 +5,8 @@
|
||||
gUnknown_8352754:: @ 8352754
|
||||
.incbin "baserom.gba", 0x352754, 0x798
|
||||
|
||||
gUnknown_8352EEC:: @ 8352EEC
|
||||
.incbin "baserom.gba", 0x352EEC, 0x4
|
||||
sDummyConnectionFlags:: @ 8352EEC
|
||||
.4byte 0
|
||||
|
||||
gUnknown_8352EF0:: @ 8352EF0
|
||||
.incbin "baserom.gba", 0x352EF0, 0x20
|
||||
|
||||
+283
-1
@@ -3,13 +3,29 @@
|
||||
#include "script.h"
|
||||
#include "fieldmap.h"
|
||||
|
||||
struct ConnectionFlags
|
||||
{
|
||||
u8 south:1;
|
||||
u8 north:1;
|
||||
u8 west:1;
|
||||
u8 east:1;
|
||||
};
|
||||
|
||||
void sub_8058A00(struct MapHeader *mapHeader);
|
||||
void map_copy_with_padding(u16 *map, u16 width, u16 height);
|
||||
void mapheader_copy_mapdata_of_adjacent_maps(struct MapHeader *mapHeader);
|
||||
void fillSouthConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset);
|
||||
void fillNorthConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset);
|
||||
void fillWestConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset);
|
||||
void fillEastConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset);
|
||||
void sub_80591C4(void);
|
||||
|
||||
struct BackupMapData VMap;
|
||||
EWRAM_DATA u16 gBackupMapData[VIRTUAL_MAP_SIZE];
|
||||
EWRAM_DATA u16 gBackupMapData[VIRTUAL_MAP_SIZE] = {};
|
||||
EWRAM_DATA struct MapHeader gMapHeader = {};
|
||||
EWRAM_DATA struct ConnectionFlags gMapConnectionFlags = {};
|
||||
|
||||
extern const struct ConnectionFlags sDummyConnectionFlags;
|
||||
|
||||
const struct MapHeader * mapconnection_get_mapheader(struct MapConnection * connection)
|
||||
{
|
||||
@@ -40,3 +56,269 @@ void sub_8058A00(struct MapHeader * mapHeader)
|
||||
map_copy_with_padding(mapData->map, mapData->width, mapData->height);
|
||||
mapheader_copy_mapdata_of_adjacent_maps(mapHeader);
|
||||
}
|
||||
|
||||
void map_copy_with_padding(u16 *map, u16 width, u16 height)
|
||||
{
|
||||
s32 y;
|
||||
u16 *dest = VMap.map;
|
||||
dest += VMap.Xsize * 7 + 7;
|
||||
|
||||
for (y = 0; y < height; y++)
|
||||
{
|
||||
CpuCopy16(map, dest, width * sizeof(u16));
|
||||
dest += width + 15;
|
||||
map += width;
|
||||
}
|
||||
}
|
||||
|
||||
void mapheader_copy_mapdata_of_adjacent_maps(struct MapHeader *mapHeader)
|
||||
{
|
||||
int count;
|
||||
struct MapConnection *connection;
|
||||
int i;
|
||||
|
||||
gMapConnectionFlags = sDummyConnectionFlags;
|
||||
|
||||
/*
|
||||
* This null pointer check is new to FireRed. It was kept in
|
||||
* Emerald, with the above struct assignment moved to after
|
||||
* this check.
|
||||
*/
|
||||
if (mapHeader->connections)
|
||||
{
|
||||
count = mapHeader->connections->count;
|
||||
connection = mapHeader->connections->connections;
|
||||
// Emerald puts this line here instead:
|
||||
// gMapConnectionFlags = sDummyConnectionFlags;
|
||||
for (i = 0; i < count; i++, connection++)
|
||||
{
|
||||
struct MapHeader const *cMap = mapconnection_get_mapheader(connection);
|
||||
u32 offset = connection->offset;
|
||||
switch (connection->direction)
|
||||
{
|
||||
case CONNECTION_SOUTH:
|
||||
fillSouthConnection(mapHeader, cMap, offset);
|
||||
gMapConnectionFlags.south = 1;
|
||||
break;
|
||||
case CONNECTION_NORTH:
|
||||
fillNorthConnection(mapHeader, cMap, offset);
|
||||
gMapConnectionFlags.north = 1;
|
||||
break;
|
||||
case CONNECTION_WEST:
|
||||
fillWestConnection(mapHeader, cMap, offset);
|
||||
gMapConnectionFlags.west = 1;
|
||||
break;
|
||||
case CONNECTION_EAST:
|
||||
fillEastConnection(mapHeader, cMap, offset);
|
||||
gMapConnectionFlags.east = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8058B54(s32 x, s32 y, const struct MapHeader *connectedMapHeader, s32 x2, s32 y2, s32 width, s32 height)
|
||||
{
|
||||
int i;
|
||||
u16 *src;
|
||||
u16 *dest;
|
||||
int mapWidth;
|
||||
|
||||
mapWidth = connectedMapHeader->mapData->width;
|
||||
src = &connectedMapHeader->mapData->map[mapWidth * y2 + x2];
|
||||
dest = &VMap.map[VMap.Xsize * y + x];
|
||||
|
||||
for (i = 0; i < height; i++)
|
||||
{
|
||||
CpuCopy16(src, dest, width * 2);
|
||||
dest += VMap.Xsize;
|
||||
src += mapWidth;
|
||||
}
|
||||
}
|
||||
|
||||
void fillSouthConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset)
|
||||
{
|
||||
int x, y;
|
||||
int x2;
|
||||
int width;
|
||||
int cWidth;
|
||||
|
||||
if (connectedMapHeader)
|
||||
{
|
||||
cWidth = connectedMapHeader->mapData->width;
|
||||
x = offset + 7;
|
||||
y = mapHeader->mapData->height + 7;
|
||||
if (x < 0)
|
||||
{
|
||||
x2 = -x;
|
||||
x += cWidth;
|
||||
if (x < VMap.Xsize)
|
||||
{
|
||||
width = x;
|
||||
}
|
||||
else
|
||||
{
|
||||
width = VMap.Xsize;
|
||||
}
|
||||
x = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
x2 = 0;
|
||||
if (x + cWidth < VMap.Xsize)
|
||||
{
|
||||
width = cWidth;
|
||||
}
|
||||
else
|
||||
{
|
||||
width = VMap.Xsize - x;
|
||||
}
|
||||
}
|
||||
|
||||
sub_8058B54(
|
||||
x, y,
|
||||
connectedMapHeader,
|
||||
x2, /*y2*/ 0,
|
||||
width, /*height*/ 7);
|
||||
}
|
||||
}
|
||||
|
||||
void fillNorthConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset)
|
||||
{
|
||||
int x;
|
||||
int x2, y2;
|
||||
int width;
|
||||
int cWidth, cHeight;
|
||||
|
||||
if (connectedMapHeader)
|
||||
{
|
||||
cWidth = connectedMapHeader->mapData->width;
|
||||
cHeight = connectedMapHeader->mapData->height;
|
||||
x = offset + 7;
|
||||
y2 = cHeight - 7;
|
||||
if (x < 0)
|
||||
{
|
||||
x2 = -x;
|
||||
x += cWidth;
|
||||
if (x < VMap.Xsize)
|
||||
{
|
||||
width = x;
|
||||
}
|
||||
else
|
||||
{
|
||||
width = VMap.Xsize;
|
||||
}
|
||||
x = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
x2 = 0;
|
||||
if (x + cWidth < VMap.Xsize)
|
||||
{
|
||||
width = cWidth;
|
||||
}
|
||||
else
|
||||
{
|
||||
width = VMap.Xsize - x;
|
||||
}
|
||||
}
|
||||
|
||||
sub_8058B54(
|
||||
x, /*y*/ 0,
|
||||
connectedMapHeader,
|
||||
x2, y2,
|
||||
width, /*height*/ 7);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
void fillWestConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset)
|
||||
{
|
||||
int y;
|
||||
int x2, y2;
|
||||
int height;
|
||||
int cWidth, cHeight;
|
||||
if (connectedMapHeader)
|
||||
{
|
||||
cWidth = connectedMapHeader->mapData->width;
|
||||
cHeight = connectedMapHeader->mapData->height;
|
||||
y = offset + 7;
|
||||
x2 = cWidth - 7;
|
||||
if (y < 0)
|
||||
{
|
||||
y2 = -y;
|
||||
if (y + cHeight < VMap.Ysize)
|
||||
{
|
||||
height = y + cHeight;
|
||||
}
|
||||
else
|
||||
{
|
||||
height = VMap.Ysize;
|
||||
}
|
||||
y = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
y2 = 0;
|
||||
if (y + cHeight < VMap.Ysize)
|
||||
{
|
||||
height = cHeight;
|
||||
}
|
||||
else
|
||||
{
|
||||
height = VMap.Ysize - y;
|
||||
}
|
||||
}
|
||||
|
||||
sub_8058B54(
|
||||
/*x*/ 0, y,
|
||||
connectedMapHeader,
|
||||
x2, y2,
|
||||
/*width*/ 7, height);
|
||||
}
|
||||
}
|
||||
|
||||
void fillEastConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset)
|
||||
{
|
||||
int x, y;
|
||||
int y2;
|
||||
int height;
|
||||
int cHeight;
|
||||
if (connectedMapHeader)
|
||||
{
|
||||
cHeight = connectedMapHeader->mapData->height;
|
||||
x = mapHeader->mapData->width + 7;
|
||||
y = offset + 7;
|
||||
if (y < 0)
|
||||
{
|
||||
y2 = -y;
|
||||
if (y + cHeight < VMap.Ysize)
|
||||
{
|
||||
height = y + cHeight;
|
||||
}
|
||||
else
|
||||
{
|
||||
height = VMap.Ysize;
|
||||
}
|
||||
y = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
y2 = 0;
|
||||
if (y + cHeight < VMap.Ysize)
|
||||
{
|
||||
height = cHeight;
|
||||
}
|
||||
else
|
||||
{
|
||||
height = VMap.Ysize - y;
|
||||
}
|
||||
}
|
||||
|
||||
sub_8058B54(
|
||||
x, y,
|
||||
connectedMapHeader,
|
||||
/*x2*/ 0, y2,
|
||||
/*width*/ 8, height);
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -602,7 +602,7 @@ gMapHeader: @ 2036DFC
|
||||
gUnknown_2036E18: @ 2036E18
|
||||
.space 0xC
|
||||
|
||||
gUnknown_2036E24: @ 2036E24
|
||||
gMapConnectionFlags: @ 2036E24
|
||||
.space 0x4
|
||||
|
||||
gUnknown_2036E28: @ 2036E28
|
||||
|
||||
Reference in New Issue
Block a user