# splat extraction / build output
/asm/
/assets/
/build/

# staging/communication layer — not part of the project's committed content
/exchange/
/context.txt

# Local toolchain + SDK source + game data, under external/ (never commit; proprietary
# and/or large): the Sony PsyQ SDK source, the game disc images + SLUS_004.47, and the
# old-gcc / maspsx / binutils toolchain. external/references lists the upstream URLs.
/external/

# proprietary Sony PsyQ SDK headers (from an SDK mirror, unclear redistribution rights) --
# local build use only, must never be committed or pushed.
/include/PsyQ/

# maspsx vendored via local symlink, not a real part of this repo's tree
/tools/maspsx

# the copyrighted base game executable — from the user's own legally-owned copy, never commit
/SLUS_004.47

# splat-generated build inputs (linker scripts, undefined-symbol lists) from make extract
/SLUS_004.47.ld
/undefined_syms_auto.txt
/undefined_funcs_auto.txt
/symbols.csv

# symlink so "#include \"assets/X.inc\"" resolves via the existing -Iinclude search path
# (assets/ itself is already covered by the /assets/ rule above)
/include/assets

# Phase C PC-port build output (source under platform/pc/ is real, tracked content).
# build*/ also catches build_asan/ (sanitizer build) and any future variant build dirs.
/platform/pc/build*/

# PC-port runtime output: save files + unit-test scratch audio. `saves/` (unanchored) catches the
# folder wherever the game creates it -- next to the exe (platform/pc/saves/) or the repo root when
# run from there (cwd-relative). test_vag1.wav is written by the libsnd unit test.
saves/
/platform/pc/test_vag1.wav

# AppImage packaging output (dist/ = AppDir + the .AppImage) and the icon PNG rasterized from
# the committed vandalhearts.svg by build-appimage.sh. The SVG, .desktop, and script ARE tracked.
/platform/pc/dist/
/platform/pc/packaging/appimage/vandalhearts.png

# Sanitizer run logs (ASan/UBSan) and the archived per-run copies made by run_asan.sh
# and run_ubsan.sh. Diagnostics only, and their stack traces embed the build machine's
# absolute paths and login name, so they must never be committed.
/platform/pc/asan.log.*
/platform/pc/ubsan.log.*
/platform/pc/asan_runs/
/platform/pc/ubsan_runs/

# CD/load-timing calibration runs (VH_CD_LOG per-read captures, per-region comparison
# sets) used to calibrate load timing against hardware baselines; the calibrated result
# lives in the CD backend + docs, not here. gdb.log files here also embed absolute build paths.
/platform/pc/timing_runs/

# env-gated PC-port debug dumps (per-frame CSVs / logs) written to cwd or platform/pc/;
# these are diagnostics, never committed (VH_XA_CSV, VH_XA_LOG, SPRITE_LOG, etc.)
vh_*.csv
vh_*.txt
vh_*.log
# ...and VH_SPU_DUMPVAG=1 writes decoded VAB samples as vh_vag_<vab>_<n>.wav -- extracted
# game audio, not just diagnostics, in the same category as the PsyQ headers and the base
# executable: must never enter the repo.
vh_*.wav

# ---- game/BIOS-derived data files: GENERATED at build time, never committed ----

# These reconstruct copyrighted content (Konami UI text, PS1 BIOS kanji glyphs, extracted
# game data) from the user's own legally-owned copy: the byte-exact SLUS_004.47 and the
# PsyQ KROMDAT.BIN, both already required by the build.

# Committing them would distribute copyrighted data; regenerating keeps the source tree
# free of it. platform/pc/tools/gen_*.py regenerates them via the Makefile / CMake build.
/platform/pc/src/pc_kanji_font.c
/platform/pc/src/pc_spell_descriptions.c
/platform/pc/src/pc_item_descriptions.c
/platform/pc/src/pc_evt_entities.c
/platform/pc/src/pc_string_table.c

# ---- runtime diagnostic output (env-gated probes) ----

# Captured locally via the VH_* env probes (VH_GPU_PRIM_LOG, VH_GTE_LOG, VH_SPELL_DUMP,
# VH_BALANCE_DUMP -> *.log; VH_VRAM_DUMP / kill -USR2 -> vh_vram_*.ppm). Never committed.
*.log
vh_vram_*.ppm

# Locally-built static libav for the Windows HD-video build (make-release.sh)
/platform/pc/ffmpeg-mingw-static/
/platform/pc/ffmpeg-linux-static/

# Local test deployment (discs, packs, saves) -- lives OUTSIDE build-uni* so release
# clean builds can never wipe it (make-release.sh guards against the reverse).
/platform/pc/deploy/
