문제

우리는 유지 오래된 비디오 게임 사용하는 전체 화면 256 컬러 그래픽 모드로 DirectDraw.문제입,일부 응용 프로그램에서 실행경로를 변경하려고 시스템 팔레트 게임이 실행되는 동안,결과 손상된 그래픽입니다.

우리는 할 수 있습니다(때로는)을 감지 이런 경우 처리하여 색상표를 메시지입니다.몇 업데이트 버전에 우리는 추가로깅(로그인 창 title/클래스/프로세스 이름)는 사용자를 식별하는 잘못된 응용 프로그램고 닫습니다.MSN Messenger 일반적인 원인이다.

문제를 악화됐을 때 우리는 것을 발견 윈도우 비스타(7)그것은"자체적으로".색상표를 매개 변수를 포인트로 CSRSS 고 데스크톱 창입니다.비스타에는 해결 방법이 종종 일이었을 열어 임의 폴더(컴퓨터,문서,etc.) 그것을 두고 하는 동안 열려 실행하는 게임이다.말도 안되는 소리하지만,일했다-대부분의 경우에 있습니다.Windows7,심지어 이를 해결했다.사용자가 찾는 정지는 일부 서비스(Windows 업데이트 인덱싱 서비스)또한 문제를 해결에 몇 가지 구성이 있습니다.

몇 시간 전에 나는 단지하려고 시작한 일이라는 것에서 희망을 찾는 솔루션입니다.내가 찾는 설정 GDI 팔레트(를 사용하여 만들/SelectPalette)하기 전에 설정 DirectDraw 팔레트를 사용하여(IDirectDrawPalette::SetEntries)복원하는 것입니의 팔레트 후 손상되었다(색상표를 처리기).SetSystemPaletteUse 및 호출 SetPalette 주면 도움이 몇 가지 더 있습니다.그러나,여전히 지각 깜박할 때 응용 프로그램을 훔쳐 팔레트,특히 눈에 띄는 동안 잃고 있습니다.

질문:은 거기를 얻을 수 있는 방법"진짜"독점 팔레트는 완전히 허용하지 않는 다른 응용 프로그램을 변경하 Windows 팔레트는 만큼 우리의 게임을 유지에 초점을 맞춥니까?

도움이 되었습니까?

해결책

누군가 실제로 여기에서 레지스트리 항목 수정을 찾았습니다.

http://answers.ea.com/t5/command-conquer-the-ultimate/common-problems-read-this-before-posting/mp/222052

해당 페이지에서 "스크램블 된 색상"을 찾으면 필요한 수정 사항이 있으면됩니다.


그러나 온라인 리소스가 도망 치기 때문에 다음은 다음과 같습니다.

프로그램의 "hkey_local_machine 소프트웨어 Microsoft DirectDraw Compatibility "아래에 새 키를 만드십시오.

호환성을 적용하는 프로그램이 32 비트 프로그램이고 64 비트 시스템 (수동으로 또는 64 비트 프로그램을 통해 적용)에있는 경우 "wow6432node를 추가하는 것을 잊지 마십시오. 이를 보상하기 위해 "소프트웨어"와 "DirectDraw"사이.

이 키에서 다음 값을 설정하십시오.

  • "플래그"(reg_binary) : [00,08,00,00
  • "이름"(reg_SW) : 프로그램의 파일 이름. 경로가없고 실행 파일 이름 만 있습니다.
  • "ID"(reg_binary) : 응용 프로그램의 DirectRAW ID.

필요한 DirectDraw ID를 얻으려면 프로그램을 실행 한 다음이 레지스트리 키를 확인하십시오.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DirectDraw\MostRecentApplication

다시 말하지만, 64 비트 시스템에 있고이 프로그램을 수행하는 프로그램이 32 비트 인 경우 "소프트웨어"후에 "wow6432node"를 추가하십시오.

이 키의 ID는 4 바이트입니다. 바이트가 ID 값에 넣도록 주문을 반전하십시오. 32dd83d5는 D5,83, DD, 32가됩니다.

다른 팁

무엇을 할 수 있는 간단한 해결 방법입니다.이 게임은 게임은 아마 아무도 경기를 현재 하드웨어는 이유는 이 속 작동:

  • Blit 모든 것에는 오프스크린 버퍼(메모리)
  • 변환하는 8 비트 버퍼 16 비트(32 비트)를 사용하여 현재의 팔레트 (그래서 또한 메모리에서 수행되)
  • 의 내용을 복사하 16 비트(또는 32 비트)버퍼 backbuffer 의 화면
  • 플립 screenbuffer.

이에 필요한 최소한의 변경 내용의 게임,그리고 제거됩니다 팔레트 문제를 완전히지만,당신의 게임을 사용할 수 있는 모든 그의 속임수를 팔레트

R

보기에 "응용 프로그램은 최대화 된 창과 입력 초점이없는 한 SetsyStempaletteUse를 호출해서는 안됩니다.". 아마도 다른 프로그램은 잘못 행동 일 것입니다. 이 설명은 Microsoft가 모든 프로그램이 협력하고이를 강요 할 방법을 제공하지 않기를 희망하는 것처럼 들립니다. Windows 3.1로 돌아 오는 것과 같습니다. :)

무작위 제안 : syspal_nostatic256 매개 변수로 setsystempaletteuse를 사용해 보셨습니까?

팔레트에 20 개의 Windows 예약 색상이 포함되어 있는지 확인할 수도 있습니다. 그렇다면 Windows 색상을 사용하는 다른 팔레트 프로그램은 내가 이해하는 것처럼 자체 렌더링하기 위해 팔레트를 변경할 필요가 없음을 의미합니다.

나는 DirectX를 전혀 모른다. 그러나 나는 당신의 렌더링 오프 스크린을하고 디스플레이 깊이로 변환하는 것을 제안하는 것이 좋습니다 ... 나는 당신이 당신을 위해 모든 것을 할 수 있다고 생각합니다 ...

당신이해야 할 일은 PC를 16 bit 제어판의 색상과 게임이 제대로옵니다. Original Command and Conquer 나를 위해 : d

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top