Hey there qhimm, figured I'd share a project of mine going on - it's a Java tool that parses and prints out data and script from Final Fantasy X files in readable formats. The intent of the tool is mainly to give enough context into what bytes do what so that you may use a Hex Editor to achieve results you want, though it may yet grow into something bigger or at least hopefully inspire proper tools to be made. What originally started as being my own solo work (however using files from pbirdman's mod to gain some initial insights) has since grown into being more collaborative, getting lots of extra information from other modders on the FFX Speedrunning Discord and Noclip.
Link to the Repo:
https://github.com/Karifean/FFXDataParserLink to a .jar of the Parser (status 25.09.2023):
https://drive.google.com/file/d/1oMzROUYfSy4J1oh8U_01FCT4kSeLqSuj/view?usp=sharingWhat can you do with it currently?
- First and most importantly, extract script code from field events, battle encounters and monster AIs and print them in a (more) readable format.
- Extract and print information on all abilities usable in battle including items.
- Extract and print information on auto-abilities on gear.
- Extract and print information on treasure and weapon pickups.
- Translate text strings to and from FFX formats including parsing entire files.
- Potentially more to come.
If you're having trouble with the tool setup but still want to see some of the disassembled code of the game's internals, I periodically run the parser across the entire set of field scripts (jppc/event/obj, excluding the /bl/ blitzball folder because it's massive, instead separating them into their own output), encounter scripts (jppc/battle/btl) and monster files (jppc/battle/mon), as well as parsing of all abilities and upload them to my Google Drive; you can find them here:
Field Scripts:
https://drive.google.com/file/d/15Tml4Q87ZGJ8NbDvC1nVA-IST4hMPLk2/view?usp=sharingEncounter Scripts:
https://drive.google.com/file/d/15ZjWRhtKVV_wsMNKqPgnGB6UtW7TQq6W/view?usp=sharingBlitzball Scripts:
https://drive.google.com/file/d/12GZAndawUfrAvMKI5uHxBqb4_KX8qDkP/view?usp=sharingMonster AIs:
https://drive.google.com/file/d/1QTdIA_J9VtATPLl7Pkd9iAywAI2ThVkX/view?usp=sharingAbilities:
https://drive.google.com/file/d/1O9y4pXPOfDtNUT7bm5mtW0_5_zJUITCk/view?usp=sharingPreview:
A lot of this tool's script parsing capabilities are based upon the work of fkelava/peppy and his Fahrenheit github project (
https://github.com/fkelava/fahrenheit) and Ghidra project into disassembling the game's .exe file. Major shoutouts to him.
This is a public github project for anyone to contribute to or take anything from, and I welcome assistance in further disassembling the yet unknown data, constants and functions. For now, I hope this tool and parser output will be of use to some people looking for information on this game's internals, like I was looking for when I started this whole thing. Cheers!