Skip to main content

Photo Locations

Author(s): MrHam88.

This page summarises how photo locations are configured in Pokémon HeartGold and SoulSilver, and provides guidance on editing existing locations or adding new ones.


Location

Photo location definitions are stored in the NARC at: a/2/5/4. Photo album icon graphics are stored in the NARC at: a/1/7/1.

  • Each file in this NARC represents a single camera/photo location that can be used by the TakePhoto command, see scrcmd for details on command usage.
  • The structure used by the game is documented in the pokeheartgold decomp here
  • Most vanilla photo locations are listed on Bulbapedia, however their order does not match the order of entries in this NARC.

File Structure

Each entry file inside the unpacked NARC is 16 bytes long and follows the format:

AA AA BB BB CC CC DD DD EE EE FF FF GG GG HH HH

Field Definitions

BytesNameDescription
AA AAHeader IDHeader where the photo can be taken
BB BBPhoto Album Icon IDIcon shown in the photo album (see below)
CC CCPlayer X CoordinateGlobal X coordinate of the player as they appear in the photo
DD DDPlayer Y CoordinateGlobal Y coordinate of the player as they appear in the photo
EE EEUnknownAlways 01 FF in vanilla
FF FFOverworld Entry IDNPC that appears in the photo, or 00 00 if no NPC
GG GGParameter 1Unknown
HH HHParameter 2Unknown

All values are little endian halfwords.


Photo Album Icons

BB BB determines the icon displayed in the photo album for that picture.

ValueIcon
00 00Mountain landscape
01 00Sea
02 00Yellow plain
03 00Rough terrain
04 00Cave (interior)
05 00Building (exterior)
06 00Building (interior)
07 00Grassland
08 00Forest
09 00Lake

Only some of these are used in vanilla.


NPC Behaviour

The Overworld Entry ID controls whether the photo contains an NPC.

ValueBehaviour
00 00Group photo with the player's full party
Non‑zeroPlayer + first Pokémon + specified NPC

The NPC used in the photo is taken directly from this ID, regardless of what NPCs are actually present on the map.


Unknown Parameters

GG GG and HH HH are used in some vanilla entries but their exact function is currently unknown.

Important behaviour observed:

  • If no NPC is present (Overworld Entry ID = 0), both parameters must be 00 00.
  • If either value is non‑zero in this situation, the game fails to load.

Despite appearing in some entries, these parameters do not appear to visibly affect the resulting photo.

Their purpose remains unresolved.


Example Entry

Example: file 0009 (Route 34 Day Care).

26 00 05 00 6B 01 9A 01 01 FF 4A 01 00 00 00 00

Breakdown:

ValueMeaning
26 00Header 38 (Route 34)
05 00Building exterior icon
6B 01Player X coordinate 363
9A 01Player Y coordinate 410
01 FFUnknown constant
4A 01Overworld Entry 330 (Day Care Man)
00 00Parameter 1
00 00Parameter 2

Player global coordinates can be read from the DSPRE Event Editor by hovering the cursor over the map.


Adding New Photo locations

The system is self-contained inside the NARC, so new entries can safely be added.

Steps

  1. Unpack the NARC a/2/5/4.
  2. Create a new 16‑byte file matching the format described above for your desired photograph (or copy and edit an existing file as a starting point).
  3. Set the new file's name to be the last current file +1
  4. Ensure no temporary or backup files remain in the folder.
  5. Repack the NARC.

A reference guide for unpacking NARCs can be found here

Once added, the new locations can be triggered normally using the TakePhoto script command and the index number of the new photo location. See the latest version of scrcmd to confirm the command name, parameters and parameter types.