[PSX/PC] General editor - Hades Workshop (0.50b)

  • Thread starter Thread starter Tirlititi
  • Start date Start date
Status
Not open for further replies.
Thank you for all the kind replies (and the patience too) I'll give a check and, as always, let you know!

UPDATE

What about change font on Steam? Is it possible?
 
Last edited:
Tirlititi-- Please help me.
I change the values as shown but the stats problem does not change at all in the menu that follows

Is Vivi base level 23
RsnExl9.png


Spirit not change
1TKNHaa.png


Magic and Spirit not change
h2UBYqC.png


They need something other than the value you tell me to make it work well in the menus?
Thanx you so much

Just other one question is possible add search for you tool section Cil code or a file that explains the place to change the function  of the game
Because it's not easy to find what you're looking for ....
 
@ToraCarol: Albeoris's Memoria tool is able to change the text font of the game easily, but it's incompatible with HW right now.
But apparently, the tool dnSpy allows to edit the Assembly-CSharp.dll by changing the C# code, which is just as great. You can change the font by replacing the declaration of the variable "defaultFont", in the "EncryptFontManager" class, by this:
Code: [Select]
Code:
public static Font defaultFont = Font.CreateDynamicFontFromOSFont( "Arial" , 16 );
"Arial" is the font name and "16" is the font size (you can change them to your convenience).
Here's a list of fonts you can use.

@Tedrainbow: I don't really understand.
First of all, this red light is not part of your problem, right?
Then, changing the primary stats bonuses in the "Items" panel should be enough ; there's nothing else to do to mod the items primary stat boosts (the only thing is that they use "Stat Sets" and modding the stats boosts of 1 equipment can have an impact on other equipments if you're not careful).
It was working fine a couple of HW versions ago, and I didn't touch that part of the tool, so I guess you're doing it wrong. But if you can't fix it, I'll have a look.

About CIL code, I'm not planning to add nor to fix anything from these panels. I know that they are useful for plenty of things that people generally want to mod, but these panels were added more like a precarious feature waiting for something more convenient.
As said, it looks like dnSpy should be a better solution right now (I didn't test it yet but I'm definitelly interested in that).
 
it's about max stats in the menu.
I have change Dex,Spirit 50 to 99 and strengh, magic 99 to 125
But this is not the display of others stats.

I can not, generate the solution use you Hades-Workshop-master
 
Last edited:
@ToraCarol: Albeoris's Memoria tool is able to change the text font of the game easily, but it's incompatible with HW right now.
But apparently, the tool dnSpy allows to edit the Assembly-CSharp.dll by changing the C# code, which is just as great. You can change the font by replacing the declaration of the variable "defaultFont", in the "EncryptFontManager" class, by this:

Code: [Select]
Code:
public static Font defaultFont = Font.CreateDynamicFontFromOSFont( "Arial" , 16 );
"Arial" is the font name and "16" is the font size (you can change them to your convenience).
Here's a list of fonts you can use.
Thank you very much for the help! I'll take a look!

I've changed sucessfuly the Face Atlas, so I wanted to try with IconAtlas too..buttt.... but theres a little problem.. even if I did the whole set in trasparency, when I import it in the game it didn't read it, and the background of all the new iconset is white.. you know why? ???

Little ps: No MIPS editing and/or move other characters than Zidane aviable for Steam.. right? Bad luck, I wanted to do something like Final Fantasy V, you know..  moving characters corresponding to the first party member (it's not necessary, but I just wanted to know your opinion about this thing)
 
Last edited:
@Tedrainbow: Hum ok, it's been a while since you asked and I thought you did that already.
So, apparently, what I described before only allows your stat growth to break the limit, but the limit still applies for equipment stat boost.
So, you need to also change the method "ff9play::FF9_GetSkill". Near the 4/5 of the method, you'll find lines like these:
Code: [Select]
Code:
ldfld 0x40008AD // FF9PLAY_SKILL::Baseldloc.0ldelem.u1ldloc.s 6ldloc.0ldelem.u1ble IL_0328ldarg.1ldind.refldfld 0x40008AD // FF9PLAY_SKILL::Base
Just replace the line "ble IL_0328" by "br IL_0328" and it should remove the limit totally.
It is not easy to choose the limit yourself by CIL code editing because the limit is stored in an unreachable array ("<PrivateImplementationDetails>::$$field-545").
In practice, it will then be that the base stats are limited (by whatever limit you want) and the equipment stat boosts can still increase that limit a bit.

@Tedrainbow: Maybe you import the atlas file in a RGB format (Alpha channel, ie. transparency is not imported). In the Unity Assets Viewer's image options, you can choose the "RGBA" compression method to be sure to import the image without compression and with its transparency. If I remember correctly, the DXT5 compression method can use about 4 shades of transparency.

MIPS is the assembly language of the PSX. It doesn't exist anymore in the Steam version and is replaced by CIL code.
It is possible to move other characters than Zidane (actually, you just need to use the script code "DefinePlayerCharacter()" in another entry than Zidane's entry) but you'd need to script all the animations that come with that. Zidane can have an interaction with a lot of stuff through the game and sometimes has specific animations for these interactions that other characters just don't have.
This has nothing to do with MIPS but with Field scripts, by the way.
 
Ok but my code is.

Code: [Select]
Code:
ldfld 0x40009E2 // FF9PLAY_SKILL::Baseldloc.0ldelem.u1ldloc.s 6ldloc.0ldelem.u1ble IL_0328ldarg.1ldind.refldfld 0x40009E2 // FF9PLAY_SKILL::Base
Just replace the line "ble IL_0328" by "br IL_0328 and correct ?

if i do that, the image at the start of the game is freezes and then nothing to do .

4Ckk4ij.png
 
Last edited:
@Tedrainbow: Maybe you import the atlas file in a RGB format (Alpha channel, ie. transparency is not imported). In the Unity Assets Viewer's image options, you can choose the "RGBA" compression method to be sure to import the image without compression and with its transparency. If I remember correctly, the DXT5 compression method can use about 4 shades of transparency.

MIPS is the assembly language of the PSX. It doesn't exist anymore in the Steam version and is replaced by CIL code.
It is possible to move other characters than Zidane (actually, you just need to use the script code "DefinePlayerCharacter()" in another entry than Zidane's entry) but you'd need to script all the animations that come with that. Zidane can have an interaction with a lot of stuff through the game and sometimes has specific animations for these interactions that other characters just don't have.
This has nothing to do with MIPS but with Field scripts, by the way.
Ah-ha! So that's it! Thanks a bunch Tirlititi I give a try! And thank you for all the informations, I really didn't know; maybe I can give a shot just for Memoria and Crystal World, there are not alot of interactions requiered, except for "Jump", I guess..  :)

Let me know a thing.. what about if I want to add Lanì as a bonus character in the team (you know, you talk to her in Madain Sari and she decide to join your party) I don't mind to add her in cutscenes, just a playable characters in battles and stuff! ;D
 
Last edited:
And, sorry..another question how can I allow Blank to active the Support Abilities?

UPDATE:

No worries, I guess is solved is "CIL Code" -> "Macros", "Unlock Ability Learning" right?
 
Last edited:
Ah-ha! So that's it! Thanks a bunch Tirlititi I give a try! And thank you for all the informations, I really didn't know; maybe I can give a shot just for Memoria and Crystal World, there are not alot of interactions requiered, except for "Jump", I guess..  :)

Let me know a thing.. what about if I want to add Lanì as a bonus character in the team (you know, you talk to her in Madain Sari and she decide to join your party) I don't mind to add her in cutscenes, just a playable characters in battles and stuff! ;D
Currently not possible as of right now, no character party data for Lani; but here’s a broader thought to get the ball rolling!:

1. Find a current character to replace (you’ll use as Lani) (Be it maybe: Blank/Marcus/Cinna
(Battle model only)
2. Design a portrait for Lani.

3. Model swap her model with said character (when it becomes workable).

4. Init the character from the script accordingly.

Best way to go about seeeing Lani as a bonus character; I have a similar set up with Nyx Ulric.
 
Currently not possible as of right now, no character party data for Lani; but here’s a broader thought to get the ball rolling!:

1. Find a current character to replace (you’ll use as Lani) (Be it maybe: Blank/Marcus/Cinna
(Battle model only)
2. Design a portrait for Lani.

3. Model swap her model with said character (when it becomes workable).

4. Init the character from the script accordingly.

Best way to go about seeeing Lani as a bonus character; I have a similar set up with Nyx Ulric.
Hey thank you! This sound a good Idea! I can try swapping with Beatrix, maybe... but, how do I do exactly? Could you give me a little example with screenshots (you know I really don't want to mess something x''3) Can be the risk that can swaps of default for the entire game? (I mean, for Example, when Beatrix fight with Steiner, In that case I still have Beatrix or I'll total swap her with Lanì?)
 
Last edited:
Hey thank you! This sound a good Idea! I can try swapping with Beatrix, maybe... but, how do I do exactly? Could you give me a little example with screenshots (you know I really don't want to mess something x''3) Can be the risk that can swaps of default for the entire game? (I mean, for Example, when Beatrix fight with Steiner, In that case I still have Beatrix or I'll total swap her with Lanì?)
That’s why I suggested: Blank, Cinna or Marcus. Yes if you model swap Beatrix it will affect scenes with Beatrix as a whole; except the battles against her, as that uses a different model. But to remain on the sure side, select between the tantalus troupe.
The model importer is in Hades workshop’s unity assets viewer. Explore archive p0data4.bin and locate Lani, export first, find said character to be replaced main model internal file name. Rename Lani’s file accordingly. But model swapping characters/importing new doesn’t work yet. It does not crash hades workshop, but it does crash in game.

Pardon, I must also note: replace any characters, be it even Blank/Cinna/Marcus, requires script editing elsewhere, otherwise, you may encounter unwanted entries during the game. Lani fighting on the theater stage and many more like scenarios to be thought out prior to. Unless such really is desired and in that case: go for it! By all means!
 
Last edited:
That’s why I suggested: Blank, Cinna or Marcus. Yes if you model swap Beatrix it will affect scenes with Beatrix as a whole; except the battles against her, as that uses a different model. But to remain on the sure side, select between the tantalus troupe.
The model importer is in Hades workshop’s unity assets viewer. Explore archive p0data4.bin and locate Lani, export first, find said character to be replaced main model internal file name. Rename Lani’s file accordingly. But model swapping characters/importing new doesn’t work yet. It does not crash hades workshop, but it does crash in game.

Pardon, I must also note: replace any characters, be it even Blank/Cinna/Marcus, requires script editing elsewhere, otherwise, you may encounter unwanted entries during the game. Lani fighting on the theater stage and many more like scenarios to be thought out prior to. Unless such really is desired and in that case: go for it! By all means!
I guess I can try with Cinna, I think is the best choice, he does not fight alot. ;)

But model swapping characters/importing new doesn’t work yet. It does not crash hades workshop, but it does crash in game.
What do you mean exactly?

The model importer is in Hades workshop’s unity assets viewer. Explore archive p0data4.bin and locate Lani, export first, find said character to be replaced main model internal file name.
Sorry but, this is really my very first time, I need a Step by Step.. So, I exported the model of Lani (368) and Cinna (661) to understand which is who, but...what now? I mean,when I replace the model, how do I distinguish them to the "battle" one and the "field" one ( I mean, the one used for cutscenes etc)

And if I want to add the "Victory pose" (using an animation of her already in) how do I do? 

I know the animations are at p0data5 but..how do I distinguish the animations of the battles? For example "Animation xxx of the model Battle Cinna"

Please, if you can give all the names and fuctions I need for both Cinna and Lani I'll be so grateful, for now I'm searching all the animations by myself but it's quite hard x''
 
Last edited:
UPDATE:

Sorry to bother again, you guys but I have a little big problem...so, I'm trying to add Blank in the Scene of Ipsen Castle, and the first part works well, for the second I have a little problem.. I haven't added him yet in the field ( I need to know how it works, because it's not related to the party in this case) so the last variable I did is "Blank_16" (he speaks to Zidane, after Steiner) so I terminated the enter in the Main_25

So WHY Zidane reacts like this???  :'( :'( :'(

nmPpEPX.jpg


The animation works fine, but in the end, whe he says he goes to look for Amarant, it starts to lagging and I don't know why his animation (when he runs on the stairs) is..uhm, quite strange? I mean he's not runnig he's moving in a strange way like if his "freezing" but the model wants to move on the stairs anyway.. I don't know if I explained
 
UPDATE:

Sorry to bother again, you guys but I have a little big problem...so, I'm trying to add Blank in the Scene of Ipsen Castle, and the first part works well, for the second I have a little problem.. I haven't added him yet in the field ( I need to know how it works, because it's not related to the party in this case) so the last variable I did is "Blank_16" (he speaks to Zidane, after Steiner) so I terminated the enter in the Main_25
Perhaps showing the script functions you have for Blank_16, hard to tell what's up or down, without it.
And what exactly did you terminate in function Main_25? Which doesn't sound right either way.
 
Perhaps showing the script functions you have for Blank_16, hard to tell what's up or down, without it.
And what exactly did you terminate in function Main_25? Which doesn't sound right either way.
Hah, yup... sorry

RhsvVi5.png



That's it. Those are the only things I edited on this field.. maybe I was wrong with something...  :-[
 
Tirititi- It is possible add one new NPC which learn add bonus Attack, Defense, Evade, Magic Defense or Magic Evade for equals 10,000 Gils?

Example: Bonus +1 for first one stat equals 10,000 Gils and for each addition of 1 stat one for the same person, add 10,000 multiple Gils to the total number of bonuses add to the character

Example of ten bonus is cost.
10,000 + 20,000 + 30,000 + 40,000 + 50,000 + 60,000 + 70,000 + 80,000 + 90,000 + 100,000 is TOTAL 550,000 Gils

Example Vivi bonus add ...
+1 Attack, + 2 Defense, +1 Evade, +4 Magic Defense, +2 Magic Evade

But the max bonus is 50 for one character.
Total max Gils --)  12 570 000 X 8 = 100 560 000 millions gils. 

It is possible ?

Thanx so much..
 
Last edited:
Hah, yup... sorry
That's it. Those are the only things I edited on this field.. maybe I was wrong with something...  :-[
Alright, I just looked at script: Main_25 in field: Ipsen's Castle/Entrance. I ask, do you have Beatrix in this scene as well? I see a TerminateEntry(13) on your screenshot there.
Also in function: Main_Init/case: 10560, I see there isn't an InitObject( 6, 0 ) (which ought to be Vivi's Init), that maybe an area of issue there, must test. I'm assuming: InitObject( 1, 0 ) is Entry_Blank...
My initial guess from here would be to add Blank to the scene much as Beatrix is added to this scene in Alternate Fantasy; a variable. You might be able to get around adding his entry right below hers.
Example:

In case: 10560 of function: Main_Init

Code: [Select]
Code:
        if ( VARL_GenBool_7173 ) {            InitObject( 13, 0 ) // Beatrix Initiate            InitObject( 1, 0 ) // Blank Initiate        }
Main_25 function:
Code: [Select]
Code:
Function Main_25    TerminateEntry( 6 )    TerminateEntry( 8 )    TerminateEntry( 7 )    TerminateEntry( 11 )    TerminateEntry( 9 )    TerminateEntry( 10 )    TerminateEntry( 12 )    if ( VARL_GenBool_7173 ) {        TerminateEntry( 13 ) // Terminate Entry_Beatrix        TerminateEntry( 1 ) // Terminate Entry_Blank    }    return
If you don't want Beatrix in this scene, remove her functions from said above.

Tirititi- It is possible add one new NPC which learn add bonus Attack, Defense, Evade, Magic Defense or Magic Evade for equals 10,000 Gils?

It is possible ?

Thanx so much..
If I'm hearing this correctly, (Tirlititi to confirm) you're asking if it's possible for an NPC to grant a character some Magic Defense, Attack power, etc. stat increase for the price of 10,000 Gil.
If true, I'd believed the answer is no, it's not possible to do that. Simply speculating here, Attack, Defense and the like can only be raised with equipment related datas.
Also Gil, be it, receiving gil, prices & costs, much like EXP cannot exceed a value of 65535.
 
Last edited:
Alright, I just looked at script: Main_25 in field: Ipsen's Castle/Entrance. I ask, do you have Beatrix in this scene as well? I see a TerminateEntry(13) on your screenshot there.
Also in function: Main_Init/case: 10560, I see there isn't an InitObject( 6, 0 ) (which ought to be Vivi's Init), that maybe an area of issue there, must test. I'm assuming: InitObject( 1, 0 ) is Entry_Blank...
My initial guess from here would be to add Blank to the scene much as Beatrix is added to this scene in Alternate Fantasy; a variable. You might be able to get around adding his entry right below hers.
Example:

In case: 10560 of function: Main_Init

Code: [Select]
Code:
        if ( VARL_GenBool_7173 ) {            InitObject( 13, 0 ) // Beatrix Initiate            InitObject( 1, 0 ) // Blank Initiate        }
Main_25 function:
Code: [Select]
Code:
Function Main_25    TerminateEntry( 6 )    TerminateEntry( 8 )    TerminateEntry( 7 )    TerminateEntry( 11 )    TerminateEntry( 9 )    TerminateEntry( 10 )    TerminateEntry( 12 )    if ( VARL_GenBool_7173 ) {        TerminateEntry( 13 ) // Terminate Entry_Beatrix        TerminateEntry( 1 ) // Terminate Entry_Blank    }    return
If you don't want Beatrix in this scene, remove her functions from said above.
Thank you Incinerator, when I'm home I give a try!

About the model swap, to distinguish the battle model from the other I have to open it with a 3d program, or else?

And the animations? I can try to looking for all the animations, but you know is there's a particular way to show the preview? Maybe the same program for open models?

You know I don't want to go wrong with something when I'll try to swap Lani and Cinna :P

UPDATE: Mmh, maybe I figured how to distinguish the battle model, in the Field there's "Set Model" and the number, so the other one is the battle model..right?
 
Last edited:
Thank you Incinerator, when I'm home I give a try!
Mhmh..nope, nothing changed.. :oops:

ps: InitObject (13 0) is Amarant, Vivi is InitObject (7,0) in my case.
 
Last edited:
Status
Not open for further replies.
Back
Top