Skip to content

begoon/aliaz1

Repository files navigation

АЛМАЗ1 / ALIAZ1

build

Reverse-engineered, commented Intel 8080 source of АЛМАЗ1, a 1989 arcade-puzzle game for the Soviet home computers Радио-86РК and Микроша. The original author is А. Бытко, Riga, 22 April 1989.

Screenshots

Splash screen Gameplay
splash game

Play it online

https://rk86.ru/beta/index.html?run=ALIAZ1.RK

Educational purpose and copyrights

This project exists for study, preservation, and archaeology of early Soviet microcomputer game programming. The original game was widely distributed on cassette tape in the late 1980s and has been publicly circulating on RK-86 / Микроша enthusiast sites for decades, but no modern annotated source was previously available.

  • Original game © А. Бытко, 1989. All rights to the game and to the tape image in tape/ALIAZ1.RK remain with the original author. The 1989-era "т.282-6-5-6" signature left in the binary is preserved verbatim and is visible on the splash screen.
  • This repository's disassembly, annotations, labels, comments, and tooling are © 2026 Alexander Demin, released under the MIT license (see LICENSE). The license covers the added work only — it does not grant rights in the underlying 1989 game.
  • The project aims at faithful documentation of an existing artifact, not at producing a derivative work or a new game. just ci verifies that the committed source assembles byte-exact back to the original tape, so the representation is mechanical and lossless.

If you are (or know) the original author and would prefer different handling of this material, please open an issue.

What's in the repo

Path Contents
aliaz1.asm Commented 8080 source. Builds byte-exact to tape/ALIAZ1.RK.
tape/ALIAZ1.RK Original RK-format tape image (17552 B).
splash.txt Text rendering of the intro/help screen — see below.
rooms/level_{1..7}.txt Text renderings of the seven game levels.
disasm.py Minimal linear 8080 disassembler, asm8080-compatible output.
Justfile just ci rebuilds and diffs the tape image.
CLAUDE.md In-depth reverse-engineering notes (hardware map, variable roles, idioms, conventions).

Building

just ci

This runs:

bunx asm8080 --split -l --format rk --trailer-padding 1 aliaz1.asm
diff tape/ALIAZ1.RK aliaz1.rk     # must be empty

The --trailer-padding 1 is required: the original tape has a single 00h padding byte between the payload and the E6 cs_hi cs_lo checksum trailer. Assembler: begoon/asm8080 via bunx asm8080.

Artifacts extracted from the game

As part of understanding the binary, the following assets were extracted directly from the original code and data and saved as plain-text renderings. They are produced by walking the same bytes the game itself sends to video RAM, decoding control codes and block-graphic glyphs, and laying them out at the screen coordinates the game uses. No emulator or screen-capture was involved.

splash.txt — the intro screen

Contents of splash_data (offset 055Bh, 1954 bytes), streamed to video memory starting at row 5, col 8 by copy_splash. Shows the "АЛМАЗ1" block-graphics logo, the gameplay legend ("ДОРОГОЙ АЛМАЗ", "ЭТО ДАЕТ ДОПОЛНИТЕЛЬНОЕ ВРЕМЯ", the L/J key mechanics, exit arrow), and the author's signature line.

rooms/level_1.txtrooms/level_7.txt — the seven game levels

The levels are stored as raw video-memory snapshots inside the ROM image, not as a tile grid. Each level is exactly 1954 bytes long (same size as the splash) and lives at:

Level Offset On-screen title (decoded)
level_1 0CFDh (intro room with the inline legend)
level_2 149Fh "2-АЯ КОМНАТА…ДОВОЛЬНО-ТАКИ ТРУДНАЯ"
level_3 1C41h "3-Я КОМНАТА…СЛОЖНАЯ"
level_4 23E3h "ВЫХОД ИЗ ДОМА…С ЭЛЕМЕНТАМИ ФАНТАСТИКИ"
level_5 2B85h "ЗДЕСЬ ВСЕ - ОБМАН"
level_6 3327h "КОПИ ЦАРЯ СОЛОМОНА"
level_7 3AC9h "ЭТО ПОСЛЕДНЯЯ КОМНАТА, ЗА НЕЙ ИДЕТ ПЕРВАЯ…"

draw_level (at 0483h) streams the current level's bytes to the same destination the splash uses; level_ptr (RAM slot at 009Fh) advances one whole level each call, and handle_esc resets it back to level_1 every seven keypresses so the game cycles.

Because levels are video-memory dumps, any Cyrillic text the player sees on a level ("ВОЗЬМИ КЛЮЧИ", "УБИЙЦА ВРЕМЕНИ", "ПТИЧКА", "ЧЕРЕП", "ВЫХОД", etc.) is literally embedded KOI-7 N2 bytes inside the level blob — no string table, no loader. You can see each of those strings in the rendered level_*.txt files at the exact column and row the game draws them.

Reference material

  • Radio-86RK programmer's reference. RK86.md — memory map, peripherals, keyboard matrix, monitor jump-table, character set (KOI-7 N2), control codes, tape format, idioms.
  • Mikrosha (Микроша) reference. MIKROSHA.md — Mikrosha's different peripheral map (КР580ВИ53 timer at D800h, etc.), the key to understanding this binary's hardware accesses.
  • RK-86 Monitor ROM source. RK86 ROM Monitor — the 2 KB BIOS this game calls through (online).
  • Online RK-86 emulator. rk86.ru — full implementation of the hardware in JavaScript, including tape I/O, video, keyboard, and loadable-on-URL support.
  • The Riga phone number in the binary's signature ("т. 282-6-5-6") hints at the author's contact in 1989 — long since outdated, preserved only as provenance.

Further reading

CLAUDE.md contains the full reverse-engineering notes: the code/data region map, every named subroutine and RAM variable with its initial value and role, the Mikrosha-specific I/O, the putc-hook trampoline, the KOI-7 N2 Cyrillic encoding, and the conventions used throughout aliaz1.asm.

About

Восстановленная игра Алмаз (ALIAZ1) для Радио-86РК

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors