2015年5月18日月曜日

こればっかり



油断するとチャーハンを頼んでいる。


こればっかり!!

2015年5月16日土曜日

天丼運



最近、天丼運が良くなくて、


高いくせにパっとしないのが多かった気がする。


でもここのはおいしい!!ついに出会った!!


また来たい!

2015年5月15日金曜日

Windows:FM音源鳴ってきた

ZMSのパーサーをじっくりと作りつつ、ようやくFM音源が鳴りだしてキタ!

今覚えているウチに「えーそうなの!?」みたいのを覚書しておこう!

■音色設定方法
音色の設定方式は、通常形式と、AL/FB分離形式というのがあるらしい。
FM音源使ってた時は、分離形式しか使ってなかったので、通常形式は
記憶の彼方に飛んでいっていた。しかし、OPMに書き込む為にはここは
避けては通れない。

AF(フィードバック/アルゴリズム) = (FL(フィードバックレベル)*8) + CON(FM operator connection)

という形でAFを作ったり、直接3bitづつFLとCONを書き込んだり。

まあ、分かれてる方が音が作りやすいわね。なんで一つになってたんだろ?

■音程がわかりにくい
X68kFM音源の神、GORRYさんがTWITTERで言っていた。

4MHzのYM2151にデータシート通りの音階を設定すると「3半音-8セント」ほど高い音が出る(Cを出したつもりがほぼD#の音階で鳴る)ので、そこはドライバ側で吸収する必要がある

ここをきっちり「3半音-8セント」で計算しないで「3半音」で計算して、8セントはデチューン命令でゲタをはかせて与えるという実装もそこそこある。うちのドライバが「^20(=8セント)が標準」だったのはそういう実装

ちなみにこの「3半音ずらす」ときに「単純にKCレジスタ設定値から3引く」と正しくない。KCレジスタに与える音階値は0-2,4-6,8-10,12-14だけが有効で、3,7,11,15は無効値なので

どうも、YM2151への供給クロックが、業務用3.579MHz / X68000用 4.00MHz
というような歴史があるらしく、その辺もしっかりとイミュレートしているx68sound.dll
なので、その通り音階を入れてあげないといけない。ここは面倒くさくてハマった。

なので、CとDは音程が狭い。なんだこれ。

■マルチメディアタイマーの発見
かなり正確に指定msecごとにCALLBACKしてくれるのがWindowsにあるらしい。
早速使ってみたら、いい感じ!!invokeの時は60分の1秒でしか色々できなかった
ので、結構ズレまくってた。

それでも16msecごとなんだけどね。描画があったりで時々ガッっとズレてた。絵は
少々ズレてもカ・ワ・イ・イでなんとかなったけど、音は流石にズレるとしんどい。
最近捨てたT3exのシーケンサーを思い出す。小節ごとにグっと待ちが発生する
ナイスなシーケンサー。

■繰り返し
これがハマった!!繰り返しの実装は本当に大変だった・・。ZMSでは簡単に

|:16 cdefg :|

なんて書けちゃうけど、これを実現するのは本当にめんどくさい!!ズレるのが
嫌だったから、イベントは絶対時間で持っておいたので、絶対時間の足し込みが
すげーめんどくさかった。でもなんとかなった・・かな?

2015年5月12日火曜日

Windows:ハマったところ

現在自作のアプリでFM音源を鳴らしたくて、X68sound.dllを組み込めるか実験中。
10年以上前のソースコードとの格闘中に色々とハマったのでメモ。

■CからC++へ
元々のソースコードはCで記述してあるので、関数の宣言時にヘッダに初期値を
入れる事ができていた。ヘッダへ初期値を入れる場合はC++の場合はクラス化
してコンストラクタに入れるのが正しいのかな?とにかくコンパイラがエラーを
出すので、初期値をはずす。

関数呼び出し時も初期値を省くことができるCと違って、C++はちゃんと入れて
あげる必要がある。ここもハマった。

■fopenとfopen_s
昔おなじみのファイルを扱うfopenも、現在ではセキュリティの低いAPIとして
使うなと怒られる。fopenをそのままfopen_sにしてもダメで、引数と戻り値が
違うのでハマった。

if((fp = fopen(filename,"rb")) == NULL)
こんな感じのは良くみる。このifでエラー処理を入れるのが普通。

それを
if(fopen(&fp,filename,"rb") == NULL)
だけではダメで、

if(fopen(&fp,filename,"rb") != 0)
とする。ハマった。

■文字コード
昔のはマルチバイトに対応してないプロジェクトもそのままあるので、ファイルを
扱う場合はマルチバイトにする必要あり。
プロジェクト→プロパティ→構成プロパティ→全般
にある、「文字セット」を変える必要アリ。ハマった。

2015年5月4日月曜日

パイン好き!



梅田の東の、


ちょっと入った所にびっくりドンキー発見。


そんなに人がいなくてまさに穴場。


梅田に来たらここは通うでしょう。


そして相変わらずのパイン好き。


ついでにコロコロステーキも!

2015年5月3日日曜日




近所にある滝。


最近は普通に犬の散歩感覚で訪れる。


ガッツリ観光で来ている人との温度差がすごい。

2015年5月2日土曜日

合わせるよね



しばらく来てなかった若水。


今回は焼き飯に野菜炒めを合わせてみた。


両方ともむちゃくちゃおいしかったけど、


量がすごくて、胃が爆発するかと思った・・