Reverse Engineering Galaga To Fix The No-Fire Cheat

We didn’t know there was a cheat to Galaga, but [Chris Cantrell] did. And so he did what any curious hacker would do — reverse-engineer the game to diagnose and eventually fix the bug.

Spoilers ahoy! Go read the website first if you’d like to follow [Chris]’s reversing efforts in the order that they actually happened.

The glitch is triggered by first killing most of the bees. When only six are left, they go into a second pattern where they swoop across the screen and wrap around the edges. While swooping, sometimes the bees will fire a shot when they’re at coordinates with X=0. Now two facts: there’s a maximum of eight missiles on the screen at any given time, and the position X=0 was reserved by the software to hide sprites that don’t need updating.

The end result is that eight missiles get stuck in a place where they never drop and don’t get drawn. No further shots are fired in the entire game. You win.

So that’s the punchline, but everyone knows that a good joke is in the telling. If you’re at all interested in learning reverse engineering, go read [Chris]’s explanations and work through them on your own.

And here’s our generic plug for Computer Archaeology:

Ancient video games run on MAME or similar emulators are the perfect playground for learning to reverse engineer; you can pause the machine, flip a bit in memory, and watch what happens next. Memory was expensive back then too, so the games themselves are small. (It’s not like trying to reverse engineer all however many jiggabytes of Microsoft Office.) The assembly languages for the old chips are small and well-documented, and most of the time you’ve also got a good dissasembler. What more could you ask for?

A walkthrough tutorial?  We’ve just given you one.

Oh and PS: If you get past level 255, the game freaks out.

Continue reading “Reverse Engineering Galaga To Fix The No-Fire Cheat”

Building A Pinball Emulator

Building a MAME machine – an arcade cabinet that will play everything from Galaga to Street Fighter II – is surely on the ‘to build’ list of thousands of Hackaday readers around the world. It’s a relatively simple build, provided you can put a sheet of MDF in your car; it’s just an emulator, and if you can find a CRT and have an old computer sitting around, you’re already halfway there.

There is another class of arcade games that can be emulated. This is, of course, pinball machines. [Jan] built a virtual pinball cabinet over the last few months and his build log is incredible. If you’ve ever wanted to build a pinball emulator, this is the guide to reference.

The most important part of a pinball emulator is the displays. For this, [Jan] is using a 40-inch TV for the playfield, a 28-inch monitor to display the backglass art, and a traditional 128×32 DMD. Instead of manufacturing his own cabinet, he repurposed an old electromechanical machine, Bally’s Little Joe.

The software is the real star of the show with PinballX serving as the front end, with Future Pinball and Visual Pinball serving as the emulators. These emulators drive the displays, changing out back glasses, and simulating the physics of the ball. The computer running all of this has a few neat electromechanical bits including a shaker motor, an original Williams replay knocker, and some relays or solenoids give the digital table a tremendous amount of force feedback. This is the way to do it, and if you don’t have these electromechanical bits and bobs securely fastened to the machine, you really lose immersion.

You can check out a video of the table in action below.

Continue reading “Building A Pinball Emulator”

Automated Die Testing

Are the contents of a Crown Royal bag fair? No, they never are. What about dice? In a quest for good randomness, [Apo] designed and built an automated die tester. Not only does it shake the die up, it captures images so real, actual statistics can be done on each individual die.

The setup is a n acrylic box made with BoxMaker attached to a 3D printed adapter for a stepper motor shaft. Randomizing the die happens exactly like you think it would: a stepper shakes the box, and a camera underneath takes a picture. With a bit of computer vision, this image can be translated into a number, ready for the statistics package of your choice.

There were only 559 rolls before the 3D printed mess of duck tape fell apart, but a test of the distribution revealed this die to have a 92% probability that it is fair. That’s not good.

Creating a cheating die is much more interesting, and to find out if he could do it, [Apo] stuck a die in an oven at 100° C for a few minutes. Surprisingly, the fairness of the die got better, suggesting it’s possible to correct an un-fair die. Putting it back in the oven after that threw the fairness out of the window but there was still no visual difference between this modified die and the original stock die.

Machining A Skeleton Clock In 10,000 Easy Steps

Another day, another interesting YouTube channel. [Chris]’ Clickspring channel and blog is something you don’t really see much these days: machining parts with a lathe, a mill, and no CNC. The project [Chris] is working on now is a clock based on a design by [John Wilding]. It’s very large, and all the parts are constructed out of raw brass and steel stock.

Of course making a clock isn’t just about cutting out some parts on a lathe and turning them on a mill. No, you’re going to need to make the parts to make those parts. [Chris] has already made a tailstock die holder for his lathe, a clamping tool to drill holes in rods, and a beautiful lathe carrier to hold small parts.

All of this is top-notch work, with custom tin lapping tools to put a mirror finish on the parts, and far more effort than should be necessary going into absolute perfection. The clock project is turning out great, although there are several more months until it will tick its first second.

Selected videos below.

Continue reading “Machining A Skeleton Clock In 10,000 Easy Steps”

USB PIDs For All

The USB Implementers’ Forum doesn’t make things easy for anyone building a product with a USB port. To sell anything with USB and have it work like USB should, you need to buy a USB Vendor ID, a $5000 license that grants you exclusive use of 65,536 USB Product IDs. Very few companies will ever release 65,000 products, and there are a lot of unused PIDs sitting around out there.

Now, someone has finally done the sensible thing and put an unused USB VID to work. pid.codes obtained the rights to a single VID – 0x1209 – and now they’re parceling off all the PIDs that remain to open source hardware projects.

This is not a project supported by the USB Implementers’ Forum, and is more of a legal game of chicken on the part of pid.codes. The only thing the USB-IF could do to stop this is revoke the original VID; useless, because they can’t reassign it to anyone else. The original owners of the VID, InterBiometrics, licensed their VID before transferring or sublicensing VIDs and PIDs was prohibited by the USB-IF.

You can get a PID by forking the pid.codes repo, claiming a PID, and sending a pull request. Once that’s accepted, that PID is yours forever.

Using I2C Addresses As Chip Selects

I2C has a seven-bit address space, and you’re thinking “when do I ever need more than 127 devices on a pair of wires?” So you order up some parts only to find that they have one, two, or three user-configurable address pins for any given device type. And you need a bunch more than four or eight capacitive sensor buttons on your project. What do you do?

If you’re reader [Marv G], you think outside the box and realize that you can change the addresses on the fly by toggling address pins high and low with your microcontroller. That is, you can use a single I2C address pin for each device as a chip select signal just like you would have with SPI.

That’s it, really. [Marv G] goes through all of the other possible options in his writeup, and they’re all unsavory: multiple I2C busses, a multiplexer, buying different sensors, or changing micros. None of these are as straightforward as just running some more wires and toggling these with your micro.

We’d even go so far as to suggest that you could fan these chip select lines out with a shift register or one of those 1-of-N decoder chips, depending on how many I2C devices you need to chip-selectify. (We’re thinking 74HC595 or 74HC154.)

Along the way, we found this nice list of the number of address pins for a bunch of common peripherals provided by [LadyAda], in case you don’t believe us about how ubiquitous this problem is. How many devices on that list have one (1!!) address pin?

At the end of his post, [Marv G] asks if anyone else has thought of this chip select trick before. We hadn’t. Here’s your chance to play the smart-ass in the comments.

Exploded View of a Kindle

Re-purposing Old Electronics To Inspire New Designs

We love seeing how things work. Exploded views are like mechanical eye-candy to most engineers, so when [Chris’] Kindle Touch died, he decided to give it new life… on his wall.

Inspired by others, he decided to mount all the components of his Kindle onto a piece of plastic that he could hang up on his wall. As an electronics design engineer, he’s always looking for new ideas and ways to design and build circuits — what better way to inspire creativity than to see a real product blown apart? Does anyone remember reading [Stephen Biesty’s] Incredible Cross Sections or Incredible Explosions as a child?

The construction is quite simple, relying on mounting holes where possible to screw parts directly to the board, or by using heavy duty double-sided tape. After finishing the Kindle, [Chris] found an old iPod of his and decided to give it the same ritual.

For some more in-depth exploded physical models, take a look Bolt.io’s office art we covered last year!