Skip to content

Add PHCL, PHNM, NVT support#1

Open
RAMDRAGONS wants to merge 1 commit into
nvnprogram:mainfrom
RAMDRAGONS:main
Open

Add PHCL, PHNM, NVT support#1
RAMDRAGONS wants to merge 1 commit into
nvnprogram:mainfrom
RAMDRAGONS:main

Conversation

@RAMDRAGONS

Copy link
Copy Markdown

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.

This also adds a standard Linux CMake build path.
@hgh32

hgh32 commented Mar 15, 2026

Copy link
Copy Markdown

Is possible add bphsc support?
it use for totk

@RAMDRAGONS

Copy link
Copy Markdown
Author

Is possible add bphsc support? it use for totk

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?
Even if I looked into it I wouldn't be able to guarantee anything, it might be better to look towards actual TOTK modders who can more effectively target the actual usability needs of modifying that format for it.

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

Successfully merging this pull request may close these issues.

2 participants