Appearance
セッションログ
2026-09-16 セッション — 部品到着・#19 ファーム実装(PR #20)・作業チェックリスト
状況: 共立・aitendo 到着(納品書確認)。AliExpress(SST39)未着。ユーザー「今あるパーツで進められる作業を進めたい」
完了:
- #19 実装 → PR #20(Step 1+2 → 3 → 3.5 → 4、✅ LGTM、マージ待ち):
Turbo(hz).on(now)の純粋矩形波+button_out優先ロジック、GP7–10 入力 / GP11・12 open-drain → DockR8/T6。22 件 PASS。Dock RTL 変更なしなので #17 を待たず A/B は実機確認可 docs/06_bench_checklist.mdを作成: 手持ち部品でできる 6 作業(Pico 単体動作 / RKJXV 実測 / LCD 比較 / PAM8403 試聴 / インサート試し / nes-rom-reader 組立)を手順付きで- 在庫台帳の到着ステータス更新
追記(同日): docs/07_assembly_guide.md 組立・検証手順書(図解つき)を作成。図は docs/img/gen_svg.py で SVG 生成(Pico 2 ピン割当 / RKJXV 端子確認と配線 / ベンチ配線 / コンパネ配置 / LCD・音・電源)。ブラウザで描画を確認し、重なりを 3 回修正。AliExpress の SST39 は別プロジェクト用(台帳対象外)
次回: ユーザーの実機作業結果(INVERT_X/Y・RKJXV 実測値・本番 LCD)を受けて CAD 修正 PR / #17 Dock bitstream / M5Stamp S3A の有無確認
2026-09-15 セッション — 4 ボタン化・マーキー静止表示(シミュレーター v4.1)
ユーザー決定: ①透明 OLED 廃止でマーキーの表示は無し(ミニ LCD で出せるなら可)②A/B に連射ボタンを足して 4 ボタン(タクトは黒5・赤5 で足りる)
完了:
- #19 起票: 4 ボタン化。連射は Pico 2 で生成(4 入力を読み Dock の A=R8 / B=T6 へオープンドレイン出力、15Hz 既定)→ Dock RTL 変更なし。コンパネ配置 前列 A(14,22) B(36,16) / 後列 A連射(20,40) B連射(42,34)、Start/Select は (-10,9)/(2,9)。#6 に CAD 変更要求を投稿(RKJXV 実測 PR と同時対応)
- ミニ LCD は在庫なし(Parts Manager 検索: LCD/OLED/液晶/ディスプレイ → 該当なし。Whisplay HAT は Pi 用)。マーキーは印刷フィルム+WS2812 の静止表示を既定にし、シミュレーターに「ミニLCD 1.9" 170×320(候補)」を既定 OFF で追加(窓 44×26 に収まる・Pico 2 で駆動可)
- シミュレーター v4.1(PR #9 ブランチ・Artifact 同 URL): 上記反映、ブラウザで描画確認済み
- 在庫台帳のタクト用途を 4 ボタンに更新
- ⚠️ Parts Manager に
miniArcadeプロジェクトが未登録。台帳は docs/03_inventory.md のまま(移行は別途)
追記(同日):
- ボタン色を 赤 = A 列(手前 A・奥 A連射)/ 黒 = B 列 に確定(#19 コメント・シミュレーター v4.1 反映)
- Parts Manager に
miniArcadeプロジェクトを作成し全在庫を登録(秋月レシート 27 品目 / 共立 8 品目 / aitendo 7 品目 / MISUMI CR22A / nes-rom-reader 基板)。以後の在庫確認は MCP で行う - レシートで判明した追加購入: Pico H、オルタネート白 LED プッシュ SW、WS2812 5mm ×5、1000uF ×3、VR 10k+ツマミ、XH コネクタ一式、ピンソケット。LED 照光タクト赤は 2 個
- 配送状況(Gmail): 共立 9/10 出荷・9/11 着(透明 OLED は在庫切れで除外)/ MISUMI CR22A は 7/28 出荷済み / aitendo は 9/3 注文確認のみで出荷メールなし / AliExpress E10092402961 が 9/15 国内到着(内容は要確認)
次回: PR #14 / #9 / #18 マージ → RKJXV 実測 → LEVER_*+BTN_* 差し替え PR / #19 ファーム(#15 の延長)/ #17 Dock bitstream / 9/16 千石
2026-09-14 セッション(続2)— シミュレーター v4・PR #14 の CAD バグ修正
ユーザー指示: PR #16 マージ済み。「#14 で実際に出来上がる想定のものをシミュレーターに反映、部品変更も全部最新の完成図に」
完了:
- PR #14(CAD)に重大バグを発見・修正(commit
c9a05c9):util.scadのon_plane()がrotate([ang-90,0,0])でローカル軸が 90° ずれ、コンパネ・ベゼル・スピーカーバー・マーキー天面が面の下辺を軸に倒れて生成されていた。build.shの assert は寸法値のみで検出不可、Step 3.5 のキャプチャでも見落とし。併せてベゼルの LCD 座掘りを内側へ、装飾スリットを中央揃えに。build.sh PASS・側面図/全体図を PR #14 に添付。マージ前に人間レビューを - シミュレーター v4(PR #9 ブランチ
feature/6-cabinet-simulator/ Artifact 同 URL 更新): 座標系を CAD のon_plane()規約に統一し 11 パーツをparams.scadと同値で再構築。RKJXV レバー+Pico 2、12mm タクト+φ16 印刷キャップ、LED 照光タクト赤/青、マーキー左右スピーカー+窓 44、nes-rom-reader 垂直マウント、TPS2116、バッテリー候補配置(既定 OFF)を反映。透明OLED・比較ゴースト・カセットベゼルは削除- Artifact: https://claude.ai/code/artifact/113ced3d-c0fa-469e-a511-a2e25f2e266c(**このアカウントから更新できた**。前セッションの ecc4c7bf は別組織判定で使わない)
- #15 post-merge-test ✅(17 件 PASS)。PR #16 に混入した
.pycを除去する chore PR を作成 - 教訓: CAD は形状のレンダリング(側面図)で目視検証する。
build.shに傾斜パーツの bbox 高さ assert を足すと再発防止になる
次回: PR #14・#9・chore PR のマージ → RKJXV 実測 → LEVER_* 差し替え PR(シミュレーターの P.lever* も同時更新)/ #17 Dock bitstream / fpga-famicom#40 Phase A / 9/16 千石
2026-09-14 セッション(続)— #15 Pico 2 レバーファーム実装(PR #16)
引き継ぎ: 前セッション(miniArcade)からクロスセッションで引き継ぎ。ユーザーの未回答質問「電源ケーブルはどれ買えばいい?」には PD トリガー不要・普通の USB-C ケーブルで可と回答
完了:
- #15 実装 → PR #16(Step 1+2 → 3 → 3.5 → 4 完了、✅ LGTM、人間のマージ待ち)
firmware/pico-lever/:lever_logic.py(ヒステリシス付き 4 方向判定・純粋関数)/main.py(ADC 10ms・open-drain GP2-6・起動時センター自動校正・LED 表示)/test_lever_logic.py(17 件 PASS)/ READMEdocs/05_lever_wiring.md: RKJXV → Pico 2 → Dock PMOD(P6 T7 P8 T9/T11)配線図- 言語は MicroPython(現場で Thonny から閾値・軸反転を即変更できるため)。出力は open-drain・押下 LOW で Dock 側 pull-up(fpga-famicom#17)と整合
- Step 3.5 はエビデンス例外(GUI なし)で unittest / py_compile ログを evidence ブランチに添付
- Codex CLI を 0.154.0 に更新(
gpt-6-astra要件は解消)が、ChatGPT usage limit で 9/19 17:10 まで使えない → Claude セルフレビューにフォールバック - #17 起票: Dock 側レバー GPIO 版 bitstream(fpga-famicom branch
claude/issue-17-arcade-leverの移植・実機確認)。#15 だけでは Dock が受けられないので展示必須 - README の構成・ドキュメント表を RKJXV / firmware / 05_lever_wiring に合わせて更新
未着手(優先順):
- PR #14(CAD)・PR #16(ファーム)の人間マージ →
/post-merge-test - #17 Dock bitstream(展示必須)
- RKJXV 実測 →
params.scadの LEVER_* 修正 PR(#6 のコメント要求分) - fpga-famicom#40 Phase A(サイドアート)
- #7 X2D 試し刷り(bezel / front)
- 9/16(水)千石で TPS2116
メモ: main 直下の未追跡 cad/(_t.scad, out/)と docs/akiba-list.md は前セッションの作業残り。cad/ は PR #14 のビルド出力なのでマージ後に .gitignore 整理を検討
2026-09-14 セッション — 秋葉原購入・レバー方式変更・引き継ぎ
完了:
- 秋葉原で購入(発注#4・在庫台帳に登録済み): RKJXV122400R ×2 / タクト12mm 黒5・赤5 / LED照光タクト 赤1・青2 / Tang Nano 9K(別用途)
- レバーを SKRHAAE010 → RKJXV122400R(アナログ)に変更(#3 要件FIX)。理由: SKRH は 7.5mm角でシャフト18mmを付けると軸が壊れる懸念+操作感で RKJXV が上。Pico 2(購入済)の ADC で読んで4方向デジタル化 → #15 起票(展示に必須)
- #6 に CAD 変更要求: レバー開口 φ20→φ22-24、パネル下 12→14mm、RKJXV 小基板を M2 ボスで固定。PR #14 マージ後の別 PR で対応
- TPS2116 は千石に在庫なし → 9/16(水)入荷予定・再訪して購入。代替はショットキー SR54F(秋月106125)でも可(4.70V で Dock 規格内)
- NS用アナログスティック(千石 ¥750)は FPC 接続で不利のため不採用
未回答の質問(引き継ぎ): 「電源ケーブルはどれ買えばいい?」— 写真は PD トリガーケーブル(9-20V 出力)。本筐体は USB-C 5V 給電なので PD トリガーは不要。モバブ → UCF2P-CB21(購入済 Type-C メス)に普通の USB-C ケーブルで繋ぐだけ
次回: PR #14 マージ → RKJXV 実測 → CAD 修正 PR / #15 Pico ファーム / fpga-famicom#40 Phase A / 9/16 千石で TPS2116
2026-09-11 セッション(続3)— #6 筐体CAD を dev-workflow で実装
ユーザー指示: nes-rom-reader は別途対応するので、それ以外を dev-workflow で進める
完了(Step 3 → 3.5 → 4):
- #6 実装: OpenSCAD でパラメトリックモデルを作成 → PR #14
cad/params.scadを寸法の単一ソースに(simulator のPと同値)。profile.scad(側板断面)/util.scad(on_plane()等)/parts.scad(11パーツ)/plate.scad(印刷姿勢)/check.scad/build.sh- 11 パーツ全てが X2D ベッド 256 角に収まる(最大=側板 170×160)
build.shが 14 項目のクリアランスを assert し exit code で合否を返す(検証の自動化)
- 実装中に検出・修正した不具合 3 件:
- 側板が
mirrorの適用順で左右同じ位置になっていた - 天面がマーキーから 28mm 離れて浮いていた
- アクリル窓とスピーカーが 10.5mm 干渉(
check.scadの assert が検出)→ 窓幅 70→44mm
- 側板が
- 設計判断: スピーカーをマーキー左右へ移設(画面〜マーキー間の帯は 9.4mm しかなく φ27 が載らない)/ 背面のみ PETG / 底面吸気スリット / nes-rom-reader を背面垂直マウント
- Step 3.5 テスト: キャプチャ8枚+ログをエビデンス添付し 9 項目 ✅ LGTM
- Step 4 レビュー: ⚠️ Codex CLI が古くモデル利用不可(gpt-6-astra は要CLI更新 / gpt-5-codex は ChatGPT アカウント非対応)→ Claude セルフレビューにフォールバック
- 指摘2件を本PR内で修正: 組立順序の未文書化(中)=「bezel(LCD挿入) より先に top を被せると LCD が入らない」を README と parts.scad に明記 / 側板の反り対策(低)
- 判定 ✅ LGTM
次回:
- PR #14 の人間レビュー → マージ(Step 5)→
/post-merge-test - マージ後 #7(X2D 印刷)着手可。まず bezel か front を試し刷りして反りと嵌合を確認
npm install -g @openai/codexで CLI 更新(次回からクロスモデルレビューが使える)- 残 issue: #2 計測 / #4 PAM8403 試聴 / #5 発注 / #7 製造 / #8 意匠 / fpga-famicom#40 Phase A
2026-09-11 セッション(続2)— Phase 2 廃止。ROM ロード方式へ転換
ユーザーの問い: 「nes-rom-reader を FPGA に繋げばいいだけだから Phase 2 が不要では?」→ 結論として正しい
検証結果:
- ❌ リアルタイム・バスブリッジは原理的に不可能: nes-rom-reader のアドレス生成は 74HCT595 シフトレジスタ(32bit)。 NES CPU の 559ns 周期に対し 32bit シフトは @1MHz 32,000ns(57倍) / @10MHz 3,200ns(5.7倍) / @40MHz 800ns(1.4倍) で、どれだけ上げても間に合わない
- ✅ ROM ロード方式なら「実カートで遊べる」が実現できる。しかも fpga-famicom に実装済み
src-lcd/nes_tang20k_lcd.vに// Dynamic game loading from UARTとuart_demux(...)が存在core/src/game_loader.vの GameLoader はバイトストリームを受けて iNES をパースし DDR3 に書く設計=出どころを問わない- → RTL 変更はほぼ不要。ESP32 の TX を Dock UART に繋ぎ、ESP32 が iNES を送るだけ
- 転送時間: NROM(40KB) は @115200 で 2.8秒 / @230400 1.4秒 / @921600 0.4秒 → ロード演出で見せ場にできる
不都合(正直な評価・いずれも破綻せず):
- 起動に数秒かかる(演出でカバー)
- v0.1 は読み出し専用 → NROM/CNROM に限られる(MMC1/MMC3 はバンク切替不可。v0.2 で解消)
- セーブデータ書き戻し不可(読み出しは可)
- Dock の UART_RXD が BL702 と共有の可能性 → 別 GPIO 割当の小改修が必要かも(実機確認後)
- 著作権: 所有カートのみ
決定・クローズ:
- #12(自作 cart-if 基板)をクローズ → JLCPCB カートから外すよう依頼(設計データは hardware/cart-if/ に保存)
- fpga-famicom#25(カート I/F RTL)をクローズ → 既存 UART ローダーで足りる
- 新段階計画: Step1 単体動作 → Step2 筐体マウント → Step3 ESP32→UART でゲーム起動(当初 Phase 2 の体験がここで達成) → Step4(任意) タイトル表示(#40 Phase B)
次回: M5Stamp S3A + 1.27mm メスヘッダ購入 → Step1 組立(スロットコネクタは実物でぴったり嵌合を確認済み ✅)
2026-09-11 セッション(続)— nes-rom-reader 実物入手 → 統合フェーズへ
状況変化: ユーザーが作者から実物基板を受領済み、IC 類も手元にあり → JLCPCB 発注・SMT 委託は不要
完了:
- 物理統合の成立を検証 ✅ 基板レイアウト(上辺=FC60Pコネクタ / 下辺中央=M5Stampソケット+USB-Cノッチ / 四隅M3)を確認
- カードエッジコネクタは基板面に垂直に立つため 基板を垂直配置すればカートは水平挿し = #11 の「背面挿し」と一致 ✅
- 幅84≤内寸124(余裕40)/ 高さ77→z25-102 で Dock(z≤23) と非干渉 / コネクタ位置と背面開口 z78-96 がほぼ一致 / LCD(y52-65) とは y で分離
- → #6 CAD は「cart-if 92×42」想定を「nes-rom-reader 84×77」に差し替え
- 段階計画を #13 に投稿: Step1 単体動作(半日〜1日・これだけでデモ成立)→ Step2 筐体統合(1日)→ Step3 FPGA連携(2-3日・UART で CRC を送る)
- Step1-2 は 9/23 に確実、Step3 は挑戦目標(間に合わなくても #40 Phase A の静的サイドアートで成立)
- 組立のハードルは低いと判明: 74HCT541・パスコン・ポリヒューズは任意(ジャンパ代用可)、595 は秋月 TC74HC595AF でも可
- Step1 の前提部材(未購入): M5Stamp S3A(SS #10377 ¥1,782・在庫100+)と 1.27mm メスヘッダ(v0.1 の嵩上げ回避策に必須)
- ⚠️ J1 フットプリントは実物合わせで要確認 — 組立ガイドは「千石 地下1F の FC 60P スロットコネクタ」を想定。CR22A(購入済み)が載る可能性は高いが未確認
- #12 の cart-if は Phase 1 が不要になったため、JLCPCB カートから外すことを推奨(Phase 2 は 595/541 の知見を入れて再設計した方が良い)
次回: M5Stamp S3A + 1.27mm メスヘッダを購入 → Step1 組立 / J1 に CR22A が載るか実物確認 / #6 CAD の基板寸法差し替え
2026-09-11 セッション(J2 接続先の明確化 → GOROman/nes-rom-reader の活用)
完了:
- J2(基板の反対側 60 ピン)の接続先を明確化(#12 ラウンド3)
- 60P の既製ケーブルは入手困難(秋月は 40P まで)→ ヘッダを CPU/PPU 分割する案を試したが A列/B列の x が重複し配線が交差(DRC 0→241件)して却下
- 信号が列 1-14(CPU) / 16-29(PPU) に分離しているのを発見 → 既製 40P IDC を 20 列分だけ部分挿しすれば必要な信号が全部取れる。Phase 1 はケーブル1本で動く
- 基板は配線・寸法変更なしで DRC 違反 0 を維持、シルクに運用案内を印字してガーバー更新
- GOROman/nes-rom-reader を調査 → #13 起票。我々が作ろうとしていたものの完成版
- ガーバー・LCSC番号付きBOM・PickAndPlace・ESP32-S3ファーム・Python CLI・Web UI が全て公開
- 設計判断の答え合わせ: ①74LVC245 は単一3.3V電源で A→B が 3.3V しか出ず読み出し専用なら可/書き込みは SN74LVC8T245 が必要 ②アドレスは 74HCT595×4 で生成 ③制御線は 74HCT541 バッファで 3.3V→5V(我々に欠けていた知見)④CIRAM A10 は 10k/20k 分圧
- ⚠️ 公開ガーバーは v0.1 で M5Stamp S3 が挿さらない既知不具合あり(ピンヘッダ嵩上げで回避)。v0.2 は仕様書のみ
- ⚠️ 我々の Phase 1 は「PRG 最終8KB の CRC32」でマッパー非依存なので v0.1 で十分
- ⚠️ NULL License: 非商用なら自由・クレジット必須・商用は作者と要相談 →
docs/04_credits.mdを作成して遵守
- 役割分担: Phase 1 = nes-rom-reader 基板 / Phase 2(カート実行)= 自作 cart-if 基板(両方に意味があり #12 は無駄にならない)
次回: #13 の発注判断(SMT込み $10-20・9/23 に間に合うか微妙)/ J1 フットプリントの CR22A 互換確認 / M5Stamp S3 購入
2026-09-10 セッション(透明OLED 中止 → LCD サイドアート方式へ)
完了:
- 共立で透明OLED(N1K122 / Waveshare 22545)が在庫切れ → ユーザー提案の「LCD 両サイドにタイトル帯・パッケージを表示」へ方針転換
- 決定的な発見:
fpga-famicom/src-lcd/nes2lcd.svを確認したところ、NES 画面は 256×240 のドットバイドットで中央配置(x112..367 / y16..255)されており、左右 112px・上下 16px の余白が既に存在して黒を出力中 → 新規スケーラー不要。in_win外の出力を差し替えるだけで実現できる - 使えるスペース: 左右 各 112×272px = 22.2×53.9mm(パッケージ画像 104×141px が余裕で入る/8×8 フォントで 14文字×34行)
- メモリ試算: 16色パレットなら 29.8KB(左右ミラーなら 14.9KB)で BSRAM 828Kbit に収まる。NES パレット流用でゲーム画面と統一感
- 透明OLED 中止で解決: 在庫切れ・¥3,069 削減・SPI 配線と駆動コントローラ不要・マーキー機構の簡素化
- マーキーは当初案(3mm スモークアクリル+WS2812・購入済み)に復帰
- fpga-famicom#40 起票(Phase A: 静的サイドアート=展示目標 / Phase B: カート連動)、#10 に方針変更コメント
- シミュレーター v3: 透明OLED削除・LCD を実装と同じ座標系でサイドアート描画。Artifact は旧リンクが削除されていたため新規公開 → https://claude.ai/code/artifact/ecc4c7bf-f9e1-4c89-b8eb-1faf4bc0b5fe
次回: fpga-famicom#40 Phase A の実装(展示の目玉)/ JLCPCB 決済 / 秋月・千石の発注
2026-09-09 セッション(PCB 設計・9/23 展示から逆算)
完了:
- #12 起票: JLCPCB 便に載せる PCB を検討 → カート I/F 基板は作る価値が高いと判断(CR22A は THT の基板部品、レベル変換 ~45 信号は手配線不可)
- 納期計算: 標準便は最長 9/24 着で間に合わない → DHL/FedEx Express 必須、9/10 発注が最終防衛ライン
- KiCad 10.0.6 導入(brew は sudo で失敗 → DMG から
~/Applications/KiCadへ手動展開) - 基板データ生成完了(
hardware/cart-if/、コミット ea4da73): 100×72mm・116ネット・DRC違反はシルクのみpinmap.json単一ソース →gen_pcb.py(pcbnew API)で .kicad_pcb を生成- ヒロセ公式2D図面からフットプリント取得(60×φ0.9 / ピッチ2.54 / 列間5.08 / 基板厚1.6指定)
- 設計上の重要な発見: アドレス/制御とデータバスは絶対に同じ 245 に混ぜられない(DIR が245ごとに1本のため、データ読み出し時にアドレスまで逆流する)→ U1-U5=アドレス固定H / U6=CPU_D / U7=PPU_D に分離
- A列担当を上段・B列担当を下段に配置し、B ピンをコネクタのピン順に合わせてラッツネストが交差しない構成に
設計方針の転換と完了:
- 54信号の2層配線は自動生成では交差が解消できず(DRC 100件超)→ ブレークアウト基板に設計変更
- CR22A 60P → 2x30 ピンヘッダへ 1:1 直結。A列=F.Cu / B列=B.Cu で層分離、PTHパッドを1/2ピッチ迂回
- DRC 違反 0 を達成。92×42mm・2層・1.6mm・緑
- レベル変換は基板外(手持ちの 74LVC245×10 + 共立の D020 変換基板が活きる)
- Phase1/Phase2 どちらにも使える(60ピン全出し)ので作り直し不要
- JLCPCB カート投入済み: cart-if-gerber_Y3 / $4.00(5枚) / 2days / UPS Express 2-4日($9.34)
- 既存 MBC1-TSOP32($4.20)と合わせて小計 $8.20。決済はユーザー判断のため未実行
- SMT アセンブリは不要になった(ブレークアウト化で SMD 部品ゼロ、全て THT)
残作業: 決済実行 / 到着後に CR22A・ヘッダを手ハンダ → テスターで A列B列の対応確認 → レベル変換を組む
リスク: カート機能(RTL/FW)は未着手で 9/23 に間に合う保証なし。展示のコアは「NES が動く筐体+透明OLEDのタイトル固定表示」を優先すべき
2026-09-09 セッション(PCB 化の要否検討)
完了:
- JLCPCB 発注機会について検討 → #12 起票。結論「PCB は不要ではない。カート I/F 基板 1 枚は作る価値が高い」
- 根拠: ①購入済み CR22A-60D はスルーホール実装の基板部品(84.84×9.5×16.5mm)②カートバスのレベル変換が 約45信号=手配線90本以上で非現実的
- アーキ非依存の設計(60P + 74LVC245×6 + 2.54mm ピンヘッダ出力)にすれば #11 のアーキ決定(FPGA直 vs Pico)を待たずに発注可能。副次効果で共立購入の D020 変換基板が不要に
- コンパネ基板(★★)は #6 CAD 確定後の次便推奨(部品5点で手配線でも成立、穴位置が CAD と1:1で一致する必要あり)
- 電源基板・OLED・アンプは不要(モジュール購入済みのため)
次回: PCB 発注の締切・SMT アセンブリ利用有無をユーザーに確認 → KiCad 設計 → hardware/cart-if/ に push
2026-09-05 セッション(電源方式の試算・発熱リスク評価)
完了:
- 消費電流を部品ごとに積み上げ: 445–895mA(FPGA 250-400 / LCD BL 95-110 / アンプ 30-250 / OLED 20-40 / Pico 25-45)
- 18650 ×1 で稼働 2〜3 時間(3000mAh・通常プレイ 670mA 想定)。2本並列で 5〜6h
- 発熱: セル自体は 0.5C 以下で穏やか。熱源は昇圧モジュール(最大0.79W)
- ⚠️ リスク整理: ①TP4056系はパススルー充電(負荷接続中の充電)非対応で過充電の恐れ ②保護回路なし生セル ③PLA は 60℃ で軟化 → 電池周辺は PETG ④密閉蓄熱 → 底面吸気スリット追加 ⑤カート挿抜のストレス位置を避ける
- ✅ 推奨は「モバイルバッテリー内蔵(案A)」: 保護回路・PSE 済みの完成品で電気的リスクを負わず、稼働 6〜10h。低負荷オートオフは本機 450mA 以上で無関係
- 省電力の要は LCD バックライト(約100mA) → PWM 調光用に GPIO 1本を #6 で予約
次回: 電源方式のユーザー判断(A+/A/B/D)→ #6 CAD に電池固定・吸気スリット・PETG 範囲を反映
追記(同日・パススルーの検討):
- Q「モバブ内蔵なら充電しながらプレイ可能?」→ 機種依存。Anker は原則非対応(公式表明・寿命保護のため)。対応品でも充放電同時で発熱増
- ✅ 解: TPS2116 パワーマルチプレクサ ¥1,100(共立で取寄可)で外部電源優先の自動切替にする → 外部 USB-C 接続中は筐体を外部給電・モバブは充電に専念、抜けば無瞬断でモバブへ。モバブの仕様に依存せず実現でき、発熱も分散
- 18650 案なら IP5306 系(同時充放電が売り)だが aitendo MBB5306B は在庫切れ
- #6 追加要件: TPS2116 の固定位置(背面USB-C近傍)、モバブトレイは PETG、底面吸気スリット、背面 USB-C は給電入力兼充電入力に集約
2026-09-04 セッション(操作系ミニ化・シミュレーター v2)
完了:
- ユーザー要望「M5Stack Joystick 級 / ORB Gaming のミニサイズ感」→ レバー候補を再調査
- M5Stack Unit Joystick の中身は ALPS RKJXV(17.8×21.3×11.2・アナログ)だが秋月販売終了+Tang 20K に ADC 無しで不適
- ✅ ALPS SKRHAAE010(7.5mm角・デジタル4方向+中央プッシュ・¥190、DIP化キット ¥450 在庫236)を採用 → GPIO 直結(ADC不要)、パネル下 34→12mm
- シミュレーター v2: 筐体を W132×D155×H170(v1比 D−20/H−20)に圧縮、ボタン φ16/φ10、球 φ14 印刷、足台 30→22mm。Artifact 同URL更新・PR #9 に追加コミット
- BOM 影響: Adafruit #480/#3429 不要 → DigiKey 便ごと消滅で約 ¥5,100 削減。レバー・ボタン・M2.5ネジは秋月 1 便に集約(〜¥1,900)
- 制約の明示: 4.3" LCD(105.4×67.1)が幅の下限を決めるため W130 前後が限界。真の手のひらサイズ(W85)は画面 2.4" 級が必要で、購入済み LCD 3枚と実機PASS済み bitstream を捨てることになるため非採用
次回: v2 寸法の承認 → CAD へ / 秋月便の発注 / #11 アーキ決定(Pico 案 or FPGA直)
2026-09-04 セッション(タイトルDB方式確定・コネクタ互換確認)
完了:
- タイトル表示は名前 DB 突合方式で確定(ユーザー決定): nes20db + 自作 .nes → PC スクリプトで「PRG 最終 8KB の CRC32 → タイトル」compact テーブル(〜150KB)を生成 → microSD。自作カートは通常 iNES 構成で DB に 1 行足すだけ(特別扱いなし)
- 最終 8KB を鍵にする根拠: リセットベクタがあるため電源投入時ほぼ全マッパーで固定最終バンク → マッパー非依存・フルダンプ不要。衝突時は $C000–$DFFF を追加ハッシュ
- コネクタ確定: ユーザーがヒロセ CR22A-60D-2.54DS(70) を MISUMI で購入済み。FC 互換の定番(BAKUTENDO 等で実績・2.54mm=0.1" グリッド一致)→ 03_inventory に発注 #2 として記録
- #11 に💬ラウンド1、fpga-famicom#25 に仕様連携コメント。未調達に透明OLED・レベル変換 IC を追記
次回: コネクタ現物実測 → #6 へ / 透明OLED 発注(#10)/ 読み出しアーキテクチャ(FPGA+ラッチ vs 補助MCU)決定 / PR #9 レビュー
追記2(同日・共立カート確定):
- カート内の不明2品目に直リンクを #5 ラウンド7 で提示: D020 変換基板(https://eleshop.jp/shop/g/g825315/ ¥781/5枚・裏面SOP1.27対応・在庫2)→ LVC245×10 なら2セット
- 共立は M2.5 スペーサー/ネジとも取扱ゼロを確認 → カートから除外。Dock 取付は底板にスタンドオフを直接印刷(#6 の既定設計)+ M2.5ネジ×4のみ(秋月/手持ち)で解決
- カート合計 ¥11,236(変換基板×2込み)— 送料無料ライン ¥7,500 超過済み
追記(同日・購入リスト確定と共立同梱):
- 透明OLED は秋月取扱なし → 共立 eleshop ¥3,069(最安・確認済み)/ 千石 ¥4,000
- 最終追加購入リストを #5 ラウンド5 に投稿(即買いA: 共立/DigiKey/モノタロウ 3便 約¥10,000、条件付きB)
- #11 要件FIX: カセットは背面挿し方式で確定(ユーザー決定)
- 共立同梱案を #5 ラウンド6 に投稿: 組立部材(M3インサートナット ¥440/10入・M2.5スペーサー=Dock取付が未計上だったのを発見)+ #11保険(Pico 2 ¥1,100・74LVC245×6・74HC573×3)→ 合計〜¥7,600 で送料無料(¥7,500以上)。推奨プランB
2026-09-03 セッション(寸法スタディ v0・分解3Dシミュレーター)
完了:
- 実寸部品から筐体を組んだ分解3Dシミュレーターを作成(stackchanEventBooth 観覧車ビューアと同フォーマット)
- Artifact: https://claude.ai/code/artifact/113ced3d-c0fa-469e-a511-a2e25f2e266c
- PR #9(
simulator/index.html、寸法パラメータはPに集約)、#6 に💡コメント
- 提案寸法 v0: W135 × D175 × H190(コンパネ面 62–76・前傾11.6° / 画面10.8°後傾 / 最大パーツ=側板175×190で X2D OK)
- 設計発見: #480 の取付鉄板 75×62 はコンパネ内寸(127×70)に収まらない → 印刷ボス(53×53)直付けへ変更提案(#3 に影響)
- スタックチャン(全高≈66)は足台30mmでレバー球が目線前後 — シミュレーターでトグル検証可
次回: 寸法のユーザー承認 → CAD へ P を移植 / PR #9 レビュー・マージ / レバー現物でボススパン実測
追記(同日・v1 更新):
- ユーザー決定: 画面保護アクリル廃止(視認性優先)
- 新要望2件を issue 化: マーキー透明OLED化 #10(1.51" が実用最大・国内在庫あり)、背面FCカセットスロット #11(60P コネクタ・CRC→DB→タイトル表示。RTL は fpga-famicom#25)
- シミュレーター v1 反映(PR #9 追加コミット・Artifact 同URL更新): アクリル削除 / 透明OLEDマーキー / カセット半挿入表示
- 技術要点: iNES にタイトル文字列は無い → CRC32 + microSD の名前DB で解決。カートバスは 5V・~45信号でレベル変換必須、Dock GPIO 不足 → ラッチ多重化 or 補助MCU を #11 で比較
2026-09-03 セッション(aitendo 発注完了・在庫台帳作成)
完了:
- ユーザーが aitendo で発注(税別 ¥5,925・送料無料): QT43272B576 ×1 / YXKJ430240 ×2(LCD 計3枚)、M8403VD アンプ、SPK27R08BA ×4、WS2812 砲弾 ×10、UCF2P-CB21 黒・白 各1
docs/03_inventory.mdを新規作成(購入済み在庫台帳。用途割当・消費記録・受入確認チェック欄付き)。README の docs 表に追加- LCD 3枚の運用方針を台帳に記載: 点灯確認 → QT/YXKJ 画質比較 → 本番/開発機/予備に割当て
次回:
- パーツ到着後: 受入確認(点灯・BL 発熱)→ 03_inventory 更新 → fpga-famicom 開発再開
- #4 試聴(M8403VD + SPK27R08BA、部材すべて到着済みになる)
- 未調達分(レバー #3 承認待ち / OBSF-24 / 電源方式)と #6 CAD
2026-09-03 セッション(aitendo 同梱カート選定)
完了:
- aitendo 送料条件を確認: 税別 ¥3,950 以上で送料無料(通常 ¥490〜)
- 同梱カート案を #5 に投稿: LCD×2(¥2,960)+ M8403VD アンプ(¥295・ボリューム付き完成品、秋月キット代替で BOM -¥455)+ φ27 8Ω SP×2(¥200)+ WS2812 砲弾5mm×2袋(¥200)+ Type-C リード線付き(¥295)= 税別 ¥3,950 ちょうど。バッファに K-1C1UC モバブキット ¥395 推奨
- 判明: aitendo の 30〜40mm 8Ω スピーカーは売切(本命は秋月 UGSM30A のまま)、マイクロスイッチ MS202 売切、WS2812 はテープ無し・砲弾のみ
次回: 発注実行待ち → 到着後の点灯確認・#4 試聴へ
2026-09-02 セッション(LCD フレキ断線・至急発注対応)
完了:
- 開発機 LCD(HST043056-A)フレキ断線の報告を受け、代替パネルの至急発注リストを #5 に投稿(全リンク付き)
- aitendo QT43272B576-6485(¥1,628・在庫23)がドロップイン確定: データシートを公式図面(lcd43.pdf)と全項目照合 — 40P ピン配・外形 105.4×67.1・AA 95.04×53.856・DCLK 9MHz・BL 7LED直列21V まで完全一致(同じ JST 系パネル、型番 JST-4303J40R08-V05)
- 互換判定基準(ピン配 40P: 1:LEDK/2:LEDA/3:GND/4:VCC/5-12:R/13-20:G/21-28:B/30:CLK/34:DE)を #5 コメントに明文化 — Amazon 汎用品購入時はこれと照合
- 予備ルート: Sipeed 公式 AliExpress / Adafruit #1591(DigiKey でレバー #480 と同梱可)
- 秋月の通販コード確定: PAM8403 キット g115698 / UGSM30A-8-01 g109270 / USB-C パネル g117640
次回:
- ユーザーの発注実行を待つ(推奨: aitendo ×2 即発注 + DigiKey 一括 + Ali 予備)
- パネル到着後: 実機点灯確認(BL 発熱チェック)→ fpga-famicom 開発再開、02_measurements に実測追記
- 以降は前セッションの判断待ち事項(#2 計測 / #3 条件読み替え / 電源方式)と #6 CAD へ
2026-09-01 14:30 セッション(Mac Studio・調査ラウンド)
完了:
/issue-investigate #3: Adafruit #480 の公式寸法図を入手しエビデンス添付(取付板 75×62mm・穴スパン 53mm・パネル下 34mm・パネル上 34mm・Sanwa 互換球)。DigiKey 日本 ¥2,487+税・在庫20・3〜4日着。選定表(OBSF-24 / 20mm LED / #3429)と #6 CAD 連携値をコメント- 発見: パネル下 ≤20mm を満たす市販デジタルレバーは実質無し(最浅 LS-32+SE板 17.5mm は板 91.6×65 で過大)→「#6 でレバー直下 40mm 確保」への条件読み替えを提案
/issue-investigate #5: 発注リスト案をコメント。LCD は秋月・SS に単品なし → Sipeed 公式 AliExpress 推奨(汎用 40P はピン配照合要)。概算合計 ¥8,000〜9,500- リポジトリを Mac Studio に clone(SSH 鍵未設定のため HTTPS。
ssh -T git@github.comは Permission denied — 鍵登録すれば SSH に戻せる)
ユーザー判断待ち:
- #2: 16.0/2.6 の計測箇所解釈の確認 + 残り計測(ジャック位置・突出量・コア上面高さ)
- #3: パネル下条件の読み替え(≤20mm → #6 で 40mm 確保)と DigiKey 発注承認
- #5: LCD 購入経路(Sipeed 公式 or Amazon)・電源方式(18650 内蔵 or モバブ)
次回:
- 上記判断が出たら発注確定 →
docs/03_bom.md作成(#5 implement、docs は main 直コミット可) - #6 CAD 着手(レバー下 40mm・OBSF-24 板厚 ≤3.5mm・#2 実測値を反映)
- #4 PAM8403 試聴(部品到着後)
2026-09-01 14:15 セッション(MacBook → Mac Studio へ引き継ぎ)
完了:
- GitHub リポジトリ
aieo-product/miniArcadeCabinet(private)作成・dev-setup 済み - 調査レポート
docs/01_research_cabinet.md、目標docs/00_goal.md、公式図面docs/reference/を push - Issue: 親 #1(依存グラフ・💡初回方針コメント済)、子 #2〜#8、fpga-famicom#17(レバー GPIO 入力)
- #2 実測: Dock 95.0×73.0(図面一致)、RJ45 部総厚 16.0、裏面端部厚 2.6 →
docs/02_measurements.md - 決定: LCD は新規購入、レバー・ボタンも市販品購入(#3 は「購入品選定+操作感評価」に方針変更)
問題:
- 16.0 / 2.6 mm の計測箇所は写真からの解釈(RJ45 総厚 / 裏面実装部)。ユーザーに確認要
- 3.5mm ジャック位置・コネクタ突出量・コアモジュール上面高さは未計測
- Codex CLI 未ログイン(
codex loginで /pr-review のクロスモデルレビューが使える)
次回:
- #2 の残り計測(ジャック位置・突出量)→ 02_measurements 更新 → #2 クローズ
/issue-investigate #3:市販ミニレバー(Adafruit #480 等)とボタン(OBSF-24 / 20mm LED)の選定/issue-investigate #5:LCD(Sipeed 4.3" RGB 40P)を BOM に追加して発注リスト確定- #6 CAD 着手(実測: 基板上方クリアランス ≥16mm、スタンドオフ ≥3mm を反映)