Worklog2007. 8. 22. 20:54

역시 새벽에 심심해서 뭐 할게 없나 기웃거리다가..

창세기전3가 XP에서 글자색이 까맣게 나오고 전투시 커서가 잘 안움직인다고 불평하는 글을 봤다.

호환성을 98등으로 설정하면 글자색은 어떻게든 되지만 커서는 고쳐지질 않는다.

뭐 예전부터 그랬던거지만 "할 일이 없으니까" 한번 살펴봤다 = ㅁ=;

일단 글자색부터.. SetTextColor, TextOut에 브레이크 걸어놓고 쭉 보니.. 별 문제 없어보였다!?

그렇게 계속 보다가.. 글자색 인수가 웬지 눈에 밟혔다.

흰색 = RGB(255,255,255) = FFFFFF 이긴 하지만..

00FFFFFF(ARGB)가 아니라 FFFFFFFF다!?

혹시나 싶어 값을 수정하고 TextOut 해보니 흰색으로 나오더라 =ㅁ =;;

호환성을 98로 설정하고 트레이싱 해봐도 같은 값인데.. 98에선 저걸 무시하나?;; (XP는 까칠하구나..)

뭐 원인을 찾았으니 해결방법은 간단.. 맨 앞을 항상 00으로 만들어주면 되는거다 =ㅁ =


이제 커서를 해결 할 차례..

게임을 만들어본 적은 없지만 대충 Set/GetCursorPos로 커서를 조작할테니 이놈들을 족쳐봤다.

버뜨.. 새벽을 꼬박 새고 해 뜰 무렵까지 노려봐도 답이 안나오더라 = ㅅ=

짜증나서 '에라 모르겠다'라는 심정으로 F9(RUN)를 계속 누르고 스택, 메모리맵을 흘겨보며..

마우스를 움직여 봤는데..!? 커서가 꽤 잘움직인다!?

계속 브레이크에 걸려 처리 과정이 꽤 늦을 텐데 오히려 커서는 더 부드럽게 움직였다.

혹시나 싶어 GetCursorPos전에 0x00FFFFFF를 0이 될 때 까지 줄여가며 대기하는 코드를 삽입했더니

적당히 매끄러웠다. 그리고 테스트 겸 0xFFFFFFFF로 딜레이를 조절해보니.. 엄청 끊긴다 = ㅁ=;;

아마 너무 오래끌어서 그렇겠지..

이것도 원인을 알았으니 이제 새로 코드를 작성 해야 될텐데..

어떤식으로 딜레이를 줄까 하다가(아무래도 저방법은 너무 무식해보여서;;) timeGetTime을 썼다.

결과는 일단 만족스러웠다 = ㅁ=


Posted by 로드펭귄