템페스트 리팩


서풍의 광시곡과 비슷한 엔진을 사용한 것으로 보이는 템페스트.
게임의 형식은 크게 바뀌었지만 처리 루틴이나 라이브러리는 서풍의 광시곡과 같지 않나 생각되어집니다. 그로인해서인지 서풍의 광시곡과 비슷한 문제가 있는데 바로 마법쓰거나 게임도중 화면이 멈춰버리는 문제입니다.
서풍의 광시곡때와 마찬가지로 XP 패치에 그 원인이 있지 않나 싶어 일반 v1.3 패치를 적용하였더니 게임 중 멈춰버리는 문제는 발견되지 않았습니다.
또한 템페스트는 CD별로 CD 오디오 트랙을 사용하는게 아니고 데이터도 CD별로 따로 구분되는게 아니여서 서풍의 광시곡보다는 리팩 작업이 좀더 수월하였습니다.
처음 리팩작업 후 너무나 XP에서 게임이 잘 돌아가서 인터넷에서 오류나는 부분을 넘겨달라는 세이브 파일을 다운받아 진행하여 보았습니다.


그 결과, 오류 메시지와의 만남...! 그리고 DirectDraw 오류의 쓰리런...

원인을 살펴보니 템페스트에서는 LoadImage()라는 윈도우즈용 API 함수를 사용하여 이미지를 불러와 화면에 출력하는데 이 함수가 버그가 있습니다.
정상적인 이미지 파일임에도 불구하고 일부 이미지는 LoadImage() 함수로 불러와지지 않습니다.
템페스트가 출시되고 Windows 98, Windows Me, Windows XP (non-SP) 상태에서는 이 문제가 발생하지 않았으리라 생각됩니다.
사실 위 문제 때문에 지금의 Windows XP SP3 에서는 게임 중간에 막혀 더이상 진행이 불가능한 상태입니다. 저 문제가 보고된채로 출시했다면 문제가 있겠지요;

어쨌든간에 이미지 파일들을 조금 손봐서 LoadImage()가 정상적으로 동작하게끔 해주니 "File Open Failed"는 더이상 나타나지 않았습니다. 만약 이게 또 나타난다면 그건 버그가 아니라 CD 데이터에 문제가 있으리라 보여집니다.

템페스트도 보면 XP 패치로 인하여 게임 중간에 멈춰버리는 문제와 LoadImage() 버그로 인하여 게임 중간에 아예 오류 메시지와 함께 팅겨버리는 문제가 있어 유저들로부터 작품의 평가가 제대로 이루어지지 못하지 않았나 생각이 드는군요.

서풍의 광시곡 리팩


창세기전 외전 서풍의 광시곡은 총 CD 3장으로 구성되어 있습니다.
CD 마다 각각 다른 오디오 트랙을 사용하고 있고 데이터 파일도 분할되어 있습니다.
이를 CD 1장 처럼 합치기 위해서는 다음을 먼저 분석하여 찾아내야 합니다.

-CD 체크할 때 CD 번호 정보를 주고받는 부분
-CD 배경음악 재생시 트랙번호
-CD 배경음악 재생부분
-CD 배경음악 정지부분


CD 번호 주고받는 부분은 위의 주소에서 eax 값에서 확인할 수 있었습니다.
이 정보를 가로채서 CD 번호에 맞는 음악 파일을 재생하게 해줍니다.

작업도중 전투가 끝나고나서 음악이 재생안되는 문제가 있었는데 이와 관련한 변수가 하나 더 존재하더군요. 이를 별도로 처리해주자 정상적으로 재생이 되었습니다.

그 외 나머지 부분들도 시간이 좀 들긴했지만 전부 분석하여 지난번 메탈 퍼티그와 같은 형식으로 리팩하였습니다. ^^

이와 별도로 전투 중 발생하는 "Overflow Mouse Range Setting" 오류와 적이 너무 자주등장하는 문제를 수정하고 게임 속도 조절 기능을 넣었습니다.

참고로 "1.02 패치"와 "1.02 XP 패치"가 있는데 "1.02 XP 패치"는 오히려 XP 환경에서 게임중간에 멈추는 문제가 있습니다. 리팩본은 "1.02 XP 패치"로 작업하였다가 다시 "1.02 패치"로 재작업하였습니다.

(추가된 내용)
1차 리팩본 이후 몇가지 추가문제가 발견됩니다.
회복계열 아이템이나 마법을 비전투상태에서 사용시 멈춰버리는 것과 전투시작시 종종 멈춰버리는 문제였습니다.
전투시작시 멈추는 문제는 두가지 원인이 있었는데 첫번째는 전투중 특수기술을 쓰면 나오는 동영상 속도가 전투속도와 같게 조절한데 있었습니다. 이는 기존 fps에 맞게 유지시켜주는게 안정적이였습니다. 그래도 간혹 전투시작시 멈추는 문제가 있어 직접 디버깅을 하여 원인을 찾아나갔습니다.


2주동안 짬짬이 시간을 내면서 찾아낸 결과 멈추는 원인은 메모리 오류이며 memcpy에 의한 것이였습니다.
메모리 overflow가 나거나 잘못된 참조로 인한 access denied이 화근이였습니다.
일반 모드로 실행하면 이 오류는 스킵되어 넘어갑니다. 넘어간다고 좋은게 아닙니다.
프로그램에 분명 버그가 있다는 것이고 게임중 메모리의 쓰레기값이나 잘못된 포인터로 예상치못하게 종료될 수 있는 요소가 됩니다.
이를 디버그 모드로 걸고보면 어김없이 오류를 내뱉습니다.
메모리 오류나는 부분을 찾았으니 이제 오류안나게 레지스터값을 조절하여 넘겨주면 됩니다.
이번 수정으로 이제는 어느정도 안정적으로 플레이가 가능하다고 생각되어지네요. ^^

삼국지 2 리메이크 한글화


네이버에 한조이라는 카페에서 활동하면서 삼국지 2 리메이크(삼국지 2 for Windows)를 한글화 했었습니다. 참고로 한조이 카페는 삼국지 3 리메이크를 한글화 했던 곳이며 지금은 폐쇄되어 존재하지 않습니다.

처음에는 eXeScope라는 리소스 편집기를 이용하여 메뉴와 대화상자, 이미지를 한글로 바꾸었습니다.

기초적인 커맨드를 내릴 수 있는 수준의 결과물이 나온뒤 시나리오 파일에 들어있는 장수명 한글화를 위해 매크로를 하나 만들어 사용했습니다. 노가다로 하기엔 다소 무리가 있어보여서;


매크로의 원리는 일본어 장수명 사전을 불러와 시나리오 파일에서 찾아 한글 장수명 사전의 데이터로 치환하는 원리입니다. 사전 파일또한 삼국지 2 도스용과 윈도우즈용을 이용하여 추출합니다.


사전 파일의 구조는 단순하며 위와 같습니다. 왼쪽은 한글 사전이고 오른쪽은 일본어 사전입니다. 이 매크로를 이용하여 엄청나게 많은 노가다성 번역을 단번에 끝낼 수 있었습니다.



모든 한글화의 기준은 삼국지 2 도스용을 기반으로 하였습니다.
위의 화면이 도스용 삼국지 2이고 아래 화면이 윈도우즈용으로 리메이크 된 삼국지 2입니다.

이정도만 되어도 게임 진행에는 큰 문제가 없는 듯 싶어 50% 한글화 패치라고 하여 네이버 한조이 카페에 공개하게 됩니다.

헌데 이때 불미스러운 일이 발생합니다.
다른 사람도 삼국지 2 리메이크 한글화를 했다길래 자문을 구해볼까해서 가보았더니 헉....
이건 제가 작업한 한글패치본이였습니다. ㅠㅠ 아무리 눈을 씻고 찾아봐도 제가 작업한거와 다른게 없었습니다.
한글화 해보신 분은 알겁니다. 같은 한글패치본이라도 자신이 한거와 다른 사람이 한거는 구분된다는 사실을 말이죠...ㅠ

게임 정보창에 한글화 정보를 표기하여 두었는데 이를 리소스 편집기등으로 바꾸고 별도의 설치 프로그램까지 만들어 자신이 만들었다고 배포하고 있는 실정이였습니다.


위의 화면은 지금의 게임 정보창입니다.
당시에는 카페를 운영하기 이전이라 "한글화 : soulmate2x@naver.com" 형태로 한줄만 적혀있었습니다.

제가 그 사람 블로그에 가서 글을 남기고 따졌더니 어느순간 잠수를 타버렸습니다.
정말 나름 공들인 한글패치인데 이게 왜 이렇게 이용되고 있는지 모르겠더군요.
그 사람은 그로인해 블로그 방문자가 늘었을지는 몰라도 저는 크게 상심하고 더이상 한글화를 하지 않게 됩니다.

시간이 흐른 뒤... 하드 디스크를 정리하던 중 삼국지 2 리메이크 한글화를 할 당시 사용했던 매크로 소스와 번역본을 발견하게 됩니다. 순간 이 게임을 단지 한글로 즐기고 싶다는 초심과 왠지모를 벅찬 느낌이 들게됩니다.
마음을 추스리고난 후 완전 한글화를 목표로 다시 작업을 시작하였습니다. ^^;

게임에서 사용되는 메시지를 한글화 하기 시작했습니다.


대화도 한글출력되게 수정하고 하나하나씩 바꿔나갔습니다.


다른 부분도 번역을 하고...


초선 이벤트까지도 한글화를 하였습니다.
현재의 한글화율은 99% 이며 처음부터 엔딩까지 원활한 플레이가 가능합니다.
이 작업을 하는데 소요된 기간은 3년, 공백기 4년까지 하면 7년에 걸쳐 완성되었네요.

지금은 네이버 고전게임 소장카페를 통하여 피드백을 받고 있으며 조금씩 개선해나가고 있습니다.
많은 분들이 삼국지 2 리메이크를 재밌게 즐겨주셨으면 좋겠네요. ^^
Powered by Blogger