[{"content":" 세가 새턴 폴리스너츠 한글화(작업 후기 3부작 )를 진행하며 실제로 부딪히고 실측으로 확정한 기술 지식을 정리했습니다. 이 게임을 한글화하려면 무엇을 알아야 했는지에 대한 기록입니다. (폴리스너츠는 코나미 새턴 타이틀이라, 여기 나오는 구조·함정의 패턴 상당수는 비슷한 시기 코나미 새턴 게임에도 그대로 적용될 가능성이 높습니다.)\n0. 큰 그림 — 무엇을 각오해야 하나 한글화는 \u0026ldquo;번역\u0026quot;이 30%, \u0026ldquo;게임이 글자를 다루는 방식을 역분석하는 일\u0026quot;이 70% 입니다. 순서는 대략 이렇습니다.\n폰트 엔진 해독 — 게임에게 한글이라는 \u0026lsquo;그림\u0026rsquo;을 가르친다 텍스트 시스템 전수 파악 — 대사가 어디에 어떤 형식으로 사는지 전부 찾는다 추출 → 번역 → 인코딩 → 주입 파이프라인 구축 길이 초과(잘림)와의 싸움 — 이게 가장 길고 어렵다 런타임 검증 — 에뮬레이터로 실제 화면 확인 핵심 마인드셋 하나: \u0026ldquo;있는 그대로를 존중하라.\u0026rdquo; 원본에 이상해 보이는 게 있으면 (의도적 오류, 중복 데이터, 비표준 정렬) 십중팔구 이유가 있습니다. 함부로 \u0026lsquo;고치면\u0026rsquo; 게임이 죽습니다.\n1. 텍스트는 한 군데 있지 않다 — 텍스트 시스템 전수 조사 가장 흔한 실패는 \u0026ldquo;본문 대사만 번역하면 끝\u0026quot;이라고 생각하는 것입니다. 코나미 게임은 서로 다른 텍스트 시스템이 여러 개 공존합니다. 폴리스너츠는 6종이었습니다.\n시스템 내용 형식 비고 본문(SZ) 스토리 대사·메뉴 rank 인코딩(아래 §2) 가장 큰 덩어리 음성 자막(SX) 컷신 음성 위 자막 스트림에 섹터 정렬로 박힘 컨테이너 매직(SX9% 등) 무비 자막(MOV) 영상(무비) 자막 DLOG 헤더 + 텍스트 영상 스트림 사이 하드코딩 시스템 문자열 부팅 메뉴·세이브·디스크 교체 안내 실행 바이너리에 직접 rank이지만 complement 안 함 비트맵 이름표(NAMEID) 화면에 뜨는 인물 이름 그림 4bpp 비트맵 플레이트 텍스트가 아니라 그림 미니게임 평문 자막 추격/슈팅 씬 자막 평문 Shift-JIS 추출기가 놓치기 쉬움 교훈 추출기를 한 형식만 스캔하게 짜면, 다른 형식의 텍스트를 통째로 놓칩니다. 폴리스너츠에서 추격씬 자막(평문 SJIS)이 마지막까지 일본어로 남았던 이유가 이것이었죠. 번역이 끝났다고 믿은 뒤에도 실제 플레이로 \u0026ldquo;아직 일본어인 화면\u0026quot;을 사냥해야 합니다. 미번역 판별 자동화: 빌드된 ISO를 디코드해 히라가나/가타카나가 남아 있으면 미번역입니다 (한글에는 가나가 없으니까요). 2. 폰트 엔진 — 게임에 한글을 가르치기 2-1. 비트맵 글꼴 구조 글자 = 작은 비트맵. 폴리스너츠는 12×12px, 2bpp(0=투명 1=그림자 2=엣지 3=본체), 36바이트/글자. 한글화 = 안 쓰는 한자(또는 빈) 슬롯에 한글 글리프 비트맵을 덮어쓰기. 폴리스너츠는 Galmuri9 글꼴을 12×12 2bpp로 렌더해 주입했습니다. 2-2. 텍스트 인코딩 — \u0026ldquo;코나미 rank\u0026rdquo; + complement 폴리스너츠 텍스트의 핵심 규칙입니다. 본문(SZ) 기준:\n글자는 rank 값(폰트 슬롯 인덱스)으로 저장되는데, 파일에는 complement(보수) 형태로 들어갑니다. complement = ~rank \u0026amp; 0xFF(바이트별). 디코드는 다시 보수를 취하면 됩니다. 슬롯 → rank 변환은 글자 종류·페이지별로 다른 베이스를 더합니다(히라가나·가타카나·한자 페이지별 상이). ⚠️ 시스템마다 complement 여부가 다릅니다. 본문(SZ)은 complement를 하지만, 하드코딩 시스템 문자열은 native rank 그대로입니다. 같은 게임 안에서도 텍스트 시스템마다 인코딩 규칙을 따로 확인하세요.\n2-3. 슬롯 한계는 실측으로 폰트가 받아주는 슬롯에는 상한이 있습니다(폴리스너츠는 1953까지 동작, 그 위는 렌더 실패). 한글 음절 수가 이 한도를 넘으면 희귀 음절을 정리해야 합니다. 빈 슬롯 테스트로 직접 찾으세요. 2-4. 폰트가 여러 개일 수 있다 게임 전역 폰트 외에, 특정 씬이 다른 폰트 파일을 쓰기도 합니다. 이 경우 \u0026ldquo;안 쓰는 한자 1글자 = 한글 1음절\u0026quot;로 carrier 매핑하고 그 셀에 한글 글리프를 덮습니다. 함정: 동일 폰트가 여러 아카이브에 번들될 수 있습니다. 게임이 실제로 어느 파일을 로드하는지는 세이브스테이트 RAM과 파일 바이트를 대조해 확정해야 합니다. 엉뚱한 사본을 패치하면 화면은 그대로예요. 3. 아카이브·디스크 구조 3-1. DPK 아카이브 폴리스너츠는 파일을 DPK 아카이브(매직 DIRF)로 묶습니다. CRC 우회: DIRF의 CRC 필드를 0으로 쓰면 게임이 무결성 검사를 건너뜁니다. 패치의 기본기. 같은 아카이브가 여러 copy로 존재할 수 있습니다(폴리스너츠 GAME DPK는 3 copy). 모든 copy를 패치하지 않으면 게임이 다른 copy를 읽어 일본어가 튀어나옵니다. 3-2. ISO 섹터 — zero-shift 원칙 기존 파일의 섹터 위치(LBA)를 옮기지 마세요. 게임은 특정 파일이 특정 섹터에 있다고 하드코딩으로 가정합니다. 옮기면 자막 전멸·부팅 불능. 섹터를 새로 추가할 땐 MODE1 raw 구조(sync + MSF + mode + 유저데이터 + EDC/ECC)를 직접 만들어야 합니다. 유저 데이터만 쓰면 드라이브가 섹터를 인식 못 해 부팅 즉시 멈춥니다. 자막 I/O는 2048B 유저영역 매핑으로 읽고 쓰세요. 선형으로 다루면 섹터 경계를 넘는 블록이 깨집니다. 3-3. EDC/ECC — 의도적 오류를 존중하라 원본 디스크에 일부러 심어둔 EDC 오류가 있을 수 있습니다(복제 방지). \u0026ldquo;고치면\u0026rdquo; 오히려 게임이 망가집니다. edcre류 도구 사용 금지. 에뮬레이터는 무시하므로 재계산 불필요(실기 때만 점검). 4. 가장 큰 적 — 길이 초과(잘림) 문제 일본어는 짧고, 한국어로 옮기면 글자 수가 늘어납니다. 대사 \u0026lsquo;상자\u0026rsquo;는 일본어 크기에 맞춰져 있어 넘치면 화면에서 끝이 잘립니다(\u0026quot;…세이브하시겠습\u0026rdquo;). 프로젝트 내내 따라다니는 최대 숙제예요.\n해법 A — relocate(빈방으로 옮기기) · 본문 텍스트용 게임은 \u0026ldquo;몇 번째 글자부터 읽어라\u0026quot;라는 포인터 값으로 대사 위치를 찾습니다. 이 포인터 계산 규칙을 100% 역분석하면, 긴 한국어 대사를 파일 끝 빈 공간에 적어두고 포인터만 그쪽으로 돌릴 수 있습니다. (좁은 방에 짐을 우겨넣는 대신, 복도 끝 빈방에 옮기고 \u0026ldquo;이쪽으로\u0026rdquo; 푯말을 붙이는 발상)\n해법 B — 다이어트(번역 단축) relocate는 포인터를 돌릴 \u0026lsquo;앵커\u0026rsquo;가 있는 블록에만 통합니다. 앵커가 없는 블록(메뉴·선택지·요약 화면)은 뜻은 유지하되 군더더기를 덜어 일본어 바이트 예산 안에 앉힙니다(\u0026ldquo;당신의\u0026quot;를 빼고, \u0026ldquo;향한다\u0026rdquo;→\u0026ldquo;간다\u0026rdquo;).\n옮길 수 없는 텍스트 — SX/MOV는 예산 엄수 음성·영상 자막은 스트림 사이에 섹터 정렬로 박혀 있어 relocate 불가. 한국어는 원본 바이트 안에 들어가야 하고 넘치면 빌드가 잘라냅니다. 글자당 거의 2바이트라 짧은 블록은 압축 의역이 필수입니다.\n직접 포인터 확장은 보통 막혀 있다 \u0026ldquo;포인터 값을 그냥 크게 쓰면?\u0026rdquo; → 대개 불가능합니다. 텍스트 핸들러가 피연산자 첫 바이트를 타입 태그로 쓰기 때문(값이 일정 크기를 넘으면 명령어로 해석됨). 디스어셈블/로거로 한계를 먼저 확인하고, 안 되는 길에 시간을 쏟지 마세요.\n5. 함정 모음 — 미리 알면 몇 주를 아낀다 에뮬레이터의 \u0026lsquo;친절\u0026rsquo;이 만든 착시 (두 달을 잡아먹은 함정).\n게임은 대사를 찾을 때 메모리의 특정 \u0026lsquo;칸\u0026rsquo;에서 위치표를 읽습니다. 그런데 새턴의 CPU는 이런 표를 반드시 짝수 번지(2의 배수 자리)에서 읽어야 한다는 규칙이 있습니다. 제 계산이 한 칸 어긋나 홀수 번지를 가리키고 있었던 게 진짜 원인이었어요. 이게 이른바 정렬(alignment) 오류 입니다 — 줄을 맞춰 서야 하는데 한 칸 삐져나온 상태죠.\n문제는, 실기(진짜 새턴)라면 이런 어긋난 읽기는 즉시 에러를 냅니다. 그런데 제가 쓰던 에뮬레이터는 어긋난 번지를 슬쩍 짝수로 맞춰서 읽어줬습니다(나름의 친절한 보정). 그 바람에 어떤 빌드는 우연히 맞는 값을 집어 정상 동작하고, 어떤 빌드는 바로 옆 칸의 엉뚱한 값을 집어 깨졌습니다. 겉으로는 마치 \u0026ldquo;같은 포인터가 어떨 땐 이 주소, 어떨 땐 저 주소를 가리키는\u0026rdquo; 것처럼 보였죠. 실제로는 포인터가 둘이었던 게 아니라, 한 칸 어긋난 읽기를 에뮬이 그때그때 다르게 보정한 착시였습니다. 저는 두 달 동안 \u0026ldquo;주소가 두 개\u0026quot;라는 잘못된 전제로 코드를 짜고 있었던 거예요.\n결국 정렬 계산에 쓰는 기준값 숫자 하나를 바로잡자, 두 달간의 유령이 거짓말처럼 사라졌습니다.\n→ 교훈 두 가지. ① 증상이 \u0026ldquo;같은 게 어떨 땐 되고 어떨 땐 안 되는\u0026rdquo; 식으로 갈리면, 로직을 파기 전에 정렬·오프셋(짝수/홀수, 한 칸 밀림) 부터 의심하세요. ② 에뮬레이터의 관대함이 실기와 다른 결과를 줄 수 있음을 기억하세요 — 에뮬에선 우연히 되던 게 실기에선 안 될 수 있습니다.\n추출기가 못 잡는 텍스트들. 빈 레코드에서 break / 멀티섹터(4096B) 청크의 둘째 섹터 누락 / 평문 SJIS 블록. 연결 버퍼로 파싱하고, 여러 형식을 모두 스캔해야 합니다.\n렌더러의 짝(2바이트) 읽기. 일부 렌더러는 본문을 2바이트씩 짝지어 읽습니다. 단바이트 (반각 공백·쉼표)를 끼우면 짝이 어긋나 그 뒤 전체가 깨집니다. → ASCII를 전각으로 변환.\n다중 사본 — 한 copy만 고치면 화면이 안 바뀝니다.\n마커·제어코드 보존. 루비/방점/%s·%d/버튼 태그 같은 제어 토큰을 일관 규칙으로 처리하세요. 지우면 메뉴 로직이 깨집니다.\n6. 작업 방법론 — 어떻게 일하면 덜 고생하나 재현 가능한 자동 파이프라인: 문자매핑 → 라운드트립 검증 → 예산/린트 → 빌드 → 정적검증 → relocate → 재검증. 항상 원본 ISO에서 시작(산출물 위 재빌드 금지). 세이브스테이트 분석: 깨진 화면의 RAM을 파일 바이트와 대조해 \u0026ldquo;실제 로드처/깨진 값\u0026quot;을 확정. 시금석 회귀 테스트: 까다로운 장면 하나를 모든 빌드의 첫 확인 지점으로(폴리스너츠는 \u0026lsquo;추리소설/담배\u0026rsquo; 두 줄). 라운드트립 검증: 원문→디코드→인코드→디코드가 일치하는지 자동 검사. AI 협업: 방대한 번역은 AI에게, 사람은 가이드 작성·검수·일관성에 집중. 단 AI는 추출 깨짐을 그대로 옮기므로(예: 깨진 글자 \u0026lsquo;의사\u0026rsquo;가 실은 \u0026lsquo;군대\u0026rsquo;) 원작 대조 검수가 필수. 7. 체크리스트 (요약) 폰트 구조 해독(비트맵 포맷·슬롯·인코딩 rank/complement) 폰트 슬롯 상한 실측 모든 텍스트 시스템 전수 조사 + 각 인코딩 규칙 개별 확인 추출기가 빈 레코드·멀티섹터·평문 블록을 놓치지 않는지 검증 DPK CRC=0 우회, 모든 copy 패치 zero-shift 유지, 섹터 추가 시 MODE1 헤더, 자막은 유저영역 매핑 I/O edcre 금지 잘림: relocate(앵커 본문) + 다이어트(앵커 없는 것) + SX/MOV 예산 엄수 시금석 장면 + 라운드트립 + 미번역 자동탐지로 회귀 방지 세이브스테이트로 실제 로드처·깨진 값 확정 런타임 통플레이 QA로 렌더 버그 사냥 배포는 xdelta 차분 패치(게임 데이터 미포함), 면책·원본 해시 명시 이상은 폴리스너츠 한 작품을 한글화하며 부딪힌 것들이지만, \u0026ldquo;여러 텍스트 시스템 / 폰트 비트맵 주입 / rank 인코딩 / DPK·zero-shift / 잘림과의 싸움 / 함정들\u0026rdquo; 이라는 뼈대는 같은 시기 코나미 새턴 게임에도 반복될 가능성이 높습니다. 누군가의 다음 한글화에 이 기록이 한 걸음이라도 보태지길.\n","permalink":"https://razventi.github.io/codeplay/posts/policenauts/policenauts-localization-guide/","summary":"\u003cblockquote\u003e\n\u003cp\u003e세가 새턴 \u003cstrong\u003e폴리스너츠\u003c/strong\u003e 한글화(\u003ca href=\"/codeplay/categories/policenauts/\"\u003e작업 후기 3부작\u003c/a\u003e\n)를 진행하며\n실제로 부딪히고 실측으로 확정한 기술 지식을 정리했습니다. 이 게임을 한글화하려면 무엇을\n알아야 했는지에 대한 기록입니다.\n(폴리스너츠는 코나미 새턴 타이틀이라, 여기 나오는 구조·함정의 패턴 상당수는 비슷한 시기\n코나미 새턴 게임에도 그대로 적용될 가능성이 높습니다.)\u003c/p\u003e","title":"폴리스너츠(세가 새턴) 한글화, 기술적으로 알아야 했던 것들"},{"content":" 📖 폴리스너츠 한글화 작업 후기 — 한 사람의 버킷 리스트가 현실이 되어가는 넉 달의 기록. ① 글자를 가르치다 · ② 검은 화면과의 긴 싸움 · ③ 다 갈아엎고, 전부 새로\n지난 이야기: 두 달간의 검은 화면 끝에 정렬 오류라는 진범을 잡았고, 게임이 대사를 불러오는 구조의 지도를 손에 넣었다.\n6장 — 다 갈아엎고, 처음부터 제대로 (6월 11일) 그리고 6월, 큰 결단을 내렸다.\n그때까지의 번역은 게임의 일부 — 도입부와 몇몇 장면 — 에만 손이 닿아 있었다. 실험과 연구를 거듭하며 쌓은 부분 번역이었다. 하지만 이제는 게임이 어떻게 작동하는지 충분히 알았다. 그래서 결심했다. 그동안의 부분 번역을 전부 내려놓고, 처음부터, 끝까지, 전부 새로 번역하자.\n그동안 다져둔 토대 — 레퍼런스와 번역 가이드 — 가 비로소 진가를 발휘하는 순간이었다. 게임의 모든 대사를 통째로 끄집어냈다. 본편 스토리 16,777개의 대사 조각. 세 장의 디스크에 흩어진 음성 자막과 영상 자막 5,500여 개. 그 방대한 말의 바다를, 클로드가 가이드에 따라 한 파일씩 한국어로 옮겨나갔다. game00부터 game1a까지 — 그 속도와 끈기는 놀라웠다. 디스크 1에서 3까지 빠르게 채워진 그날의 커밋 목록은, 그 자체로 하나의 마라톤 기록이다. 나는 옆에서 쉼 없이 결과를 검수하고, 어긋난 말투를 바로잡고, 다시 넘기길 반복했다.\n번역은 단순히 뜻만 옮기는 일이 아니었다. 가이드대로 조나단의 독백체가 살아 있는지, 인물 사이의 말투가 관계에 맞는지 한 줄 한 줄 짚었다. 검수 과정에서 함정도 여럿 걸러냈다. 추출 과정에서 글자가 깨져 \u0026lsquo;의사\u0026rsquo;로 보이던 단어가 사실은 \u0026lsquo;군대\u0026rsquo;였고 (\u0026lsquo;물론 군대지\u0026rsquo;라고 말하던 건 전직 특수부대원 메릴이었다), \u0026lsquo;약\u0026rsquo;으로 보이던 게 실은 폭탄이 든 \u0026lsquo;가방\u0026rsquo;이었다. 이런 함정을 클로드와 함께 하나하나 바로잡으며, 원작의 결을 지켜냈다.\n이번엔 작업 방식도 바꿨다. 매번 손으로 하던 빌드를, 누구나 똑같이 재현할 수 있는 자동화된 공정으로 새로 짰다. 검증과 리포트가 단계마다 자동으로 따라붙어, 실수가 끼어들 틈을 줄였다. 30년 묵은 게임을 상대하는 일을, 비로소 \u0026lsquo;시스템\u0026rsquo;으로 다루기 시작한 것이다.\n7장 — 새벽의 함정들 (6월 12일) 전량 번역을 게임에 집어넣는 과정은, 새로운 함정의 연속이었다.\n디스크에 한국어를 더 담으려고 공간을 늘렸더니, 두 번째 디스크가 아예 부팅조차 되지 않았다. 알고 보니 새로 만든 공간에 디스크가 인식할 수 있는 \u0026lsquo;겉표지\u0026rsquo;를 제대로 씌우지 않은 탓이었다. 첫 번째 디스크는 우연히 통과했을 뿐, 두 번째 디스크는 그 빈 공간을 읽다가 그대로 멈춰 섰던 것이다. 보이지 않는 규격 하나가 부팅 전체를 가른다는 걸, 그렇게 배웠다.\n도입부 자막이 깨지는 문제도 추적 끝에 잡았다. 데이터를 디스크에 쓰는 방식이 미묘하게 어긋나 자막이 망가졌던 것인데, \u0026ldquo;화면에 깨진 일본어 한자가 보이면, 그 글자를 역으로 추적해 원문을 복원한다\u0026quot;는 진단법까지 만들어, 무엇이 잘못됐는지를 거꾸로 짚어냈다.\n그리고 이 무렵, 오래 묻혀 있던 비밀 하나가 드러났다. 영상과 음성에 입혔다고 믿었던 자막들이 — 무비 자막도, 성우 음성 위에 얹히는 자막도 — 어느 순간부터 게임 화면에 아예 나오지 않고 있었던 것이다. 그것도 한두 빌드가 아니라, 3월의 어느 패치 이후로 만든 모든 빌드에서 조용히 사라져 있었다. 자막을 써넣는 위치가 미세하게 어긋나, 한국어는 분명 디스크 어딘가에 적혀 있는데 게임은 그걸 영영 못 찾는 상태로 석 달을 흘려보낸 셈이었다. 영상은 멀쩡히 재생되고 음성도 들리니, 자막이 통째로 실종됐다는 걸 누구도 알아채기 어려운 종류의 버그였다. 원래 자리를 찾아 일본어 자막을 먼저 되살리고, 그 위에 한국어를 다시 입혔다. 3월부터 입을 다물고 있던 자막들이, 그렇게 석 달 만에 다시 말문을 열었다.\n이 무렵엔 게임의 더 깊은 구석까지 한글이 닿았다. 등장인물의 이름표 — 화면에 뜨는 \u0026lsquo;조나단\u0026rsquo;, \u0026lsquo;에드\u0026rsquo;, \u0026lsquo;로레인\u0026rsquo; 같은 작은 이름 그림 32개 — 를 한글 비트맵으로 갈아끼웠고, 게임 속 백과사전 격인 용어집 196개 항목까지 — 번역은 클로드가 맡고, 나는 그걸 게임에 심었다. 용어집은 특히 까다로워서, 항목을 클릭했을 때 게임이 글자를 찾는 내부 규칙을 정확히 맞춰주지 않으면 클릭해도 아무 반응이 없었다. 그 규칙을 하나씩 실험으로 확정해, 마침내 용어집 메뉴까지 한국어로 매끄럽게 동작하는 것을 두 눈으로 확인했다.\n8장 — 마지막 아홉 줄 (6월 13일) 그리고 마지막 날, 가장 오래된 숙제와 마주했다. 1편에서부터 따라다닌 그 \u0026lsquo;잘림\u0026rsquo;.\n먼저 게임의 시스템 문구들 — 부팅할 때 뜨는 백업 메모리 선택 화면, \u0026ldquo;DISC 2로 교체해 주세요\u0026rdquo; 같은 안내문, 세이브 데이터 초기화 확인창 — 까지 빠짐없이 한글로 바꿨다. 화면 어딘가에 일본어가 반쯤 섞여 어색하던 마지막 구석들이, 그렇게 정리됐다.\n그다음, 잘림과의 최종 결전. 2편에서 갈고닦은 \u0026lsquo;빈방으로 옮기기\u0026rsquo; 기술을 전면에 투입했다. 잘릴 위기에 놓인 대사 후보가 무려 2,440개. 그중 7,006개의 대사 조각을 새로 마련한 공간으로 옮겨, 잘리지 않게 만들었다. (한 대사가 여러 사본으로 존재하니 숫자가 더 크다.)\n그런데 아무리 해도 옮길 수 없는 딱 아홉 줄이 남았다. 옮겨갈 \u0026lsquo;푯말\u0026rsquo;을 붙일 자리가 구조적으로 없는, 고집스러운 아홉 줄. 게임06의 한 대사, 게임09의 두 대사, 자동 저장 안내문… 이것들은 기술로 옮길 수 없으니, 번역 그 자체를 다듬어 풀기로 했다. 뜻은 그대로 두되 군더더기를 덜어내, 일본어가 차지하던 칸 안에 한국어를 꼭 맞게 앉히는 일. 클로드와 함께 \u0026ldquo;당신의\u0026quot;를 덜고, \u0026ldquo;향한다\u0026quot;를 \u0026ldquo;간다\u0026quot;로 — 한 자 한 자를 저울에 달듯 줄여, 마지막 아홉 줄을 제자리에서 살려냈다.\n그리고 그날 밤, 검증 결과창에 한 줄이 떴다.\nSZ / SX / MOV — 전체 잘림 0.\n본편 대사 16,777개, 음성 자막 5,443개, 영상 자막 498개. 게임이 화면에 띄우는 모든 한국어가, 단 한 글자도 잘리지 않고 온전히 표시된다는 뜻이었다. 석 달을 따라다니던 숙제가, 그 한 줄로 끝났다.\n문득 그 책장 장면을 다시 열어봤다. 추리소설도, 담배도, 잘림 없이 또렷한 한국어로 거기 있었다. 수백 번의 검은 화면을 함께 견딘 두 줄의 대사가, 이번엔 판정관이 아니라 그냥 — 온전한 한국어 대사로, 제자리에 놓여 있었다.\n에필로그 — 종이 없이, 다시 빌드 697/698. 그 무미건조한 번호 뒤에는, 2월의 첫 한 글자부터 6월의 마지막 아홉 줄까지, 넉 달간의 밤들이 쌓여 있다.\n수없이 마주한 검은 화면, 부팅조차 안 되던 디스크, 반쯤만 번역돼 어색하던 화면, 끝이 잘려나가던 대사들. 그 모든 벽 앞에서 멈추지 않은 이유는, 거창하지 않았다. 삼십 년 전, 대사집을 한 손에 들고 화면을 더듬던 한 소년이 했던 약속 하나. 한글로 다시 해보겠다는, 그 약속.\n이제 그 약속을 지킬 수 있게 됐다. 종이 대사집 없이, 화면 속 우리말만 따라가며, 조나단의 이야기를 처음부터 끝까지 다시 걸을 수 있게 됐다.\n그리고 이 긴 길을, 끝내 혼자 걷지는 않았다. 25년의 잠에서 깬 조나단 곁에 늘 동료가 있었듯, 30년 묵은 꿈을 좇는 내 곁에는 파트너 클로드가 있었다. 방대한 번역의 노동을 함께 짊어져 준 덕분에, 나는 이 이야기를 끝까지 우리말로 되살릴 수 있었다.\n나온 지 삼십 년이 지난 게임이다. 어쩌면 이제 와서 누가 이걸 다시 할까 싶기도 하다. 하지만 단 한 사람이라도, 이 이야기를 — 그 분위기와 그 여운을 — 한국에서 더 알아주기를 바라는 마음으로, 클로드와 함께 한 글자씩 우리말을 입혀나갔다.\n아무도 하지 않아서, 내가 했다. 그리고 이제, 누군가는 대사집 없이 이 이야기를 만날 것이다.\n— 끝, 그리고 시작.\n← 이전 편 ② 검은 화면과의 긴 싸움 ｜ 📥 패치 다운로드 · 적용법 ","permalink":"https://razventi.github.io/codeplay/posts/policenauts/devlog-policenauts-3/","summary":"\u003cblockquote\u003e\n\u003cp\u003e\u003cstrong\u003e📖 폴리스너츠 한글화 작업 후기\u003c/strong\u003e — 한 사람의 버킷 리스트가 현실이 되어가는 넉 달의 기록.\n\u003ca href=\"/codeplay/posts/policenauts/devlog-policenauts-1/\"\u003e① 글자를 가르치다\u003c/a\u003e\n · \u003ca href=\"/codeplay/posts/policenauts/devlog-policenauts-2/\"\u003e② 검은 화면과의 긴 싸움\u003c/a\u003e\n · \u003cstrong\u003e③ 다 갈아엎고, 전부 새로\u003c/strong\u003e\u003c/p\u003e","title":"30년의 약속 — 폴리스너츠 한글화 작업 후기 ③ 다 갈아엎고, 전부 새로"},{"content":" 📖 폴리스너츠 한글화 작업 후기 — 한 사람의 버킷 리스트가 현실이 되어가는 넉 달의 기록. ① 글자를 가르치다 · ② 검은 화면과의 긴 싸움 · ③ 다 갈아엎고, 전부 새로 지난 이야기: 게임에게 한글을 가르쳐 첫 글자를 띄우고, 메뉴를 한글화했다. 그리고 스토리 번역에서 가장 끈질긴 적 — 한국어가 화면에서 \u0026lsquo;툭 잘려나가는\u0026rsquo; 문제 — 와 마주쳤다.\n4장 — 상자의 비밀, 그리고 빈방을 찾아서 (3월 말~4월) 잘림 문제를 정면으로 풀기 위해, 게임이 대사를 \u0026lsquo;어디서 찾아 읽는지\u0026rsquo; 그 내부 동작을 끝까지 파고들었다.\n게임 안에는 \u0026ldquo;몇 번째 글자부터 읽어라\u0026quot;라고 적힌 작은 이정표 같은 숫자가 있었다. 이 숫자의 계산 규칙을 완전히 풀어내자 — 1,029개의 대사 전부에서 100% 들어맞았을 때의 기분이란! — 비로소 길이 보였다. 대사를 원래 자리에 욱여넣는 대신, 파일의 빈 공간이나 끝자락에 길게 적어두고, 이정표만 그쪽으로 돌려놓으면 되지 않을까.\n말하자면, 좁은 방에 억지로 짐을 우겨넣는 대신, 복도 끝에 빈방을 만들어 긴 짐을 옮겨두고, 문 앞에 \u0026ldquo;이쪽으로 오세요\u0026rdquo; 푯말을 붙이는 발상이었다.\n이 방법을 처음 시험한 무대가, 게임 초반 조나단의 사무실 책장 장면이었다. 책장 위에 놓인 추리소설 한 권과, 재떨이의 담배. 그걸 살펴볼 때 뜨는 두 줄짜리 평범한 대사 — 사건과는 아무 상관도 없는, 그저 분위기를 위한 소품 같은 말들. 그런데 하필 이 두 대사가 게임 내부적으로 같은 출발점을 공유하며 줄줄이 이어 읽히는 구조라, 길이를 잘못 건드리면 단번에 망가지는 까다로운 자리였다. 그래서 이 \u0026lsquo;추리소설\u0026rsquo;과 \u0026lsquo;담배\u0026rsquo;가, 그날부터 모든 실험의 시험대가 되었다. 새 빌드를 올릴 때마다 가장 먼저 이 장면을 열어, 추리소설 대사가 멀쩡히 뜨는지, 그 뒤로 담배 대사가 제대로 이어지는지를 확인했다. 별것 아닌 두 줄이, 어느새 작업 내내 곁을 지키는 동료가 되어 있었다.\n처음 푯말을 옮겨 붙였을 때, 긴 한국어 대사가 잘리지 않고 온전히 떴고 — 추리소설도, 담배도 멀쩡했고 — 게임도 끝까지 진행됐다. 작은 승리였다.\n하지만 이 방법에도 한계가 있었다. 이정표가 가리킬 수 있는 거리에 상한이 있어서, 긴 대사 전부를 구제하진 못했다. 더 근본적인 해법을 찾아 게임의 심장부 — 프로그램 코드 자체 — 로 들어가야 했다.\n5장 — 검은 화면과의 긴 싸움 (4월~5월) 여기서부터는, 솔직히 말해 실패의 기록이다.\n게임의 동작 한계를 아예 늘려버리려고 프로그램 코드를 직접 건드렸다. 한 글자만 잘못 바꿔도 결과는 가차 없었다. 검은 화면. 켜자마자 아무것도 뜨지 않는, 그 막막한 검정. 코드를 이리 바꾸고 저리 바꾸며 빌드를 돌릴 때마다, 화면은 몇 번이고 검게 죽었다.\n이정표를 늘려도 검은 화면, 코드를 다른 자리로 옮겨도 검은 화면. 어떤 날은 열 번을 시도해 열 번 다 검었다. 검은 화면을 뚫고 게임이 켜질 때면, 어김없이 가장 먼저 그 책장 장면부터 열었다. 추리소설이 빈칸으로 나오면 실패, 담배로 매끄럽게 이어지면 성공. 그 두 줄이, 성패를 가르는 판정관이었다.\n그러던 중, 두 달 가까이 나를 괴롭힌 정체불명의 현상이 있었다. 어떤 빌드에서는 게임이 대사를 찾을 때 주소가 두 개로 나뉘어 보였다. 분명 한 곳을 가리켜야 할 숫자가, 어떨 땐 이쪽을 어떨 땐 저쪽을 가리키는 듯했다. 5월 내내 이 \u0026lsquo;두 개의 주소\u0026rsquo;를 전제로 코드를 짰고, 어떤 빌드는 우연히 동작하고 어떤 빌드는 추리소설이 빈칸으로 떴다.\n진짜 원인은 어이없을 만큼 단순했다. 주소가 두 개였던 게 아니라, 게임을 돌리던 에뮬레이터가 어긋난 주소를 슬쩍 보정해서 보여준 탓에 두 개처럼 보였을 뿐이었다. 한마디로 착시였다. 진범은 따로 있었다 — 데이터를 읽는 위치 계산에서 한 칸씩 어긋나는, 정렬 오류 하나. 게임은 짝수 자리에서 읽어야 할 표를 홀수 자리에서 읽으며 바로 옆 칸의 엉뚱한 값을 집어오고 있었고, 그래서 추리소설을 펼치면 빈칸이, 담배 자리에선 추리소설 대사가 튀어나왔던 것이다. 증상의 아귀가 완벽하게 들어맞았다. 숫자 하나(이정표 계산에 쓰는 기준값)를 바로잡자, 두 달간의 유령은 거짓말처럼 사라졌다. 그리고 그제야, 그동안 실패했던 수많은 빌드의 진짜 사인(死因)이 전부 이 하나였음을 알았다. 엉뚱한 곳을 의심하며 흘려보낸 두 달이었지만, 그 끝에 마침내 범인을 잡았다.\n그 사이사이, \u0026ldquo;이건 된다!\u0026rdquo; 싶은 순간들이 가뭄의 단비처럼 끼어들어 멈추지 않게 붙들어주었다. 게임의 화면 버퍼를 넓히는 데 성공해 잘렸던 대사 일부가 살아났을 때, 코드의 어떤 함정이 어디 있는지 비로소 알아냈을 때.\n이 시기의 진짜 성과는, 어쩌면 \u0026ldquo;이 길은 막혀 있다\u0026quot;는 사실을 확실히 알아낸 것일지도 모른다. 게임이 대사를 불러오는 진짜 관문이 어디에 하드코딩되어 있는지, 어디를 건드리면 안 되는지. 수많은 검은 화면이 하나씩 가르쳐준 지도였다. 헛수고처럼 보였던 실패들이, 결국 다음 단계의 길잡이가 되었다.\n이 길고 외로운 구간을 견디게 한 것은 결국 처음의 그 마음이었다. 대사집을 넘기던 소년에게 했던 약속. 검은 화면 앞에서도, 그 약속은 꺼지지 않았다.\n← 이전 편 ① 글자를 가르치다 ｜ 다음 편 → ③ 다 갈아엎고, 전부 새로 ","permalink":"https://razventi.github.io/codeplay/posts/policenauts/devlog-policenauts-2/","summary":"\u003cblockquote\u003e\n\u003cp\u003e\u003cstrong\u003e📖 폴리스너츠 한글화 작업 후기\u003c/strong\u003e — 한 사람의 버킷 리스트가 현실이 되어가는 넉 달의 기록.\n\u003ca href=\"/codeplay/posts/policenauts/devlog-policenauts-1/\"\u003e① 글자를 가르치다\u003c/a\u003e\n · \u003cstrong\u003e② 검은 화면과의 긴 싸움\u003c/strong\u003e · \u003ca href=\"/codeplay/posts/policenauts/devlog-policenauts-3/\"\u003e③ 다 갈아엎고, 전부 새로\u003c/a\u003e\n\u003c/p\u003e","title":"30년의 약속 — 폴리스너츠 한글화 작업 후기 ② 검은 화면과의 긴 싸움"},{"content":" 📖 폴리스너츠 한글화 작업 후기 — 한 사람의 버킷 리스트가 현실이 되어가는 넉 달의 기록. ① 글자를 가르치다 · ② 검은 화면과의 긴 싸움 · ③ 다 갈아엎고, 전부 새로 프롤로그 — 대사집을 넘기던 소년 고등학생이던 그때, 화면 속의 세계는 분명 일본어로 말하고 있었다.\n조나단 잉그램이라는 남자가 있었다. 25년의 콜드슬립 끝에 깨어나, 사라진 옛 연인의 의뢰를 좇아 우주 거주구 \u0026lsquo;비욘즈\u0026rsquo;의 그늘로 걸어 들어가는 형사. 화면은 영화처럼 흘러갔고, 음악은 가슴을 눌렀고, 사람들은 저마다의 사연을 안고 등장했다. 단 하나, 그 말들을 나는 알아들을 수 없었다.\n그래서 손에는 늘 대사집이 들려 있었다. 화면을 보고, 종이를 보고, 다시 화면을 보고. 한 줄 한 줄을 짚어가며 진행한 게임이었다. 번역된 종이를 더듬어 따라가는 그 불편함 속에서도, 이상하게 그 이야기와 분위기만큼은 또렷이 마음에 새겨졌다. 잊으려 해도 잊히지 않는 종류의 기억이었다.\n그때 했던 다짐이 하나 있었다. 언젠가 이게 한글로 나오면, 그때는 종이 없이, 온전히 다시 플레이해보겠다고.\n그러나 기다림은 길었다. 게임이 세상에 나온 지 십 년이 지나고, 이십 년이 지나고, 어느새 삼십 년이 가까워졌다. 그동안 수많은 명작이 팬들의 손으로 한글을 입었지만, 폴리스너츠의 차례는 끝내 오지 않았다. 아무도 하지 않았다.\n그래서 결심했다. 아무도 하지 않는다면, 내가 한다.\n이 글은 그 결심이 시작된 2026년 2월 27일부터, \u0026ldquo;한국어 자막이 화면에서 더 이상 잘리지 않는다\u0026quot;는 한 문장이 사실이 되던 6월의 어느 밤까지, 넉 달 동안의 이야기다.\n1장 — 게임의 비밀 글자를 배우다 (2월 말) 처음 마주한 벽은 단순했다. 게임은 한국어를 모른다.\n세가 새턴이라는 30년 전의 기계는, 자기가 아는 글자밖에 화면에 그리지 못한다. 일본어 글자 하나하나가 작은 점들의 그림으로 기계 안에 박혀 있었고, 그 바깥의 글자는 존재 자체를 모르는 셈이었다. 한글을 보여주려면, 먼저 게임에게 한글이라는 \u0026lsquo;그림\u0026rsquo;을 가르쳐야 했다.\n그래서 게임이 글자를 어떻게 저장하고, 어떻게 그려내는지를 한 꺼풀씩 벗겨내기 시작했다. 글꼴 데이터의 구조를 읽어내고, 게임이 \u0026ldquo;이 자리에 이 글자\u0026quot;라고 적어두는 방식 — 일종의 암호 같은 규칙 — 을 풀어냈다.\n그렇게 며칠을 매달린 끝에, 시험 삼아 만든 수십 번째 빌드를 기계에 올렸다. 화면이 깜빡이고 — 처음으로, 한글 한 글자가 떠올랐다. 점 몇 개로 그려진, 작고 투박한 한 글자. 객관적으로는 보잘것없는 글자였다. 하지만 그건 30년 동안 일본어밖에 모르던 기계가, 난생처음 우리말 한 글자를 그려낸 순간이었다. 화면 앞에서 한참을 들여다봤다. 그 한 글자가 떴다는 건, 나머지 모든 글자도 결국 뜰 수 있다는 뜻이었으니까. 넉 달 여정의 출발 신호는, 그 작은 한 글자였다.\n이 무렵 얻은 교훈 하나는 두고두고 마음에 남았다. 원본 디스크에는 일부러 심어둔 \u0026lsquo;오류\u0026rsquo;가 있었고, 친절한 마음에 그걸 \u0026lsquo;고쳐\u0026rsquo;버리면 오히려 게임이 망가진다는 것. 있는 그대로를 존중해야 할 때가 있다. 30년 전 개발자가 남긴 흔적 앞에서, 함부로 손대지 않는 법을 먼저 배웠다.\n2장 — 메뉴부터, 한 글자씩 (3월 초) 거창한 스토리에 손대기 전에, 먼저 게임의 얼굴인 메뉴부터 한글로 바꿔나갔다.\n타이틀 화면, 환경설정, 저장과 불러오기. \u0026lsquo;자동복구장치\u0026rsquo; 같은 시스템 문구들. 하나씩 한국어로 갈아끼울 때마다, 게임은 조금씩 더 \u0026lsquo;우리말을 하는\u0026rsquo; 물건이 되어갔다. 물론 쉽지만은 않았다. 같은 글자가 게임 안에서 세 군데, 어떤 건 아홉 군데에 복사되어 있어, 한 곳만 고치면 화면에선 여전히 일본어가 튀어나왔다. 보이지 않는 모든 사본을 찾아 똑같이 고쳐야 비로소 화면이 바뀌었다. 빠진 곳 하나 없이 끝까지 추적하는, 끈기의 작업이었다.\n3장 — 잘리는 말들, 그리고 숨겨진 자막 (3월 중순) 스토리 번역에 손을 대기 전에, 먼저 토대부터 다졌다. 고등학생 때 나를 게임 끝까지 데려가 준 그 대사집을 다시 꺼냈다. 거기에 그동안 흩어져 있던 게임 정보 — 인물들의 관계, 사건의 전말, 세계관 설정 — 을 그러모아 하나의 \u0026lsquo;레퍼런스\u0026rsquo;로 묶었다. 30년 전 내 손에 들려 있던 그 종이가, 이번엔 번역의 밑바탕이 된 셈이다.\n그 위에 번역 가이드를 썼다. 조나단은 하드보일드한 독백체로. 인물들 사이의 말투는 관계에 따라 — 누가 누구에게 반말을 하고, 누구에게 존대를 하는지 — 하나하나 규정했다. 누구의 목소리도 어긋나지 않도록, 세세한 설정을 정해두었다.\n그리고 그 방대한 번역의 실무는, 혼자가 아니라 AI 파트너 클로드와 함께 해나갔다. 레퍼런스와 가이드를 건네면 클로드가 대사를 한국어로 옮겼고, 나는 그 결과를 원작의 결과 대조하며 다듬어 되돌려 보냈다. 말투가 어긋난 곳을 짚고, 설정을 보태고, 다시 넘기길 수없이 반복하는 — 길고 지속적인 협업이었다. 번역이라는 거대한 노동을 클로드가 묵묵히 떠맡아 준 덕분에, 나는 이야기의 결을 지키는 일에 집중할 수 있었다.\n본격적으로 스토리 대사에 손을 대면서, 가장 끈질긴 적이 모습을 드러냈다.\n일본어는 짧다. 한 칸에 많은 뜻을 담는다. 그런데 한국어로 옮기면 글자 수가 늘어난다. 게임 속 대사가 들어갈 \u0026lsquo;상자\u0026rsquo;는 일본어 크기에 맞춰 짜여 있어서, 한국어를 넣으면 끝이 툭 잘려나갔다. \u0026ldquo;당신의 수사 데이터를 세이브하시겠습니까?\u0026ldquo;가 화면에선 \u0026ldquo;…세이브하시겠습\u0026quot;에서 끊겨버리는 식이었다. 의미가 전해지지 않으면 번역이 아니다. 이 \u0026lsquo;잘림\u0026rsquo; 문제는, 앞으로 석 달을 따라다닐 가장 큰 숙제가 된다.\n그러던 중 큰 발견이 있었다. 성우들이 말하는 음성 대사에는, SZ라 부르던 본문 텍스트와는 별개로, 영상 속에 숨겨진 자막 데이터가 따로 존재했다. 처음엔 보이지도 않던 그 자막의 위치를 찾아내고, 한 블록 한 블록 긁어모아 번역의 사정권에 넣었다. 영상 속 자막, 무비 자막까지 — 게임이 말하는 모든 말을 한국어로 덮을 길이 하나둘 열렸다.\n다음 편 → ② 검은 화면과의 긴 싸움 ","permalink":"https://razventi.github.io/codeplay/posts/policenauts/devlog-policenauts-1/","summary":"\u003cblockquote\u003e\n\u003cp\u003e\u003cstrong\u003e📖 폴리스너츠 한글화 작업 후기\u003c/strong\u003e — 한 사람의 버킷 리스트가 현실이 되어가는 넉 달의 기록.\n\u003cstrong\u003e① 글자를 가르치다\u003c/strong\u003e · \u003ca href=\"/codeplay/posts/policenauts/devlog-policenauts-2/\"\u003e② 검은 화면과의 긴 싸움\u003c/a\u003e\n · \u003ca href=\"/codeplay/posts/policenauts/devlog-policenauts-3/\"\u003e③ 다 갈아엎고, 전부 새로\u003c/a\u003e\n\u003c/p\u003e","title":"30년의 약속 — 폴리스너츠 한글화 작업 후기 ① 글자를 가르치다"},{"content":"세가 새턴 「폴리스너츠(Policenauts)」 일본판을 한국어로 즐기는 방법입니다. CD에서 이미지 뜨기 → 패치 적용 → 게임 실행까지, 순서대로만 따라 하면 됩니다.\n💡 한 줄 요약: 내 일본판 CD를 컴퓨터 파일(BIN/CUE)로 떠서 → 패치 프로그램으로 한글로 바꾼 뒤 → 실행용 폴더로 구성합니다. 디스크가 3장이니 같은 작업을 3번 반복해요.\n다운로드 📦 최신 패치 다운로드 — Policenauts_KR_v1.0.0.zip 배포본 구성:\npatch/ policenauts_kr_disc1~3.xdelta cue/ Policenauts_KR (Disc 1~3).cue README.txt v1.0.0 — 시작부터 엔딩까지 통플레이 검수 완료.\n⚠️ 시작 전에 (중요) 이 패치는 본인이 합법적으로 소유한 일본판 폴리스너츠 원본 CD에만 사용하세요. 패치 파일은 게임 데이터를 포함하지 않습니다. 원본 CD(또는 그 이미지)가 반드시 있어야 합니다. 패치나 패치된 게임 데이터를 재배포·판매하는 것은 금지입니다. 작업 전 원본은 꼭 백업해 두세요. 0. 준비물 체크리스트 일본판 폴리스너츠 CD 3장 (Disc 1·2·3) CD를 읽을 수 있는 PC 광학 드라이브 (내장 또는 외장 USB) 추출 프로그램 — Redumper (무료, 추천) 패치 프로그램 — Delta Patcher (무료, 클릭 몇 번이면 끝) 이 한글 패치 파일 (위 다운로드 zip 안의 patch/ 3개 + cue/ 폴더) patch/policenauts_kr_disc1.xdelta patch/policenauts_kr_disc2.xdelta patch/policenauts_kr_disc3.xdelta cue/ 폴더 (디스크별 .cue 3개) 이미 CD 이미지 파일(BIN/CUE) 을 가지고 있다면 → 1단계를 건너뛰고 2단계로 가세요.\n1. CD에서 이미지 뜨기 (추출) 이미 BIN/CUE 파일이 있으면 이 단계는 건너뜁니다.\n폴리스너츠 CD는 데이터(게임) + 오디오(음악) 두 트랙으로 되어 있어, 둘 다 정확히 떠야 합니다. Redumper가 이걸 자동으로 처리해 줍니다.\nRedumper 를 받아 압축을 풉니다. Disc 1을 드라이브에 넣고, 명령 프롬프트(또는 PowerShell)에서: redumper --drive=D: --image-name=\u0026#34;Policenauts (Japan) (Disc 1)\u0026#34; (D: 는 본인 CD 드라이브 문자로 바꾸세요.) 끝나면 다음 파일들이 생깁니다: Policenauts (Japan) (Disc 1) (Track 1).bin ← 데이터(게임) Policenauts (Japan) (Disc 1) (Track 2).bin ← 오디오(음악) Policenauts (Japan) (Disc 1).cue ← 트랙 구성표 Disc 2, Disc 3도 똑같이 반복합니다. (디스크별로 폴더를 나누면 헷갈리지 않아요.) ❗ 형식 주의: 반드시 BIN/CUE (2352바이트 원시 섹터) 로 떠야 합니다. .iso(2048) 단일 파일은 이 패치와 호환되지 않습니다.\n2. 내 이미지가 맞는 원본인지 확인 (해시 검증) 이 패치는 딱 정해진 한 가지 덤프에만 맞습니다. 내 데이터 트랙의 지문(SHA-1)을 대조해 보세요. 이게 맞으면 100% 성공, 안 맞으면 다른 버전이라 적용이 거부됩니다.\n💡 해시(SHA-1)란? 파일의 \u0026ldquo;지문\u0026quot;입니다. 같은 파일이면 늘 같은 값이 나오고, 1바이트만 달라도 값이 완전히 바뀝니다. 그래서 내 원본이 패치가 기대하는 바로 그 파일인지 확인할 수 있어요.\n아래 세 가지 방법 중 하나로 내 데이터 트랙(... (Track 1).bin)의 SHA-1을 구하세요. (대소문자는 무시하고 비교하면 됩니다.)\n방법 A) 명령 프롬프트 — certutil (설치 불필요, 가장 간단) certutil -hashfile \u0026#34;Policenauts (Japan) (Disc 1) (Track 1).bin\u0026#34; SHA1 팁: 파일이 있는 폴더의 주소창에 cmd 입력 → 엔터 → 그 폴더에서 위 명령 실행. certutil -hashfile 까지 친 뒤 파일을 명령창에 끌어다 놓으면 경로가 자동 입력됩니다.\n방법 B) PowerShell — Get-FileHash Get-FileHash \u0026#34;Policenauts (Japan) (Disc 1) (Track 1).bin\u0026#34; -Algorithm SHA1 방법 C) 마우스로만 (GUI 도구) 7-Zip: 파일 우클릭 → CRC SHA → SHA-1 HashCheck: 설치하면 파일 우클릭 → 속성에 \u0026ldquo;해시(Checksums)\u0026rdquo; 탭이 생김 ✅ 사실 해시 검증을 건너뛰어도 됩니다. 3단계 패치 도구(Delta Patcher)가 원본을 자동으로 확인하므로, 틀린 원본이면 XD3_INVALID_INPUT 오류로 알아서 막아줍니다. 다만 미리 확인해 두면 어디가 잘못됐는지 빨리 알 수 있어요.\n나온 값을 아래와 비교:\n디스크 데이터 트랙(Track 1) SHA-1 Disc 1 526bcd0ff248866f5d8c829c6c186f6c1a9c2405 Disc 2 20edac717f607b1e0a10443f3480c96acd725450 Disc 3 7c837f0a3a1c12ba430c0bf4feefabf518629220 ✅ 일치 → 3단계로 진행 ❌ 불일치 → 다른 리비전/잘못된 덤프입니다. (3단계 아래 FAQ \u0026ldquo;다른 형식을 가진 경우\u0026rdquo; 참고) 3. 패치 적용하기 Delta Patcher (GUI, 가장 쉬움)로 설명합니다.\nDelta Patcher 를 받아 실행합니다. 화면에서: Original file : Policenauts (Japan) (Disc 1) (Track 1).bin (내 원본 데이터 트랙) XDelta patch : policenauts_kr_disc1.xdelta Apply patch 버튼 클릭. 같은 폴더에 패치된 한글 데이터 트랙이 생깁니다. 알아보기 쉽게 이름을 바꿔두세요: Policenauts_KR (Disc 1) (Track 1).bin Disc 2, Disc 3도 각자의 .xdelta로 똑같이 반복. 💬 XD3_INVALID_INPUT / source checksum mismatch 오류가 나면? → 원본이 이 패치와 다른 덤프입니다. 2단계 해시를 다시 확인하세요. (엉뚱한 결과가 나오는 게 아니라 안전하게 거부하는 것입니다.)\n명령줄(xdelta3)로 하고 싶다면 xdelta3 -d -s \u0026#34;Policenauts (Japan) (Disc 1) (Track 1).bin\u0026#34; policenauts_kr_disc1.xdelta \u0026#34;Policenauts_KR (Disc 1) (Track 1).bin\u0026#34; 4. 게임 실행용으로 구성하기 한 폴더 안에 디스크별로 3개 파일을 모읍니다:\n역할 파일 한글 데이터 트랙 Policenauts_KR (Disc 1) (Track 1).bin ← 3단계에서 만든 것 오디오 트랙 Policenauts (Japan) (Disc 1) (Track 2).bin ← 원본 그대로 복사 트랙 구성표 Policenauts_KR (Disc 1).cue ← 동봉된 cue/ 폴더에서 복사 동봉 cue의 파일명과 위 파일명이 정확히 같아야 합니다. (cue 안에 어떤 파일을 부를지 적혀 있어요.)\nDisc 2·3도 같은 방식으로 폴더를 구성합니다.\n이렇게 디스크별로 Policenauts_KR (Disc N).cue 를 열 수 있는 상태가 되면 한글 패치 적용은 완료입니다. 🎉\n자주 묻는 질문 (FAQ) Q. 내 파일이 큰 BIN 하나로 합쳐져 있어요 (트랙이 안 나뉨). → 데이터+오디오가 한 파일에 붙은 \u0026ldquo;병합 BIN\u0026quot;입니다. cue가 함께 있으면 binmerge 같은 도구로 트랙을 분리한 뒤 2단계로 진행하세요. 병합 BIN에 패치를 직접 적용하면 안 됩니다 — 오류 없이 적용되더라도 오디오(음악)가 사라진 반쪽짜리가 됩니다.\nQ. .iso 파일(하나짜리)만 있어요. → 헤더 없는 2048바이트 형식일 가능성이 큽니다. 이 패치는 2352바이트 원시 섹터(BIN/CUE) 기준이라 호환되지 않습니다. CD에서 BIN/CUE로 다시 뜨거나, 2352 규격 덤프를 사용하세요.\nQ. 패치가 잘 됐는지 확인하고 싶어요. → 패치 후 데이터 트랙의 SHA-1이 아래와 같으면 정상입니다:\n디스크 한글 Track 1 SHA-1 Disc 1 29fae4a3d0d59640b4910dc242d7dbe97e5f9a4c Disc 2 e90d415ee1b842d099c00ce16977c6b62f00bb1f Disc 3 ae33cecbf009d1d65f6b566b031a080d721948ef 배포본 zip 안의 README.txt 에도 디스크별 원본/한글 Track1·원본 Track2 SHA-1 과 패치 크기가 정리되어 있습니다.\n전체 흐름 한눈에 [일본판 CD 3장] │ ① Redumper 로 추출 ▼ [BIN(데이터)+BIN(오디오)+CUE] ← 디스크별 │ ② SHA-1 해시 확인 (정본 맞는지) ▼ [Delta Patcher 로 데이터 트랙에 패치 적용] ← ③ │ ▼ [한글 데이터 BIN + 원본 오디오 BIN + 동봉 CUE 를 한 폴더에] ← ④ │ ▼ [디스크별 .cue 로 실행 준비 완료 → 한글 플레이!] 즐거운 플레이 되세요! 문제가 생기면 2단계 해시 확인부터 다시 점검하는 것이 가장 빠른 해결책입니다.\n오역·버그 제보 플레이 중 오역, 어색한 문장, 깨진 글자, 진행 불가 등 버그를 발견하시면 알려주세요. 다음 버전에 반영하겠습니다.\n📧 이메일: razventi@gmail.com 제보 시 디스크 번호와 해당 장면(또는 대략적인 위치), 가능하면 스크린샷을 함께 보내주시면 큰 도움이 됩니다. 이용 조건 및 면책 본 패치는 비영리 팬 번역물이며, 게임 데이터를 일절 포함하지 않습니다. 원본 게임의 저작권은 KONAMI 에 있습니다. 본 패치는 원본 게임(Policenauts, 일본판)을 합법적으로 소유한 이용자가 개인적 용도로만 사용해야 합니다. 패치 또는 패치가 적용된 게임 데이터(BIN/CUE/CHD 등)를 재배포·판매하는 행위를 금지합니다. 본 패치 파일 자체의 비영리적 공유만 허용합니다. 본 패치 사용으로 발생하는 어떠한 문제(데이터 손상·법적 책임 등)에 대해 제작자는 책임지지 않습니다. 사용 전 원본을 반드시 백업하세요. 저작권자(KONAMI)의 요청이 있을 경우 배포를 즉시 중단합니다. 위 고지는 법률 자문이 아니며, 일반적인 팬 번역 배포 관행에 따른 것입니다.\n","permalink":"https://razventi.github.io/codeplay/posts/policenauts/download/","summary":"\u003cp\u003e세가 새턴 「폴리스너츠(Policenauts)」 일본판을 한국어로 즐기는 방법입니다.\n\u003cstrong\u003eCD에서 이미지 뜨기 → 패치 적용 → 게임 실행\u003c/strong\u003e까지, 순서대로만 따라 하면 됩니다.\u003c/p\u003e","title":"폴리스너츠 한글판 패치 — 다운로드 · 설치 가이드"},{"content":"v1.0.0 — 2026-06-21 (현재 배포본) 정식 배포 v1.0.0 (내부 빌드: 베이스 717 / relocate 718) 시작~엔딩 통플레이 검수 완료 배포본 구성: patch/ 3종 + cue/ 3종 + README.txt ","permalink":"https://razventi.github.io/codeplay/posts/policenauts/changelog/","summary":"\u003ch2 id=\"v100--2026-06-21-현재-배포본\"\u003ev1.0.0 — 2026-06-21 (현재 배포본)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e정식 배포 v1.0.0\u003c/strong\u003e (내부 빌드: 베이스 717 / relocate 718)\u003c/li\u003e\n\u003cli\u003e시작~엔딩 통플레이 검수 완료\u003c/li\u003e\n\u003cli\u003e배포본 구성: \u003ccode\u003epatch/\u003c/code\u003e 3종 + \u003ccode\u003ecue/\u003c/code\u003e 3종 + README.txt\u003c/li\u003e\n\u003c/ul\u003e","title":"폴리스너츠 한글판 패치 — 변경 이력"},{"content":"폴리스너츠(Policenauts) 코지마 히데오가 각본·감독한 SF 어드벤처. 1994년 PC-98/3DO 를 거쳐 세가 새턴·플레이스테이션으로 이식되었습니다. 25년 후의 우주 콜로니 \u0026lsquo;비욘드\u0026rsquo;를 무대로, 전직 우주경찰 조나단 잉그램이 옛 파트너의 죽음과 거대한 음모를 쫓는 이야기입니다.\n이 프로젝트는 세가 새턴 일본판을 기준으로 한 한국어 번역 패치입니다.\n한글판 스크린샷 번역 범위 본편 대사(SZ) 27개 파일 — 프롤로그부터 엔딩까지 전편 무비·음성 자막(SX / MOV) — 전 디스크 시스템 UI — 메뉴·세이브/로드·용어집(YOUGO)·이름표(NAMEID)·백업 RAM 관리 등 추격(슈팅) 미니게임 자막 까지 포함 시작부터 엔딩까지 전체 플레이·검수(통플레이 QA) 를 완료했습니다.\n기술적 특징 원본 ISO 에 제자리 패치(zero-shift) + 길이 초과 대사는 파일 확장 영역으로 이사(relocate) 하여 잘림 0 달성 폰트는 원본 KPRFONT 비트맵을 한글 글리프로 재구성 (Galmuri9 기반) 배포는 xdelta 차분 패치 형태 — 게임 데이터 미포함 원작의 저작권은 KONAMI 에 있습니다. 본 패치는 비영리 팬 번역물입니다.\n","permalink":"https://razventi.github.io/codeplay/posts/policenauts/about/","summary":"\u003ch2 id=\"폴리스너츠policenauts\"\u003e폴리스너츠(Policenauts)\u003c/h2\u003e\n\u003cp\u003e코지마 히데오가 각본·감독한 SF 어드벤처. 1994년 PC-98/3DO 를 거쳐\n세가 새턴·플레이스테이션으로 이식되었습니다. 25년 후의 우주 콜로니 \u0026lsquo;비욘드\u0026rsquo;를\n무대로, 전직 우주경찰 조나단 잉그램이 옛 파트너의 죽음과 거대한 음모를 쫓는 이야기입니다.\u003c/p\u003e","title":"폴리스너츠 한글화 프로젝트 소개"},{"content":"게임 개발을 중심으로, 코드와 기술 실험 작업에서 얻은 생각들을 기록하기 위해 블로그를 열었습니다.\n첫 번째 기록으로는 오랫동안 작업해 온 세가 새턴 《폴리스너츠》 한국어 번역 패치를 정리해 공개합니다. 패치 소개와 작업 과정에 대한 자세한 내용은 ‘폴리스너츠 한글화’ 카테고리에서 볼 수 있습니다.\n앞으로는 개발하며 배운 것들, 직접 실험해 본 기술들, 그리고 작업 중에 마주친 고민들을 천천히 풀어 보려고 합니다.\n","permalink":"https://razventi.github.io/codeplay/posts/hello/","summary":"\u003cp\u003e게임 개발을 중심으로, 코드와 기술 실험 작업에서 얻은 생각들을 기록하기 위해 블로그를 열었습니다.\u003c/p\u003e","title":"블로그를 시작하며"},{"content":" 라즈벤티 코드로 즐거움을 설계하는 게임 개발자.\n만드는 것을 좋아하고, 아이디어를 코드로 직접 시도해보는 과정에서 재미를 느낍니다. 궁금한 기술이나 흥미로운 문제는 그냥 지나치지 않고, 직접 실험하고 파고들며 제 방식으로 이해하려고 합니다.\n게임 개발을 중심으로 코드, 기술 실험, 게임 한글화 같은 작업들을 기록합니다. 호기심이 이끄는 대로 만들고, 부딪히고, 배운 것들을 남기고 있습니다.\n대표 프로젝트 세가 새턴 \u0026lsquo;폴리스너츠\u0026rsquo; 한국어 번역 패치 — 30년 묵은 꿈을 좇아, 시작부터 엔딩까지 전체를 한글로 옮긴 비영리 팬 번역 프로젝트. → 폴리스너츠 한글화 관심사 게임 개발 리버스 엔지니어링 코드로 만드는 자잘한 도구들 연락 · 링크 X: @razventi Email: razventi@gmail.com ","permalink":"https://razventi.github.io/codeplay/about/","summary":"\u003c!-- 프로필 사진: 이 파일과 같은 폴더(content/about/)에 profile.jpg 를 넣고 아래 줄의 주석을 푸세요.\n![프로필](profile.jpg) --\u003e\n\u003ch2 id=\"라즈벤티\"\u003e라즈벤티\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003e코드로 즐거움을 설계하는 게임 개발자.\u003c/strong\u003e\u003c/p\u003e","title":"소개"}]