through sub_8059024
This commit is contained in:
+1
-1
@@ -557,7 +557,7 @@ _0805A98C:
|
|||||||
asrs r0, 16
|
asrs r0, 16
|
||||||
lsls r1, r7, 16
|
lsls r1, r7, 16
|
||||||
asrs r1, 16
|
asrs r1, 16
|
||||||
bl sub_8058F8C
|
bl MapGridGetMetatileLayerTypeAt
|
||||||
lsls r0, 24
|
lsls r0, 24
|
||||||
lsrs r0, 24
|
lsrs r0, 24
|
||||||
lsls r1, r4, 4
|
lsls r1, r4, 4
|
||||||
|
|||||||
-202
@@ -5,208 +5,6 @@
|
|||||||
|
|
||||||
.text
|
.text
|
||||||
|
|
||||||
thumb_func_start sub_8058F1C
|
|
||||||
sub_8058F1C: @ 8058F1C
|
|
||||||
push {lr}
|
|
||||||
adds r2, r0, 0
|
|
||||||
lsls r1, 24
|
|
||||||
lsrs r3, r1, 24
|
|
||||||
cmp r3, 0x7
|
|
||||||
bhi _08058F3A
|
|
||||||
ldr r1, _08058F40 @ =gUnknown_8352EF0
|
|
||||||
lsls r0, r3, 2
|
|
||||||
adds r0, r1
|
|
||||||
ldr r0, [r0]
|
|
||||||
ands r2, r0
|
|
||||||
ldr r0, _08058F44 @ =gUnknown_8352F10
|
|
||||||
adds r0, r3, r0
|
|
||||||
ldrb r0, [r0]
|
|
||||||
lsrs r2, r0
|
|
||||||
_08058F3A:
|
|
||||||
adds r0, r2, 0
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
.align 2, 0
|
|
||||||
_08058F40: .4byte gUnknown_8352EF0
|
|
||||||
_08058F44: .4byte gUnknown_8352F10
|
|
||||||
thumb_func_end sub_8058F1C
|
|
||||||
|
|
||||||
thumb_func_start sub_8058F48
|
|
||||||
sub_8058F48: @ 8058F48
|
|
||||||
push {r4,lr}
|
|
||||||
adds r4, r2, 0
|
|
||||||
lsls r4, 24
|
|
||||||
lsrs r4, 24
|
|
||||||
lsls r0, 16
|
|
||||||
asrs r0, 16
|
|
||||||
lsls r1, 16
|
|
||||||
asrs r1, 16
|
|
||||||
bl MapGridGetMetatileIdAt
|
|
||||||
adds r1, r0, 0
|
|
||||||
lsls r1, 16
|
|
||||||
lsrs r1, 16
|
|
||||||
ldr r0, _08058F74 @ =gMapHeader
|
|
||||||
ldr r0, [r0]
|
|
||||||
adds r2, r4, 0
|
|
||||||
bl sub_8059080
|
|
||||||
pop {r4}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
.align 2, 0
|
|
||||||
_08058F74: .4byte gMapHeader
|
|
||||||
thumb_func_end sub_8058F48
|
|
||||||
|
|
||||||
thumb_func_start MapGridGetMetatileBehaviorAt
|
|
||||||
MapGridGetMetatileBehaviorAt: @ 8058F78
|
|
||||||
push {lr}
|
|
||||||
lsls r0, 16
|
|
||||||
asrs r0, 16
|
|
||||||
lsls r1, 16
|
|
||||||
asrs r1, 16
|
|
||||||
movs r2, 0
|
|
||||||
bl sub_8058F48
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end MapGridGetMetatileBehaviorAt
|
|
||||||
|
|
||||||
thumb_func_start sub_8058F8C
|
|
||||||
sub_8058F8C: @ 8058F8C
|
|
||||||
push {lr}
|
|
||||||
lsls r0, 16
|
|
||||||
asrs r0, 16
|
|
||||||
lsls r1, 16
|
|
||||||
asrs r1, 16
|
|
||||||
movs r2, 0x6
|
|
||||||
bl sub_8058F48
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end sub_8058F8C
|
|
||||||
|
|
||||||
thumb_func_start MapGridSetMetatileIdAt
|
|
||||||
MapGridSetMetatileIdAt: @ 8058FA4
|
|
||||||
push {r4,r5,lr}
|
|
||||||
adds r3, r0, 0
|
|
||||||
lsls r2, 16
|
|
||||||
lsrs r5, r2, 16
|
|
||||||
cmp r3, 0
|
|
||||||
blt _08058FDC
|
|
||||||
ldr r2, _08058FE4 @ =VMap
|
|
||||||
ldr r4, [r2]
|
|
||||||
cmp r3, r4
|
|
||||||
bge _08058FDC
|
|
||||||
cmp r1, 0
|
|
||||||
blt _08058FDC
|
|
||||||
ldr r0, [r2, 0x4]
|
|
||||||
cmp r1, r0
|
|
||||||
bge _08058FDC
|
|
||||||
muls r1, r4
|
|
||||||
adds r1, r3, r1
|
|
||||||
ldr r0, [r2, 0x8]
|
|
||||||
lsls r1, 1
|
|
||||||
adds r1, r0
|
|
||||||
ldrh r0, [r1]
|
|
||||||
movs r2, 0xF0
|
|
||||||
lsls r2, 8
|
|
||||||
ands r2, r0
|
|
||||||
ldr r0, _08058FE8 @ =0x00000fff
|
|
||||||
ands r0, r5
|
|
||||||
orrs r2, r0
|
|
||||||
strh r2, [r1]
|
|
||||||
_08058FDC:
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_08058FE4: .4byte VMap
|
|
||||||
_08058FE8: .4byte 0x00000fff
|
|
||||||
thumb_func_end MapGridSetMetatileIdAt
|
|
||||||
|
|
||||||
thumb_func_start MapGridSetMetatileEntryAt
|
|
||||||
MapGridSetMetatileEntryAt: @ 8058FEC
|
|
||||||
push {r4,r5,lr}
|
|
||||||
adds r3, r0, 0
|
|
||||||
lsls r2, 16
|
|
||||||
lsrs r5, r2, 16
|
|
||||||
cmp r3, 0
|
|
||||||
blt _08059018
|
|
||||||
ldr r2, _08059020 @ =VMap
|
|
||||||
ldr r4, [r2]
|
|
||||||
cmp r3, r4
|
|
||||||
bge _08059018
|
|
||||||
cmp r1, 0
|
|
||||||
blt _08059018
|
|
||||||
ldr r0, [r2, 0x4]
|
|
||||||
cmp r1, r0
|
|
||||||
bge _08059018
|
|
||||||
adds r0, r4, 0
|
|
||||||
muls r0, r1
|
|
||||||
adds r0, r3, r0
|
|
||||||
ldr r1, [r2, 0x8]
|
|
||||||
lsls r0, 1
|
|
||||||
adds r0, r1
|
|
||||||
strh r5, [r0]
|
|
||||||
_08059018:
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_08059020: .4byte VMap
|
|
||||||
thumb_func_end MapGridSetMetatileEntryAt
|
|
||||||
|
|
||||||
thumb_func_start sub_8059024
|
|
||||||
sub_8059024: @ 8059024
|
|
||||||
push {r4,r5,lr}
|
|
||||||
adds r4, r0, 0
|
|
||||||
adds r3, r1, 0
|
|
||||||
adds r5, r2, 0
|
|
||||||
cmp r4, 0
|
|
||||||
blt _08059076
|
|
||||||
ldr r2, _08059060 @ =VMap
|
|
||||||
ldr r1, [r2]
|
|
||||||
cmp r4, r1
|
|
||||||
bge _08059076
|
|
||||||
cmp r3, 0
|
|
||||||
blt _08059076
|
|
||||||
ldr r0, [r2, 0x4]
|
|
||||||
cmp r3, r0
|
|
||||||
bge _08059076
|
|
||||||
cmp r5, 0
|
|
||||||
beq _08059064
|
|
||||||
adds r0, r1, 0
|
|
||||||
muls r0, r3
|
|
||||||
adds r0, r4, r0
|
|
||||||
ldr r1, [r2, 0x8]
|
|
||||||
lsls r0, 1
|
|
||||||
adds r0, r1
|
|
||||||
ldrh r1, [r0]
|
|
||||||
movs r3, 0xC0
|
|
||||||
lsls r3, 4
|
|
||||||
adds r2, r3, 0
|
|
||||||
orrs r1, r2
|
|
||||||
strh r1, [r0]
|
|
||||||
b _08059076
|
|
||||||
.align 2, 0
|
|
||||||
_08059060: .4byte VMap
|
|
||||||
_08059064:
|
|
||||||
muls r1, r3
|
|
||||||
adds r1, r4, r1
|
|
||||||
ldr r0, [r2, 0x8]
|
|
||||||
lsls r1, 1
|
|
||||||
adds r1, r0
|
|
||||||
ldrh r2, [r1]
|
|
||||||
ldr r0, _0805907C @ =0x0000f3ff
|
|
||||||
ands r0, r2
|
|
||||||
strh r0, [r1]
|
|
||||||
_08059076:
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_0805907C: .4byte 0x0000f3ff
|
|
||||||
thumb_func_end sub_8059024
|
|
||||||
|
|
||||||
thumb_func_start sub_8059080
|
thumb_func_start sub_8059080
|
||||||
sub_8059080: @ 8059080
|
sub_8059080: @ 8059080
|
||||||
push {r4-r6,lr}
|
push {r4-r6,lr}
|
||||||
|
|||||||
+1
-1
@@ -1645,7 +1645,7 @@ _0809B7B2:
|
|||||||
adds r1, r7, r1
|
adds r1, r7, r1
|
||||||
lsls r1, 16
|
lsls r1, 16
|
||||||
asrs r1, 16
|
asrs r1, 16
|
||||||
bl sub_8058F8C
|
bl MapGridGetMetatileLayerTypeAt
|
||||||
lsls r0, 24
|
lsls r0, 24
|
||||||
lsrs r3, r0, 24
|
lsrs r3, r0, 24
|
||||||
ldr r0, _0809B808 @ =0x0000027f
|
ldr r0, _0809B808 @ =0x0000027f
|
||||||
|
|||||||
@@ -4,12 +4,3 @@
|
|||||||
|
|
||||||
gUnknown_8352754:: @ 8352754
|
gUnknown_8352754:: @ 8352754
|
||||||
.incbin "baserom.gba", 0x352754, 0x798
|
.incbin "baserom.gba", 0x352754, 0x798
|
||||||
|
|
||||||
sDummyConnectionFlags:: @ 8352EEC
|
|
||||||
.4byte 0
|
|
||||||
|
|
||||||
gUnknown_8352EF0:: @ 8352EF0
|
|
||||||
.incbin "baserom.gba", 0x352EF0, 0x20
|
|
||||||
|
|
||||||
gUnknown_8352F10:: @ 8352F10
|
|
||||||
.incbin "baserom.gba", 0x352F10, 0x8
|
|
||||||
|
|||||||
+121
-36
@@ -18,6 +18,7 @@ void fillSouthConnection(struct MapHeader const *mapHeader, struct MapHeader con
|
|||||||
void fillNorthConnection(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 fillWestConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset);
|
||||||
void fillEastConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset);
|
void fillEastConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset);
|
||||||
|
u32 sub_8059080(struct MapData *mapData, u16 metatileId, u8 z);
|
||||||
void sub_80591C4(void);
|
void sub_80591C4(void);
|
||||||
|
|
||||||
struct BackupMapData VMap;
|
struct BackupMapData VMap;
|
||||||
@@ -25,7 +26,29 @@ EWRAM_DATA u16 gBackupMapData[VIRTUAL_MAP_SIZE] = {};
|
|||||||
EWRAM_DATA struct MapHeader gMapHeader = {};
|
EWRAM_DATA struct MapHeader gMapHeader = {};
|
||||||
EWRAM_DATA struct ConnectionFlags gMapConnectionFlags = {};
|
EWRAM_DATA struct ConnectionFlags gMapConnectionFlags = {};
|
||||||
|
|
||||||
extern const struct ConnectionFlags sDummyConnectionFlags;
|
const struct ConnectionFlags sDummyConnectionFlags = {};
|
||||||
|
|
||||||
|
const u32 gUnknown_8352EF0[] = {
|
||||||
|
0x1ff,
|
||||||
|
0x3e00,
|
||||||
|
0x3c000,
|
||||||
|
0xfc0000,
|
||||||
|
0x7000000,
|
||||||
|
0x18000000,
|
||||||
|
0x60000000,
|
||||||
|
0x80000000
|
||||||
|
};
|
||||||
|
|
||||||
|
const u8 gUnknown_8352F10[] = {
|
||||||
|
0,
|
||||||
|
9,
|
||||||
|
14,
|
||||||
|
18,
|
||||||
|
24,
|
||||||
|
27,
|
||||||
|
29,
|
||||||
|
31
|
||||||
|
};
|
||||||
|
|
||||||
const struct MapHeader * mapconnection_get_mapheader(struct MapConnection * connection)
|
const struct MapHeader * mapconnection_get_mapheader(struct MapConnection * connection)
|
||||||
{
|
{
|
||||||
@@ -334,43 +357,43 @@ union Block
|
|||||||
u16 value;
|
u16 value;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define MapGridGetBorderTileAt(x, y) ({ \
|
#define MapGridGetBorderTileAt(x, y) ({ \
|
||||||
u16 block; \
|
u16 block; \
|
||||||
s32 xprime; \
|
s32 xprime; \
|
||||||
s32 yprime; \
|
s32 yprime; \
|
||||||
\
|
\
|
||||||
struct MapData *mapData = gMapHeader.mapData; \
|
struct MapData *mapData = gMapHeader.mapData; \
|
||||||
\
|
\
|
||||||
xprime = x - 7; \
|
xprime = x - 7; \
|
||||||
xprime += 8 * mapData->unk18; \
|
xprime += 8 * mapData->unk18; \
|
||||||
xprime %= mapData->unk18; \
|
xprime %= mapData->unk18; \
|
||||||
\
|
\
|
||||||
yprime = y - 7; \
|
yprime = y - 7; \
|
||||||
yprime += 8 * mapData->unk19; \
|
yprime += 8 * mapData->unk19; \
|
||||||
yprime %= mapData->unk19; \
|
yprime %= mapData->unk19; \
|
||||||
\
|
\
|
||||||
block = mapData->border[xprime + yprime * mapData->unk18]; \
|
block = mapData->border[xprime + yprime * mapData->unk18]; \
|
||||||
block |= 0xC00; \
|
block |= 0xC00; \
|
||||||
block; \
|
block; \
|
||||||
})
|
})
|
||||||
|
|
||||||
#define MapGridGetBorderTileAt2(x, y) ({ \
|
#define MapGridGetBorderTileAt2(x, y) ({ \
|
||||||
u16 block; \
|
u16 block; \
|
||||||
s32 xprime; \
|
s32 xprime; \
|
||||||
s32 yprime; \
|
s32 yprime; \
|
||||||
\
|
\
|
||||||
struct MapData *mapData = gMapHeader.mapData; \
|
struct MapData *mapData = gMapHeader.mapData; \
|
||||||
\
|
\
|
||||||
xprime = x - 7; \
|
xprime = x - 7; \
|
||||||
xprime += 8 * mapData->unk18; \
|
xprime += 8 * mapData->unk18; \
|
||||||
xprime %= mapData->unk18; \
|
xprime %= mapData->unk18; \
|
||||||
\
|
\
|
||||||
yprime = y - 7; \
|
yprime = y - 7; \
|
||||||
yprime += 8 * mapData->unk19; \
|
yprime += 8 * mapData->unk19; \
|
||||||
yprime %= mapData->unk19; \
|
yprime %= mapData->unk19; \
|
||||||
\
|
\
|
||||||
block = mapData->border[xprime + yprime * mapData->unk18] | 0xC00; \
|
block = mapData->border[xprime + yprime * mapData->unk18] | 0xC00; \
|
||||||
block; \
|
block; \
|
||||||
})
|
})
|
||||||
|
|
||||||
#define MapGridGetTileAt(x, y) ({ \
|
#define MapGridGetTileAt(x, y) ({ \
|
||||||
@@ -418,3 +441,65 @@ u32 MapGridGetMetatileIdAt(s32 x, s32 y)
|
|||||||
}
|
}
|
||||||
return block & 0x3FF;
|
return block & 0x3FF;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
u32 sub_8058F1C(u32 original, u8 bit)
|
||||||
|
{
|
||||||
|
if (bit >= 8)
|
||||||
|
return original;
|
||||||
|
|
||||||
|
return (original & gUnknown_8352EF0[bit]) >> gUnknown_8352F10[bit];
|
||||||
|
}
|
||||||
|
|
||||||
|
u32 sub_8058F48(s16 x, s16 y, u8 z)
|
||||||
|
{
|
||||||
|
u16 metatileId = MapGridGetMetatileIdAt(x, y);
|
||||||
|
return sub_8059080(gMapHeader.mapData, metatileId, z);
|
||||||
|
}
|
||||||
|
|
||||||
|
u32 MapGridGetMetatileBehaviorAt(s32 x, s32 y)
|
||||||
|
{
|
||||||
|
return sub_8058F48(x, y, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
u8 MapGridGetMetatileLayerTypeAt(s32 x, s32 y)
|
||||||
|
{
|
||||||
|
return sub_8058F48(x, y, 6);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MapGridSetMetatileIdAt(s32 x, s32 y, u16 metatile)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
if (x >= 0 && x < VMap.Xsize
|
||||||
|
&& y >= 0 && y < VMap.Ysize)
|
||||||
|
{
|
||||||
|
i = x + y * VMap.Xsize;
|
||||||
|
VMap.map[i] = (VMap.map[i] & 0xf000) | (metatile & 0xfff);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MapGridSetMetatileEntryAt(s32 x, s32 y, u16 metatile)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
if (x >= 0 && x < VMap.Xsize
|
||||||
|
&& y >= 0 && y < VMap.Ysize)
|
||||||
|
{
|
||||||
|
i = x + VMap.Xsize * y;
|
||||||
|
VMap.map[i] = metatile;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_8059024(s32 x, s32 y, bool32 arg2)
|
||||||
|
{
|
||||||
|
if (x >= 0 && x < VMap.Xsize
|
||||||
|
&& y >= 0 && y < VMap.Ysize)
|
||||||
|
{
|
||||||
|
if (arg2)
|
||||||
|
{
|
||||||
|
VMap.map[x + VMap.Xsize * y] |= 0x0C00;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
VMap.map[x + VMap.Xsize * y] &= ~0x0C00;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user