사용자 삽입 이미지


창세기전3와 창세기전3 파트2의 리소스 추출기.

.pak로 싹 모여있는 파일을 풀어준다.

(압축이고 암호화고 전혀 없이 그냥 뭉쳐져있다.)


* 다운로드: G3_Extr.exe   G3P2_Extr.zip


* 소스코드: G3_Extr_src.zip   G3P2_Extr_src.zip


Posted by 로드펭귄
사용자 삽입 이미지

창세기전 카페에 직접 세이브파일이나 데이터파일을 에디트 해보려는 사람이 많길래
에디터에서 체크섬등의 파일 처리부분만 따로 빼내어 만든 프로그램.
체크섬에 관한 어셈블리는 에디터 소스 참조.

* 사용법 *
에디트 하려는 파일을 드래그&드롭으로 화면에 올려놓고
Reverse를 눌러 실제 값(모든 값에 NOT을 해주는 엄청 간단한 작업이다..)으로 바꾸고
Save & Exit를 눌러 저장한 뒤 바이너리 에디터로 원하는 부분을 수정하고, 저장한다.
그 후 다시 Reverse를 눌러 암호화 하고
버전에 맞는 ChkSum버튼을 눌러 체크섬을 계산한 뒤 (데이터 파일은 무조건 1.03)
Save & Exit를 눌러 변경된 파일을 저장한다.

Posted by 로드펭귄
사용자 삽입 이미지

창세기전3 에디터.
이것 전에 임시로 만든건.. 지워버렸는지 소스가 없다...;
다른 프로그램들도 정리&백업 겸 소스를 올려야되겠는데.. 귀찮아.. = ㅅ=;;

소스를 보면 익숙하지도 않은 MDI로 만든다고 삽질한 흔적이 허다하다...
게다가 비주얼(연대표나.. 펼쳐짐이나..)에 신경쓴다고 쓸데 없는 코드도 좀 들어갔고..

* 이하 창세기전 카페에 적었던 설명 *
캐릭터 수정 후 각각 "적용"메뉴를 눌러야 저장 할 때 에딧한 캐릭터가 적용됩니다.
연대표, 맵 이동 중에 저장 한 세이브파일만 적용 가능합니다.
퀵세이브는 지원하지 않습니다.
특정 챕터는 활성화 시켜도 챕터 실행 조건이 만족되지 않으면 나타나지 않을 수 있습니다.

Posted by 로드펭귄
사용자 삽입 이미지

소프트맥스의 창세기전 3를 플레이 할 때, Windows XP에서의 문제점을 수정해주는 패치

- 수정사항 -
게임 내의 글자색이 까맣게 나오는 현상
전투맵에서 커서가 잘 움직이지 않는 현상

Posted by 로드펭귄
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 로드펭귄