diff options
author | GriffinR <griffin.g.richards@gmail.com> | 2021-10-01 17:56:14 -0400 |
---|---|---|
committer | GriffinR <griffin.g.richards@gmail.com> | 2021-10-01 17:56:14 -0400 |
commit | 1460774d1d8e409ccc7a28a85cf7dd3a17fd985a (patch) | |
tree | 952c7df3f35be35003de8758db3ab35f8c8b007a /src | |
parent | 1f7eb7ea010bede43d07e14b4ff21c609eaeb4ea (diff) |
Sync fieldmap.c
Diffstat (limited to 'src')
-rw-r--r-- | src/event_object_movement.c | 4 | ||||
-rw-r--r-- | src/fieldmap.c | 538 | ||||
-rw-r--r-- | src/itemfinder.c | 10 | ||||
-rw-r--r-- | src/overworld.c | 38 | ||||
-rw-r--r-- | src/save.c | 2 | ||||
-rw-r--r-- | src/start_menu.c | 2 | ||||
-rw-r--r-- | src/wild_encounter.c | 18 |
7 files changed, 268 insertions, 344 deletions
diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 79281750e..f75334e62 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -4883,7 +4883,7 @@ u8 GetCollisionAtCoords(struct ObjectEvent *objectEvent, s16 x, s16 y, u32 dir) u8 direction = dir; if (IsCoordOutsideObjectEventMovementRange(objectEvent, x, y)) return COLLISION_OUTSIDE_RANGE; - else if (MapGridIsImpassableAt(x, y) || GetMapBorderIdAt(x, y) == -1 || IsMetatileDirectionallyImpassable(objectEvent, x, y, direction)) + else if (MapGridIsImpassableAt(x, y) || GetMapBorderIdAt(x, y) == CONNECTION_INVALID || IsMetatileDirectionallyImpassable(objectEvent, x, y, direction)) return COLLISION_IMPASSABLE; else if (objectEvent->trackedByCamera && !CanCameraMoveInDirection(direction)) return COLLISION_IMPASSABLE; @@ -4900,7 +4900,7 @@ u8 GetCollisionFlagsAtCoords(struct ObjectEvent *objectEvent, s16 x, s16 y, u8 d if (IsCoordOutsideObjectEventMovementRange(objectEvent, x, y)) flags |= 1; - if (MapGridIsImpassableAt(x, y) || GetMapBorderIdAt(x, y) == -1 || IsMetatileDirectionallyImpassable(objectEvent, x, y, direction) || (objectEvent->trackedByCamera && !CanCameraMoveInDirection(direction))) + if (MapGridIsImpassableAt(x, y) || GetMapBorderIdAt(x, y) == CONNECTION_INVALID || IsMetatileDirectionallyImpassable(objectEvent, x, y, direction) || (objectEvent->trackedByCamera && !CanCameraMoveInDirection(direction))) flags |= 2; if (IsZCoordMismatchAt(objectEvent->currentElevation, x, y)) flags |= 4; diff --git a/src/fieldmap.c b/src/fieldmap.c index 400fc4cff..21166cc81 100644 --- a/src/fieldmap.c +++ b/src/fieldmap.c @@ -14,17 +14,40 @@ struct ConnectionFlags u8 east:1; }; -static void InitMapLayoutData(struct MapHeader *mapHeader); -static void map_copy_with_padding(u16 *map, u16 width, u16 height); -static void mapheader_copy_mapdata_of_adjacent_maps(struct MapHeader *mapHeader); -static void fillSouthConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset); -static void fillNorthConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset); -static void fillWestConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset); -static void fillEastConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset); +static void InitMapLayoutData(struct MapHeader *); +static void InitBackupMapLayoutData(u16 *, u16, u16); +static void InitBackupMapLayoutConnections(struct MapHeader *); +static void FillSouthConnection(struct MapHeader const *, struct MapHeader const *, s32); +static void FillNorthConnection(struct MapHeader const *, struct MapHeader const *, s32); +static void FillWestConnection(struct MapHeader const *, struct MapHeader const *, s32); +static void FillEastConnection(struct MapHeader const *, struct MapHeader const *, s32); static void LoadSavedMapView(void); -static struct MapConnection *sub_8059600(u8 direction, s32 x, s32 y); -static bool8 sub_8059658(u8 direction, s32 x, s32 y, struct MapConnection *connection); -static bool8 sub_80596BC(s32 x, s32 src_width, s32 dest_width, s32 offset); +static struct MapConnection *GetIncomingConnection(u8, s32, s32); +static bool8 IsPosInIncomingConnectingMap(u8, s32, s32, struct MapConnection *); +static bool8 IsCoordInIncomingConnectingMap(s32, s32, s32, s32); +static u32 GetAttributeByMetatileIdAndMapLayout(const struct MapLayout *, u16, u8); + +#define MapGridGetBorderTileAt(x, y) ({ \ + u16 block; \ + s32 xprime; \ + s32 yprime; \ + \ + const struct MapLayout *mapLayout = gMapHeader.mapLayout; \ + \ + xprime = x - 7; \ + xprime += 8 * mapLayout->borderWidth; \ + xprime %= mapLayout->borderWidth; \ + \ + yprime = y - 7; \ + yprime += 8 * mapLayout->borderHeight; \ + yprime %= mapLayout->borderHeight; \ + \ + block = mapLayout->border[xprime + yprime * mapLayout->borderWidth] | METATILE_COLLISION_MASK; \ +}) + +#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] : MapGridGetBorderTileAt(x, y)) struct BackupMapLayout VMap; EWRAM_DATA u16 gBackupMapData[VIRTUAL_MAP_SIZE] = {}; @@ -57,7 +80,7 @@ static const u8 sMetatileAttrShifts[METATILE_ATTRIBUTE_COUNT] = { [METATILE_ATTRIBUTE_7] = 31 }; -const struct MapHeader * mapconnection_get_mapheader(struct MapConnection * connection) +const struct MapHeader * GetMapHeaderFromConnection(struct MapConnection * connection) { return Overworld_GetMapHeaderByGroupAndId(connection->mapGroup, connection->mapNum); } @@ -78,16 +101,16 @@ void InitMapFromSavedGame(void) static void InitMapLayoutData(struct MapHeader * mapHeader) { const struct MapLayout * mapLayout = mapHeader->mapLayout; - CpuFastFill(0x03FF03FF, gBackupMapData, sizeof(gBackupMapData)); + CpuFastFill(METATILE_ID_UNDEFINED << 16 | METATILE_ID_UNDEFINED, gBackupMapData, sizeof(gBackupMapData)); VMap.map = gBackupMapData; VMap.Xsize = mapLayout->width + 15; VMap.Ysize = mapLayout->height + 14; AGB_ASSERT_EX(VMap.Xsize * VMap.Ysize <= VIRTUAL_MAP_SIZE, ABSPATH("fieldmap.c"), 158); - map_copy_with_padding(mapLayout->map, mapLayout->width, mapLayout->height); - mapheader_copy_mapdata_of_adjacent_maps(mapHeader); + InitBackupMapLayoutData(mapLayout->map, mapLayout->width, mapLayout->height); + InitBackupMapLayoutConnections(mapHeader); } -static void map_copy_with_padding(u16 *map, u16 width, u16 height) +static void InitBackupMapLayoutData(u16 *map, u16 width, u16 height) { s32 y; u16 *dest = VMap.map; @@ -101,7 +124,7 @@ static void map_copy_with_padding(u16 *map, u16 width, u16 height) } } -static void mapheader_copy_mapdata_of_adjacent_maps(struct MapHeader *mapHeader) +static void InitBackupMapLayoutConnections(struct MapHeader *mapHeader) { s32 count; struct MapConnection *connection; @@ -118,36 +141,34 @@ static void mapheader_copy_mapdata_of_adjacent_maps(struct MapHeader *mapHeader) { 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); + struct MapHeader const *cMap = GetMapHeaderFromConnection(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; + case CONNECTION_SOUTH: + FillSouthConnection(mapHeader, cMap, offset); + gMapConnectionFlags.south = TRUE; + break; + case CONNECTION_NORTH: + FillNorthConnection(mapHeader, cMap, offset); + gMapConnectionFlags.north = TRUE; + break; + case CONNECTION_WEST: + FillWestConnection(mapHeader, cMap, offset); + gMapConnectionFlags.west = TRUE; + break; + case CONNECTION_EAST: + FillEastConnection(mapHeader, cMap, offset); + gMapConnectionFlags.east = TRUE; + break; } } } } -static void sub_8058B54(s32 x, s32 y, const struct MapHeader *connectedMapHeader, s32 x2, s32 y2, s32 width, s32 height) +static void FillConnection(s32 x, s32 y, const struct MapHeader *connectedMapHeader, s32 x2, s32 y2, s32 width, s32 height) { s32 i; u16 *src; @@ -166,7 +187,7 @@ static void sub_8058B54(s32 x, s32 y, const struct MapHeader *connectedMapHeader } } -static void fillSouthConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset) +static void FillSouthConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset) { s32 x, y; s32 x2; @@ -183,29 +204,21 @@ static void fillSouthConnection(struct MapHeader const *mapHeader, struct MapHea 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( + FillConnection( x, y, connectedMapHeader, x2, /*y2*/ 0, @@ -213,7 +226,7 @@ static void fillSouthConnection(struct MapHeader const *mapHeader, struct MapHea } } -static void fillNorthConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset) +static void FillNorthConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset) { s32 x; s32 x2, y2; @@ -231,29 +244,21 @@ static void fillNorthConnection(struct MapHeader const *mapHeader, struct MapHea 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( + FillConnection( x, /*y*/ 0, connectedMapHeader, x2, y2, @@ -262,7 +267,7 @@ static void fillNorthConnection(struct MapHeader const *mapHeader, struct MapHea } } -static void fillWestConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset) +static void FillWestConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset) { s32 y; s32 x2, y2; @@ -278,29 +283,21 @@ static void fillWestConnection(struct MapHeader const *mapHeader, struct MapHead { 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( + FillConnection( /*x*/ 0, y, connectedMapHeader, x2, y2, @@ -308,7 +305,7 @@ static void fillWestConnection(struct MapHeader const *mapHeader, struct MapHead } } -static void fillEastConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset) +static void FillEastConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset) { s32 x, y; s32 y2; @@ -323,29 +320,21 @@ static void fillEastConnection(struct MapHeader const *mapHeader, struct MapHead { 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( + FillConnection( x, y, connectedMapHeader, /*x2*/ 0, y2, @@ -353,87 +342,48 @@ static void fillEastConnection(struct MapHeader const *mapHeader, struct MapHead } } -union Block -{ - struct - { - u16 block:10; - u16 collision:2; - u16 elevation:4; - } block; - u16 value; -}; - -#define MapGridGetBorderTileAt(x, y) ({ \ - u16 block; \ - s32 xprime; \ - s32 yprime; \ - \ - const struct MapLayout *mapLayout = gMapHeader.mapLayout; \ - \ - xprime = x - 7; \ - xprime += 8 * mapLayout->borderWidth; \ - xprime %= mapLayout->borderWidth; \ - \ - yprime = y - 7; \ - yprime += 8 * mapLayout->borderHeight; \ - yprime %= mapLayout->borderHeight; \ - \ - block = mapLayout->border[xprime + yprime * mapLayout->borderWidth] | METATILE_COLLISION_MASK; \ -}) - -#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] : MapGridGetBorderTileAt(x, y)) - u8 MapGridGetZCoordAt(s32 x, s32 y) { u16 block = MapGridGetTileAt(x, y); - if (block == 0x3ff) - { + if (block == METATILE_ID_UNDEFINED) return 0; - } - return block >> 12; + return block >> METATILE_ELEVATION_SHIFT; } u8 MapGridIsImpassableAt(s32 x, s32 y) { - u16 block = MapGridGetTileAt(x, y); - if (block == 0x3ff) - { - return 1; - } + if (block == METATILE_ID_UNDEFINED) + return TRUE; - return (block & 0xc00) >> 10; + return (block & METATILE_COLLISION_MASK) >> METATILE_COLLISION_SHIFT; } u32 MapGridGetMetatileIdAt(s32 x, s32 y) { u16 block = MapGridGetTileAt(x, y); - if (block == 0x3FF) - { - return MapGridGetBorderTileAt(x, y) & 0x3FF; - } - return block & 0x3FF; + if (block == METATILE_ID_UNDEFINED) + return MapGridGetBorderTileAt(x, y) & METATILE_ID_MASK; + + return block & METATILE_ID_MASK; } -u32 GetMetatileAttributeFromRawMetatileBehavior(u32 original, u8 bit) +u32 ExtractMetatileAttribute(u32 attributes, u8 attributeType) { - if (bit >= METATILE_ATTRIBUTE_COUNT) - return original; + if (attributeType >= METATILE_ATTRIBUTE_COUNT) + return attributes; - return (original & sMetatileAttrMasks[bit]) >> sMetatileAttrShifts[bit]; + return (attributes & sMetatileAttrMasks[attributeType]) >> sMetatileAttrShifts[attributeType]; } -u32 MapGridGetMetatileAttributeAt(s16 x, s16 y, u8 attr) +u32 MapGridGetMetatileAttributeAt(s16 x, s16 y, u8 attributeType) { u16 metatileId = MapGridGetMetatileIdAt(x, y); - return GetBehaviorByMetatileIdAndMapLayout(gMapHeader.mapLayout, metatileId, attr); + return GetAttributeByMetatileIdAndMapLayout(gMapHeader.mapLayout, metatileId, attributeType); } u32 MapGridGetMetatileBehaviorAt(s16 x, s16 y) @@ -449,54 +399,47 @@ u8 MapGridGetMetatileLayerTypeAt(s16 x, s16 y) void MapGridSetMetatileIdAt(s32 x, s32 y, u16 metatile) { s32 i; - if (x >= 0 && x < VMap.Xsize - && y >= 0 && y < VMap.Ysize) + if (AreCoordsWithinMapGridBounds(x, y)) { i = x + y * VMap.Xsize; - VMap.map[i] = (VMap.map[i] & 0xf000) | (metatile & 0xfff); + VMap.map[i] = (VMap.map[i] & METATILE_ELEVATION_MASK) | (metatile & ~METATILE_ELEVATION_MASK); } } void MapGridSetMetatileEntryAt(s32 x, s32 y, u16 metatile) { s32 i; - if (x >= 0 && x < VMap.Xsize - && y >= 0 && y < VMap.Ysize) + if (AreCoordsWithinMapGridBounds(x, y)) { i = x + VMap.Xsize * y; VMap.map[i] = metatile; } } -void MapGridSetMetatileImpassabilityAt(s32 x, s32 y, bool32 arg2) +void MapGridSetMetatileImpassabilityAt(s32 x, s32 y, bool32 impassable) { - if (x >= 0 && x < VMap.Xsize - && y >= 0 && y < VMap.Ysize) + if (AreCoordsWithinMapGridBounds(x, y)) { - if (arg2) - { - VMap.map[x + VMap.Xsize * y] |= 0x0C00; - } + if (impassable) + VMap.map[x + VMap.Xsize * y] |= METATILE_COLLISION_MASK; else - { - VMap.map[x + VMap.Xsize * y] &= ~0x0C00; - } + VMap.map[x + VMap.Xsize * y] &= ~METATILE_COLLISION_MASK; } } -u32 GetBehaviorByMetatileIdAndMapLayout(const struct MapLayout *mapLayout, u16 metatile, u8 attr) +static u32 GetAttributeByMetatileIdAndMapLayout(const struct MapLayout *mapLayout, u16 metatile, u8 attributeType) { u32 * attributes; if (metatile < NUM_METATILES_IN_PRIMARY) { attributes = mapLayout->primaryTileset->metatileAttributes; - return GetMetatileAttributeFromRawMetatileBehavior(attributes[metatile], attr); + return ExtractMetatileAttribute(attributes[metatile], attributeType); } - else if (metatile < 0x400) + else if (metatile < NUM_METATILES_TOTAL) { attributes = mapLayout->secondaryTileset->metatileAttributes; - return GetMetatileAttributeFromRawMetatileBehavior(attributes[metatile - NUM_METATILES_IN_PRIMARY], attr); + return ExtractMetatileAttribute(attributes[metatile - NUM_METATILES_IN_PRIMARY], attributeType); } else { @@ -504,7 +447,7 @@ u32 GetBehaviorByMetatileIdAndMapLayout(const struct MapLayout *mapLayout, u16 m } } -void save_serialize_map(void) +void SaveMapView(void) { s32 i, j; s32 x, y; @@ -517,9 +460,7 @@ void save_serialize_map(void) for (i = y; i < y + 14; i++) { for (j = x; j < x + 15; j++) - { *mapView++ = gBackupMapData[width * i + j]; - } } } @@ -536,6 +477,7 @@ static bool32 SavedMapViewIsEmpty(void) for (i = 0; i < NELEMS(gSaveBlock2Ptr->mapView); i++) marker |= gSaveBlock2Ptr->mapView[i]; #endif + if (marker == 0) return TRUE; else @@ -571,7 +513,7 @@ static void LoadSavedMapView(void) } } -static void sub_8059250(u8 a1) +static void MoveMapViewToBackup(u8 direction) { s32 width; u16 *mapView; @@ -590,24 +532,24 @@ static void sub_8059250(u8 a1) y0 = gSaveBlock1Ptr->pos.y; x2 = 15; y2 = 14; - switch (a1) + switch (direction) { - case CONNECTION_NORTH: - y0 += 1; - y2 = 13; - break; - case CONNECTION_SOUTH: - r8 = 1; - y2 = 13; - break; - case CONNECTION_WEST: - x0 += 1; - x2 = 14; - break; - case CONNECTION_EAST: - r9 = 1; - x2 = 14; - break; + case CONNECTION_NORTH: + y0 += 1; + y2 = 13; + break; + case CONNECTION_SOUTH: + r8 = 1; + y2 = 13; + break; + case CONNECTION_WEST: + x0 += 1; + x2 = 14; + break; + case CONNECTION_EAST: + r9 = 1; + x2 = 14; + break; } for (y = 0; y < y2; y++) { @@ -629,206 +571,187 @@ static void sub_8059250(u8 a1) s32 GetMapBorderIdAt(s32 x, s32 y) { - if (MapGridGetTileAt(x, y) == 0x3FF) - { - return -1; - } + if (MapGridGetTileAt(x, y) == METATILE_ID_UNDEFINED) + return CONNECTION_INVALID; if (x >= VMap.Xsize - 8) { if (!gMapConnectionFlags.east) - { - return -1; - } + return CONNECTION_INVALID; + return CONNECTION_EAST; } if (x < 7) { if (!gMapConnectionFlags.west) - { - return -1; - } + return CONNECTION_INVALID; + return CONNECTION_WEST; } if (y >= VMap.Ysize - 7) { if (!gMapConnectionFlags.south) - { - return -1; - } + return CONNECTION_INVALID; + return CONNECTION_SOUTH; } if (y < 7) { if (!gMapConnectionFlags.north) - { - return -1; - } + return CONNECTION_INVALID; + return CONNECTION_NORTH; } - return 0; + return CONNECTION_NONE; } static s32 GetPostCameraMoveMapBorderId(s32 x, s32 y) { - return GetMapBorderIdAt(7 + gSaveBlock1Ptr->pos.x + x, 7 + gSaveBlock1Ptr->pos.y + y); + return GetMapBorderIdAt(gSaveBlock1Ptr->pos.x + 7 + x, gSaveBlock1Ptr->pos.y + 7 + y); } bool32 CanCameraMoveInDirection(s32 direction) { s32 x, y; - x = gSaveBlock1Ptr->pos.x + 7 + gDirectionToVectors[direction].x; y = gSaveBlock1Ptr->pos.y + 7 + gDirectionToVectors[direction].y; - if (GetMapBorderIdAt(x, y) == -1) - { + + if (GetMapBorderIdAt(x, y) == CONNECTION_INVALID) return FALSE; - } + return TRUE; } -static void sub_80594AC(struct MapConnection *connection, int direction, s32 x, s32 y) +static void SetPositionFromConnection(struct MapConnection *connection, int direction, s32 x, s32 y) { struct MapHeader const *mapHeader; - mapHeader = mapconnection_get_mapheader(connection); + mapHeader = GetMapHeaderFromConnection(connection); switch (direction) { - case CONNECTION_EAST: - gSaveBlock1Ptr->pos.x = -x; - gSaveBlock1Ptr->pos.y -= connection->offset; - break; - case CONNECTION_WEST: - gSaveBlock1Ptr->pos.x = mapHeader->mapLayout->width; - gSaveBlock1Ptr->pos.y -= connection->offset; - break; - case CONNECTION_SOUTH: - gSaveBlock1Ptr->pos.x -= connection->offset; - gSaveBlock1Ptr->pos.y = -y; - break; - case CONNECTION_NORTH: - gSaveBlock1Ptr->pos.x -= connection->offset; - gSaveBlock1Ptr->pos.y = mapHeader->mapLayout->height; - break; + case CONNECTION_EAST: + gSaveBlock1Ptr->pos.x = -x; + gSaveBlock1Ptr->pos.y -= connection->offset; + break; + case CONNECTION_WEST: + gSaveBlock1Ptr->pos.x = mapHeader->mapLayout->width; + gSaveBlock1Ptr->pos.y -= connection->offset; + break; + case CONNECTION_SOUTH: + gSaveBlock1Ptr->pos.x -= connection->offset; + gSaveBlock1Ptr->pos.y = -y; + break; + case CONNECTION_NORTH: + gSaveBlock1Ptr->pos.x -= connection->offset; + gSaveBlock1Ptr->pos.y = mapHeader->mapLayout->height; + break; } } bool8 CameraMove(s32 x, s32 y) { - u32 direction; + s32 direction; struct MapConnection *connection; s32 old_x, old_y; gCamera.active = FALSE; direction = GetPostCameraMoveMapBorderId(x, y); - if (direction + 1 <= 1) + if (direction == CONNECTION_NONE || direction == CONNECTION_INVALID) { gSaveBlock1Ptr->pos.x += x; gSaveBlock1Ptr->pos.y += y; } else { - save_serialize_map(); + SaveMapView(); old_x = gSaveBlock1Ptr->pos.x; old_y = gSaveBlock1Ptr->pos.y; - connection = sub_8059600(direction, gSaveBlock1Ptr->pos.x, gSaveBlock1Ptr->pos.y); - sub_80594AC(connection, direction, x, y); + connection = GetIncomingConnection(direction, gSaveBlock1Ptr->pos.x, gSaveBlock1Ptr->pos.y); + SetPositionFromConnection(connection, direction, x, y); LoadMapFromCameraTransition(connection->mapGroup, connection->mapNum); gCamera.active = TRUE; gCamera.x = old_x - gSaveBlock1Ptr->pos.x; gCamera.y = old_y - gSaveBlock1Ptr->pos.y; gSaveBlock1Ptr->pos.x += x; gSaveBlock1Ptr->pos.y += y; - sub_8059250(direction); + MoveMapViewToBackup(direction); } return gCamera.active; } -struct MapConnection *sub_8059600(u8 direction, s32 x, s32 y) +struct MapConnection *GetIncomingConnection(u8 direction, s32 x, s32 y) { s32 count; struct MapConnection *connection; const struct MapConnections *connections = gMapHeader.connections; s32 i; - // UB: Multiple possible null dereferences -#ifdef UBFIX - if (connections != NULL) - { - count = connections->count; - connection = connections->connections; - if (connection != NULL) - { - for (i = 0; i < count; i++, connection++) - { - if (connection->direction == direction && sub_8059658(direction, x, y, connection) == TRUE) - return connection; - } - } - } -#else + +#ifdef UBFIX // UB: Multiple possible null dereferences + if (connections == NULL || connections->connections == NULL) + return NULL; +#endif count = connections->count; connection = connections->connections; for (i = 0; i < count; i++, connection++) { - if (connection->direction == direction && sub_8059658(direction, x, y, connection) == TRUE) + if (connection->direction == direction && IsPosInIncomingConnectingMap(direction, x, y, connection) == TRUE) return connection; } -#endif return NULL; } -static bool8 sub_8059658(u8 direction, s32 x, s32 y, struct MapConnection *connection) +static bool8 IsPosInIncomingConnectingMap(u8 direction, s32 x, s32 y, struct MapConnection *connection) { struct MapHeader const *mapHeader; - mapHeader = mapconnection_get_mapheader(connection); + mapHeader = GetMapHeaderFromConnection(connection); switch (direction) { - case CONNECTION_SOUTH: - case CONNECTION_NORTH: - return sub_80596BC(x, gMapHeader.mapLayout->width, mapHeader->mapLayout->width, connection->offset); - case CONNECTION_WEST: - case CONNECTION_EAST: - return sub_80596BC(y, gMapHeader.mapLayout->height, mapHeader->mapLayout->height, connection->offset); + case CONNECTION_SOUTH: + case CONNECTION_NORTH: + return IsCoordInIncomingConnectingMap(x, gMapHeader.mapLayout->width, mapHeader->mapLayout->width, connection->offset); + case CONNECTION_WEST: + case CONNECTION_EAST: + return IsCoordInIncomingConnectingMap(y, gMapHeader.mapLayout->height, mapHeader->mapLayout->height, connection->offset); } return FALSE; } -static bool8 sub_80596BC(s32 x, s32 src_width, s32 dest_width, s32 offset) +static bool8 IsCoordInIncomingConnectingMap(s32 coord, s32 srcMax, s32 destMax, s32 offset) { s32 offset2 = max(offset, 0); - if (dest_width + offset < src_width) - src_width = dest_width + offset; + if (destMax + offset < srcMax) + srcMax = destMax + offset; - if (offset2 <= x && x <= src_width) + if (offset2 <= coord && coord <= srcMax) return TRUE; return FALSE; } -static bool32 sub_80596E8(s32 x, s32 width) +static bool32 IsCoordInConnectingMap(s32 coord, s32 max) { - if (x >= 0 && x < width) + if (coord >= 0 && coord < max) return TRUE; return FALSE; } -static s32 sub_80596FC(struct MapConnection *connection, s32 x, s32 y) +static s32 IsPosInConnectingMap(struct MapConnection *connection, s32 x, s32 y) { struct MapHeader const *mapHeader; - mapHeader = mapconnection_get_mapheader(connection); + mapHeader = GetMapHeaderFromConnection(connection); switch (connection->direction) { - case CONNECTION_SOUTH: - case CONNECTION_NORTH: - return sub_80596E8(x - connection->offset, mapHeader->mapLayout->width); - case CONNECTION_WEST: - case CONNECTION_EAST: - return sub_80596E8(y - connection->offset, mapHeader->mapLayout->height); + case CONNECTION_SOUTH: + case CONNECTION_NORTH: + return IsCoordInConnectingMap(x - connection->offset, mapHeader->mapLayout->width); + case CONNECTION_WEST: + case CONNECTION_EAST: + return IsCoordInConnectingMap(y - connection->offset, mapHeader->mapLayout->height); } return FALSE; } @@ -858,10 +781,9 @@ struct MapConnection *GetMapConnectionAtPos(s16 x, s16 y) { continue; } - if (sub_80596FC(connection, x - 7, y - 7) == TRUE) - { + + if (IsPosInConnectingMap(connection, x - 7, y - 7) == TRUE) return connection; - } } } return NULL; @@ -879,6 +801,7 @@ void GetCameraFocusCoords(u16 *x, u16 *y) *y = gSaveBlock1Ptr->pos.y + 7; } +// Unused static void SetCameraCoords(u16 x, u16 y) { gSaveBlock1Ptr->pos.x = x; @@ -890,7 +813,8 @@ void GetCameraCoords(u16 *x, u16 *y) *x = gSaveBlock1Ptr->pos.x; *y = gSaveBlock1Ptr->pos.y; } -static void copy_tileset_patterns_to_vram(struct Tileset const *tileset, u16 numTiles, u16 offset) + +static void CopyTilesetToVram(struct Tileset const *tileset, u16 numTiles, u16 offset) { if (tileset) { @@ -901,7 +825,7 @@ static void copy_tileset_patterns_to_vram(struct Tileset const *tileset, u16 num } } -static void copy_tileset_patterns_to_vram2(struct Tileset const *tileset, u16 numTiles, u16 offset) +static void CopyTilesetToVramUsingHeap(struct Tileset const *tileset, u16 numTiles, u16 offset) { if (tileset) { @@ -916,20 +840,20 @@ static void Fieldmap_ApplyGlobalTintToPaletteEntries(u16 offset, u16 size) { switch (gGlobalFieldTintMode) { - case QL_TINT_NONE: - return; - case QL_TINT_GRAYSCALE: - TintPalette_GrayScale(gPlttBufferUnfaded + offset, size); - break; - case QL_TINT_SEPIA: - TintPalette_SepiaTone(gPlttBufferUnfaded + offset, size); - break; - case QL_TINT_BACKUP_GRAYSCALE: - QuestLog_BackUpPalette(offset, size); - TintPalette_GrayScale(gPlttBufferUnfaded + offset, size); - break; - default: - return; + case QL_TINT_NONE: + return; + case QL_TINT_GRAYSCALE: + TintPalette_GrayScale(gPlttBufferUnfaded + offset, size); + break; + case QL_TINT_SEPIA: + TintPalette_SepiaTone(gPlttBufferUnfaded + offset, size); + break; + case QL_TINT_BACKUP_GRAYSCALE: + QuestLog_BackUpPalette(offset, size); + TintPalette_GrayScale(gPlttBufferUnfaded + offset, size); + break; + default: + return; } CpuCopy16(gPlttBufferUnfaded + offset, gPlttBufferFaded + offset, size * sizeof(u16)); } @@ -938,25 +862,25 @@ void Fieldmap_ApplyGlobalTintToPaletteSlot(u8 slot, u8 count) { switch (gGlobalFieldTintMode) { - case QL_TINT_NONE: - return; - case QL_TINT_GRAYSCALE: - TintPalette_GrayScale(gPlttBufferUnfaded + slot * 16, count * 16); - break; - case QL_TINT_SEPIA: - TintPalette_SepiaTone(gPlttBufferUnfaded + slot * 16, count * 16); - break; - case QL_TINT_BACKUP_GRAYSCALE: - QuestLog_BackUpPalette(slot * 16, count * 16); - TintPalette_GrayScale(gPlttBufferUnfaded + slot * 16, count * 16); - break; - default: - return; + case QL_TINT_NONE: + return; + case QL_TINT_GRAYSCALE: + TintPalette_GrayScale(gPlttBufferUnfaded + slot * 16, count * 16); + break; + case QL_TINT_SEPIA: + TintPalette_SepiaTone(gPlttBufferUnfaded + slot * 16, count * 16); + break; + case QL_TINT_BACKUP_GRAYSCALE: + QuestLog_BackUpPalette(slot * 16, count * 16); + TintPalette_GrayScale(gPlttBufferUnfaded + slot * 16, count * 16); + break; + default: + return; } CpuFastCopy(gPlttBufferUnfaded + slot * 16, gPlttBufferFaded + slot * 16, count * 16 * sizeof(u16)); } -static void apply_map_tileset_palette(struct Tileset const *tileset, u16 destOffset, u16 size) +static void LoadTilesetPalette(struct Tileset const *tileset, u16 destOffset, u16 size) { u16 black = RGB_BLACK; @@ -981,45 +905,45 @@ static void apply_map_tileset_palette(struct Tileset const *tileset, u16 destOff } } -void copy_map_tileset1_to_vram(const struct MapLayout *mapLayout) +void CopyPrimaryTilesetToVram(const struct MapLayout *mapLayout) { - copy_tileset_patterns_to_vram(mapLayout->primaryTileset, NUM_TILES_IN_PRIMARY, 0); + CopyTilesetToVram(mapLayout->primaryTileset, NUM_TILES_IN_PRIMARY, 0); } -void copy_map_tileset2_to_vram(const struct MapLayout *mapLayout) +void CopySecondaryTilesetToVram(const struct MapLayout *mapLayout) { - copy_tileset_patterns_to_vram(mapLayout->secondaryTileset, NUM_TILES_TOTAL - NUM_TILES_IN_PRIMARY, NUM_TILES_IN_PRIMARY); + CopyTilesetToVram(mapLayout->secondaryTileset, NUM_TILES_TOTAL - NUM_TILES_IN_PRIMARY, NUM_TILES_IN_PRIMARY); } -void copy_map_tileset2_to_vram_2(const struct MapLayout *mapLayout) +void CopySecondaryTilesetToVramUsingHeap(const struct MapLayout *mapLayout) { - copy_tileset_patterns_to_vram2(mapLayout->secondaryTileset, NUM_TILES_TOTAL - NUM_TILES_IN_PRIMARY, NUM_TILES_IN_PRIMARY); + CopyTilesetToVramUsingHeap(mapLayout->secondaryTileset, NUM_TILES_TOTAL - NUM_TILES_IN_PRIMARY, NUM_TILES_IN_PRIMARY); } -void apply_map_tileset1_palette(const struct MapLayout *mapLayout) +static void LoadPrimaryTilesetPalette(const struct MapLayout *mapLayout) { - apply_map_tileset_palette(mapLayout->primaryTileset, 0, NUM_PALS_IN_PRIMARY * 16 * 2); + LoadTilesetPalette(mapLayout->primaryTileset, 0, NUM_PALS_IN_PRIMARY * 16 * 2); } -void apply_map_tileset2_palette(const struct MapLayout *mapLayout) +void LoadSecondaryTilesetPalette(const struct MapLayout *mapLayout) { - apply_map_tileset_palette(mapLayout->secondaryTileset, NUM_PALS_IN_PRIMARY * 16, (NUM_PALS_TOTAL - NUM_PALS_IN_PRIMARY) * 16 * 2); + LoadTilesetPalette(mapLayout->secondaryTileset, NUM_PALS_IN_PRIMARY * 16, (NUM_PALS_TOTAL - NUM_PALS_IN_PRIMARY) * 16 * 2); } -void copy_map_tileset1_tileset2_to_vram(struct MapLayout const *mapLayout) +void CopyMapTilesetsToVram(struct MapLayout const *mapLayout) { if (mapLayout) { - copy_tileset_patterns_to_vram2(mapLayout->primaryTileset, NUM_TILES_IN_PRIMARY, 0); - copy_tileset_patterns_to_vram2(mapLayout->secondaryTileset, NUM_TILES_TOTAL - NUM_TILES_IN_PRIMARY, NUM_TILES_IN_PRIMARY); + CopyTilesetToVramUsingHeap(mapLayout->primaryTileset, NUM_TILES_IN_PRIMARY, 0); + CopyTilesetToVramUsingHeap(mapLayout->secondaryTileset, NUM_TILES_TOTAL - NUM_TILES_IN_PRIMARY, NUM_TILES_IN_PRIMARY); } } -void apply_map_tileset1_tileset2_palette(struct MapLayout const *mapLayout) +void LoadMapTilesetPalettes(struct MapLayout const *mapLayout) { if (mapLayout) { - apply_map_tileset1_palette(mapLayout); - apply_map_tileset2_palette(mapLayout); + LoadPrimaryTilesetPalette(mapLayout); + LoadSecondaryTilesetPalette(mapLayout); } } diff --git a/src/itemfinder.c b/src/itemfinder.c index 7d61545de..5627582be 100644 --- a/src/itemfinder.c +++ b/src/itemfinder.c @@ -316,30 +316,30 @@ static bool8 HiddenItemInConnectedMapAtPos(struct MapConnection * connection, s3 u32 localOffset; s32 localLength; - mapHeader = mapconnection_get_mapheader(connection); + mapHeader = GetMapHeaderFromConnection(connection); switch (connection->direction) { // same weird temp variable behavior seen in HiddenItemAtPos - case 2: + case CONNECTION_NORTH: localOffset = connection->offset + 7; localX = x - localOffset; localLength = mapHeader->mapLayout->height - 7; localY = localLength + y; // additions are reversed for some reason break; - case 1: + case CONNECTION_SOUTH: localOffset = connection->offset + 7; localX = x - localOffset; localLength = gMapHeader.mapLayout->height + 7; localY = y - localLength; break; - case 3: + case CONNECTION_WEST: localLength = mapHeader->mapLayout->width - 7; localX = localLength + x; // additions are reversed for some reason localOffset = connection->offset + 7; localY = y - localOffset; break; - case 4: + case CONNECTION_EAST: localLength = gMapHeader.mapLayout->width + 7; localX = x - localLength; localOffset = connection->offset + 7; diff --git a/src/overworld.c b/src/overworld.c index 18d6aa2b2..31a48ebdb 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -477,8 +477,8 @@ void Overworld_SetObjEventTemplateMovementType(u8 localId, u8 movementType) static void mapdata_load_assets_to_gpu_and_full_redraw(void) { move_tilemap_camera_to_upper_left_corner(); - copy_map_tileset1_tileset2_to_vram(gMapHeader.mapLayout); - apply_map_tileset1_tileset2_palette(gMapHeader.mapLayout); + CopyMapTilesetsToVram(gMapHeader.mapLayout); + LoadMapTilesetPalettes(gMapHeader.mapLayout); DrawWholeMapView(); InitTilesetAnimations(); } @@ -766,8 +766,8 @@ void LoadMapFromCameraTransition(u8 mapGroup, u8 mapNum) RunOnTransitionMapScript(); TryRegenerateRenewableHiddenItems(); InitMap(); - copy_map_tileset2_to_vram_2(gMapHeader.mapLayout); - apply_map_tileset2_palette(gMapHeader.mapLayout); + CopySecondaryTilesetToVramUsingHeap(gMapHeader.mapLayout); + LoadSecondaryTilesetPalette(gMapHeader.mapLayout); for (paletteIndex = 7; paletteIndex < 13; paletteIndex++) ApplyWeatherGammaShiftToPal(paletteIndex); InitSecondaryTilesetAnimation(); @@ -1796,17 +1796,17 @@ static bool32 map_loading_iteration_3(u8 *state) (*state)++; break; case 6: - copy_map_tileset1_to_vram(gMapHeader.mapLayout); + CopyPrimaryTilesetToVram(gMapHeader.mapLayout); (*state)++; break; case 7: - copy_map_tileset2_to_vram(gMapHeader.mapLayout); + CopySecondaryTilesetToVram(gMapHeader.mapLayout); (*state)++; break; case 8: if (FreeTempTileDataBuffersIfPossible() != TRUE) { - apply_map_tileset1_tileset2_palette(gMapHeader.mapLayout); + LoadMapTilesetPalettes(gMapHeader.mapLayout); (*state)++; } break; @@ -1881,17 +1881,17 @@ static bool32 load_map_stuff(u8 *state, bool32 a1) (*state)++; break; case 7: - copy_map_tileset1_to_vram(gMapHeader.mapLayout); + CopyPrimaryTilesetToVram(gMapHeader.mapLayout); (*state)++; break; case 8: - copy_map_tileset2_to_vram(gMapHeader.mapLayout); + CopySecondaryTilesetToVram(gMapHeader.mapLayout); (*state)++; break; case 9: if (FreeTempTileDataBuffersIfPossible() != TRUE) { - apply_map_tileset1_tileset2_palette(gMapHeader.mapLayout); + LoadMapTilesetPalettes(gMapHeader.mapLayout); (*state)++; } break; @@ -1986,17 +1986,17 @@ static bool32 map_loading_iteration_2_link(u8 *state) (*state)++; break; case 5: - copy_map_tileset1_to_vram(gMapHeader.mapLayout); + CopyPrimaryTilesetToVram(gMapHeader.mapLayout); (*state)++; break; case 6: - copy_map_tileset2_to_vram(gMapHeader.mapLayout); + CopySecondaryTilesetToVram(gMapHeader.mapLayout); (*state)++; break; case 7: if (FreeTempTileDataBuffersIfPossible() != TRUE) { - apply_map_tileset1_tileset2_palette(gMapHeader.mapLayout); + LoadMapTilesetPalettes(gMapHeader.mapLayout); (*state)++; } break; @@ -2281,17 +2281,17 @@ static bool32 LoadMap_QLPlayback(u8 *state) (*state)++; break; case 6: - copy_map_tileset1_to_vram(gMapHeader.mapLayout); + CopyPrimaryTilesetToVram(gMapHeader.mapLayout); (*state)++; break; case 7: - copy_map_tileset2_to_vram(gMapHeader.mapLayout); + CopySecondaryTilesetToVram(gMapHeader.mapLayout); (*state)++; break; case 8: if (FreeTempTileDataBuffersIfPossible() != TRUE) { - apply_map_tileset1_tileset2_palette(gMapHeader.mapLayout); + LoadMapTilesetPalettes(gMapHeader.mapLayout); (*state)++; } break; @@ -2450,17 +2450,17 @@ static bool8 MapLdr_Credits(void) (*state)++; break; case 4: - copy_map_tileset1_to_vram(gMapHeader.mapLayout); + CopyPrimaryTilesetToVram(gMapHeader.mapLayout); (*state)++; break; case 5: - copy_map_tileset2_to_vram(gMapHeader.mapLayout); + CopySecondaryTilesetToVram(gMapHeader.mapLayout); (*state)++; break; case 6: if (FreeTempTileDataBuffersIfPossible() != TRUE) { - apply_map_tileset1_tileset2_palette(gMapHeader.mapLayout); + LoadMapTilesetPalettes(gMapHeader.mapLayout); (*state)++; } break; diff --git a/src/save.c b/src/save.c index 3ce4025bf..2c01a3f57 100644 --- a/src/save.c +++ b/src/save.c @@ -859,7 +859,7 @@ void Task_LinkSave(u8 taskId) case 2: if (IsLinkTaskFinished()) { - save_serialize_map(); + SaveMapView(); gTasks[taskId].data[0] = 3; } break; diff --git a/src/start_menu.c b/src/start_menu.c index 4f901c25d..e33b30e33 100644 --- a/src/start_menu.c +++ b/src/start_menu.c @@ -596,7 +596,7 @@ static bool8 StartCB_Save2(void) static void StartMenu_PrepareForSave(void) { - save_serialize_map(); + SaveMapView(); sSaveDialogCB = SaveDialogCB_PrintAskSaveText; sSaveDialogIsPrinting = FALSE; } diff --git a/src/wild_encounter.c b/src/wild_encounter.c index 90501e583..d848d0ce5 100644 --- a/src/wild_encounter.c +++ b/src/wild_encounter.c @@ -365,11 +365,11 @@ bool8 StandardWildEncounter(u32 currMetatileAttrs, u16 previousMetatileBehavior) headerId = GetCurrentMapWildMonHeaderId(); if (headerId != 0xFFFF) { - if (GetMetatileAttributeFromRawMetatileBehavior(currMetatileAttrs, METATILE_ATTRIBUTE_ENCOUNTER_TYPE) == TILE_ENCOUNTER_LAND) + if (ExtractMetatileAttribute(currMetatileAttrs, METATILE_ATTRIBUTE_ENCOUNTER_TYPE) == TILE_ENCOUNTER_LAND) { if (gWildMonHeaders[headerId].landMonsInfo == NULL) return FALSE; - else if (previousMetatileBehavior != GetMetatileAttributeFromRawMetatileBehavior(currMetatileAttrs, METATILE_ATTRIBUTE_BEHAVIOR) && !DoGlobalWildEncounterDiceRoll()) + else if (previousMetatileBehavior != ExtractMetatileAttribute(currMetatileAttrs, METATILE_ATTRIBUTE_BEHAVIOR) && !DoGlobalWildEncounterDiceRoll()) return FALSE; if (DoWildEncounterRateTest(gWildMonHeaders[headerId].landMonsInfo->encounterRate, FALSE) != TRUE) { @@ -403,12 +403,12 @@ bool8 StandardWildEncounter(u32 currMetatileAttrs, u16 previousMetatileBehavior) } } } - else if (GetMetatileAttributeFromRawMetatileBehavior(currMetatileAttrs, METATILE_ATTRIBUTE_ENCOUNTER_TYPE) == TILE_ENCOUNTER_WATER - || (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING) && MetatileBehavior_IsBridge(GetMetatileAttributeFromRawMetatileBehavior(currMetatileAttrs, METATILE_ATTRIBUTE_BEHAVIOR)) == TRUE)) + else if (ExtractMetatileAttribute(currMetatileAttrs, METATILE_ATTRIBUTE_ENCOUNTER_TYPE) == TILE_ENCOUNTER_WATER + || (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING) && MetatileBehavior_IsBridge(ExtractMetatileAttribute(currMetatileAttrs, METATILE_ATTRIBUTE_BEHAVIOR)) == TRUE)) { if (gWildMonHeaders[headerId].waterMonsInfo == NULL) return FALSE; - else if (previousMetatileBehavior != GetMetatileAttributeFromRawMetatileBehavior(currMetatileAttrs, METATILE_ATTRIBUTE_BEHAVIOR) && !DoGlobalWildEncounterDiceRoll()) + else if (previousMetatileBehavior != ExtractMetatileAttribute(currMetatileAttrs, METATILE_ATTRIBUTE_BEHAVIOR) && !DoGlobalWildEncounterDiceRoll()) return FALSE; else if (DoWildEncounterRateTest(gWildMonHeaders[headerId].waterMonsInfo->encounterRate, FALSE) != TRUE) { @@ -709,7 +709,7 @@ void ResetEncounterRateModifiers(void) static bool8 HandleWildEncounterCooldown(u32 currMetatileAttrs) { - u8 encounterType = GetMetatileAttributeFromRawMetatileBehavior(currMetatileAttrs, METATILE_ATTRIBUTE_ENCOUNTER_TYPE); + u8 encounterType = ExtractMetatileAttribute(currMetatileAttrs, METATILE_ATTRIBUTE_ENCOUNTER_TYPE); u32 minSteps; u32 encRate; if (encounterType == TILE_ENCOUNTER_NONE) @@ -761,19 +761,19 @@ bool8 TryStandardWildEncounter(u32 currMetatileAttrs) { if (!HandleWildEncounterCooldown(currMetatileAttrs)) { - sWildEncounterData.prevMetatileBehavior = GetMetatileAttributeFromRawMetatileBehavior(currMetatileAttrs, METATILE_ATTRIBUTE_BEHAVIOR); + sWildEncounterData.prevMetatileBehavior = ExtractMetatileAttribute(currMetatileAttrs, METATILE_ATTRIBUTE_BEHAVIOR); return FALSE; } else if (StandardWildEncounter(currMetatileAttrs, sWildEncounterData.prevMetatileBehavior) == TRUE) { sWildEncounterData.encounterRateBuff = 0; sWildEncounterData.stepsSinceLastEncounter = 0; - sWildEncounterData.prevMetatileBehavior = GetMetatileAttributeFromRawMetatileBehavior(currMetatileAttrs, METATILE_ATTRIBUTE_BEHAVIOR); + sWildEncounterData.prevMetatileBehavior = ExtractMetatileAttribute(currMetatileAttrs, METATILE_ATTRIBUTE_BEHAVIOR); return TRUE; } else { - sWildEncounterData.prevMetatileBehavior = GetMetatileAttributeFromRawMetatileBehavior(currMetatileAttrs, METATILE_ATTRIBUTE_BEHAVIOR); + sWildEncounterData.prevMetatileBehavior = ExtractMetatileAttribute(currMetatileAttrs, METATILE_ATTRIBUTE_BEHAVIOR); return FALSE; } } |