But I don't know why, for some reason it keeps start the music battle... it's weird! I've also replaced the p0data2 and the AssemblyCSharp..so I really don't know! I've checked once, twice..I can check again..maybe I'm missing something but...

Ah, I knew I forgot something! A few pages back I was asking tirlititi about changing the music used in certain battle formations, and this was his response:

No, it's determined in a couple of .txt files of the "resources.assets" archive. The files are called "BtlEncountBGMMetaData.txt" (for battles on the field) and "WldBtlEncountBGMMetaData.txt" (for battles on the map).

{ "ID of Field": { "ID of Battle in the Field": "ID of Battle Music", ... }, ...}Battles have the music ID "0" (for normal encounters), "35" (for bosses) and "111" (for Hunter's Chance). Some battles are not registered in these files, when they don't stop the music played in the field (the "Don't Stop Music" battle flag is also checked for them in the "Enemy" panel).

Now what you have to do is open Hades Workshop, but instead of opening the FF9_Launcher the normal way, go to Tools -> Unity Assets Viewer, and open the Launcher there. Then go to Archive -> Shared Assets -> resources. Now scroll until you find the "BtlEncountBGMMetaData.txt" and export it (a text file will be generated in the HadesWorkshopAssets folder). Open this text file, the format is the one described by tirlititi. The list of field IDs is the same as in Hades Workshop when the fields are NOT sorted. In our case, Pandemonium laboratory is field ID 2705. There you will see that battle formation 896 is listed with a "0", which means normal battle theme. You'll have to delete the "896": "0" entry from this field, save, and then import this text file back into the Unity Assets Viewer by right-clicking the "BtlEncountBGMMetaData.txt" and chosing 'Import Selection'.

That should do the trick. Keep in mind that this will keep the field music playing at any time battle formation 896 is triggered, so maybe remove it as a random encounter from that location.

Every character has an ability list. I know how to swap abilities for others, but not all characters have the same number of abilities. So is therefore possible to give or add abilities to the list. What I want to know is how to do this. I want characters to learn abilities they normally don't have access to. I guess this requires some CIL code editing, but I haven't been able to find where it is.

Ah, I knew I forgot something! A few pages back I was asking tirlititi about changing the music used in certain battle formations, and this was his response:

Now what you have to do is open Hades Workshop, but instead of opening the FF9_Launcher the normal way, go to Tools -> Unity Assets Viewer, and open the Launcher there. Then go to Archive -> Shared Assets -> resources. Now scroll until you find the "BtlEncountBGMMetaData.txt" and export it (a text file will be generated in the HadesWorkshopAssets folder). Open this text file, the format is the one described by tirlititi. The list of field IDs is the same as in Hades Workshop when the fields are NOT sorted. In our case, Pandemonium laboratory is field ID 2705. There you will see that battle formation 896 is listed with a "0", which means normal battle theme. You'll have to delete the "896": "0" entry from this field, save, and then import this text file back into the Unity Assets Viewer by right-clicking the "BtlEncountBGMMetaData.txt" and chosing 'Import Selection'.

That should do the trick. Keep in mind that this will keep the field music playing at any time battle formation 896 is triggered, so maybe remove it as a random encounter from that location.

I have also another question if anyone can help.. there's somebody who knows in battle, how to make a model closing their eyes when KO and not look wierd/"creepy" like this?? Unfortunately this happens also when they're sleeping, faint etc etc on the normal field..but..why?

I have also another question if anyone can help.. there's somebody who knows in battle, how to make a model closing their eyes when KO and not look wierd/"creepy" like this?? Unfortunately this happens also when they're sleeping, faint etc etc on the normal field..but..why?

UV texture errors from upscaled NPCs textures and the like of p0data4.bin!. High res textures damage texture animation + UV on some objects for unknown reasons; I have the same issue with my model's 4096x4096 textures. Have not yet found a fix for this yet!.

UV texture errors from upscaled NPCs textures and the like of p0data4.bin!. High res textures damage texture animation + UV on some objects for unknown reasons; I have the same issue with my model's 4096x4096 textures. Have not yet found a fix for this yet!.

Guys sorry..I have another problem, and I hope someone of you can help me. Now I've added extra dialogs on Burmecia field, before Cleyra..but for some reason, when it goes on World Map it happens something like..that?

Guys sorry..I have another problem, and I hope someone of you can help me. Now I've added extra dialogs on Burmecia field, before Cleyra..but for some reason, when it goes on World Map it happens something like..that?

I've experienced this glitch on to many times!. Not sure what causes this to happen, but it certainly is affected by modifying or adding certain functions in certain fields of the game!. This happened also if done on Madain Sari Disc 2 after recruiting Amarant and heading to the Iifa Tree.

this.SubMenuPanel.transform.localScale = new Vector3(1.2f, 1.0f, 1.0f);This would go in the method "MainMenuUI::Awake" (at the beginning, that's fine). I am not sure if it will work though, as UI modding is not something I know a lot about (and some informations are stored in GameObject and Transform files in the archives level1 and level2). Try to play with the figures here if you see that it has an effect.

About the item limit in shops, I'm not sure of what is wrong... That might have been broken because of a Steam update a long time ago?Anyway, you can change the sold items in shops by modifying the C# code (using dnSpy). It's the field "FF9/ff9buy::_FF9Buy_Data" (it consists of a list of item IDs either of maximum size 32 or ended by the null item 255).

About the Android version, there are a lot of things in common, provided that you can unpack the .obb archives (I don't remember how to do that). For instance, the "sharedassets" archives (yes, that's archives inside other archives... I don't chose the rules) is in the folder "assets\bin\Data" and the engine's source code is in "assets\bin\Data\Managed\Assembly-CSharp.dll".There should also be "a0dataXXX.bin" equivalents of the Steam's "p0dataXXX.bin" somewhere... This prefix is "i" for iOS and I don't know if the PS4 and Switch versions have different formats.The class "AssetManagerUtil" shows how different versions are handled. I don't think that the difference between the platforms are so big, but they may be non-trivial.In any case, it would require some (a lot?) of work to mod the other versions, both for updating HW and for converting the non-PC games to suitable files.

About the list of abilities, all the characters have exactly the same number of (learnable spells + supporting abilities).The only way to add more spells (= active abilities) without changing a lot of the game's engine is to remove supporting abilities to counter-balance. It's in the "Party -> Stats" panel.

About modifying the animations, you should try using the Unity Assets Viewer: it allows to export animated 3D models (most of them are in the archive p0data4). Unfortunatly, re-importing a modified 3D model bugs and is hardly working at all. However, for modifying the animations only, it should be working. Follow the tutorial there and make sure that the option "Automatically Convert 3D Models -> Import Meshes/Materials" is disabled.

About the eyes animations (both for the characters and for the last battle's structure), it's a bugging feature of the Steam port. I don't know what happened but they apparently rewrote this part of the source code and it's not doing the same as the PSX version. I've no idea of how to fix it. There may also be a problem when the textures are upscaled, as Incinerator says (I've not done any test about that).

About the World Map bug, it's a bug of Hades Workshop, explained here. Sorry about that. The good thing is that it is fairly easy to fix (your mod files are not corrupted or anything).

About modifying the animations, you should try using the Unity Assets Viewer: it allows to export animated 3D models (most of them are in the archive p0data4). Unfortunatly, re-importing a modified 3D model bugs and is hardly working at all. However, for modifying the animations only, it should be working. Follow the tutorial there and make sure that the option "Automatically Convert 3D Models -> Import Meshes/Materials" is disabled.

Thank you very much for all your help. But unfortunately, I'm very clumsy in terms of modding. I have tried to do all what your told me (and what I have read in your previous posts) but without success... If you don't mind, could you tell me, step by step, how I could change Zidane's battle animation like his pose, attack and casting by any other character's? I mean, a guide for slow learners like me to follow. Thanks in advance and sorry for being an annoyance.

@eugene9: Ah, I didn't understand exactly what you wanted.I still don't really do. In most cases, you can't just "make someone uses someone else's animation". For instance, Zidane as a tail, not Steiner, so there's no way to use the animations of Zidane for someone who doesn't have a tail and vice versa... most of the time.

What you can try to do, using the Unity Assets Viewer:1) In Hades Workshop, open "Tools -> Unity Assets Viewer", then "File -> Open -> FF9_Launcher.exe",2) Then "Archive -> Streaming Assets -> p0data5" ; you should see a bunch of animation files appearing,3) Select the animation you want to replace (you can sort the list by the "File Name" to have them grouped by models or by "Infos" to have them grouped by animation name), then "Right click -> Export Selection",4) Select the animation by which you want to replace the previous one (let's call them A1 and A2: you want to replace A1 by A2) and "Right click -> Export Selection",5) In the folder of FF9, there should now be a folder called "HadesWorkshopAssets" that contain the two files you just exported,6) Copy A2 inside the folder of A1 and then rename it to replace it (give to A2 the name of A1),7) Back in the Unity Assets Viewer, select A1 and "Right click -> Import Selection",8‌) Done: the animation file has been replaced in the game's archive (if you have several copies of the game, the archive updated is the one corresponding to the "FF9_Launcher.exe" that you opened).

However, as I said, you will likely have bugs and non-working animations... But there might be a few animations that can be compatible with 3D models they were not meant for... if you're lucky.

@ToraCarol: You can put the "Freya follows Zidane" code in a new function with a high function code (let's say "Function Freya_20" if it doesn't exist already) and add the line "RunScriptAsync( 2, 255, 20 )" inside the "Freya_Init" function (replace 20 by your function code if needed).This way, it won't mess with the "Freya_Loop" function. The condition "IsMovementEnabled" in the code I showed should be enough to disable that feature during cutscenes.You may want to add a "return" line after the end of the "while ( 1 )" loop even though that shouldn't be problematic (I think I added a warning if there's no "return" or "loop" line when you parse).

@eugene9: Ah, I didn't understand exactly what you wanted.I still don't really do. In most cases, you can't just "make someone uses someone else's animation". For instance, Zidane as a tail, not Steiner, so there's no way to use the animations of Zidane for someone who doesn't have a tail and vice versa... most of the time.

What you can try to do, using the Unity Assets Viewer:1) In Hades Workshop, open "Tools -> Unity Assets Viewer", then "File -> Open -> FF9_Launcher.exe",2) Then "Archive -> Streaming Assets -> p0data5" ; you should see a bunch of animation files appearing,3) Select the animation you want to replace (you can sort the list by the "File Name" to have them grouped by models or by "Infos" to have them grouped by animation name), then "Right click -> Export Selection",4) Select the animation by which you want to replace the previous one (let's call them A1 and A2: you want to replace A1 by A2) and "Right click -> Export Selection",5) In the folder of FF9, there should now be a folder called "HadesWorkshopAssets" that contain the two files you just exported,6) Copy A2 inside the folder of A1 and then rename it to replace it (give to A2 the name of A1),7) Back in the Unity Assets Viewer, select A1 and "Right click -> Import Selection",8‌) Done: the animation file has been replaced in the game's archive (if you have several copies of the game, the archive updated is the one corresponding to the "FF9_Launcher.exe" that you opened).

However, as I said, you will likely have bugs and non-working animations... But there might be a few animations that can be compatible with 3D models they were not meant for... if you're lucky.

Sorry for being an annoyance, but the option "Import selection" remains unavailable even after I have renamed the archive the way you told me. I don't know what I'm doing wrong. Possibly... do I need to rename also the folder? Do I need to reload ("F5") the Unity Asser Viewer?

You must not have the game's files opened in the main frame of Hades Workshop (the tool should have poped up a warning about that).Close the main frame and the importation will get available.

Ooops! my bad!!! thank you for your help . And what about changing Zidane's model for his trance model?EDIT: I don't get animations working, everytime I try to swap characters' battle animation they remain in T pose.

@ToraCarol: You can put the "Freya follows Zidane" code in a new function with a high function code (let's say "Function Freya_20" if it doesn't exist already) and add the line "RunScriptAsync( 2, 255, 20 )" inside the "Freya_Init" function (replace 20 by your function code if needed).This way, it won't mess with the "Freya_Loop" function. The condition "IsMovementEnabled" in the code I showed should be enough to disable that feature during cutscenes.You may want to add a "return" line after the end of the "while ( 1 )" loop even though that shouldn't be problematic (I think I added a warning if there's no "return" or "loop" line when you parse).

Thank you as always, it works great! One last question for now about the "following" thing, when I'm going from one Field to another it happens that Zidane keeps to run through the new field as he have to do, but Freya, instead, stops suddenly and waits in that field (anyway she appears back in the new field, obviously) ..so, how can I do to let Freya follow Zidane? Hope I explained well

@eugene9: I warned you it wouldn't work for most animation swaps... Since the animation is not fitted to the model, no animation is played.

@ToraCarol: It's also the same "IsMovementEnabled" check. Since you don't have the control during the transition, the script stops.I would say, the best is to add this line in the field transition script ("RegionX_Range" most of the time):

if ((IsMovementEnabled == 0) && VAR_GlobBool_247) { InitWalk( ) Walk( GetFieldExitX, GetFieldExitY ) return}"VAR_GlobBool_247" is the last bit of the last global variable and thus is the least often used. It is not used in any script of Burmecia but it is used at some other place (in those places, one can use "VAR_GlobBool_0" because the first 8 bytes are always used for the placing of the objects (VAR_GlobInt16_0, etc...) but then it needs to be re-initialized to 0 in the "Main_Init" script after the placing of all the objects).

Ooops! my bad!!! thank you for your help . And what about changing Zidane's model for his trance model?EDIT: I don't get animations working, everytime I try to swap characters' battle animation they remain in T pose.

it sets all characters on trance model but can be edited with the provided .hws!.

First things first. Thank you all for your help and instructions! I'm very glad to see how supportive this community is . I know that mod, and I have used it. But the problem is that it sets all characters into their trance model, I only wnat it for Zidane. Evenmore, I don't know why, but when casting spells with that mod on, there is always a kind of shadow shilouette behind the spellcaster which looks quite weird.

it sets all characters on trance model but can be edited with the provided .hws!.

I don't suppose this could be used to add trance skins to Beatrix, Marcus, Blank and Cinna and an animation to change into them. Or, perhaps rather, allow them to have a "trance mode" without actually shifting to a new model.

As things are now, the game will crash if they are given a trance bar and it becomes full because the animation/skin is missing from those models.

And the only way I can think of a work around would be to edit the action for what happens when trance happens is so that instead of doing the animation to shift into their trance model, to make it so that all characters maybe just do their victory pose instead. So then none of the characters ever use their trance modes. I am not even sure if that would work, but I imagine it might.

And, honestly, not using the second skin for any of the characters is fine for me. Final Fantasy 7 didn't need its characters to mutate into weird super saiyajin versions of themselves for the round they had trance after all.

But-- still-- I might decide I want to try to make a trance skin for Marcus eventually if I can get him working without eliminating Eiko from the game.

Zidane (2 of them),Vivi,Dagger (4 of them),Steiner (2 of them),Quina,Eiko (2 of them),Freya,Amarant,Cinna,Marcus,Blank (2 of them),Beatrix,Zidane Trance (that's the 20th, at index 19 and there are 2 of them just like the regular),Vivi Trance,etc...up to Amarant Trance.Which makes a list of size 19 (regular) + 14 (trance) = 33 models.These are different model names but I think that they mostly use the same mesh files and the different names are meant to link to different animations (but I'm not sure, that's what I remember about). Anyway, the duplicates are because of the different fighting stances when using, for example, thief daggers or thief swords. Dagger also has her long/short hair versions.About Steiner, I think the difference has to do with a flag that can be activated in the "Battle" and "BattleEx" script codes, but it's a dummied feature and never actually used.

2) The methods "BattlePlayerCharacter::CreateTranceModel" and "btl_init::SetBattleModel" setup the models at the start of the battle. They create both a regular and a trance model/skin for those who have it and hide the trance version. The condition is simply "if ((int)(serialNumber + 19) < btl_init.model_id.Length) // add a trance version" for both methods.Note that there is a duplicate of the regular model list, "BattlePlayerCharacter::PlayerModelFileName" for some impractical reason. The lists used are thus:- "BattlePlayerCharacter::PlayerModelFileName" for the regular model and "btl_init::model_id" for its skin (geotexanim),- "btl_init::model_id" for the trance model and its skin.

3) When creating a trance model, the animations are entirely taken from the regular model so you don't need to care about it (but the trance model has to have exactly the same bone hierarchy as the regular one). I suppose that there is no problem in taking the same "geotexanim" as the regular one or even don't use geotexanim at all (I don't really see a texture animation on battle models, except the trance glowing but that's handled automatically elsewhere).

4) In HW's "Party -> Stats" panel, there's some setting to do in order to have a proper trance command.

5) Characters have a trance gauge if they are not setup with category "temporary character" in the script code initializing them ("SetCharacterData"). Also, trance gauge is disabled early game and for Dagger when she's depressed.

So, increasing the length of "btl_init::model_id" and setting the trance command should actually be enough to give a trance model.- Either use the exact same models as the regulars (ie. append "GEO_MAIN_B0_013", "GEO_MAIN_B0_014", "GEO_MAIN_B0_015", "GEO_MAIN_B0_016" and "GEO_MAIN_B0_017" to the list): the only difference will be the glowing,- Or use another existing model and the same bone hierarchy (the correspondances between "model name" and "model numerical ID" is in the dictionary "FF9BattleDB::GEO"),- Or find a way to import a workable new model with the right bone hierarchy and register it in both "FF9BattleDB::GEO" and "btl_init::model_id". I have been unsuccessful to import a workable model, as the files added to the archives require a lot of registering and linkage and I apparently miss some (I don't remember if I successfully imported a new texture with the Unity Assets Viewer...).

Tirlititi a new model being replaced/added is not limited to a certain poly amount right? I insured the model has the same bone hierarchy as original and model showed invisible in game!. My model has ~117289 polys. ~88790 without spline patches.