dwgx@blog:~$dwgx
> cd ../posts

eclmap: 扒东方弹幕脚本的助记表

// created

eclmap 是给 thtk(Touhou Toolkit)那套工具用的助记符映射表, fork 自别人的仓库, 不是我原创。我拉下来是为了扒东方 STG 的弹幕脚本, 顺手研究。

东方里敌人怎么走、子弹怎么发全写在 ECL 脚本里, 贴图动画那块是 ANM, thtk 的 thecl、thanm 就是编译/反编译这两种格式的工具。问题是反编译出来一堆裸指令, 光看指令号根本看不出哪条干嘛。eclmap 做的就是给这些指令挂上能读的助记名, 反编译出来直接带语义, 改起来省一大截。

用法跟所有 thtk 程序一样, 编译或反编译时加 -m mapfile, mapfile 就是对应那张表的文件名。要注意 ECL 的映射用的是新格式, 老版本 thecl 不认。仓库里目前只有 ECL 和 ANM 两类, 因为也只有 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

留着它主要当查表和折腾的底子。逆向这种老游戏脚本, 最耗神的从来不是工具本身, 是把裸数据翻回人话, 一份靠谱的助记表能把这段苦力省掉大半。缺的作数以后遇到再补。