Appearance
魔界島(HVC-UNROM-02)フラッシュ換装手順書
対象: issue #7 / ドナー: 魔界島 CAP-MZ(基板 HVC-UNROM-02、PRG: CAP-MZ-0 RP231024D 28ピン 1Mbit マスクROM、CHR-RAM 搭載) 換装チップ: SST39SF040(DIP-32・512KB)
原理(根拠)
- 任天堂の 28 ピン 128KB PRG マスク ROM のピン配置は、同社 32 ピン配置の 3〜30 番ピンをそのまま取り出したもの(NESdev Wiki – Mask ROM pinout。"allows a 32-pin hole to take a 28-pin 128 KiB PRG ROM in pin 3 to pin 30")。
- したがって SST39SF040(JEDEC 標準 32 ピン)を 2 ピンずらして(フラッシュ 3 番→ソケット 1 番)挿すと、大半の信号が自然に一致する。
- 不一致は 2 箇所のみ:
- ソケット 22 番 = 基板の A16(バンクラッチ 74HC161 から)だが、その位置に来るフラッシュ 24 番は /OE → 24 番を浮かせ、A16 はフラッシュ 2 番へ配線
- ソケット 28 番 = VCC だが、その位置に来るフラッシュ 30 番は A17 → 30 番を浮かせて GND へ
ソケット(基板側 28 穴)の信号 — 検証済み対応表
| 穴 | 信号 | 穴 | 信号 |
|---|---|---|---|
| 1 | A15 | 28 | +5V |
| 2 | A12 | 27 | A14 |
| 3 | A7 | 26 | A13 |
| 4 | A6 | 25 | A8 |
| 5 | A5 | 24 | A9 |
| 6 | A4 | 23 | A11 |
| 7 | A3 | 22 | A16(ラッチ出力) |
| 8 | A2 | 21 | A10 |
| 9 | A1 | 20 | /CE(/ROMSEL) |
| 10 | A0 | 19 | D7 |
| 11 | D0 | 18 | D6 |
| 12 | D1 | 17 | D5 |
| 13 | D2 | 16 | D4 |
| 14 | GND | 15 | D3 |
作業手順
1. マスクROM除去(足切り工法)
- 精密ニッパーで CAP-MZ-0 PRG の全 28 本の足をチップ本体の根元で切断(基板側に足を残す)
- 残った足をはんだごてで温めつつピンセットで 1 本ずつ抜く
- 吸取線+吸取器でスルーホール 28 穴のはんだを除去(貫通確認: 光にかざす)
- CHR-RAM・74HC161・74HC32 には触らない
2. ソケット取り付け
- 丸ピンソケット 28P・600mil(秋月 102841)を切り欠きを基板シルクの向きに合わせてはんだ付け
3. フラッシュの準備(挿す前に焼く)
bash
python3 tools/flashnes.py --port /dev/tty.usbmodem* write build/game.nes --ines--inesで PRG 128KB が抽出されアドレス 0 に書き込まれる(A17=A18=GND 前提と整合)
4. フラッシュのピン加工と装着
上向きに曲げる(ソケットに挿さない)ピン: 1, 2, 24, 30, 31, 32 の6本
残り 26 本を「フラッシュ 3 番 → ソケット 1 番」の位置関係で挿す(チップは切り欠き側が 2 ピンぶんソケットからはみ出す)。
ジャンパ配線 6 本(UEW 線):
| フラッシュピン | 信号 | 接続先 |
|---|---|---|
| 32 | VDD | ソケット 28 番パッド(+5V) |
| 31 | /WE | +5V(32 番と共通でよい)※実機での誤書き込み防止 |
| 30 | A17 | GND(ソケット 14 番パッド) |
| 24 | /OE | GND(同上) |
| 2 | A16 | ソケット 22 番パッド(基板 A16) |
| 1 | A18 | GND |
5. 検証
- テスターで導通確認: 特に「フラッシュ2番⇔ソケット22番」「30番が GND」「24番が GND」「31/32番が +5V」、および隣接ピンのショートがないこと
- 互換機に挿して起動 → ゲーム画面表示で完了
- 起動しない場合: /CE(ソケット20)⇔フラッシュ22 の導通、A16 配線、GND/VCC を順に確認
ミラーリング設定の確認
基板の V/H はんだパッド(CHR-RAM 脇)が V(垂直ミラーリング)側にブリッジされていることを確認。H 側なら V 側へ付け替える(本作は横スクロールのため垂直ミラーリング。ROM ヘッダも vertical 指定済み)。
参考
- NESdev Wiki – Mask ROM pinout(28=32ピンのサブセットの一次情報)
- NES ROM Pinouts (Drk)
- ライターの使い方:
docs/writer.md