MI-ZaurusでVRAMに直接アクセスする方法

注意

このページの内容は、私が豆腐の角に頭をぶつけたときに閃いたものであり、 内容について一切保証しません。ザウルス本体が壊れたり、 データ内容が消えたりする可能性も少なからずあります。 また、仮に正しく動いたとしても、この手法はザウルス間の互換性を大きく低下させます。 そのリスクを十分に勘案した上で実験してみてください。

使用する関数

int EnableAccessVRAM(void);
VRAM直接アクセスを有効にします。 返り値の詳細は不明です。
short *GetVramTop(void);
VRAMの先頭アドレスを返します。 EnableAccessVRAM()を呼び出した後に呼び出す必要があります。 このアドレスはDisableAccessVRAM()を呼び出すまで有効です。
int DisableAccessVRAM(void);
VRAM直接アクセスを無効にします。 返り値の詳細は不明です。 VRAM直接アクセスを有効にしたままAPIによる描画が行われると 動作が不安定になるので、アクセスが終了したら速やかに無効にするべきです。

VRAMの構造

VRAMはワード単位でデータが入っています。 とすると、アクセスしたいピクセルのアドレスは以下の式で求められます。 注:QVGAモノクロ機種は1ワードに4ピクセル入っています。詳細は後述。

データワードの詳細

カラー機種

1ピクセル1ワードです。
ビット1514131211109876543210
色要素 Red Green Blue

モノクロ機種

1ワードに4ピクセル分のデータが入っています。 構成は以下の通りです。
ビット1514131211109876543210
X座標オフセット+0 +1 +2 +3
1ピクセルは4ビットで、濃度を表します。(0:白〜15:黒)
このページにリンクを張るのは自由です。
argrath@ub32.org