正直日記



2006/10/31

_ メガドラの音色吸出し方法を確立した
といっても逆アセンブルして解析ーのような面倒なことはまるでしてなくて、
音源ログ.vgmを鳴ら(すフリを)して、適当なタイミングでYM2612イメージの
ダンプをとるだけ。すると、こうなるのだ。

##### ym2612 port[0] #####
      00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
0000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
0010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
0020: 00 00 0B 00 00 00 00 35 F1 00 80 00 00 00 00 00 
0030: 71 71 74 00 32 32 01 00 01 01 01 00 30 30 32 00 
0040: 23 23 1E 00 23 23 1E 00 18 20 1E 00 18 20 0E 00 
0050: 12 12 DD 00 12 12 DC 00 12 12 DD 00 12 12 DA 00 
0060: 00 00 06 00 00 00 05 00 00 00 05 00 00 00 0A 00 
0070: 00 00 03 00 00 00 03 00 00 00 03 00 00 00 03 00 
0080: 06 06 00 00 06 06 00 00 07 07 00 00 07 07 21 00 
0090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00A0: 8F 39 8C 00 2B 2C 2B 00 00 00 00 00 00 00 00 00 
00B0: 04 04 10 00 C0 C0 40 00 00 00 00 00 00 00 00 00 
00C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 

##### ym2612 port[1] #####
      00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
0000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
0010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
0020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
0030: 6A 37 71 00 11 30 70 00 0A 30 31 00 02 30 31 00 
0040: 1C 2B 1D 00 28 14 17 00 2D 20 14 00 18 12 17 00 
0050: 14 9E 10 00 0F 1E 15 00 14 DE 15 00 0F 9E 15 00 
0060: 05 0D 0A 00 02 04 9F 00 08 06 9F 00 08 01 9F 00 
0070: 00 08 00 00 00 03 00 00 00 0A 00 00 00 05 00 00 
0080: A6 26 FF 00 16 36 FF 00 16 37 FF 00 17 26 FF 00 
0090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00A0: FE 8F 5B 00 2A 13 13 00 00 00 00 00 00 00 00 00 
00B0: 38 1A 3D 00 86 C0 C0 00 00 00 00 00 00 00 00 00 
00C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 

ボクはオタクちゃんなので、見ただけでどんな音色なのか分かります!!1

しかし普通は見づらいと思うので整形する。

#  CH : 1
#  FB ALG
  000 004
#  TL  MT  AR  DR  SR  SL  RR  KS DT1 AME
  035 001 018 000 000 000 006 000 007 000
  024 001 018 000 000 000 007 000 000 000
  035 002 018 000 000 000 006 000 003 000
  024 000 018 000 000 000 007 000 003 000

まあ普通。

VGM形式のログはサンプリングレートに依存している点がどうかなと思った。
GYM形式のフレームレート依存よりは遥かにマシで合理的ではあるけれど、
将来サンプリングレートが上がったときに面倒なような。いや将来どころか
今でも44→62→48と三段も変換を噛ましたりするし。どうせなら載っている
音源の供給クロックで最小公倍数をとったタイミングにすりゃいいんだ。
たとえば、メガドラなら7670000と3580000だからエート…。
すんません無理を言いました。
_ 時代はVB
なので、アレでスプライトダブラで無駄に派手なことやったらウケそうだと
思った。が、どうやらHSYNC割り込みが無いらしい……。タイマで頑張るしか。
_ ハードオフでFB-01を(以下略)
libjdkmidiはWindows用のドライバしか実装してないんだって。一時保留。
JuceはなんとWin9xで動かなかった代。これも保留。つーか、どうせ俺しか
使わないアプリを必死こいてクロスプラットホームページにする必要はある
のだろうか、というかそもそも俺は何がしたかったんだろうか。

でもやっぱり、GUIでスライダーをぐぐGUIっと動かして即座にキーボードで
確認出来ないと駄目だ。各パラメータの感度が他の音源と違いすぎるのだ
FB-01わ。だから誰か作るべきだと思った。


個人的感想を述べると、仮に作っても使わないと思う。
_ 危ない
10月は31日あるのだった。

Vikari > I enjoyed your page. Keep up the good work!  (2007/02/07 20:54:14)

2006/10/28

_ Re: シューティングゲームの歴史
メイキングが先行して公開されていたけど、本放送版も公開されたようで。

シューティングゲームの歴史 (Histoire Du Shooting Game)

初期・近代を大きく取り上げていて中期がばっさり抜け落ちているような、
リーマンストリームを作りあげた東亜プランやセイブに触れていないあたり
がちょっと物足りない。と思ったけど、インタビューしようがないから仕方
がないんだろうな……。

CAVE社内で普通のCRTを縦置きして開発してるシーンは、何か安心するもの
があった。思わず俺も俺も!と叫んだよ心の中で。

というのはどうでもいいとして、21:50から出るGBAのシューティングが色々
と非常に気になった。これはいつリリースされるのよ?というか、それもど
うでもいいとして、画面上にデバッグ文字列が出力されている所が本当に面
白かった。敵弾0発で16%、60発で70%だとすると一発辺り0.9%のCPU負荷かー
とか、サウンドが30%ということはステレオ8chかモノラル16chのどちらかで
再生レートは15kHzくらいなんだろうなーとか。足すと100%超えるじゃん!
でも結構なんとかなるもんだ、とか、そういうことを考えながら観た。出て
る場面は本当に一瞬なんだけど。ところで背景に見覚えがあるような……。
_ つうか
FM-7で良いじゃん。じゃんじゃんじゃん。
_ つうかFB-01は
LFOが1基しかなく、全チャネルでON/OFFが共通なので使いづらいな。保護し
まくったのは失敗だったかも。

あとTLがOPN/Mなどに比べて低めでホワイトノイズが作りづらいな。TL0でも
基音がのっちゃう。保護しまくったのは失敗だったかも。

あとVelocity Sensitivity for TLがModulatorで効か(以下略)
_ ハードオフでFB-01を見かけるたびに保護しているのが俺
そんなわけで見かけるたびに保護してたら今頃何十台も持っているはずなん
ですが一台も活用してません!つうのは、この機種はまともな音色エディタ
が現存しないことで有名で(今俺が有名にした)、しかも本体にエディット
機能が無いので手も足も出ないわけです。それでまあ10年以上腐らせていた
ところ中身がふやけてきたので慌ててエディタを作っていたわけですが。

PortMidiでバルクダンプをsendしたりreceiveしようと頑張ってみたところ
どういうわけか N バイト受信する毎にゴミデータ $00 が付加されてしまう
ので諦め気味だよ。送信時はゴミが削られて正常に受信されてしまうので不
具合になかなか気づかなかったよ。

[Media_api]PortMidi and USB Midi device on window
ここらへんのアーティクルが関連しそうだけど俺の場合はMIDI-OXを使って
もゴミが付加されるので関係無さそうだな……。

それで、これからlibjdkmidiとJuceを試すところなのだけど、もうめんどく
さくなったから開き直ってCUIでやることにしたよ。一応エディット出来る
から、地球上に多数いるであろうハードオフでFB-01を見かけるたびに保護
しているFB-01ユーザどもは歓喜するがよい。

ダウンロードページ

2006/10/18

_ ImgBurnで、日本語を含むファイル名を文字化けさせずに焼く
HDDの残り容量が200MBとかいう情け無い状況になったので当面必要なさそう
なデータをDVD-Rに退避する。焼きあがったら日本語ファイル名が盛大に文字
化けしていたよ。

色々試した結果、ファイルシステムを ISO9660 + Joliet にして構築すれば
化けないことが分かった。UDFやISO9660 + UDFだと化けるらしい。

焼く前に、日本語を含む名前のファイルをなんでもいいから一つ放り込んで
ISOイメージを作り、DaemonToolsとかでマウントして化けていないことを確
認すればよさそう。

2006/10/17

_ GUIとか
FM音色エディタを作ろうと思ったので、ビルダーでしこしことボタンとかス
ライダーを並べた。QtDesignerの中でsignalとslotを接続できるのは視覚的
に分かり易くていいんだけど、接続済みのウィジェトをコピったものは接続
が切れてるので繋ぎ直すのがめんどい。



つか部品多すぎてめんどくせえええ。これからラベル名ごとに機能を作って
いくことを考えたらうんざりしてきた!正解は、スライダーとLCDパネルを
纏めたオブジェクトをforで回して並べる、でした!GUIビルダーは不要!

2006/10/15

_ 俺のパンネロが終了したよ
100時間プレイしたデータを猫に消されたので自動的に俺のFF12が終了したよ。
つーか、やり途中で消されたのに一片も悔いの残らないゲームって凄すぎる。

2006/10/14

_ 真のお姫様になるために
君は自分の専門分野でお姫様足りうるか?っつーのはアレよ、豆の話なんだ
けど、例えばアレだ、俺だったら、そうだなー、ここに16トラック分のaiff
ファイルがあるとする。そのうちの1ファイルに一瞬だけクリックノイズが
乗っているとする。単体で聴けばまあ分かるだろう。それらにEQをかけてコ
ンプをかけてちょいと空間系エフェクトもかけたりして、でバウンスする。
そうして出来た2MIXのaiffファイルからクリックノイズを見つけられるか?
っちゅう話よ。俺には無理だと思うよ。つまり、性別の問題を抜きにしても
俺はお姫様になれない中途半端な野郎だっちゅう事だし、性別の問題を抜き
にしなくても当然、お姫様にはなれるわけがなかろーもん。生まれ変わった
ら俺はLS-56になります。止めるな。
_ 時代はパンネロ
いやまあ本当にタイトルの件くらいしか書くことが無いのでどうしようかと
思ったんだけど一応「日」記なので無理矢理書こう。毎日書こう!

ここのところFF12をやってるのだが(と言いつつ二ヶ月くらい前からずっと
やってるのだが)スクウエァ先生はどうして、誰もしたがらないような苦行
を仕込みますか、デバッガにやらせておしまいなのか自分でやってみたりは
しないのか、釣りのことだよバカ!FFシリーズでは以前も酷い苦行イベント
があってFF10の雷平原のことなんだけどランダム時間で画面が光るからその
瞬間に○ボタンを押してパンチ三発で雷を避けろ 200回避けたらご褒美な、
という本当に何を考えてるんだここを担当した奴は本当に自分で自分の手で
別に足でもいーけどテストして達成したのかとバールのようなものを片手に
問い詰めたくなるような代物だったが実はコントローラに光感知センサを仕
込むことでクリア出来たから結果往来で良かったようなもののFF12のアレは
無理であり限界だ。操作を極限までパターン化することで脳からアルファー
波やらエンドルフィンやらという名の脳汁が噴出しつまりなんと「シューティ
ングオナニストへの道」がロールプレイングゲームをプレイすることで拓け
てしまう……なんて話にはならねえんだよおカタルシスが無さすぎるという
わけであの部分を担当した輩が今すぐ首を釣るようあさっての方角へ向けて
お祈りして寝る。

2006/10/07

_ 逆アレンジ
VRC6版フィルモア from アクトレイザー (nsf)

なんとなく作ってみた。悪魔城伝説で使われているテクは大体再現しました。
SFC版を元に採譜してVRC6で作るならこうなっていただろうという風に作り
こんでいったので、出来た後からSB2版のフィルモアと聴き比べてみたのだ
けど、むしろSB2版のVRC再現度が高すぎる。さすがにFM音源で再現不可能な
12.5%等はFMだなあという音だけど、VRC6のキモとなる31.25%がうまくFMに
アレンジされてるよ。

それはそうと ppmck は素晴らしい環境すぎる。セルフディレイがサポート
されているので、MMLノートの音長を後ろから削ってチック計算してn回前の
発音から音程を拾ってきて……という作業から開放されすぎるので、作成が
楽になりすぎることが請け合いすぎた。

2006/10/06

_ 俺が俺にだまされ
いやもうほんと、無かったことに。(;´Д`)したい。
_ TimerA/Bにだまされ
09/21の日記の続きです。

リフレッシュレートに同期して音楽シーケンスが進むようにしていたのだが、
VSYNCが取れるならいいけどウインドウモード(タイマ動作)時に安定しない
し、フレームスキップもするので安定どころかとんでもないことになる。
なにより分解能が低いしで懲りたので、FM音源タイマに合わせて駆動させる
ことにしたのだが、テンポが速過ぎたりして悩んでしまった。

OPMのアプリケーションマニュアルによると

 Ta[ms] = 64 * (1024 - NA) / CLOCK[KHz]
 Tb[ms] = 1024 * (256 - NB) / CLOCK[KHz]

なのでTimerAで駆動させる場合は NA を求める。

 NA = 1024 - (60000 / (tempo * tpqn)) * CLOCK / 64

でいいはずなのだが CLOCK に 3580 を入れると実際には速すぎる。
T.Kono氏によるMXCのアセンブリソースを見てみると

 NB = 256 - (4883 / tempo)

となっており、実際にこの数字をTimerBに入れて駆動してみるとテンポが合
うようだ(ちょっと速いけど)。で、4883というマジックナンバがどこから
出てくるのかと思ったら、tpqn=48, CLOCK=4000なのな。tpqnはいいとして
クロックが4000なのは何故じゃ。入れてるクロックが3.58MHzなら3580でいい
んちゃうの。

つか逆に、4000でいいんだったら、fmgenの実装を見る限りOPNでの計算方法
が流用出来るので

 NA = 1024 - (3333300 / tempo / tpqn)

でよさそうだ。しかしなんかモヤモヤするなあ。
_ ARMv6 ARM日本語版PDF
が配布開始ですな。
http://www.jp.arm.com/document/manual/mdl.cgi

ここから先は寝言なので読まなくていい。

GBA的には(GBA関係ないけど)エンディアン反転命令もいいけど、ニブル交
換命令が欲しかったような。まあそれはどうでもいいとして、DSP/SIMD命令
セットやJazelleなど、流行り物をなんでもかんでも取り込んで一体どこへ行
こうとしていたのか分からないARMは素敵過ぎるぜ。おそらくARMv8はwifiを
取り込み、可変長命令が追加され(既にJazelleが似たようなものだけど)、
一つのプロセッサに複数のコアがあるように見せかけようとしたら頓挫して
結局本当に二つのコアを一つのダイに収めるようになるに違いない。Pentium
がCRISCだとすれば、ARMv8はRCISCと呼ぶにふさわしいアーキテクチャとなる
だろう。オッス!俺だよ俺々オラ孫悟空どっひゃ〜天津飯のやつ腕が増えや
がってオラおどれえたぞおみんなオラに元気を分けてくれえ最後にここまで
読んでくれてありがとう。

SaTa. >
かなり前にMDXの演奏時間を計算する方法を日記に書いてました。
http://www.pat.hi-ho.ne.jp/sata68/200309.html#17_gogo
X68はCLOCK=4000(4MHz)でしたね。
ぷにぐらま〜ずまにゅあるには

※X680x0 では OPM に本来のクロック 3.579545MHz ではなく、4MHz を与えて
 いるので、約 1 音(192.27 セント)高い音が出る.

とかありますな。
 (2006/10/07 03:52:33)
>
あ、すいません。ほんとにすいません。言葉足らずでした。
X68のOPMが4MHzというのは気づいていたのですが、その環境で求めたタイマ値が
3.58MHzの環境でも使える(というか3580を代入して求めた値だと速くなる)
というのが疑問だったのです。

つか、ソース見直したら物凄くタコな原因でした。

× double timing = 60000 / (tempo * tpqn);
○ double timing = 60000.0 / static_cast<double>(tempo * tpqn);

Uint32 na = static_cast<Uint32>(1024.0 - timing * (static_cast<double>(OPM_CLOCK) / 1000.0) / 64.0);

4000で使えていたのは勘違いだったみたい。恥ずかしい。
 (2006/10/07 19:13:44)

2006/10/04

_ 右手と左手のタイミングが合いません
手どころか指もおかしいんだけど。今現在進行形で頻繁に起こっているtypo
が以下の通りだぜ。

 qw → wq
 front → ftonr
 const → tonsc

qwがwqになるのは、QとWをほぼ同時に打鍵しようとしてたまたま W が先に
来るケースがたまたま頻出しているだけなのでいいんだけど(いいのかよ)
frontやconstのように離れた文字の、離れたキーが入れ替わっているケース
は深刻だ。c と t なんて、どんだけ離れてるっちゅうねん。ちなみに

 C (左 人差し指)
 O (右 薬指)
 N (右 人差し指)
 S (左 薬指)
 T (左 人差し指)

の順に打鍵してます。あ、中指を使ってない。つーかよく見たら間違えてい
るのは全て左手の中指近辺なので、これは左手中指を強化する方向でカバー
するしかないかも分からんね。具体的には、レバー操作とボタン押下に使う
腕を入れ替える。いや、腕を入れ替えるのは無理なのでジョイスティックを
逆さにします。そして人差し指はショットでボムは中指、つまりボムボタン
を適切なタイミングで押せるようになれば(以下略)

2006/10/01

_ 転送が遅い
GBA実機でテストするためにFlashROMに転送するわけですよ。GBAのコミュニ
ケーションポートを経由するので遅いのだわ。256KBit/sとかだし。んで、
イメージが16MByteとかあるし。なのでGBAを経由しないで転送できるSDカー
ド形式のカートがそろそろ必要かなあと思った次第だけど転送さえ済んでし
まえば遅いと思うことも無いのでこのままでもいいかと君が言ったから及第。
_ そうかもうねんまつなんだな(顔文字省略)
ウヒョー(顔文字省略)

SaTa. >
色々なROMを試すのであればSD/CFタイプのカートが確かに便利です。
但し毎回起動時に転送するのででかいROMは起動に時間がかかります。
デバッグとかではSDよりCFの方がファイル転送早いので有利です。
CFタイプはでかいけど。
 (2006/10/01 17:55:18)
>
あれ、起動時にカート内メモリへの転送が挟まるんですか。それは知りませんでした。
毎回だとそれはそれでストレスになりそうだなあ。しかし書き込みの速さは捨てがたい。
安定版はFlash内蔵のカート、みたいに両方使えばいいのかな。

早いと聞いてCFタイプに心が揺らぎましたが、出っ張ると縦持ちが出来なくなる
ことに気づいたのでした。危ないところだった。
 (2006/10/03 07:03:37)
> カートリッジにUSB用の端子がついてるやつとかはどうなんでしょうね?  (2006/10/03 19:11:26)
>
カート側にリンカーを内蔵しているタイプってありましたっけ?
不勉強なもので今まで知りませんでした。
 (2006/10/04 00:44:32)
> EASY USB LINKとバーサスリンカーとか言うやつです。  (2006/10/04 20:22:09)
>
結構種類出てるんですね。バーサスリンカーのOEM元がEFA-Linkerのようなので
http://trans.7mc.org/efa/faqe.htm の4分という時間が参考になるとして……

F2A-Pro 256Mbit/ULA/FlashManager v3.00beta11で256Mbit書き込むと7分15秒
掛かったので、比べるとリンカー内蔵型は爆速ですなあ。まいった。買うしか。
 (2006/10/05 06:10:22)
SaTa. >
亀レスですが、CF/SDタイプのカートは
本来のROMがRAMな訳で
(起動用の小容量)FLASH+RAM(32MB)+SD/CF の構成
一発目はFLASHからローダー起動して
RAM転送したらリセットがかかり
ソフトが動く二段階起動方式。
GBAだとリアルタイムにアクセスするのは現実的でないのでこうなってしまう。
NDSだとリアルタイムアクセスはDSカードのI/Oなので
SD/CFに置き換えてもそこそこ動く。
 (2006/10/07 04:10:59)
>
Pogoshellのmb形式プラグインのような挙動ですね。
ひょっとして自己書き換えみたいなことも出来てしまうのかな。
テンポラリとして使うとか。
あああ揺らぐ俺。
 (2006/10/07 18:05:33)

最新
2010 | 01 04
2009 | 01 02 03 04 05 06 07 09 10 11 12
2008 | 01 02 03 04 05 06 07 08 09 10 11 12
2007 | 02 03 04 05 06 07 08 10 11 12
2006 | 01 02 03 04 05 06 07 08 09 10 11 12
2005 | 01 02 03 04 05 06 07 08 09 10 11 12