We gave ChatGPT a small Windows game, asked it to investigate the executable, and ended up creating something of our own. Here’s what happened.
There is something fascinating about old computer games. They might look simple compared with modern titles, but behind their colorful graphics and straightforward controls lies a surprising amount of programming logic.
Recently, I decided to try an experiment with ChatGPT. Instead of asking AI to create a game from scratch, I wanted to see whether it could investigate an existing compiled game, understand how parts of it worked, and use those discoveries to help us build something new.
Our starting point was a small Windows brick-breaker game. Eventually, the experiment led us to create BrickMint, our own free browser game. However, the most interesting part wasn’t the finished game. It was everything we discovered along the way.
The Challenge: Can AI Really Reverse Engineer a Game?
Asking ChatGPT to write a simple game isn’t particularly surprising anymore. If you’re new to the subject, our beginner’s guide to game development explains the foundations. Describe the rules, choose a programming language, and AI can generate a playable prototype. I wanted to explore something different, though.
What if we provided ChatGPT with a compiled Windows executable rather than its source code? Could it examine the program and identify actual gameplay mechanics? Could it distinguish between what it discovered and what it was simply inventing?
Creating a brick breaker based on a description is not reverse engineering. To call our experiment reverse engineering, we needed to investigate the actual executable and find evidence of how its code worked.
Step 1: Examining the Original Game Files
The original game arrived as a ZIP archive containing a Windows executable, several DLL files, and an assets directory. The executable itself was only 32 KB.
We found textures for the paddle, bricks, space background, and special brick types. Filenames suggested extra health, multiball, and slowdown effects. However, a file named BrickTextureMultiBall.png doesn’t tell us how multiball works. To investigate that, we needed to look inside the executable.
Step 2: Looking Inside the Compiled Program
ChatGPT identified a 32-bit Windows program and examined its machine-code instructions with a disassembler. Disassembly translates machine instructions into assembly language, helping reveal what a compiled program does. We did not have the original source code.
Our investigation focused on patterns, calculations, function calls, and memory locations. We identified references to the SIGIL graphics library and functions associated with mouse input, drawing, and frame timing. Gradually, code for updating positions, checking boundaries, handling collisions, and changing gameplay variables emerged.
Important limitation: this was static analysis, not a full runtime debugging session. Some behaviors could be supported directly by instructions; others still required interpretation.
Step 3: Discovering How the Ball Moves
One of our first findings involved ball movement. The executable contained calculations combining movement values with elapsed frame time. In simplified form:
position = position + velocity × elapsed time
Accounting for elapsed time helps keep motion consistent across computers running at different frame rates. For browser games, the requestAnimationFrame API is a standard way to schedule animation updates. We also found boundary checks and changes to the ball’s direction. These provided useful principles for our browser version.
Step 4: Investigating Collisions
Collision detection was one of the most interesting parts. A brick breaker needs to determine when a ball touches a brick, how it should bounce, and whether the brick should disappear.
The disassembly revealed code that iterated through brick records and checked collisions, plus paddle-related calculations involving trigonometric functions. One useful detail was position correction after a collision: if the ball remains overlapping a brick, simply reversing its direction can cause repeated or unusual bounces.
We used this discovery to improve our own prototype. Rather than merely recreating a game’s appearance, we were learning from its implementation.
Step 5: Finding Hidden Gameplay Mechanics
As we investigated further, we found several interesting mechanisms:
- Multiball: code initialized additional ball records and set the active count to three. Scoring also used the active-ball count.
- Extra lives: activating one type of special brick increased the player’s life count.
- Slow motion: the executable contained a temporary effect reducing speed to approximately 35% for around five seconds.
- Score and high score: both values appeared in the program, along with logic that could reduce a positive score over time.
- Speed progression: the executable contained bounded acceleration logic.
That last finding led to a design discussion. A ball that becomes too fast can turn a fun game into a frustrating one. We chose to make later levels harder through brick arrangements and durability rather than dramatic acceleration.
Step 6: From Investigation to Our Own Game
While examining the original game, ChatGPT also helped us build a playable browser game using HTML, CSS, and JavaScript. The first version was simple: a paddle, a ball, bricks, and the objective of clearing them without losing all your lives.
Through repeated testing, we adjusted controls, improved collision handling, and introduced new mechanics. Some ideas were inspired by the executable analysis; others were our own. Instead of reproducing the original game instruction by instruction, we were creating an independent game informed by what we learned.
Step 7: Making the Game Our Own
As the prototype evolved, we added:
- Reinforced bricks: some bricks take two or three hits, changing color as they weaken.
- Multiple guns: weapon bonuses can equip the paddle with a three-gun configuration.
- Changing formations: hexagonal, diamond, zigzag, clustered, and randomly generated brick layouts replace repetitive rectangular grids.
- Temporary power-ups: extra lives, multiball, slowdown, and other bonuses introduce variety.
The Laser Ball
Our final special idea was a piercing ball that temporarily flies through bricks instead of bouncing off them. It can destroy several bricks along its path, including reinforced ones. It was a dramatic finishing touch that didn’t require making the ball faster.
Step 8: Introducing BrickMint
After several iterations, we named our game BrickMint. We gave it a glowing mint-green border and accents while preserving the colorful bricks and dark arcade background.
The result is a free browser-based brick breaker with multiple levels, reinforced bricks, power-ups, lasers, and changing formations. For more context on this format, see our guide to how browser games work and what makes them useful for learning. Visitors can play directly in their browser without installing the original Windows program.

🎮 Play BrickMint — Free Online Brick Breaker
What Did This Experiment Actually Prove?
The lesson wasn’t simply that AI could write a brick breaker. The interesting part was the combination of investigation, interpretation, implementation, and human decisions.
ChatGPT helped examine a compiled executable, identify relevant instructions, and reconstruct portions of its behavior. It then helped apply selected findings to a new game. However, not every discovery became a feature: we rejected aggressive acceleration and chose more interesting brick patterns instead.
AI contributed analysis and implementation; our testing and feedback shaped the final experience. This hands-on approach also shaped our earlier experiment on creating designs with AI.
What AI Could—and Couldn’t—Do
We did not recover the original source code, prove that every part of the original game was fully understood, or perform comprehensive runtime testing of the executable.
Some findings were directly supported by identifiable machine-code instructions; others required interpretation. Still, we uncovered genuine implementation details involving movement, collisions, special bricks, scoring, and speed-related logic.
That is a meaningful example of AI-assisted static reverse engineering. It also shows why verification matters: an AI explanation can sound convincing even when incomplete. Checking instructions, assumptions, and the resulting code is essential.
Final Thoughts: The Most Interesting Part Was the Journey
The journey started with one question: Can AI reverse engineer a game?
Ultimately, we examined a compiled Windows program, learned about its mechanics, and created a browser game of our own. Along the way, we discovered that AI can be a capable partner for exploring unfamiliar software, explaining complex ideas, and rapidly turning concepts into working prototypes.
Yet the best results don’t come from accepting every suggestion automatically. They come from asking questions, challenging assumptions, testing results, and deciding what actually makes the finished product better.
BrickMint is the result of that process.
🎮 Play BrickMint for free in your browser
Created as a TechEduCareer experiment in AI-assisted reverse engineering and browser game development.




















