Skip to content
@go-doom

go-doom

go-doom

go-doom

Pure-Go DOOM (id Tech 1, 1993) — bare-metal, no cgo.

go-doom is the pure-Go port of the original DOOM engine, derived from AndreRenaud/gore (itself a hand-port from the id Software 1997 source release), with a TamaGo bare-metal backend

  • a 4-gate provable-test protocol validating engine determinism / GPU fidelity / audio events / audio waveform.

Sibling of the go-quake1 family (go-quake1 / go-quake2 / go-quake3 — the id Tech 1 / 2 / 3 ports). Both engines share the same TamaGo backend conventions, the same CGO_ENABLED=0 discipline, and the same 4-gate provable- test harness.

Repositories

Repo Latest Role
engine The DOOM engine, TamaGo backend, harvest-reference oracle, demos
brand Logos, social previews, favicons
.github This profile + shared org workflows

How it works

  • Engine — pure-Go DOOM (doom.go, seed.go, etc., the AndreRenaud/gore fork hand-cleaned for bare-metal use)
  • backend/tamago/ — bare-metal adapters: frontend (run loop) + gpu (framebuffer through go-virtio GPU) + sound (PCM into virtio-snd) + input (virtio-input keyboard)
  • embedwad/ — shareware DOOM1.WAD in-tree (id Software's freely- redistributable shareware grant) so CI is reproducible
  • cmd/harvest-reference/ — reference oracle that runs a canonical demo and records the per-tic frame + audio digests the 4 provable-test gates compare against
  • example/ — host-side demos (SDL, terminal, web, Ebitengine) that share the same engine + a different frontend

Project standards

  • Pure Go. CGO_ENABLED=0 on the engine + TamaGo backend. The host-side demos under example/ are allowed to use cgo (SDL, Ebitengine) because they run in user-space, not on bare metal.
  • Reference-mirror traceability. Every Go file links to the upstream C/Go function it derives from.
  • 4-gate provable-test protocol.
    • GATE A — engine determinism, BYTE-EQUAL frames at checkpoint tics
    • GATE B — guest virtio-gpu fidelity, χ² ≤ tolerance
    • GATE C-1 — audio event stream, BYTE-EQUAL CacheSound/PlaySound log
    • GATE C-2 — guest WAV bounded tolerance (per-second RMS envelope)
  • 6-arch CI. All six 64-bit Go targets — amd64, arm64, riscv64, loong64, ppc64le, s390x — green on each PR (engine itself; the TamaGo + cgo-frontend demos run only on the relevant subset).
  • BSD-3-Clause wrapper + GPL-2.0-or-later carve-out on the engine subtree (inherited from the id Software source release).

Why pure-Go DOOM?

The same reason as go-quake1 and go-virtio: one self-contained Go binary, zero cgo, runs on bare metal — the TamaGo target the cloud-boot loader hands control to. A C engine drags glibc + SDL + the cgo runtime; pure-Go drags exactly runtime + math. DOOM's CPU-only software renderer fits the bare-metal model: no GPU shaders, all CPU rasterisation — exactly the workload pure-Go + go-asmgen SIMD is built for.

Who uses it

cloud-boot — the bare-metal TamaGo + UEFI demo target. The 4-gate provable-test discipline ships with this engine and is carried forward into go-quake1 unchanged: same gates, same reference recordings, against the same go-virtio + go-asmgen substrate.

Landing page

Project landing page: https://go-doom.github.io.

Popular repositories Loading

  1. engine engine Public

    Pure-Go DOOM (id Tech 1, 1993) engine. Hand-port lineage id Software 1997 -> AndreRenaud/gore -> go-doom/engine. Bare-metal TamaGo backend, CGO=0, 4-gate provable-test protocol.

    Go

  2. brand brand Public

    Brand assets — logos & icons

  3. .github .github Public

    Org-wide profile + shared workflows

  4. go-doom.github.io go-doom.github.io Public

    go-doom landing page (Hugo)

    HTML

  5. docs docs Public

    go-doom documentation (MkDocs Material)

Repositories

Showing 5 of 5 repositories

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loading…

Most used topics

Loading…