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
1
40
PC-6001のPSG演奏デモをなるべくNetBSD環境を使って作った話 / KOF2024
KOF2024の「BSDなひととき」のセミナーで発表した『PC-6001のPSG演奏デモをなるべくNetBSD環境を使って作った話』のスライドです。
Izumi Tsutsui
November 09, 2024
Tweet
Share
More Decks by Izumi Tsutsui
See All by Izumi Tsutsui
PC-6001のPSG演奏デモを機会にNetBSDを真面目に説明してみる / OSC2024Ehime
tsutsui
0
37
OSC展示とLUNAとNetBSD / OSC2024Kyoto
tsutsui
1
65
digital VAX, NetBSD/vaxの歴史と VAXstation 3100/m30 展示 / OSC2024Osaka
tsutsui
0
450
SONY NEWS NetBSD移植作業とNWS-3260展示 / KOF2023
tsutsui
0
1.3k
37年前の Sun 3/60 のために最新のNetBSDと最新のX.orgをメンテする話 / KOF2022
tsutsui
1
460
お歳暮で Sun3 が送られてきたので NetBSD/sun3 を展示デモしました / OSC2020Osaka
tsutsui
5
2.8k
NetBSD/zaurus 8.1 を直したあと ブース展示デモ内容を作った話 / OSC2019Tokyo-Fall
tsutsui
0
690
NetBSD/zaurus 8.1 をテストしたら動かなかったので動くまで直した話 / KOF2019-NetBSD
tsutsui
1
1.1k
OSC京都 LUNA展示 9年目 / OSC2019Kyoto
tsutsui
0
630
Other Decks in Programming
See All in Programming
카카오페이는 어떻게 수천만 결제를 처리할까? 우아한 결제 분산락 노하우
kakao
PRO
0
110
距離関数を極める! / SESSIONS 2024
gam0022
0
280
よくできたテンプレート言語として TypeScript + JSX を利用する試み / Using TypeScript + JSX outside of Web Frontend #TSKaigiKansai
izumin5210
6
1.7k
レガシーシステムにどう立ち向かうか 複雑さと理想と現実/vs-legacy
suzukihoge
14
2.2k
Streams APIとTCPフロー制御 / Web Streams API and TCP flow control
tasshi
2
350
Ethereum_.pdf
nekomatu
0
460
とにかくAWS GameDay!AWSは世界の共通言語! / Anyway, AWS GameDay! AWS is the world's lingua franca!
seike460
PRO
1
860
Enabling DevOps and Team Topologies Through Architecture: Architecting for Fast Flow
cer
PRO
0
310
Generative AI Use Cases JP (略称:GenU)奮闘記
hideg
1
290
A Journey of Contribution and Collaboration in Open Source
ivargrimstad
0
880
詳細解説! ArrayListの仕組みと実装
yujisoftware
0
580
Nurturing OpenJDK distribution: Eclipse Temurin Success History and plan
ivargrimstad
0
870
Featured
See All Featured
Done Done
chrislema
181
16k
The Cost Of JavaScript in 2023
addyosmani
45
6.7k
Building Flexible Design Systems
yeseniaperezcruz
327
38k
A better future with KSS
kneath
238
17k
Automating Front-end Workflow
addyosmani
1366
200k
Keith and Marios Guide to Fast Websites
keithpitt
409
22k
Optimising Largest Contentful Paint
csswizardry
33
2.9k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
1.9k
Designing for Performance
lara
604
68k
Building Better People: How to give real-time feedback that sticks.
wjessup
364
19k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
4
370
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
506
140k
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、でも なんとかなります •自分の作りたいものを作りましょう
まとめ