← Latest papers
⚡ electrical engineering

Using Assembly Language for Creating Games

This paper demonstrates the capabilities of x86 assembly language by detailing the development of an "Arkanoid" game using Visual Studio 2015, highlighting interesting algorithms and the language's potential for creating software that runs in the Windows OS Console.

Original authors: Haris Turkmanović, David Vukoje, Aleksandra Lekić, Milan Prokin

Published 2026-04-24
📖 5 min read🧠 Deep dive

Original authors: Haris Turkmanović, David Vukoje, Aleksandra Lekić, Milan Prokin

Original paper licensed under CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). This is an AI-generated explanation of the paper below. It is not written or endorsed by the authors. For technical accuracy, refer to the original paper. Read full disclaimer

Imagine you are trying to build a house. Most people use a modern construction kit with pre-made walls, windows, and doors that snap together easily. This is like high-level programming languages (like Python or C++). They are fast, safe, and handle all the messy details for you.

But this paper is about building a house using only raw bricks and mortar, one by one, with your own hands. This is Assembly Language. It's the "low-level" way of talking directly to the computer's brain (the processor). It gives you total control over every single brick (every byte of memory), but it's much harder work.

Here is the story of how the authors used this "raw brick" method to build a video game called "Arkanoid" (the classic brick-breaking game), explained simply:

1. The Goal: Why Build a Game in "Raw Bricks"?

The authors wanted to prove that you can still do cool, complex things with Assembly language, even though it's old-school. They built the game to show off:

  • Total Control: They didn't just tell the computer "draw a ball." They told the computer exactly which memory spot to change to make a pixel appear.
  • Efficiency: Assembly is like a sports car; it's fast and direct, perfect for things that need to happen instantly (like stopping a game when you lose).
  • Education: They wanted to show students that understanding how the computer works "under the hood" is valuable.

2. The Setting: The "Console" as a Grid

The game doesn't run in a fancy window with smooth graphics. It runs in the Windows Console (that black text box you see when you open Command Prompt).

  • The Analogy: Imagine the screen is a giant checkerboard. Each square on the board can hold a letter, a number, or a symbol, and it can be any color.
  • The Magic: The authors wrote code to treat this checkerboard like a canvas. They didn't just print text; they painted "Big Strings" (huge letters made of tiny blocks) to create a welcome screen and game menus.

3. The Game Mechanics: The Rules of the Brick House

The game follows the classic rules:

  • The Paddle: You control a bar at the bottom.
  • The Ball: It bounces around.
  • The Bricks: Colorful blocks at the top.
  • The Twist: Some bricks are "tough." You have to hit them twice to break them. If they fall and you catch them with your paddle, you get bonus points!

4. How They Made It Work (The "Secret Sauce")

Since they couldn't use a game engine (like Unity or Unreal), they had to build the engine themselves using three main tools:

A. The "Big Strings" (The Art)

Instead of typing normal letters, they created "Bitmaps."

  • Analogy: Think of a pixelated image of the letter "A" made out of tiny squares. They built a library of these pixel-art letters. When they wanted to write "WELCOME," the computer didn't just print text; it placed hundreds of tiny colored squares on the checkerboard to form the shape of the letters.

B. The "Traffic Cop" (The Logic)

The game needs to know where everything is. They created Structures (like digital folders) to hold data:

  • The Ball Folder: Contains where the ball is, where it's going, and how fast.
  • The Brick Folder: Contains the brick's color, its score value, and a "Hit Counter" (how many times it's been hit).
  • The Paddle Folder: Tracks the paddle's position.

C. The "Bouncer" (Collision Detection)

This is the hardest part. Every time the ball moves, the code has to ask: "Did I hit a wall? Did I hit a brick? Did I hit the paddle?"

  • The Analogy: Imagine the ball is a blindfolded dancer. Before every step, the code checks the floor plan.
    • If the ball hits a wall, the code tells it to bounce back at the same angle.
    • If it hits a brick, the code subtracts 1 from the brick's "Hit Counter." If the counter hits zero, the brick vanishes.
    • If it hits the bottom of the screen, the game is over.

5. The "Time Travel" Trick (Speed Control)

The authors wanted some things to move slower than others without making the whole game laggy.

  • The Analogy: Imagine a drummer keeping a beat.
    • The Paddle moves on every beat (fast).
    • The Ball moves on every beat (fast).
    • The Falling Bricks only move on every third beat.
  • They used a "Time Vector" (a timer) to skip drawing certain objects for a few frames. This made the falling bricks look like they were drifting slowly, adding a nice visual effect without complex physics.

6. The Result

The final product is a fully playable game running in a simple black window. It looks retro, but under the hood, it's a masterpiece of manual control.

Why does this matter?
The authors argue that just because we have easy tools today, we shouldn't forget how to build things from scratch. Understanding Assembly is like knowing how to fix the engine of a car instead of just knowing how to drive it. These same logic tricks (collision detection, moving objects, handling input) are used in everything from video games to smart toasters and spacecraft (embedded systems).

In short: They built a video game using the computer's native language to prove that with enough patience and skill, you can make a computer do almost anything, even without modern shortcuts.

Drowning in papers in your field?

Get daily digests of the most novel papers matching your research keywords — with technical summaries, in your language.

Try Digest →