アプリケーション側でごまかす手はいくつかあるだす。要はいっぱつ目の RGB チャンクに目的のものがきていれば良い訳なので、アプリケーションでファイルを読み込んでチャンクを分解してファイルヘッダー + 目的のチャンクにして Translator に渡すってのがいっちゃんかんたんかしら。もう一つの方法としては、目的のチャンクだけが見えるような BFile の subclass こさえて Translator に渡すっての。 Read(), ReadAt(), Seek(), Position() とかを override してごにょごにょってのね。まぁ、 *.sg の場合は前者がだとうでせうなぁ。
後者の方法の亜種は mjPlay で実験的にやったですよ。 mj って要は motion jpeg で、 jpeg がゾロゾロ並んでる訳で、適当なオフセットに移動してから Translator に渡せば良いかとおもったのね。が JPEGTranslator はまず Seek(0, SEEK_SET) してるんで(当然だわね)、こんな単純な方法は駄目なの。で、 BFile の subclass で Seek() とかを override して、ファイルの頭から適当な offset ずらしたところに Seek() してやるってなのやってみたです。これ、うまくいきます。 JPEGTranslator の Translate() は Seek() と Read() しか BPositionIO の method 呼んでないんでらくちん。 Translator は素の fd やら FILE* やらを使ってないんでこーゆーごまかしがでけるです。 JPEGTranslator は 4k 単位で読んでるみたいだったんで、結局はアプリケーションで目的の JPEG いっこを読み込んで素直な BMemoryIO のかたちで JPEGTranslator にわたしちゃったけど。
今日のは恐らく本人に読まれることはないだろうなぁ(笑。メール送った方が良いかしら。とか思いつつ...
一枚絵のうちバックグラウンドの方は JPG チャンクをもっている、暗号化された JPEG でふ。イベント絵とかは RGB チャンクをもっているタイプで JPEG ではないです。
*.px のうち、 MUSIC の下と SE の下は大体そんな感じですが、 SLP チャンクが付いているので、頭を飛ばしただけでは最後にノイズが付くです。 MUSIC の下と SE の下のファイルに関しても、 SE/m001.px (美由希のモノローグ) とかは他のと違いモノラルでふ(ヘッダーに書いてあるです)。また、 SE/all.px は TRK チャンクを五個持ってたりします。
SLP チャンクにはループポイントに関する情報が入ってます。が、 th-18.px のループ情報はまちがってます(笑)。 px2wav (wav にループ情報くっつけてみたですヨ) と mjPlay はそれ対応しました (pxPlay は mjPlay に吸収合併でいいかな)。
SLP チャンクによるノイズは最後に付いて居たりするので余り気にはならないかも。途中にあったりすると、人間の耳ってけっこうそゆの拾うのね。サンプリングレート 22kHz のファイルで 2 サンプル分 (2 / 22050 sec) のゴミでも気付いちゃうから。
話ちょっとずれて、 RGB チャンクを複数もっている画像があったですヨ > ゆーき大人。今の所確認したのは PARTS/timer.sg で、これは選択肢のウィンドウで時間制限付きのやつです。
というわけで、今世紀はダメねたで閉じようとしております(明日からしばらくおうち(福岡)に帰ります)が、来世紀は TRH3 (やその他もろもののダメうぇあ) で得たノウハウを元にダメじゃないもの(ゲームじゃないよ。大物じゃないけどね)を一つ書く予定(いあ、もっと沢山書くけど)。ダメ系は BeTRH3 を BeTRH1/2/2.5 に先行して上げることになりそう。
何事かと思いましたヨ(笑。更新再開を期待したので残念だったです(笑。
しかしあれね、 Net+ だとフレームの上下で UTF-8 と shift_jis がくると、かなり辛いですなぁ(はぅん。
増殖する TRH3 ぷろだくつ(笑。
ゆーき大人の Translator をはじめとして、伊藤さんの mj2wav に、うちの px2wav, (px2wav2 は欠番), px2wav3, pxPlay, mjPlay, mj2avi 、あと表には出さない Bonus Track-PCTRH3 Mix (仮名) 支援ツールとか。
mjPlay はバッファサイズを増やしてみた (当社比 10 倍) ので、今のなら cifs 経由でもなんとかなるかも(ならんかな)。
うへへ。ありましたなー(笑)。あれは、問題アリなこと判ってるのですが (動作っていうか、仕様がいいかげんなだけだけど) 、壊滅的に放置中。
他のその場限り思い付き的、何分で書けるかなタイムトライアル的ぷろだくつも、いつか綺麗にしてあげないとなぁ。 WrapKey もとい WarpKey とか。
てへ☆彡
というわけで、一日寝かせた 20 日版の mjPlay では CD-ROM からの再生もおっけーになってるはずですぅ。
本来の目的(うひ)からすると、コンバートしてっていうのはあかんので、 CDPlayer クラスとかと同じインターフェースで扱うことができるようにしてしまいました。今回は BStreamingGameSound 使ってまふ。
というわけで、 tcs2wav をちょっと変更して px2wav をうりゃと。 SE/all.px は最初の一つだけを変換してまふ。
BGM 系はループに関する情報も持ってるので、 wave に変換じゃなくて、簡単なプレーヤー作ると良いかなとか思いつつ、ループ情報シカトして変換。ループすることが前程になっている物は終わりがぷちっと切れてますが元がそうなので。
えぇ、表に出してしまいましたヨ。実験サーバーには以前から置いてたんですが、ごろ~さんとの約束もありましたし(うひ。中途半端な形ですが、取り合えず動く物を出そうと。現状のままだすのは芸が無いので、取り合えずセーブとロードは付けてみました。やっぱり、中途半端ですけど。セーブできるようにしてみたら、ロードする時にフラグを変な風に詠み込んでいることが発覚とか楽しいこともありました(笑。
BeTRHn ですが、醸造中です。現状、選択肢を選ぶ画面を作っていないので、ユーザーの時の運でお話が進んでいきマス。運が良いとさくらさんコースですが、運が悪いと「僕たち友達だよね」と言われます(嘘です)。
BeTRHn に関しては今日の TRH3 をばらしてから Myu3 まわりをいじってみよっかなーとか。いや、他にもいろいろとやりたいことはあるんで、どっち方面にどれだけ気分がノルかっていうのが影響大ですけど。
あー、もうしわけないですm(_o_)m。 HEAD で時刻が取れないと GET しちゃうんで、イメージなカウンターじゃない場合は、どかどかカウントアップしちゃうですねぇん。うちのカウンターも NATSU-MICAN の場合は無視するようにしちゃってます。 log には残るですが、 log 解析の方で弾くようにしてたりします。