You Can Now Play DOOM In Microsoft Word, But You Probably Shouldn’t

DOOM used to primarily run on x86 PCs. It later got ported to a bunch of consoles with middling success, and then everything under the sun, from random embedded systems to PDFs. Now, thanks to [Wojciech Graj], you can even play it in Microsoft Word.

To run DOOM inside Microsoft Word, you must enable VBA macros, and ignore security warnings, to boot. You’ll need a modern version of Word, and it will only work on Windows on an x64 CPU. As you might imagine, too, the *.DOCM file is not exactly lightweight. It comes in at 6.6 MB, no surprise given it contains an entire FPS. It carries inside it a library called doomgeneric_docm.dll and the whole doom1.wad data file. Once the file is opened, a macro then extracts all the game data and executes it.

If you think that Microsoft Word doesn’t really have a way of displaying live game graphics, you’d be correct. Instead, that DLL is creating a bitmap image of the game state for every frame, which is then displayed inside Word itself. It uses the GetAsyncKeyState function to grab inputs from the arrow keys, number keys, and CTRL and space so the player can move around. It certainly sounds convoluted, but it actually runs pretty smoothly given all the fuss.

While this obviously works, you shouldn’t get in the habit of executing random code in your word processor. It’s just not proper, you see, like elbows on the dinner table! And, you know. It’s insecure. So don’t do that.

Continue reading “You Can Now Play DOOM In Microsoft Word, But You Probably Shouldn’t”

Pixel mashup with Wasm-4 logo and retro graphics

WASM-4: Retro Game Dev Right In Your Browser

Have you ever dreamt of developing games that run on practically anything, from a modern browser to a microcontroller? Enter WASM-4, a minimalist fantasy console where constraints spark creativity. Unlike intimidating behemoths like Unity, WASM-4’s stripped-back specs challenge you to craft games within its 160×160 pixel display, four color palette, and 64 KB memory. Yes, you’ll curse at times, but as every tinkerer knows, limitations are the ultimate muse.

Born from the WebAssembly ecosystem, this console accepts “cartridges” in .wasm format. Any language that compiles to WebAssembly—be it Rust, Go, or AssemblyScript—can build games for it. The console’s emphasis on portability, with plans for microcontroller support, positions it as a playground for minimalist game developers. Multiplayer support? Check. Retro vibes? Double-check.

Entries from a 2022’s WASM-4 Game Jam showcase this quirky console’s charm. From pixel-perfect platformers to byte-sized RPGs, the creativity is staggering. One standout, “WasmAsteroids,” demonstrated real-time online multiplayer within these confines—proof that you don’t need sprawling engines to achieve cutting-edge design. This isn’t just about coding—it’s about coding smart. WASM-4 forces you to think like a retro engineer while indulging in modern convenience.

WASM-4 is a playground for anyone craving pure, unadulterated experimentation. Whether you’re a seasoned programmer or curious hobbyist, this console has the tools to spark something great.

White pieces on a teal and white chess board. The line of pawns shows three segmented queens in the foreground, one piece being pressed by a man's hand from above in a state between queen and pawn, and the remainder of the pawns in the background in the pawn state.

Transforming Pawn Changes The Game

3D printing has allowed the hobbyist to turn out all sorts of interesting chess sets with either intricate details or things that are too specialized to warrant a full scale injection molded production run. Now, the magic of 3D printing has allowed [Works By Design] to change the game by making pawns that can automatically transform themselves into queens.

Inspired by a CGI transforming chess piece designed by [Polyfjord], [Works By Design] wanted to make a pawn that could transform itself exist in the real world. What started as a chonky setup with multiple springs and a manually-actuated mechanism eventually was whittled down to a single spring, some pins, and four magnets as vitamins for the 3D printed piece.

We always love getting a peek into the trial-and-error process of a project, especially for something with such a slick-looking final product. Paired with a special chess board with steel in the ends, the magnets in the base activate the transformation sequence when they reach the opposite end.

After you print your own, how about playing chess against the printer? We’d love to see a version machined from metal too.

Thanks to [DjBiohazard] on Discord for the tip!

Continue reading “Transforming Pawn Changes The Game”

Hackaday Links Column Banner

Hackaday Links: October 27, 2024

Problem solved? If the problem is supplying enough lithium to build batteries for all the electric vehicles that will be needed by 2030, then a new lithium deposit in Arkansas might be a resounding “Yes!” The discovery involves the Smackover Formation — and we’ll be honest here that half the reason we chose to feature this story was to be able to write “Smackover Formation” — which is a limestone aquifer covering a vast arc from the Rio Grande River in Texas through to the western tip of the Florida panhandle. Parts of the aquifer, including the bit that bulges up into southern Arkansas, bear a brine rich in lithium salts, far more so than any of the brines currently commercially exploited for lithium metal production elsewhere in the world. Given the measured concentration and estimated volume of brine in the formation, there could be between 5 million and 19 million tons of lithium in the formation; even at the lower end of the range, that’s enough to build nine times the number of EV batteries needed.

Continue reading “Hackaday Links: October 27, 2024”

Lunar Lander Game Asks You To Write A Simple Autopilot

Everyone likes a good lunar landing simulator, and [Dominic Doty] wrote a fun take on the idea: your goal is to write an autopilot controller to manage the landing. Try it out!

Virtual landers are far cheaper than real ones, thank goodness.

[Dominic] was inspired in part by this simple rocket landing game which is very much an exercise in reflex and intuition, not to mention being much faster-paced than the classic 1979 video game (which you can also play in your browser here.)

[Dominic]’s version has a similar classic look to the original, but embraces a more thoughtful approach. In it, one uses plain JavaScript to try to minimize the lander’s angle, velocity, and angular velocity in order to land safely on the generated terrain.

Want to see if you have the right stuff? Here’s a direct link to Lunar Pilot. Don’t get discouraged if you don’t succeed right away, though. Moon landings have had plenty of failures, and are actually very hard.

Turning Horrible Browser Controls Into A Game

With all of the various keyboards, mouses (mice?), and other human interface devices (HID) available for our computers, there’s no possible way for developers to anticipate every type of input for every piece of software they build. Most of the time everything will work fine as long as some basic standards are kept, both from the hardware and software sides, but that’s not always the case. [Losso] noticed a truly terrible volume control method when visiting certain websites while also using a USB volume knob, and used this quirk to build a Breakout game with it.

It turns out his volume control knob would interact simultaneously with certain video players’ built-in volume control and the system volume for the operating system, leading to a number of undesirable conditions. However, the fact that this control is built in to certain browsers in the first place led to this being the foundation for the Breakout clone [Losso] is calling KNOB-OUT. Unlike volume buttons on something like a multimedia keyboard, the USB volume control knob can be configured much more easily to account for acceleration, making it more faithful to the original arcade version of the game. The game itself is coded in JavaScript with the source code available right in the browser.

If you’d like to play [Losso]’s game here’s a direct link to it although sometimes small web-based projects like these tend to experience some slowdown when they first get posted here. And, if you’re looking for some other games to play in a browser like it’s the mid-00s again, we’re fans of this project which brings the unofficial Zelda game Zelda Classic to our screens.

Portable, Full-Size Arcade Cabinets

Believe it or not, there was a time when the only way for many of us to play video games was to grab a roll of quarters and head to the mall. Even though there’s a working computer or video game console in essentially every house now doesn’t mean we don’t look back with a certain nostalgia on those times, though. Some have turned to restoring vintage arcade cabinets and others build their own. This hackerspace got a unique request for a full-sized arcade cabinet that was also easily portable as well.

The original request was for a portable arcade cabinet, and the original designs were for a laptop-like tabletop arcade. But further back-and-forth made it clear they wanted full-size cabinets that just happened to also be portable. So with that criteria in mind the group started building the units. The updated design is modular, allowing the controls, monitor, and Raspberry Pi running the machines to be in self-contained units, with the cabinets in two parts that can quickly be assembled on-site. The base is separate and optional, with the top section capable of being assembled on the base or on something like a tabletop or bar, and the electronics section quickly drops in.

While the idea of a Pi-powered arcade cabinet is certainly nothing new, the quick build, prototyping, design, and final product that’s mobile and quickly assembled are all worth checking out. There is even more information on the build at the project’s GitHub page including Fusion 360 models. If you need your cabinets to be even more portable, this tabletop MAME cabinet is a great place to start.