Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
PC-6001のPSG演奏デモをなるべくNetBSD環境を使って作った話 / KOF2024
Search
Izumi Tsutsui
November 09, 2024
Programming
920
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
PC-6001のPSG演奏デモをなるべくNetBSD環境を使って作った話 / KOF2024
KOF2024の「BSDなひととき」のセミナーで発表した『PC-6001のPSG演奏デモをなるべくNetBSD環境を使って作った話』のスライドです。
Izumi Tsutsui
November 09, 2024
More Decks by Izumi Tsutsui
See All by Izumi Tsutsui
CPUクロック20MHz RAM 16MBの LUNAで 30秒アニメGIF再生デモ / OSC2026Kyoto
tsutsui
0
65
OSC東京でいただいた UIAPduinoマイコンボードで PSG演奏と液晶ドッド絵デモ / osc2026Kagawa
tsutsui
0
320
NetBSD+Raspberry Piで 本物のPSGを鳴らすデモを ブラッシュアップしました / osc2026Tokyo-spring
tsutsui
1
99
NetBSD+Raspberry Piで 本物のPSGを鳴らすデモを OSC駆動の7日間で作った話 / OSC2026Osaka
tsutsui
1
200
PC-6001でPSG曲を鳴らすまでを全部NetBSD上の Makefile に押し込んでみた / osc2025hiroshima
tsutsui
0
380
今年もNetBSD環境を使って PC-6001のPSG演奏デモを作った話 / KOF2025
tsutsui
0
390
NetBSD/luna68kの歴史解説と、LUNAでアニメGIF再生デモと ついでにPC-6001デモも作った話 / OSC2025Kyoto
tsutsui
0
180
NetBSDの解説と NetBSD/luna68kの歴史と ついでにPC-6001展示 / OSC2025Tokyo-spring
tsutsui
0
260
GitHub Actionsを使ってNetBSDマイナー機種用のビルドテストCIを書いてみた話 / OSC2025Osaka
tsutsui
0
220
Other Decks in Programming
See All in Programming
komatsuna「分散システムにおけるバグ分析手法」
komatsunaqa
0
270
わからない話を追いかけたら、プログラミング言語を作る側にいた
ydah
3
530
Claude CodeとAgentCore Gatewayを繋ぐ際の認証認可 / Authentication and authorization when connecting Claude Code with AgentCore Gateway
har1101
2
350
今さら聞けない .NET CLI
htkym
0
210
Jindong: Introducing Declarative Haptics in Compose Multiplatform
l2hyunwoo
0
130
進化を続けるGo toolsの現在地 / The Current State of Ever-Evolving Go Tools
hond0413
0
250
プロポーザルを書いてもらう
pvcresin
0
570
実装をデザインガイドラインに追従させるための取り組み / 260731-dip-mosh-design-system
dachi023
0
7k
レビュー履歴をAIに食わせて、 Compose移行を加速するs
shihochan
0
170
いまどきの Codex で開発する visionOS アプリの開発スタイルについて
karad
0
150
仕様駆動開発の消費期限
watany
20
8.8k
AIを紡ぐPMのお話
swdtkuy
0
120
Featured
See All Featured
Measuring & Analyzing Core Web Vitals
bluesmoon
9
970
Music & Morning Musume
bryan
47
7.3k
Typedesign – Prime Four
hannesfritz
42
3.1k
The Pragmatic Product Professional
lauravandoore
37
7.4k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
420
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
180
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
630
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
490
Bash Introduction
62gerente
615
220k
Prompt Engineering for Job Search
mfonobong
0
410
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
540
Transcript
PC-6001のPSG演奏デモを なるべくNetBSD環境を使って 作った話 関西オープンフォーラム 2024 いつもと毛色の違う謎マシンです Izumi Tsutsui
[email protected]
Twitter:
@tsutsuii Mastodon: @
[email protected]
2017年1月 OSC大阪前の やりとり
https://twitter.com/tsutsuii/status/822684506545000449
https://twitter.com/ebijun/status/822685193811042304
https://twitter.com/tsutsuii/status/822728091810152448
https://twitter.com/ebijun/status/822779295873404928
というわけで 今回もむりやりで PC-6001の開発を なるべくNetBSDで やってみた話 です
今年も k-of.jp に記載の タイムテーブルを 見ると……
KOF タイムテーブル 「BSDなひととき」 https://www.k-of.jp/2024/session/bsd
KOF タイムテーブル 「BSDなひととき」 https://www.k-of.jp/2024/session/bsd 4.4BSDの流れをくむ FreeBSD/NetBSD/OpenBSDなど、 BSD系UNIXのユーザグループ合同で、 BSD系UNIX全般を対象とした 幅広いテーマで議論します。
過去は LUNA 一昨年は Sun 去年は NEWS 今年は パピコン と レトロ系ばかりで
すいません
PC-6001 とは • NEC製の 8ビットパソコン •1981年 11月 発売
PC-6001 スペック •CPU: 8bit Z80互換 4MHz •RAM: 標準 16KB, 最大32KB
•グラフィック: 128×192ドット 4色 256×192ドット モノクロ2色 •音源:PSG 3和音 •標準価格:89,800円
ホビー・教育向け ターゲット http://www.nicovideo.jp/watch/sm1254646
•VRAMも共用 → 空きは 7KB •それでもいろいろ作れた時代 いろいろ遊ぶには32KBに増設しないとキツいかも メモリ 16KB
•128×192: 横長ドット •青・赤・緑・黄 (白・橙・紫・水色 のモードもあり) 4色の芸術
最近のマイブーム •パピコン4色 減色画像作成 OSC広島でもひっそり展示してました
減色例
減色例
減色例
減色例
減色方法 •16色と比べて格段にむずかしい 2016年頃は既存の減色ツールで全部 手動で試行錯誤で作ってました
「画像変換 for PC-6001」 •時代の進化 Web I/Fで各種の減色アルゴリズムや パラメータ調整でいい感じに作ってくれる ページがあります https://nazo.main.jp/prog/retropc/gcp6.html
ドット打ち職人 •細かい調整はGIMPで そこそこ大変ですが、ドット数も色数も 少ないので慣れてくるとなんとかなります
TINY Bitmap Converter もう一つの減色ツール •Windows用の各機種用減色変換ツール •「テープイメージ出力」を使うと エミュレータや実機でも即実行可能 https://www.tiny-yarou.com/tinybmpconv.html
そんなことを やっていた中で、 最近よく見ていた 動画がこれ
宇宙戦艦ヤマトを熱唱する花梨先輩 feat. 小春六花 @ニコ動 https://www.nicovideo.jp/watch/sm43594193
メインを歌う夏色花梨先輩の 歌はすごく良いのに、 手前で合いの手を入れる 小春六花さんのインパクトに すべて持っていかれる動画 (詳しくは視聴してみてください)
3色花梨先輩 例によって PC-6001 •使われている外箱式花梨先輩をP6減色 •実機表示でも意外といい感じに https://seiga.nicovideo.jp/seiga/im10924527
次は音楽? 動画視聴ヘビーローテーション効果 花梨先輩の歌もリップシンクもいい感じなので もっと注目して欲しいよね と思いながら 改めて何度も動画視聴していてふと思う •花梨先輩、小春六花、ベースの3パート? •3パートなら PC-6001 PSGで演奏可能?
https://www.nicovideo.jp/watch/sm43594193
PSG音源 • いわゆるピコピコ音 × 3和音 • 元はアーケードゲーム用? • BASICだと PLAY
文で MMLという書式を書いて演奏 こんなの→ "C8<D+D+8G8F8G8D+>D+DD+F"
PSG展示@OSC OSCでもPC-6001と LUNAで PSG演奏デモ とか展示してました
ニコ動にいくつか上げています http://www.nicovideo.jp/watch/sm29263535 http://www.nicovideo.jp/watch/sm29939586
楽曲PSG演奏のためには いわゆる耳コピ •音声を聞いてパートごとに 音程を取る •いろいろある採譜支援ツールを 使ってなんとかする •このへんはWindows用しかなくて NetBSD的には厳しい感じ
採譜ツール① York Trail ボーカル、ベース他の音源パート 分離機能が便利! https://ss1.xrea.com/theta.s57.xrea.com/software/#yorktrail
採譜ツール② WaveTone 周波数解析表示、スロー再生、 ピアノロール上でのノート作成と試聴 等々が可能 https://ackiesound.ifdef.jp/download.html#wt
MML編集支援ツール 3ML Editor MIDIデータ→MML変換、編集したMMLの ピアノロール表示反映や試聴が可能 公式ページはなくなっているので適当にぐぐってください
MMLが書けたら 次はPC-6001で 演奏させる手段が 必要なので用意
よっしゅさんの PC-6001用 PSG音源ドライバ http://park10.wakwak.com/~yosh/p6.html PC-6001での演奏にはこれを使います
TINY野郎さんの MML2P6PSGDRV https://www.tiny-yarou.com/deepp6.html Windows GUI上で MML→PSG演奏データ の変換が可能
PSG演奏データが 作成できたら 次はエミュレータ上 で鳴らします
PC6001VX http://eighttails.seesaa.net/article/305067428.html https://github.com/eighttails/PC6001VX
•READMEより 「PC6001VをLinux等で動作 するよう改変したものです」 「PC6001VXの末尾のXは クロスプラットフォームの Xです」 PC6001VX https://github.com/eighttails/PC6001VX
•基本的な機能は PC6001V 準拠 •クロスGUI環境としてQtを使用 •互換ROM内蔵で実機ROM不要 •Android版もあり •pkgsrc にしたので NetBSDでも 動作可能!
PC6001VX https://github.com/eighttails/PC6001VX
演奏試聴手順 •MML2P6PSGDRVには実機演奏用 プログラムの出力機能あり •PC6001VXでそれを実行しておく •PC6001VXの「どこでもセーブ」 でそのステートを保存 •PC6001VXのデバッガの 「ファイルからメモリにロード」 コマンドでPSGデータを読み込み •PC6001VX上で演奏実行して試聴
MML修正〜試聴 サイクル •3MLEでMMLを修正編集 •3MLEでMIDI出力してWaveToneで インポートして原曲音程確認 •書式をMML2P6PSGDRV用に変換 •MML2P6PSGDRVで演奏データ バイナリ生成 •PC6001VXの loadmemコマンドで
演奏データバイナリ読み込み •PC6001VX上で演奏実行
MML修正〜試聴 サイクル •3MLEでMMLを修正編集 •3MLEでMIDI出力してWaveToneで インポートして原曲音程確認 •書式をMML2P6PSGDRV用に変換 •MML2P6PSGDRVで演奏データ バイナリ生成 •PC6001VXの loadmemコマンドで
演奏データバイナリ読み込み •PC6001VX上で演奏実行 Windows上 Windows上 NetBSD上 Windows上 NetBSD上 NetBSD上
作ってみたPSG曲が かなり良かったので (自画自賛) 花梨先輩のために PC-6001 PSG演奏でも リップシンクするデモ を作ろう、と思い立つ
リップシンクデータ作成 •元データはpsd →GIMPで編集可能 •元動画準拠で あ・い・う・え・お ・ん・無言 の7パターンを変換 •口部分のVRAMデータ切り出し
リップシンクデータ作成 •P6PSGドライバ用MMLの中に リップシンク用データを埋め込み •演奏待機中のBASICプログラムで PSGドライバが更新するデータを 見て、リップ部分書き換え処理を 呼び出す、という想定 // リップシンク用 I0:無
I1:あ I2:い I3:う I4:え I5:お I6:ん I7:? I8:千 // M 10 さ ら D r2.v15o3 m12,2,1,2 q1I1g8 g16.&I0g32I1 // M 11 ば ち きゅ う D q0g+48&a48&a+24&a+16&b32&>c4&c16.&c24 I0r16 I2q1c8 I3q0c+48&d16.&c+48 c48&<b48&q1a+16 // M 12 よ た び D I5q0a+24&b16&>c2&c32 I0r8 I1q1<g8 I2g16&g24&a48 // M 13 だ つ ふ ね D I1a+24&b16.&>c4.&c16. I3q0d48&d+8 d8 I4<a+16&a+24&>d48
エミュレータで一通 り演奏が動いたら、 次は実機動作用の データローダを 作成します
Macroassember AS •過去はWindowsでzasm.exeを使用 •いろいろ探して NetBSDでも動く Z80の使えるアセンブラとして Macroassembler ASを採用 •ZASMとほぼ同様の書式 •include文が使えるので生成データ
組み込みも簡単に書ける http://john.ccac.rwth-aachen.de:8000/as/
PC-6001用 txt2bas •N60-BASICプログラムテキストを PC-6001データレコーダ形式 (P6形式)に変換するツール •CUIでソースコードもあるので NetBSD上でも動作可能 http://retropc.net/isio/mysoft/
なんでもピーガーmkII •TINY野郎さん作成の PC-6001データレコーダ形式 (P6形式)から実機のデータ レコーダで読めるwavを生成する Windows用ツール https://www.tiny-yarou.com/datarec.html
MML修正〜ビルド サイクル •MML修正と書式変換 •3MLE上で確認 •MML2P6PSGDRVで演奏データ バイナリ生成 •バイナリ→アセンブラソース変換 •アセンブルしてZ80バイナリ生成 •BASICプログラムのDATA文生成と txt2basによるP6データ生成
•バイナリ部のP6データ生成 •なんでもピーガーmkIIでwavファイル作成
MML修正〜ビルド サイクル •MML修正と書式変換 •3MLE上で確認 •MML2P6PSGDRVで演奏データ バイナリ生成 •バイナリ→アセンブラソース変換 •アセンブルしてZ80バイナリ生成 •BASICプログラムのDATA文生成と txt2basによるP6データ生成
•バイナリ部のP6データ生成 •なんでもピーガーmkIIでwavファイル作成 Windows上 NetBSD上 Windows上 NetBSD上 NetBSD上 NetBSD上 NetBSD上 Windows上
めんどくさくない? と思われるでしょうが、 元々Windows機もあって NetBSD上のsambaで ファイル共有していると 結構うまく連携できます
そんなこんなで なるべくNetBSD環境で作った 宇宙戦艦ヤマトを熱唱する花梨先輩 feat. PC-6001 のリプレイ動画
NetBSDは いろんなマシンで動く + pkgsrcは NetBSDで使える ↓ pkgsrc入りしたアプリを 使えばそれはNetBSDネタ
今回の開発のターゲットとして 初代PC-6001を使っていて、 今回の展示もそれを持ち込むつもり だったのですが、 11/8(金)の準備で本体内部を 改修していたところ誤って ヒューズを飛ばしてしまい、 KOF出発までに代替品を用意できず PC-6001mkIIでの展示となりました おことわり
•PC-6001 はエミュレーターや 各種開発ツールが充実しています •耳コピは作った分だけすぐ聞ける のがよいですね •GUIツールは NetBSDでは厳しい •必要なところだけWindows、でも なんとかなります •自分の作りたいものを作りましょう
まとめ