https://arstechnica.com/gaming/2025/01/this-pdf-contains-a-playable-copy-of-doom/
Here at Ars, we're suckers for stories about hackers getting Doom running on everything from CAPTCHA robot checks and Windows' notepad.exe to AI hallucinations and fluorescing gut bacteria. Despite all that experience, we were still thrown for a loop by a recent demonstration of Doom running in the usually static confines of a PDF file.
On the Github page for the quixotic project, coder ading2210 discusses how Adobe Acrobat included some robust support for JavaScript in the PDF file format.
[...] the Doom PDF can take inputs via the user typing in a designated text field and generate "video" output in the form of converted ASCII text fed into 200 individual text fields, each representing a horizontal line of the Doom display. The text in those fields is enough to simulate a six-color monochrome display at a "pretty poor but playable" 13 frames per second (about 80 ms per frame).
[...] have to dock at least a few coolness points because the port doesn't actually work on generic desktop versions of Adobe Acrobat—you need to load it through a Chromium-based web browser. But the project gains those coolness points back with a web front-end that lets users load generic WAD files into a playable PDF.
Related stories on SoylentNews:
Hitting the Books: The Programming Trick That Gave Us DOOM Multiplayer - 20230912
Can Doom Run It? An Adding Machine in Doom - 20221224
Def Con Hacker Shows John Deere's Tractors Can Run Doom - 20220817
Even DOOM Can Now Run DOOM! - 20220715
You Can Play 'Doom' Inside 'Minecraft' Using a Virtual PC - 20200726
Explore This 3D World Rendered In ASCII Art - 20200102
'Doomba' Turns Your Roomba's Cleaning Maps Into Doom Levels - 20181227
Modder Gets Half-Life Running on an Android Smartwatch - 20150724
Run Doom on your Printer - 20140917
« Walgreens Replaced Fridge Doors With Smart Screens. It's Now a $200 Million Fiasco | All-Optical Computer Unveiled With 100 GHz Clock Speed »
Related Stories
Printers have been used as an attack vector in the past. This is a new take.
Apparently, the Canon Pixma printers that sport a web interface for their users convenience are so convenient that they forget to ask for a username and password to access it. Besides more benign settings, status reports and diagnostic functions, it is possible to perform a firmware update through this interface as well as change the DNS and proxy settings.
"So what" you ask?
Well... Someone on your network can access the web-interface and change the firmware (or print test-pages en masse), but even if you don't have guests and your Pixma is thought to be not exposed to the outside world via your router, it is possible to launch a cross-site request forgery attack (CSRF) through your browser, change the DNS and/or proxy settings and initiate a firmware update to make the router download a malicious payload.
Michael Jordon demonstrates one such not-so-malicious firmware and goes into further detail in his blog. There's also a video for the TL;DR fans that just want to see his payload.
http://arstechnica.com/gaming/2015/07/modder-gets-half-life-running-on-an-android-smartwatch-2/
While traditional Internet wisdom tells us that no gadget is worth its salt unless it can run Doom—see the likes of the TI-85 calculator, the Commodore 64, and an ancient Kodak digital camera—time and technology moves on. These days, Doom is barely a challenge. With that in mind, an enterprising modder has instead got Valve's seminal first-person-shooter classic Half-Life, which features far more demanding 3D graphics, on an Android-powered LG G Watch.
Yes, instead of playing Half-Life with a comfy keyboard and mouse, you can now fumble around with tiny touch-screen buttons, and squint at a 1.65-inch screen on your wrist. Hooray!
OK, so playing Half-Life on a smartwatch is more proof of concept than something you'd actually want to do, but it just goes to show how quickly wearable tech is evolving. To get the game running on the LG G Watch, modder Dave Bennett used the SDLash app, which is able to emulate the GoldSource game engine used in Half-Life.
"At times, the game got as high as [60] FPS, and other times as low as 2 FPS," writes Bennett over on his blog. "Of course, things such as the lava graphics and special lighting caused a huge drop in FPS. Also, trying to play a game on Android Wear is a nightmare within itself. The app offers touchscreen controls, but on a 1.65-inch screen, they are almost impossible to use. Also, swiping to the left causes the screen to go back to the previous window. Are you still interested in doing this?"
Pffft, Doom on a SmartWatch is nothing. I have Zork running on my hearing aid.
Submitted via IRC for takyon
'Doomba' turns your Roomba's cleaning maps into Doom levels
It's practically a rule in tech: If it has electricity, eventually it will run Doom. Now a Roomba might have been a bit tricky to work into that equation, given the lack of things like a screen, but game developer Rich Whitehouse has found a way with a new tool he calls "Doomba" that can take floor map data from the smart cleaning robots and convert it into Doom levels, according to Polygon.
The idea first started when Whitehouse and his wife were researching robot vacuums. Honestly, nothing will beat Whitehouse's own explanation for the tool's original, so I'll let him take it from here:
I soon realized that there was a clear opportunity to serve the Dark Lord by conceiving a plethora of unholy algorithms in service to one of the finest works ever created in his name. Simultaneously, I would be able to unleash a truly terrible pun to plague humankind. Now, the fruit of my labor is born. I bring forth DOOMBA, a half-goat, half-script creature, with native binary backing for the expensive parts, to be offered in place of my firstborn on this fine Christmas Eve.
[...] Is this useful? Not exactly, but it's at least fun. For his part, Whitehall doesn't seem too concerned. "Some will say that it's pointless, but I have faith in my heart that the Dark Lord will wipe these people from the face of the earth and trap them in a dimension of eternal hellfire. Their suffering will be legendary."
Explore This 3D World Rendered In ASCII Art:
Pixelated RPGs are pretty standard in games like Legend of Zelda and Pokemon, but have you ever seen anything like ASCIICKER? It’s a full-color three-dimensional world rendered with ASCII art and playable in your browser. [Ed's Comment: It works with Brave and Firefox, but not with Pale Moon in our very limited testing.]
For the time being, the game exists as an experiment. There’s no storyline or goals other than exploring the world, although you can meet up with (or follow) others exploring the game — although all of the sprites look the same, so it may be difficult to have interactions. The game was created by [Gumix] and built entirely in JavaScript without using any other game engines.
You Can Now Boot a Windows 95 PC Inside Minecraft and Play Doom on it:
A new VM Computers mod has been created for Minecraft that allows players to order computer parts from a satellite orbiting around a Minecraft world and build a computer that actually boots Windows 95 and a variety of other operating systems.
[...] Within Minecraft you simply place a PC case block and then use it to create virtual hard drives to install operating systems from ISO files.
Naturally, the Minecraft community has been experimenting with the VM Computers mod, and someone has managed to get Doom running within Minecraft as a result.
For years now, the standard test of any newly hacked piece of hardware has been this: can it run DOOM? id Software's 1993 classic first-person shooter has appeared on everything, but here's one from [kgsws] that's a bit special. It's DOOM, running inside DOOM itself.
So how has this feat been achieved? There's a code execution exploit inside the original DOS DOOM II executable, and that has been used to run the more modern Chocolate Doom within the original. [...]
The video below the break shows the game-in-game in action, but the real value lies in its in-depth description of the exploit, that takes us through some of the inner workings of the game and ably explains what's going on. It finishes up with a specially made cinema WAD in which to play DOOM-in-DOOM, and even Hexen-in-DOOM. [...]
Def Con hacker shows John Deere's tractors can run Doom:
A security researcher at the Def Con hacking conference got a modified version of Doom running on a John Deere tractor.
The internet has shown us that Doom can run on everything from a cardboard box to a Roomba and even a single keyboard key, but now we can add a John Deere tractor to that list. Security researcher Sick Codes worked with Doom modder Skelegant to get the game running on a John Deere tractor display and showed off some gameplay at the Def Con hacking conference in Las Vegas.
In the video posted by Sick Codes, you can see how the game plays as a sort of transparent overlay on top of the John Deere user interface (UI). Sick Codes says the whole process took months and involved jailbreaking the Linux system used by the John Deere 4240 tractor. This version of Doom has, naturally, been modified to take place in a corn field, where the player mows down enemies on a tractor.
But Sick Codes isn't just jailbreaking tractors to get them to run Doom. According to a report from Wired, he also devised and presented a new jailbreak that gave him root access to the tractor's system. This exploit could potentially help farmers bypass software blocks that prevent them from repairing the tractor themselves, something John Deere has come under fire for in the past.
As noted by Wired, Sick Codes was able to obtain "1.5 GB worth of logs" that dealers could use to identify and diagnose problems. But he also found a way to gain root access by soldering controllers directly to the tractor's circuit board. Unfortunately, gaining root access isn't all that simple without the right equipment, but Sick Codes told Wired "it would be possible to develop a tool based on the vulnerabilities to more easily execute the jailbreak."
https://blog.otterstack.com/posts/202212-doom-calculator/
For decades, we've asked ourselves "Can it run Doom?". Now we can finally make the ultimate punchline: "Can Doom run it?"
I demonstrate that it is possible to run any bounded computation in Doom, minus constraints on level size. I have not proven that Doom is Turing complete (see the section later in this article).
This works with the vanilla MS-DOS release of Doom 2 (v1.9). No mods or anything!
I love projects like these. I was inspired by the esoteric machines in other games such as Minecraft and RollerCoaster Tycoon.
If you're curious about how this works, I released the source code to build the map here:
https://www.engadget.com/hitting-the-books-doom-guy-john-romero-abrams-press-143005383.html
Since its release in 1993, id Software's DOOM franchise has become one of modern gaming's most easily recognizable IPs. The series has sold more than 10 million copies to date and spawned myriad RPG spinoffs, film adaptations and even a couple tabletop board games. But the first game's debut turned out to be a close thing, id Software cofounder John Romero describes in an excerpt from his new book DOOM GUY: Life in First Person. With a mere month before DOOM was scheduled for release in December 1993, the iD team found itself still polishing and tweaking lead programmer John Carmack's novel peer-to-peer multiplayer architecture, ironing out level designs — at a time when the studio's programmers were also its QA team — and introducing everybody's favorite killer synonym to the gamer lexicon.
(Score: 3, Touché) by Anonymous Coward on Saturday January 18, @02:24AM (9 children)
You say that like it is a good thing.
and nothing was learned from Microshaft allowing executables to be buried inside emails
(Score: 0, Disagree) by Anonymous Coward on Saturday January 18, @02:38AM (2 children)
Javascript is the scourge of computing.
(Score: 0) by Anonymous Coward on Saturday January 18, @01:53PM (1 child)
Add to that Java, C#, Python, Ruby, and any other toy language that allows shit programmers to pump out shit code.
(Score: 2) by Freeman on Tuesday January 21, @03:27PM
So, pretty much all of them?
Joshua 1:9 "Be strong and of a good courage; be not afraid, neither be thou dismayed: for the Lord thy God is with thee"
(Score: 3, Insightful) by aafcac on Saturday January 18, @04:20AM (5 children)
Yep, PDFs and other document formats should never have been allowed to have embedded scripts. To an extent, I kind of get it with excel where the whole point of the thing is to be able to embed programming logic into various cells to do the calculations that you're looking for, but things like PDFs and text documents have no reason to have any sort of programming built in.
(Score: 3, Interesting) by canopic jug on Saturday January 18, @10:16AM (4 children)
Yep, PDFs and other document formats [...]
Except that PDF is not an actual format, it is a programming language ostensibly for printers. It has been misused as a format but it is not one.
Money is not free speech. Elections should not be auctions.
(Score: 1) by shrewdsheep on Saturday January 18, @11:37AM (3 children)
I think you confuse this with postscript. PDF is not a programming language but a graphics description language without turing completeness. Postcript is capable of running DOOM or javascript right away.
(Score: 1, Informative) by Anonymous Coward on Saturday January 18, @01:56PM
PDF is BOTH. It's actual based on PostScript. You use to have to configure your printer driver whether your printer "spoke" ps or pdf.
(Score: 4, Interesting) by bzipitidoo on Saturday January 18, @02:43PM (1 child)
One thing I have learned is that it's problematic to make a single language (or format or specification or whatever you want to call it) for multiple widely divergent purposes. Sure, it can be done, but tradeoffs are unavoidable. For instance, try to make a language for both display and storage of data. Use HTML to hold a dump of a database that can be conveniently viewed in a browser. HTML is very space inefficient, and that's a bad feature when you may be dealing with enormous quantities of data. Will end up repeating tags over and over simply because HTML is hierarchical while a relational database is tabular. Using the HTML table tag won't help avoid that redundancy. You'll be running short of storage space, and if you attempt to view that data in a browser, you'll be pushing the browsers past their limits and crashing them which is fine if you want to help find bugs in them but otherwise is more trouble. It also gums up data compression compared to a plain old CSV flat file. This principle is a big reason why PDFs are roundly criticized for taking lots of space. If you thought HTML was bad, just think of the fun you'll have trying to dump a database into PDF!
Better to design separate formats for these divergent purposes, and programs to convert between them in whatever manner best suits the situation. Like, might want to confine conversions to small windows on an as needed basis.
These clever hacks that jam together completely different things are cool and fun, but they generally are not practical. As to the demonstration that some system is Turing Complete, well, yes, many people remain unaware of how astonishingly little it takes to achieve Turing Completeness. Run Doom in a font! Run Doom in a font in a PDF! Run Doom on a calculator! Run Doom on a music player! (IIRC, Rockbox contains a port of Doom) Run Doom in Conway's Game of Life! Run Doom on an Intel 4004! Run Linux on an Intel 4004! Run code on Babbage's Difference Engine!
(Score: 2) by canopic jug on Saturday January 18, @08:02PM
HTML is very space inefficient, and that's a bad feature when you may be dealing with enormous quantities of data. Will end up repeating tags over and over simply because HTML is hierarchical while a relational database is tabular. Using the HTML table tag won't help avoid that redundancy.
It's a matter of using the right tool for the job. HTML is not so much hierarchical as it is an object oriented data structure. That is its SGML / XML legacy. If you have something hierarchical, such as JSON, then you could use a key value database. It ranges from hard to very hard to even try to force either into a table.
Printing it only (or should be only) about rendering. So the descriptive language for a page printer ought to (from my ignorant perspective) be about that and only that: a bunch of vectors.
Money is not free speech. Elections should not be auctions.
(Score: 3, Informative) by The Vocal Minority on Saturday January 18, @04:02AM
This PDF only works in Chromium-based browse