Skip to the content
2 layers81.3 × 99.1 mmSparkDoom, the printed circuit board in 3D

Doom ported to EFR32xG24 and MGM240x devices, with BLE multiplayer

Size
81.3 × 99.1 mm
Copper layers
2
Thickness
1.6 mm
Parts
50
Nets
60
Pads
214
Tracks, vias
385, 202
Pours
1
Routed
Yes
KiCad
KiCad 7 (file 20221018)
Created
11 Dec 2023
Updated
1 Oct 2024

Overview

SparkDoom is an open-source printed circuit board by next-hack, from the next-hack/MG24_Doom_BLE repository on GitHub. It is a 2-layer board of 81.3 × 99.1 mm with 50 parts on 60 nets, routed with 385 tracks and 202 vias.

It is built around the TLV4112ID, 74HC165D and OS102011MA1QN1, with the SJ1-3525NG among its other parts. Its parts include 15 capacitors, 10 resistors, 9 switches, 5 ICs and 2 connectors.

Main components

4

README

README.md

MG24 Doom BLE

Doom port to Silicon Labs' EFR32xG24 and MGM240x series microcontrollers and modules, with BLE multiplayer support. Coded by Nicola Wrachien.

The code is based on doomhack's GBA Doom Port (https://github.com/doomhack/GBADoom) with some Kippykip's additions, using the sources published on 2020. Thousands of changes have been made to fit to 256 kB of RAM, restore missing features, and enable multiplayer.

Warning! After you import the project on Simplicity Studio, you must "force project generation", so that the Gecko SDK files are copied on it. This is to comply with Silabs' licensing system. See "Building, developing, etc." below.

** News:**

**26/09/2024 Update! We have added support for The Gamepad, an open source gaming console based on the Arduino Nano Matter Board. Please see https://next-hack.com/index.php/2024/09/21/the-gamepad-an-open-source-diy-handheld-gaming-console/ for more information about build information! **

12/03/2024 Update! Now peak 35 fps can be achieved also on 320 x 240 resolution thanks to partial screen refresh!

Features

  • Supports 320x200 and 320x240 resolution (the resolution can be changed at compile time)
  • All the features of the original Doom are implemented:
    • full detail rendering, with Z-depth lighting.
    • 8-channel sound at 11025 Hz (samples with higher sample-rate are downsampled to 11025 Hz), mixed to 2 stereo channels.
    • Music with OPL2 emulation.
    • Monster behavior and sound propagation implemented.
    • Screen melt effect.
  • Extremely fast. Run almost always above 30 fps at 320x240, and even more at 320x200.
  • Single player with save games and cheats support.
  • Multiplayer features:
    • Each device can act as server or client.
    • Up to 4 players per game (server + 3 clients).
    • Game/player name can be edited using the menu.
    • Server can kick players in the lobby menu.
    • Clients can choose from up to 4 hosts.
    • Deathmatch or cooperative
    • Monster on/off.
    • Item respawn on/off
    • Time and frag limits.
    • Multiplayer over BLE.
    • Frame rate shown in the bottom-left corner (can be disabled with a compiler directive).
  • Additional features (with respect to vanilla Doom)
    • Player's weapon also is subjected to ambient light (as in PrBoom).
    • Background Doom title image becomes darker when Menus are turned on, to improve readability.
    • During networking games, kills messages are shown.
  • Tested with:
  • Shareware DOOM1.WAD.
  • Full Commercial DOOM.WAD
  • Partial Doom1.WAD v1.9 built-in demo support. Must be enabled by compiler directive.

What's missing?

  • Only partial demo playback.
  • Savegames do not store the whole status (might be implemented later), but only the current level and inventory.
  • Need to be seriously debugged and cleaned up.

Known issues

  • Multiplayer might be unstable in very crowded RF environments, i.e. joining might be difficult and 4-player game sometimes might be slow (from our tests, 3 player game is always fast, going at 30 fps).
  • The display controller is driven via SPI and there is no with no vertical sync, so you can spot some artifacts due to sending new frame data, while the display is still refreshing the old frame.
  • Only GSDK 4.3.2 is supported for now, with 10.2.1 GCC toolchain.

Controls:

Strafe: alt + Left-Right Automap: use + change weapon Menu: alt + use Run use + up-down

Hardware:

In the "hardware" subdirectory you will find the project for the SparkFun Thing Plus Matter MGM240P board (SparkDoom subdir) and the WSTK adapter board .

Content of this repository:

  • MCUDoomWadUtil: source of the WAD converter (Code::Blocks project). Note that "mcudoom_0_4.wad" must be put in the same directory as the executable.
  • DoomMG24BLE: the actual Doom port (Simplicity Studio 5.5 Project). note!!!: after you import the project with Simplicity Studio 5.5 project, you must "force generate" the project, so that the gecko sdk directory is recreated. This is because Silabs' GSDK has a different licensing, which requires you do download it from Simplicity Studio and accept the MSLA license. Although you can download it from Silicon Labs' github repo, using Simplicity Studio is strongly recommended, as only only the required files will be added.
  • hardware: schematics.

Building, developing, etc:

See https://next-hack.com/index.php/2023/12/10/multiplayer-doom-on-the-sparkfun-thing-plus-matter-board/ See also: https://next-hack.com/index.php/2024/09/21/the-gamepad-an-open-source-diy-handheld-gaming-console/

License:

  • Hardware: Solderpad Hardware License version 2.1
  • MCUDoomWadUtil: GPLv2
  • DoomMG24BLE
    • Original Doom code, modifications and its additions: GPLv2 or at your option later, as per original Doom/PrBoom sources.
    • Marco Paland's printf: MIT License
    • Silicon Labs' GSDK (note! No GSDK files are provided due to its MSLA license, they must be downloaded from Simplicity Studio and restored to the project by forcing project generation): Silicon Lab's MSLA.
    • Font8x8 By Daniel Hepper: Public Domain

Parts

50
QtyValueFootprintReferences
8B3F-405XDoomWSTK:B3F-405XSW1, SW2, SW3, SW4, SW5, SW6, SW7, SW8
5100nCapacitor_THT:C_Disc_D3.8mm_W2.6mm_P2.50mmC1, C2, C3, C9, C12
518kDoomWSTK:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal_ExactSilkScreenR2, R3, R8, R9, R11
5MountingHole_PadDoomWSTK:MountingHole_2.7mm_M2.5_PadH1, H2, H3, H4, H5
310uCapacitor_THT:C_Disc_D5.1mm_W3.2mm_P5.00mmC8, C11, C14
35k6DoomWSTK:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal_ExactSilkScreenR4, R7, R10
2100uCapacitor_THT:CP_Radial_D6.3mm_P2.50mmC5, C6
2330DoomWSTK:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal_ExactSilkScreenR5, R6
247nDoomWSTK:C_Rect_L7.2mm_W2.5mm_P5.00mm_H6.5mmC4, C7
2W25Q64DoomWSTK:ADAFRUIT_QSPI8_DIPU1, U2
1100pCapacitor_THT:C_Disc_D3.8mm_W2.6mm_P2.50mmC15
11nCapacitor_THT:C_Disc_D3.8mm_W2.6mm_P2.50mmC13
11uCapacitor_THT:C_Disc_D5.1mm_W3.2mm_P5.00mmC10
174HC165Package_DIP:DIP-16_W7.62mmU5
1Adafruit4311DoomWSTK:Adafruit4311DISP1
1Conn_01x02_PinConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_HorizontalJ1
1OS102011MA1QN1DoomWSTK:OS102011MA1QN1SW9
1R_Network08Resistor_THT:R_Array_SIP9RN1
1SJ1-3525NGDoomWSTK:CUI_SJ1-3525NGJ3
1Sparkfun_Thing_Plus_Matter_MGM240PDoomWSTK:SparkfunThingsPlusMatterU4
1SpeakerDoomWSTK:OWS-1330TA-8LS1
1TLV4112Package_DIP:DIP-8_W7.62mmU3

The 49 most common of 50 parts.

More from next-hack/MG24_Doom_BLE

1
  • 2 layers77.2 × 72.1 mmWSTKDoomDaughterBoard, the printed circuit board in 3D

    WSTKDoomDaughterBoard

    next-hack/MG24_Doom_BLE

    Doom ported to EFR32xG24 and MGM240x devices, with BLE multiplayer

    59 parts14

Similar boards

  • 2 layers65 × 56 mmRPiHatHVLVPower, the printed circuit board in 3D

    RPiHatHVLVPower

    UMDCMS/SiPMCalibHW

    Hardware design files by the UMDCMS group for the SiPM calibration system

    64 partsMIT
  • 4 layers88.7 × 143.4 mmColeco original, the printed circuit board in 3D

    Coleco original

    sparkletron/mini_colecovision

    A small (3.5" x 5.6") Colecovision Portable that uses composite output and +5v power supply.

    110 parts9MIT
  • 4 layers40 × 27 mmH2cboard, the printed circuit board in 3D

    H2cboard

    c0pperdragon/HDMI2SCART

    19 parts7
  • 2 layers100.9 × 97.8 mmVersaoFinal, the printed circuit board in 3D

    VersaoFinal

    MontSantos/Projeto_Final_2

    Repositório referente ao Projeto Final 2

    37 parts4
  • 2 layers74.7 × 100.6 mmPiezoPhone, the printed circuit board in 3D

    PiezoPhone

    rdpoor/PiezoPhone

    Arduino-based Digital Marimba / Xylophone / Glockenspiel

    57 partsMIT
  • 4 layers140 × 104 mmRemram, the printed circuit board in 3D

    Remram

    hasenbanck/remram

    32bit STM32F7 based 3D printing controller using TMC2130 stepper driver

    264 parts40
  • 2 layers88.9 × 50.8 mmBLDC BIZ CARD, the printed circuit board in 3D

    BLDC BIZ CARD

    ageppert/Brushless-Motor-Biz-Card

    A brushless motor and driver built in to a business card form-factor for learning and experimenting!

    82 parts38MIT
  • 2 layers75.9 × 50.1 mmSuspension telemetry, the printed circuit board in 3D

    Suspension telemetry

    porast1/suspension-telemetry

    Suspension telemetry system for mountain bike or dirt bike

    77 parts14MIT

Questions

How big is the SparkDoom PCB?

It measures 81.3 × 99.1 mm and has 2 copper layers, 1.6 mm thick.

What parts does the SparkDoom use?

50 parts, built around the TLV4112ID, 74HC165D, OS102011MA1QN1 and SJ1-3525NG. 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 SparkDoom KiCad files?

From the next-hack/MG24_Doom_BLE repository on GitHub, at the commit this page was made from: the board is Hardware/SparkDoom/SparkDoom.kicad_pcb and its schematic Hardware/SparkDoom/SparkDoom.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the SparkDoom design in my own project?

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