드래곤 퀘스트 몬스터즈 2 이루와 루카
공식 업데이트 1056 호환 핫픽스 / v0.9.4 후보

[무엇을 고치는 패치인가]
공식 업데이트가 설치된 일부 실기에서 한글패치의 본편 LayeredFS보다 업데이트 쪽 실행 코드와 자산이 우선되어,
타이틀 로고 일부와 주인공 기본 이름이 일본어로 돌아오는 제보를 받았습니다.

이 핫픽스는 본편 패치 폴더를 억지로 덮는 대신, 사용자가 소유한 공식 업데이트를 직접 재구성합니다.
업데이트의 code.bin에는 기존에 검증한 업데이트용 코드 수정분을 적용하고,
업데이트 RomFS에는 현재 v0.9.3의 한글 RomFS 720개를 모두 합쳐 업데이트 자체가 한글 자산을 가지고 실행되게 합니다.
업데이트에만 있는 SATSUKI.icn은 원본 그대로 보존합니다.

[중요]
- 원본 게임, 공식 업데이트 CIA, 완성된 code.bin, 완성 CIA는 이 ZIP에 들어 있지 않습니다.
- 이 ZIP은 차분 패치와 적용 스크립트, 설명서만 포함합니다.
- 반드시 본인이 소유한 일본판과 본인이 직접 덤프한 공식 업데이트에서 작업하세요.
- 세이브는 먼저 백업하세요.
- 다른 업데이트에는 적용하지 마세요. 적용 스크립트가 SHA-256이 다르면 자동으로 중단합니다.

[지원하는 업데이트 지문]
업데이트 Title ID: 0004000E000CF500
TMD title version: 1056

업데이트에서 추출한 code.bin
SHA-256: 42971E127080BA8223F4BD3EFB2AF7FC4FCE31F92A98E50370E657DECC7CFA38

업데이트에서 추출한 DecryptedRomFS.bin
SHA-256: 7B2D6FA3C5650C41402E08B53816DE874EF0FA9E931398F57A22FE693E5F9B94

[필요한 것]
- 본인이 소유한 공식 업데이트를 복호화·추출할 수 있는 3DS 도구
- Python 3
- xdelta3
- 업데이트를 다시 CIA로 만드는 도구

도구 자체는 이 배포 ZIP에 넣지 않습니다.

[1. 공식 업데이트를 직접 추출]
본인이 소유한 공식 업데이트를 복호화한 뒤 ExeFS와 RomFS를 추출합니다.
다음 두 파일을 준비하세요.

- ExeFS에서 나온 code.bin
- 업데이트의 DecryptedRomFS.bin

파일명이 달라도 괜찮지만 위 SHA-256 두 값이 정확히 같아야 합니다.

[2. 차분 적용]
이 ZIP을 풀고 명령 프롬프트 또는 PowerShell에서 다음처럼 실행합니다.

python apply_update1056_fix.py --code "내 code.bin 경로" --romfs "내 DecryptedRomFS.bin 경로" --xdelta "내 xdelta3.exe 경로"

성공하면 DQM2_Update_1056_KoreanFix_Output 폴더에 아래 두 파일이 생깁니다.

- code.bin.patched
- CustomRomFS.bin

정상 결과 SHA-256은 다음과 같습니다.

code.bin.patched
F7C762458C9CAF50A0D4549F280B3E5FC0A505ADE74DC30CCDFA9AC4F28A7EAC

CustomRomFS.bin
A85CECA1AA0F4B2361015D246EE59559FD1D939E749199CDD73A520C29F6B3B2

적용 스크립트가 이 값까지 다시 확인한 뒤 PASS를 표시합니다.

[3. 업데이트 재구성]
공식 업데이트를 추출할 때 사용했던 도구의 재구성 절차를 그대로 사용합니다.

- 기존 업데이트 ExeFS의 code.bin을 code.bin.patched로 교체합니다.
- 기존 업데이트 RomFS 대신 CustomRomFS.bin을 사용합니다.
- 나머지 ExHeader, 아이콘, 업데이트 전용 파일과 두 번째 content는 원본 업데이트에서 추출한 것을 그대로 유지합니다.
- Title ID는 0004000E000CF500을 유지합니다.
- title version은 1056을 유지합니다.

HackingToolkit 계열처럼 폴더 기반으로 재구성하는 도구를 쓴다면 CustomRomFS.bin을 먼저 RomFS 폴더로 다시 풀고,
그 결과를 업데이트의 ExtractedRomFS 자리에 사용한 뒤 CIA를 재구성하면 됩니다.

[4. 설치]
기존 공식 업데이트와 중요한 세이브를 백업한 뒤 본인이 재구성한 업데이트를 설치합니다.
본편 한글패치 폴더는 그대로 두어도 되지만, 이번 호환판은 업데이트 안에 현재 한글 RomFS 전체를 함께 넣었기 때문에
업데이트 쪽에서 한글 자산을 직접 공급하도록 만든 구조입니다.

[검증 상태]
2026-09-12 기준으로 다음을 확인했습니다.

- 제보자가 첨부한 업데이트의 실제 두 content가 2026-08에 분석했던 업데이트 content와 바이트 단위로 동일함
- 업데이트 code.bin이 기존 업데이트용 code.ips 대상과 정확히 동일함
- 코드 차분 적용 후 목표 code.bin SHA-256 정확히 일치
- 업데이트 기존 RomFS 10개 중 한글판과 겹치는 9개 교체
- 한글 RomFS 711개 추가, 업데이트 전용 SATSUKI.icn 1개 보존
- 최종 업데이트 RomFS 721개 파일 구성
- 재구성 직전 ExeFS/RomFS 되읽기 불일치 0
- 로컬 재구성 CIA의 Title ID와 title version 1056 확인
- 배포용 code/RomFS xdelta를 다시 적용해 목표 파일과 바이트 단위로 일치함

[아직 확인하지 못한 것]
실제 3DS에 이 재구성 업데이트를 설치한 최종 실기 확인은 아직 완료하지 못했습니다.
현재 PC의 격리 에뮬레이터에서는 숨김 파일 선택창 자동화 제약 때문에 새 CIA 설치 런타임 검증을 완료하지 못했습니다.
따라서 이 호환 핫픽스는 정적 재구성·되읽기·차분 왕복 검증을 통과한 실기 확인 대기 후보입니다.

적용 후 타이틀 로고, 기본 이름 이루/루카, 한글 이름 입력, 대사와 메뉴가 정상인지 제보해 주시면 실기 확인 상태를 갱신하겠습니다.
