# Project Files

Porymap relies on the user maintaining a certain level of integrity with their project files. This is a list of files that porymap reads from and writes to. Generally, if porymap writes to a file, it probably is not a good idea to edit yourself unless otherwise noted.

The filepath that Porymap expects for each file can be overridden on the `Files` tab of `Options -> Project Settings`. A new path can be specified by entering it in the text box or choosing it with the button. Paths are expected to be relative to the root project folder. If no path is specified, or if the file/folder specified does not exist, then the default path will be used instead. The name of each setting in this section is listed in the table below under `Override`.

File Name | Read | Write | Override | Notes
--- | --- | --- | --- | ---
data/maps/*/map.json | yes | yes | `data_map_folders` |
data/maps/*/scripts.[inc|pory] | yes | no | `data_map_folders` | for finding script labels
data/scripts/*.[inc|pory] | yes | no | `data_scripts_folders` | for finding script labels
data/event_scripts.s | no | yes | `data_event_scripts` | only appends new script files to end of file
data/maps/map_groups.json | yes | yes | `json_map_groups` |
data/layouts/layouts.json | yes | yes | `json_layouts` |
data/layouts/*/[border|map].bin | yes | yes | `data_layouts_folders` |
src/data/tilesets/headers.h | yes | yes | `tilesets_headers` |
src/data/tilesets/graphics.h | yes | yes | `tilesets_graphics` | also edits palette and tile image files listed in this file
src/data/tilesets/metatiles.h | yes | yes | `tilesets_metatiles` | also edits metatile files listed in this file
data/tilesets/headers.inc | yes | yes | `tilesets_headers_asm` | only if `tilesets_headers` can’t be found
data/tilesets/graphics.inc | yes | yes | `tilesets_graphics_asm` | only if `tilesets_headers` can’t be found
data/tilesets/metatiles.inc | yes | yes | `tilesets_metatiles_asm` | only if `tilesets_headers` can’t be found
data/tilesets/[primary|secondary]/* | yes | yes | `data_tilesets_folders` | default tileset data location
src/data/wild_encounters.json | yes | yes | `json_wild_encounters` | optional (only required to use Wild Pokémon tab)
src/data/object_events/object_event_graphics_info_pointers.h | yes | no | `data_obj_event_gfx_pointers` |
src/data/object_events/object_event_graphics_info.h | yes | no | `data_obj_event_gfx_info` |
src/data/object_events/object_event_pic_tables.h | yes | no | `data_obj_event_pic_tables` |
src/data/object_events/object_event_graphics.h | yes | no | `data_obj_event_gfx` |
src/data/graphics/pokemon.h | yes | no | `data_pokemon_gfx` | for pokemon sprite icons
src/data/heal_locations.h | yes | yes | `data_heal_locations` |
src/data/region_map/region_map_sections.json | yes | yes | `json_region_map_entries` |
src/data/region_map/porymap_config.json | yes | yes | `json_region_porymap_cfg` |
include/constants/global.h | yes | no | `constants_global` | reads `define_obj_event_count`
include/constants/map_groups.h | no | yes | `constants_map_groups` |
include/constants/items.h | yes | no | `constants_items` | for Hidden Item events
include/constants/flags.h | yes | no | `constants_flags` | for Object and Hidden Item events
include/constants/vars.h | yes | no | `constants_vars` | for Trigger events
include/constants/weather.h | yes | no | `constants_weather` | for map weather and Weather Triggers
include/constants/songs.h | yes | no | `constants_songs` | for map music
include/constants/heal_locations.h | yes | yes | `constants_heal_locations` |
include/constants/pokemon.h | yes | no | `constants_pokemon` | reads `define_min_level` and `define_max_level`
include/constants/map_types.h | yes | no | `constants_map_types` |
include/constants/trainer_types.h | yes | no | `constants_trainer_types` | for Object events
include/constants/secret_bases.h | yes | no | `constants_secret_bases` | pokeemerald and pokeruby only
include/constants/event_object_movement.h | yes | no | `constants_obj_event_movement` |
include/constants/event_objects.h | yes | no | `constants_obj_events` |
include/constants/event_bg.h | yes | no | `constants_event_bg` |
include/constants/region_map_sections.h | yes | no | `constants_region_map_sections` |
include/constants/metatile_labels.h | yes | yes | `constants_metatile_labels` |
include/constants/metatile_behaviors.h | yes | no | `constants_metatile_behaviors` |
include/constants/species.h | yes | no | `constants_metatile_behaviors` | for the Wild Pokémon tab
include/global.fieldmap.h | yes | no | `global_fieldmap` | reads map and tileset data masks
include/fieldmap.h | yes | no | `constants_fieldmap` | reads tileset related constants
src/fieldmap.c | yes | no | `fieldmap` | reads `symbol_attribute_table`
src/event_object_movement.c | yes | no | `initial_facing_table` | reads `symbol_facing_directions`
src/pokemon_icon.c | yes | no | `pokemon_icon_table` | reads files in `symbol_pokemon_icon_table`
graphics/pokemon/*/icon.png | yes | no | `pokemon_gfx` | to search for Pokémon icons if they aren’t found in `symbol_pokemon_icon_table`

In addition to these files, there are some specific symbol and macro names that Porymap expects to find in your project. These can be overridden on the `Identifiers` tab of `Options -> Project Settings`. The name of each setting in this section is listed in the table below under `Override`. Overrides with `regex` in the name support the regular expression syntax used by Qt.

Override | Default | Notes
--- | --- | ---
`symbol_facing_directions` | `gInitialMovementTypeFacingDirections` | to set sprite frame for Object Events based on movement type
`symbol_obj_event_gfx_pointers` | `gObjectEventGraphicsInfoPointers` | to map Object Event graphics IDs to graphics data
`symbol_pokemon_icon_table` | `gMonIconTable` | to map species constants to icon images
`symbol_wild_encounters` | `gWildMonHeaders` | output as the `label` property for the top-level wild ecounters JSON object
`symbol_heal_locations_type` | `struct HealLocation` | the type for the Heal Locations table
`symbol_heal_locations` | `sHealLocations` | the default Heal Locations table name when `Respawn Map/NPC` is disabled
`symbol_spawn_points` | `sSpawnPoints` | the default Heal Locations table name when `Respawn Map/NPC` is enabled
`symbol_spawn_maps` | `u16 sWhiteoutRespawnHealCenterMapIdxs` | the type and table name for Heal Location `Respawn Map` values
`symbol_spawn_npcs` | `u8 sWhiteoutRespawnHealerNpcIds` | the type and table name for Heal Location `Respawn NPC` values
`symbol_attribute_table` | `sMetatileAttrMasks` | optionally read to get settings on `Tilesets` tab
`symbol_tilesets_prefix` | `gTileset_` | for new tileset names and to extract base tileset names
`define_obj_event_count` | `OBJECT_EVENT_TEMPLATES_COUNT` | to limit total Object Events
`define_min_level` | `MIN_LEVEL` | minimum wild encounters level
`define_max_level` | `MAX_LEVEL` | maximum wild encounters level
`define_tiles_primary` | `NUM_TILES_IN_PRIMARY` |
`define_tiles_total` | `NUM_TILES_TOTAL` |
`define_metatiles_primary` | `NUM_METATILES_IN_PRIMARY` | total metatiles are calculated using metatile ID mask
`define_pals_primary` | `NUM_PALS_IN_PRIMARY` |
`define_pals_total` | `NUM_PALS_TOTAL` |
`define_map_size` | `MAX_MAP_DATA_SIZE` | to limit map dimensions
`define_mask_metatile` | `MAPGRID_METATILE_ID_MASK` | optionally read to get settings on `Maps` tab
`define_mask_collision` | `MAPGRID_COLLISION_MASK` | optionally read to get settings on `Maps` tab
`define_mask_elevation` | `MAPGRID_ELEVATION_MASK` | optionally read to get settings on `Maps` tab
`define_mask_behavior` | `METATILE_ATTR_BEHAVIOR_MASK` | optionally read to get settings on `Tilesets` tab
`define_mask_layer` | `METATILE_ATTR_LAYER_MASK` | optionally read to get settings on `Tilesets` tab
`define_attribute_behavior` | `METATILE_ATTRIBUTE_BEHAVIOR` | name used to extract setting from `symbol_attribute_table`
`define_attribute_layer` | `METATILE_ATTRIBUTE_LAYER_TYPE` | name used to extract setting from `symbol_attribute_table`
`define_attribute_terrain` | `METATILE_ATTRIBUTE_TERRAIN` | name used to extract setting from `symbol_attribute_table`
`define_attribute_encounter` | `METATILE_ATTRIBUTE_ENCOUNTER_TYPE` | name used to extract setting from `symbol_attribute_table`
`define_metatile_label_prefix` | `METATILE_` | expected prefix for metatile label macro names
`define_heal_locations_prefix` | `HEAL_LOCATION_` | output as prefix for Heal Location IDs if `Respawn Map/NPC` is disabled
`define_spawn_prefix` | `SPAWN_` | output as prefix for Heal Location IDs if `Respawn Map/NPC` is enabled
`define_map_prefix` | `MAP_` | expected prefix for map macro names
`define_map_dynamic` | `DYNAMIC` | macro name after prefix for Dynamic maps
`define_map_empty` | `UNDEFINED` | macro name after prefix for empty maps
`define_map_section_prefix` | `MAPSEC_` | expected prefix for location macro names
`define_map_section_empty` | `NONE` | macro name after prefix for empty region map sections
`define_map_section_count` | `COUNT` | macro name after prefix for total number of region map sections
`regex_behaviors` | `\bMB_` | regex to find metatile behavior macro names
`regex_obj_event_gfx` | `\bOBJ_EVENT_GFX_` | regex to find Object Event graphics ID macro names
`regex_items` | `\bITEM_(?!(B_)?USE_)` | regex to find item macro names
`regex_flags` | `\bFLAG_` | regex to find flag macro names
`regex_vars` | `\bVAR_` | regex to find var macro names
`regex_movement_types` | `\bMOVEMENT_TYPE_` | regex to find movement type macro names
`regex_map_types` | `\bMAP_TYPE_` | regex to find map type macro names
`regex_battle_scenes` | `\bMAP_BATTLE_SCENE_` | regex to find battle scene macro names
`regex_weather` | `\bWEATHER_` | regex to find map weather macro names
`regex_coord_event_weather` | `\bCOORD_EVENT_WEATHER_` | regex to find weather trigger macro names
`regex_secret_bases` | `\bSECRET_BASE_[A-Za-z0-9_]*_[0-9]+` | regex to find secret base ID macro names
`regex_sign_facing_directions` | `\bBG_EVENT_PLAYER_FACING_` | regex to find sign facing direction macro names
`regex_trainer_types` | `\bTRAINER_TYPE_` | regex to find trainer type macro names
`regex_music` | `\b(SE|MUS)_` | regex to find music macro names
`regex_species` | `\bSPECIES_` | regex to find species macro names