Repository navigation
First SuperFX baseline
DiscoC 0.1.0 establishes the first documented and tested language/toolchain baseline, with an end-to-end functional SuperFX target.
This is the first experimental baseline release, not a declaration that the compiler is production-ready or optimized.
Included
discc,discasanddiscld: source/project compilation, assembly and linking.- The documented DiscoC Language Baseline 0.1, verified IR/CFG and GSU backend.
- Stateful
plot { ... }graphics withcursor.x/y,color, PLOT hardware X advancement, observable RPIX/flush, and bitmap metadata. - Fixed-origin ROM/RAM payloads, optional runtime initialization and byte-exact final assembly export.
discoc.toml, freestanding library modules, examples, documentation and the language specification.- A reproducible WLA-DX SNES triangle host with independent Mesen integration checks.
Every platform archive contains the three tools and the complete tracked DiscoC source, including build scripts, tests, examples, library modules, documentation and license. Build provenance and executable hashes are recorded in BUILD-INFO.json; SHA256SUMS.txt covers the release assets.
Downloads
| Package | Requirements / status |
|---|---|
discoc-v0.1.0-windows-x86_64-mingw.zip |
Windows x86-64 with Universal CRT; GCC/MinGW runtimes are statically linked. |
discoc-v0.1.0-linux-x86_64.tar.gz |
Built/tested on Ubuntu 24.04; glibc >= 2.38 and libstdc++ with GLIBCXX_3.4.32. Not a universal Linux binary. |
discoc-v0.1.0-macos26-arm64.tar.gz |
Apple Silicon, macOS 26+; not Developer ID-signed/notarized, not an Intel/universal build. |
discoc-v0.1.0-dos-i586-experimental.zip |
Experimental DJGPP 32-bit DOS/DPMI build; cross-compilation verified, DOS execution unverified. No DPMI host bundled. |
discoc-v0.1.0-source.zip |
Source-only archive with build scripts, tests, documentation, library modules and examples. |
discoc-v0.1.0-snes-triangle.zip |
Ready-to-run SuperFX SNES demo ROM, payload/final assembly, preview and complete source. Verified locally in Mesen 2.2.1. |
Extract the matching package and add its bin directory to PATH. For a project with discoc.toml, run:
discc buildTo build the toolchain from source, install a suitable C++23 compiler, CMake 3.21+ and Ninja:
cmake --preset release
cmake --build --preset release
ctest --preset releaseWindows MinGW users can substitute release-mingw.
Validation
- Release source:
c5e902efdde9b4c2b1c5101b7b40c844b4319f87. - All nine platform build/test jobs passed for this exact commit: Windows MSVC Debug/Release, Windows MinGW static, Ubuntu/macOS Debug/Release, Ubuntu ASan/UBSan and DOS cross-compilation.
- CodeQL passed for the same commit.
- The native suite has 91 CTest entries, including 22 language-conformance categories, GSU graphics/ABI/runtime checks, hardened linker/object cases and byte-equivalence regressions.
- A separate local WLA-DX + Mesen complete-ROM test verifies the triangle's pixels/bitplanes, startup, STOP/result, VRAM/tilemap and deliberate failure path. It is not part of hosted CI and does not establish physical-hardware or complete timing/bus correctness.
- Packaged Windows tools were additionally used to build the bundled multi-file and triangle manifests; final linked assembly reassembles byte for byte.
- The packaged Windows tools also rebuilt the complete SNES triangle ROM and passed both Mesen verification scripts. The demo archive includes this positive ROM and its expected preview.
Pre-1.0 guarantees
- Language syntax may still evolve.
- ABI may change.
- Object format may change; rebuild all tools and objects together when upgrading. Current emission is little-endian object format v7.
- The optimizer is immature.
- Generated code is not yet expected to be optimal.
- SPC700 is not yet a fully supported executable target; it currently provides frontend/IR foundations.
Deployment limits
A .bin is a GSU payload, not a complete SNES ROM. It is fixed-origin and must fit one accessible program bank; relink before loading it at a different execution address. The host remains responsible for SNES/PPU setup, payload copying and CPU/GSU bus ownership. Without optional runtime initialization, it must also establish RAMBR, stack and static initialization.
Separate RAM-code/ROM-constant placement, aggregate-by-value and interbank code-call ABIs are not implemented. Physical hardware and exhaustive fuzzing remain unverified.
Further hardening, deployment visibility, optimization and executable SPC700 support follow this baseline.
SNES demo disclaimer
The bundled SNES ROM is an original homebrew demonstration built from the
included example sources and open-source tools. It contains no proprietary
Nintendo code and does not use Nintendo SDK libraries. This project and its
demo are not affiliated with, endorsed by, or sponsored by Nintendo.
Documentation
Release notes · Language specification · Building · Project manifests · GSU loading · SNES triangle