{"id":21948023,"url":"https://github.com/kojobailey/xfbin-parser-plusplus","last_synced_at":"2025-07-22T06:31:43.397Z","repository":{"id":209994220,"uuid":"724936859","full_name":"KojoBailey/XFBIN-Parser-PlusPlus","owner":"KojoBailey","description":"Unpacks CyberConnect2 XFBIN files and converts their data into more usable and editable formats.","archived":false,"fork":false,"pushed_at":"2024-03-09T13:58:38.000Z","size":67,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-03-09T14:56:39.863Z","etag":null,"topics":["binary","cc2","cpp","cyberconnect2","drag-and-drop","jjba","jojo","json","parser","tool","xfbin"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/KojoBailey.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2023-11-29T05:03:08.000Z","updated_at":"2024-02-09T09:29:30.000Z","dependencies_parsed_at":"2023-12-28T18:24:38.846Z","dependency_job_id":"6aef3b0d-8d8a-482e-91e6-f64966fb02cb","html_url":"https://github.com/KojoBailey/XFBIN-Parser-PlusPlus","commit_stats":null,"previous_names":["kojobailey/cc2-parser-plus","kojobailey/xfbin-parser-plus"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KojoBailey%2FXFBIN-Parser-PlusPlus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KojoBailey%2FXFBIN-Parser-PlusPlus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KojoBailey%2FXFBIN-Parser-PlusPlus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KojoBailey%2FXFBIN-Parser-PlusPlus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/KojoBailey","download_url":"https://codeload.github.com/KojoBailey/XFBIN-Parser-PlusPlus/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":227048637,"owners_count":17723256,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["binary","cc2","cpp","cyberconnect2","drag-and-drop","jjba","jojo","json","parser","tool","xfbin"],"created_at":"2024-11-29T05:11:29.984Z","updated_at":"2024-11-29T05:11:30.736Z","avatar_url":"https://github.com/KojoBailey.png","language":"C++","readme":"\u003c!--\n[![GitHub Downloads](https://img.shields.io/github/downloads/KojoBailey/XFBIN-Parser-PlusPlus/total)](https://github.com/KojoBailey/XFBIN-Parser-PlusPlus/releases)\n--\u003e\n### Table of Contents\n- [Introduction](#cyberconnect2-xfbin-parser)\n- [Usage](#usage)\n  - [Unpacking XFBINs](#unpacking-xfbins)\n  - [Repacking XFBINs](#repacking-xfbins)\n  - [Converting from binary and JSON](#converting-from-binary-and-json)\n  - [Merging](#merging)\n\n# CyberConnect2 XFBIN Parser++\nThis tool aims to be the **ultimate parser** for the **XFBIN** file container format created by **CyberConnect2**, used in the games developed in their own engine, sometimes referred to as the **NU** engine.\n\nFor those unfamiliar, XFBIN files use the `.xfbin` file extension, and contain the magic (first 4 bytes of a file) `NUCC`. They are a container since they contain other file data within them in **pages** and **chunks** (such as `nuccChunkBinary` and `nuccChunkModel`). For more information, see the [XFBIN wiki page](https://jojomodding.miraheze.org/wiki/xfbin) on JoJo's Bizarre Modding Wiki.\n\nWhat this tool does is **extract** these chunks by separating them into different files for easier viewing, replacing, or removing; it is similar to the [XFBIN Parser by SutandoTsukai181](https://github.com/SutandoTsukai181/xfbin_lib). It then goes a step further and offers to convert any `nuccChunkBinary` to **JSON**, a format that is much easier to read and edit quickly.\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eSee an example of JSON\u003c/b\u003e\u003c/summary\u003e\n\n\u003cbr/\u003eThis data isn't taken from any particular file. Notice how **easy** it would be to edit the different parameters, as well as how useful it can be just to read them for understanding.\n```json\n{\n  \"Metadata\": {\n    \"Chunk Map Index\": 1,\n    \"Name\": \"example\",\n    \"Type\": \"nuccChunkBinary\",\n    \"Path\": \"cmnparam/bin/230/example.bin\"\n  },\n  \"Some Character ID\": \"4tno01\",\n  \"Random Number\": 1987,\n  \"An Array\": {\n    \"Bing\": \"bong\",\n    \"Magic Number\": 23\n  },\n  \"Some String\": \"Do you believe in \\\"gravity\\\"?\",\n  \"Some Japanese String\": \"調理場という所は... バイキンが一番の敵デスッ！\"\n}\n```\n\u003c/details\u003e\n\nSince every `nuccChunkBinary` is different, separate functions need to be defined for the conversion of each one. Currently, I as the creator of this tool am focusing on support for data from *JoJo's Bizarre Adventure: All-Star Battle R*, but adding support for other games will also be possible eventually - faster with contributions from others.\n\nThis tool is very much still a **WORK IN PROGRESS**, so until the first release, everything below is what I aim to have the tool be able to do.\n\n## Installation\nThis tool is a **WORK IN PROGRESS** and therefore not yet available for download. An initial release will be made when it is at least somewhat functional (otherwise it'd be useless to share).\n\n## Usage\n### Unpacking XFBINs\nTo **unpack an XFBIN**, simply drag-and-drop it onto the tool's EXE. A folder will then be created with the same name as that XFBIN, and if a folder of the same name already exists, the name will be slightly altered instead (e.g. `xfbin (0)`) to prevent accidental file overwriting/replacement. Inside this folder will be `_xfbin.json`, and other folders with a naming format like `[XXX] Y (nuccChunkZ)`.\n- `[XXX]` → The **page** index, as each of these folders is representative of an XFBIN page.\n- `Y` → The page's name, determined by the most dominant **chunk** from the page.\n- `(nuccChunkZ)` → The dominant chunk's type (e.g. `nuccChunkTexture`, `nuccChunkModel`, `nuccChunkBinary`, etc.)\n\nAn example folder name could be `[055] cmn_color_thumbnail_icon (nuccChunkAnm)`.\n\nThe `_xfbin.json` contains information directly about the XFBIN itself. This file **is** important, and shouldn't be modified unless you know what you're doing.\n\nThe folders are representative of the different **pages** within the XFBIN, which in turn contain **chunk** data. Within these, you will find a `_page.json` and (usually) at least one file containing the chunk's data.\n\n### Repacking XFBINs\n\n\n### Converting from binary and JSON\n\n\n### Merging\n\n\n\u003c!--\nTo convert a file **to JSON or back**, simply _drag_ the file you want onto the EXE.\nEnsure that the formatting is correct for the XFBIN or JSON, as incorrect formatting will cause errors. Feel free to report any errors you do come across, and I'll add error detection for those specific things in future releases.\n\n### Merging\nTo **merge JSON files**, _open_ the EXE and input (text) the type of file you want to merge.\n\nYou will need to have prepared a folder within the `merging` folder with the name of your wanted data type (e.g. `merging/messageInfo`).\n\nWithin that folder, have the JSON files you want to merge with the original (original or \"base\" JSON is already included in the `data` folder) alongside a corresponding TXT file of the same name. For example, `apple.json` would be accompanied by `apple.txt`. Inside these JSON files, you only need to include what you want to modify:\n\n```json\n{\n    \"1c30e109\": {\n    \"message\": \"bro just got violated\",\n    \"is_ref\": -1,\n    \"ref_crc32\": \"\",\n    \"char_id\": 70,\n    \"cue_id\": 84\n  },\n    \"6416af04\": {\n    \"message\": \"woohoo yippee\",\n    \"is_ref\": 1,\n    \"ref_crc32\": \"c37860ee\",\n    \"char_id\": 70,\n    \"cue_id\": 83\n  }\n}\n```\n^ An example for `messageInfo`. Include the key (in this case the CRC32 ID) and then all the data within it, with whatever you want modified.\n\nWithin these TXTs should be a **priority integer**. This determines the order in which the files are merged, which is useful for dealing with files that try to modify the same values. **Higher number = higher priority (merges after others)**. For example, `apple.json` with priority `5` will override `pear.json` with priority `2`.\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkojobailey%2Fxfbin-parser-plusplus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkojobailey%2Fxfbin-parser-plusplus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkojobailey%2Fxfbin-parser-plusplus/lists"}