[CNCDan] previously dabbled with Raspberry Pi CM4-powered gaming handhelds but was itching for something more powerful. Starting in May 2023, he embarked on building an Intel NUC7i5BNK-powered handheld dubbed NucDeck.
As he goes over the feature list, it sounds like a commercially available console. A 1024 x 600 screen provides a good balance of fidelity and performance. Stereo-chambered speakers provide good front-facing sound. Two thumbsticks with gyro aim assist, two hall effect triggers, and many buttons round out the input. Depending on the mode, the Raspberry Pi Pico provides input as it can emulate a mouse and keyboard or a more traditional gamepad. A small OLED screen shows battery status, input mode, and other options. This all fits on four custom PCBs, communicating over I2C. 6000 mAh of battery allows for a decent three hours of run time for simpler emulators and closer to an hour for more modern games.
The whole design is geared around easily obtainable parts, and the files are open-source and on GitHub with PDFs and detailed build instructions. We see plenty of gorgeous builds here on Hackaday, but everything from the gorgeous translucent case to the build instructions screams how much time and love has been put into this. Of course, we’ve seen some exciting hacks with the steam deck (such as this one emulating a printer), so we can only imagine what sort of things you can do once you add any new hardware features you’d like.
Continue reading “The Best Kind Of Handheld Gaming Is Homemade”
If you’re programming on a modern computer, you typically make use of lots of work done by other people. There’s operating systems to abstract away the complexities of modern hardware, standard libraries to implement common tasks, and tons of third-party libraries that prevent you from having to reinvent the wheel all the time: you’re definitely not the first one trying to draw graphics onto a screen or store data in a file.
But if it’s the wheels you’re most interested in, then there’s nothing wrong with inventing new ones now and then. [Michal Zalewski], for instance, has made a beautiful Tetris clone in just 1000 lines of C, without using anyone else’s code.
The purpose of this exercise is to show that it’s possible to make a game with graphics comparable to modern, complex computing systems, without relying on operating systems or third-party libraries. The hardware consists of not much more than an ARM Cortex-M7 MCU, a 240×320 LCD screen and a few buttons soldered onto a piece of prototyping board, all powered by a set of AAA batteries.
The software is similarly spartan: just pure C code running directly on the CPU core. Graphic elements, some generated by AI and others hand-drawn, are stored in memory as plain bitmaps. They are manipulated by 150 lines of code that shuffles sprites around the display at a speed high enough to generate smooth motion. Game mechanics take up about 250 lines, while sound consists of simple square-wave chiptunes written in just 50 lines of code.
[Michal]’s code is very well documented, and his blog post gives even more details about all the problems he had to solve. One example is the length of keypresses: when do you interpret a keypress as a single “press”, and when does it become “press and hold”? Apparently, waiting 250 ms after the first press and 100 ms after subsequent ones does the trick. [Michal] is a bit of an expert on bare-bones game programming by now: he has previously pushed several 8-bit micros to their very limits. Third-party libraries can make your programming life a lot easier, but it’s good to reflect on the dangers of relying too much on other people’s code.
Continue reading “Tetris Clone Uses 1000 Lines Of Code, And Nothing Else”
Classic video games might look primitive by today’s standards, but the addictive gameplay of Breakout or Pac-Man remains fun no matter what decade you were born in. Keeping the relevant hardware running becomes harder as the years pile up however, so when [Michal Zalewski] decided to introduce his kids to classic video games, he didn’t dig up his old game consoles. Instead, he decided to recreate several games from scratch using the bare minimum amount of hardware needed.
The first project is a copy of Snake, the arcade classic that millennials will recognize from their Nokia phones. [Michal] made an initial version using an ATmega328P with an 8×8 LED matrix as a display, but quickly upgraded the hardware to a 16×16 display powered by an ATmega644, and added an LED seven-segment display to show the score. All parts are simply soldered onto a piece of prototyping board, with no need for any custom PCBs or enclosures.
Game #2 is a side-scrolling space shooter called Dino in Space. This game runs on an ATmega1284 and uses a 4×20 character text display, allowing simple graphics as well as an on-screen score counter. Similar hardware, although with a 128×64 graphic OLED screen, powered game #3, a Breakout/Arkanoid clone called Blockbuster 7000.
[Michal]’s blog post is filled with interesting tips for real-life game programming. For example, a true random number generator creates a rather odd-looking bunch of asteroids in space – tweaking the distribution to make it a bit more uniform greatly enhances the game’s playability. Source files for all games are available on [Michal]’s website, and include a description of the exact hardware setup needed for each game.
Recreating Snake on custom hardware is sort of a rite of passage for microcontroller hackers, as you can see in many impressive projects. Breakout-style games can also be implemented on various hardware platforms, including analog oscilloscopes.
One of the coolest things in the retro gaming scene is making desktop consoles into portables. [Millomaker] is building an XBox 360 handheld, and the first step is shrinking the console’s motherboard.
Most 360 portables up to this point have been laptop-shaped instead of something handheld, but that hasn’t stopped people from trying to miniaturize the console further. [Millomaker]’s cut seems to be the most successful so far, shrinking the device’s motherboard down to the size of its old competitor, the Wii.
In the video (in French with available auto-translation) below the break, you can get the full harrowing journey during which several 360s sacrificed their motherboards for the cause despite [Millomaker]’s meticulous testing between component removals. This is truly an awesome mod, and we’re glad that the video shows not only the successes, but also the missteps on the way. It wouldn’t really be a hack if it was smooth sailing, would it?
For more fun with handhelds, check out the Sprig Open Source Handheld, a Portable PS2, or this Handheld Linux Computer.
Continue reading “Shrinking The XBox 360”
Single-board computers have been around ever since microprocessors became affordable in the 1970s and never went away. Today we have Raspberry Pis and LattePandas, while back in the ’70s and ’80s there were the Ferguson Big Board, the KIM-1 and a whole array of Intel SDK boards. Although functionally similar to their modern counterparts with a CPU, RAM, ROM and some basic peripherals, the old boards were huge compared to today’s tiny platforms and typically required a rather beefy power supply to operate.
It doesn’t have to be that way though, as [Aleksander] shows with the Pocket265: a handheld 6502 single-board computer somewhat reminiscent of the famous KIM-1. Like that classic machine, it’s got a hexadecimal keypad to enter programs using machine code and a row of LED displays to show the programs’ output. Unlike the KIM, the Pocket265 is small enough to hold in one hand and uses bubble LED displays, which make it look more like a programmable calculator from the 1970s. It comes with a lithium battery that makes it truly portable, as well as a sleek 3D printed case to make it more comfortable to hold than a bare circuit board.
The single ROM chip contains a monitor program that runs the basic user interface. It also makes programming a bit less tedious by implementing a number of system calls to handle things like user input and display output. A serial EEPROM enables local data storage, while a UART with a USB interface enables data transfer to other computers. If you’re interested in building and programming such a machine yourself, [Aleksander] helpfully provides code examples as well as full hardware documentation on his GitHub page.
The 6502 remains a firm favorite among hardware hackers: some projects we recently featured with this CPU include one beautifully made machine, this easy-to-build single-board computer and this huge breadboard-based contraption. Looking for something smaller? Try this tidy little board or this 6502 coupled to an FPGA.
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”
We’ve become used to seeing retro games running on commodity microcontrollers where once they would have required the bleeding-edge console hardware of their day. [Duncan]’s Mario clone takes the genre a little further, using not a processor with plenty of pins for peripherals, but instead the humble ATtiny85. Its eight pins drive two OLED displays, and accept input from the buttons of a cheap Nintendo-like controller.
The write-up is split between software and hardware sections, with all the software itself available from a GitHub repository. He’s bit-banging the i2C for the displays for an impressive turn of speed, and the ATtiny’s lack of pins is addressed by clever use of resistive dividers to present a different voltage for each button pressed. With a truth table of voltages he’s even able to detect multiple simultaneous button presses. Music is achieved with the chip’s limited resources by storing the sounds in EEPROM, and clocked it at 16 MHz for smooth gameplay.
The whole is mounted inside the shell of the controller, with its USB guts removed and replaced by a smart custom PCB. An unexpected problem with ground plane fill caused a temporary roadblock reading the buttons, but the finished product is a very Nintendo-like experience. We like it.