본문으로 바로가기
레붕쿤의 개인 작업실좋아하는 것을, 더 오래.
메뉴
드래곤 퀘스트 몬스터즈 2 이루와 루카 게임 화면

3DS · 한글패치

드래곤 퀘스트 몬스터즈 2 이루와 루카

v1.0 정식 — 추가 제보 2건까지 반영한 최신 패치를 정식판으로 승격하고, 배포 파일명을 v1.0으로 통일했습니다.

이 모험에 대하여

최신 업데이트 · v1.0

v1.0 정식 — 현재 공개 중인 최신 패치 내용을 정식판으로 승격했습니다. 패치 바이트와 SHA-256은 그대로이며, 대표 다운로드와 보조 배포 파일명을 v1.0으로 통일했습니다.

닌텐도 3DS 일본판 《드래곤 퀘스트 몬스터즈 2: 이루와 루카의 신비하고 이상한 열쇠》를 위한 비공식 한글 패치 v1.0 정식판입니다. 본편 이벤트와 필드 대사, 메뉴·전투·아이템·특기·몬스터·도움말, 한글 글꼴, 타이틀과 각종 이미지 UI를 포함합니다. 원본 게임, 공식 업데이트 파일, 패치 적용이 끝난 실행파일은 들어 있지 않습니다 — 배포하는 것은 차분 패치(code.ips)와 우리가 만든 한글 자산뿐입니다.

v1.0에는 공식 업데이트 v1.1용 Luma 폴더 ZIP과 업데이트 1056 재구성 핫픽스가 함께 있습니다. 추가 제보를 대조한 현재 기준으로, 업데이트 1056 환경은 재구성 핫픽스를 우선 사용해야 합니다.

2026-09-14 추가 제보 2건 판정 — 업데이트 1056은 재구성 핫픽스 우선

추가로 받은 전후 화면과 리빌더 문서를 기존 정본에 대조했습니다. 제보 문서의 업데이트 원본 코드 SHA-256 42971E127080BA8223F4BD3EFB2AF7FC4FCE31F92A98E50370E657DECC7CFA38, 한글 코드 결과 F7C762458C9CAF50A0D4549F280B3E5FC0A505ADE74DC30CCDFA9AC4F28A7EAC, 도출 code.ips 0C07AB06A17B689565A02A8A5315728D2496E1A1A2051A0DA285ABBC271E27E1, 메뉴 자산 8CC851B100CF4ECBD6065D1CF2F72B507A5C05F87F2BD7C90A56885C8C8FC66A는 모두 기존 프로젝트가 검증한 값과 일치했습니다. 새 코드 패치가 필요한 제보가 아니라, 본편 Luma 패치가 업데이트의 실행 코드와 자산보다 우선하지 않는 환경을 다시 확인한 제보입니다.

따라서 새 완성 CIA를 재배포하지 않고, 이미 공개한 차분 방식의 업데이트 1056 실기 호환 핫픽스를 대표 다운로드와 우선 해결 경로로 올렸습니다. 제보에 첨부된 패치 완료 업데이트 ZIP은 받거나 공개 배포물에 섞지 않았습니다.

두 번째 제보의 luma/titles/0004000E000CF500/ 제안은 설치 절차로 채택하지 않았습니다. Luma3DS 구현은 실행 프로세스의 프로그램 ID를 사용해 code.ips와 LayeredFS 경로를 만들고, 이 업데이트의 Program ID는 본편 ID 00040000000CF500입니다. 업데이트 기반 LayeredFS가 Azahar에서는 되지만 실기 Luma에서 적용되지 않는 공개 이슈도 있어, 업데이트 타이틀 ID 폴더를 검증된 해결책으로 안내할 근거가 없습니다.

첨부된 전후 화면은 Citra Nightly 2104에서 일본어 타이틀·ルカ·가나 키보드가 한글 타이틀·루카·한글 키보드로 바뀐 것을 보여 줍니다. 유효한 에뮬레이터 증거지만 3DS 실기 사진이나 로그는 아니므로 hardware_verified=false는 유지합니다.

2026-09-14 — v0.9.4 Luma 폴더 배포 (보조 경로)

xdelta를 어느 파일에 적용해야 할지 알기 어렵다는 제보를 받아, 공식 업데이트 v1.1용 파일을 바로 쓸 수 있는 Luma 폴더로 다시 묶었습니다.

  • DQM2 v1.0 게임 v1.1용 Luma ZIP 받기
  • 크기: 40,293,704바이트
  • SHA-256: D411AE21E993D5A4893910387AA5718578CFF840A3700909209823E7E36C197F
  • 압축을 풀고 안의 luma 폴더를 SD 카드 루트에 합친 뒤 Luma3DS의 Enable game patching을 켜면 됩니다.
  • 한글 자산 720개와 v1.1 전용 code.ips를 담았으며 원본 게임·공식 업데이트·완성 실행파일은 포함하지 않습니다.
  • 업데이트 1056에서는 이 ZIP만으로 코드·자산이 적용되지 않는 환경이 추가 제보됐습니다. 아래 재구성 핫픽스를 우선 사용하세요.

2026-09-12 — 업데이트 1056 실기 호환 핫픽스

공식 업데이트가 설치된 실기에서 타이틀 로고 일부와 주인공 기본 이름이 일본어로 돌아오는 제보를 받았습니다. 제보자가 보내 주신 업데이트를 직접 대조해 보니 기존에 분석했던 업데이트와 실제 실행 코드·콘텐츠는 같았고, 기존 업데이트용 코드 수정 바이트도 그대로 맞았습니다. 문제는 실기에서 업데이트 쪽 실행 코드와 자산이 본편 패치보다 우선되는 경로로 좁혀졌습니다.

그래서 본편 패치 폴더에 더 얹는 방식이 아니라, 본인이 소유한 공식 업데이트 자체에 한글 코드와 한글 자산을 적용해 다시 만드는 차분 핫픽스를 추가했습니다. 한글 RomFS 720개를 업데이트 쪽에도 넣어 타이틀·메뉴·대사·글꼴·이미지를 업데이트가 직접 공급하도록 했고, 업데이트 전용 파일은 그대로 보존합니다.

  • 업데이트 1056 실기 호환 핫픽스 받기
  • 크기: 37,450,328바이트
  • SHA-256: 8B5E7F9D2497AF81156326D6BF8ABEDED3831C0C5A69EE6BDE41400BC76A8EA9
  • 원본 게임·공식 업데이트 CIA·완성 실행파일은 포함하지 않습니다. 차분 파일과 적용기·설명서만 들어 있습니다.
  • 입력 파일 해시가 맞지 않으면 동봉 적용기가 시작 단계에서 자동으로 거부합니다.
  • 정적 재구성·되읽기·차분 왕복·전체 회귀는 통과했지만 실제 3DS 최종 확인은 아직 대기 중입니다. 적용 후 타이틀 로고와 기본 이름 이루/루카가 정상인지 제보해 주시면 실기 확인 상태를 바로 갱신하겠습니다.

기존 v0.9.3 본편 패치는 아래에서 그대로 받을 수 있습니다.

내려받기 — 먼저 내 3DS가 어느 쪽인지 확인하세요

본체 HOME 메뉴 → 본체 설정 → 데이터 관리 → 닌텐도 3DS → 소프트웨어에서 이 게임의 업데이트 데이터가 있는지 봅니다. 그 한 가지로 갈립니다.

본체 상태 받을 파일
업데이트 데이터가 없다 게임 v1.0용
업데이트 데이터가 있다(title version 1056) 업데이트 1056 재구성 핫픽스 — 업데이트를 지우지 마세요

두 직접 Luma ZIP은 code.ips 한 파일만 다릅니다. 대사·메뉴·글꼴·이미지(romfs 720개)는 바이트 단위로 완전히 같습니다. 다만 업데이트 1056에서는 업데이트 자체의 코드·자산이 우선될 수 있으므로, 직접 Luma ZIP만으로 해결된다고 안내하지 않습니다.

서로의 code.ips를 바꿔 쓰지 마세요. 게임 버전마다 실행 코드의 위치가 다릅니다. 잘못 넣으면 게임이 시작되지 않습니다.

게임 v1.0용 — 공식 업데이트를 설치하지 않은 본체

  • DQM2 v1.0 게임 v1.0용 ZIP 받기
  • 크기: 40,293,105바이트
  • SHA-256: 160C74A03CEAE4D4D64AB3CCEEBA3287DEF2930DA61245AA52A8E7F2B44E27C1
  • 안에 든 code.ips: 1,144바이트 · SHA-256 23D91D5A682C4FCB11B7D40F3179148B664E5626D44CAD131F03D042C135D61A
  • code.ips2026-08-20 실기에서 확인된 바로 그 파일입니다(제보자분이 통과시킨 IPS와 바이트까지 동일).

게임 v1.1용 직접 Luma ZIP (보조) — 공식 업데이트 v1.1/1056 환경

  • DQM2 v1.0 게임 v1.1용 Luma ZIP 받기
  • 크기: 40,293,704바이트
  • SHA-256: D411AE21E993D5A4893910387AA5718578CFF840A3700909209823E7E36C197F
  • 안에 든 code.ips: 1,144바이트 · SHA-256 0C07AB06A17B689565A02A8A5315728D2496E1A1A2051A0DA285ABBC271E27E1

업데이트를 삭제하라는 예전 안내는 폐기합니다. 다만 추가 제보로 이 직접 Luma 패키지만으로는 업데이트 쪽 코드와 자산을 덮지 못하는 환경이 확인됐습니다. 업데이트 1056에서는 위 재구성 핫픽스를 우선 사용하고, 이 ZIP은 호환되는 에뮬레이터·환경을 위한 보조 경로로만 유지합니다.

직접 Luma 패키지 설치 자리

실기 Luma3DS

SD:/luma/titles/00040000000CF500/romfs/...
SD:/luma/titles/00040000000CF500/code.ips

에뮬레이터 Azahar

<user 폴더>/load/mods/00040000000CF500/romfs/...
<user 폴더>/load/mods/00040000000CF500/exefs/code.ips

에뮬레이터용에서도 code.bin이 빠졌습니다. Azahar 2126.0은 실기와 같은 code.ips를 읽습니다(에뮬레이터 로그에서 ApplyCodePatch ... code.ips patching code.bin을 확인했습니다). 그래서 이제 어느 배포물에도 패치 적용이 끝난 실행파일이 들어가지 않습니다 — 우리가 배포하는 것은 차분 패치와 우리가 만든 한글 자산뿐입니다. 구판 에뮬레이터 설치를 쓰고 계셨다면 load/mods/00040000000CF500/exefs/code.bin을 지우고 code.ips로 바꿔 넣으세요.

어느 자리를 고치는지, 그리고 왜 섞으면 안 되는지

code.ips는 실행 코드의 정해진 위치에 바이트를 덮어씁니다. IPS 형식 안에는 「어느 파일용인가」가 들어 있지 않아서, 다른 버전에 얹어도 형식상으로는 통과하고 조용히 엉뚱한 자리를 덮습니다. 그래서 두 패키지에 code.ips.json을 함께 넣었습니다. 그 안에 대상 실행 코드의 SHA-256과 레코드별 수정 전 바이트 해시가 들어 있어, 잘못된 버전에 적용하려 하면 「이 code.ips는 게임 v1.0 전용이다」처럼 이름을 붙여 거부합니다. 배포본을 만들 때도 같은 관문을 통과해야만 ZIP이 나옵니다.

고치는 것은 세 가지뿐입니다.

자리 v1.0 v1.1 무엇
이름 입력 팔레트 0x56B068 0x56C008 4페이지 200칸을 한글로
코드→유니코드 문자표 0x56D406 0x56E3D6 본문용 한글 재지정 + ·· → 이·카·루
인라인 문자열 0x2A7FB4 0x2A8F94 배합 메뉴의 「スキルわりふり」 → 「스킬포인트배분」

주인공 기본 이름은 고치지 않습니다. 게임이 이름을 A8 D7·D7 B0 같은 코드열로 들고 있어서, 문자표에서 그 세 코드만 바꾸면 화면에 「이루」·「루카」가 나옵니다. 그 코드열이 v1.1에도 그대로 남아 있는 것까지 확인했습니다.

자리를 어떻게 옮겼나 — 「0x1000 밀렸다」를 믿지 않았습니다

v1.1 코드는 v1.0보다 밀려 있습니다. 하지만 밀린 양은 결과지 근거가 아닙니다. 그래서 두 가지 독립된 방법으로 각각 찾고, 두 답이 같을 때만 진행했습니다.

  1. 표 전체를 지문으로 — 팔레트 1,750바이트, 문자표 1,024바이트, 인라인 문자열 16바이트, 기본 이름 코드열 8바이트를 통째로 v1.1 코드에서 찾습니다. 넷 모두 v1.0 안에서도 v1.1 안에서도 딱 한 번만 나옵니다.
  2. 수정 구간 + 앞뒤 문맥을 지문으로 — 수정하는 자리 주변까지 함께 찾습니다.

두 방법이 가리킨 자리는 같았고(팔레트 +0xFA0 · 문자표 +0xFD0 · 문자열 +0xFE0), 옮긴 자리의 수정 전 바이트가 v1.0 원본과 같은 것과 적용 결과가 의도한 구간 밖에서 한 바이트도 달라지지 않는 것까지 확인했습니다.

어디까지 확인했는지 — 나눠서 적습니다

게임 v1.0용 게임 v1.1 직접 Luma 업데이트 1056 핫픽스
정적 대조 확인 확인 확인
에뮬레이터 Azahar 2126.0 확인 Azahar 2126.0 확인 제보 Citra 전후 화면 확인
실기(3DS) 확인 (2026-08-20) PASS 없음·실패 제보 있음 아직 확인 못 함

게임 v1.1용은 Azahar 2126.0에 공식 업데이트 1.1을 설치한 상태에서 부팅, 한글 타이틀, 새 게임, 한글 이름 입력 키보드 4페이지(「한1」~「한4」), 기본 이름 「이루」·「루카」, 키보드로 친 한글이 저장되고 메뉴에 다시 뜨는 것, 프롤로그 대사, 3D 필드, 주 메뉴까지 확인했습니다. 같은 환경에서 v1.0용 IPS를 얹으면 앱이 예외로 죽는 것도 함께 재현했습니다 — 제보자분이 겪은 「1.1이면 에러」가 그것이고, 이번 패키지가 고치는 것이 바로 그 문제입니다.

추가 제보는 직접 Luma v1.1 패키지의 코드·자산이 적용되지 않는 환경을 보여 주지만, 첨부 화면은 Citra이므로 실기 PASS로 세지 않았습니다. 에뮬레이터에서 되는 것과 실기에서 되는 것은 다른 주장이고, 2026-08-17에 그 둘을 섞어 판단했다가 틀린 적이 있습니다. 그래서 표를 나눠 적습니다. 업데이트를 설치한 실기에서는 업데이트 1056 핫픽스를 우선 사용하고, 적용 결과를 제보해 주시면 이 표를 갱신하겠습니다. 전투 진입은 자동 검증으로 닿지 못해 확인하지 못했습니다.

파일명이 v1.2 계열이고 title version이 1056인 업데이트도 2026-09-12에 직접 확보해 대조했습니다. 실제 실행 코드와 업데이트 콘텐츠는 앞서 분석한 업데이트와 바이트 단위로 같았지만, 실기에서는 본편 code.ips와 LayeredFS만으로는 로고·기본 이름이 일본어로 돌아온다는 제보가 확인됐습니다. 해당 환경은 위의 업데이트 1056 실기 호환 핫픽스를 사용해 공식 업데이트 자체에 한글 코드와 한글 RomFS를 반영하는 경로로 전환하세요. 다른 content SHA-256의 업데이트에는 이 핫픽스를 적용하지 마세요.

이전의 「실기 안전판」과 v0.9.2 배포본

2026-08-17의 code.bin 없는 「실기 안전판」은 이름 입력 키보드 한글화를 포기한 임시 판이었습니다. 지금은 아무것도 포기하지 않습니다. v0.9.2의 실기용/에뮬레이터용 두 ZIP과 그 안의 「업데이트1.1을_설치했다면」 폴더는 v0.9.3의 두 갈래로 대체되었습니다.

잠룡님께 드리는 감사의 말씀

이번 v0.8은 잠룡님께서 보내 주신 꼼꼼한 피드백이 없었다면 지금의 깊이까지 다듬기 어려웠습니다. 플레이 도중 그냥 지나칠 수도 있는 어색한 한 문장, 말하는 사람과 행동하는 사람이 뒤바뀐 번역, 좁은 정보 칸에서 한 글자 때문에 갈라지는 라벨, 대사창의 음영과 테두리를 넘어가는 글자, 배합 화면에 홀로 남아 있던 일본어까지 하나하나 화면으로 남겨 주셨습니다. 여기에 진행 구간이 다른 세이브 자료까지 함께 제공해 주신 덕분에 그동안 직접 도달하기 어려웠던 후반 화면과 메뉴를 실제 상태에서 확인할 수 있었습니다.

특히 감사한 점은 단순히 “이상하다”는 한마디로 끝내지 않고, 어떤 장면에서 무엇이 어색했는지 계속 살펴봐 주셨다는 것입니다. 그 피드백을 기준으로 현재 번역 원장과 실제 출하 바이트를 다시 대조하면서 이미 고친 항목과 아직 남은 항목을 정확히 나눌 수 있었고, 한 건을 고치는 데서 멈추지 않고 같은 원문 문법과 같은 UI 상자를 쓰는 연관 항목까지 전수 검사할 수 있었습니다. 그 과정에서 마르타 명칭 663자리와 조사 불일치, 대사 주체가 뒤집힌 연관 오역, 중복 조사, 오래된 번역표가 수정문을 되살릴 수 있는 문제, 일반 텍스트 검사로는 잡히지 않던 code.bin 속 일본어까지 추가로 찾아냈습니다.

검수자는 완성된 결과만 보는 사람이 아니라 작품을 함께 완성하는 동료라고 생각합니다. 긴 게임을 직접 진행하고, 같은 장면을 다시 찾아가고, 캡처와 세이브를 정리해 전달하는 일에는 많은 시간과 수고가 듭니다. 잠룡님께서 기꺼이 내어 주신 그 시간이 이번 패치의 대사와 화면을 훨씬 자연스럽고 안정적으로 만들었습니다. 보내 주신 의견을 단순 반영 목록으로 소비하지 않고, 다시 같은 문제가 생기지 않도록 자동 검사와 출하물 되읽기 검증으로 남겼습니다. v0.8을 기다려 주시고 끝까지 세심하게 살펴봐 주신 잠룡님께 진심으로, 그리고 깊이 감사드립니다.

버터포스님께도 감사드립니다

버터포스님께서 보내 주신 관심과 피드백에도 진심으로 감사드립니다. 한글 패치는 번역과 기술 작업만으로 완성되는 것이 아니라 실제 플레이어가 낯선 표현과 불편한 화면을 발견해 알려 줄 때 비로소 한 단계 더 나아갈 수 있습니다. 작업을 지켜봐 주시고 힘을 보태 주신 덕분에 놓치기 쉬운 부분을 다시 살피고 공개 전 검수를 한 번 더 단단히 할 수 있었습니다. 소중한 시간과 마음을 나눠 주신 버터포스님께 감사드립니다.

실기에서 게임이 시작되지 않던 문제 — 해결했습니다 (2026-08-20)

실기 Luma3DS는 외부 code.bin을 싣지 않습니다. 같은 수정을 code.ips로 넣으면 됩니다. v0.9.2 실기용 ZIP은 그렇게 만들었고, 실기에서 구동과 한글 이름 입력 키보드를 확인했습니다.

무엇이 문제였나

실기 Luma3DS의 게임 패치 기능은 SD:/luma/titles/<타이틀ID>/ 안의 code.ips를 읽어 이미 올라간 실행 코드를 그 자리에서 고치는 방식입니다. 같은 폴더에 code.bin을 놓아도 실기에서는 실행파일이 통째로 교체되지 않습니다. 그래서 v0.9.1까지의 실기용 ZIP은 실기에서 DS 로고 다음으로 넘어가지 못했습니다.

고친 방법은 형식을 바꾼 것 하나뿐입니다. 바이트를 새로 정하지 않았습니다.

  • v0.9.1이 출하하던 code.bin과 원본 code.bin의 차이(808바이트 · 6구간)를 그대로 IPS로 옮겼습니다
  • 만든 code.ips를 원본에 적용하면 v0.9.1 출하 code.bin과 SHA-256이 정확히 일치합니다
  • 제보자분이 실기에서 통과시킨 IPS와 바이트까지 같습니다
  • romfs 720개 파일은 v0.9.1과 바이트 단위로 동일하고, 회귀 313건도 그대로 통과했습니다

업데이트(v1.1)가 깔려 있으면 안 되던 것 — v0.9.3에서 열었습니다

제보자분이 「1.1을 설치한 상태면 에러, 1.1을 지우면 정상」까지 갈라 주셨습니다. 업데이트 CIA를 열어 보니 그 안에도 code.bin이 들어 있었습니다 — 업데이트가 깔려 있으면 실행되는 코드가 v1.0이 아니라 1.1이고, 1.1의 코드는 자리가 밀려 있어 같은 위치가 다른 자리를 가리킵니다.

당시(v0.9.2)의 대응은 「업데이트를 지우세요」였습니다. 그건 사용자에게 게임을 되돌리라는 요구였고, 제보자분이 실제로 바란 것은 그 반대였습니다. v0.9.3부터는 지우지 않아도 됩니다 — 게임 v1.1용 패키지가 1.1 코드의 같은 자리를 내용으로 다시 찾아 고칩니다. 자세한 내용은 위 「내려받기」 절에 적었습니다.

08-17에 적었던 원인 설명은 틀렸습니다

그때는 Luma3DS v13.4의 예외 화면(data abort / Permission - Page / Write)을 단서로 실행파일을 역어셈블해서, 「이 게임은 실행 중에 ARM 코드 조각을 만들어 데이터 영역 첫 페이지에 써 넣는데 외부 code.bin을 얹으면 그 페이지가 읽기 전용이 된다」고 적었습니다. 예외 화면과 어긋나지 않는 설명이었지만 결론이 틀렸습니다. 같은 바이트를 IPS로 넣으면 그 예외는 나지 않고 게임이 정상 구동합니다. 「이 게임은 구조상 외부 코드 수정을 받을 수 없다」고 단정한 것도 틀렸습니다.

틀린 설명을 조용히 지우지 않고 여기 남겨 둡니다. 위쪽 변경 이력에도 그대로 두었습니다 — 어디서 근거가 어긋났는지가 다음 판단에 필요하기 때문입니다.

이 문제를 풀어 주신 분

실기 환경에서 Luma 버전을 바꿔 가며 확인해 주시고, code.bin이 아니라 code.ips여야 한다는 것과 업데이트 1.1이 충돌한다는 것까지 갈라내 주신 SJH님께 감사드립니다. 확인용 IPS와 업데이트 CIA까지 보내 주신 덕분에 추측 없이 고칠 수 있었습니다.

알려진 문제 — 배합 확인창의 「악마의 서」 이름 뒤 글자

「태어날 ◼악마의 서○을(를) 동료로 삼으시겠습니까?」처럼 이름 뒤에 없는 글자가 붙어 보입니다. 악마의 서·대악마의 서·마왕의 서에서 보고됐습니다. 표시만의 문제이고 세이브나 진행에는 영향이 없습니다.

이번 회차에 원인의 절반을 찾았습니다. 화면에 뜬 그 이상한 글자들을 게임의 문자표로 거꾸로 되돌려 원래 바이트를 복원해 봤더니, 게임 안에 딱 한 곳만 있는 문자열 textinput_inputline이름 입력 키보드 화면의 내부 이름이었습니다.

즉 이름을 문장에 끼워 넣는 처리가 문자열의 끝 표시를 지나쳐서, 이름 입력 키보드가 그 메모리에 남겨 둔 흔적을 계속 읽어 화면에 그리고 있었습니다. 그래서 붙는 글자 길이가 화면마다 다르고(한 글자일 때도, 열 글자가 넘을 때도 있습니다), 항상 같은 글자로 시작합니다.

그 과정에서 그럴듯한 설명 세 개를 실측으로 기각했습니다. 고친 척하지 않기 위해 적어 둡니다.

  • 「한글 이름이 3바이트 문자로 끝나서」 → 아닙니다. 일본어 원문 あくまの書도 똑같이 끝나는데 정상입니다.
  • 「한글 이름이 원문보다 길어서」 → 아닙니다. 원문보다 긴 이름이 이미 2,514개 실려 있고 전부 멀쩡합니다.
  • 「이름이 길어서 칸을 넘어서」 → 아닙니다. 악마의 서는 몬스터 이름 1,165개 중 길이 440위로 평범합니다. 칸을 넘는 이름은 하나도 없습니다.

남은 것은 「왜 끝 표시가 없어지는가」 하나입니다. 근거 없는 수정을 배포본에 넣지 않기 위해, 재현 조건을 확인한 뒤에 손대겠습니다. 혹시 이 화면을 보신 분은 이름 입력 화면을 열었다 닫은 뒤에 더 심해지는지를 함께 알려 주시면 큰 도움이 됩니다.

v0.9.1에서 달라진 점

잠룡님께서 2부 후반부터 엔딩까지의 화면 13장과 마지막 보스전 직전 세이브를 새로 보내 주셨습니다. 지금까지 자동 검사만으로는 닿기 어려웠던 구간이라, 받은 제보 22건을 v0.9 출하 바이트에 그대로 대조해 21건이 남아 있는 것을 확인하고 전부 닫았습니다. 남은 한 건은 텍스트가 아니라 그림이었습니다.

글자를 세는 검사가 영원히 못 잡던 두 자리

  • 지도의 푼트 마을훈트 마을로 고쳤습니다. v0.8에서 같은 오타를 텍스트 쪽에서 고쳤고, 그 뒤로 회귀 검사도 계속 통과하고 있었습니다. 그런데 이번에 출하된 이벤트·메시지·code.bin 전체를 뒤져 보니 푼트라는 글자가 한 군데도 없었습니다. 지도 라벨은 글자가 아니라 그려 넣은 그림이었고, 그 그림에만 오타가 남아 있었던 것입니다. 같은 라벨이 쓰이는 지도 7곳을 함께 바꿨습니다.
  • 퀘스트 시작 배너 퀘스트!트타ー!퀘스트! 스타트!로 바로잡았습니다. 이것은 글자 그림을 다시 그려서는 고칠 수 없는 자리였습니다. 원문 クエストスタート 여덟 글자에서 가 각각 두 번씩 나오기 때문에 게임이 그림을 여섯 장만 싣고 재사용하는 구조였고, 그래서 다섯째 칸에 가 또 나오고 일곱째 칸의 는 손댈 수 없었습니다. 그림은 한 장도 다시 그리지 않고 어느 칸이 어느 그림을 보는지를 레이아웃에서 바꿔 해결했습니다.

앞으로 같은 일이 반복되지 않도록, 배포 ZIP을 도로 열어 그림과 배치까지 확인하는 검사를 검증 단계에 새로 넣었습니다.

열쇠 이름이 목록과 대사에서 갈려 있던 것

제보하신 두 건은 방향이 서로 반대였습니다. 어느 한쪽으로 몰아서 통일하지 않고, 게임이 이미 더 많이 쓰고 있는 표기가 무엇인지 출하 데이터를 세어 보고 정했습니다.

  • 상암의 시련의 열쇠영원한 어둠의 시련의 열쇠 (대사 쪽을 목록에 맞췄습니다). 열쇠 목록이 이미 영원한 어둠이고, 같은 낱말을 쓰는 영원한 어둠의 문도 그렇게 확정돼 있었습니다.
  • 와다쓰미의 시련의 열쇠해신의 시련의 열쇠 (목록 쪽을 대사에 맞췄습니다). 이 열쇠가 여는 곳이 게임 안에서 해신의 신전이고, 같은 신을 가리키는 해신의 가호도 이미 쓰이고 있었습니다. 와다쓰미는 전체 번역에서 이 한 줄뿐이었습니다.

「치다」로 뜻이 흐려지던 자리

討つ를 옮긴 치다는 한국어에서 뜻이 여럿이라 읽는 순간 갈립니다. 출하본을 전수로 보니 같은 동사를 이미 물리치다로 여덟 자리 쓰고 있었기에, 흩어진 쪽을 다수파에 맞췄습니다. 다만 목적어가 나라인 노스덴을 치다는 한국어에서 자연스러운 표현이라 그대로 두었습니다.

  • 틈새의 어둠을 칠 용사로서틈새의 어둠을 물리칠 용사로서
  • 틈새의 어둠의 왕을 쳐 다오물리쳐 다오 (제보에 없던 같은 문장 세 자리도 함께)
  • 멸망의 사자들을 묻어 온 것이로군물리쳐 온 것이로군
  • 네놈들이 나를 치는 일 따위 있을 수 없다나를 이기는 일 따위 (가능성을 부정하는 자리라 여기만 이기다가 한국어 관용에 맞습니다)

그 밖에 다듬은 문구

  • 사례하마고맙구나, 사례하노라감사하노라 — 한국어에서 사례하다는 물건이나 돈을 주는 쪽에 씁니다.
  • 내 마음을 되불러 준되돌려 준
  • 네 얼굴이 바로 떠올랐다그런데 갑자기 네 얼굴이 바로 떠올랐다 — 앞 대사에서 이어지는 자리라 접속이 없으면 문장이 뚝 끊겨 읽힙니다.
  • 똑같은 알이지…….똑같은 알이지……? — 원문이 상대에게 확인을 구하는 말투입니다.
  • 앞서의 신·용왕앞서 싸운 신·용왕 (앞서의 제노시도도 함께)
  • 그래서 말인데요. 이건데……이것은……
  • 줄곧 이 땅에 있느니라있었느니라
  • 간 떨어져서 그만 손을 놓지 말거라!깜짝 놀라더라도 잡고 있는 손을 놓지 말거라!
  • 저런 꼬맹이 한순간에저런 꼬맹이는 한순간에
  • 맡겼을 때 이후인가맡겼을 때 이후 처음인가
  • 봉인하는 방법을 지니고 계시다니알고 계시다니
  • 봉인한 지 몇 성상……몇백 년……성상(星霜)은 한국어에서 거의 쓰지 않는 한자어입니다.
  • 어둠의 왕의 성 틈새의 세계로!틈새의 세계에 있는 어둠의 왕의 성으로! — 원문은 같은 곳을 두 번 부르는 문장인데 한국어로 나란히 놓으니 목적지가 둘로 읽혔습니다.
  • 저는 땅의 수호신이 되어지상의 수호신이 되어 — 같은 문장 뒤쪽 고향 땅을이 겹쳤습니다.
  • 자랑스럽게 여긴다여긴단다

바꾼 문장은 모두 출하 글꼴의 실제 글리프 폭으로 다시 재서 대사창(353px)을 넘지 않는 것을 확인했고, 새로 들어간 음절이 글꼴에 실제로 있는지도 넣기 전에 검사했습니다.

v0.9.1 검증

  • 제보·회귀 감시 문자열 전수 조회: 37건 중 아직 남은 것 0건
  • 고친 값이 실제 파일에 들어갔는지(양성 대조): 32건 중 안 들어간 것 0건
  • 그림 검사: 지도 라벨·퀘스트 배너 2건 모두 배포 ZIP 안에서 확인
  • 자동 회귀: pytest 313개, 서브테스트 2,745개 통과
  • 출하 이벤트 대사 13,911행 되읽기: 원장과 불일치 0
  • 대사창 폭 초과: 0 / 13,911
  • 출하 Message 일본어: 0행
  • 조사 감사: pass (병기 224자리 · 고정 0)
  • 번들: 720/720 파일 일치, 누락·잉여 0
  • code.bin은 v0.9와 해시가 같습니다 — 이번 회차가 글과 그림만 건드렸다는 증거입니다
  • v0.9 대비 실제로 달라진 파일은 22개(이벤트 19 · 지도 1 · 열쇠 이름 1 · 퀘스트 배너 1)입니다

받은 세이브는 마지막 보스전 직전 구간이라 다음 회차의 화면 확인에 쓰겠습니다. v0.9.1은 정적 검사와 패키지 무결성까지 통과한 상태이며, 실기 전 구간 완주 검증은 아직 하지 않았습니다.

v0.9에서 달라진 점

8월 16일에 잠룡님과 버터포스님께서 새로 보내 주신 제보 화면과 실기 세이브를 v0.8 출하 바이트에 직접 대조했습니다. 갈무리에는 이미 고쳐 놓은 항목도 섞여 있었기 때문에, 눈으로 가르지 않고 출하된 이벤트 파일 440개와 Message 24개를 통째로 디코드해 남아 있는 것만 골라냈습니다. 그 결과 8건이 실제로 남아 있었고 전부 닫았습니다.

  • 뭐…뭐라는 강함이냐이…이 무슨 강함이냐로 고쳤습니다. 원문 なんていう強さ는 감탄의 이 무슨이라 직역이 한국어로 뜻이 서지 않던 자리입니다. 말더듬 표시는 원문 골격 그대로 두었습니다.
  • 시련을 내리는 장면의 그대의 힘을 나에게 보여 보라보여 보아라로 바꿨습니다. 같은 대사가 세 장면에 쓰이므로 한 번에 반영됩니다.
  • 인어족이 서툰 말로 건네는 마아루 통합니까아~?마이리 통합니까아~?로 고쳤습니다. 바로 앞줄 우리 말이 통하려나?와 짝이 맞습니다.
  • 본망입니다요바라던 바입니다요로 바꿨습니다. ~요 말버릇은 같은 화자가 같은 장면에서 쓰는 것이라 그대로 두었습니다.
  • 인어 여왕의 틈새의 어둠의 침공이 시시각각 다가오고 있습니다틈새의 어둠이 시시각각 침공해 오고 있습니다로 다듬었습니다. 제보 제안인 틈새의 어둠으로부터 침공이는 실제로 재 보니 대사창을 넘어가서, 뜻은 그대로 두고 폭 안에 들어오는 문장으로 옮겼습니다.
  • 마물명·종족명·스킬명의 마네마네흉내쟁이로 바꿨습니다. 다른 마물로 둔갑하는 마물이라 음차보다 뜻이 보이는 이름으로 갔고, 좁은 격자에 들어가는지 폭을 재서 확인했습니다.
  • 魔物使い의 한국어 표기가 마물사, 마물 부리는 자, 마물 조련사 세 갈래로 갈려 있던 것을 마물 조련사로 16자리 통일했습니다. 버터포스님 제안은 몬스터 마스터였지만, 게임의 칭호 목록에 まものつかいモンスターマスター서로 다른 항목으로 따로 들어 있어 합치면 같은 이름이 두 줄 나옵니다. 그래서 이미 화면에 쓰이고 있던 마물 조련사 쪽으로 맞췄습니다.
  • 제보에는 없었지만 같은 원문(さあ かかってきなさい) 세 줄이 덤벼 보시지덤벼 보시죠로 갈려 있어 함께 맞췄습니다.

v0.8에서 크게 달라진 점

  • 잠룡님 제보 화면과 세이브 자료를 현재 원장 및 출하 바이트에 대조해 제보 문자열 38/38건을 닫았습니다. 고친 값이 실제 파일에 들어갔는지 확인하는 양성 대조도 23/23건 통과했습니다.
  • 어색한 문구 12건을 다듬고 푼트→훈트, 인형옷→인형탈, 파레오→치마로 용어를 통일했습니다.
  • 게임 안에서 섞여 쓰이던 마르타 나라마르타 왕국으로 663자리 통일했습니다. 왕국으로·왕국은·왕국이처럼 받침에 따라 달라지는 조사도 함께 고쳤습니다.
  • 열쇠 정보 화면의 재생 시간, 최초의 사람, 번째 사람 등 좁은 칸에서 잘리던 라벨 12자리를 재생시간, 첫 사람, 명째 등으로 정리했습니다.
  • 배틀 메시지의 {이름}들은{이름} 일행은으로 고쳤습니다.
  • 사막의 왕이 열쇠를 맡기는 장면에서 행위 주체가 반대로 읽히던 대사를 그대! 이 열쇠를 맡아주지 않겠느냐!로 바로잡고, 같은 〜ようではないか 계열을 전수 검사해 연관 오역도 함께 수정했습니다.
  • 배합 Y 메뉴에 남아 있던 スキルわりふり는 일반 Message가 아니라 code.bin에 UTF-16LE로 박혀 있었습니다. 이를 스킬포인트배분으로 교체하고, 문자열이 16비트 단위로 같은 한글 위젯까지 전달되는 경로를 역공학으로 확인했습니다.
  • 이전 검사에서 놓쳤던 아(야)(야) 중복 조사 9자리와 옛 값 272행, 재빌드 순서에 따라 배합 크래시가 다시 생길 수 있던 위험도 함께 수정했습니다.

글자 넘침과 프리징 검수

제보 화면의 대사창 테두리와 글자 시작점을 실측하고, 출하 글꼴의 실제 글리프 픽셀로 원장 최장 줄을 다시 렌더링했습니다. 대사 13,911행 가운데 상자를 넘는 한국어 줄은 0개입니다. 실제 에뮬레이터에서도 타이틀, 이어하기, 필드, 메뉴, 도구, 몬스터 정보, 스킬 포인트 배분, 저장, 마르타 성과 큰길의 대사창을 확인했습니다.

배합 프리징을 막는 charmap 44칸과 재인코딩 214레코드·1,550바이트 절약 상태를 보존했습니다. 패키지 안 code.ips를 원본 code.bin에 적용해 빌드본과 같은 해시가 나오는지 확인했으며(에뮬레이터용 code.bin은 빌드본과 직접 대조), 스킬포인트배분은 1건, 남은 원문 スキルわりふり는 0건입니다.

설치할 때 꼭 확인하세요

실기 Luma3DS

  1. 게임과 세이브를 백업하고 SD 카드의 기존 luma/titles/00040000000CF500 폴더도 따로 백업합니다.
  2. 본체에 게임 업데이트 데이터가 있는지 확인합니다. 없으면 게임 v1.0용 Luma ZIP을 사용합니다.
  3. title version 1056 업데이트가 있다면 업데이트 1056 핫픽스를 우선 사용합니다. 동봉 README의 해시 확인과 재구성 절차를 따르세요.
  4. 직접 Luma ZIP을 쓰는 경우에만 기존 패치 폴더를 완전히 삭제한 뒤 ZIP의 luma 폴더를 SD 카드 루트에 복사합니다. 예전 code.bin은 남기지 마세요.
  5. 직접 Luma 설치 자리는 SD:/luma/titles/00040000000CF500/code.ips와 같은 폴더의 romfs입니다. 업데이트 ID 0004000E000CF500 폴더는 검증된 해결 경로가 아닙니다.
  6. Luma3DS 설정에서 Enable game patching을 켜고 게임을 콜드부트합니다. 업데이트 1056 핫픽스 결과는 타이틀 로고·기본 이름·이름 입력 키보드까지 확인해 주세요.

게임 v1.0용의 code.ips는 2026-08-20에 제보자분 실기에서 구동과 한글 이름 입력 키보드까지 확인된 파일과 바이트까지 같습니다. 업데이트 1056 핫픽스는 정적 검증과 제보 Citra 전후 화면까지 확보했지만 실기 확인 전입니다. 실기에서만 나타나는 문제가 있다면 제보 게시판에 사용한 Luma3DS 버전과 업데이트 설치 여부, 화면을 함께 남겨 주세요.

Azahar · Citra 계열

  1. 에뮬레이터를 완전히 종료합니다.
  2. 업데이트가 없다면 게임 v1.0용 ZIP을 사용합니다. 업데이트 1056이 설치돼 있고 직접 mod 폴더에서 코드가 적용되지 않으면 업데이트 1056 핫픽스로 전환합니다.
  3. 직접 mod 폴더를 쓰는 경우 ZIP의 luma/titles/00040000000CF500/romfs<user>/load/mods/00040000000CF500/romfs에 복사합니다.
  4. 같은 ZIP의 code.ips<user>/load/mods/00040000000CF500/exefs/code.ips에 넣습니다(exefs 폴더를 새로 만들면 됩니다).
  5. 예전 설치의 load/mods/00040000000CF500/exefs/code.bin이 남아 있으면 지웁니다.
  6. 오래된 세이브스테이트 대신 게임 내부 저장 데이터를 사용해 콜드부트합니다.

code.ips를 빠뜨리면 이름 입력 키보드와 기본 이름, 배합 메뉴 수정이 적용되지 않습니다. 에뮬레이터 버전에 따라 업데이트가 직접 mod 폴더보다 우선될 수 있으므로, 타이틀 탭만 한글이고 실제 키보드가 가나·기본 이름이 ルカ라면 업데이트 1056 핫픽스를 사용하세요.

지원 원본

  • Nintendo 3DS 일본판 CTR-P-BDMJ
  • Title ID: 00040000000CF500
  • 원본 크기: 2,147,483,648바이트
  • 원본 SHA-256: 6EA488D2AE08FBE8CC505329BB412EC460101EB9E3ACB706A35392FCA05E036B

다른 지역판, 트림본, 변조본에는 적용을 보장하지 않습니다. 원본 게임·카트리지 덤프·패치 적용 완료 ROM을 재배포하지 마세요.

한글패치 적용 방법

  1. 본체 설정 → 데이터 관리에서 이 게임의 업데이트 데이터와 title version을 먼저 확인합니다.
  2. 업데이트가 없다면 게임 v1.0용 Luma ZIP을 사용합니다. 기존 00040000000CF500 패치 폴더는 백업 후 통째로 교체하고, 예전 code.bin은 남기지 마세요.
  3. title version 1056 업데이트가 있다면 이 업데이트 1056 핫픽스를 우선 사용합니다. 직접 Luma v1.1 ZIP만으로는 업데이트 쪽 code·RomFS가 우선되어 한글 코드가 적용되지 않는 환경이 추가 제보됐습니다.
  4. 핫픽스 ZIP의 README_UPDATE_1056_KO.txt를 읽고, 본인이 소유한 공식 업데이트에서 추출한 code.bin과 RomFS에 동봉 적용기를 실행합니다. 입력 해시가 다르면 적용기가 자동으로 거부합니다.
  5. 생성 결과를 CFW 환경에서 설치한 뒤 타이틀 로고, 기본 이름 이루·루카, 한글 이름 입력 키보드를 콜드부트로 확인합니다.
  6. 제보에 첨부된 패치 완료 업데이트 ZIP·CIA는 저작권과 재배포 문제 때문에 공개 파일로 사용하지 않습니다.
  7. 업데이트 타이틀 ID 0004000E000CF500 아래에 code.ips를 두라는 제안은 실기 검증과 Luma3DS 구현 근거가 없어 설치 절차로 채택하지 않았습니다.
지원하는 원본 확인하기

Nintendo 3DS 일본판 / CTR-P-BDMJ / Title ID: 00040000000CF500 원본 크기: 2,147,483,648바이트 원본 SHA-256: 6EA488D2AE08FBE8CC505329BB412EC460101EB9E3ACB706A35392FCA05E036B 본체에 게임 업데이트 데이터가 없다면 → 게임 v1.0용 게임 v1.0용: DQM2_Iru_Luca_Korean_v1.0-Game-v1.0.zip 게임 v1.0용 SHA-256: 160C74A03CEAE4D4D64AB3CCEEBA3287DEF2930DA61245AA52A8E7F2B44E27C1 title version 1056 업데이트가 설치돼 있다면 → 업데이트 1056 재구성 핫픽스 우선 업데이트 1056용: DQM2_Iru_Luca_Korean_v1.0-Update1056-Hotfix.zip 업데이트 1056용 SHA-256: 8B5E7F9D2497AF81156326D6BF8ABEDED3831C0C5A69EE6BDE41400BC76A8EA9 두 ZIP 모두 원본 게임·공식 업데이트 CIA·패치 적용이 끝난 실행파일을 포함하지 않습니다. 업데이트 1056 핫픽스는 본인이 소유한 공식 업데이트 추출물에만 적용되는 차분 재구성 배포본입니다.

파일 검증값 확인하기

다운로드 파일의 SHA-256 값입니다.

8B5E7F9D2497AF81156326D6BF8ABEDED3831C0C5A69EE6BDE41400BC76A8EA9
재배포 안내

비영리 목적의 한글 패치 ZIP과 안내 문서만 재배포할 수 있습니다. 원본 ROM·카트리지 덤프·패치 적용 완료 게임 파일을 포함하거나 유료로 판매하지 마세요. 파일 변조, 출처·크레디트·동봉 라이선스 삭제를 금지합니다.

더 좋아진 부분들

  • v1.0 정식 — 현재 공개 중인 최신 패치 내용을 정식판으로 승격했습니다. 패치 바이트와 SHA-256은 그대로이며, 대표 다운로드와 보조 배포 파일명을 v1.0으로 통일했습니다.

  • v0.9.4 안내 정정 — 추가 제보 2건의 코드·자산 해시가 기존 업데이트 1056 핫픽스와 일치함을 확인했습니다. 업데이트 1056 환경은 직접 Luma ZIP이 아니라 재구성 핫픽스를 우선 사용합니다. 첨부 화면은 Citra이므로 실기 검증 완료로 표기하지 않습니다.

  • 업데이트 타이틀 ID 0004000E000CF500 폴더 제안은 채택하지 않았습니다. Luma3DS는 실행 프로세스의 프로그램 ID로 code.ips와 LayeredFS 경로를 만들며, 해당 경로의 실기 PASS 증거가 없습니다.

  • v0.9.4 — xdelta 적용 위치가 어렵다는 제보를 받아, 공식 업데이트 v1.1용 Luma 폴더 ZIP을 추가했습니다. 이 ZIP은 현재 보조 경로로 유지합니다.

  • 업데이트 1056이 설치된 실기에서 타이틀 로고와 기본 이름이 일본어로 돌아오는 제보를 받아, 업데이트 자체에 한글 코드와 화면 자산을 적용하는 호환 핫픽스를 추가했습니다. 실기 최종 확인 전이라 적용 후 결과 제보를 부탁드립니다

  • 공식 업데이트 v1.1을 지우지 않고 그대로 쓸 수 있습니다. 배포를 게임 v1.0용과 게임 v1.1용 두 갈래로 나눴습니다. 예전의 「업데이트 데이터를 삭제하세요」 안내는 폐기합니다

  • v1.1용 code.ips를 오프셋 계산이 아니라 표 전체를 지문으로 삼아 다시 찾아 만들었습니다. 이름 입력 팔레트 1,750B·문자표 1,024B·인라인 문자열 16B·기본 이름 코드열 8B가 v1.1 안에서도 각각 딱 한 번만 나오고 v1.0과 바이트가 같다는 것을 확인했고, 앵커와 지문 두 방법이 같은 자리를 가리킬 때만 진행했습니다

  • 서로의 code.ips를 바꿔 쓰면 검증 단계에서 거부됩니다. 각 ZIP에 code.ips.json(대상 실행 코드 해시 + 레코드별 수정 전 바이트 해시)을 함께 넣었고, 잘못된 버전에 적용하려 하면 「이 code.ips는 게임 v1.0 전용이다」처럼 이름을 붙여 거부합니다

  • 에뮬레이터용에서도 완성 code.bin을 뺐습니다. Azahar 2126.0은 실기와 같은 code.ips를 읽습니다(load/mods/00040000000CF500/exefs/code.ips). 이제 어느 배포물에도 원작 실행코드가 들어가지 않고 차분 IPS와 한글 자산만 들어갑니다

최근 변경 내역 9개를 표시합니다.