A small plastic case with an OLED screen showing a side-scrolling game

Game & Light Brings Video Games To Your Keychain

If you’re old enough to remember the 1990s, you might recall the sheer variety of portable gaming platforms that were around in those days. There was of course the ubiquitous hand-held Game Boy, and if you preferred something larger you could buy a Sega Game Gear or an Atari Lynx. But you could also go smaller with tiny LCD games like Nintendo’s Game and Watch series, with some versions literally the size of a wristwatch.

With all of these having gone the way of the dodo, we’re happy to see that [grossofabian] kept the tiny game world alive by designing the Game & Light: a tiny hand-held games platform with an OLED screen. It’s small enough to attach to your keychain and comes with an LED to act as a mini flashlight. But of course the main feature is the included video game: currently it comes with LEDboy Adventures, a side-scrolling platformer similar to Google’s T-Rex Game. A USB port can be used to recharge the device as well as to upload new games.

The Game & Light is housed in a 3D printed case and powered by a lithium-ion capacitor that can store enough charge for around 40 minutes of play time. The CPU is an ATtiny402 eight-pin microcontroller with 4 kB of flash, which is just enough to store the entire LEDboy game. Although currently only one game is available, the system is fully programmable and open sourced, so anyone who feels up to the task can help develop new games for the platform.

If you like keychain-sized games, you’re in luck: we recently featured the solar-powered but otherwise similar RunTinyRun. A bit longer ago, creative hackers even managed to squeeze entire Game Boys into tiny packages.

Continue reading Game & Light Brings Video Games To Your Keychain”

TWANG32 Brings LED Strip Gaming To The ESP32

Under the Hackaday TV is a modern game console, it’s a well-known model that many of you also probably have, and its main feature is a 3D accelerator which allows it to create the beautifully rendered worlds we’ve all come to know and love. [Mircemk] eschews such fripperies with the Twang project, because it’s a game that’s not 3D, nor 2D, but 1D. The display, indeed the entire gaming surface, is a single strip of addressable LEDs which can be seen int he video below the break.

Behind it all is an ESP32, and a unique one-dimensional joystick using an accelerometer. There’s an audio channel with a little piezoelectric speaker too, and the LED strip is a particularly high-density one from DFRobot. Because this is an ESP32-driven device it has WiFi, upon which is exposed an access point for a network over which is served the game stats as a web page. It may not displace that modern console, but it’s certainly inventive.

Long-time Hackaday readers will be aware that this is only the latest of a long line of one-dimensional games, including a 1D take on the famous PONG.

Continue reading TWANG32 Brings LED Strip Gaming To The ESP32″

Bringing Zelda Classic To The Browser

Finding a device or app that isn’t a web browser doesn’t seem easy. These days, it is either connected to the web (looking at you ESP32) or is just a web browser pretending to be something else (a la electron, PWAs, or React Native). So, of course, it is on us to create more and more exciting things to browse. [Connor Clark] is one of those people, and he brought Zelda Classic to the browser.

Zelda Classic (ZC) isn’t an official Zelda game. Instead, it’s an old engine designed to run the world in the OG Legend of Zelda and be easily modified to support hundreds of different games. To date, there are over 600 games submitted by a large community. ZC is an Allegro-based Windows-only game, so the first step was to bust out Emscripten to start tweaking the C++ code to support a web environment. Rather than completely port the huge codebase over from Allegro, [Connor] made the jump from Allegro 4 to 5. Allegro 5 has SDL as a backend and adds support for Emscripten.

Unfortunately, the 4 to 5 wasn’t as simple as changing the dependency. The API was wholly re-written, and there is a handy adapter known as Allegro Legacy to help transition a project from one to another. After squashing a multitude of bugs, it was a relatively painless procedure. After a quick detour getting music and level data working, [Connor] faced his next challenge: multi-threading. Efforts to move the main loop off of the browser thread and into a web worker ran into issues with having to yield in loops, deadlocks, and recursive mutexes. Finally, he added music and gamepad support after fixing several bugs in SDL and Allegro.

It’s an incredible journey with many tips and tricks for debugging seemingly intractable bugs. The code is up on GitHub, or jump in and start playing if you’re interested. Why not check out this browser-based OpenSCAD as well?

Aimbot Does It In Hardware

Anyone who has played an online shooter game in the past two or three decades has almost certainly come across a person or machine that cheats at the game by auto-aiming. For newer games with anti-cheat, this is less of a problem, but older games like Team Fortress have been effectively ruined by these aimbots. These types of cheats are usually done in software, though, and [Kamal] wondered if he would be able to build an aim bot that works directly on the hardware instead.

First, we’ll remind everyone frustrated with the state of games like TF2 that this is a proof-of-concept robot that is unlikely to make any aimbots worse or more common in any games. This is mostly because [Kamal] is training his machine to work in Aim Lab, a first-person shooter training simulation, and not in a real multiplayer videogame. The robot works by taking a screenshot of his computer in Python and passing the information through a computer vision algorithm which recognizes high-contrast targets. From there a PID controller is used to tell a series of omniwheels attached to the mouse where to point, and when the cursor is in the hitbox a mouse click is triggered.

While it might seem straightforward, building the robot and then, more importantly, tuning the PID controller took [Kamal] over two months before he was able to rival pro-FPS shooters at the aim trainer. It’s an impressive build though, and if one of his omniwheel motors hadn’t burned out it may have exceeded the top human scores on the platform. If you would like a bot that makes you worse at a game instead of better, though, head over to this build which plays Valorant by using two computers to pass game information between.

Continue reading “Aimbot Does It In Hardware”

A Great Resource For The Would-Be Pinball Machine Builder

Those of us beyond a certain age will very likely have some fond memories of many an hour spent and pocket money devoured feeding the local arcade pinball machine. At one time they seemed to be pretty much everywhere, but sadly, these days they seem to have largely fallen out of favour and are becoming more of speciality to be specifically sought out. Apart from a few random ones turning up — there’s a fun Frankenstein-themed machine in the Mary Shelley Museum in Bath, England — a trip to a local amusement arcade is often pretty disappointing, with modern arcade machines just not quite scratching that itch anymore, if you ask us. So what’s an old-school hacker to do, but learn how to build a machine from scratch, just the way we want it? A great resource for this is the excellent Pinball Makers site, which shows quite a few different platforms to build upon and a whole ton of resources and guides to help you along the way.

Continue reading “A Great Resource For The Would-Be Pinball Machine Builder”

A small PCB with an OLED screen showing a Dinosaur Game

Hackaday Prize 2022: RunTinyRun Is A Fully Solar-Powered, Portable Dinosaur Game

Fully solar-powered handheld gadgets have so far mostly been limited to ultra-low power devices like clocks, thermometers and calculators. Anything more complicated than that will generally have a battery and some means to charge it. An entirely solar-powered video game console is surely out of reach. Or is it? As [ridoluc] shows, such a device is actually possible: the RunTinyRun gets all its power directly from the Sun.

To be fair, it’s not really a full-fledged game console. In fact it doesn’t even come close to the original Game Boy. But RunTinyRun is a portable video game with an OLED display that’s completely powered by a solar panel strapped to its back. It will run indefinitely if you’re playing outside on a sunny day, and if not, letting it charge for a minute or two should enable thirty seconds of play time.

The game it runs is a clone of Google’s Dinosaur Game, where you time your button presses to make a T-Rex jump over cacti. As you might expect, the game runs on an extremely minimalist hardware platform: the main CPU is an ATtiny10 six-pin micro with just 1 kB of flash. The game is entirely written in hand-crafted assembly, and takes up a mere 780 bytes. A 0.1 farad supercap powers the whole system, and is charged by a 25 x 30 mm2 solar cell through a boost converter.

RunTinyRun is a beautiful example of systems design within strict constraints on power, code size and board area. If you’re looking for a more capable, though slightly less elegant portable gaming console, have a look at this solar-powered Game Boy.
A Dinosaur Game implementation running on a breadboard setup

Optimized Super Mario 64 Offers Exciting Possibilities

When working on any software project, the developers have to balance releasing on time with optimizations. As long as you are hitting your desired time constraints, why not just ship it earlier? It’s no secret that Super Mario 64, a hotly anticipated launch title for the Nintendo 64 console in 1996, had a lot of optimizations left on the table in order to get it out the door on time. In that spirit, [Kaze Emanuar] has been plumbing the depths of the code, refactoring and tweaking until he had a version with serious performance gains.

Why would anyone spend time improving the code for an old game that only runs on hardware released over two decades ago? There exists a healthy modding community for the game, and many of the newer levels that people are creating are more ambitious than what the original game could handle. But with the performance improvements that [Kaze] has been working on, your budget for larger and more complex levels suddenly becomes much more significant. In addition, it’s rumored that a multi-player mode was originally planned for the game, but Nintendo had to scrap the feature when it was found that the frame rate while rendering two cameras wasn’t up to snuff. With these optimizations, the game can now handle two players easily.

Luigi has been waiting 26 years for his chance to shine.

[Kaze] has a multi-step plan for improving the performance involving RAM alignment, compiler optimizations, rendering improvements, physics optimizations, and generally reducing “jankiness.” To be fair to the developers at Nintendo, back then they were working with brand new hardware and pushing the boundaries of what home consoles were capable of. Modeling software, toolchains, compilers, and other supporting infrastructure have vastly improved over the last 20+ years. Along the way, we’ve picked up many tricks around rendering that just weren’t as common back then.

The central theme of [Kaze]’s work is optimizing Rambus usage. As the RCP and the CPU have to share it, the goal is to have as little contention as possible. This means laying out items to improve cachability and asking the compiler to generate smaller code rather than faster code (no loop unrolling here). In addition, certain data structures can be put into particular regions of memory that are write-only or read-only to improve resource contention. Logic bugs are fixed and rendering techniques were improved. The initial results are quite impressive, and while he isn’t done, we’re very much looking forward to playing with the final product.

With the Nintendo 64 on its way to becoming a mainline-supported Linux platform, the old console is certainly seeing a lot of love these days.

Continue reading “Optimized Super Mario 64 Offers Exciting Possibilities”