Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Not all HCA files are exported from ACB #10

Closed
YueLengM opened this issue Apr 13, 2020 · 10 comments
Closed

Not all HCA files are exported from ACB #10

YueLengM opened this issue Apr 13, 2020 · 10 comments

Comments

@YueLengM
Copy link

对同一个 ACB 文件进行解包时,acb2hcas 导出了 170 个 hca 文件,而 VGMToolbox 导出了 174 个文件。
按照软件的命名顺序,缺失了 prd_cv_0001_coop_0022_08.hca prd_cv_0001_send_0153_01.hca prd_cv_0001_send_0153_02.hca prd_cv_0001_send_0153_03.hca 四个文件。

cv_0001.zip
-b 00000000 -a C59E7114

@hozuki
Copy link
Owner

hozuki commented Apr 15, 2020

测试了一下,acbunpack 正常导出了命名的文件,不过不会导出未知文件。
……所以就得融合两种方式的导出结果咯。(sigh
都快忘了当初写的逻辑了。
此外写了一个小脚本,检测了一下重复文件,结果是这样的:

!dup: cv_0001\_vgmt_acb_ext_cv_0001\awb\prd_cv_0001_coop_0022_04.hca | cv_0001\_vgmt_acb_ext_cv_0001\awb\prd_cv_0001_coop_0022_08.hca
!dup: cv_0001\_vgmt_acb_ext_cv_0001\awb\prd_cv_0001_coop_0022_05.hca | cv_0001\_vgmt_acb_ext_cv_0001\awb\prd_cv_0001_send_0153_01.hca
!dup: cv_0001\_vgmt_acb_ext_cv_0001\awb\prd_cv_0001_coop_0022_06.hca | cv_0001\_vgmt_acb_ext_cv_0001\awb\prd_cv_0001_send_0153_02.hca
!dup: cv_0001\_vgmt_acb_ext_cv_0001\awb\prd_cv_0001_coop_0022_07.hca | cv_0001\_vgmt_acb_ext_cv_0001\awb\prd_cv_0001_send_0153_03.hca

嘛所以就是一个cue对应多个waveform了。

@hozuki hozuki closed this as completed in 542bf64 Apr 15, 2020
@hozuki
Copy link
Owner

hozuki commented Apr 15, 2020

现在应该修好了。我发一个新的release。

@YueLengM
Copy link
Author

谢谢!辛苦大佬了。
不过 -n 参数好像默认开启了,不加的时候也会带上名字。(小声

@hozuki
Copy link
Owner

hozuki commented Apr 16, 2020

我傻了,已修复

@YueLengM
Copy link
Author

现在不加 -n 会导出 170 个文件,加上了是 174 个。是因为不加名字无法区分了吗。

主要是这个按照顺序导出这 174 个文件的功能对我来说还是挺重要的x
因为 -n 加上的名字只是 131 个 Cue 的名字,但是并不是这 174 个文件的真正名字 (#11),所以我想通过不加 -n 的编号做一个中间状态,之后自己再去修改名字。

@YueLengM
Copy link
Author

看了一下对应的 xml 文件,其实是两个 cue 包含了相同的 4 个 wav。
Snipaste_2020-04-16_19-55-33

@hozuki
Copy link
Owner

hozuki commented Apr 18, 2020

少了的原因是文件本身只有170个cue,但是有174个引用。在导出的时候cue做了去重处理(代码),要不确实分不清。这个行为可以考虑改进。

@YueLengM
Copy link
Author

那请问能不能提供一个选项,在文件命名的时候加上 CueID 前缀或者只是普通的序号呢,比如 VGMToolbox 的
Snipaste_2020-04-19_10-35-16
(不知道为什么 VGMToolbox 正确标出了 174 个 CueID)
主要就是需要一个顺序去读取导出的文件。没有前缀的话,按照名称顺序的话肯定就乱了,创建时间也不行。

@hozuki
Copy link
Owner

hozuki commented Apr 19, 2020

这个不对,原文件只有131个 cue(就是有名字的那些),同样地,只有131个 cue ID,170个 waveform(实际音频文件),174个 track(逻辑音轨)。synth 表有174项,对应174个 track。
想了想,使用 track index 导出貌似也是可以的。开一个新的issue吧。
一个临时的解决方案可以是建立一个 map(waveform => index),然后对 LinkWaveform 进行去重。从 XML 的文件内容来看仍然是有序的,所以这个方法行得通。

@hozuki
Copy link
Owner

hozuki commented Apr 19, 2020

131个是“有名有姓”的 cue(也就是解析到了附带文件名的 waveform),cue 总数是170个。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants