GetMapBorderIdAt

This commit is contained in:
scnorton
2019-01-07 15:48:36 -05:00
parent e1bd043bf3
commit 34cf3662fc
4 changed files with 52 additions and 152 deletions
+2 -2
View File
@@ -12338,7 +12338,7 @@ _080636E2:
bne _08063724
adds r0, r5, 0
adds r1, r4, 0
bl sub_8059334
bl GetMapBorderIdAt
movs r1, 0x1
negs r1, r1
cmp r0, r1
@@ -12438,7 +12438,7 @@ sub_8063770: @ 8063770
bne _080637E8
adds r0, r6, 0
adds r1, r5, 0
bl sub_8059334
bl GetMapBorderIdAt
movs r1, 0x1
negs r1, r1
cmp r0, r1
+2 -140
View File
@@ -5,144 +5,6 @@
.text
thumb_func_start sub_8059334
sub_8059334: @ 8059334
push {r4-r7,lr}
mov r7, r8
push {r7}
adds r7, r0, 0
mov r8, r1
cmp r7, 0
blt _08059374
ldr r1, _0805936C @ =VMap
ldr r2, [r1]
cmp r7, r2
bge _08059374
mov r0, r8
cmp r0, 0
blt _08059374
ldr r0, [r1, 0x4]
cmp r8, r0
bge _08059374
mov r0, r8
muls r0, r2
adds r0, r7, r0
ldr r1, [r1, 0x8]
lsls r0, 1
adds r0, r1
ldrh r1, [r0]
ldr r0, _08059370 @ =0x000003ff
cmp r1, r0
beq _08059422
b _080593B0
.align 2, 0
_0805936C: .4byte VMap
_08059370: .4byte 0x000003ff
_08059374:
ldr r0, _080593CC @ =gMapHeader
ldr r6, [r0]
subs r0, r7, 0x7
ldrb r5, [r6, 0x18]
lsls r1, r5, 3
adds r0, r1
adds r1, r5, 0
bl __modsi3
adds r4, r0, 0
mov r0, r8
subs r0, 0x7
ldrb r1, [r6, 0x19]
lsls r2, r1, 3
adds r0, r2
bl __modsi3
muls r0, r5
adds r4, r0
ldr r0, [r6, 0x8]
lsls r4, 1
adds r4, r0
ldrh r1, [r4]
movs r2, 0xC0
lsls r2, 4
adds r0, r2, 0
orrs r0, r1
ldr r1, _080593D0 @ =0x000003ff
cmp r0, r1
beq _08059422
_080593B0:
ldr r1, _080593D4 @ =VMap
ldr r0, [r1]
subs r0, 0x8
cmp r7, r0
blt _080593DC
ldr r0, _080593D8 @ =gMapConnectionFlags
ldrb r1, [r0]
movs r0, 0x8
ands r0, r1
cmp r0, 0
beq _08059422
movs r0, 0x4
b _08059432
.align 2, 0
_080593CC: .4byte gMapHeader
_080593D0: .4byte 0x000003ff
_080593D4: .4byte VMap
_080593D8: .4byte gMapConnectionFlags
_080593DC:
cmp r7, 0x6
bgt _080593F4
ldr r0, _080593F0 @ =gMapConnectionFlags
ldrb r1, [r0]
movs r0, 0x4
ands r0, r1
cmp r0, 0
beq _08059422
movs r0, 0x3
b _08059432
.align 2, 0
_080593F0: .4byte gMapConnectionFlags
_080593F4:
ldr r0, [r1, 0x4]
subs r0, 0x7
cmp r8, r0
blt _08059410
ldr r0, _0805940C @ =gMapConnectionFlags
ldrb r1, [r0]
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _08059422
movs r0, 0x1
b _08059432
.align 2, 0
_0805940C: .4byte gMapConnectionFlags
_08059410:
mov r0, r8
cmp r0, 0x6
bgt _08059430
ldr r0, _08059428 @ =gMapConnectionFlags
ldrb r1, [r0]
movs r0, 0x2
ands r0, r1
cmp r0, 0
bne _0805942C
_08059422:
movs r0, 0x1
negs r0, r0
b _08059432
.align 2, 0
_08059428: .4byte gMapConnectionFlags
_0805942C:
movs r0, 0x2
b _08059432
_08059430:
movs r0, 0
_08059432:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_8059334
thumb_func_start GetPostCameraMoveMapBorderId
GetPostCameraMoveMapBorderId: @ 805943C
push {r4,lr}
@@ -158,7 +20,7 @@ GetPostCameraMoveMapBorderId: @ 805943C
adds r3, 0x7
adds r1, r3
adds r0, r2, 0
bl sub_8059334
bl GetMapBorderIdAt
pop {r4}
pop {r1}
bx r1
@@ -187,7 +49,7 @@ CanCameraMoveInDirection: @ 8059464
adds r0, 0x7
adds r1, r0
adds r0, r3, 0
bl sub_8059334
bl GetMapBorderIdAt
movs r1, 0x1
negs r1, r1
cmp r0, r1
+1 -1
View File
@@ -22,7 +22,7 @@ void MapGridSetMetatileIdAt(int, int, u16);
void MapGridSetMetatileEntryAt(int, int, u16);
void GetCameraCoords(u16*, u16*);
bool8 MapGridIsImpassableAt(s32, s32);
s32 GetMapBorderIdAt(s16, s16);
s32 GetMapBorderIdAt(s32, s32);
bool32 CanCameraMoveInDirection(u8);
u32 GetBehaviorByMetatileIdAndMapData(struct MapData *mapData, u16 metatile, u8 attr);
+47 -9
View File
@@ -395,15 +395,7 @@ union Block
block; \
})
#define MapGridGetTileAt(x, y) ({ \
u16 block; \
if (x >= 0 && x < VMap.Xsize \
&& y >= 0 && y < VMap.Ysize) \
block = VMap.map[x + VMap.Xsize * y]; \
else \
block = MapGridGetBorderTileAt2(x, y); \
block; \
})
#define MapGridGetTileAt(x, y) ((x >= 0 && x < VMap.Xsize && y >= 0 && y < VMap.Ysize) ? VMap.map[x + VMap.Xsize * y] : MapGridGetBorderTileAt2(x, y))
u8 MapGridGetZCoordAt(s32 x, s32 y)
{
@@ -641,3 +633,49 @@ void sub_8059250(u8 a1)
}
ClearSavedMapView();
}
s32 GetMapBorderIdAt(s32 x, s32 y)
{
if (MapGridGetTileAt(x, y) == 0x3FF)
{
return -1;
}
if (x >= VMap.Xsize - 8)
{
if (!gMapConnectionFlags.east)
{
return -1;
}
return CONNECTION_EAST;
}
if (x < 7)
{
if (!gMapConnectionFlags.west)
{
return -1;
}
return CONNECTION_WEST;
}
if (y >= VMap.Ysize - 7)
{
if (!gMapConnectionFlags.south)
{
return -1;
}
return CONNECTION_SOUTH;
}
if (y < 7)
{
if (!gMapConnectionFlags.north)
{
return -1;
}
return CONNECTION_NORTH;
}
return 0;
}