WonderWitch:おまけ
独自調査した情報をいくつか。
チャンネル 2 ボイスモードについて
どうやら BIOS に入れるのを忘れたようなのだが、
(00/08/27 の時点では)ボイスモードを使うことができない。
ボイスのマスターボリュームが 0 になっているらしい。
そこで直接 I/O ポートを叩くことにする。LSI C-86
なら machine.h
をインクルードして、
サウンド初期化後に outp8(0x94, vol);
を実行すればいい。vol は 0〜15。
ところが H-BLANK 割り込みを毎ライン発生して
sound_set_volume()
を実行すると、それだけで CPU
負荷が 100% を越えてしまう。BIOS_INLINE
を定義してもギリギリ。
そこで sound_set_volume(1, n);
とする代わりに、
outp8(0x89, n);
とすると処理が大幅に軽くなる。
いろいろ
- H-BLANK は 12,000Hz。ただしキー入力割り込みの影響か、
毎 H-BLANK で割り込みをかけても、8 V-BLANK(= 1272 H-BLANK)に 1
回かかりそこなうようだ。
- 1 V-BLANK = 159 H-BLANK ≒ 75.5Hz。
font_set_colordata()
は、35,000 chr/sec
くらいの定義が限度。
I/O マップ
使わないに越したことはないのだが...。
- 89h
チャンネル 2 ボリューム。sound_set_volume()
で設定するものと同じ。通常モードで下位 4 ビット、
ボイスモードで 8 ビット(符号無し)が有効。
- 94h
チャンネル 2 ボイスマスターボリューム。下位 4 ビットが有効。