#ifndef GUARD_REGION_MAP_H #define GUARD_REGION_MAP_H #include "bg.h" // Exported type declarations enum { MAPSEC_LITTLEROOT_TOWN, MAPSEC_OLDALE_TOWN, MAPSEC_DEWFORD_TOWN, MAPSEC_LAVARIDGE_TOWN, MAPSEC_FALLARBOR_TOWN, MAPSEC_VERDANTURF_TOWN, MAPSEC_PACIFIDLOG_TOWN, MAPSEC_PETALBURG_CITY, MAPSEC_SLATEPORT_CITY, MAPSEC_MAUVILLE_CITY, MAPSEC_RUSTBORO_CITY, MAPSEC_FORTREE_CITY, MAPSEC_LILYCOVE_CITY, MAPSEC_MOSSDEEP_CITY, MAPSEC_SOOTOPOLIS_CITY, MAPSEC_EVER_GRANDE_CITY, MAPSEC_ROUTE_101, MAPSEC_ROUTE_102, MAPSEC_ROUTE_103, MAPSEC_ROUTE_104, MAPSEC_ROUTE_105, MAPSEC_ROUTE_106, MAPSEC_ROUTE_107, MAPSEC_ROUTE_108, MAPSEC_ROUTE_109, MAPSEC_ROUTE_110, MAPSEC_ROUTE_111, MAPSEC_ROUTE_112, MAPSEC_ROUTE_113, MAPSEC_ROUTE_114, MAPSEC_ROUTE_115, MAPSEC_ROUTE_116, MAPSEC_ROUTE_117, MAPSEC_ROUTE_118, MAPSEC_ROUTE_119, MAPSEC_ROUTE_120, MAPSEC_ROUTE_121, MAPSEC_ROUTE_122, MAPSEC_ROUTE_123, MAPSEC_ROUTE_124, MAPSEC_ROUTE_125, MAPSEC_ROUTE_126, MAPSEC_ROUTE_127, MAPSEC_ROUTE_128, MAPSEC_ROUTE_129, MAPSEC_ROUTE_130, MAPSEC_ROUTE_131, MAPSEC_ROUTE_132, MAPSEC_ROUTE_133, MAPSEC_ROUTE_134, MAPSEC_UNDERWATER_124, MAPSEC_UNDERWATER_125, MAPSEC_UNDERWATER_126, MAPSEC_UNDERWATER_127, MAPSEC_UNDERWATER_SOOTOPOLIS, MAPSEC_GRANITE_CAVE, MAPSEC_MT_CHIMNEY, MAPSEC_SAFARI_ZONE, MAPSEC_BATTLE_FRONTIER, MAPSEC_PETALBURG_WOODS, MAPSEC_RUSTURF_TUNNEL, MAPSEC_ABANDONED_SHIP, MAPSEC_NEW_MAUVILLE, MAPSEC_METEOR_FALLS, MAPSEC_METEOR_FALLS2, MAPSEC_MT_PYRE, MAPSEC_AQUA_HIDEOUT_OLD, MAPSEC_SHOAL_CAVE, MAPSEC_SEAFLOOR_CAVERN, MAPSEC_UNDERWATER_128, MAPSEC_VICTORY_ROAD, MAPSEC_MIRAGE_ISLAND, MAPSEC_CAVE_OF_ORIGIN, MAPSEC_SOUTHERN_ISLAND, MAPSEC_FIERY_PATH, MAPSEC_FIERY_PATH2, MAPSEC_JAGGED_PASS, MAPSEC_JAGGED_PASS2, MAPSEC_SEALED_CHAMBER, MAPSEC_UNDERWATER_SEALED_CHAMBER, MAPSEC_SCORCHED_SLAB, MAPSEC_ISLAND_CAVE, MAPSEC_DESERT_RUINS, MAPSEC_ANCIENT_TOMB, MAPSEC_INSIDE_OF_TRUCK, MAPSEC_SKY_PILLAR, MAPSEC_SECRET_BASE, MAPSEC_SS_TIDAL, MAPSEC_PALLET_TOWN, MAPSEC_VIRIDIAN_CITY, MAPSEC_PEWTER_CITY, MAPSEC_CERULEAN_CITY, MAPSEC_LAVENDER_TOWN, MAPSEC_VERMILION_CITY, MAPSEC_CELADON_CITY, MAPSEC_FUCHSIA_CITY, MAPSEC_CINNABAR_ISLAND, MAPSEC_INDIGO_PLATEAU, MAPSEC_SAFFRON_CITY, MAPSEC_ROUTE_4, MAPSEC_ROUTE_10, MAPSEC_ROUTE_1, MAPSEC_ROUTE_2, MAPSEC_ROUTE_3, MAPSEC_ROUTE_4_2, MAPSEC_ROUTE_5, MAPSEC_ROUTE_6, MAPSEC_ROUTE_7, MAPSEC_ROUTE_8, MAPSEC_ROUTE_9, MAPSEC_ROUTE_10_2, MAPSEC_ROUTE_11, MAPSEC_ROUTE_12, MAPSEC_ROUTE_13, MAPSEC_ROUTE_14, MAPSEC_ROUTE_15, MAPSEC_ROUTE_16, MAPSEC_ROUTE_17, MAPSEC_ROUTE_18, MAPSEC_ROUTE_19, MAPSEC_ROUTE_20, MAPSEC_ROUTE_21, MAPSEC_ROUTE_22, MAPSEC_ROUTE_23, MAPSEC_ROUTE_24, MAPSEC_ROUTE_25, MAPSEC_VIRIDIAN_FOREST, MAPSEC_MT_MOON, MAPSEC_S_S_ANNE, MAPSEC_UNDERGROUND_PATH, MAPSEC_UNDERGROUND_PATH_2, MAPSEC_DIGLETTS_CAVE, MAPSEC_KANTO_VICTORY_ROAD, MAPSEC_ROCKET_HIDEOUT, MAPSEC_SILPH_CO, MAPSEC_POKEMON_MANSION, MAPSEC_KANTO_SAFARI_ZONE, MAPSEC_POKEMON_LEAGUE, MAPSEC_ROCK_TUNNEL, MAPSEC_SEAFOAM_ISLANDS, MAPSEC_POKEMON_TOWER, MAPSEC_CERULEAN_CAVE, MAPSEC_POWER_PLANT, MAPSEC_ONE_ISLAND, MAPSEC_TWO_ISLAND, MAPSEC_THREE_ISLAND, MAPSEC_FOUR_ISLAND, MAPSEC_FIVE_ISLAND, MAPSEC_SEVEN_ISLAND, MAPSEC_SIX_ISLAND, MAPSEC_KINDLE_ROAD, MAPSEC_TREASURE_BEACH, MAPSEC_CAPE_BRINK, MAPSEC_BOND_BRIDGE, MAPSEC_THREE_ISLE_PORT, MAPSEC_SEVII_ISLE_6, MAPSEC_SEVII_ISLE_7, MAPSEC_SEVII_ISLE_8, MAPSEC_SEVII_ISLE_9, MAPSEC_RESORT_GORGEOUS, MAPSEC_WATER_LABYRINTH, MAPSEC_FIVE_ISLE_MEADOW, MAPSEC_MEMORIAL_PILLAR, MAPSEC_OUTCAST_ISLAND, MAPSEC_GREEN_PATH, MAPSEC_WATER_PATH, MAPSEC_RUIN_VALLEY, MAPSEC_TRAINER_TOWER, MAPSEC_CANYON_ENTRANCE, MAPSEC_SEVAULT_CANYON, MAPSEC_TANOBY_RUINS, MAPSEC_SEVII_ISLE_22, MAPSEC_SEVII_ISLE_23, MAPSEC_SEVII_ISLE_24, MAPSEC_NAVEL_ROCK, MAPSEC_MT_EMBER, MAPSEC_BERRY_FOREST, MAPSEC_ICEFALL_CAVE, MAPSEC_ROCKET_WAREHOUSE, MAPSEC_TRAINER_TOWER_2, MAPSEC_DOTTED_HOLE, MAPSEC_LOST_CAVE, MAPSEC_PATTERN_BUSH, MAPSEC_ALTERING_CAVE, MAPSEC_TANOBY_CHAMBERS, MAPSEC_THREE_ISLE_PATH, MAPSEC_TANOBY_KEY, MAPSEC_BIRTH_ISLAND, MAPSEC_MONEAN_CHAMBER, MAPSEC_LIPTOO_CHAMBER, MAPSEC_WEEPTH_CHAMBER, MAPSEC_DILFORD_CHAMBER, MAPSEC_SCUFIB_CHAMBER, MAPSEC_RIXY_CHAMBER, MAPSEC_VIAPOIS_CHAMBER, MAPSEC_EMBER_SPA, MAPSEC_SPECIAL_AREA, MAPSEC_AQUA_HIDEOUT, MAPSEC_MAGMA_HIDEOUT, MAPSEC_MIRAGE_TOWER, MAPSEC_BIRTH_ISLAND_2, MAPSEC_FARAWAY_ISLAND, MAPSEC_ARTISAN_CAVE, MAPSEC_MARINE_CAVE, MAPSEC_UNDERWATER_MARINE_CAVE, MAPSEC_TERRA_CAVE, MAPSEC_UNDERWATER_TERRA_CAVE, MAPSEC_UNDERWATER_UNK1, MAPSEC_UNDERWATER_129, MAPSEC_DESERT_UNDERPASS, MAPSEC_ALTERING_CAVE_2, MAPSEC_NAVEL_ROCK2, MAPSEC_TRAINER_HILL, MAPSEC_NONE }; enum { INPUT_EVENT_NONE, INPUT_EVENT_MOVE_START, INPUT_EVENT_MOVE_CONT, INPUT_EVENT_MOVE_END, INPUT_EVENT_A_BUTTON, INPUT_EVENT_B_BUTTON, }; enum { MAPSECTYPE_NONE, MAPSECTYPE_PLAIN, MAPSECTYPE_CITY_CANFLY, MAPSECTYPE_CITY_CANTFLY, MAPSECTYPE_BATTLE_FRONTIER }; struct RegionMap { /*0x000*/ u16 mapSecId; /*0x002*/ u8 iconDrawType; /*0x003*/ u8 posWithinMapSec; /*0x004*/ u8 mapSecName[0x14]; /*0x018*/ u8 (*inputCallback)(void); /*0x01c*/ struct Sprite *cursorSprite; /*0x020*/ struct Sprite *playerIconSprite; /*0x024*/ s32 bg2x; /*0x028*/ s32 bg2y; /*0x02c*/ u32 bg2pa; /*0x034*/ u32 bg2pc; /*0x030*/ u32 bg2pb; /*0x038*/ u32 bg2pd; /*0x03c*/ s32 unk_03c; /*0x040*/ s32 unk_040; /*0x044*/ s32 unk_044; /*0x048*/ s32 unk_048; /*0x04c*/ s32 unk_04c; /*0x050*/ s32 unk_050; /*0x054*/ u16 cursorPosX; /*0x056*/ u16 cursorPosY; /*0x058*/ u16 cursorTileTag; /*0x05a*/ u16 cursorPaletteTag; /*0x05c*/ s16 scrollX; /*0x05e*/ s16 scrollY; /*0x060*/ s16 unk_060; /*0x062*/ s16 unk_062; /*0x064*/ u16 zoomedCursorPosX; /*0x066*/ u16 zoomedCursorPosY; /*0x068*/ s16 zoomedCursorDeltaY; /*0x06a*/ s16 zoomedCursorDeltaX; /*0x06c*/ u16 zoomedCursorMovementFrameCounter; /*0x06e*/ u16 unk_06e; /*0x070*/ u16 playerIconTileTag; /*0x072*/ u16 playerIconPaletteTag; /*0x074*/ u16 playerIconSpritePosX; /*0x076*/ u16 playerIconSpritePosY; /*0x078*/ bool8 zoomed; /*0x079*/ u8 initStep; /*0x07a*/ s8 cursorMovementFrameCounter; /*0x07b*/ s8 cursorDeltaX; /*0x07c*/ s8 cursorDeltaY; /*0x07d*/ bool8 needUpdateVideoRegs; /*0x07e*/ bool8 blinkPlayerIcon; /*0x07f*/ bool8 playerIsInCave; /*0x080*/ u8 bgNum; /*0x081*/ u8 charBaseIdx; /*0x082*/ u8 mapBaseIdx; /*0x083*/ bool8 bgManaged; /*0x084*/ u8 filler_084[0x100]; /*0x184*/ u8 cursorSmallImage[0x100]; /*0x284*/ u8 cursorLargeImage[0x600]; }; // size = 0x884 // Exported RAM declarations // Exported ROM declarations void sub_8122CF8(struct RegionMap *regionMap, struct BgTemplate *template, bool8 zoomed); bool8 sub_8122DB0(void); void UpdateRegionMapVideoRegs(void); void InitRegionMap(struct RegionMap *regionMap, u8 argument); u8 sub_81230AC(void); bool8 sub_8123514(void); void FreeRegionMapIconResources(void); u16 GetRegionMapSectionIdAt(u16 x, u16 y); void CreateRegionMapPlayerIcon(u16 x, u16 y); void CreateRegionMapCursor(u16 tileTag, u16 paletteTag); u8 *GetMapName(u8 *, u16, u16); bool32 sub_8124668(u8 mapSecId); #endif //GUARD_REGION_MAP_H