欢迎光临散文网 会员登陆 & 注册

关于东方原作(限弹幕作)的thbgm.fmt

2021-05-29 02:27 作者:斯塔瑞  | 我要投稿

零、建议阅读新版

本篇专栏的内容为旧版,仅留作存档,建议阅读新版本。

新版本中本文内容经过重新整理,且新增了红魔乡的BGM循环点、thbgm.dat、Music Room乐评musiccmt.txt等的相关内容。

点此跳转到新版本

一、什么是thbgm.fmt?

从东方妖妖梦起,wav格式的游戏BGM被储存在游戏主程序同级目录下的thbgm.dat(限弹幕作)。但文件中只储存了采样数据,不包含各BGM的循环点以及wav文件头,这些内容被储存在了thbgm.fmt中。(请区分这两个文件)

thbgm.fmt可以通过使用thtk(Touhou Toolkit)中的thdat解包游戏主程序同级目录下thxx.dat获得xx为游戏编号)。它是一个二进制文件,可以使用HxD等十六进制编辑器打开。


二、文件的内容

1.简述

文件由多首BGM的数据依次串联而成。

2.格式

单首BGM的数据遵循如下格式。

2023.1.15修正

3.对格式的说明

(1).上面的偏移地址是相对的,将该首曲目文件名部分第一字节视为00H。

(2).文件名部分使用ASCII编码。该部分内容如果修改,会导致游戏不能正常读取BGM(即使只是交换了两首曲子的文件名)。文件名通常短于16字节,如th18_08.wav为11字节,剩余5个字节在文件名部分的末尾以0补齐。

(3)10H~1FH部分为循环点数据。

(4).起始点指的是曲目起始点在thbgm.dat中偏移地址

(5).循环开始点、循环结束点的单位均为字节。这三个时间点是相对于起始点而言的,即它们的值是以它们在thbgm.dat中实际的偏移地址分别减去起始点得到的。

(14H~17H的作用尚不明确)

(6).20H~33H部分为wav文件头数据。该部分内容需要与thbgm.dat中的采样数据相对应。原版中东方神灵庙的灵界BGM的wav文件头与其他BGM有差异(主要是采样率不同导致的不同)。

(7).格式种类的值一般为1,表示使用线性PCM编码。

(8).采样率的单位为Hz;采样深度的单位为bit。

(9).除了文件名部分以外,其它数据内容的储存遵循小端格式,例如:原版东方虹龙洞中第二首曲目的起始点为0x1281230,则实际上在十六进制编辑器中应记作“30 12 28 01”。第四个字节的“0”是将0x1281230补齐为0x01281230得到的。

(10).在最后一首曲目的数据后面,除去本身末尾的4个为0的字节,总是有17个为0的字节。

(11).一些数据的计算:

时间点对应偏移地址=时间点秒数*每秒字节数+文件头长度

注:原版thbgm.dat存在16字节的文件头。如果时间点秒数是将原版thbgm.dat以原始数据格式导入Audition等软件得出的,则不需要考虑文件头长度。

每秒字节数=采样率*每次采样字节数

每次采样字节数=声道数*采样深度

注:采样深度在此处的计算中使用的单位为字节,而thbgm.fmt中采样深度的单位为bit,请注意单位换算。


关于东方原作(限弹幕作)的thbgm.fmt的评论 (共 条)

分享到微博请遵守国家法律