Skip to content

Commit

Permalink
action
Browse files Browse the repository at this point in the history
  • Loading branch information
nyfair committed Dec 7, 2020
1 parent e26b4d3 commit fe73b7f
Show file tree
Hide file tree
Showing 13 changed files with 295 additions and 229 deletions.
25 changes: 25 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
name: build

on:
push:
workflow_dispatch:

jobs:
build:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- uses: microsoft/setup-msbuild@v1.0.2
- name: Compile
run: |
msbuild /p:Configuration=Release /p:Platform="x86"
mv Release/*.exe ./
mv Release/*.dll ./
7z a cri2wav.7z *.exe *.dll
- name: Upload
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: cri2wav.7z
tag: latest
overwrite: true
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
.vs/
Release/
Debug/
src/Release/
src/Debug/
78 changes: 78 additions & 0 deletions HCADecoder README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
# HCAデコーダ

# HCAファイルのデコード方法

HCAファイルをhca.exeにドラッグ&ドロップすると、同じファイル名のWAVEファイルができます。
複数ファイルのデコードにも対応してます。
デコードオプションはデフォルト値のままです。

デコードオプションを指定したいときは
オプション指定デコード.batにドラッグ&ドロップしてください。
こちらも複数ファイルのデコードに対応してます。


# HCAファイルの復号化方法

HCAファイルを復号化.batにドラッグ&ドロップすると、HCAファイル自体が復号化されます。
上書きされるので注意してください。
複数ファイルの復号化にも対応してます。


# 仕様

デフォルトのデコードオプションは
音量 = 1(倍)
ビットモード = 16(ビット)
ループ回数 = 0(回)
復号鍵 = CC55463930DBE1AB ※PSO2で使われている鍵
です。

HCAファイルにループ情報が入っていた場合、WAVEファイルにsmplチャンクを追加してます。
ただし、デコードオプションのループ回数が1回以上のときは、smplチャンクを追加せず、直接波形データとして出力します。
このとき出力される波形データは以下のようになります。
※HCAファイルにループ情報が入っていない場合、ループ開始位置とループ終了位置をそれぞれ先頭位置と末尾位置として扱います。
[先頭位置~ループ終了位置][ループ開始位置~ループ終了位置]×(ループ回数-1)+[ループ開始位置~末尾位置]

HCAファイルにコメント情報が入っていた場合、WAVEファイルにnoteチャンクを追加してます。


# 注意事項

一応バージョンチェックを外してますが
今後、v2.1以降のHCAが出てきたとき、デコードに失敗する可能性があります。

HCAヘッダの破損チェックも無効にしています。
これはヘッダを改変しやすくするためです。
もし本当に破損していてもエラーになりません。

暗号テーブルで使用する鍵はゲーム別に異なります。※開発会社によっては同じ鍵を使うことをがあります。
暗号テーブルの種類が0x38のとき、鍵が異なるとうまくデコードされません。

復号鍵を指定してデコードするときは
オプション指定デコード.batをテキストエディタで開いて、デフォルト値設定の復号鍵を変更しておくと楽です。

CBRのみ対応。VBRはデコードに失敗します。※VBRは存在しない可能性あり。

コマンドプロンプトの仕様で、&を含むファイルパス(ファイル名やフォルダ名)は
オプション指定デコード.batや、復号化.batなどのバッチファイルにドラッグ&ドロップすると
ファイルが開けず、エラーが出ます。


# 免責事項

このアプリケーションを利用した事によるいかなる損害も作者は一切の責任を負いません。
自己の責任の上で使用して下さい。


# その他

HCAv2.0からヘッダのVBRチェックをやってない痕跡があるので
最初からCBRのみしか存在しないのかもしれない。

ATHテーブルもType0しか存在しなかった痕跡あり。

普通にデコードすると16ビットPCMになるので音質が劣化するよ!
オプション指定デコードで、ビットモードをfloatにすると劣化しないよ!
でもHCA自体が非可逆圧縮なので元々劣化してるよ!
どっちだよ!

84 changes: 9 additions & 75 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,78 +1,12 @@
# HCAデコーダ
# 提取转换CriWare CBX/ACB/AWB/HCA音轨

# HCAファイルのデコード方法
## Usage
cri2wav directory [key1] [key2]

HCAファイルをhca.exeにドラッグ&ドロップすると、同じファイル名のWAVEファイルができます。
複数ファイルのデコードにも対応してます。
デコードオプションはデフォルト値のままです。

デコードオプションを指定したいときは
オプション指定デコード.batにドラッグ&ドロップしてください。
こちらも複数ファイルのデコードに対応してます。


# HCAファイルの復号化方法

HCAファイルを復号化.batにドラッグ&ドロップすると、HCAファイル自体が復号化されます。
上書きされるので注意してください。
複数ファイルの復号化にも対応してます。


# 仕様

デフォルトのデコードオプションは
音量 = 1(倍)
ビットモード = 16(ビット)
ループ回数 = 0(回)
復号鍵 = CC55463930DBE1AB ※PSO2で使われている鍵
です。

HCAファイルにループ情報が入っていた場合、WAVEファイルにsmplチャンクを追加してます。
ただし、デコードオプションのループ回数が1回以上のときは、smplチャンクを追加せず、直接波形データとして出力します。
このとき出力される波形データは以下のようになります。
※HCAファイルにループ情報が入っていない場合、ループ開始位置とループ終了位置をそれぞれ先頭位置と末尾位置として扱います。
[先頭位置~ループ終了位置][ループ開始位置~ループ終了位置]×(ループ回数-1)+[ループ開始位置~末尾位置]

HCAファイルにコメント情報が入っていた場合、WAVEファイルにnoteチャンクを追加してます。


# 注意事項

一応バージョンチェックを外してますが
今後、v2.1以降のHCAが出てきたとき、デコードに失敗する可能性があります。

HCAヘッダの破損チェックも無効にしています。
これはヘッダを改変しやすくするためです。
もし本当に破損していてもエラーになりません。

暗号テーブルで使用する鍵はゲーム別に異なります。※開発会社によっては同じ鍵を使うことをがあります。
暗号テーブルの種類が0x38のとき、鍵が異なるとうまくデコードされません。

復号鍵を指定してデコードするときは
オプション指定デコード.batをテキストエディタで開いて、デフォルト値設定の復号鍵を変更しておくと楽です。

CBRのみ対応。VBRはデコードに失敗します。※VBRは存在しない可能性あり。

コマンドプロンプトの仕様で、&を含むファイルパス(ファイル名やフォルダ名)は
オプション指定デコード.batや、復号化.batなどのバッチファイルにドラッグ&ドロップすると
ファイルが開けず、エラーが出ます。


# 免責事項

このアプリケーションを利用した事によるいかなる損害も作者は一切の責任を負いません。
自己の責任の上で使用して下さい。


# その他

HCAv2.0からヘッダのVBRチェックをやってない痕跡があるので
最初からCBRのみしか存在しないのかもしれない。

ATHテーブルもType0しか存在しなかった痕跡あり。

普通にデコードすると16ビットPCMになるので音質が劣化するよ!
オプション指定デコードで、ビットモードをfloatにすると劣化しないよ!
でもHCA自体が非可逆圧縮なので元々劣化してるよ!
どっちだよ!
## 使用说明
cri2wav 目录 [密钥1] [密钥2]

## Thanks
[vgmtoolbox](https://sourceforge.net/p/vgmtoolbox/wiki/Home)
[Nyagamon](https://github.com/Nyagamon)
[Perfare](https://github.com/Perfare)
154 changes: 0 additions & 154 deletions Source.cpp

This file was deleted.

25 changes: 25 additions & 0 deletions cri2wav.sln
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.29911.98
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cri2wav", "src\cri2wav.vcxproj", "{C53C6C2C-9832-4B11-AA47-3EE889961ED1}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x86 = Debug|x86
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{C53C6C2C-9832-4B11-AA47-3EE889961ED1}.Debug|x86.ActiveCfg = Debug|Win32
{C53C6C2C-9832-4B11-AA47-3EE889961ED1}.Debug|x86.Build.0 = Debug|Win32
{C53C6C2C-9832-4B11-AA47-3EE889961ED1}.Release|x86.ActiveCfg = Release|Win32
{C53C6C2C-9832-4B11-AA47-3EE889961ED1}.Release|x86.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {4D290526-DA02-47DE-B033-2D6B86A5F92D}
EndGlobalSection
EndGlobal
File renamed without changes.
File renamed without changes.
Loading

0 comments on commit fe73b7f

Please sign in to comment.