ウチツクシ

ゲームをしたり作ったり

pt4hsp更新(ver.0.9.0.0)

約6年ぶりの更新公開。まだやってる。
バージョンが一気に飛んでるけど、実はそんなにバージョンアップしてなくて、pxtoneのバージョンに合わせる形で付けてみただけ。気力が続くなら1.0.0.0までは追っかけていきたいところ。
更新する際、何度かひっかかったところがあって、最近のだと引数の型が変わったもの。

v.0.9.1.9:
引数の型をいくらか変えました。 BOOL -> bool、long -> int など。

これ見たときはモジュールの方は何も変えなくていいと思ってたんだけど、ライブラリ更新してサンプル動かしてみたらポーズが効かなくなっててかなり焦った。いろいろ試してたら pxtone_Tune_IsStreaming がとんでもない値返していたことが判明。まさか BOOL と bool が違うとは思わなかった。

このページによると BOOL が signed int の 4バイトで bool が unsigned char の 1バイト。大文字と小文字でこんなに変わるのはズルい…。対策は、

#defcfunc bool int p1

    t = p1
    return peek(t)

こんな関数作って変換した。けど少し懸念があって、環境によってバイトの並びが異なったらこれだけだと下位互換が保てなくなること。エンディアンというやつ。Windows環境は全部一緒ならいいんだけど。あと、戻り値の方は変換してるけど、引数に渡す方は変換しなくても問題なく動いてるからそのままにしてる。long -> intも動いてるから何も対策してない。環境の違いとかあったらもう知らない。

それからサンプルもいくつか追加したけど、サンプルにしては複雑過ぎな気もする。特に 07_export.hsp なんかもう自分でも触りたくないレベル。pt_vomit 使うサンプルってwav出力くらいしか思いつかないから結果こんな感じになってしまった。サンプル見る人がいたらごめんなさい…

既知のバグもあって、pt_init に NOISE_ONLY 指定して pt_noise 使うとシステムエラーが出る。色々やってみたけど分からなくて放置してる。ライブラリの下位バージョンで試すとエラー出ないからpxtone側のバグじゃないかと思う。一応回避策は pxtone 0.9.1.8 以前のを用いるか NOISE_ONLY を使用しないか。下位バージョンでもあまり下だと pt_noise が対応してないので注意。