KOEI/삼국지 시리즈

삼국지 1편, 2편에 한글을 출력시키기 위한 삽질기록. (1부)

K66Google 2022. 4. 20. 15:08

1. 서론 ~코에이 게임 판매 중단 사태에 대해~

2022년 3월 말, 갑작스럽게 일부 코에이 게임들의 스팀 상점 페이지에 납득하기 어려운 공지가 떴다.

그건 2022년 4월 11일부로 게임 판매를 종료한다는 것이었다. VPN을 사용하여 다른 나라의 IP로 접속하면 해당 공지가 뜨지 않았기 때문에, 이것은 한국에서만 판매가 중단되는 이른바 '지역 제한' 예고였다.

 

 

판매 중단 예고 직전인 4월 10일 밤에는 스팀 최고 인기 제품 목록에 삼국지 시리즈와 시부사와 코우 아카이브, 신장의 야망 시리즈 일부가 순위권에 올라오는 기현상이 펼쳐졌다.

 

 

 

실제로 판매 중단은 예고했던 4월 11일을 며칠 넘긴, 4월 15일 아침(추정)에 이루어졌다.

게을러서 미뤄진 건지, 아니면 막판 판매량을 보고 좀 더 흑우들을 기다리다가 중단한 것인지... 진실은 아무도 알 수 없다.

이번 코에이 구작 판매 중단 사태의 원인은 코에이 때문인가? 디지털터치 때문인가? 게관위의 심의 때문인가?

나무위키의 '디지털터치' 문서에는 본래 판매 중단 공지가 없었던 '에스카 & 로지의 아틀리에' 까지 내려간 것을 거론하며 게관위의 심의 문제 때문에 비롯된 것이라는 주장을 펼치고 있다.

 

 

최근의 게관위 심의 결과 목록을 보면 '라이자의 아틀리에 1편'이 디지털터치에 의해 심의를 받은 것이 확인되고 있다.

본래 라이자의 아틀리에 1편은 콘솔판만 디지털터치가 정발하였고 스팀판(PC판)은 심의를 받지 않았다. 그러나 이번에 PC판 심의를 받은 것과, 판매 중단 목록에서 해당 게임이 없는 것을 보아 '게관위 심의 문제' 설은 매우 타당해보인다.

 

여기서 잠시 삼국지11 · 12편의 심의 내역에 대해 서술해본다.

11편 오리지널은 코에이코리아에 의해 심의를 한 번 받았지만, 11편 파워업키트는 다들 알다시피 국내에 발매되지 않아서 심의 기록이 없다. 스팀에서 판매되는 삼국지11은 파워업키트 PC판이므로 미심의에 속한다.

12편 오리지널 또한 심의 기록이 없고, 12편 파워업키트는 PS3과 PS Vita같은 콘솔판 심의 내역만 존재한다. 스팀에서 판매되는 삼국지12는 파워업키트 PC판이므로 이 또한 미심의에 속한다.

그런데 왜 두 작품은 스팀에서 내려가지 않은 것일까? 어쩌면 디지털터치가 이 두 작품에 대한 PC판 심의까지는 추진할 생각이 있어서인지도 모르겠다. (아니면 내릴 시의 역풍이 감당이 안돼서 내버려두었거나)

 

아무튼 지금까지 삼국지 시리즈 스팀판 한글 출력 패치를 만든 입장에서 볼 때, 이 사태는 참으로 애석한 일이 아닐 수가 없다.

게임을 구입하는 것도 힘들어졌는데, 어떻게 패치를 적용할 수 있단 말인가? 

이번에 중단된 코에이 구작 게임들이 다시 스팀 한국 마켓에 돌아오기를 희망하지만, 솔직히 어려울 것 같다...

 

 

 

2. 삼국지3 한글 출력 시도에 대한 회고.

 

어쨌든 갑작스러운 판매 중단 사태로 인해 나는 부랴부랴 삼국지 1~3편까지 구매하게 되었다.

스팀에서 출시된 삼국지3은 도스판이나 PC98 버전이 아닌 리메이크판이었다. 나는 리메이크판 한글패치를 사용하는 것보다는 새로 스팀판 실행파일을 한글화해서 패치를 만드는 게 좋겠다고 생각했다.

한글 출력을 위한 Ollydbg 수정은 삼국지 4, 5편에 비해 허무할 정도로 간단했다. 그냥 CreateFontA 쪽의 MOV... 0x80을 0x81로 바꾸니 끝났다.

 

 

남은 것은 리메이크판 실행파일의 한국어 데이터를 베껴 적는 일 뿐이었다. 그러나 분량이 너무 많았다. 그리고 기존 리메이크판 실행파일 텍스트 위치와 스팀판 실행파일 텍스트 위치가 서로 맞는 것도 아니라서, 처음에는 베껴 적다가 나중에는 그냥 내가 알아서 번역해서 넣었다. 피곤하기 짝이 없는 과정이었다.

 

 

아무튼 그렇게 해서 좀 완성이 되나 했더니, Crystaltile2가 아닌 Reshack으로 고쳐야 하는 단어도 있었다.

겨우겨우 다 한글로 바꾸고 테스트를 했다. 테스트를 하니까...

자꾸만 튕긴다.

아마 홍수나 메뚜기가 발생했을때 알림 창이 열리지 않고 튕기는 것으로 추정되는데, 그렇게 피곤한 작업을 다 해놓고 튕기는 원인까지 찾아야 된다니, 눈앞이 깜깜하기만 하였다.

그래서 다 때려치고 기존의 삼국지3 리메이크판 한글패치를 스팀판 삼국지3 폴더에 접목시키는 방식으로 끝내버렸다.

 

이제 남은 건 삼국지1과 2편 뿐이다.

 

 

 

3. 스팀판 삼국지2에 대한 분석

 

코에이가 스팀에서 팔고 있는 삼국지2를 구입하면 달랑 실행파일 1개만 준다.

이건 코에이가 자체적으로 만든 PC98 에뮬레이터로 삼국지1 · 대항해시대 1~2 등도 이렇게 팔고 있다.

Ollydbg의 CreateFontA 함수 쪽에서 Charset을 81로 수정하니 뷁어까지는 출력시킬 수 있었다.

 

 

오프닝 대사는 문자가 깨지지 않는 걸로 보니 그래픽 파일인 것으로 보인다.

 

 

어쨌든 뷁어까지의 출력은 성공했으니 정상적인 한글이 잘 출력되는지 Cheat Engine으로 메모리 상의 메시지를 수정하는 방식으로 확인해보았다.

안 된다. 아무래도 반각 필터링이 사용되고 있는 것 같다.

 

 

해당 대사 주소에다 메모리 브레이크를 걸어봤더니, 00430918에서 멈추는 게 확인되었다.

 

 

그러나 도저히 실제 반각 필터링이 있는 부분을 포착할 수가 없었다.

지금까지 내가 알던 방법인 CMP **, 9F로 검색해서 해당 코드를 바꾸는 방식도 먹히지 않았다. 비슷하게 생긴 코드를 찾아서 모두 바꿔도 아무런 변화가 없었다.

또한, 이 프로그램이 PC98 에뮬레이터 형태라서 그런지 어떤 특정 주소에서 너무 뺑뺑이를 많이 돌린다. 이 때문에 정확히 문자 출력 함수가 어디인지 조차도 파악하지 못했다. TextOutA 함수에 대해 브레이크 포인트를 걸어도 게임은 멈추지 않았다.

 

 

fucking koei!

그리고 한 가지 문제점이 더 있다.

실행파일에는 게임 안에서 사용되는 텍스트들이 암호화, 또는 압축되서 들어간 것으로 보인다. 이러면 메시지 수정도 못 한다.

그나마 실행파일 안에서 정상적으로 볼 수 있는 단어는 메뉴 표시줄의 '긤깋귽긳' 같은 단어들 뿐이었다.

 

따라서 나는 코에이가 스팀에서 배포하는 실행파일로 한글 출력을 하는 것은 불가능하다고 판단하고, 다른 방법을 취하기로 하였다.

바로 Anex86 에뮬레이터와 PC98 디스크를 조합해서 한글화를 하는 방식이다.

어차피 코에이가 스팀에 올려둔 것도 PC98 버전의 게임이니까 내용물은 똑같은 거 아닌가? 

 

 

 

4. PC98 디스크 버전 삼국지2 분석

 

일단 인터넷에 돌아다니고 있는 삼국지2 PC98 디스크를 입수해보기로 한다.

anex86과 같이 배포되고 있는 anxdiet로 디스크 내용물을 확인할 수 있다고 하는데...  A디스크는 열리지 않고 B디스크·D디스크(세이브)만 열렸다.

A디스크 내용물을 어떻게든 끄집어내야 한글화가 가능한지 아닌지 확인할 수 있다. 그래서 나는 hdi에 MS-DOS를 설치하고, DOS 상에서 fdi의 파일을 hdi로 복사하는 식으로 진행하기로 하였다. (참고 링크)

 

 

복사 명령어로 삼국지2의 A디스크와 B디스크의 파일을 모두 hdi에 복사했다.

hdi는 anxdiet에서 잘 열리기 때문에 쉽게 윈도우 상으로 파일을 가지고 올 수 있었다.

 

 

뭔가 도스판과 데이터가 비슷해보이는 파일들이 추출되었다.

 

 

 

파일을 추출하고 계속 정보 조사를 하니까, 대항해시대1 PC98판을 hdi에서 실행하게 만든 파일이 눈에 들어왔다.

PC98 버전의 코에이 게임들은 게임 저장/로드 시에 fdi를 바꿔 끼워야 된다는 단점이 있는데, hdi에 설치하면 그런 번거로운 일을 하지 않아도 되는 것이다.

그래서 삼국지2도 그렇게 만들 수 있지 않을까 하고 시도해보았으나, 아무리 해도 저장 시 게임이 멈추는 버그가 발생했다. 또한, 성공한다 하더라도 세이브 파일이 윈도우 상에 저장되는 게 아니라 hdi 속에 저장되기 때문에 스팀 클라우드에 자동으로 파일을 올리게 할 수도 없다.

따라서 이 작업은 포기하기로 한다.

 

 

오프닝에 올라가는 스크롤은 OPENNING.DAT에 들어가있는 걸 확인했다.

(너비 304 x 18 , 단색 1bpp, 오프셋은 604부터.)

 

 

PC98 게임의 한글화는 에뮬레이터가 사용하는 폰트 파일(FONT.bmp)의 한자 부분에 한글 음절을 넣는 방식을 취하고 있다.

즉, 폰트의 '亜'를 포토샵 등으로 '가'로 바꾸고, '亜亜亜'라고 입력하면 게임에서 '가가가'로 출력되는 방식이란 것이다.

놀랍게도 닌텐도DS 게임 한글화 방식과 똑같다. 내가 NDS 케로로RPG 한글화에 처음 발을 들인게... 찾아보니까 2011년이다. 벌써 11년이나 흘렀나... (아직도 완성시키지 못했는데...)

아무튼 폰트 파일은 이미 배포되고 있는 비스코 폰트(링크)를 적용하기로 하였다. 적용하니 일부 한자들이 한글로 바뀌어서 잘 출력된다.

그리고 위에서 anxdiet에서 A디스크가 안 열린다고 했는데, 이건 같은 코에이사 게임인 '독립전쟁' 한글패치의 디스크에서 일부 파일만 남기고 해당 디스크에다 A디스크의 파일을 집어넣는 방식으로 임시 해결하였다. (그리고 AUTOEXEC.bat 이라는 파일도 수정하였다.)

이렇게 하면 anxdiet를 통해 파일 입출력이 가능할 것이다.

 

그러나 삼국지2를 분석하면서 너무 많은 애를 써서 그런지, 도저히 손이 가지 않았다. 그래서 나는...

 

 

지금으로부터 약 36년 전인, 1985년 12월에 출시된 삼국지1부터 먼저 한글화를 시도해보기로 하였다.

그러나 이때의 나는 모르고 있었다.

삼국지1에 숨겨져 있던 무시무시한 코에이의 함정에 대해...

 

 

- 스크롤 압박으로 2부에서 계속 -