2023-09-24

GOAL!! 한국판 패치 작업기

<GOAL!!>은 1992년 9월 25일 자레코가 발매한 축구 게임입니다. 이미 슈퍼패미컴이 발매된 지 2년이 다 된 그 시기에 저는 아직 패미컴을 놓지 않고 있었고, 축구 게임을 찾다가 용산전자상가 매장에서 GOAL!! 롬팩을 발견하여 사들고 왔습니다.

사실 이 게임을 지금 해보면, 불편한 조작, 모호한 태클 판정, 롱볼 위주의 전개로 부족한 부분이 많지만, 당시 패미컴 타이틀 중에서 제대로 된 축구 게임이 거의 없었기에 이게 어디냐 하고 재밌게 즐겼던 기억이 있습니다.

국대 축구 인기가 하늘을 찔렀던 그 시기에 월드컵 같은 조별 예선+토너먼트 방식, 골 넣었을 때 큼지막한 컷신, 당시 게임에선 보기 드물었던 오프사이드 판정 등이 제 흥미를 끌었습니다. 골 뒤풀이 장면에는 경기장 광고판에 자레코의 러싱비트 타이틀이 보이는 깨알 재미도 있었죠.

추억이 서린 작품이라 알팩이라도 다시 구해보려고 했더니 2023년 9월 초 기준 국내에서 만 원에 판매되었던 알팩은 사라졌고, 일본 쪽을 알아보니 희귀품이 되어서 가격이 폭등했더군요. 알팩이 7,200엔, 곽팩은 그 두 배를 호가하는 상황이라 입수를 포기했습니다.

대신, 이 게임을 개조해보기로 마음먹었습니다. 어릴 때 재밌게 즐기긴 했지만, 가장 아쉬웠던 점이 한국팀이 안 나온다는 점이었습니다. 1992년 시점엔 일본은 월드컵에 한 번도 못 갔고, 한국은 단골 출전국이었는데, 게임엔 한국은 없고 일본만 있는 것이었습니다.

이게 너무 괘씸해서 다른 유럽팀을 골라 일본에 골 세례를 퍼부었죠.

이 점이 안타까워서 여기 나오는 일본팀을 한국팀으로 바꾸는 작업을 시작했습니다.
패미컴 롬 해킹에 대한 지식이 전무해서 막막했는데, 여러 관련 글을 보고 힌트를 얻었습니다.

개조 전 준비물은

MESEN (패미컴 에뮬레이터)

SearchR

HxD

Goal!! 일본어판 롬 파일

...입니다.

MESEN은 애용하던 에뮬인데, 메모리 에디터 기능까지 있는 줄은 몰랐습니다. 작업하는 데 유용했습니다.

일단은 국가명 JPN, JAPAN을 KOR, KOREA로 바꿉니다.

MESEN으로 Goal!! 롬 파일을 연 뒤, 메뉴의 Debug→PPU Viewer→CHR Viewer로 들어가보면, 알파벳 꾸러미가 있는 걸 볼 수 있습니다.

여기서 J, A, P, A, N과 K, O, R, E, A의 Tile Index를 찾아서 적어둡니다. 아래 알파벳 소문자에 마우스를 갖다대면 오른쪽에 Tile Index 값이 나옵니다.

JPN 89 8F 8D

KOR 8A 8E 91

JAPAN 89 80 8F 80 8D

KOREA 8A 8E 91 84 80

찾은 16진수 값은 위와 같습니다. JPN과 JAPAN의 값을 롬 파일 내에서 찾아서 KOR과 KOREA의 값으로 바꾸면 게임 내의 표기가 바뀌게 되는 것이지요.

HxD라는 툴로 롬 파일을 열어서 Ctrl+F 찾기로 JPN의 16진수 값을 찾아봅니다. JPN은 89 8F 8D입니다. 이걸 KOR 값인 8A 8E 91로 바꾸고 저장합니다. JAPAN 값의 경우도 마찬가지로 KOREA 값으로 바꿉니다.

롬 파일을 에뮬로 열어서 확인해봅니다. 

JPN이 KOR로, JAPAN이 KOREA로 바뀐 걸 볼 수 있습니다.

그런데, 팀 선택 화면에선 JPN이 KOR로 바뀌지 않고 그대로 표기된 걸 볼 수 있습니다. 이건 다른 방식으로 값이 들어가 있을 겁니다.

이걸 찾느라 고생했습니다. HxD로 있으리라 추정되는 부근을 J의 16진수 값 89로 찾아보았습니다. 몇 시간 헤맨 끝에 

슈퍼컵 모드의 팀 선택 화면

찾은 값 - JPN 89 00 00 00 8F 00 08 00 8D

바꿀 값 - KOR 8A 00 00 00 8E 00 08 00 91

1P VS COM / 2P VS COM 모드의 팀 선택 화면

찾은 값 - JP 89 8F 01 01

바꿀 값 - KO 8A 8E 01 01

요런 식으로 값이 들어가 있는 걸 발견했습니다. 알파벳 값 사이에 00, 01 값이 들어가 있어서 못 찾은 거였네요. 저 규칙에 맞춰서 KOR 값으로 바꿔줬습니다.

바꾸고 MESEN 에뮬로 다시 실행하여 확인해보니 팀 선택 모드에서 JPN이 KOR로 바뀐 걸 볼 수 있습니다. 그런데, 1P VS COM / 2P VS COM 모드의 JPN 변경은 문제가 있습니다.
JP는 KO로 잘 바뀌지만, N의 경우는 값(8D)을 VEN(베네수엘라)의 N을 공유해서 씁니다. JPN뿐 아니라 CAN, IRN, DEN 이 나라들의 N과 공유하고 있어서 하나를 바꾸면, 다 바뀌게 됩니다.

즉, N을 R 값으로 바꾸면, KOR로 표기는 할 수 있지만, VEN, CAN, IRN, DEN도 VER, CAR, IRR, DER로 바뀌어버리는 것이죠.

이 부분은 제 능력으로 해결할 수 없어서 그냥 JP만 KO로 바꾸기로 합니다. 1P VS COM / 2P VS COM 모드 팀 선택 화면에선 KON으로 표기됩니다.

국가명 변경은 끝냈으니 이제 일장기를 태극기로 바꾸는 작업을 해봅니다.
MESEN에서 롬 파일을 열어 일장기가 나오는 곳까지 진행한 뒤, Debug→PPU Viewer→CHR Viewer를 열고, Display as 8x16 sprites에 체크하면, 왼쪽에서 일장기 그림을 찾을 수 있습니다. 옵션에서 Palette를 바꿔가며 보면 찾기 더 편합니다.

일장기가 들어있는 타일에 마우스 포인트를 갖다 대서 오른쪽 버튼을 누르면 Edit in Memory Viewer 선택할 수 있 수 있습니다. 그걸 열면 현 타일의 값을 볼 수 있습니다. 한 줄로 된 값을 선택해서 복사한 뒤, 메모장 등에 붙여넣기해서 저장해둡니다.

일장기가 차지하는 부분에 마우스 포인터를 갖다대서 클릭한 뒤, Tile을 직접 수정하면 됩니다. 8x8 도트로 찍어서 태극기 문양을 만듭니다.

건곤감리 4괘는 8x8 안에서 제대로 표현하기 힘들어서 ‘대한민국’ 글자를 국기에 그려 넣었습니다.
수정한 타일 값들도 Edit in Memory Viewer 선택해서 메모장 등에 저장해둡니다.

HxD로 롬 파일을 열어 수정하기 전의 타일 값에 수정한 타일 값을 붙여넣기로 바꾼 뒤, 저장합니다.

에뮬로 실행해보면, 일장기가 태극기로 변경된 걸 확인할 수 있습니다.

딱 여기까지 할 생각이었는데, 작업 중에 엔딩 화면에 나오는 일본어 글꼴이 모여 있는 곳을 발견했습니다. 그걸 보니 한글화까지 하고 싶더군요.
국가명, 국기 수정보다 훨씬 어려운 작업입니다.

MESEN에서 롬 파일을 열어 모드 선택 화면까지 갑니다. Debug→PPU Viewer→CHR Viewer를 선택한 뒤, 아래 옵션에서 CHR Selection 오른쪽을 눌러 CHR: $1E000 - $1FFFF를 고르면, 왼쪽에 일본어 폰트가 모여 있는 걸 볼 수 있습니다.

이 게임은 일본어가 딱 엔딩 화면에만 나옵니다. 전부 64자이며, 이 일본어를 한글로 바꾸면, 한글 64자를 쓸 수 있습니다.

엔딩 문구를 확인한 뒤, 번역하고, 그 번역된 문장의 글자 수가 중복 빼고 64자 이하인지 봐야 합니다. 64자를 넘으면, 폰트 확장 같은 걸 해야 하는데, 그건 현재 제가 할 수 있는 수준이 아니니 어떻게든 64자 안으로 해결하기로 합니다.
다행히 바꾸려는 한글 글자 수가 55자 정도라서 충분했습니다.

이제 이 일본어 글꼴들을 각각 눌러서 도트를 찍어 한글 글꼴로 바꿉니다. 한글 글꼴은 갈무리M체(8x8 고딕)를 보고 그대로 따라 만들기로 합니다.

부호까지 포함해서 64자 칸를 꽉 채워 한글을 넣었습니다. 시간이 상당히 걸렸네요.

마지막 난관이 있습니다. 폰트 세트 주소는 알았는데, 이 폰트가 엔딩 화면에서 나올 때 어느 주소에서 불러내는지 각 폰트의 고유번호가 무엇인지 아직 모릅니다.

방법은 이 폰트 세트 글자 중 일부를 알파벳으로 바꾼 뒤, 엔딩 화면에서 나오는 알파벳 문구를 확인해서 그걸 SearchR이란 툴로 찾아 글자의 고유번호를 알아내는 겁니다.

전 그 방법을 쓰진 않고, Goal 영문판 롬의 엔딩 문구 주소를 SearchR로 찾았습니다. ‘congratulations’으로 찾으니 나오더군요.

그러나 영문판 롬과 일본판 롬의 주소는 서로 달라서 헤맸습니다. 영문판보다 조금 위의 주소 부근에서 일본판 롬의 엔딩 문구 주소를 찾아냈습니다.

그 값들을 엔딩 문구와 대조해가며, 폰트의 고유번호를 알아냈습니다. 엔딩 문구에 포함되지 않는 글자도 폰트 세트에 값을 매기다보면, 일정 규칙을 알게 되어 64글자 전부의 고유번호를 알아낼 수 있었습니다. 03 값은 빈칸이라는 점, 줄바꿈 사이에 값이 3개 들어가 있다는 점도 알게 되었습니다.
지루하고 집중력을 요하는 작업이라 애먹었습니다.

알아낸 폰트 고유번호를 토대로 한글 표시를 재배열하고 값을 만들어 HxD로 원본 값들을 바꿔치기했습니다.

엔딩 문구를 확인하고 값과 대조해서 몇 차례 오류를 고치는 작업을 거친 뒤, 드디어 한글화를 마쳤습니다.

작업 완료된 한글판 롬 파일이 아닌 패치 파일만 배포하고 싶을 경우는, Lunar IPS로 IPS 파일을 만들 수 있습니다. Create IPS Patch 눌러 원본 롬과 한글판 롬을 순서대로 선택해주면 IPS 파일이 생성됩니다.

몇 줄밖에 안 되는 문구를 한글화하는 것도 이렇게 힘든데 RPG 한글화 작업은 얼마나 고될까요. 게다가 패미컴 게임은 용량 제약이 있어서 더 까다롭습니다.

난생 처음 해본 작업인데, 제 추억의 게임을 한국판으로 만들 수 있어서 뿌듯합니다.


배포 링크 - GOAL!! 한국판 패치

댓글 없음:

댓글 쓰기