Launching DOOM on a light bulb

image

DOOM has already played the piano and keyboard, on the pregnancy test (by the way, it was fake) and on a soldering iron, on an airplane, ATM, printer and oscilloscope.

It’s time for light bulbs.

imageInside the TRÅDFRI RGB GU10 (IKEA model: LED1923R5) light bulb, hackers from Next-Hack found Silicon lab’s MGM210L RF module with 108kb of RAM and ran DOOM on it. The hacker researchers had to sweat over optimizing the use of RAMbecause the original DOOM requires 4MB, but they were able to.

The module only has 1MB of internal flash, so the craftsmen have added an external SPI flash to store the WAD file that can be loaded with YMODEM. The processor has a 40-MHz Cortex M4 bulb.

image

Disassembled light bulb

image

Display: 1.8 “TFT 160 × 128 SPI

image

Iron block diagram

image

Currents diagram

image

Power Supply

image

Board prototype

image

Carrier board

image

Keyboard

image

Microcontroller mounted on a carrier board.

image

Complete system.

image

Features of the project:

  • Based on the beautiful Doomhack’s gba doom port with some Kippykip additions.
  • Supports full version of Doom Shareware WADS.
  • Complete Vanilla Render engine including Z-depth lighting. However, composite textures have a mipmap.
  • Implemented monster behavior and sound propagation.
  • Sound FX support.

Project limitations:

  • Music.
  • Demo playback due to incompatibility.
  • Full WAD DOOM Not tested.
  • Debugging required.
  • Multiplayer is not implemented.
  • Optimizing performance.
  • Cheats were not checked, probably with bugs.

Engineers recently made update in github repository and removed mip mapping on composite textures without sacrificing performance, so the graphics will be more detailed than what is shown in the demo video.

DOOM-challenge conditions:

  • Find a finished device that isn’t designed to play Doom or other games.
  • The device selected must have a microcontroller with reasonably limited processing power and / or memory to meet the minimum DOOM requirements (DOOM operates at an acceptable frame rate even at 486 @ 33MHz [1]equipped with 4MB RAM). As an example, we should exclude modern digital cameras, which have a system of several hundred MHz on a chip, with several tens of megabytes of RAM.
  • We must use exactly the microcontroller that is built into the selected device. Replacement is not possible. No additional microcontroller can be added. However, overclocking (for example, even if limited to only some peripherals or buses) is possible, provided we don’t need any cooling methods.
  • Additional flash memory or memory card can be added to store WAD files.
  • You can add a color display if the selected standard device does not have one. The resolution must be high enough to play Doom decently. For example, a 32×16 pixel screen is too small, but 128×64 may be sufficient. On the other hand, resolutions that are too high will certainly require a very powerful microcontroller, contrary to rule 2.
  • The input device can be anything, so additional electronics can be added for this purpose.
  • The power supply can be replaced if necessary.
  • We wanted the engine to be as close as possible to the original (vanilla) Doom shareware. Being able to play Episode 1 on map 1 of the shareware Doom (E1M1) is a minimum goal, even if we don’t hide the fact that we dreamed of being able to play the full shareware version with no restrictions on all maps.
  • There are no requirements for sound, but sound effects would really be a plus. If implemented, then there are no restrictions on the audio subsystem.
  • Multiplayer optional

Pregnancy test

Canon Proxima Printer

Oscilloscope

ATM

DOOM to DOOM

Piano

Minecraft

Ticket validator

iPod Mini

Calculator

Apple Watch

MacBook Pro Touch Bar

Kodak DC260 Digital Camera from 1998

On keyboard

On the billboard

On e-book

By plane

Porsche 911

Vectrex

Soldering iron

PS

How do you like that, AlexeyNadezhin?

zhovner, we are waiting for DOOM on FlipperZero.

image

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *