Running A Game On A PC With No System RAM

As a clear sign of how desperate these RAMpocalypse times are becoming, we have [PortalRunner] over on YouTube contemplating how to run modern-day software on a PC that has no sticks of that most precious PC-related commodity that is not printer ink. What fallbacks do we have when purchasing some sticks of DDR5 is inconceivable due to budgetary limitations or chronic sticker shock symptoms? As it turns out, quite a few.

Of course, it should be noted up front that none of these options are particularly good or desirable. The video starts with simply trying to push Linux to see how little RAM it really needs using boot arguments. This unfortunately soft-bricks the system if not enough RAM is allocated for boot. Next is the idea of leaning heavily into swap, as today’s SSDs ought to be a lot faster than memory page swapping from a HDD. Only this turns out to be also too slow to be usable due to the sheer overhead that this adds.

Even more desperate is to try and use the video RAM on GPUs as a kind of system RAM, which sort-off works, but also with enormous overhead and an if possible worse experience than running a system off basically a pure swap file. Ultimately the most viable method is to lean into the CPU’s many megabytes of cache and modify a CoreBoot BIOS image to simply not initialize system RAM.

As long as you can squeeze your software into the BIOS image and available CPU cache memory, you can run amazing software like the Snake clone in the video. Of course this concept could be expanded upon, and maybe even made to work with UEFI BIOSes, but there will probably not be anyone running Linux from a 32 MB L3 cache any time soon.

Continue reading “Running A Game On A PC With No System RAM”

Art of 3D printer in the middle of printing a Hackaday Jolly Wrencher logo

Improving FDM Filament Drying With A Spot Of Vacuum

Keeping your filament safely away from moisture exposure is one of the most crucial aspects of getting a good 3D print, with equipment like a filament dryer a standard piece of equipment to help drive accumulated moisture out of filament prior to printing or storage. Generally such filament dryers use hot air to accomplish this task over the course of a few hours, but this is not very efficient for a number of reasons. Increasing the vaporization rate of water without significantly more power use should namely be quite straightforward.

The key here is the vapor pressure of a liquid, specifically the point at which it begins to transition between its liquid and gaseous phases, also known as the boiling point. This point is defined by both temperature and atmospheric pressure, with either factor being adjustable. In a pressure cooker this principle is for example used to increase the boiling temperature of water, while for our drying purposes we can instead reduce the pressure in order to lower the boiling point.

Although a lower pressure is naturally more effective, we can investigate the best balance between convenience and effectiveness.

Continue reading “Improving FDM Filament Drying With A Spot Of Vacuum”

The D In DNS Stands For DOOM

As literally everything ought to be able to play DOOM in some fashion, [Adam Rice] recently set out to make the venerable DNS finally play the game after far too many decades of being DOOM-less. You may be wondering how video games and a boring domain records database relate to each other. This is where DNS TXT records come into play, which are essentially fields for arbitrary data with no requirements or limitations on this payload, other than a 2,000 character limit.

Add to this the concept of DNS zones which can contain thousands of records and the inkling of a plan begins to form. Essentially the entire game (in C#) is fetched from TXT records, loaded into memory and run from there. This is in some ways a benign form of how DNS TXT records can be abused by people with less harmless intentions, though [Adam] admits to using the Claude chatbot to help with the code, so YMMV.

The engine and WAD file with the game’s resources are compressed to fit into 1.7 MB along with a 1.2 MB DLL bundle, requiring 1,966 TXT records in Base64 encoding on a Cloudflare Pro DNS zone. With a free Cloudflare account you’d need to split it across multiple zones. With the TXT records synced across the globe, every caching DNS server in the world now has a copy of DOOM on it, for better or worse.

You can find the project source on GitHub if you want to give this a shake yourself.

Thanks to [MrRTFM] for the tip.

 

Reflective pool of the Court of the Myrtles, looking north towards the Comares Tower. (Credit: Tuxyso, Wikimedia)

Medieval Alhambra’s Pulser Pump And Other Aquatic Marvels

Recently the Practical Engineering YouTube channel featured a functional recreation of a pump design that is presumed by some to have been used to pump water up to the medieval Alhambra palace and its fortress, located in what is today Spain. This so-called pulser pump design is notable for not featuring any moving parts, but the water pump was just one of many fascinating engineering achievements that made the Alhambra a truly unique place before the ravages of time had their way with it.

Although the engineering works were said to still have been functional in the 18th century, this pumping system and many other elements that existed at the peak of its existence had already vanished by the 19th century for a number of reasons. During this century a Spanish engineering professor, Cáceres, tried to reconstruct the mechanism as best as he could based on the left-over descriptions, but sadly we’ll likely never know for certain that it is what existed there.

Similarly, the speculated time-based fountain in the Court of the Lions and other elements are now forever lost to time, but we have plenty of theories on how all of this worked in a pre-industrial era.

Continue reading “Medieval Alhambra’s Pulser Pump And Other Aquatic Marvels”

The Hazards Of Charging USB-C Equipped Cells In-Situ

Can you charge those Li-ion based cells with USB-C charging ports without taking them out of the device? While this would seem to be answered with an unequivocal ‘yes’, recently [Colin] found out that this could easily have destroyed the device they were to be installed in.

After being tasked with finding a better way to keep the electronics of some exercise bikes powered than simply swapping the C cells all the time, [Colin] was led to consider using these Li-ion cells in such a manner. Fortunately, rather than just sticking the whole thing together and calling it a day, he decided to take some measurements to satisfy some burning safety questions.

As it turns out, at least the cells that he tested – with a twin USB-C connector on a single USB-A – have all the negative terminals and USB-C grounds connected. Since the cells are installed in a typical series configuration in the device, this would have made for an interesting outcome. Although you can of course use separate USB-C leads and chargers per cell, it’s still somewhat disconcerting to run it without any kind of electrical isolation.

In this regard the suggestion by some commentators to use NiMHs and trickle-charge these in-situ similar to those garden PV lights might be one of the least crazy solutions.

Continue reading “The Hazards Of Charging USB-C Equipped Cells In-Situ”

Writing An Open-World Engine For The Nintendo 64

Anyone who has ever played Nintendo 64 games is probably familiar with the ways that large worlds in these games got split up, with many loading zones. Another noticeable aspect is that of the limited drawing distance, which is why even a large open area such as in Ocarina of Time‘s Hyrule Field has many features that limit how far you can actually see, such as hills and a big farming homestead in the center. Yet as [James Lambert] demonstrates in a recent video, it’s actually possible to create an open world on the N64, including large drawing distances.

As explained in the video, the drawing distance is something that the developer controls, and thus may want to restrict to hit certain performance goals. In effect he developer sets where the far clipping plane is set, beyond which items are no longer rendered. Of course, there are issues with just ramping up the distance to the far clipping plane, as the N64 only has a 15-bit Z-buffer, after which you get ‘Z fighting’, where render order becomes an issue as it’s no longer clear what is in front of what.

One fix is to push the near clipping plane further away from the player, but this comes with its own share of issues. Ergo [James] fixed it by doing two render passes: first all the far-away objects with Z-buffer disabled, and then all the nearby objects. These far-away objects can be rendered back-to-front with low level-of-detail (LoD), so this is relatively fast and also saves a lot of RAM, as the N64 is scraping by in this department at the best of times.

In the video the full details of this rendering approach, as well as a new fog rendering method, are explained, with the code and such available on GitHub for those who wish to tinker with it themselves. [James] and friends intend to develop a full game using this engine as well, so that’s definitely something to look forward to.

Continue reading “Writing An Open-World Engine For The Nintendo 64”

Laser Ranging Makes GPS Satellites More Accurate

Although GNSS systems like GPS have made pin-pointing locations on Earth’s sphere-approximating surface significantly easier and more precise, it’s always possible to go a bit further. The latest innovation involves strapping laser retroreflector arrays (LRAs) to newly launched GPS satellites, enabling ground-based lasers to accurately determine the distance to these satellites.

Similar to the retroreflector array that was left on the Moon during the Apollo missions, these LRAs will be most helpful with scientific pursuits, such as geodesy. This is the science of studying Earth’s shape, gravity and rotation over time, which is information that is also incredibly useful for Earth-observing satellites.

Laser ranging is also essential for determining the geocentric orbit of a satellite, which enables precise calibration of altimeters and increasing the accuracy of long-term measurements. Now that the newly launched GPS III SV-09 satellite is operational this means more information for NASA’s geodesy project, and increased accuracy for GPS measurements as more of its still to be launched satellites are equipped with LRAs.