What Are Build Levels?
The 8BP library for Amstrad CPC includes multiple features for game development: sprite handling, scrolling, layouts, pseudo-3D rendering, and more. Not all games need all features, so DevCPC allows you to select a build level that includes only what you need.Higher build levels (4 = least features) free up more BASIC memory by excluding unused 8BP commands.
The 5 Build Levels
Level 0: Full Featured
All 8BP functionality included. Use when you need everything or aren’t sure yet.Memory: 23599 bytes
Size: 19120 bytes
Size: 19120 bytes
Level 1: Maze Games
Layout and collision features for maze-style games.Memory: 24999 bytes
Size: 17620 bytes
Size: 17620 bytes
Level 2: Scrolling Games
Map-to-sprite and update features for scrolling games.Memory: 24799 bytes
Size: 17820 bytes
Size: 17820 bytes
Level 3: Pseudo-3D Games
3D rendering features for pseudo-3D games.Memory: 23999 bytes
Size: 18620 bytes
Size: 18620 bytes
Level 4: Basic Features
Core sprite features only. Maximum memory available.Memory: 25299 bytes
Size: 17320 bytes
Size: 17320 bytes
Detailed Build Level Comparison
- Features Table
- Memory Breakdown
- Command Reference
| Level | Description | MEMORY Value | Library Size | Available Commands |
|---|---|---|---|---|
| 0 | All functionalities | 23599 | 19120 bytes | |LAYOUT, |COLAY, |MAP2SP, |UMA, |3D |
| 1 | Maze games | 24999 | 17620 bytes | |LAYOUT, |COLAY |
| 2 | Scrolling games | 24799 | 17820 bytes | |MAP2SP, |UMA |
| 3 | Pseudo-3D games | 23999 | 18620 bytes | |3D |
| 4 | Basic (no scroll/layout) | 25299 | 17320 bytes | Core sprite commands only |
How to Choose Your Build Level
Use this decision tree to select the optimal build level:Analyze Your Game Requirements
List all the 8BP features your game needs:
- Tile-based layouts? → Consider Level 1
- Scrolling maps? → Consider Level 2
- 3D graphics? → Consider Level 3
- Simple sprites only? → Consider Level 4
- Not sure yet? → Use Level 0
Check Memory Requirements
Estimate how much BASIC memory your game logic needs:
- Large BASIC programs → Choose higher build levels (more memory)
- Small BASIC, complex 8BP → Level 0 is fine
Configuration Example
In devcpc.conf:
In Your BASIC Loader (bas/loader.bas):
Build Level Binary Names
Each build level produces a uniquely named binary:| BUILD_LEVEL | Binary Name | Load From BASIC |
|---|---|---|
| 0 | 8BP0.bin | LOAD"8BP0.bin" |
| 1 | 8BP1.bin | LOAD"8BP1.bin" |
| 2 | 8BP2.bin | LOAD"8BP2.bin" |
| 3 | 8BP3.bin | LOAD"8BP3.bin" |
| 4 | 8BP4.bin | LOAD"8BP4.bin" |
DevCPC automatically sets the
ASSEMBLING_OPTION variable in your ASM file based on BUILD_LEVEL.Switching Build Levels
You can change build levels at any time:Memory Limit Verification
During build, DevCPC automatically checks:Graphics Memory Limit
Graphics Memory Limit
Limit:
_END_GRAPH < 42040Ensures sprite and graphics data don’t overflow into system memory.C Code Memory Limit
C Code Memory Limit
Limit:
C_CODE_LOC + size < 23999Ensures C code doesn’t overwrite the 8BP library.Build Output Messages
When you rundevcpc build, you’ll see:
Best Practices
Start with Level 0
Begin development with Level 0 to access all features, then optimize later.
Match MEMORY Values
Always ensure your BASIC MEMORY statement matches the build level.
Test After Switching
Run
devcpc validate and test thoroughly when changing build levels.Document Your Choice
Add comments in
devcpc.conf explaining why you chose a specific level.Common Issues
Error: Command not found (|MAP2SP)
Error: Command not found (|MAP2SP)
Problem: Your code uses a command not available in your build level.Solution: Either:
- Change to Level 0 or Level 2 (includes
|MAP2SP) - Remove the unsupported command from your code
Program crashes on load
Program crashes on load
Problem: MEMORY value doesn’t match BUILD_LEVEL.Solution: Check your BASIC loader:
Not enough BASIC memory
Not enough BASIC memory
Problem: Large BASIC program hitting memory limits.Solution: Use a higher build level:
- Level 0 (23599) → Level 4 (25299) = +1700 bytes
- Remove unused 8BP features
Next Steps
Configuration Guide
Learn how to configure BUILD_LEVEL and other settings
Project Structure
Understand where build outputs are stored