KOEI/삼국지 시리즈

삼국지9PK 스팀 중문판 패치 제작과정을 남긴다.

K66Google 2021. 12. 27. 15:15

삼국지9 PK 스팀 중문판에 한글 출력을 하기 위해 여러 과정들을 거쳐왔다.

그래서 블로그에 기록으로 남기고자 한다. 나중에 누군가 흥미롭게 읽을 수 있도록...

 

1. 한계돌파 툴 한글화

먼저 내가 시작한 것은 한계돌파 툴(San9PKHard)의 한글화 작업이었다.

리소스 해커(reshack)로 폼 한글화부터 한 뒤, Crystaltile2로 열어서 남은 중국어 문장들을 한국어로 고쳤다.

 

 

그 다음으로 생각한 건, 한계돌파 툴을 켰을 시에 뜨는 미번역된 단어들이었다.

탐색 메뉴에 들어갈 때 위쪽에 뜨는 '굔索' 이라는 단어 같은 거 말이다.

1년 전의 나는 이 문제 때문에 실행파일도 샅샅이 파헤치고 게임도 엔딩까지 플레이 해 봤지만 도저히 해결하지 못했다.

실행파일 내에서 바꿀 수 있는 건 다 바꿨는데, 대체 어디서 이 단어를 가지고 온다는 말인가... 실행파일에 보호 기능이라도 있어서 자기 멋대로 복귀시키는 줄 알았다.

 

 

그러나 이제서야 답을 찾았다. 바로 한계돌파 툴 때문이었다.

한계돌파 툴 내에 '探索' 이라는 단어가 있었다. 이걸 '탐색' 으로 고쳐본다.

 

 

정상적으로 '탐색' 이라고 출력된다. 대략 1년만에 정답을 찾은 것 같다.

 

 

다음으로 할 일은 한계돌파 툴 메뉴 중 '도시수정' '병법수정' 등에서 나오는 목록을 한국어로 출력하게 만드는 것이었다.

어떤 텍스트를 읽어들일때 쓰이는 함수는 MultiByteToWideCharWideCharToMultiByte이 관련되어 있다는 것을 예전에 신장의 야망 혁신PK 반에디터 한글화 할 때 알게 되었다.(관련 게시물)

여기의 코드 페이지 값을 보니 0x3B6이 많이 보인다... 3B6을 10진수로 변환하면 950.

그렇다. 중문번체 코드(CP950)를 의미한다.

 

 

대충 주변에 있는 PUSH 0x3B6과 PUSH 0x3A8 (3A8은 936으로 중문간체 코드를 의미한다.) 을 PUSH 0x3B5 (949, 한국어 코드) 로 변경한다.

그리고 아래쪽의 LCMapStringA에도 LCID (이것도 프로그램 언어 코드와 관련되어 있다.) 가 중국어로 지정되어 있길래 한국어로 바꾸어주었다.

 

* 정리

0x419238 , 0x419257 , 0x41926B , 0x41929D
PUSH 0x3B6 , PUSH 0x3A8 → 모두 PUSH 0x3B5로 변경.

 

0x4192B2

PUSH 0x804 → PUSH 0x412로 변경.

 

* TIP

코드페이지 번호 : https://docs.microsoft.com/ko-kr/windows/win32/intl/code-page-identifiers

LCID 번호 : https://docs.microsoft.com/en-us/openspecs/office_standards/ms-oe376/6c085406-a698-4e12-9d4d-c3b0ee3dbc4a

문자셋 번호 : https://docs.microsoft.com/en-us/openspecs/office_file_formats/ms-one/64e2db6e-6eeb-443c-9ccf-0f72b37ba411

 

모두 한국어를 가리키는 값이 다르다. 한국어는 코드페이지 번호 949, LCID 번호 1042, 문자셋 번호 129~130이다.

(문자셋 번호 129는 완성형 한글, 130은 조합형 한글이다.)

 

 

이렇게 하고 나니 목록이 한국어로 잘 출력되는 걸 확인 할 수 있었다.

 

 

게임 실행 파일 내에서 미번역된 단어나 이상한 기호가 출력되는 현상은 대부분이 한계돌파 툴 때문에 발생한 것으로 보인다.

어쨌든 이런 과정을 거쳐서 한계돌파 툴의 한글화를 마쳤다.

 

 

 

2. 스팀판 파일 구조 분석

스팀에서 삼국지9 PK를 구입하려면 정가로 32,000원을 내야 한다.

7·8·9편 꾸러미는 40% 세일 중이라 44,400원을 내면 된다.

그러고 보니 7편과 8편도 secdrv 때문에 윈도우10에서 바로 실행이 되지 않았던가? 나중에 실험해 볼 필요도 있을 것 같으니...

 

 

꾸러미로 구입하기로 했다. 삼국지10을 정가로 구입하느라 이미 3만원 가까이 썼는데, 이것까지 사면 약 7만 5천원을 소비하게 되는 셈이다.

 

 

게임을 구입하고 설치해본다.

 

 

설치가 끝나고 먼저 '환경설정' 부터 들어갔다. 게임 폴더 안에 있는 Config.exe가 열렸다.

여기서 옵션을 변경하면 레지스트리가 알아서 설정될 것이다.

 

그런데...

 

 

설정 파일이 잘못된 위치에 레지스트리를 설정하고 있다.

설정 파일에서 조작하는 레지스트리 경로는 HKEY_CURRENT_USER\SOFTWARE\KoeiTecmo\San9 Tc 이다.

그러나 삼국지9PK 스팀판의 실제 레지스트리 경로는  HKEY_CURRENT_USER\SOFTWARE\KoeiTecmo\35th\San9WPK 이다.

 

설정 파일 하나도 제대로 검수 안 하고 그냥 막 올리다니, 돈에이의 행태에 할 말을 잃었다...

아무래도 이건 배치 파일(.bat) 에서 설정하는 걸로 대체해야 할 것 같다.

(백신 등이 막는 경우가 있어서 그냥 .exe 파일에서 다 처리하는 것으로 계획을 변경했다.)

 

 

게임에 한 번 들어갔다 오니까 그제서야 정상적인 레지스트리가 생성되었다.

 

 

창모드 실행 확인.

이제 한글화 작업에 착수한다.

 

 

우선 한글판 폴더에서 덮어쓸 수 있는 파일부터 가지고 온다.

MOVIE 폴더는 통째로 덮어씌운다.

 

 

F_Font.s9는 내가 예전에 제작한 중문판 호환용 한글폰트로 교체한다.

 

 

그리고 다음의 파일을 한글판에서 가져와서 덮어씌운다.

- G_LocalM.s9
- G_LocCPK.s9
- G_LocMPK.s9
- G_LocSPK.s9
- G_TitlPK.s9
- M_Msg.s9
- M_MsgPK.s9

 

M_Rtdn.s9M_RtdnPK.s9는 내가 예전에 제작한 무장열전 줄바꿈 임시수정 파일로 교체한다.

 

 

이렇게 하면 동영상, 그래픽, 메시지 한글화는 끝난다. 남은 건 실행파일 한글화 뿐이다.

그런데 그전에 확인해야 할 사안들이 남아있다.

 

 

3. 한계돌파 툴 호환 여부 확인과 스팀 클라우드 지원 방안 구상

 

 

스팀판에 한계돌파 툴을 어떻게 하면 적용이 가능한 지 확인해보았다.

일단 [스팀판 실행파일 + 한계돌파 툴] 조합은 안 된다. 게임 버전을 미지원한다고 뜬다.

그러면 [스팀판 폴더 + 패키지판 실행파일 + 한계돌파 툴] 조합은 어떨까? 그건 가능했다.

스팀판과 패키지판 파일 구조가 동일해서 그런지 패키지판 실행파일만 달랑 들고 와서 스팀판 폴더에서 실행할 수 있었다.

(레지스트리의 InstallInfo 값은 스팀판 폴더로 맞춰놓아야 하는데, 이건 자동으로 맞춰주는 배치 파일로 해결하였다.)

런처에 스팀판 실행 기능과 패키지판 실행 기능 둘 다 갖추고 있으면 좋겠다는 생각이 든다.

 

 

다음으로 세이브 파일이 저장되는 폴더를 알아보기로 한다.

한글 윈도우 환경에서는 '짽곌...' 어쩌구라는 폴더에 게임이 저장되고 있어서 스팀 클라우드에 파일이 제대로 업로드 되지 못하는 문제가 있다.

Locale Emulator를 통해 삼국지9PK를 중문번체 윈도우 환경으로 실행하면 되지만, 그러는 것도 귀찮다.

 

 

일단 뷁어가 보기 싫으니까 폴더명부터 바꾼다. 실행파일을 스팀리스로 언팩해놓고, [짽곌㎿⊙ with ヂ짵펃켳ぉ] 을 검색해서 나오는 단어를 [삼국지Ⅸ with 파워업키트] 로 바꾸고 저장했다.

그런 다음 게임에 들어가서 세이브를 하고 종료하였다.

 

 

그렇게 하니까 [삼국지Ⅸ with 파워업키트] 라는 폴더가 만들어지고 거기에 세이브 파일이 저장되기 시작했다.

하지만 스팀 클라우드와 호환되지 않는 것은 마찬가지다. 이를 어떻게 하면 좋을지 방법을 생각해보았다.

 

1. 실행파일에서 게임을 '三國志Ⅸ with 威力增強版' 폴더에 저장하게 만든다.

불가능하다. 한국어 인코딩(CP949)에 強이라는 한자가 없어서 Crystaltile2 상에서 입력하려고 하면 물음표로 바뀌어서 입력을 할 수가 없다.

한국어 인코딩에 있는 '굳셀 강' 자는 强이다. 한자 자형이 달라서 이걸 입력해봤자 헛수고다.

 

2. 게임을 종료할 때 '삼국지Ⅸ with 파워업키트' 폴더에서 '三國志Ⅸ with 威力增強版' 폴더로 자동으로 파일을 전송하게 한다.

가능하다. 배치 파일(.bat)을 게임과 동시에 실행시켜서 게임이 종료된 것을 확인하면 파일을 전송하게 만드는 것이다.

비록 세이브 파일 용량은 2배로 들겠지만... 용량이 아무리 많이 들어도 몇 백 메가 수준으로 커지지는 않을 것 아닌가?

 

나는 바로 시험삼아 배치 파일을 만들어보기로 하였다. 여러 웹 사이트의 예제와 설명을 봐가면서 겨우 완성할 수 있었다.

배치 파일로 게임을 실행하고 저장 후에 게임을 종료했다. 결과는...?

 

 

몇 번의 시행착오를 거친 끝에 잘 작동하게 되었다.

또 하나 알아낸 사실이 있는데, '三國志Ⅸ with 威力增強版' 안에 있는 파일은 무조건 스팀 클라우드에 파일이 전송된다는 점이다.

다시 말해, 내가 '三國志Ⅸ with 威力增強版' 폴더 안에 새 폴더를 만들어서 파일을 집어넣어도 스팀 클라우드에 업로드가 된다는 것이다.

(Savedata_LB 라는 폴더를 만들고 거기에 세이브 파일을 집어넣고 게임을 켰더니 전부 스팀 클라우드에 업로드 되었다.)

 

 

그럼 패키지판 세이브 파일도 스팀 클라우드에 업로드가 가능하다는 말이 아닌가?

패키지판 파일도 스팀 클라우드에 올라갈 수 있도록 배치 파일을 수정해보았다.

 

 

아주 잘 작동하고 있다.

이제 스팀 클라우드에 스팀판 삼국지9PK 뿐만 아니라 패키지판 삼국지9PK 파일도 업로드 할 수 있게 되었다.

 

 

다만 배치·스크립트 파일(.bat / .vbs) 만으로는 스팀에 플레이 타임이 제대로 누적되지 않고, 게임 종료 시 스팀 클라우드와 동기화되지 않는 문제가 있어서 .vbs 대신에 새로 .exe 기반의 런처를 제작했다. 이렇게 하니 플레이 타임도 정상집계되고 게임 종료 시 스팀 클라우드와도 정상적으로 동기화가 이루어졌다.

 

 

4. 실행파일 한글화

이제 스팀판 삼국지9PK 실행파일 내 단어들을 한국어로 치환하는 일만 남았다.

기존의 한글화된 중문판 실행파일을 보고 싹 다 베끼도록 하자.

 

 

그리고 마침내...

스팀판 삼국지9PK의 한글화 작업이 완료되었다.

 

작업 완료 이후, 배치 파일(.bat)에 스크립트 파일(.vbs)을 추가해서 백그라운드로 실행이 되도록 조치하였다.

이러면 cmd 창이 화면에 떠 있거나, 작업표시줄 영역을 차지하지 않으므로 훨씬 깔끔하게 게임을 플레이 할 수 있을 것이다.

(현재는 .exe 파일의 백그라운드 실행으로 변경하였다.)

 

완성된 한글패치 파일은 https://k66google.tistory.com/751 에 게시하였다.

 

그럼 이만...