MOS 6581のエミュレータ&プレイヤーライブラリであるsidplayとReSIDのソースコードをざっくりと見終えた。やっぱり再生部分はC64エミュレータ上の6510の機械語で作られた再生ルーチンでSID(6581/8580)エミュレータを動かすようである。
私はC64エミュレータを介さずダイレクトにSIDエミュレータにアクセスして音データを取り出したいがそれは案外簡単にできそうである。ReSIDのコードだけでいけるのではないかなと思っている。
問題は.sidファイルを再生する部分。6510の機械語で作成されているため、逆アセンブルしてプレイヤーコードを解析するかググりまくってアセンブラソースコードを獲得するかしなければならない。.sidのデータ部分のフォーマットも不明なのでその情報もプレーヤーコードから得なくてはならない。
sidplay2はライブラリ化されているのでまるごと取り込めば音を鳴らすところまでは簡単にできるのだけれど、せっかくなので.sidデータを編集できるようにしたり音色を作るためのUIも用意したいと考えているのでなんとか解析を進めたいと思っている。