Skip to content

Repository files navigation

DFUoom

Disclaimer

  • We are not responsible for bricked devices, dead batteries, corrupted data, broken USB connections, thermonuclear war, or your Apple device turning into a pear.
  • This project boots a volatile PongoOS image and does not intentionally flash the device, but low-level boot experiments always carry risk.
  • Please do your own research if you have any concerns about the features included here before booting PongoOS or loading DFUoom.
  • YOU are choosing to make these modifications. If you point the finger at us for messing up your device, we will point you back to this disclaimer — and may laugh a little.

— The DFUoom project

Charge the device, use a reliable data cable, and keep backups. The iPhone 6 (t7000) is the tested target. Other checkm8-compatible devices may expose the required PongoOS APIs, but they remain untested.

Run Doom as a native ARM64 PongoOS module on checkm8-compatible Apple devices.

DFUoom running on an iPhone 6

Educational purpose notice: This project was created for educational purposes, low-level systems research, and learning about boot environments, USB protocols, framebuffers, and game-engine portability.

What this actually does

DFUoom does not execute inside Apple's DFU firmware. DFU mode is the entry point used by checkra1n to boot a volatile PongoOS image. PongoOS then loads DFUoom and a user-supplied WAD entirely into RAM:

iPhone DFU mode
      |
      v
checkra1n / checkm8
      |
      v
PongoOS (volatile)
      |
      +-- DFUoom Mach-O module
      +-- user-supplied WAD
      |
      v
Doom game loop -> Apple-device framebuffer

Nothing is flashed by the supplied scripts. A normal reboot removes PongoOS, DFUoom, and the uploaded WAD from memory.

Features

  • Native ARM64 Doom execution; no CPU emulation.
  • Designed and tested for the iPhone 6 (t7000, Apple A8).
  • Runtime framebuffer discovery through PongoOS.
  • Full-screen clockwise landscape output, stretched to the device dimensions.
  • Linux evdev keyboard control with real key-down/key-up events.
  • Terminal-input fallback.
  • Uploaded WAD exposed to the engine as an in-memory virtual file.
  • PongoOS command echo hidden while the game is running.
  • Reproducible, pinned PongoOS, cctools-port, and DoomGeneric revisions.

No game data is included

This repository does not contain DOOM.WAD, DOOM1.WAD, executables from the commercial game, or any other game data. Supply a legally obtained IWAD, or use a compatible free replacement such as Freedoom.

The build downloads the GPL-licensed DoomGeneric source at its pinned upstream revision. See Third-party notices.

Quick start

1. Build

git clone https://github.com/csoftware-arigpt/DFUoom.git
cd DFUoom
nix-shell
make -j"$(nproc)"
make verify

Expected artifacts:

build/Pongo.bin
build/DFUoom

2. Provide checkra1n and an IWAD

Download checkra1n only from its official source, make it executable, and keep it outside this repository.

export CHECKRA1N=/absolute/path/to/checkra1n

3. Boot PongoOS and start DFUoom

scripts/run-dfuoom.sh --boot /absolute/path/to/doom1.wad

Before checkra1n starts, the script displays this message for five seconds:

IMPORTANT: After PongoOS starts, press Ctrl+C in this terminal.

Follow checkra1n's DFU instructions. When PongoOS is visibly running on the iPhone, press Ctrl+C once in the terminal. The wrapper treats that interrupt as releasing checkra1n and continues waiting for PongoOS USB.

If PongoOS is already running:

scripts/run-dfuoom.sh /absolute/path/to/doom1.wad

Controls

Host key Action
WASD or arrows Move / turn
Space Fire
E Use
Shift Run
Alt Strafe
17 Select weapon
Esc, Enter, Tab Doom UI keys
Q Detach the host controller without stopping Doom
X Stop DFUoom

For terminal fallback:

DFUOOM_INPUT_DEVICE=terminal \
  scripts/run-dfuoom.sh /absolute/path/to/doom1.wad

Documentation

License

The original DFUoom integration code is available under the MIT License. Fetched dependencies retain their respective licenses. The resulting combined binary includes GPL-licensed DoomGeneric code and must be distributed in accordance with that license.

About

Run Doom as a native ARM64 PongoOS module on checkm8-compatible devices — educational project

Topics

Resources

Contributing

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages