Happy New 2026 Like in 1992
A nostalgic deep-dive into creating an authentic retro New Year greeting for the ZX Spectrum computer in the style of early 1990s Soviet demoscene crack intros, complete with assembly code, borrowed game graphics, and period-appropriate techniques.

With each New Year, creating novel projects becomes increasingly difficult. Rather than attempting something groundbreaking, I opted for the opposite approach: creating an authentically retro New Year greeting for the ZX Spectrum computer in the style of early 1990s demoscene intros. This serves as an opportunity to discuss Soviet-era hacking traditions.
Traditions
The Cracking Scene
The cracking scene emerged alongside early home computers in the 1980s. Unlike the drug-related meaning, this term refers to software modification and distribution. Early enthusiasts distributed programs freely, but as commercialization occurred, conflicts arose between profit-seeking developers and those favoring free distribution.
Crack Intros
"Crackers" would add visual greetings called "crack intros" to modified software. These typically featured graphics and music (often borrowed from commercial games), scrolling text with author credits, and visual effects.
ZX Spectrum in the Soviet Union
The British ZX Spectrum gained popularity in Soviet territories because it could be recreated with locally available components. Official software was not available, so users relied on Polish pirated versions — often poorly modified. Local enthusiasts improved these, adapting games for disk systems like TR-DOS and Beta Interface.
Early Soviet Hackers
Initial modifiers included Vasilyev Anton, Kulikov Dmitriy, Andy Chernikov, Sergey Skorobogatov, and Pavel Nikitin. Later, more mysterious figures emerged: Max Iwamoto, KSA, *L*F*A*, Magic Soft, Softstar.
Evolution of Crack Intros (1990-2000s)
- 1990-1993: Simple single-screen presentations with attribute-based scrollers and basic color effects
- 1993-1995: Original graphics, music, and personal messages
- 1995-2000: Complex effects adapted from the Commodore Amiga
- 2000s onward: Declining originality, repetitive formatting
All history can be traced at zxart.ee by selecting relevant years.
The Demoscene Emerges
From crack intros grew the "demoscene" — independent creative computing. This evolved into birthday greetings ("gifts") and holiday greetings, with New Year becoming the primary celebration featuring dedicated competitions.
The Idea
I decided to create the most authentic retro New Year greeting possible — deliberately avoiding modern sophisticated effects. The design includes:
- Large title text
- Small text in the center
- A Christmas tree surrounded by popular game characters
- Color-flashing animations on letters and ornaments
- Three text scrollers (attribute-based and pixel-based)
All graphics and music were borrowed from existing games — staying true to early hacker traditions.
The Code
Written in authentic 1990s style: naive, non-optimal procedures without advanced tricks. The intro runs on standard ZX Spectrum 48K with sound coprocessor.
Development tools (modern convenience): Notepad++, SjAsmPlus cross-assembler, and UnrealSpeccy emulator. Despite using modern tools, the code itself employs period-appropriate techniques. Total: approximately 700 lines of assembly.
Color Flashing
ld a,(de) ;read attribute mask byte
or a ;check for 0
jr nz,$+7 ;skip if not 0
ld a,(hl) ;read screen attribute byte
dec a ;decrement
and c ;register C=7, preserve INK bits
or b ;register B=64, apply brightness bit
ld (hl),a ;return modified attributeThe effect cycles through the three least-significant bits while preserving brightness. Processing is split between frames (upper half one frame, lower half the next) to preserve CPU time.
Scrollers
Three scrollers use different techniques:
- Attribute scroller: 31 LDI commands shift bytes leftward
- Pixel scrollers: RL (HL) commands with separate RAM buffers
Graphics
Following hacker tradition, graphics were borrowed without original creation. Character sprites came from games, the Christmas tree was assembled from Dizzy game graphics (particularly palm trees from Part 2), and the star and floor stripe from various sources.

Multiple fonts (3-5 per original crack intro) were sourced from different games. The font collection is available at https://github.com/ZXSpectrumVault/zx-fonts (thousands extracted from games).

Graphics processing pipeline: GraphicsGale to BMP, then BMP2SCR (monochrome), then BASin editor for recoloring.

Color Flashing Effects
A classic effect present in most early crack intros. The implementation uses slow flashing (every four TV frames, at 1/12 second speed) allowing individual colors to be seen. The technique cycles the three least-significant bits of color codes while preserving other bits. Attributes are manually placed in the graphics editor after conversion.
Scrollers Detail
Three text scrollers are implemented:
Attribute Scroller: Large, block-based; executes 31 LDI commands to shift bytes leftward. New column bytes are pre-prepared with shadow effects created through bit-shifting.
Pixel Scrollers: Two versions (small and enlarged) using RL (HL) chains in RAM buffers rather than screen memory (to allow effect overlays). The enlarged scroller processes pixels twice.
Text content includes "COMING SOON" (traditionally announcing upcoming games, here applied to the new year) plus greetings to friends and tributes to Soviet crack-scene pioneers: Vasilyev, Kulikov, Chernikov, and others. Though morally questionable by modern standards, they historically provided Soviet Spectrum users access to otherwise unavailable software.
Falling Snow Effect
Randomly selected screen positions display bytes that shift pixel-by-pixel. An animation table creates sinusoidal left-right movement within single bytes. Quantity was experimentally determined to fit within frame time.
snow_anim:
db %00001000
db %00010000
db %00100000
db %01000000
db %10000000Color Flickering
Alternating background color codes in a checkerboard pattern across attribute scroller columns — an "almost free" effect resembling holiday lights, observed in early 1990s crack intros.
Music
Early crack intros borrowed music directly from Spectrum games. Later versions featured MOD/STM format conversions from Amiga/PC, manually adapted via Sound Tracker or ASC Sound Master. Original compositions emerged by the mid-1990s.
The selected melody comes from the Polish demo "Lyra II" — a cover of "Daydreaming" by Dusty Springfield (1990 album Reputation). This creates multiple tributes: to the demo, its creators, and the original artist.
The implementation uses the Sound Tracker player already available in source form. No custom interrupt handler is needed — the intro runs at a fixed 50 frames/second, so calling the player once per frame ensures stable playback:
halt
...
call music_playThe Loader
The BASIC loader is written in classic style with space-saving tricks: NOT PI instead of 0, VAL for string representations, 4e4 instead of 40000 (the traditional amateur program address).
The implementation workflow involves writing the loader in BASin, saving to TAP format, loading in the emulator, resaving to a disk image, extracting a Hobeta file via Spectrum Navigator in DosBox, and placing it in the final image with the trdtool utility.
An "intro to the intro" was added — bold-font title text generated via ROM font shift and OR operations, resembling early disk game versions.
Packing: the loader is uncompressed (fits easily in one sector: 134 of 256 bytes). The intro code is packed with Hrust 1.3 (a late 1990s tool — not fully authentic, but packers existed in the early 1990s, just less efficient).





Conclusion
In pursuing the elusive future, newest achievements, and latest versions, it is important to remember that simple things taught us to experience joy. They remain capable of doing so.
Happy New Year! The downloadable files (executable for ZX Spectrum in SCL format and source code) are available at http://shiru.untergrund.net/files/zx/ny2026.zip.