Rogueadyn / SaintCoinach

A .NET library written in C# for extracting game assets and reading game assets from Final Fantasy XIV: A Realm Reborn.
Do What The F*ck You Want To Public License
70 stars 99 forks source link

Suggestion: Dump Orchestrion Music #49

Open Almagnus1 opened 3 years ago

Almagnus1 commented 3 years ago

It would be really awesome if SainCoinach.Cmd had an option to dump the Orchestrion music, which looks like it's all at music/ffxiv/Orchestrion/* . For your sanity I'm referring to the Godbert dataset using bold, while the column names within each dataset using italics. For this, having a command like "omusic" would probably be the best.

Here's how this should work:

  1. Create a directory in the output folder for each Name in OrchestrionCategory
  2. Iterate through OrchestrionPath using a for loop, which will give you a Key value to use in Orchestrion, OrchestrionPath, and OrchestrionUiparam. Here's how that value should be used to generate data, path, and file name:
    • Data is File in OrchestrionPath. If there's no File value, log and skip it.
    • Path is OrcehstrionCategory in OrchestrionUiparam, which should be one of the directories created in step 1
    • (optional) A prefix for the file name can be generated Order in OrchestrionUiparam which should recreate a similar file structure to the Orchestrion UI panel ingame. This should be padded out to three digits (ex: 1 becomes 001) which will cause almost all OS's to sort everything correctly, while values that are 65535 (which affects Seasonal and Store Scrolls) should not be used.
    • File name looks like it's Name and in Orchestrion

So assuming I'm understanding all of this correctly, the resulting output should be a rather user friendly set of files that would be organized similar to what's seen ingame.

Hezkezl commented 3 years ago

FWIW this repository has been abandoned for years. You'll want to ask this thing over in the active fork, which is at https://github.com/ufx/SaintCoinach/

But realistically, you're probably better off making a secondary program that does this after they've been extracted from SC