0

Windows 7 でパレット モード (256 色) を実行している Allegro 4.2.4 に問題があります。エクスプローラーを強制終了するインターネット ソリューションを見つけましたが、実際に機能していますが、エンド ユーザーがゲームをプレイしようとしたときにエクスプローラーを強制終了すると予想するのはばかげています。 .

次に、DDraw.dllをハッキングされたバージョンに置き換えるソリューションを見つけましたが、どちらも機能しません.DDHackは、アプリケーションの起動後に画面がまったく表示されないだけです.

次に、レジストリハックを追加する解決策を見つけました:

Windows Registry Editor Version 5.00
;This file has been created with DirectDraw Compatibility Tool (http://crappybitter.livejournal.com/tag/ddc_tool)

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DirectDraw\Compatibility\MyApp]
"Name"="MyApp.exe"
"ID"=dword:4E7B8A88
"Flags"=hex:00,08,00,00

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\DirectDraw\Compatibility\MyApp]
"Name"="MyApp.exe"
"ID"=dword:4E7B8A88
"Flags"=hex:00,08,00,00

しかし悲しいことに、それも機能しません。パレットはすべての虹色でちらつき続けます。

アプリケーション全体を別のプログラミング ライブラリに移植する以外に解決策はありますか? パレットに触れずに Vista/W7 で DDraw の問題を修正することは可能ですか? そうでない場合、Vista/W7 でこのような問題を起こさずにパレット プログラミング (パレットを必要とするゲームをやっています) を提供してくれるライブラリはどれですか?

もう 1 つの解決策を知っています。Allegro 4.2.4 アプリケーションを DOS アプリケーションとしてコンパイルし、DosBox で実行できます。残念だけど今はそれしか思い浮かばない…

他の解決策を前もってありがとう!

4

1 に答える 1

1

まず、そのようなバージョン 4.2.4 はありません。4.4.2 のことだと思います。

真のパレットは死にかけています。8 ビットの色深度の設定は、最近のオペレーティング システムではあまりサポートされていません。Allegro 4.4 に関しては、次のようにすることができます。

set_color_depth(8);
set_gfx_mode(GFX_GDI, w, h, 0, 0);

ウィンドウ モードと、Allegro 4.4 が提供する Windows での最も互換性のあるパレット サポートが提供されます。フル スクリーン モードが必要な場合は、次のパッチを試してみてください。

ゲーム中にパレットが破損する問題を修正します。あなたが説明した問題に役立つかもしれません。

または、画面に 32 ビットの色深度を使用して、スプライトとバッファーに 8 ビットのビットマップを使用することもできます。

set_color_depth(desktop_color_depth());
set_gfx_mode(GFX_AUTODETECT, w, h, 0, 0);
BITMAP *buffer = create_bitmap_ex(8, w, h);

もちろん、パレットを変更した後、ビットマップを画面に再度ブリットする必要があるため、非常に高速なリアルタイム エフェクトが必要な場合は機能しない可能性があります。

あるいは、Allegro 5.1 (つまり、リリースされていない SVN バージョン) には、シェーダーを介して機能するパレット アドオンがあります。おそらく文書化されておらず、変更される可能性があります。(5 シリーズは 4 シリーズとソース互換性がないことに注意してください。)

于 2011-09-23T08:06:43.997 に答える