Add PHCL, PHNM, NVT support#1
Open
RAMDRAGONS wants to merge 1 commit into
Open
Conversation
This also adds a standard Linux CMake build path.
|
Is possible add bphsc support? |
Author
As far as I've seen, Splatoon 3 doesn't utilize static compounds so it's not particularly on my radar. TOTK also uses a newer version of Phive I believe, so it's difficult to target both in one tool and it would essentially require a fork. I haven't directly used it myself so I could be wrong, but the linked Starlight toolkit in the PR seems to have some stuff for static compounds? |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds comprehensive Phive Cloth (bphcl), Phive NavMesh (bphnm), and NavTable (nvt) conversion support.
All 3 have been confirmed to rebuild to 1:1 matches with a range of files from Splatoon 3, and retain consistency when round-tripped with modifications.
Standard Linux CMake build support was added in the process of development and the only change made to Phive Shape code was related to that. It might need tweaks for building on Windows since I'm not able to test that.
The README hasn't been updated for these changes, and it may be good to standardize the program flags and bphsh outputs to align with the new ones so it's more neutral rather than assuming bphsh as a default or priority. These were left unchanged since I didn't want to enforce what I thought they should be on that front.
Phive Cloth
Converts to YAML pair where AAMP section is separated and parameter fields are dehashed by the hash dictionary. There might be more hashes in files I didn't find but it can easily be added to. Almost every tagfile type found in test-case game files is decoded properly, only a "type 32" gets decoded as a raw _bytes but it has zero real metadata to parse and is entirely made up of 3 bytes of zeroes in the two files it was found in. open-ead/agl was utilized to parse the AAMP section data.
Phive NavMesh
Converts to OBJ and YAML pair, and will update the YAML with changes made to the OBJ on rebuild. The OBJ is not strictly required for rebuilding the navmesh, however. Some files have hashes in their NavTable section, which I am not sure of the purpose of currently. Referenced MrMystery-Official/Starlight-Dev for the implementation.
NavTable
Not a Phive format, but it's linked enough to functionality of the navmesh that I find it a relevant addition regardless, since it handles navmesh waypoints. Converts to OBJ and YAML pair, and will update the YAML with changes made to the OBJ on rebuild. Like the navmesh, the OBJ is just an additional aid and the YAML can be rebuilt without it. The visual representation with the OBJ conversion isn't ideal due to the complexity of the waypoint connections and might be able to be improved but I think it's workable in comparison to the raw YAML output.