Skip to content

Instantly share code, notes, and snippets.

@GOROman
Created August 16, 2026 23:42
Show Gist options
  • Select an option

  • Save GOROman/b2c70e143010b3bb0e214b6c91b73bb3 to your computer and use it in GitHub Desktop.

Select an option

Save GOROman/b2c70e143010b3bb0e214b6c91b73bb3 to your computer and use it in GitHub Desktop.
2026-08-16 日報 — YM2151・Find My・Claude Code作業記録

日報 — 2026年8月16日

概要

  • 主作業は、Famicom/NES ROMダンパーと改造ポパイカートリッジを使ったYM2151実音源実験。
  • feature/ym2151ブランチで、YM2151制御、YM3012相当の音声復号、MDX/VGM再生、ステレオPWM出力、診断・ノイズ対策まで進めた。
  • 並行して、Find My互換のXIAO nRF52840ファームウェアと、M5Core2/XIAOを同時表示する地図ダッシュボードを更新した。
  • Claude Codeとの共同作業として、13:25〜23:09に42コミットを作成。42件すべてにCo-Authored-By: Claude Fable 5が記録されている。

記録範囲

  • 時刻はすべてJST。
  • 13:10頃〜17:22頃:Computer Historyの画面・操作記録を基に整理。
  • 13:25〜23:09:nes-rom-readerのGitコミット時刻とコミット内容を基に整理。
  • Computer Historyに記録がない時間は、Gitで確定できる作業だけを記載し、空白時間を推測で補っていない。

分単位タイムライン

13時台

  • 13:10頃 — ログイン後、ローカルのFind My地図ダッシュボードを確認。
  • 13:11頃 — ChromeでFamicom ROM DumperのWebSerial UIを開き、cu.usbmodem1101へ接続。
  • 13:12頃 — Mapper 0、PRG 32KB、CHR 8KBの設定でダンプ操作を開始。
  • 13:13頃 — 保存ダイアログを開いてダンプ/セーブデータ保存フローを確認。
  • 13:14頃nes-rom-readerリポジトリを開き、基板v0.1のU6 74LVC245とDIR配線の調査を開始。
  • 13:15頃 — EasyEDAを使わず、リポジトリ内の.eprj2やファームウェア定義からU6 DIR、BUS_DIRBOARD_REVを調査。
  • 13:18頃 — U6 Pin 1がB→A方向へ固定されており、反転にはGNDからの切り離しとG40へのジャンパーが必要という案を検討。
  • 13:20頃 — WebSerialへ再接続し、セーブデータとROMの読み出しを実行。
  • 13:21頃 — SAVE CRC D8F49994を確認。
  • 13:22頃 — PRG CRC 8425EFEF、CHR CRC 7F58C4F8を確認。
  • 13:23頃 — YM2151をダンパー基板/カートリッジへ接続して鳴らすための新ブランチ作成をClaude Codeへ依頼。
  • 13:2598e832c:YM2151をカートリッジバス経由で制御する実験機能を追加。ファームv0.6、F/Y/Qコマンド、rev2ビルド環境、配線資料を実装。
  • 13:30頃 — Xの通知、ホーム、goromanのライブ検索結果、個別投稿を短時間確認。投稿操作は記録されていない。
  • 13:40頃feature/ym2151mainb757cbcから作成された新規ブランチであることを確認。
  • 13:42頃 — ポパイNROMカートリッジのPRG ROM/CHR ROM ROMSELを切った構成で、YM2151を接続する配線を検討。
  • 13:45頃 — YM2151のSO/SH1/SH2/φ1はデジタル出力であり、通常はYM3012などのDAC経路が必要と整理。
  • 13:48頃 — NROMのROMピン、カートリッジエッジ、YM2151ピンの対応表を検討。
  • 13:50頃 — ChatGPTでMapper 0/NROMのピンアサインを質問。

14時台

  • 14:10頃 — iTerm2へ戻り、PRG ROMピンとカートリッジエッジ信号の配線表を確認。
  • 14:20頃 — YM2151の/CSがアクティブLowであること、ピンアサイン、YM3012をM5StampS3で代替できる可能性を検討。
  • 14:30頃findmy-webでXIAO nRF52840ファームウェアをUF2転送し、USBシリアル、BLE初期化、Find My ID、広告開始、LED GPIOを確認。
  • 14:32頃 — M5Core2とXIAO nRF52840を同じ地図へ表示する複数アクセサリー対応を開始。
  • 14:34頃 — FastAPI、React/MapLibre UI、CSS、README、テストを更新。
  • 14:36頃 — Python構文確認、フロントエンドビルド、テストを実行。
  • 14:38頃 — 古いAPIプロセスが残っていた問題を切り分け、再起動後に両アクセサリーの位置取得を確認。
  • 14:40頃 — XIAOのLEDを「緑=正常、青=BLE活動、赤=エラー」に変更。ビルドとUF2転送を実施。
  • 14:478bb0912:YM2151をアドレスバス書き込み方式へ変更。U6 DIR改造とBUS_DIR制御を不要にし、全基板リビジョンへ対応。
  • 14:53a5650e5:D0〜D7をCPU A0〜A7、YM2151 A0をCPU A8へ変更。PRG ROMの連続した足へ配線を集約。

15時台

  • 15:00頃/WR/IC、φMをすべてROMソケット側から取れるか検討。φMだけは連続クロックが必要なため、M2/エッジ32から取る方針に決定。
  • 15:07e27fa86:YM2151の/WR/ICを空きアドレス線A9/A10へ移動。カートリッジエッジへの追加配線をφMの1点へ削減。
  • 15:10頃 — M5StampS3へYM2151対応ファームウェアを書き込み、Vfamidump v0.6を確認。
  • 15:12頃Yレジスタ書き込みによる音色設定と音階再生方法を確認。
  • 15:15頃 — 「ドレミファソラシド」をループ再生するようClaude Codeへ依頼。
  • 15:20091acb4QコマンドをC4〜C5のドレミファソラシド・ループ再生へ変更。
  • 15:20ba8888e:3.579545MHzのφM生成が4bit LEDCで失敗する問題を、3bit・50%デューティへ変更して修正。
  • 15:22頃 — 実機でF -> YMRDYQ -> YMDEMODONEV -> famidump v0.6相当の応答を確認。
  • 15:26d10f56c:電源投入後2秒以内にシリアル入力がなければ、自動でドレミ演奏を開始する機能を追加。
  • 15:30頃 — YM2151のSOなどをアナログ回路へ直接つなげるか、YM3012配線を検索・検討。
  • 15:40頃 — M5StampS3のPWM出力候補としてG44/G46とRCローパス、DCカットコンデンサ、アンプ経路を検討。
  • 15:50頃 — G44/G46の物理位置と、M5StampS3ソケット上のはんだ付け候補を確認。

16時台

  • 16:00頃 — YM3012相当のSO/SH1/φ1取り込みとPCM/PWM変換が未実装であることを確認し、実装開始を承認。
  • 16:04509d694:YM3012シミュレーションを実装。SO/SH1/φ1をCore 0で取り込み、9bit PWMとしてG46から再生。
  • 16:10頃Aコマンドの880Hzテスト音、G46出力、R1/R2分圧中点のはんだ位置を確認。
  • 16:201644886:起動直後2秒間、G46へ880Hzテスト音を出してからYM2151自動演奏へ移る診断シーケンスを追加。
  • 16:22頃 — ボード写真IMG_9538.jpgをFinder/Previewで開き、配線位置の画像確認を依頼。
  • 16:30頃 — 電源投入時のPWM確認、1µFコンデンサ、アンプ、GND、30kΩ抵抗の向きなどを確認。
  • 16:31deaab6d:起動時テストを880Hz単音から、G46単体のPWMドレミ1周へ変更。
  • 16:40頃 — YM2151の音が出ない状況を受け、赤線、分圧抵抗、コンデンサ、アンプ、共通GNDを切り分け。
  • 16:49040cd1dDコマンドを追加。φ1/SH1/SOのエッジ数とキャプチャ統計を表示。
  • 16:50頃 — M2/φM診断を強化し、ファームウェアを再ビルド、M5StampS3へ転送。

17時台

  • 17:00頃 — 診断で電源、/IC、レジスタ書き込み、SOを確認。SH1/φ1がキャプチャ入力へ届いていない状態を特定。
  • 17:048bda9a4:音声PWMとφMのLEDCクロック源競合を修正。ESP-IDF APIでタイマーを明示し、実機でφMとSO出力を確認。
  • 17:05頃SO、SH1、φ1は接続していると伝え、物理配線と診断結果の不一致を調査。
  • 17:10頃 — Pin 11周辺を疑い、はんだ付けをやり直す。
  • 17:18頃 — 再はんだ付け後も同じ結果であることを確認。単純な接触不良より、YM2151 DIPピン番号の数え方や接続先の取り違えを疑う。
  • 17:22頃 — Claude Codeへ追加確認を送り、Computer Historyの連続記録が終了。
  • 17:290a6605f:φ1/SH1/SOの自動判別と/ICホールド診断を追加。CHR Pin 9の信号がφ1であることを実機診断。
  • 17:421f97a18:起動時PWMドレミチェックを削除し、2秒待機後のYM自動演奏へ戻す。音声経路確認はAコマンドへ集約。

18時台

  • 18:0179e5b90portable_mdxを取り込み、MDXから実YM2151を駆動する再生パイプラインを追加。Xストリームコマンド、1KB単位のACKフロー制御、ピッチ補正を実装。
  • 18:0326501bb:起動時の自動演奏を削除し、予期しない再起動を調べるためリセット理由表示を追加。
  • 18:16e328d55:Dedicated GPIOとフレーム検証へ移行。割り込み禁止によるIWDTクラッシュ、GPIO取りこぼし、LEDCタイマー衝突を修正。
  • 18:28d400a00:Ys IIエンディング2をファームへ埋め込み、電源ONで実YM2151から自動再生するスタンドアロン機能を追加。再起動原因を5Vサグと切り分け。
  • 18:48fc6e1dc:φMをX68000ネイティブの4MHzへ変更。以前の4MHz不動作はLEDC競合による誤診と判明。
  • 18:568c9a8c7:実機検証済みの配線、YM3012シミュレーション、MDXパイプライン、既知の電源問題をdocs/ym2151.mdへ整理。

19時台

  • 19:03bbf5e86:内蔵曲をYs II「TO MAKE THE END OF BATTLE」へ変更。
  • 19:17f1fbeca:YM3012デコードをフル精度化し、1次ノイズシェーピング付き9bit PWMへ変更。採用率を約53%から97.6%へ改善。
  • 19:202290ef2mdxplay.py --tuneの既定値を4MHzへ修正し、不要な+1.92半音補正を解消。
  • 19:22b2cc6b2:負数左シフトの未定義動作、ノイズシェーパーのワインドアップ、クロック開始失敗処理を修正。
  • 19:23000a042:起動SEの音量を約20dB低減。
  • 19:28fc2ff2c:小さいストリームのACK待ち、φM周波数許容差検査、古いコメントとドキュメントを修正。
  • 19:3270b397f:VGM/VGZからYM2151コマンドを抽出するvgm2evt.pyを追加。ボスコニアン「Blast Power !」のイベント列を同梱。
  • 19:461848072:シフトレジスタ書き込みをGPIO直接操作へ変更し、レジスタ書き込みを約6倍高速化。テンポのもたつきを軽減。
  • 19:5078f5910:SH2取り込みとL/R独立デコードを追加し、ステレオPWM出力へ拡張。
  • 19:59e0cbe2a:ステレオ出力をR=PPU /RD、L=/ROMSELへ確定。カートリッジ上で左右を取り出す構成に整理。

20時台

  • 20:389a9ae4d:起動ごとに誤判定する自動信号判別を廃止。実測した固定割り当てへ変更。
  • 20:40d2362e3:Dedicated GPIOバンドルの配列順が崩れ、SHマスクがφ1を指していた問題を修正。
  • 20:58e46d5f5:アンプ負荷によるBrownoutを受け、Aテストトーンを小音量化し、PWM-L読み戻し診断を追加。

21時台

  • 21:572fd3f66:L/R独立のデコード診断、実行時オフセット変更、生シフトレジスタ64ワードダンプを追加。左右差をアナログ経路側の問題と切り分け。

22時台

  • 22:069a15c03:内蔵曲をボスコニアン「Flash Flash Flash」へ変更し、楽曲ヘッダ名を汎用化。
  • 22:1286b3432:不調なパッドを避け、SH2取り込み先をCHR ROM Pin 16/MD4/G8へ移動。
  • 22:300761174:ステレオ時のフレーム検証窓を13〜17へ拡大。採用率を47%から約99%へ改善。
  • 22:322afb275:ステレオ最終配線、SH2、PWM出力、診断コマンド、電源対策をdocs/ym2151.mdへ反映。
  • 22:56703850bmdxplay.py--loopオプションを追加。
  • 22:58732d144:L/R独立の3タップ・メディアンフィルタを追加し、EMI由来の単発スパイクノイズを除去。

23時台

  • 23:0537d4e01:1ビットずれフレーム補正、禁止指数e==0の破棄、ホットパス軽量化、メディアンフィルタの効果測定を追加。
  • 23:09ce17915:デコーダ安全性、VGMコマンド処理、元クロック自動認識、MDXループ停止処理、Ctrl-C時キーオフ、ドキュメント整合をまとめて修正。

主な成果

  • WebSerial ROMダンパーでSAVE/PRG/CHR読み出しとCRCを確認。
  • feature/ym2151ブランチを作成し、YM2151制御を実装。
  • U6改造不要のアドレスバス書き込み方式へ移行。
  • YM3012相当のデジタル音声復号をM5StampS3へ実装。
  • MDX/VGM/VGZから実YM2151を鳴らすパイプラインを構築。
  • L/R独立のステレオPWM出力と診断機能を実装。
  • Dedicated GPIO、フレーム検証、ノイズシェーピング、メディアンフィルタで音質を改善。
  • M5Core2とXIAO nRF52840を同時表示するFind My地図UIを実装。
  • XIAOのLED状態表示を緑/青/赤へ整理し、ファームウェアを転送。

未完了・継続事項

  • ステレオ左右差やノイズについて、RC回路、アンプ、電源経路を含む最終的な実聴・測定確認。
  • アンプ負荷によるBrownout再発防止。必要に応じてアンプ電源の分離やバルクコンデンサを検討。
  • 大量に取り込まれたportable_mdx、SDL、ビルド済みオブジェクト、イベントデータについて、リポジトリ容量・ライセンス・再現ビルドの観点で整理。
  • XIAOの新しいLED仕様について、最終書き込み後のシリアルログと目視確認。
  • Find Myトラッカーの実消費電流測定。

関連ブランチ・コミット

  • ブランチ:feature/ym2151
  • 開始地点:b757cbc
  • 最初のClaude Code共同コミット:98e832c(13:25)
  • 昨日の最終コミット:ce17915(23:09)
  • 昨日のClaude Code共同コミット数:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment