Skip to the content
PCBKitNew board
2 layers88 × 147.9 mmCorallium, the printed circuit board in 3D

A non-interoprable reimagening of the Atto-24 in rust.

Size
88 × 147.9 mm
Copper layers
2
Thickness
1.6 mm
Parts
26
Nets
68
Pads
173
Tracks, vias
0, 0
Routed
Not yet
KiCad
KiCad 10.0 (file 20260206)
Created
21 Dec 2025
Updated
20 Aug 2026

Overview

Corallium is an open-source printed circuit board by DarkSystemGit, from the DarkSystemGit/Corallium repository on GitHub. It is a 2-layer board of 88 × 147.9 mm with 26 parts on 68 nets.

Its parts include 12 switches, 4 capacitors, 4 resistors, 3 ICs and 1 connector.

README

README.md

Corallium

Corallium is a fantasy console, similar to a previous project of mine, Atto-24. It supports Coral, a C-like language with Rust-inspired syntax, plus built-in graphics, sound, disk, and clock devices.

This repository contains a Coral Compiler, an executable/linking layer, and the VM.

Quick start

Requirements

  • Rust (Cargo)
  • A desktop session (the VM opens a graphics window and initializes audio output)
  • X11/XWayland support on Linux, due to the lack of window decorations on Wayland

Install

bash
chmod +x ./install.sh && ./install.sh

This script should work for both linux and MacOS, though Mac is untested, along with Windows. Read over the script carefully before running it.

Run a Coral program

Compile to a cartridge (.cart):

bash
corallium compile --file test/importTest.coral

Link one or more extra files or directories into the cartridge:

bash
corallium compile --file test/importTest.coral --link path/to/file1 path/to/dir

Run from a cartridge:

bash
corallium run --file test/importTest.cart

Enable the runtime debugger:

bash
corallium run --file test/importTest.cart --debug

Show CLI help:

bash
corallium --help

SDK file converters and binary formats

MIDI -> .csfx
bash
corallium sdk convert_music path/to/song.mid

Optional preview WAV:

bash
corallium sdk convert_music path/to/song.mid --wav-preview

convert_music writes path/to/song.csfx with this exact layout:

text
CSFX FILE
+------------------------------+
| Header (48 bytes total)      |
| 8 channel records, each:     |
|   pan        : f32 (4 bytes) |
|   event_count: i16 (2 bytes) |
+------------------------------+
| Event Body                   |
| Channel 0 events             |
| Channel 1 events             |
| ...                          |
| Channel 7 events             |
+------------------------------+

Each event entry is 10 bytes:

text
+----------------------------+
| timestamp_ms : i32 (4)     |
| frequency_hz : f32 (4)     |
| volume       : i16 (2)     |
+----------------------------+

All numeric fields are little-endian.

Image -> .cbmp
bash
corallium sdk convert_image path/to/image.png

convert_image writes path/to/image.cbmp with this exact layout:

text
CBMP FILE
+------------------------------+
| width  : i16 (2 bytes)       |
| height : i16 (2 bytes)       |
+------------------------------+
| pixels : width*height*u32    |
|          row-major order     |
+------------------------------+

Each pixel is one u32 value stored little-endian, where the packed color is:

text
0xRRGGBBAA

Coral language

Coral currently includes:

  • let bindings, arithmetic, bitwise ops, and as casts
  • if/else, while, for, break, and continue
  • match expressions with literal, wildcard, enum, union, struct, and optional patterns
  • struct, union, enum, and type declarations
  • optionals (T?) with Some, None, and try ... catch
  • defer, function calls, pointers, arrays, and sizeof(...)

Example:

rust
fn main() -> void {
  let x: i16=1+2+3;
  let y: i16=4*5*6;
  let z: i32=(y as i32)/(x as i32);
  return;
}

Polyp assembly

Polyp is the assembly language for Corallium. See docs/polyp.md for the syntax, instruction reference, and examples.

Specs

  • Memory: 16 MiB base RAM, with stack-addressable memory above that range
  • Display: 320x240 framebuffer (scaled in a window)
  • Audio: 32 kHz output with built-in square/triangle/saw/sample channels
  • ISA: integer, float, extended 32-bit, stack, control-flow, call/return, and device I/O ops

Device I/O is invoked as IO(device_id, command_id), with command arguments passed on the VM stack.

Built-in devices

Device IDDeviceCommand IDs
0Disk0=read, 1=write, 2=loadSectors
1Audio0=pause, 1=unpause, 2=volume, 3=pan, 4=frequency, 5=masterVolume, 6=loadSound, 7=setLoop, 8=schedule, 9=masterClock
2Clock0=read
3Graphics0=registerAtlas, 1=registerLayer, 2=registerSprite, 3=render, 4=pullControls, 5=setPixel, 6=getPixel, 7=removeSprite, 8=removeLayer, 9=registerBitmap, 10=removeBitmap, 11=deltaTime
4Serial0=write (null-terminated string ptr), 1=writeNum (i32)

Graphics control mapping:

  • A/S/D/F -> A/B/X/Y
  • Arrow keys -> D-pad
  • Space -> Start
  • Q/E -> Left/Right trigger

Imports and linking

  • import "module.coral"; loads Coral source modules relative to the importing file
  • Importing a .h path loads symbols from the header and links a matching precompiled .bin library
  • disk::linkedFileStart() returns the first sector after executable code/data, useful for reading files linked with --link

Project layout

  • src/compiler/ - Coral frontend, AST, IR generation, and backend lowering
  • src/std/ - Coral standard libary
  • src/assembler/ - Polyp frontend, AST, and Code Generation
  • src/executable.rs - bytecode/function packing, constants, disk image build
  • src/vm.rs - VM execution engine, stack/memory model, debug console
  • src/devices/ - disk, audio, clock, graphics, and serial drivers
  • test/ - small Coral examples & tests

Demos

You can run a demo game made for corralium in demos/strider/strider.cart. You can run:

bash
corallium run --file demos/strider/strider.cart

Credits

Credit to Subspace Audio for the start up sound (sourced from this pack: 512 8-bit sounds).

Parts

26
QtyValueFootprintReferences
12Push_ButtonButton_Switch_THT:SW_PUSH_6mmSW1, SW2, SW3, SW4, SW5, SW6, SW7, SW8, SW9, SW10, SW11, SW12
210uFPCM_SparkFun-Capacitor:C_0603_1608MetricC2, C3
2150ohmResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR1, R3
2270ohmResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR6, R7
233nF_CeramicCapacitor_THT:C_Disc_D5.0mm_W2.5mm_P2.50mmC1, C4
2SpeakerPCM_fab:PinHeader_01x02_P2.54mm_Horizontal_SMDLS1, LS2
1CR2013-MI2120Display:CR2013-MI2120U5
1Conn_02x20_Odd_EvenConnector_IDC:IDC-Header_2x20_P2.54mm_VerticalJ1
1MAX98306xDTPackage_DFN_QFN:TDFN-14-1EP_3x3mm_P0.4mm_EP1.78x2.35mmU3
1MCP23017x-x-SOPackage_SO:SOIC-28W_7.5x17.9mm_P1.27mmU1

Questions

How big is the Corallium PCB?

It measures 88 × 147.9 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Corallium use?

26 parts. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Corallium KiCad files?

From the DarkSystemGit/Corallium repository on GitHub, at the commit this page was made from: the board is pcb/corallium/corallium.kicad_pcb and its schematic pcb/corallium/corallium.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Corallium design in my own project?

Its repository states no licence, so its author keeps all rights: ask DarkSystemGit before reusing the design.

Similar boards

  • 2 layers57.3 × 19 mm11ua, the printed circuit board in 3D

    11ua

    rene-dev/stmbl

    AC Servo Driver for STM32F4

    26 parts990GPL-3.0
  • 2 layers98 × 59.5 mmMCP23017 PCB, the printed circuit board in 3D

    MCP23017 PCB

    hackclub/OnBoard

    💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

    26 parts915
  • 2 layers142.9 × 98.5 mmCantor MX, the printed circuit board in 3D

    Cantor MX

    diepala/cantor

    Cantor keyboard, a 42 key diodeless split keyboard.

    26 parts756GPL-3.0
  • 2 layers103.8 × 50 mmGalagino pcb set, the printed circuit board in 3D

    Galagino pcb set

    harbaum/galagino

    A Galaga, Pac-Man and Donkey Kong arcade emulator for the ESP32

    26 parts558
  • 2 layers20.3 × 34.8 mmL0 ESP32, the printed circuit board in 3D

    L0 ESP32

    Luos-io/luos_engine

    Open-source and real-time orchestrator for cyber-physical-systems, to easily design, test and deploy embedded applications and digital twins.

    26 parts546MIT
  • 2 layers40.6 × 50.8 mmWALTsm, the printed circuit board in 3D

    WALTsm

    google/walt

    A device for measuring latency of physical sensors and outputs on phones and computers

    26 parts474Apache-2.0
  • 2 layers158.5 × 75 mmDoj v2, the printed circuit board in 3D

    Doj v2

    kelu124/echomods

    Open source ultrasound processing modules and building blocks

    26 parts463