❌

Reading view

There are new articles available, click to refresh the page.

60 FPS NES Emulator on ESP32

At least in theory, video games are more resistant to becoming lost media thanks to their digital nature β€” they’re easy to copy and emulators have saved many titles that are otherwise locked in corporate vaults. But emulators give us something beyond simple preservation: they can also be used to enhance games well beyond the capabilities of the original systems while still preserving the souls of the games, as this NES emulator manages to do.

The emulator is called Anemoia-ESP32, and as its name suggests is a re-write of the Anemoia emulator specifically built for the ESP32. By modern standards these little chips don’t pack much of a punch, but compared to original NES hardware they’re more than up to the task of gaming. This project aims to recreate the Nintendo Entertainment System experience as faithfully as possible, hitting 60 FPS in most instances, as well as maintaining full audio emulation. Running on an ESP32 enables some truly small handheld options that would be difficult to achieve with more traditional platforms for emulation. There are some PCBs available here as well, but aren’t required to explore this project with.

As far as extra features compared to original NES hardware, the emulator does support save states and has a number of other settings improvements. Installation is as easy as flashing any other firmware image onto an ESP32, which these days can even be done from the browser. No word on whether or not it will eventually support emulating dual Picture Processing Units, but we can hope.

Is Now the Time for Volumetric 3D Printing?

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

Of all innovations adopted by the maker community within the past couple of decades, one stands among the rest on top for anything regarding manufacturing. It goes without saying here at Hackaday how many projects have been reliant on using the technology to turn their ideas into reality. 3D printing has been a maker community invention and, in return, has expanded this hacky community into something that anyone with an imagination can get into. It also goes without saying that the layer-based tech imposes limits on what we can actually create: think overhangs and layer adhesion. However, there’s a possibility that a recent offshoot of this scrappy community has the power to eliminate some of these faults.

Volumetric additive manufacturing (VAM) is a young technology that has a similar start to many new tech toys, including the original SLA of the first 3D printers. That is expensive and completely stuck in the laboratory… Fortunately, that’s not where 3D printing as a whole stayed, as the RepRap project managed to bring the obscure technology to the hobbyists’ main stage. An entire group of people formed and spent countless hours until the useless pieces of poorly extruded plastic could form parts impossible to make with anything else. A cool quirk of history is that it likes to repeat: examples spur recreation, and this appears to be happening with the technology found within VAM printing.

History

Hold up for a second. While we have covered VAM here before at Hackaday, it’s not exactly the most well-known tech or the easiest to understand. So what is it? Starting from the beginning and simplest forms, VAM is similar to the moreΒ Β common SLA printing. Using a light source and light sensitive resin, both of these methods can create entire physical objects by solidifying or curing specific areas of a vat or vial of resin. SLA will often use something like a laser and layer by layer β€œdraw” the model until the entire geometry is finished. A quirk of most of many photosensitive resins is that they need to overcome a threshold before they can start curing. This allows VAM to do something a bit different. The earliest methods of VAM used intercepting lasers which allowed selective curing only where these beams were intercepted. One singular spot at a time would be able to overcome the threshold required for printing, allowing you to build up most geometries.

Xolography Print

This works, but for more complicated models there’s more effective methods. One type has been covered here before called Xolography, still using intercepting beams, however with differing wavelengths which allows for more finite control. This is effective, but the resin is complex, requiring two-wavelength-photon-sensitive photoinitiators. Introduce the current standard in VAM printing, computed axial lithographyΒ (CAL). This method finds itself using existing methods found in traditional tomography, such as CT scanners. CAL methods are basically reverse tomography, where a model is used to create projections to be projected in printing. These projections allow dose control in each β€œvoxel” of resin from changing the projection as the volume of resin is rotated. When ideal, this means that the entire model is printed at once. No layers needed for printing, and printing in minutes rather than hours.

Open-Sourced

Cool, but why should you care about this tech? Because you could start using it now! Just like the RepRap project before it, VAM has OpenCAL. OpenCAL was started by the same lab that originally created the axial version of the technology. UC Berkeley released the first OpenCAL around 2019 which was… well a start.

Functionally practical for only big budget research, it was far too expensive and complicated for any hobbyist with a 9-5 to realistically touch. Last year saw a new model presented at Open Sauce which used a consumer projector and common hobbyist electronics. While this was an improvement, there are three barriers to VAM printing; the hardware, software, and chemical resins make it a challenge for any individual alone. A newer version of the hardware was quickly put together for this summer. This helps with the hardware element, but there’s two new aspects being released alongside OpenCAL V2 for other unsolved problems.

Β 

Software: Tomo

Tomo with the Thinker model being prepped

For a little while now there have been various software packages available for allowing easier use of whatever VAM printer you might have, however these had various problems. From being undocumented to being complicated for anyone without comfort in command line , something different would be needed. A standalone application would certainly work, and low and behold that’s exactly what’s being tried here, called Tomo. Tomo allows you to use an OpenCAL printer with little thought or expertise, or ideally any other type of VAM printer.

Chemistry: Formlabs Resin

Large form factor VAM print

Material science is always a particular challenge for the open source community. Unlike software, you can’t distribute unlimited copies of your perfect mix of photosensitive resin without special chemical clearances and certainly not for free. Some of the first 3D printers from RepRap would use a nylon weed wacker line in place of the standard PLA of today. Unfortunately there’s less flexibility in the fine tuned resin found in VAM. This resin has to have a nonlinear photo-reaction for selective curing, be fairly transparent to the reactive wavelength, and be very viscous to prevent resin movement during printing. Formlabs, which makes resin printers and resins, has gotten into the act. Through talks between the OpenCAL team and Formlabs, an agreement for production of this special resin is being worked out, allowing for far cheaper material.

Hardware: OpenCAL

OpenCAL V2 printer
OpenCAL V2 printer

Of course this leaves the printer itself. OpenCAL is designed for a variety of different sized printing volumes, projectors, or anything else you might have in mind. Expect printing anything from this printer to finish in the span of minutes. While it can do the same small prints found in the older model of OpenCAL, experiments involving larger form factors have been attempted. But if you want more details make sure to check out the documentation here or join their Discord channel!

Future of VAM Printing

So how far can this technology really go? Could it pass traditional methods of 3D printing? Well, it’s certainly faster than traditional printing, however, there’s still plenty of trouble when trying it out. How do you remove partially cured resin off your print? How do you actually tell when the print is done? These are problems that are being fixed right now by the community, and maybe you can be the one to fix something holding it back. It’s fair to say that the community that has propped this technology up to where it currently stands is who is going to decide where it goes.

Godot’s New Contributing Policy Adds Barriers for AI Slop

Like so many large and popular open source projects these days, the Godot game engine struggles with an influx of pull requests. The situation has become increasingly dire due to the advent of AI-generated code. More specifically, the issue involves the inverse relationship between PR code quality and the number of PRs, which wastes a lot of time on the side of a limited number of (volunteer) reviewers. This has now forced the project to update its contribution policy.

An interesting point raised in the announcement article is that of the demoralizing effect of AI-generated PRs on reviewers. Often the human behind such a PR isn’t interested in being educated, or may even be an automated agent which isn’t capable of productive discussion on pros and cons of certain coding approaches β€” never mind in becoming a more permanent maintainer for the project.

This problem has led to new rules being instated, which include a ban on autonomous AI agents and vibe coding, a ban on substantial AI generating of code, and a ban on AI-generated text in human-to-human communication. It also codifies the requirement that all PRs are to be reviewed and approved by a human being before merging.

In many ways this new policy is similar to that of the Mesa project, which demands code comprehension on the side of the submitter, although it doesn’t go as far as NetBSD, which just outright treats LLM-generated code as β€˜tainted’ due to potential licensing and other concerns. Other projects like the Linux kernel opt to make the human submitter responsible for any AI tool usage by forcing them to declare it.

Meanwhile there are also indications that such β€˜AI tool’ usage is reducing useful interactions with open source projects. What the future will bring here remains to be seen, but at least as far as open source projects go these tools are clearly increasingly being banished.

❌