emulog
홈 › 가이드 › 한글패치 제작기

GTA 어드밴스 한글패치 제작기 — 상점 글자 캐시가 멈춘 이유

글 emulog 운영팀 · 최초 발행 · 최종 수정

게임보이 어드밴스용 《Grand Theft Auto Advance》의 북미판을 대상으로 대사와 메뉴뿐 아니라 화면에 그림으로 새겨진 글자도 한글로 바꿨습니다. 이 글은 공개한 베타 패치를 만들면서 원본에서 문장과 그림의 위치를 확인하고, 상점에서 품목을 계속 넘기면 게임이 멈추던 문제를 재현해 고친 기록입니다. 패치가 처리한 문장 수와 아직 처리하지 못한 문장 수를 구분하고, 실제 확인하지 않은 플레이 구간은 검증했다고 적지 않습니다.

목차
  1. 북미판 원본과 공개 범위
  2. 다섯 언어의 문장과 한글 글꼴
  3. 타이틀과 상점의 그림 글자
  4. 상점에서 품목을 넘기자 멈춘 까닭
  5. 패치와 세이브 검증, 남은 문제
  6. 원본에 패치를 적용하는 방법

1. 북미판 원본과 공개 범위

작업 대상은 게임 코드 BGTE인 《Grand Theft Auto Advance (USA)》입니다. 원본 크기는 16,777,216바이트이고 CRC32는 1FA131E8, SHA-256은 215c574d5afbda0aadbf89dc76b765cfaaeb35953eab63f7687d8bfe8a8e0f4d입니다. 해시는 파일 내용으로 계산한 식별값입니다. 이름이 같은 파일이라도 내용이 다른 판본에 패치를 적용하지 않도록 이 값을 확인해야 합니다. 게임 개발사는 Digital Eclipse / Rockstar Games로 표기합니다. 게임과 그 안의 원본 자료에 대한 권리는 각 권리자에게 있습니다.

공개판은 북미판 영어를 한국어로 표시하는 베타입니다. 대상에는 대사, 메뉴, 화면 위에 겹쳐 보이는 정보 표시(HUD), 임무 브리핑, 크레딧, 타이틀과 상점 이미지가 들어갑니다. 퍼블리셔 표기 DIGITAL ECLIPSE는 영문 원문으로 남겼습니다. 화면에서 한국어가 나오는 것과 게임 안의 모든 영문을 전수 교체했다는 것은 다른 주장입니다. 공개 정보에는 화면 표시가 확인된 문장 1,608개가 1,880개 가운데 한국어로 나온다고 적었고, 드문 메뉴나 대사는 영어로 남을 수 있다고 명시했습니다.

확인 항목기록된 값해석
원본 크기16,777,216바이트북미판 식별값
공개판 문장1,608 / 1,880개표시 조건을 통과한 대상 문장
미해결 문장272개대사 67개, 메뉴 205개
상점 글자 캐시37칸품목 전환 중 음절 누적이 문제
최신 BPS 파일203,412바이트v0.1.2-beta 패치 크기

표의 문장 수는 원본 게임 전체의 대사 수를 뜻하지 않습니다. 조사에서 확인한 영어 슬롯에는 중복과 빈 슬롯이 섞여 있었고, 조사 당시 구조를 해석하지 못한 그래픽과 다른 표시 경로도 있었습니다. 그래서 실제 화면에 붙인 공개판의 수치를 별도로 씁니다.

2. 다섯 언어의 문장과 한글 글꼴

원본을 조사할 때 처음부터 화면의 문장만 찾아서 바꾸지 않았습니다. 영어·스페인어·프랑스어·이탈리아어·독일어가 같은 구조 안에 들어 있었기 때문입니다. 대사는 언어 번호와 문장 위치를 한 쌍으로 가진 기록에서 읽는 장면을 실행 중에 확인했습니다. 문장 위치를 가리키는 주소값을 포인터라고 합니다. 오프닝 대사에서는 영어 번호를 고르는 명령이 해당 포인터를 읽는 모습까지 확인했습니다. 이 관찰 한 건을 근거로 다른 모든 텍스트가 같은 방식으로 표시된다고 단정하지 않았습니다.

정적 조사에서는 대사 디렉터리의 기록 1,156개와 언어별 메뉴 618칸을 확인했습니다. 크레딧은 별도 구조였으며 영어 활성 슬롯 164개가 확인됐습니다. 원본에서 텍스트를 꺼냈다가 수정하지 않고 다시 넣었을 때 바이트가 그대로인지도 검사했습니다. 보이는 문자열을 찾았다는 사실과 그 문자열이 게임에서 실제 사용된다는 사실을 나눠 보려고 한 절차입니다. 다른 언어의 같은 번호 문장이나 비어 있는 칸까지 지워 버리면 원래 참조 관계가 무너질 수 있습니다.

번역 초안 작성에는 기계 번역을 활용했고, 별도의 독립 검토 결과도 대조했습니다. 초안이나 그 검토 결과를 곧바로 게임에서 읽을 수 있는 문장으로 간주하지는 않았습니다. 문장별 용어와 표시 폭, 어느 화면이 해당 문장을 읽는지 확인하는 절차가 따로 필요했습니다. 예컨대 대사가 아닌 메뉴에서 불리는 짧은 단어를 대사 화면의 너비만 기준으로 통과시키면 정작 메뉴에서는 잘릴 수 있습니다. 공개판의 1,608개는 단순히 번역 초안이 저장된 수가 아니라 표시 조건을 통과한 수치입니다. 나머지 문장은 영어로 남을 가능성을 배포 정보에서 숨기지 않았습니다.

문장만 옮겨 놓아서는 한글이 표시되지 않습니다. 게임의 글자 그리기 경로가 한글 모양을 갖고 있어야 합니다. 글자의 비트맵 모양 하나를 글리프라고 하며, 그 모양을 저장하거나 불러올 위치를 글리프 슬롯이라고 부릅니다. 이 작업에는 SIL OFL 라이선스의 Galmuri 글꼴을 사용했습니다. 원본의 작은 대사 글자, 큰 메뉴 글자, HUD 글자는 같은 화면에서 보이더라도 서로 다른 표시 경로였습니다. 작은 글자에서 나온 결과를 큰 글자와 HUD에 그대로 적용하지 않고 각각의 경로를 조사했습니다.

실제 대사 화면의 배경층을 디코드한 다음 같은 시점의 캡처와 비교했을 때 불투명한 1,968픽셀의 색상 차이가 없었습니다. 여기서 타일은 화면을 이루는 작은 그림 조각이며, 타일맵은 어느 자리에 어떤 조각을 놓을지 적은 표입니다. 이 비교는 화면에 그려진 대사의 위치를 이해하는 데 쓰였습니다. 전체 게임의 문장 위치나 모든 장면의 표시 품질을 증명한 것은 아닙니다. 최종 문장 입장 여부도 글꼴 모양 확인과 별도로 관리했습니다.

오프닝 대사가 한글로 표시된 게임보이 어드밴스 화면
오프닝 대사 화면. 작은 대사 글자는 메뉴의 큰 글자 및 HUD와 다른 표시 경로를 사용합니다.

3. 타이틀과 상점의 그림 글자

글자가 텍스트 데이터가 아니라 배경 그림에 박혀 있다면 포인터가 가리키는 문장을 바꿔도 화면은 영어 그대로입니다. 타이틀 로고가 그런 사례였습니다. 원본 로고의 타일·배치표·색상표를 찾아 실제 화면의 배경층과 대조했고, 로고의 불투명한 6,833픽셀과 투명 영역이 디코드 결과와 일치하는지 확인했습니다. 조사 중에는 처음 짚은 그림 기록의 시작점이 틀렸다는 사실도 확인했습니다. 서로 이웃한 기록의 크기와 속성이 같아 단순한 화면 대조만으로 잘못된 경계를 발견하기 어려웠습니다. 실제 읽는 쪽의 동작을 따라가 기록 경계를 바로잡았습니다.

타이틀의 시작 안내, 상점 제목과 구매 안내도 별개의 이미지 영역이었습니다. 상점 제목을 ‘암무네이션’으로 고치면서 이미지의 기존 타일 자리를 다시 구성하고, 상점 화면에서 제목과 품목명, 가격을 함께 확인했습니다. 그림 글자를 수정하는 일과 게임이 그 그림을 제대로 불러오는 일은 따로 검사해야 합니다. 배포판에는 이들 이미지를 합쳤지만 DIGITAL ECLIPSE 표기는 원문으로 유지했습니다. 첫 베타 뒤에는 메인 메뉴의 선택되지 않은 항목도 원작처럼 어둡게 보이도록 고쳤습니다. 같은 한글 글자라도 선택 상태에 따라 다른 색의 글꼴 시트를 쓰는 원작의 표현을 따랐습니다.

한글로 바꾼 GTA 어드밴스 타이틀과 START를 누르세요 안내
공개된 타이틀 화면. 퍼블리셔의 영문 표기는 유지했습니다.
선택 항목은 밝고 선택되지 않은 항목은 어두운 한글 메인 메뉴
메인 메뉴의 미선택 글자 색을 원작의 표시 방식에 맞춘 화면입니다.

4. 상점에서 품목을 넘기자 멈춘 까닭

공개 후 제보 #26·#27·#28에서 상점의 품목을 좌우로 계속 넘기면 방탄조끼 부근에서 게임이 멈추는 현상을 다뤘습니다. 제보만 보고 문장 길이를 줄이지 않고, 이전 공개판에 상점을 강제로 여는 진단용 상태를 더해 현상을 다시 만들었습니다. 멈춘 지점의 오류 기록은 상점 글자 캐시를 가리켰습니다. 진단용 상태는 배포용 게임이 아니며 이 상태로 확인한 범위를 실제 게임의 모든 상점에 확대할 수 없습니다.

문제는 한 줄이 너무 길어서가 아니었습니다. 글자 캐시는 이미 그린 글리프를 다시 쓰기 위해 잠시 보관하는 자리입니다. 상점에서 사용하는 캐시는 37칸인데, 품목을 넘길 때마다 비우는 것이 아니라 상점에 들어갈 때만 처음으로 비웠습니다. 영어 품목명은 알파벳과 숫자를 재사용하므로 이 범위 안에 들었습니다. 한글 품목명에는 서로 다른 음절이 41개 이상 등장했고, 이전 품목에서 쓴 음절이 쌓이면서 캐시가 가득 찼습니다. 방탄조끼라는 이름 자체가 잘못됐다는 뜻이 아니라 그 이름에 도달하기까지의 누적 사용량이 원인이었습니다.

수정판에서는 지금 화면의 타일맵에서 참조하지 않는 글자 슬롯을 찾아 버리고, 화면에서 쓰는 슬롯만 앞으로 당긴 뒤 새 음절을 추가했습니다. 타일맵의 칸과 글자 슬롯의 대응도 함께 다시 써야 화면에 엉뚱한 글자가 나타나지 않습니다. 한 화면에서 실제로 필요한 글자가 37칸을 넘는 경우까지 해결했다고 주장하는 방식은 아닙니다. 이전 품목의 글자만 불필요하게 계속 들고 있는 경우를 제거한 것입니다.

수정 후 강제 상점 진단 화면에서 품목을 여러 차례 넘기고 좌우 입력을 각각 1,200프레임 동안 이어 갔습니다. 멈춤을 일으키던 지점은 다시 실행되지 않았고, 화면이 참조하는 글자 슬롯은 모두 유효 범위에 있었으며 중복 키도 없었습니다. 품목명·최대치·가격 표시를 함께 확인했습니다. 다만 정상 진행 세이브로 두 번째 도시의 무기점에 직접 진입한 화면은 검증 기록에 없습니다. 이 한계를 공개판의 전체 상점 검증과 혼동하지 않습니다.

5. 패치와 세이브 검증, 남은 문제

첫 베타 v0.1.0-beta와 메뉴 표시를 다듬은 v0.1.1-beta는 2026년 9월 25일 공개됐습니다. 상점 멈춤을 수정한 v0.1.2-beta는 2026년 10월 2일 공개됐습니다. 패치의 형식은 BPS입니다. BPS는 원본 파일과 달라진 부분을 기록해 원본에 적용하는 패치 파일 형식입니다. 최신 패치를 원본에 적용해 얻은 결과가 의도한 파일과 바이트 단위로 같아지는지 서로 다른 적용 경로로 확인했습니다. 이 검사는 패치 파일의 재현성에 대한 검사이지 처음부터 끝까지 플레이했다는 증명은 아닙니다.

세이브 호환도 별도로 검사했습니다. 원본과 공개판은 같은 세이브를 읽고 쓰며, 최신판은 앞선 두 베타와의 세이브 호환 검사를 통과했습니다. 이미 원본에서 만든 세이브를 이어 쓸 수 있고 업데이트를 위해 새 세이브를 처음부터 만들 필요는 없습니다. 이 사실과 특정 진행 지점의 화면을 직접 살펴봤는지는 구분합니다.

남은 문제도 공개합니다. 표시가 확인된 한글 문장 밖의 272개 문장은 아직 미해결이며, 드문 메뉴나 대사는 영어로 나올 수 있습니다. 타이틀 시작 안내의 ‘를’은 작은 화면에서 뭉쳐 보일 수 있어 개선 대상으로 남아 있습니다. 그래픽 조사에서 찾아낸 모든 배경과 간판을 한글로 바꿨다고 주장하지 않습니다. 이번 패치는 베타이며, 기록되지 않은 게임 전 구간의 무결성까지 보증하는 완성판이 아닙니다.

6. 원본에 패치를 적용하는 방법

패치 파일은 운영자가 공개한 한글패치 배포 사이트에서 받습니다. 사용자가 정품에서 직접 만든 《Grand Theft Auto Advance (USA)》 원본의 CRC32 1FA131E8과 SHA-256 215c574d5afbda0aadbf89dc76b765cfaaeb35953eab63f7687d8bfe8a8e0f4d를 확인한 뒤, 해당 원본에 v0.1.2-beta BPS 파일을 적용합니다. 원본은 보존하고 별도의 출력 파일을 만들어야 원본과 패치판을 구분할 수 있습니다. 다른 지역판이나 내용이 다른 덤프에 그대로 적용해서는 안 됩니다.

이 사이트와 배포 페이지는 ROM·BIOS·게임 데이터를 배포하지 않으며 그러한 파일을 받을 곳도 안내하지 않습니다. 공개하는 것은 사용자가 가진 적합한 원본에 적용할 차이 파일입니다. 적용 후에도 원본과 패치판의 세이브가 호환되지만, 패치가 정품 게임을 대신 제공하는 것은 아닙니다. 패치의 제작 경위와 실제 한계까지 함께 읽고 사용할 수 있도록 이 기록을 남깁니다.

관련 가이드