# MHP3 改造クエスト 制作キット — 仕様書

最終更新: 2026-06-22

MHP3（モンスターハンターポータブル3rd / PSP / ULJM05800）の**改造クエストをPCだけで作成し、
配信クエストセーブ `MHP3RD.BIN` に統合して集会所イベントに表示・自由に配布する**ための一式です。
既存ツール（中国製 MHP3TaskEdit、endecryptQST）を逆解析し、日英化・モダン化・自動化・新規ツール化しました。

---

## 0. 同梱物 一覧

| フォルダ/ファイル | 内容 |
|---|---|
| `MHP3TaskEdit_日英版/` | **メインエディタ**。原作MHP3TaskEditを再コンパイル＋日英化＋モダンUI＋クエスト一覧サイドバー＋BIN一気作成。全タブ動作。**素材/モンスター名は起動時から日本語**。exe＋必要リソース(template/Data/map/Arm_Wpn)のみ同梱 |
| `BIN化ツール/` | `endecrypter.exe`(Layer A暗号)・パイプライン(`mhp3bin_auto.py` extract/build)・`mhp3pack.py`/`mhcrypt.py`/`mhp3qst.py`/`mhp3bin.py`・平文`data_あなたの43クエスト.bin`　**※`gamekey.bin`は非同梱（下記「準備」参照）** |
| `endecryptQST/` | Layer B暗号ツール（パイプラインが自動操作） |
| `仕様書.md` | 本書 |
| `企画書_53クエスト.md` | 改造クエスト設計53本 |

> **動作要件**: Windows / .NET Core 3.1 Desktop ランタイム / Python3（BIN化の自動操作に `pip install pywinauto capstone pycryptodome`）。
> ※ 必要最小限構成です（再ビルド用ソース・別ツールは省いています。必要なら別途お渡しできます）。

> ## ⚠ 準備：gamekey.bin（同梱していません）
> ゲーム固有の秘密鍵のため**本キットには含めていません**。下記「1. 暗号の2層構造」の手順で**自分で取得**し、
> **`BIN化ツール/gamekey.bin`** というファイル名で置いてください（16バイト）。これが無いとBINの復号/作成はできません。

---

## 1. 暗号の2層構造（最重要）

`MHP3RD.BIN` は**二重に暗号化**されています。解析の結果、両方ともPCで処理可能と判明・検証済みです。

```
[平文クエスト v005]          ← MHP3TaskEdit / Quest Studio / mhp3qst が作る
   │
   ▼ Layer B（MH独自暗号）   ← endecryptQST3rd.exe（GUI、本キットが自動操作）
[平文 data.bin] 100スロット(各0x6010)。+0x20 にクエスト本体
   │
   ▼（data.bin を Layer B 暗号化）
[途中データ]
   │
   ▼ Layer A（PSPセーブ暗号）← endecrypter.exe ＋ gamekey.bin（本キットでPC処理）
[MHP3RD.BIN]                  ← ゲームが読む。SAVEDATA/ULJM05800QST/ に置く
```

- **gamekey（別途自分で用意・非同梱）**: ULJM05800 のセーブ用ゲーム鍵（16バイト）。次のいずれかで取得し、**`BIN化ツール/gamekey.bin`** に置いてください：
  - **実機CFW PSPでダンプ**: `SGKeyDumper`（または `SGDeemer`）プラグインを有効化 → MHP3を起動しセーブ/ロード → `ms0:/PSP/GAME/SED/gamekey/ULJM05800QST.bin`（16バイト）が出力されるので、これを `gamekey.bin` にリネームして配置。
  - もしくは当時のMHP3改造コミュニティで配布された鍵ファイルを入手。
  - ※ ゲーム固有の秘密鍵です。第三者への再配布は避けてください。
- 完成 `MHP3RD.BIN` は**ゲーム鍵暗号＝全PSP/PPSSPP共通**。誰のSAVEDATAに置いても動くため**配布可能**（鍵自体は配らない）。

### 検証済み（実データ）
- あなたの `MHP3RD.BIN` を復号 → **公式43クエスト**を日本語名まで取得（「終焉を喰らう者」等）。
- Layer A 暗号化→復号で**バイト完全一致**。build→再extractで**43クエスト保持**（差はendecryptQST固有の2バイト/クエストのみ）。

---

## 2. ツール別 使い方

### 2-1. MHP3TaskEdit 日英版（メインエディタ） — `01_MHP3TaskEdit_日英版/MHP3TaskEdit.exe`
原作の全機能＋以下を追加。**起動すると右隣に「クエスト一覧 / BIN作成」サイドバー**が開きます。

**通常編集**: メニュー右上の「日本語 / EN」で言語切替。「言語表示」で素材/モンスター名の言語切替。
各タブ（基本設定/大型モンスター/小型モンスター/支給品/採集資源/素材報酬/訓練所/共有）で従来通り編集。

**一覧→編集→BIN一気作成（新機能）**:
1. サイドバー「**BINを開く（復号して一覧）**」→ `MHP3RD.BIN` 選択 → 復号して43枠を一覧表示
   （または「data.bin を開く」で平文data.binを直接）
2. 一覧のクエストを**ダブルクリック** → 本体エディタにそのクエストが読み込まれる
3. 本体で自由に編集
4. サイドバー「**▼ 編集中クエストをこの枠に取込**」→ 編集内容がそのスロットに反映
5. 2〜4を繰り返し、最後に「**★ 保存 → BIN まで一気に作成**」→ 配布用 `MHP3RD.BIN` を出力
6. 出力BIN（＋同時生成の `*.PARAM.SFO`）を `PSP/SAVEDATA/ULJM05800QST/` に配置

### 2-2. MHP3 Quest Studio — `02_MHP3QuestStudio/.../MHP3QuestStudio.exe`
自作の軽量統合GUI（日英）。クエスト編集（番号/報酬/継続/時間/星/ボス体積・HP・攻撃・防御・耐力/文章）・
DAT/MIS/**PAT出力**・data.binスロット編集。PATルートで遊ぶ人向けに最適。

### 2-3. BIN化ツール — `03_BIN化ツール/`
```bash
# 取り出し（中の全クエストを一覧）
python mhp3bin_auto.py extract <MHP3RD.BIN> gamekey.bin out_data.bin
# クエスト差込
python mhp3pack.py db-set out_data.bin <slot> <quest.dat> data_new.bin
# 配布用BIN作成（PARAM.SFOも更新）
python mhp3bin_auto.py build data_new.bin gamekey.bin <PARAM.SFO> MHP3RD_new.bin
```
- `mhp3bin_auto.py` … Layer A(endecrypter.exe)＋Layer B(endecryptQSTをpywinautoで自動操作)を全自動連結。
- `mhp3bin.py` … 同じ工程を手動（endecryptQSTを手でクリック）で行う版。
- `endecrypter.exe` … PSPセーブ暗号(Layer A)。cielavenir版をMSVCでビルド・検証済み。

### 2-4. CLIツール — `04_CLIツール/`
- `mhp3qst.py info/set/dat2mis/mis2dat/rew` … クエストの解析・フィールド編集・形式変換。
- `mhp3pack.py pat/unpat/db-*` … **PAT(チートコード)生成**（実ユーザーPATとバイト一致を検証済み）・data.bin編集。
- `mhcrypt.py` … MHP3TaskEdit互換の暗号（tableA/aaaatobbbb/MIS/rew）。

---

## 3. 遊ぶための2ルート

### ルートA（PSP暗号不要・最も簡単）: CWCheat PAT
クエスト→`mhp3pack.py pat` または Quest Studio で `.pat` 出力 → PPSSPP/CWCheat のチートで読み込み →
集会浴場でイベントクエストを一度ロード→PAT ON→クエスト選択。BINを触らずに遊べる。

### ルートB（配布用BINを作る）: data.bin → MHP3RD.BIN
上記 2-1 のサイドバー、または 2-3 の `mhp3bin_auto.py build` で完成BINを作成 → SAVEDATA に配置。
**誰でも同じBINを使え、各自が同手順で自作BINを作れる**。

---

## 4. クエスト設計資料（`05_企画書_53クエスト.md`）
下位ボス同種3連(報酬1.5倍)/上位異種連戦(3-4体)/イベント再現(MGS他)/採集専門(ポイント最大・継続9)/
2人協力オリジナル/極小極大ネタ(体積25-255) の全53本を、ツール入力値付きで設計。

---

## 5. 主要な解析結果（再ビルド・拡張用 / `06_解析資料/`）
- **MHP3TaskEdit**: .NET（難読化なし）。`ilspycmd` で復元 → 名前空間をブロック化 → netcoreapp3.1 で再ビルド。
  暗号: 4バイトブロック tableA置換＋32bit鍵XOR連鎖。鍵 MIS=0x6A257319 / 素材=0xA19E5188。MISはSHA1(20Bソルト)＋aaaatobbbb。
- **endecryptQST (Layer B)**: 自前SHA-1(20Bソルト `VQ(DOdIO9?X3!2GmW#XF`)＋2連LCG(乗数0x215f/0xdfa3,法0xff8f/0xffef)ストリーム＋S-Box置換。
  data.bin=mib100個。各mibに per-mib第2暗号層あり（本キットは実endecryptQSTで処理）。
- **PSPセーブ (Layer A)**: kirk-engine ベース。`endecrypter ENC.bin GAMEKEY.bin > DEC.bin`。PARAM.SFOのハッシュ(+0x10/+0x20/+0x70)更新。
- **PAT形式**: `[u32 RAMアドレス 0x0967B440][クエスト平文 v005]`。
- **クエスト主要オフセット**: 番号176 / 星178 / 種別148 / マップ180 / 報酬金156 / ポイント124 / 継続=報酬金÷160 / 時間164÷1800 / 山菜爺ネコ150 / ボス基礎値 64+n*8。

---

## 6. トラブルシュート
- **「SkillList.csv / BeadList.csv が存在しない」**：`Arm_Wpn/` 等のリソースが exe と同じ場所にある必要があります。
  必ず **`MHP3TaskEdit_日英版/` フォルダ内の `MHP3TaskEdit.exe`** を実行してください（ビルド出力 `bin/Release/` を直接実行しない）。
  ※本版はリソースが無い場合も無言で続行する（訓練所機能のみ無効）よう修正済み。
- **クエスト読込で範囲エラー**：公式クエストの一部の値が既定の入力上限を超える件は、読込前に上限を自動拡張するよう修正済み。
  万一エラーが出ても未処理ダイアログにならず「読込エラー」表示で続行します。
- **サイドバーの「BINを開く」「★保存→BIN」**：Python と `pywinauto`/`capstone`、および `BIN化ツール/` `endecryptQST/` `gamekey.bin` が必要です（同梱）。

## 7. 注意・免責
- `gamekey.bin` はゲーム固有の秘密鍵です。公開配布は避けてください（本キット内利用のみ）。
- 改造セーブの使用は自己責任で。**オンライン（アドホック等）での使用は不可**（readme準拠）。
- 大切なセーブは必ずバックアップしてから作業してください。
- 本キットはゲーム本体の内容を一切含みません。各ツールの著作権は各作者に帰属します。
