Quake In 276 KB Of RAM

Porting the original DOOM to various pieces of esoteric hardware is a rite of passage in some software circles. But in the modern world, we can get better performance than the 386 processor required to run the 1993 shooter for the cost of a dinner at a nice restaurant — with plenty of other embedded systems blowing these original minimum system requirements out of the water.

For a much tougher challenge, a group from Silicon Labs decided to port DOOM‘s successor, Quake, to the Arduino Nano Matter Board platform instead even though this platform has some pretty significant limitations for a game as advanced as Quake.

To begin work on the memory problem, the group began with a port of Quake originally designed for Windows, allowing them to use a modern Windows machine to whittle down the memory usage before moving over to hardware. They do have a flash memory module available as well, but there’s a speed penalty with this type of memory. To improve speed they did what any true gamer would do with their system: overclock the processor. This got them to around 10 frames per second, which is playable, but not particularly enjoyable. The further optimizations to improve the FPS required a much deeper dive which included generating lookup tables instead of relying on computation, optimizing some of the original C programming, coding some functions in assembly, and only refreshing certain sections of the screen when needed.

On a technical level, Quake was a dramatic improvement over DOOM, allowing for things like real-time 3D rendering, polygonal models instead of sprites, and much more intricate level design. As a result, ports of this game tend to rely on much more powerful processors than DOOM ports and this team shows real mastery of their hardware to pull off a build with a system with these limitations. Other Quake ports we’ve seen like this one running on an iPod Classic require a similar level of knowledge of the code and the ability to use assembly language to make optimizations.

Thanks to [Nicola] for the tip!

Getting An Old HVAC System Online

Standardization might sound boring, but it’s really a great underlying strength of modern society. Everyone agreeing on a way that a certain task should be done saves a lot of time, energy, and money. But it does take a certain amount of consensus-building, and at the time [JC]’s HVAC system was built the manufacturers still hadn’t agreed on a standard control scheme for these machines yet. But with a little ingenuity and an Arduino, the old HVAC system can be given a bit of automatic control.

The original plan for this antiquated system, once off-the-shelf solutions were found to be incompatible, was to build an interface for the remote control. But this was going to be overly invasive and complex. Although the unit doesn’t have a standard remote control system, it does have extensive documentation so [JC] was able to build a relay module for it fairly easily with an Arduino Nano Matter to control everything and provide WiFi functionality. It also reports the current status of the unit and interfaces with the home automation system.

While some sleuthing was still needed to trace down some of the circuitry of the board to make sure everything was wired up properly, this was a much more effective and straightforward (not to mention inexpensive) way of bringing his aging HVAC system into the modern connected world even through its non-standardized protocols. And, although agreeing on standards can sometimes be difficult, they can also be powerful tools once we all agree on them.