他人の空似自作物置場

th105_SE.zip/Readme.txt

プログラム名:th105_SuperExtracter

用途:緋想天で使われているdatファイルから直に一般形式へ変換する

使い方:
展開したいdatをth105_SE.exeにドラッグ&ドロップで使えます。
一応コマンドライン経由でも使えます。
画像をbmp形式で出力したい場合はth105_SE_bmp.exeを使うか、th105_SEにパラメータ -bmp をつけて起動してください。
-bmp2だとOS/2 bmp形式、-pngでデフォルトと同じくpng出力になります。

ファイル解説:
th105_SE.exe		プログラム本体
th105_SE_bmp.exe	画像出力形式がbmp固定になっている以外はth105_SE.exeと変わりません。
cvn_convert.exe		おまけ、cv0〜3と一般形式を相互変換します。
			ドラッグ&ドロップでcv0←→txt、cv1←→csv、cv2→png、cv3←→wavに変換します。
			png→cv2ができないのは仕様です。
pal_extract.exe		th105c.datなどpalファイルが含まれていないdat展開時に利用するサブプログラム
			一応、単体でもdatファイルをドラッグ&ドロップでpalファイルのみ展開することができます。
src/mt.c			利用させてもらっている人様のコード、きちんとライセンスされているので再利用の際はソース冒頭を読むべし
src/th105_SE.c		プログラムのソース、ウイルスを疑う人用
src/th105_lib.c		同上
src/th105_lib.h		同上
src/th105_png.c		同上
src/cvn_convert.c	同上
src/pal_extract.c	同上
Readme.txt		今読んでいるこれ
History.txt		更新履歴

免責事項:
これに同梱されたプログラムその他が原因で発生したいかなる損害も当方は一切関知しません。
また、全てのプログラムがウイルスではないという証明も、ウイルスに感染していないという証明もありません。
自己責任でお使いください。

Q&A:
	Q:なんか一瞬だけ黒窓出て終了するんだけど
	A:ダブルクリックでは使えません、コマンドラインから使うか展開したいdatをドラッグ&ドロップしてください

	Q:黒窓の表示おかしくない?
	A:パスが長すぎて1行80字を超えると酷く表示が崩れます、出力内容には影響ないので無視してください。

	Q:緋想天以外のdatは?
	A:同じサイト上からtouhou_SEという名前で萃地に対応しているプログラムが公開されています。
	それ以外の対応予定は未定です。

	Q:PNGなのにファイルサイズでかくね?
	A:pngは独自実装に付き、出力は無圧縮pngになっております。

	Q:palとpatとdatがまだ一般形式にされず残ってるけど?
	A:それらは該当する一般形式ファイルが存在しないため未変換です。

	Q:変な画像が出力されてるんだけど
	A:パレットデータ(1Pカラー)が読み込めなかったと思われます。
	先に他のdatを展開してpalファイルを取り出しておく、他datを同じフォルダにおいておくなどすると正常に展開されます。

	Q:残り時間表示いい加減だね
	A:全力で手抜きです、あくまで目安ということで。

	Q:これだけはしちゃいけないって禁止事項は?
	A:処理中に対象ファイルの編集、もしくは占有。

	Q:すごく重いんだけど
	A:仕様です

	Q:ウィンドウ出ないと使いづらいんだけど
	A:仕様です

	Q:dat展開も一般形式変換も既にあったような
	A:直に一般形式になるあたりが新しいと自負しています。

	Q:てんこあいしてる?
	A:いや別に

	Q:シャンハーイ?
	A:シャンハーイ!


作者:名無し
メールアドレス:bnryxx332a(あっと)mail.goo.ne.jp
ライセンス:
ほぼ全ての権利を放棄しています。
再配布・改変・転用・売買などなど全て自由です。
たとえ「作者を偽っての再配布」をしたとしてもなんら法的措置に訴えることはありません。
また、上記の権利を行使する際に
作者へ連絡・作者の明記・ライセンスの制限・使用用途の制限・配布先の制限・ソースコードの配布などといった条件を課すことはありません。
全ての権利は無条件で行使することが可能です。


技術情報(と、どうでもいい話):
bmpのカラーパレッドの空き領域にαデータを放り込むと一部ソフトで動作しなくなるため0を入れています。
pngの独自実装はやっちゃった感があるが、それでも動いているのだから気にしない。
th105_png.cのcv2_flag=0で右端のゴミを出力可能、元データをきっちり見たい人向け
速度的にまだ最適化できる部分は残っているが、手元の環境ではHDD読み書きの速度で頭打ちなのでこのまま。
includeで.cファイルを読み込んでいるのは分割コンパイルの手間を省くため、非推奨なのはわかっていてもやめられない。
gotoも使っているが、こちらは分をわきまえているので問題ないはず。
th105_png.cを使いまわすためにload_palの定義がおかしな場所にある。
datとcv0〜3のフォーマットは解析情報とかなりの推測で成り立っています
cv2はパレッドの切捨て部分を計算していません(格納値0xF8を0xFFとすべきだろうが0xF8のまま使用)
cv3はあからさまにwaveフォーマットなんだけど、最後のほうに意味不明なバイナリがくっついている、これはゴミなのか緋想天内で使うデータなのか・・・
グローバル変数多目です、クラス化すればなくせるレベルですが面倒なのでC++にはなおしていません。
エラーチェックはきっちりしているようで肝心な場所が抜けています、palファイルなしで真っ白画像も既知なのに直っていない。
cvn_convertはpng→cv2だけ未対応、他は対応形式であれば相互変換できるはず、出力位置が使い辛いのはオマケということで許して。
SuperEXtracterで略そうとして危険な名前になりかけたのは秘密。
palファイルがない場合、既にdata以下にファイルが存在するならそこから読み込む、なければ読込指定されたdatと同じ階層の別datから読み込む
コンパイル環境はコマンドライン版VC++14.00.50727.762、CodeGear付属のBCC32でも動作することを確認しています。