eclmap: 東方の弾幕スクリプトを掘るためのニーモニック表
eclmap は thtk(Touhou Toolkit)のツール群向けのニーモニックシンボルマップだ。他人のリポジトリからの fork で、自分のオリジナルではない。東方 STG の弾幕スクリプトを掘るために引っ張ってきて、ついでに研究している。
東方では敵の動き方や弾の撃ち方が全部 ECL スクリプトに書かれていて、スプライトのアニメーション周りは ANM が担当する。thtk の thecl と thanm がこの 2 つのフォーマットをコンパイル/デコンパイルするツールだ。問題は、デコンパイルすると裸の命令がずらっと出てくるだけで、命令番号を眺めていてもどれが何をするのか全く分からないこと。eclmap がやっているのは、それらの命令に読めるニーモニック名を割り当てることで、デコンパイル結果にそのまま意味が乗るようにし、いじる手間を大幅に減らしてくれる。
使い方は他の thtk プログラムと同じで、コンパイルやデコンパイルの際に -m mapfile を付ける。mapfile は対応する表のファイル名だ。注意点として、ECL のマップは新フォーマットを使っているので、古い thecl は認識しない。リポジトリには今のところ ECL と ANM の 2 種類しかない。というのも実際にサポートしているのが thecl と thanm だけで、しかもどちらも release をそのまま使うことはできない。thecl は新しめのブランチから自分でビルドする必要があり、thanm はもっと面倒で、thanm-new-spec-format ブランチからビルドしないといけない。thecl のマップは eclmap ディレクトリ、thanm のマップは anmmap ディレクトリに置く。
ECL は全作品にあるわけではない。TH08 は th08.eclm、TH10-TH11 は th11.eclm、TH12 系は th12.eclm、TH13 から TH17 はそれぞれ対応する .eclm を使う。alcostg は未検証だが、th11.eclm を流用すればだいたい動く。TH06-TH07 と TH09 はまだ空のままだ。ANM 側はまだかなり初期段階で、作者が WIP と明記しており、命令名も気まぐれに変わりうるので安定性は期待しないほうがいい。TH06 は v0.anmm、TH07-TH09 は v2.anmm、TH09.5 から TH12.8 は v4.anmm、TH13-TH17 は v8.anmm を使う。
これは主に参照表として、そしていじり回すための土台として残している。この手の古いゲームスクリプトを逆向するとき、一番神経を使うのはツールそのものではなく、裸のデータを人間の言葉に翻し直すところだ。信頼できるニーモニック表があれば、その力仕事の大半を省ける。足りない作品はこの先出会ったときに補っていく。