A WebAssembly-powered port of Crispy Doom packaged as a Samsung Tizen TV application.
This project uses Crispy Doom compiled to WebAssembly via Emscripten and wraps it into a Tizen widget (.wgt) that runs directly on Samsung Smart TVs.
- Runs entirely on the TV (no streaming required)
- Based on Crispy Doom (faithful to the original)
- Includes Doom Shareware (doom1.wad) by default
- Supports Samsung TV remote control mapping
- Optimized for Samsung Tizen TV devices
- Simple installation using the Samsung Jellyfin Installer
- From the Apps screen, press
1 2 3 4 5on the remote - Toggle Developer Mode = ON
- Enter your PC's LAN IP in Host PC IP
- Reboot the TV
The easiest way to install the generated .wgt file on your Samsung TV is by using Apps2Samsung:
Download the latest version from Apps2Samsung choose Tizen Community as release and choose doom.
Launch Doom from the TV's app menu
Each release contains two files:
Doom.wgt- for newer Samsung TVs.Doom-tizen55.wgt- for 2020 TVs (Tizen 5.5, Chromium 69). Built with--build-arg TIZEN55_COMPAT=1, which lowers the JS for older engines.
- Docker
- Git
Run the build script to compile and extract the .wgt file:
Windows:
build.batLinux/Mac:
./build.shThis will:
- Build the Docker image with Crispy Doom compiled to WebAssembly
- Package it as a Tizen widget
- Extract
Doom.wgtto the current directory
If you prefer to build manually:
# Fetch the Crispy Doom source before building
git submodule update --init --recursive
# Build the Docker image
docker build -t doom-tizen .
# Create and start a temporary container
docker create --name doom-tmp doom-tizen
docker start doom-tmp
# Extract the .wgt file
docker cp doom-tmp:/home/doom/Doom.wgt .
# Clean up
docker stop doom-tmp
docker rm doom-tmpBy default, this build includes the Doom Shareware (doom1.wad).
To play the full version:
- Replace
wasm/doom1.wadwith your registered copy of Doom - Run the build script again:
build.bat # or ./build.sh - Install the new
Doom.wgtfile on your TV
Note: You must own a legitimate copy of Doom to use the full game data.
Doom renders internally at a low resolution (960×540 by default) and is upscaled to full screen by the TV browser. This keeps the software renderer fast on Tizen TV hardware.
If the game still feels slow on your TV, lower the internal resolution in
wasm/index.html (constants GAME_WIDTH / GAME_HEIGHT, e.g. 640 × 400).
Higher values (e.g. 1280 × 720) look sharper but cost more performance.
| Button | Action |
|---|---|
| Arrow Keys | Move forward/back, turn left/right |
| OK | Confirm in menus |
| RETURN | Open ESC menu |
| CHANNEL UP | Fire weapon |
| CHANNEL DOWN | Confirm quit (Y) |
| Red | Weapon 1 |
| Green | Weapon 2 |
| Yellow | Weapon 3 |
| Blue | Weapon 4 |
| Play | Show map |
| Rewind | Strafe left |
| Fast Forward | Strafe right |
| Button | Action |
|---|---|
| D-Pad / Left Stick | Move forward/back, turn left/right |
| A | Use / confirm in menus |
| B | Fire weapon |
| X | Show map |
| Y | Open ESC menu |
| Back | Open ESC menu |
| Start | Confirm in menus |
| LB | Strafe left |
| RB | Strafe right |
doom-tizen/
├── crispy-doom/ # Crispy Doom as Git submodule
├── wasm/ # WebAssembly build output
│ ├── doom1.wad # Doom Shareware WAD
│ ├── default.cfg # Doom configuration
│ ├── index.html # Game launcher
│ └── input.js # Remote control handler
├── Dockerfile # Build configuration
└── build.bat/sh # Build scripts
- Performance Optimization
- Building the WGT File
- TV Remote Control Regression – Debugging Report
- Debugging directly on the TV (Apps2Samsung CLI)
- Doom © id Software
- Crispy Doom - https://github.com/fabiangreffrath/crispy-doom
- Emscripten Support - This project is made possible by the excellent work of jbaicoianu (James Baicoianu) who added Emscripten build target support to Chocolate Doom, which Crispy Doom is based on: PR #1717 - Emscripten build target support
- Tizen Installer - https://github.com/Jellyfin2Samsung/Samsung-Jellyfin-Installer
- Emscripten - https://emscripten.org/
This project respects the licenses of all included software:
- Crispy Doom is licensed under GPL v2
- Doom Shareware is freely redistributable
- Original Doom game data requires a legitimate copy