// Includes #include "global.h" #include "map_constants.h" #include "heal_location.h" #define HEAL_LOCATION(map, x, y) {MAP_GROUP_##map, MAP_ID_##map, x, y} // Static type declarations // Static RAM declarations // Static ROM declarations // .rodata static const struct HealLocation sHealLocations[] = { HEAL_LOCATION(LITTLEROOT_TOWN_BRENDANS_HOUSE_2F, 4, 2), HEAL_LOCATION(LITTLEROOT_TOWN_MAYS_HOUSE_2F, 4, 2), HEAL_LOCATION(PETALBURG_CITY, 20, 17), HEAL_LOCATION(SLATEPORT_CITY, 19, 20), HEAL_LOCATION(MAUVILLE_CITY, 22, 6), HEAL_LOCATION(RUSTBORO_CITY, 16, 39), HEAL_LOCATION(FORTREE_CITY, 5, 7), HEAL_LOCATION(LILYCOVE_CITY, 24, 15), HEAL_LOCATION(MOSSDEEP_CITY, 28, 17), HEAL_LOCATION(SOOTOPOLIS_CITY, 43, 32), HEAL_LOCATION(EVER_GRANDE_CITY, 27, 49), HEAL_LOCATION(LITTLEROOT_TOWN, 5, 9), HEAL_LOCATION(LITTLEROOT_TOWN, 14, 9), HEAL_LOCATION(OLDALE_TOWN, 6, 17), HEAL_LOCATION(DEWFORD_TOWN, 2, 11), HEAL_LOCATION(LAVARIDGE_TOWN, 9, 7), HEAL_LOCATION(FALLARBOR_TOWN, 14, 8), HEAL_LOCATION(VERDANTURF_TOWN, 16, 4), HEAL_LOCATION(PACIFIDLOG_TOWN, 8, 16), HEAL_LOCATION(EVER_GRANDE_CITY, 18, 6), HEAL_LOCATION(SOUTHERN_ISLAND_EXTERIOR, 15, 20), HEAL_LOCATION(BATTLE_FRONTIER_OUTSIDE_EAST, 3, 52) }; #define NUM_HEAL_LOCATIONS (ARRAY_COUNT(sHealLocations)) // .text static u32 GetHealLocationIndexFromMapGroupAndNum(u16 mapGroup, u16 mapNum) { u32 i; for (i = 0; i < NUM_HEAL_LOCATIONS; i ++) { if (sHealLocations[i].group == mapGroup && sHealLocations[i].map == mapNum) { return i + 1; } } return 0; } const struct HealLocation *GetHealLocationPointerFromMapGroupAndNum(u16 mapGroup, u16 mapNum) { u32 loc; loc = GetHealLocationIndexFromMapGroupAndNum(mapGroup, mapNum); if (loc == 0) { return NULL; } return &sHealLocations[loc - 1]; } const struct HealLocation *GetHealLocationPointer(u32 loc) { if (loc == 0) { return NULL; } if (loc > NUM_HEAL_LOCATIONS) { return NULL; } return &sHealLocations[loc - 1]; }