Merge pull request #301 from GriffinRichards/doc-borderdim

Label border dimension fields
This commit is contained in:
PikalaxALT
2020-03-16 07:59:31 -04:00
committed by GitHub
2 changed files with 19 additions and 40 deletions
+2 -2
View File
@@ -43,8 +43,8 @@ struct MapLayout
/*0x0c*/ u16 *map; /*0x0c*/ u16 *map;
/*0x10*/ struct Tileset *primaryTileset; /*0x10*/ struct Tileset *primaryTileset;
/*0x14*/ struct Tileset *secondaryTileset; /*0x14*/ struct Tileset *secondaryTileset;
/*0x18*/ u8 unk18; /*0x18*/ u8 borderWidth;
/*0x19*/ u8 unk19; /*0x19*/ u8 borderHeight;
}; };
struct BackupMapLayout struct BackupMapLayout
+17 -38
View File
@@ -365,48 +365,27 @@ 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 MapLayout *mapLayout = gMapHeader.mapLayout; \ struct MapLayout *mapLayout = gMapHeader.mapLayout; \
\ \
xprime = x - 7; \ xprime = x - 7; \
xprime += 8 * mapLayout->unk18; \ xprime += 8 * mapLayout->borderWidth; \
xprime %= mapLayout->unk18; \ xprime %= mapLayout->borderWidth; \
\ \
yprime = y - 7; \ yprime = y - 7; \
yprime += 8 * mapLayout->unk19; \ yprime += 8 * mapLayout->borderHeight; \
yprime %= mapLayout->unk19; \ yprime %= mapLayout->borderHeight; \
\ \
block = mapLayout->border[xprime + yprime * mapLayout->unk18]; \ block = mapLayout->border[xprime + yprime * mapLayout->borderWidth] | METATILE_COLLISION_MASK; \
block |= 0xC00; \
block; \
})
#define MapGridGetBorderTileAt2(x, y) ({ \
u16 block; \
s32 xprime; \
s32 yprime; \
\
struct MapLayout *mapLayout = gMapHeader.mapLayout; \
\
xprime = x - 7; \
xprime += 8 * mapLayout->unk18; \
xprime %= mapLayout->unk18; \
\
yprime = y - 7; \
yprime += 8 * mapLayout->unk19; \
yprime %= mapLayout->unk19; \
\
block = mapLayout->border[xprime + yprime * mapLayout->unk18] | 0xC00; \
block; \
}) })
#define AreCoordsWithinMapGridBounds(x, y) (x >= 0 && x < VMap.Xsize && y >= 0 && y < VMap.Ysize) #define AreCoordsWithinMapGridBounds(x, y) (x >= 0 && x < VMap.Xsize && y >= 0 && y < VMap.Ysize)
#define MapGridGetTileAt(x, y) (AreCoordsWithinMapGridBounds(x, y) ? VMap.map[x + VMap.Xsize * y] : MapGridGetBorderTileAt2(x, y)) #define MapGridGetTileAt(x, y) (AreCoordsWithinMapGridBounds(x, y) ? VMap.map[x + VMap.Xsize * y] : MapGridGetBorderTileAt(x, y))
u8 MapGridGetZCoordAt(s32 x, s32 y) u8 MapGridGetZCoordAt(s32 x, s32 y)
{ {