This article is more than 1 year old
Absolute mad lad renders Doom in teletext
Sure is '90s in here
It is time once again to reset the "days since someone ran Doom on something quirky" calendar.
Last we heard from the seminal first-person shooter source code, it had appeared as a farmer-themed mod running on jailbroken tractor hardware from John Deere as part of a demonstration on security (or lack thereof). "Turns out our entire food system is built on outdated, unpatched Linux and Windows CE hardware with LTE modems," it was noted at the time.
This latest project, however, brings together two titans of the early 1990s. How about Doom on teletext? OK, teletext cannot run Doom. But it can render it. Kinda. Is it playable? We'll let you be the judge.
As the mod's developer, lukneu on GitHub, states: "Since teletext is based on unidirectional data transmission, it is not possible to actually run DOOM in teletext. However, running the original game on some device that also generates a teletext page which holds the scene is just as fine. The packages sent by doom-teletext hold the teletext rendering of the current game frame, as well as a status bar that informs about the current state of the player. In detail, the status bar shows information like owned weapons, ammunition, health status, and a graphical representation of the protagonist's face. Also the whole game menu was rebuilt for rendering in teletext."
Rendering works thus:
Characters in graphics mode can display sixels, which means that each cell is divided into 2*3 regions, let's call them pixels, that can be empty or filled.
Therefore, we have 39 * 2 = 78 pixels in width for displaying graphics in contiguous mode, and 38 * 2 = 76 pixels in width for separated graphics mode.
DOOM's original resolution is 320*200 pixels, therefore it is not possible to show all of them on a teletext page, but 4*4 pixels of DOOM have to be combined into a single teletext-pixel. To determine if the pixel in teletext is black or white, the brightness of the 16 DOOM pixels is considered.
Summarized, we can use 78 * 4 = 312 pixels width of DOOM in contiguous graphics mode and 76 * 4 = 304 pixels width of DOOM in separated graphics mode to consider for the rendering in teletext. The missing 8, respectively 16, pixels of width are cropped from the original rendering area on the left and right sides.
While the original rendering is cropped on the left and right sides, we can show the whole height in 17 lines as 200 / 4 = 50 and 50 / 3 = 16,67.
In total, the resolution of the gameplay rendering in teletext is 78 * 50 in contiguous graphics mode and 76 * 50 in separated graphics mode.
- Doom QA testers form Microsoft's first labor union in the US
- Oh Deere: Farm hardware jailbroken to run Doom
- From cash machines to commercial kitchen appliances, Doom really will run on almost anything
- Doom Eternal: Reboot sequel is cluttered but we're only here for the rippin' and the tearin'
Those who have seen too many winters will be well aware of teletext – a standard developed in the UK in the '70s for displaying text and basic graphics, usually news and sports results. The BBC launched its take as Ceefax in 1974 followed by other major broadcasters across Europe. The service persisted into the 2000s until it was driven to extinction in the UK by the widespread adoption of digital television.
Affection for teletext lingers, however, as we saw with Nathan Dane's full-blown replica of Ceefax, which takes information from BBC websites and displays them as though we had accidentally pressed the text button on our analog TV's remote.
doom-teletext was "developed, built and executed" on a Linux machine, though the author notes: "As the window is created with the cross-platform library Simple DirectMedia Layer, there should not be that many obstacles when porting to another system."
Only the original 1993 Doom and its shareware WAD are supported. "For other WAD files, especially those that have modified the look of the status bar or renamed levels or difficulty settings, adaptions in the code need do be done. (If you are interested in this, pull requests are welcome!)"
There are even instructions for playing the game with a TV remote, if you are so inclined, and actually still have one of those fathoms-deep ye olde televisions gathering dust in the garage.
If you actually want to try it or contribute, this is possibly necessary. "Bear in mind that many modern TVs seem to struggle when updating teletext pages. My LG TV built in 2015 cannot run more than 3(!) FPS smoothly ... while my FUNAI tube television handles more than 30 FPS like a champ." ®