[FF9]2016 release

  • Thread starter Thread starter makipl
  • Start date Start date
Status
Not open for further replies.
M

makipl

Guest
So... They used Unity3D (LOL, sic!).

FFIX\StreamingAssets\ma\:
FMVXYZ.bytes files are pure OGG
mbgXYZ.bytes files are also pure OGG

FFIX\StreamingAssets\:
P0dataXYZ.bin are "Unity Web Player Scene (non compressed)":
Open with UnityEx 1.5

FFIX\x64\FF9_Data\
sharedassets files, open with UnityEx 1.5

Source notes:
By the way> This can help in reversing FF8 (and FF7 if there's something missing). The engine is similar, so...
So far the most interesting source files are (for related FF):
PSX_LIBGPU.cs (Contains many polygon infos, vertex etc.) [Names like TPage and etc.]
PSX_LIBGTE_EMU.cs - I've seen this huge array in FF8 pseudocode...
PSX.cs - Many definitions about colour, TIM width etc.
PsxCamera.cs - Contains debug dumper for Camera info (reverse engineering?) and ready camera class (Matrix translation etc.)
PSXTexture.cs - Generating texture from TIM? (Yeah, setting new bitmap, copying pixels according to data. Looks like TIM to Bitmap generator)
 
Last edited:
Huh. That is an actual, working? full decompile of FF9. Its something we talked about doing for FF7 but someone actually did it. I'm not sure what this will do for us exactly but it sure is pretty impressive.
 
Yep. Unity3D uses CSharp as primary coding language. Mono C# is compiled to CIL assembly. This type of assembly can be produced into working C# code (not pseudocode like C/C++). Their decision of making it powered by Unity made an open gate to gain full source code in C#.
For streamingassets, this can open it: (Link removed, see my next post)
There are mostly unknown RAW data, sorted. Some materials...
That soft is capable of exporting image data to PNG and mesh data to OBJ
 
Last edited:
I noticed the Unity stuff as I was looking at the disassembly in Cheat Engine. Kinda made me go "huh?"

Good work on the source. I'll make sure to keep a copy with me at all times.
 
Wow, where was that hidden? That's awesome !
Flags are given names here... I will never have to guess anything blindly anymore :D

I've seen those datas in the assets so far :
Code: [Select]
Code:
p0data2.bin :  Enemy Stats Data "dbfile0000.raw16"  Enemy Battle Data "[nb].raw17"p0data3.bin :  World 0x00 Chunk part "disc.img" "discmr.img" "map.bin"  IMG DIR 13 "model_hm.nwp" "model_vm.nwp"p0data4.bin :  ??? "[NAME].tab"p0data5.bin :  Seems to be 3D modelsp0data7.bin :  FMV stuff? "FMV[nb].mbgdata" "MBG[nb].mbgdata"  Field Scripts "[NAME].eb"  Battle Scripts "[NAME].eb"  World Scripts "EVT_WORLD_WORLD[nb].eb" "EVT_WORLD_WORLDSV.eb" "EVT_WORLD_WORLDTS.eb"p0data11.bin & 12 to 18 :  Field Walkmesh "[NAME].bgi"  Field 0x16 Chunk "[nb].sps"  Field 0x17 Chunk "spt.tcb"  Field Tiles "[NAME].bgs"p0data61.bin :  Music "music[nb].akb"p0data62.bin :  Songs "song[nb]_[nb].akb"p0data63.bin :  SE Sound "se[nb][nb].akb"resources.assets :  File List "file.list"  Texts    Battles "[nb].mes"    Text Blocks "[nb].mes"    Items "itm_name.mes" "itm_help.mes" "itm_btl.mes"    Key Items "imp_name.mes" "imp_skin.mes" "imp_help.mes"    Fields "loc_name.mes"    Worlds "[nb].mes"    World Places "worldloc.mes"    Spells "aa_name.mes" "aa_help.mes"    Supports "sa_name.mes" "sa_help.mes"    Commands "com_name.mes" "com_help.mes"    Battle Infos "follow.mes"    Battle Scan "libra.mes"    Battle Spell Naming "cmdtitle.mes"    Choco Menu "ff9choco.mes"    Card Menu "card.mes"    Cards "minista.mes"    Tetra Master "minigame.mes"    Menus "Localization.txt"  World 0x00 Chunk part "fx[nb].sps"  Cards    Stats "MINIGAME_CARD_DATA_ADDRESS"    Decks "MINIGAME_CARD_LEVEL_ADDRESS"    Games "MINIGAME_STAGE_ADDRESS"Assembly-CSharp.dll :  Shops 0x201DC0  Status Sets 0x1EF144  Spell Naming Rules 0x202BE0  Max Stats 0x1F14BC  Character UI 0x1F14C4  Initial Equips 0x1F14D0
 
Okay. Thanks for this Tirlititi. :)
The music files are also OGG. To get working music file just:

As jammy2001 in FF9 Audio replacement mod topic suggested to use "UnityEx 1.5". I also recommend this instead of "Unity Assets Bundle Extractor" (Unity Assets Bundle Extractor wants to hook up your svchost and dwapi and something other. Looks like spyware or just I'm paranoid). So use this: https://www.ff7catalog.com/posts/217566/
1. Rip your desired music file
2. Use HEX editor, find first occurance of "Ogg" string.
3. Delete all bytes up to this Magic word.
4. That's kinda all. Open with your favourite music player (that is capable of playing vorbis OGG files)

The MSIL assembly is in "Assembly-Csharp.dll" inside "Managed" folder.
 
Last edited:
Yep. Unity3D uses CSharp as primary coding language. Mono C# is compiled to CIL assembly. This type of assembly can be produced into working C# code (not pseudocode like C/C++). Their decision of making it powered by Unity made an open gate to gain full source code in C#.
...
Haha, I had no idea C# was primary language for unity. Pretty much any purely "simple" C# project/solution is opensource... Not legally speaking of course.
 
So....we can make our own frontends and overrides for GUI and window properties with this?
 
In the interests of avoiding a C&D or other negative attention from Square Enix, I have removed all links to the source code. Discussion is fine (probably), but we can't be linking directly to copyrighted material like that.
 
Ayay Captain! You are right. I understand what might happen so I edited my posts.

Back to topic:
Does anyone know a good software for 'level' files analysis? HEX'ing them reveals some entities names/types, but that's all.
 
Last edited:
I'm UnrealEngine fanboy. I have no much knowledge about Unity, so... probably no, it is not possible to open it up in Unity Editor.
 
However we can already decompile the code into CSharp (done already, but won't share)
and we can rip the assets from the unity raw datas using UnityEX v1.1.5 (that version only)

But no, that will not allow us to open it with Unity, that would be all too easy :/
 
It would allow you to create some really amazing mods though, replace models, redo backgrounds, import better music, script new scenes?
 
Had a chance to check WMWorld/WMBlock/WMCell/WMReadFile?
I also note that WMPsXCamera could be of use if one wants to figure perfect camera angle themselves ; )
 
Last edited:
Just a thought. Instead of trying to reverse the PC version into unity we could do it to the android one ? Then use the same scripts to get the controls and other things back from the PC version
 
Status
Not open for further replies.
Back
Top