Ko-Window プログラマーズマニュアル 「CRTC パラメータの設定方法」 ●画面モードの変更 画面モードの管理、および CRTC に設定するパラメータは、すべてサーバーが管理 しています。 よく、自分で CRTC パラメータを設定するプログラムを作ったが Ko の上ではうま く使えないのはなぜか、との質問をもらうことがありますが、サーバーが管理してい るのに対して無断で書き換えようとする限りうまく行くことはありません。書き換え たい場合はパラメータ設定方法の正しいインターフェースが用意してあるので、それ を使用して下さい。 サーバーではパラメータ設定のためのテーブルが 8個あります。デフォルトでは以 下の 8種類が定義されており、何もしなければモード3で起動します。 0 256x256(31KHz) 1 384x256(31KHz) 2 512x512(31KHz) 3 768x512(31KHz) 4 704x424(24KHz) 5 1024x424(24KHz) 6 1024x848(24KHz) 7 800x526(31KHz) これらスクリーンモードの変更は、サーバー起動時の -s オプション、もしくは scrmode.win を使用して下さい。 ●画面モードの設定と CRTC パラメータの定義方法 サーバーの CRTC パラメータを設定/参照するには、WindowGetScreenTable() を使 用します。この関数に、参照するスクリーンモードの番号を与えると、テーブルの設 定内容のポインタを返します。 これは unsigned short の配列として定義されていますが、詳しい内容は以下のよ うな構造体で表すことができます。 typedef struct { unsigned short Xsize,Ysize,R00,R01,R02,R03,R04,R05,R06,R07,R08,R20; unsigned char HRL,BG,Htotal,Hdisp,Vdisp,SPres; unsigned short Reserved00; } ScreenModeTbl; +$00 DC.W Xsize 表示画面の大きさ +$02 DC.W Ysize +$04 DC.W R00 水平トータル +$06 DC.W R01 水平同期終了位置 +$08 DC.W R02 水平表示開始位置 +$0A DC.W R03 水平表示終了位置 +$0C DC.W R04 垂直トータル +$0E DC.W R05 垂直同期終了位置 +$10 DC.W R06 垂直表示開始位置 +$12 DC.W R07 垂直表示終了位置 +$14 DC.W R08 外部同期水平アジャスト +$16 DC.W R20 VRAM構成(下位8ビットのみ有効) +$18 DC.B HRL ドットクロック(0:HRL=0 / 1:HRL=1) +$19 DC.B BG BG使用可能枚数(0:BG使用不可) +$1A DC.B Htotal スプライト水平トータル(0:スプライト使用不可) +$1B DC.B Hdisp スプライト水平表示開始位置 +$1C DC.B Vdisp スプライト垂直表示開始位置 +$1D DC.B SPres スプライト解像度 +$1E DC.W Rsv00 予約 この内容を書き換えることによって、直接そのスクリーンモードの設定値を変更す ることができます。 この値を変更するコマンドとしては、kocrtc.win というものがあります。 --- 1995/11/16 小笠原博之 oga@dgw.yz.yamagata-u.ac.jp DenDenNET: DEN0006 COR.