Pirate Localization: How It Was
A firsthand account of unauthorized game localization in the former Soviet Union — from ZX Spectrum hacking to PlayStation 2 texture reverse-engineering, and everything in between.
As it happened, I was there at the very beginning of so-called "pirate localization" of games in the former Soviet Union. Many people criticize it, many are used to it and take the phenomenon for granted. I'll try to tell you how it all started and briefly share my considerable experience.
So, rain was falling outside the window, and the calendar was counting off the year 1991...
The next few years can be skimmed over without diving into details, but they can't go completely unmentioned. ZX Spectrum, Z80 assembler, several boxes of cassettes with games adapted to diskettes bearing the proud label "Disked by Microspace," the demo scene, nights spent in assembler printouts of game internals and demo loaders, development of various system programs. Communication with other groups through preloaders. Where are you now?
The First PC Project
Finally, the Spectrum was set aside, with gratitude and a touch of regret. The first project that came my way on PC was Broken Sword: The Shadow of the Templars. After a week of poking around in the exe file, I managed to understand how the game was structured. And the two of us — my friend and I — got to work on the translation. The translation was done with love; the game's scenes were adapted to the Russian language, and I hope the result pleased its first users.
So Why Do Pirate Translations Come Out So Sloppy?
The whole thing was an assembly line. Translation deadlines were limited to literally a few days.
The typical workflow: a programmer receives a game to work on, extracts the text, and hands it off for translation. A crowd of translators, without even seeing the game, translate the texts and return them in a day, two at most. After that, the game is reassembled, and if you're lucky and everything launches on the first try, the most egregious blunders get fixed. In the early days, we'd be rolling on the floor seeing translation masterpieces. "Message Log" in Diablo became "Бревно сообщений" (literally "Log of Wood for Messages"), "Star Transmission" became "Звезданутая передача" (roughly "Whacked-Out Transmission") in some racing game's car settings, and many more. I won't even get into how male and female dialogue lines were constantly mixed up. As a result, the moment the game starts more or less working, the still-warm "body" gets ripped from your hands and sent to production.
The Late 1990s Workflow
In the late '90s, the internet was still an outrageously expensive novelty, and everything was shipped on discs. In the morning, the courier — who doubled as the tester — would meet the train and pick up a stack of discs awaiting localization. In the evening, usually on the 9 o'clock train, everything that was ready would be sent to the publisher for production. So we usually didn't get home until well past midnight.
The Knowledge Base
Working on games built an enormous knowledge base — you had to figure out custom compressors, encryption systems, and the resource structure of game archives. It got to the point of a "Matrix" effect — you'd look and think, here's a compressed image, here the text is clearly encrypted, and here's clearly some junk not worth bothering with. And yet all of that was nothing compared to when we took on PlayStation (PSX) localization.
PlayStation (PSX): Where Developers Really Went Wild
This is where developers went absolutely nuts. They tried to squeeze every last drop from the little hardware box, so the game internals were made "horrifically" from an outside localizer's perspective. Textures were jumbled together into a single graphics page that gets block-loaded into video memory. Text blocks were repeated for every level. All data was precompiled to static addresses, so any thought of exceeding the original text size was out of the question. (Many of you probably recognize abbreviations like "Exit" becoming "Вых." and "Load" becoming "Загр" and other truncations.)
Things were far worse with fonts. Letters were scattered across the entire texture page, so the artist had to solve a puzzle to draw Russian letters over them. Often there simply weren't enough character slots, and you had to sacrifice rarely used letters of the Russian alphabet. I still remember the translator's hysterics: "Someone, please think of a synonym for 'USA' that's three letters long but doesn't contain the letter 'Ш'!"
Japanese Developer Games: The Ultimate Nightmare
But the absolute worst were games by Japanese developers. Localizing these projects became a genuine migraine. The game might be in English, but inside you could feel an alien logic, foreign to our sensibilities. Sometimes it seemed like the Japanese got paid extra for every "perversion" they built into a project. How else do you explain embedding three different custom compressors into a single game, where often the unpacked file takes up less space than the packed one? Or creating multiple text encodings. We even had a saying: "May you get a game — and may it be as Japanese as possible."
Deciphering the text encoding in these games was harder than "The Dancing Men" in Sherlock Holmes. For example, how about a text encoding where code 0x95 means it's the 9th letter horizontally and the 5th vertically in the font texture? How do the Japanese generate fonts? It's fascinating — all the text is run through a program, and only the letters that appear get placed into the font. That's actually the good scenario. It's worse when you have subtitles — they ran a couple of words through, and the texture only has 15–20 letters. How do you localize that? But we managed. Slowly and painfully.
PlayStation 2: New Challenges
Just when it seemed like nothing could faze us after PSX, the PlayStation 2 era arrived. On top of all the previous delights, new texture formats appeared — the so-called "swizzle" — where pixels are twisted into something utterly indigestible, and to convert it all into a normal linear layout you need a special algorithm. But for the console, this is the native video memory format, and everything works perfectly and fast with it.
We struggled with it for ages... We tried assembling it pixel by pixel in Photoshop to find the logic, tried brute force — nothing worked. One day we managed to find "leaked" SDK documentation that described video memory addressing. And — miracle! — things started moving.
Other Platforms
Sega Dreamcast — another platform, unjustly forgotten by people. At the time of its release, it absolutely demolished every existing game in graphics quality. Unfortunately, less than a year later the PlayStation 2 displaced it, and the console was forgotten.
Xbox — essentially a regular PC in a fancy box. Nothing particularly special about it, but it lasted a year or two.
A few years later, we got to tinker with the Xbox 360. (Shh... I didn't say anything.)
For a while there was demand for PSP translations, but thanks to the growth of the internet, localization became an unprofitable endeavor because everything immediately spread across torrents.
Nintendo Game Boy, the grandfather of portable consoles, oddly enough held its position for quite a long time — and to this day people around the world are still playing on it.
The Decline of Pirate Localization
Time marches on. Major publishers entered the Russian market and began producing fairly high-quality translations at prices acceptable to consumers. With the growth of the internet, downloading a game with a good translation from an official publisher became very simple, and this marked the beginning of the end for pirate localization.
Epilogue
I personally left this industry several years ago and, in principle, have no regrets. Although the experience accumulated over those years may be interesting to others. So if there are people who want to know the details, I can try to write a series of articles on the topic of localization — examining the main problems and mistakes that developers make to this day.