It’s Snake, In A QR Code, But Smaller

We’re not sure that many of you have recognised the need in your life for an x86 machine code program encoded into a QR code, but following on from someone else work [donno2048] has created a super-tiny Snake clone in assembly which comes in at only 85 bytes long. It fits far better in a QR code than the previous effort, but perhaps more useful is a web page demo which runs an in-browser DOS compatibility library. We followed the compilation instructions and got it running on our Manjaro installation, with the result of a somewhat unplayable but recognisable Snake, we’re guessing because it was written for a slower platform. The web version is more usable, and allows us to investigate its operation more thoroughly.

To achieve a working game in so little code is an impressive feat, and since we found different keys responded on machines with different keyboards we’re curious how it does its keyboard input. Also we think it has the Snake bug where turning back on yourself means instant game over. We would be interested to hear the views in the comments of readers who know something about x86 assembly, to help explain these points.

This RISC-V CPU Games In Rust From Inside The Game

[Xander Naumenko] has created something truly impressive — a working RISC-V CPU completely contained in a Terraria world. And then for added fun, he wrote the game of pong, playable in real time, from within the game of Terraria. It’s all based on the in-game wiring system, combined with a bit of a hack that uses the faulty lamp mechanic to create a very odd AND gate. In Terraria, the existing logic gates have timing issues that make them a no-go for complicated projects like this one. The faulty lamp is intended to do randomized outputs, by stacking multiple inputs to get a weighted output when a clock signal is applied. The hack is to simply give this device a single input, turning it into a clocked IF gate. Two of them together in series makes a clocked AND gate, and two in parallel make a clocked OR gate.

Why would [Xander] embark on this legendary endeavor? Apparently after over eight thousand hours clocked in game, one gets a bored of killing slimes and building NPC houses. And playing with the game’s wiring system turned on a metaphorical lightbulb, that the system could be used to build interesting systems. A prototype CPU, with a completely custom instruction set came next, and was powerful enough to compute Fibonacci. But that obviously wasn’t enough. Come back after the break for the rest of the story and the impressive video demonstration.

Continue reading “This RISC-V CPU Games In Rust From Inside The Game”

A small B/W TV showing a Pong-like game being played on a Soviet-era game console

Soviet-Era Pong Console Is Easy To Repair

Many early home video game consoles were developed by American and Japanese companies: think Nintendo, Commodore, and Atari. But on the other side of the Iron Curtain, which was still very much in place in the 1980s, an entirely separate industry was built on names like Tesla and Elektronika. As a resident of the republic of Georgia, [Thomas] over at Workshop Nation has built up a sizeable collection of such Soviet-era hardware. A while back, he stumbled upon an Elektronika Video Sport 3, a 1990-vintage Pong-like video game console made in the USSR, and made a delightful video that shows him bringing it back to life.

A circuit board from an Elektronika game consoleLike its Western counterparts, the Video Sport 3 is built around a dedicated chip, in this case a K145IK17. This is a Soviet clone of the GI AY-3-8500 that powered nearly every TV Pong console in the West, allowing it to run several variations of Pong as well as a simple target shooting game. Interestingly, the Video Sport 3 also has a “test” mode in which it outputs a test signal to help you adjust your TV settings — quite useful in the days of analog CRTs. It also came with a comprehensive user manual, as well as full schematics to help you repair it in case anything breaks.

[Thomas]’s device didn’t immediately work, which is why he opened it up and tried to find any errors. The main board he found inside was a beautifully hand-made, single-layer board with around a dozen chips and lots of discrete components. Nothing seemed obviously broken, but [Thomas] decided to replace a few electrolytic capacitors as a precaution. This turned out to be enough to get the console working again — dodgy caps truly are a universal problem with older hardware.

A small Elektronika black-and-white TV that [Thomas] found earlier forms a perfect complement to the Video Sport 3. Together, they give us a glimpse into what a typical video game setup may have looked like in an early 1990s Soviet home. In fact, the Eastern Bloc supplied a reasonably wide selection of home computers, although not many people could actually buy them. Some truly bizarre machines were also produced for professional users.

Continue reading “Soviet-Era Pong Console Is Easy To Repair”

Adding Portals To Quake

For those who have played Quake extensively, adding portals seems unnecessary, as teleporters are already a core part of the game mechanics. What [Matthew Earl] accomplishes is more of the Portal style of portal by rendering what is on the other side of the portal with a seamless teleportation transition.

Of course, Quake is an old game with a software renderer. Just throwing another camera into the scene, rendering to another texture, and then mapping that texture to the scene isn’t an option. Quake uses an edge rasterizer and generates spans along scanlines that track where edges intersect the current scanline. Rather than making expensive per-pixel comparisons, [Matt] stashes the portal spans and renders them in a second render, so even with multiple portals, only a single screen’s worth of pixels are rendered.

However, this technique has no near clipping plane, which means objects can appear in the portal that don’t make any sense as they are in front of the portal’s viewpoint. Luckily, Quake has an ingenious method for polygon occlusion: the BSP. While [Matt] is manually checking polygons, the BSP is the perfect tool for bisecting a room along a plane. It’s an incredible hack, and we’re excited to see Quake expand into a puzzle game. [Matt] dives into greater detail on how the software renderer works in another video that’s well worth a watch.

Perhaps the most incredible aspect of this technique is that it could run on original hardware. If you want to bring a little more Quake to life, why not get the Quake light flicker in your house? Video after the break.

Continue reading “Adding Portals To Quake”

Picopad Is A New Open Source Game Console

Microcontrollers are so powerful these days that you can build color handheld games with them that match or exceed what you’d ever get on the Game Boys and Game Gears of yesteryear. The Picopad aims to offer just this, in an open-source hackable format that’s friendly to experimenters.

As you might have guessed from the name, the Picopad is based on the Raspberry Pi Pico and its RP2040 microcontroller. It features four face buttons and a D-pad, along with a small color LCD with a 320×240 resolution. There is also a microSD slot upon which programs can be stored, and also an expansion port with headers for a variety of IO from the RP2040 itself including both GPIOs, serial, I2C and analog input pins. The housing is constructed out of PCBs, with some cheerful gaming artwork adding a fun aesthetic. Development is via a custom C SDK, with support for Micropython as well.

If you want to build your own and don’t fancy starting from scratch, kits are available online. We’ve seen some other great gaming experiments with the Raspberry Pi Pico before, too, like an open-world 3D game and ZX Spectrum emulators. Video after the break.

Continue reading “Picopad Is A New Open Source Game Console”

FPGA Plays Tic-Tac-Toe

As computers get more and more powerful and artificial intelligence algorithms improve, few games remain where the best humans can reliably beat their electronic counterparts. In chess this barrier was passed in 2005 with the last human win against a computer, and recently humans lost to computers at go. Simpler games like tic-tac-toe have been solved for all possible positions for a while now, so even a simple computer will always win or tie the game. But that doesn’t mean that there’s nothing left to learn about these games as [Hayden] demonstrates with this tic-tac-toe game built entirely on an FPGA.

[Hayden] is making this as part of a college course on digital design, so it really starts at first principles for working with FPGAs. It’s programmed in Verilog on a Basys 3 board, which also hosts the switches used as the game’s input and handles the VGA video output as well. The build uses state machines to keep track of the moves played on each of the squares, and another state machine to keep track of whether or not the current game has been won. If so, it highlights the winning moves in red, and stops taking further inputs until it is reset. Some more logic ties everything together along with a customized VGA driver to produce the entire gaming experience.

A game like tic-tac-toe is a great way to master the fundamentals of a system like this before moving on to more complex programs, especially on an FPGA platform that might handle a lot of the things we take for granted on more traditional computing systems, such as the video output. If you’re interested in taking more of a deep dive into the world of FPGAs, we published a primer about them a few years ago that will get you started.

Continue reading “FPGA Plays Tic-Tac-Toe”

A Chess AI In Only 4K Of Memory

The first computer to ever beat a reigning chess world champion didn’t do so until 1996 when a supercomputer built by IBM beat Garry Kasparov. But anyone who wasn’t a chess Grandmaster could have been getting beaten by chess programs as early as 1979 when Atari released one of the first ever commercially-available chess video games for the Atari 2600. The game was called Video Chess and despite some quirky gameplay it is quite impressive that it was able to run on the limited Atari hardware at all as [Oscar] demonstrates.

The first steps of getting under the hood of this program involved looking into the mapping of the pieces and the board positions in memory. After analyzing some more of the gameplay, [Oscar] discovered that the game does not use trees and nodes to make decisions, likely due to the memory limitations, but rather simulates the entire game and then analyzes it to determine the next step. When the game detects that there are not many pieces left on the board it can actually increase the amount of analysis it does in order to corner the opposing king, and has some unique algorithms in place to handle things like castling, finishing the game, and determining valid movements.

Originally it was thought that this engine couldn’t fit in the 4K of ROM or work within the 128 bytes of system memory, and that it was optimized for the system after first developing a game with some expanded capabilities. The game also has a reputation for making illegal moves in the higher difficulty settings although [Oscar] couldn’t reproduce these bugs. He also didn’t get into any of the tricks the game employed just to display all of the pieces on the screen. The AI in the Atari game was a feat for its time, but in the modern world the Stockfish open-source chess engine allows for a much more expanded gameplay experience.