SimK98/npdisp-w31
Folders and files
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Repository files navigation
■■■ Neko Project II 専用ディスプレイドライバ for Windows 3.1 ■■■ Neko Project II上のWindows3.1において高解像度表示を実現します。 ゲストからメモリアドレスだけを投げてnp2本体で殆どの処理を完結させるという手法が 16-bit プロテクトモード下で通用するのかを技術検証するために作りました。 色々実装が進んで、実用レベルになってきた一方で描画バグもたくさん残っています。 基本的には技術的に遊ぶためのもので、商用レベルの安定性を求めないでください。 Win9xでも使用できますが、描画バグ多めでDirectDraw等が使えないので推奨しません。 ●動作環境 【ゲスト】 Windows 3.1 (Windows 95, 98) 【ホスト】 Neko Project 21/W ver0.86 rev101β11以降 ●更新方法(Windows3.1) 以下のインストールの手順を実行しても構いませんが、毎回Windowsのディスクを要求 されてかなり面倒なのでドライバだけ差し替える方法をおすすめします。 更新するにはNPDISP.DRVをWINDOWS\SYSTEMの中へ上書きコピーしてください。 ●インストール(Windows3.1) フロッピーディスクイメージの中にOEMSETUP.INFがあります。 フロッピーディスクイメージは12dotフォント版と16dotフォント版に分かれています。 DOSからWINDOWSディレクトリに入り、SETUPコマンドを実行して下さい。 GUIからもできますが、ファイル使用中などでDOSからの実行を求められる場合が多いです。 GUIの場合は、Windowsセットアップ→設定→基本ハードウェアの変更→ディスプレイ→ その他のdisplayを選択し、OEMSETUP.INFがある場所を入力して下さい。 NPDISP.DRVがコピーされ、Windows再起動後に高解像度が有効になります。 OEMSETUP.INFが読み込めない場合は、WINDOWS\SYSTEMの中にOEM*.INFファイルが大量に 溜まってメモリの限界に来ている場合があります。いらないOEM*.INFファイルを削除して 下さい。基本的にはセットアップ時にしか必要ないものですが、心配であればどこか別の 場所へ退避させて下さい。 強引なインストール方法として、SYSTEM.INIを直接書き換える方法もあります。 NPDISP.DRVをWINDOWS\SYSTEMディレクトリへコピーした後、 WINDOWS\SYSTEM.INIの[boot]セクションにあるdisplay.drvを display.drv=npdisp.drv のように書き換えてください。 ●アンインストール(Windows3.1) Windowsセットアップ→設定→基本ハードウェアの変更→ディスプレイ→640x400 16色 を選択して、デフォルトのディスプレイドライバへ戻してください。 SYSTEM.INIでdisplay.drv=EGCN4.DRVにするのもOKです。 GUIで起動できなくなったときはDOSから変更してください。 (WINDOWSディレクトリ内でSETUPを実行) ●解像度等を任意に変更する方法(Windows3.1) SYSTEM.INIにある[npdisp.drv]セクション内を書き換えると任意の解像度や色数に 変更できます。以下のような形で、幅、高さ、ビット深度が書かれています。 この場合は幅1024px、高さ720px、ビット深度4bit(16色)になります。 [npdisp.drv] width=1024 height=720 bpp=4 値の範囲は以下の通りです。 Width: 160~4096 height: 100~4096 bpp: 1, 4, 8, 15, 16, 24, 32 画面の縦横比は自由ですが、極端な値にすると画面が出なくなる場合があります。 ●インストール(Windows9x) ディスクイメージnpdisp_w95.hdmを使用して、ハードウェアの追加と削除から 手動でインストールしてください。 ●解像度等を任意に変更する方法(Windows9x) セットアップ用infに解像度を追加するとその解像度を使用できるようになります。 例えば[Driver.AddReg]セクションに、 HKR,"MODES\16\3840,2160" を足すと16bitカラー3840x2160の解像度に設定できるようになります。 いくつかの解像度はコメントとして用意しています。 ●制限事項 ・グラフィック表示が変な場合があります ・頻繁に描画するプログラムを動かすと割り込みが止まって処理落ちします ●ソースコード 管理が大変なのでGitHubへ公開しています。 https://github.com/SimK98/npdisp-w31 基本的にNeko Project II本体へ処理を投げるだけの仕様です。 実際にはNeko Project II本体のwab\npdisp.cppがメインのソースです。 DDKサンプルにあるアイコン・カーソル・ビットマップは権利的に怪しいと思ったので ソースに含まれるものは自前で描き直しています。そのため本物とは若干違います。 本物を使いたい場合は、12_RESや16_RESの中にあるアイコン・カーソル・ビットマップ をDDKサンプルのものに置き換えてください。 (DDKサンプルそのままなので何も考えずico, cur, bmpを持ってくるだけでOKです) altディレクトリ内のものはDDKサンプルのアイコン・カーソル・ビットマップを自前の ものへ置き換えたバージョンです。 ●免責事項 本ソフトウェアは技術的な検証を主目的とした個人の制作物です。 本ソフトウェアを使用したことによって損害が生じた場合も作者は責任を負いません。 ●更新履歴 2026/03/26 初版 2026/03/29 対応関数を増やした 2026/04/01 256色パレットに対応した 2026/04/04 GetCharWidth対応、EnumObjのバグ修正 2026/04/06 一部エクスポート関数を高速実行に対応した 2026/04/12 OEMSETUP.INFファイルの記述ミスを修正した 2026/04/25 Win9xにある程度対応させた ------------------------ Neko Project 21/W 開発者 SimK