2017-11-20 14 views
1

私はDosBoxを使用している大学のコースのための小さなゲームを作っています。ゲームには小さなチャットウィンドウがありますが、いくつかの図形もあります。シェイプを描画するにはグラフィックスモードにする必要がありますが、グラフィックスモードではフォントが大きくて醜いように見えます。 2つのモードを混在させる方法はありますか?画面の半分がグラフィカルで、もう1つがテキストの場合がありますか?そうでない場合は、グラフィックスモードのフォントを小さくするか、文字をどのように見せたいかを調整できますか?DosBox for x86のテキストモードとグラフィックモード

+3

VGAは私が覚えている限り、2つのビデオモード(コモドアとアタリは8bと16b IIRCの両方)から画面を構成することはできません。しかし、640x480の16色モード( 'mov ax、12h' int 10h')を使うとより細かい解像度を得ることができます。何かを描画するために大きな苦痛に耐えられるように準備する(銀行業務やビットプレーンで作業する)か、int 10hの "draw pixel"を使う。 (実際のVGAを十分に曲げることができても、それはエミュレータの下ではうまくいくとは思えません) – Ped7g

+0

フォントの小さい= *「コンピュータはいいえ」*。少なくとももう一度 'int 10h'を使うつもりです。もちろん、独自のフォントをピクセルデータとして設計し、独自の描画フォントルーチンを作成することもできます(私は自分で行い、IIRCで約2〜3日かかりました。グラフ用紙上にフォントを描画しました(サイズは約5x8ピクセルです)。バイト値を計算し、紙からコンピュータに書き出すことができました。また、可変グリフの幅を使用することもできました。まだテキストのための吸うの320x200種類。しかし、256色対16 .... – Ped7g

+2

@ Ped7g:次にモード '10h'を使用しないでください。 Dosboxは多数のSVGAアダプタをエミュレートします。実際には、ある程度のラスタートリックもサポートしていますが、プレーンなVGAルートにしたいのですが、垂直のテキスト/グラフィックモードの分割を取り除くことができるかどうかは多少疑わしいです。そして、私はそれがこの質問の範囲外にあると思うことを知るための興味深い小さなプロジェクトかもしれませんが。 – doynax

答えて

2

あなたはあまりにも長い間、構成ファイル内のマシンタイプを設定すると、640×480 256色を試みることができる:あり

mov ax, 4f02h 
mov bx, 101h 
int 10h 

:ビデオモードを設定するための

machine=svga_s3 

使用はint 10hを

その他のビデオモードもたくさんあります。

私が通常使っている参考資料は次のとおりです。 http://www.wagemakers.be/english/doc/vga

また、グラフィックモードの場合は、独自のキャラクタセットを作成することもできます。 ビットマップ文字を変数として定義し、a000:0000で始まるピクセルバッファに書き込みます。

0〜0ffhまでのバイト値は、vgaカラーパレットの256色のうちの1つにマップされます(デフォルトのパレットをGoogleに渡すことができます)。したがって、値4をa000:0000に書き込むと、画面の左上隅のピクセルは赤に設定されます。

+2

640x480 @ 8bppは300KiBのメモリで、VGA機能の外にあるだけでなく、0a0000hの標準の128KiBの穴に完全にマッピングできないことに注意してください。ビット14がビデオモード番号にセットされていない限り、VRAMは前記標準穴に入れられる。 [Int 10h/AX = 4f05](http://www.ctyme.com/intr/rb-0278.htm)を使用してバンクを切り替えることができます。 –

+0

ええ、そうです。私が間違えました。私は64,000バイトの長さのピクセルバッファについて、その部分を編集しました。 –

関連する問題