#ifndef GUARD_REGION_MAP_H #define GUARD_REGION_MAP_H #include "bg.h" // Exported type declarations #define MAP_NAME_LENGTH 16 enum { MAP_INPUT_NONE, MAP_INPUT_MOVE_START, MAP_INPUT_MOVE_CONT, MAP_INPUT_MOVE_END, MAP_INPUT_A_BUTTON, MAP_INPUT_B_BUTTON, }; enum { MAPSECTYPE_NONE, MAPSECTYPE_ROUTE, MAPSECTYPE_CITY_CANFLY, MAPSECTYPE_CITY_CANTFLY, MAPSECTYPE_BATTLE_FRONTIER }; struct RegionMap { /*0x000*/ u16 mapSecId; /*0x002*/ u8 mapSecType; /*0x003*/ u8 posWithinMapSec; /*0x004*/ u8 mapSecName[20]; /*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 struct RegionMapLocation { u8 x; u8 y; u8 width; u8 height; const u8 *name; }; // Exported RAM declarations // Exported ROM declarations void InitRegionMapData(struct RegionMap *regionMap, const struct BgTemplate *template, bool8 zoomed); bool8 LoadRegionMapGfx(void); void UpdateRegionMapVideoRegs(void); void InitRegionMap(struct RegionMap *regionMap, u8 argument); u8 DoRegionMapInputCallback(void); bool8 UpdateRegionMapZoom(void); void FreeRegionMapIconResources(void); u16 GetRegionMapSecIdAt(u16 x, u16 y); void CreateRegionMapPlayerIcon(u16 x, u16 y); void CreateRegionMapCursor(u16 tileTag, u16 paletteTag); bool32 IsEventIslandMapSecId(u8 mapSecId); u8 *GetMapName(u8 *, u16, u16); u8 *GetMapNameGeneric(u8 *dest, u16 mapSecId); u8 *GetMapNameHandleAquaHideout(u8 *dest, u16 mapSecId); u16 CorrectSpecialMapSecId(u16 mapSecId); void ShowRegionMapForPokedexAreaScreen(struct RegionMap *regionMap); void PokedexAreaScreen_UpdateRegionMapVariablesAndVideoRegs(s16 x, s16 y); void CB2_OpenFlyMap(void); bool8 IsRegionMapZoomed(void); void TrySetPlayerIconBlink(void); void BlendRegionMap(u16 color, u32 coeff); void SetRegionMapDataForZoom(void); extern const struct RegionMapLocation gRegionMapEntries[]; #endif //GUARD_REGION_MAP_H