2011-09-23 2 views
0

Windows 7에서 Allegro 4.2.4 팔레트 모드 (256 색)를 실행하는 데 문제가 있습니다. 탐색기를 죽이는 인터넷 솔루션에서 발견되었지만 실제로 작동하지만 어리석은 일입니다. 최종 사용자가 게임을 할 때 탐색기를 죽일 것으로 예상합니다.Allegro 4.2.4 in Windows7 손상 팔레트

그런 다음 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과 같은 문제없이 팔레트 프로그래밍 (팔레트가 필요한 게임을하고 있습니다)을 제공 할 라이브러리는 무엇입니까?

내가 알 수있는 또 하나의 해결책 - 나는 DOS 응용 프로그램으로 Allegro 4.2.4 응용 프로그램을 컴파일하고 DosBox에서 실행할 수 있습니다. 슬프게도,하지만 그게 지금 생각할 수있는 전부입니다 ...

미리 감사드립니다.

답변

1

먼저, 버전 4.2.4가 없습니다. 4.4.2를 의미한다고 가정합니다.

진정한 팔레트는 죽어 가고 있습니다. 최신 운영 체제에서는 8 비트 색상 심도 설정이 지원되지 않습니다.

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

그것은 당신에게 창 모드를 제공합니다 및 Windows 그 알레그로 4.4 이벤트에서 가장 호환 팔레트 지원 : 알레그로 4.4에 관해서는, 당신은이 작업을 수행 할 수 있습니다. 당신이 정말로 전체 화면 모드를 사용해야하는 경우, 당신은이 패치를 시도 할 수 :

그것은 동안 게임에 손상된 팔레트에 문제를 해결합니다. 귀하가 설명하는 문제에 도움이 될 수 있습니다.

아니면 화면 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 시리즈와 소스가 호환되지 않습니다.)

+0

내 실수는 Allegro입니다. 4.2.3 create_bitmap_ex로 8bpp로 트릭을 만들어야하지만, 전체 화면 검정 – PiotrK

+0

이 경우'select_palette'를 사용해야 할 수도 있습니다. – Matthew