0

我在 Windows 7 中运行调色板模式(256 色)的 Allegro 4.2.4 有问题。我在 Internet 上找到了杀死资源管理器的解决方案,它确实有效,但是期望最终用户在尝试玩游戏时会杀死资源管理器是荒谬的.

然后我找到了用破解版本替换 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 上没有这样的问题?

我知道另一种解决方案 - 我可以将 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);

当然,您必须在更改调色板后再次将位图blit 到屏幕上,因此如果您需要非常快速的实时效果,它可能无法正常工作。

或者,Allegro 5.1(即未发布的 SVN 版本)有一个通过着色器工作的调色板插件。它可能没有记录并且可能会改变。(请注意,5 系列与 4 系列的源不兼容。)

于 2011-09-23T08:06:43.997 回答