예전에 에픽스토어에서 무료로 배포한 게임중에
'메트로 2033 리덕스'라는 게임이 있었습니다.
받아만 두고있다가 최근에 시간이 되서 플레이하려고 했는데
한글미지원이네요?
그래서 얼른 구글에 한글패치를 검색을 했더니 죄다 스팀에서 동작하는 파일들이더라고요.
게다가 일부는 스팀파일인데 댓글은 "잘되네요 감사합니다" 라는 등의 낚시성 블로그들도 보이더라고요.
갑자기 오기가 발동했을까...
이 복사 붙여넣기 한 파일들을 까보려고 시도를 해봅니다.
구글에 검색을 해보니 .vfx 파일은 인덱싱용이고 .vfs0는 소스파일인데
소스파일은 제가 굳이 만질 필요가 없겠더라고요.
vfx파일 unpacker를 찾아서 실행해보았지만 원인모를 이유로 동작이 안되고
결국은 어떤 차이점이 있을까 해서 binary viewer를 설치해서 읽어보았습니다.
구글에 돌아다니는 메트로 2033 리덕스 한글패치 파일은 전부다 스팀적용이었고
content.vfx파일에서 일부 구분을 추가하여 content2033_KOR.vfs0파일을 인식하도록 하는것이었습니다.
( 원래 원본은 content00.vfs0 ~ content27.vfs0까지 있는데 거기에 content2033_KOR.vfs0 관련 구문을
content.vfx파일에 추가하는 방식이었습니다. )
https://gist.github.com/notcake/0f8f33bea49ee28a7acb
해당사이트에 가니 누군가가 아주 친절하게 일부내용을 unpack한 정보가 있어서 가서 참고하면서
파일의 특정 binary 부분을 수정하면 되겠구나 라고 무릎을 탁 치며 작업에 들어갔습니다.
파일을 binary 형태와 옆에 나와있는 ASCII 형태로 보면서
아래와 같은 규칙성을 찾을 수 있었습니다.
[PART1]
content23.vfs0 <-파일이름
00 <- 구분자(아마도 NULL?)
01 00 00 00 <- 주소관련 부분
2033\l130_darkstar <- 파일마다 다른 고유의 주석(?)
00 <- 구분자(아마도 NULL?)
파일크기 <- 파일크기가 ex) 0x8c1232 이면 32 12 c8 순서로 입력해야 됨
content24.vfs0 <-파일이름
00 <- 구분자(아마도 NULL?)
(반복...)
맨 마지막에
00 <- NULL
이런식으로 들어가는 부분이 있었습니다.
이부분에서 스팀과 에픽은 파일이름과 주석(?)이 같지만 파일크기가 다르더라고요.
그래서 이부분은 규칙을 기억해서 파일크기만 바꿔주면 되겠다 라고 생각했습니다.
그런데, 그 다음부분이
[PART2]
위 사진에서 0008 0001 00000001 에 해당되는 부분이
content00.vfs0 ~ content27.vfs0 전부에 해당되고
실제 binary에서는 00(구분자) 다음에
01 00 00 00를 추가하였는데 이 부분에 해당 됩니다.
0008 001c 00000002 content/ 이 부분은
binary로 보니깐 08 00 1c 00 02 00 00 00 이고 c는 ascii가 아니라 무슨의미인지 모를 hex 값이 써있었습니다.
원래라면 PART1에서 content00.vfs0 이라는 글자는 ascii로 표현되어있어서 의미를 알아챘는데 말이죠...
결국 계속 비교를 하다가 PART2의 line99번에서 부터 값이 달라지기 시작하면서
아랫부분의 주소값들이 전부 달랐습니다.
예를들면 0008 001c는 같은데 00000002이어야 되는부분이 000001DF 라던지 이런 식의 이유입니다.
결론
새벽에 잠 안자고 시간, 전기세 버리고 좌절감 게이지 만땅입니다^^
내 주제에 무슨...ㅋ
영어 자막옵션 켜서 조금씩 해석하면서 느긋하게 해야겠습니다.