Skip to the content
2 layers77.2 × 72.1 mmWSTKDoomDaughterBoard, the printed circuit board in 3D

WSTKDoomDaughterBoard

next-hack/MG24_Doom_BLE14

Doom ported to EFR32xG24 and MGM240x devices, with BLE multiplayer

Size
77.2 × 72.1 mm
Copper layers
2
Thickness
1.6 mm
Parts
59
Nets
82
Pads
239
Tracks, vias
391, 397
Pours
2
Routed
Yes
KiCad
KiCad 7 (file 20221018)
Created
11 Dec 2023
Updated
1 Oct 2024

Overview

WSTKDoomDaughterBoard 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 77.2 × 72.1 mm with 59 parts on 82 nets, routed with 391 tracks and 397 vias.

It is built around the W25Q128JVSIQ and SJ1-3525NG. Its parts include 25 resistors, 19 capacitors, 8 switches, 3 ICs and 3 connectors.

Main components

2

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

59
QtyValueFootprintReferences
1310kResistor_SMD:R_0603_1608MetricR1, R2, R3, R4, R8, R9, R11, R18, R19, R20, R21, R22, R23
12100nCapacitor_SMD:C_0603_1608MetricC1, C2, C9, C10, C12, C13, C15, C16, C17, C18, C19, C20
10330Resistor_SMD:R_0603_1608MetricR5, R6, R7, R10, R12, R13, R14, R15, R16, R17
8SW_PushButton_Switch_THT:SW_PUSH_6mmSW1, SW2, SW3, SW4, SW5, SW6, SW7, SW8
310uCapacitor_SMD:C_0603_1608MetricC3, C4, C14
2100uCapacitor_THT:CP_Radial_D6.3mm_P2.50mmC5, C6
247nCapacitor_SMD:C_0603_1608MetricC7, C8
2Conn_02x16_Odd_EvenConnector_PinHeader_2.54mm:PinHeader_2x16_P2.54mm_VerticalJ1, J2
2W25Q128JVSPackage_SO:SOIC-8_5.275x5.275mm_P1.27mmU1, U2
10Resistor_SMD:R_0603_1608MetricR24
10 - NMResistor_SMD:R_0603_1608MetricR25
174HCS165Package_SO:SOIC-16_3.9x9.9mm_P1.27mmU3
1Adafruit4311DoomWSTK:Adafruit4311DISP1
1SJ1-3525NGDoomWSTK:CUI_SJ1-3525NGJ3

More from next-hack/MG24_Doom_BLE

1
  • 2 layers81.3 × 99.1 mmSparkDoom, the printed circuit board in 3D

    SparkDoom

    next-hack/MG24_Doom_BLE

    Doom ported to EFR32xG24 and MGM240x devices, with BLE multiplayer

    50 parts14

Similar boards

  • 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
  • 2 layers101.8 × 57.8 mmSc64v2, the printed circuit board in 3D

    Sc64v2

    Polprzewodnikowy/SummerCart64

    SummerCart64 - a fully open source N64 flashcart

    96 parts1.2kGPL-3.0
  • 2 layers42 × 67 mmLalboard, the printed circuit board in 3D

    Lalboard

    JesusFreke/lalboard

    A 3D-printed keyboard inspired by the DataHand

    65 parts993
  • 2 layers181 × 97 mmOpenDeck r3.1.2, the printed circuit board in 3D

    OpenDeck r3.1.2

    shanteacontrols/OpenDeck

    A platform for building interactive control and sensing devices using MIDI and OSC built with Zephyr RTOS.

    262 parts960Apache-2.0
  • 4 layers82.6 × 82.5 mmJumperless2, the printed circuit board in 3D

    Jumperless2

    Architeuthis-Flux/Jumperless

    A jumperless breadboard

    208 parts914

Questions

How big is the WSTKDoomDaughterBoard PCB?

It measures 77.2 × 72.1 mm and has 2 copper layers, 1.6 mm thick.

What parts does the WSTKDoomDaughterBoard use?

59 parts, built around the W25Q128JVSIQ 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 WSTKDoomDaughterBoard KiCad files?

From the next-hack/MG24_Doom_BLE repository on GitHub, at the commit this page was made from: the board is Hardware/WSTKDoomDaughterBoard - Rev1.3/WSTKDoomDaughterBoard.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 WSTKDoomDaughterBoard design in my own project?

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