Skip to content

API Reference: Configuration

Source of truth:

  • include/platforms/EngineConfig.h
  • include/platforms/PlatformDefaults.h

Overview

This document covers global configuration options, build flags, and compile-time constants for the PixelRoot32 Game Engine. Most of these configurations can be overridden in your platformio.ini file without modifying the engine source code.

Platform Macros (Build Flags)

MacroDescriptionDefault (ESP32)
PR32_DEFAULT_AUDIO_CORECPU core assigned to audio tasks.0
PR32_DEFAULT_MAIN_CORECPU core assigned to the main game loop.1
PIXELROOT32_NO_DAC_AUDIODisable Internal DAC support on classic ESP32.Enabled
PIXELROOT32_NO_I2S_AUDIODisable I2S audio support.Enabled
PIXELROOT32_USE_U8G2_DRIVEREnable U8G2 display driver support for monochromatic OLEDs.Disabled
PIXELROOT32_NO_TFT_ESPIDisable default TFT_eSPI driver support.Enabled

Modular Compilation Flags

MacroDescriptionDefault
PIXELROOT32_ENABLE_AUDIOEnable audio subsystem.1
PIXELROOT32_ENABLE_PHYSICSEnable physics system.1
PIXELROOT32_ENABLE_UI_SYSTEMEnable UI system.1
PIXELROOT32_ENABLE_PARTICLESEnable particle system.1
PIXELROOT32_ENABLE_DEBUG_OVERLAYEnable FPS/RAM/CPU debug overlay.Disabled
PIXELROOT32_ENABLE_TILE_ANIMATIONSEnable tile animation system.1
PIXELROOT32_ENABLE_2BPP_SPRITESEnable 2bpp sprite support.Disabled
PIXELROOT32_ENABLE_4BPP_SPRITESEnable 4bpp sprite support.Disabled
PIXELROOT32_ENABLE_SCENE_ARENAEnable scene memory arena.Disabled
PIXELROOT32_ENABLE_PROFILINGEnable profiling hooks in physics pipeline.Disabled
PIXELROOT32_ENABLE_TOUCHEnable automatic touch processing.0 (disabled)
PIXELROOT32_ENABLE_STATIC_TILEMAP_FB_CACHEEnable StaticTilemapLayerCache (4bpp FB snapshot).1
PIXELROOT32_TFT_ESPI_LINES_PER_BLOCKTFT_eSPI DMA line batch size.60
PIXELROOT32_TFT_ESPI_LINES_PER_BLOCK_FALLBACKFallback DMA batch size if memory fails.30
PIXELROOT32_DEBUG_MODEEnable unified logging system.Disabled
PIXELROOT32_ENABLE_PHYSICS_FIXED_TIMESTEPEnable PhysicsScheduler for consistent physics.1
PIXELROOT32_VELOCITY_DAMPINGPer-frame velocity damping factor (0.0-1.0).0.999
PIXELROOT32_MAX_VELOCITYMaximum velocity cap in units/s.500
PIXELROOT32_HAS_FAST_RSQRTEnable fast reciprocal square root.1

Memory Savings by Subsystem

Subsystem DisabledRAM SavingsFlash Savings
PIXELROOT32_ENABLE_AUDIO=0~8 KB~15 KB
PIXELROOT32_ENABLE_PHYSICS=0~12 KB~25 KB
PIXELROOT32_ENABLE_UI_SYSTEM=0~4 KB~20 KB
PIXELROOT32_ENABLE_PARTICLES=0~6 KB~10 KB
PIXELROOT32_ENABLE_TOUCH=0~200 bytes~2 KB

Build Profiles (platformio.ini)

ini
[profile_full]         ; All features enabled
build_flags =
    -D PIXELROOT32_ENABLE_AUDIO=1
    -D PIXELROOT32_ENABLE_PHYSICS=1
    -D PIXELROOT32_ENABLE_PARTICLES=1
    -D PIXELROOT32_ENABLE_UI_SYSTEM=1

[profile_arcade]       ; Audio + Physics + Particles, no UI
build_flags =
    -D PIXELROOT32_ENABLE_AUDIO=1
    -D PIXELROOT32_ENABLE_PHYSICS=1
    -D PIXELROOT32_ENABLE_PARTICLES=1
    -D PIXELROOT32_ENABLE_UI_SYSTEM=0

[profile_puzzle]       ; Audio + UI only, no physics/particles
build_flags =
    -D PIXELROOT32_ENABLE_AUDIO=1
    -D PIXELROOT32_ENABLE_PHYSICS=0
    -D PIXELROOT32_ENABLE_PARTICLES=0
    -D PIXELROOT32_ENABLE_UI_SYSTEM=1

[profile_retro]        ; Minimal: no subsystems
build_flags =
    -D PIXELROOT32_ENABLE_AUDIO=0
    -D PIXELROOT32_ENABLE_PHYSICS=0
    -D PIXELROOT32_ENABLE_PARTICLES=0
    -D PIXELROOT32_ENABLE_UI_SYSTEM=0
Game TypeRecommended ProfileRationale
Arcade (shooters, platformers)arcade or fullPhysics + particles + optional UI
Puzzle / CasualpuzzleUI for menus, simple collision logic
Retro / MinimalretroMinimal footprint, custom collision
Educational / Toolpuzzle or customUI for menus

Core Constants

ConstantDefaultDescription
DISPLAY_WIDTH240The logical width of the display in pixels.
DISPLAY_HEIGHT240The logical height of the display in pixels.
xOffset / yOffset0Coordinate offsets for hardware alignment.
PHYSICS_MAX_PAIRS128Maximum collision pairs considered in broadphase.
PHYSICS_MAX_CONTACTS128Maximum simultaneous contacts in the physics solver.
VELOCITY_ITERATIONS2Number of impulse solver passes per frame.
SPATIAL_GRID_CELL_SIZE32Size of each cell in the broadphase grid (pixels).
SPATIAL_GRID_MAX_ENTITIES_PER_CELL24(Legacy) max entities per cell.
SPATIAL_GRID_MAX_STATIC_PER_CELL12Max static actors per grid cell.
SPATIAL_GRID_MAX_DYNAMIC_PER_CELL12Max dynamic actors per grid cell.

Custom Scene Limits

The engine defines default limits in platforms/EngineConfig.h: MAX_LAYERS (default 3) and MAX_ENTITIES (default 32). These are guarded with #ifndef, so you can override them from your project without modifying the engine.

Compiler flags (recommended)

In your project (e.g. in platformio.ini), add the defines to build_flags:

ini
build_flags =
    -DMAX_LAYERS=5
    -DMAX_ENTITIES=64

Released under the MIT License.