Keys: ARROWS · Z = A · X = B · ENTER = START
Keys: ARROWS · Z = A · X = B · ENTER = START
16-bit, 7.16 MegaKestrels. Registers R0–R7, PC, SP, flags Z C N V. Every instruction is 2 words. MUL costs extra because multiplying is hard.
LDI MOV ADD SUB MUL AND OR XOR SHL SHR CMP JMP JZ JNZ JLT CALL RET PUSH POP LDM STM WAIT_VBL SPR PLAY HALT
256×224. Plasma Layer (procedural sines), tile layer (32×28 at $E000), text layer ($F000), 32 sprites (defs at $FE00: shape<<8|colour), per-scanline wobble, palette cycling, mosaic, plus a built-in HUD counter because the engineers wanted to go home early.
8 channels, 8-bit @ 22 kHz, per-channel pitch ($FF10+ch, 256 = 1.0×), Grit bitcrusher. Samples: 0 KICK · 1 SNARE · 2 HAT · 3 AAH · 4 LASER · 5 BASS · 6 SHOUT · 7 COIN.
PLASMA FF00 · PSPEED FF01 · CYC_S FF02 · CYC_L FF03 · CYC_SP FF04 · WOB_AMP FF05 · WOB_FRQ FF06 · BG FF07 · PAD FF08 · FRAME FF09 · MOSAIC FF0A · RAND FF0B · SCROLLX FF0C · SCROLLY FF0D · HUD FF0E · HUD_ON FF0F · PITCH FF10-17 · MOSAIC_Y FF18 · TSCROLLX FF19 · TSCROLLY FF1A · PSCROLLX FF1B · PSCROLLY FF1C · VCOUNT FF1D · MOSAIC_EN FF1E (1 plasma 2 tiles 4 text 8 sprites, 0=all) · BOOTF FF1F
Cycle-based: 262 scanlines/frame, each visible line is rendered from live VRAM/IO after the CPU's per-line cycle budget. WAIT_VBL stalls until line 224. The BIOS is real K-16 code at $D000 that draws the boot screen, then JMPs to $0000.
.text x,y,colour,"STR" · .fillmap pattern,colour · .tile x,y,pattern,colour · .word addr,value · .equ NAME,value
8 families × 8 shades: Ember, Brine, Moss, Dusk, Coral, Static, Gold, Void. Index = family×8 + shade.