Skip to main content

Overview

Project settings define the core configuration for your DevCPC project, including the project name, build level, and output directories.

Required Settings

PROJECT_NAME

The name of your project, used for naming output files (DSK, CDT, CPR).
devcpc.conf
PROJECT_NAME="my_game"
  • Type: String (required)
  • Usage: Names the output files (my_game.dsk, my_game.cdt, etc.)
  • Recommendation: Use alphanumeric characters and underscores only

BUILD_LEVEL

Defines which 8BP functionalities to include in the compilation.
devcpc.conf
BUILD_LEVEL=0
  • Type: Integer (0-4)
  • Default: 0
  • Required for: 8BP projects only
LevelDescriptionMemoryCommandsSize
0All features23599|LAYOUT, |COLAY, |MAP2SP, |UMA, |3D19120 bytes
1Maze games24999|LAYOUT, |COLAY17620 bytes
2Scroll games24799|MAP2SP, |UMA17820 bytes
3Pseudo-3D games23999|3D18620 bytes
4Basic (no scroll/layout)25299Basic commands17320 bytes
Use the highest BUILD_LEVEL possible for your game to maximize available BASIC memory.

Output Directories

OBJ_DIR

Directory for intermediate compilation files.
devcpc.conf
OBJ_DIR="obj"
  • Type: String (optional)
  • Default: "obj"
  • Contains: .bin, .lst, .map, .ihx, .scn files

DIST_DIR

Directory for final distribution files.
devcpc.conf
DIST_DIR="dist"
  • Type: String (optional)
  • Default: "dist"
  • Contains: .dsk, .cdt, .cpr files

Output File Names

DSK

Name of the disk image file.
devcpc.conf
DSK="${PROJECT_NAME}.dsk"
  • Type: String (optional)
  • Default: "${PROJECT_NAME}.dsk"
  • Location: ${DIST_DIR}/${DSK}

CDT

Name of the cassette tape file (optional).
devcpc.conf
CDT="${PROJECT_NAME}.cdt"
  • Type: String (optional)
  • Default: None (commented out)
  • Location: ${DIST_DIR}/${CDT}
  • Requires: CDT_FILES must also be configured
Uncomment this line to enable CDT generation during build.

CDT_FILES

List of files to include in the CDT tape (order matters).
devcpc.conf
CDT_FILES="loader.bas 8BP0.bin main.bin"
  • Type: Space-separated string
  • Required for: CDT generation
  • Order: Files are loaded sequentially in the order specified
  • Source: Files must exist in ${OBJ_DIR}/ and be registered in ${PROJECT_NAME}.map
The order of files in CDT_FILES is critical. List loader files first, then binaries in load order.
Supported file types:
  • .bas - BASIC programs (tokenized)
  • .bin - Machine code binaries (with AMSDOS header)
  • .scn - Screen files (16KB at &C000)
  • .txt - Raw data files

CPR

Name of the cartridge file for GX-4000/CPC Plus (optional).
devcpc.conf
CPR="${PROJECT_NAME}.cpr"
  • Type: String (optional)
  • Default: None (commented out)
  • Location: ${DIST_DIR}/${CPR}
  • Compatible with: GX-4000, CPC 464+, CPC 6128+

CPR_EXECUTE

File to auto-execute when the cartridge starts.
devcpc.conf
CPR_EXECUTE="loader.bas"
  • Type: String
  • Required for: CPR generation
  • Format: Just the filename (e.g., "loader.bas", "8BP0.BIN", "disc")
  • Note: Do NOT include the run"..." command - DevCPC adds this automatically

Example Configuration

devcpc.conf
# Basic project settings
PROJECT_NAME="space_invaders"
BUILD_LEVEL=0

# Output directories
OBJ_DIR="obj"
DIST_DIR="dist"

# Output files
DSK="${PROJECT_NAME}.dsk"
CDT="${PROJECT_NAME}.cdt"
CPR="${PROJECT_NAME}.cpr"

# CDT configuration
CDT_FILES="intro.bas title.scn loader.bas 8BP0.bin game.bin"

# CPR configuration
CPR_EXECUTE="loader.bas"
This generates:
  • dist/space_invaders.dsk - Disk image (all files)
  • dist/space_invaders.cdt - Cassette tape (files in CDT_FILES order)
  • dist/space_invaders.cpr - Cartridge (boots to loader.bas)

See Also

Build docs developers (and LLMs) love