アルゴリズムの密度:16バイトのx86をシェルピンスキーの交響曲へと変える
デモシーンの世界において、究極の技術的挑戦とは、無限のリソースを使って何を作れるかではなく、極限の制約の中で何を達成できるかであることが多い。2026年5月のOutline Demopartyで公開された「wake up! 16b」という最近の作品は、アルゴリズムの密度のマスタークラスとして機能している。
わずか16バイトのx86リアルモードDOSアセンブリで、作者はコンピュータのビデオメモリを計算用のスクラッチパッドとして使用し、無限のシェルピンスキー・フラクタルを計算すると同時に、その幾何学的データをPCスピーカー用の生オーディオ信号として解釈するシステムを構築している。これは単なる視覚的なトリックではなく、セル・オートマトン、バイナリ演算、そしてハードウェアの活用が深く交差する場所である。
16バイト・エンジン
その複雑さを理解するためには、まずコード自体を見る必要がある:
int 10h ; 2 bytes
mov bh, 0xb8 ; 2 bytes
mov ds, bx ; 2 bytes
L:
lodsb ; 1 byte
sub si, byte 57 ; 3 bytes
xor [si], al ; 2 bytes
out 61h, al ; 2 bytes
jmp short L ; 2 bytes
キャンバス:虚無への準備
このルーチンは int 10h で始まり、ビデオモード0(40x25のテキストグリッド)を初期化する。重要なことに、BIOSは画面を絶対的なゼロにクリアすることはない。代わりに、メモリを均一なパターンで埋める:ASCIIスペース文字(0x20)とライトグレーのカラー属性(0x07)である。
この均一性は極めて重要である。アルゴリズムが次の状態を計算するために既存のメモリを読み取ることに依存しているため、RAM内のランダムなノイズは、出現しつつあるパターンを粉砕してしまうだろう。BIOSによる予測可能な初期化は、セル・オートマトンが出現するために必要な安定した基盤を提供する。
フラクタルの数学
もしループが xor の代わりに add 命令を使用していたら、それは累積的な接頭辞和(prefix sum)を作成することになる。数千回の反復を経て、メモリ内の値は二項係数シーケンスに従うだろう。しかし、xor を使用することで、作者は算術キャリーを破棄し、ビットプレーンを分離している。
この変換は、ロジックをスティーブン・ウルフラムの初等セル・オートマトンの Rule 60 に直接マッピングする。具体的には、操作 Cell(p)[k] = Cell(p-1)[k] XOR Cell(p)[k-1] が、シェルピンスキー・フラクタルの特徴的な自己相似的な三角形を生成する。開始値が 0x20(バイナリ 00100000)であるため、計算は主に特定のビットを反転させ、1と0の幾何学的な進行を作り出す。
幾何学を音へと変換する
この作品の最もエレガントな側面の一つは、out 61h, al という命令である。ポート 61h は、内蔵PCスピーカーのインターフェースである。このポートのビット1は、スピーカーコーンを直接制御する:1 は押し出し、0 は引き戻す。
XORルーチンがこれらのビットを分離・反転させるため、シェルピンスキーの三角形の幾何学は、スピーカーコーンに対する文字通りの命令セットとなる。
- 高周波波形: フラクタルが交互のビット行を生成するときに発生する。
- リズムの休止: 三角形のより大きな「空」の領域において、スピーカーコーンが静止しているときに発生する。
本質的に、CPUの実行速度がサンプルレートを定義し、数学的なフラクタルを首尾一貫した矩形波のオーディオトラックへと変えるのである。
空間的なせん断とオクターブのシフト
コードは単にメモリ内を順に進むだけではない。sub si, byte 57 を使用している。lodsb によるインクリメントと組み合わせると、純粋な移動量は反復ごとに -56バイト となる。
視覚的インパクト
80バイト幅のテキストグリッドにおいて、-56バイトのシフトは、空間的には前方へ24バイト移動することに相当する。各文字が2バイトを占めるため、これは12列のシフトをもたらす。結果として得られる数学的計算により、ループは列の4分の1のみを訪問し、フラクタルを対角線上にせん断して、画面を上昇していく10本の均等に間隔を置いた垂直の柱へと変える。
音響的インパクト
16バイトのステップであればメモリのスイープを4,096回の反復で完了させるが、56バイトのステップでは、開始点に戻るまでに 8,192回の反復 を必要とする。これによりマクロサイクルの長さが倍増し、オーディオの基本周波数が半分になり、音調が正確に1オクターブ下がり、より深く、共鳴的な音を作り出す。
ハードウェアの感度と「指紋」
ルーチンがRAMの現在の状態に対して読み取りとXORを行うため、このルーチンは環境に対して非常に敏感である。異なるVGA BIOSの実装やエミュレータ(DOSBox や PCem など)は、メモリ内にわずかに異なるアーティファクトを残す可能性がある。
その結果、視覚的な文字と音の音色は、マシンによって異なる可能性がある。これはバグではなく、極限のサイズコーディングの機能である。この作品はハードウェアの予測不可能性を受け入れ、数学的な公式を、実行されるすべてのマシンにおけるユニークなオーディオビジュアル・フィンガープリントへと変えるのである。
"これらすべての混合データバイトをシステムポート
61hに直接送信することは... システムを中断させない。標準的なDOS環境や現代のエミュレータにおいて、これらの追加のビットをポートに送り込むことは、実質的に無害である。"
この偶然により、視覚的な文字データがシステムクラッシュを引き起こすことなくオーディオ信号として二重に機能し、すべての単一のバイトが複数の目的を果たす効率のループを完成させている。