[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 very much for your answer to all my questions

ca my enlighten

a curious question

Are you Tirlititi the creator of Hades Workshop?

thank you very much
 
Thanks for your honesty
 
glad to meet you

at the moment I forgot a very important question

can Hades Workshop also extract sound files?
for example, sound when a character moves or a blow and weapon?

and thank you for your help and thanks in advance
 
@Kefka: No problem. Well done going this far (you did most of the job).
For the errors, they are caused by dnSpy but they are not problematic: you just need to write the type conversion yourself when these errors pop. For instance, if the line "byte x = 5;" gives an error, change it to this:
Code: [Select]

byte x = (byte)5;

It's sometimes a bit more complicated, like "byte x = intvalue1 + intvalue2;" in which case you must also add parentheses around what needs to be converted:
Code: [Select]

byte x = (byte)(intvalue1 + intvalue2);

What I personally do is that I create a .txt file in my mod's folder named after the class/method I edit and I put the code (and its modifications) in that file. This way, I only have to "Select All + Copy + Paste" when I change it (otherwise, I'd need to write these type conversions everytime because dnSpy doesn't register them after compilation).

For the Darkside and Lancer effects, you need to add the line after the "at_pow" variable is set (it's usually in the "Setup..." call but sometimes it's directly in the "case" code) and before it is used (again, it's usually in the "DoSetDamage..." but sometimes it's directly in the "case" code). So for Lancer and Darskide, you need to add "btl_calc.CalcSub_15E(cALC_VAR);" before that one:
Code: [Select]

if (cALC_VAR.at_pow - cALC_VAR.df_pow > 0)
Did it like you suggested, and after some playtesting I can confirm... it works like a charm now! I'm very pleased with the results, I've always liked the idea of such 'special conditions' within dungeons that force the player to stray from the standard fighting methods and think a bit outside the box. Oeil Vert was pretty good at that with its magic sealing, but Ipsen in vanilla was never all that spectacular. Now that it affects all damage formulas which somehow reference a weapon's attack power, this should make this portion of the game more interesting. Thanks again for your help!

dnSpy looks really promising I must say, from what can tell it should allow us to edit even those last bits of gameplay that Hades Workshop can't edit (yet). Just another quick question, if I want to make Flarestar hit always (it being unable to miss, that is), then I would simply have to delete the first 3 (or 4?) lines in its routine that deal with accuracy, right? This is Flare Star's formula from your document:

Code: [Select]
Code:
 case 99: // Flare Star            btl_calc.SetupAccuracyMagic(cALC_VAR);            btl_calc.ApplyShellAccuracy(cALC_VAR);            btl_calc.ApplyMultiTargetAccuracyPenalty(cALC_VAR);            if (btl_calc.CheckRawAccuracyEvasionMiss(cALC_VAR))            {                CALC_VAR expr_29D6 = cALC_VAR;                expr_29D6.tg_flags |= this.CALC_FLAG_MISS;                cALC_VAR.tg_hp = (short)(target.level * cmd.aa.Ref.power);            }            break;
I'm unsure about deleting the fourth line since it's the start of an 'if' condition. Basically I want Flarestar to behave much like regular attack magic, in that it shouldn't miss (and it misses A LOT in vanilla, as I'm sure you've noticed already).
 
@lyokoffx: Yes, HW can extract the sounds and musics (of the Steam version, not PSX) through the Unity Assets Viewer.
The musics are in the archive p0data61 and the other sounds are in the archives p0data62 and p0data63. I indexed the musics so the info box tells you which file corresponds to which music, but I didn't do it for the sounds, except for these battle sounds you're looking for. They are in the archive p0data62 (in the "Infos", you'll find descriptions like "soundeffect Battle Sound Knight Sword Slash" or "soundeffect Battle Sound Charge & Fist"...).

@Kefka: Exactly, dnSpy really deals with the source code of the game and you can change pretty much everything provided you spend enough time for it. For Flare Star's effect to never miss, you should indeed remove the lines related to accuracy, even the "if" block:
Code: [Select]
Code:
case 99: // Flare Star            cALC_VAR.tg_flags |= this.CALC_FLAG_MISS;            cALC_VAR.tg_hp = (short)(target.level * cmd.aa.Ref.power);            break;
Also, that's an error from my end: it shouldn't display "this.CALC_FLAG_MISS" but "this.CALC_TGFLAG_HP" instead, because that's not the "miss" flag that is turned on but the "deals damage to target" flag. I fixed it.
It's just a number "1" anyway inside the dnSpy code.

PS: Since the last HW update, you can select "Unused XXX" in the list of spell effects. This allows you to code a completely new spell effect (deals damage to the target and heals caster's MP, to give a random example) without replacing any other. You just need to add a "case XXX" to this method in dnSpy.
 
Last edited:
Thanks, you're the best! You really know the game's workings inside and out.

PS: Since the last HW update, you can select "Unused XXX" in the list of spell effects. This allows you to code a completely new spell effect (deals damage to the target and heals caster's MP, to give a random example) without replacing any other. You just need to add a "case XXX" to this method in dnSpy.
Now this part is certainly interesting, good to know! This opens up possibilities for up to 18 cool new attack types! I'll have to take my time to get some ideas. Hmm, maybe another MP damaging attack, but not as random as Hammer? Or perhaps a Gravity-type spell that uses current HP instead of max HP (like it does in most other FF games)... or maybe a spell that empties the trance gauge (is that possible? Just playing around with ideas)... Hmmm, I think this will be fun to play around with, hehe...
 
I still have a 2 question

1- can I also extract sprites from the "avatar" character? "the dialog box menu" all that is sprite 2d? PSX or steam?

2- and envirenment "alexendrie lindblum treno etc ..."

what is original format is what image2d or models 3d? PSX or steam?

And thank you in advance
 
1- Most of the UI sprites are in the archive "Shared -> sharedassets2". You'll find there the avatars ("Face Atlas"), the icons ("Icon Atlas"), the sprites for the dialog boxes ("Gray Atlas" and "Blue Atlas"), etc...
For the PSX version, there are a lot of these sprites (but far from everything) in the two first sections of the "Environment -> Texts" panel.

2- I don't really get what you are talking about. If it's about the fields' backgrounds, they can be previewed in the "Environment -> Fields" panel and exported as images (both individually and altogether using "Manage Backgrounds -> Export" or "File Batching -> Export Field Backgrounds").
It came to my attention that exporting the backgrounds with file batching crashes if you don't untick the field "Opening-for-FMV". You should look for it toward the top of the list (it's the 21st of the list) and untick it when using File Batching.

Backgrounds are a custom format specially for the game. Except for the image compression, it uses the same format in the PSX and Steam versions. They are mostly 2D but there is a notion of depth allowing it to exist in a 3D environment.
 
Hi tirlititi, I need your help again it seems. For some reason that I can't seem to figure out, when I add a new enemy to a battle, it doesn't perform any actions, even though its AI script is the same as in its original battle.

When I tried adding an enemy from one battle to another, I followed all the steps you posted on page 25:

I copy-pasted the enemy and its attacks from its original battle, and I kept the order of first having all attacks from the first enemy, then all attacks from the (newly added) second enemy.

Then I changed the default attack and made sure that the Animations field of each attack uses the proper enemy.

I added the new enemy to a group and wrote a very basic AI script (and to make sure that the AI script works, I've also used it in the enemies' original battle, and there it works flawlessly). The init_function is just a simple "return", but that should be fine, right? Here's the ATB function for your information:

Code: [Select]
Code:
    if ( !VAR_LocUInt8_31 ) {        set VAR_LocUInt8_31 = 1        if ( GetRandom & 1 ) {            set #( SV_Target = SV_FunctionEnemy )            Attack( 8 )            return        }    }    switch 4 ( GetRandom % 4 ) from 0 {    case +0:        set #( SV_Target = RandomInTeam(SV_PlayerTeam) )        Attack( 3 )        break    case +1:        set #( SV_Target = RandomInTeam(SV_PlayerTeam) )        Attack( 4 )        break    case +2:        set #( SV_Target = RandomInTeam(SV_PlayerTeam) )        Attack( 5 )        break    case +3:        set #( SV_Target = RandomInTeam(SV_PlayerTeam) )        Attack( 6 )        break    }    return
Now to sum it up: the battle loads correctly and the new enemy is there, but it doesn't do anything (the other enemies that were in this battle by default attack like normal).

One thing I've noticed though: I've added another Entry for the enemy via "Edit Entries" to have a second "Object" (entry type 2) entry, but when I open that same hsw file later the entry is changed to "Unknown" (entry type 255). Have you ever witnessed something similar?
 
Hum... This entry type turning to 255 is strange.
Your script should be fine. Did you put an "allocate 32" or higher? Since you're using a variable uint8_31, you need to allocate at least 32 bytes to local variables ; anyway even without, it should do something.
Maybe your new enemy has the flag "Link" in the "Group" datas, in which case you should remove it.
Or maybe you forgot to add a "InitObject" in the Main_Init function?
 
I've just checked again to make sure: the new enemy has his InitObject in the Main function, and the enemy is not linked. Maybe I'll tweak the AI a bit more and see if I can solve it.

Or could you perhaps take a quick look at my hws file if you have time? I'm sure you can see any potential mistakes better than me.
 
Yes, I can try to take a look at your .hws file (on this week-end, surely).
Maybe you can write this in your new enemy's "loop" function:
Code: [Select]
Code:
SetTextVariable(0, FirstOf(SV_FunctionEnemy[ATB]))BattleDialog( X )Wait( 1 )loop
...where the battle dialog X is a "[NUMB=0]" message. You should at least see if the loop function runs and if the enemy's ATB fills up.
 
Great, thanks a lot for your help! I've uploaded my hws file to Drop Box here:

https://www.dropbox.com/s/dbewj4ygzf4k67o/FF9 Steam Enemies.hws?dl=0

The enemy in question is Ring Leader which I've packed into the same battle along Hecteyes in Terra.

Also, I've tried your loop function and the display of a battle message works fine. So I wonder why the enemy doesn't act even though its ATB bar apparently works correctly. Hmm...
 
Thank you very much for your famous help

1 - the steam sprite is set I have it all back thank you very much

but the version of psx I find that the weapon



and the sprite "avatar" "dialog box" etc ... I have not found (for the PSX version) yet?

2- for funds that's exactly what I'm looking for but I want to know something

for export I do not have this box "Opening-for-FMV"

I have these 3case to uncheck



and when I'm doing my checkbox combination, I sometimes find myself in a 50MB file and in addition it lacks background details

and here I have two boxes



and I want to know the difference between "export" and "Batching"?


and not who can not say that name "Opening-for-FMV"

and thanks for everything and thanks in advance
 
@Kefka: So, you are definitely doing something wrong (or maybe there was a bug in a previous version of HW and I don't remember fixing it and you are still using that old version of HW).

In your .hws file, there was no script update at all. There was only an unconfigured "Abadon + Amdusias" battle and 4 unconfigured "Hecteyes + Ring Leader" battles. When I say "unconfigured", it means that there was no entry added for the new enemy and no change in the "Main_Init" function. The enemy's stats and attacks were properly copied to the new battle and the group was properly setup. However, there was no proper script for him and it lacked its battle animations for some reason.

So you need:
- To do the steps 6) and 7) described there. Maybe you did on your end but shared an old .hws because none of these steps were put in the file you provided (and it cannot just be a bug with the entry: even your "Main_Init" function was not modified).
- To add the animations required to cast spells. The Ring Leader only uses 3 animations: select him, click on "Edit Resources", then "Add Animation" x3 and change them to "Cast Init", "Cast Loop" and "Cast End". Alternatively, changing the enemy's model ID to something else and switching it back will reset the resources (and thus automatically add these 3 animations).

After this fix, it was all good on my end. However, the other battles were you added more enemies (you have battles with 4 Ring Leaders) are not working correctly because you didn't add any "InitObject" line in those battles' script either.

@lyokoffx:
1- For the PSX version, HW can't show these "avatar" and "dialog box" images indeed. I don't know if I will ever add them. I think that one of Zidane_2's tools can extract all the images of the game though... But they are not easy to use.

2- I didn't understand all of your question, but "File Batching -> Export Field Backgrounds" and "Manage Background -> Export" are nearly the same.
In "Manage Background -> Export", you can preview what you will export and choose if you want to export only the selected layers (if you export all the layers, you will see all the frames of the windmills' wings on top of each others).
In "File Batching -> Export Field Backgrounds", you can export quickly a large number of backgrounds.

Apparently, the latest versions of HW have some problem with the PSX japanese version of the game, because you should have the names of the fields instead of those "0000000000..." things. You should go to "File -> Preferences -> PSX -> Charmap -> Japanese" when using the PSX japanese version of the game in order to display texts properly.

"Opening-for-FMV" is the name of one field (it's an empty field that is the first one to be used when the player hits "New Game" and its main purpose is to launch the opening FMV before switching to the "Prima Vista/Cargo Room").
 
Last edited:
I thank you very much for your help and I am very sorry for my spelling because I am weak in English

and I see that I find my repency easily with you

1- apparently this is the case when I disable "Opening-For FMV" the export takes place without Crash and I have consider that it is a parameter like "Merge Tilestes" or "Sort Tileset by Depth" or " Exprort Selected Only " and that was not the case Thank you so much for this information I would say as a problem resolut

it remains this little concern from the question I want to know is "Merge Tilestes" and "Sort Tileset by Depth" when it is deactivate the tiff file is very inflate in this weight has 50.8 MB I want to know why?


2- and a very impressive qestion is it that exsists a tool such as Zidane_2 to extract the sound of the weapon? because they are difernate from the Steam version


3- I do not have "Charmap" here


and they have corrected in some section but not in English but in "field" I try with "japanese" but it remains on -> ("000000000 ..." in the section "field")


4- another very important question I now have the "model3D" and the other resource that you helped me to extract


and I decide to create my games FF9 But on "PSX"

is the models3D of steam compible for a game with a real compilation engine that reads in a real PSX that link that I discovered a long time ago? http://www.psxdev.net/

or is it worth it in "Hades Workshop"?


5- Can you explain to me how it works the notion of depth for a 3D effect for the interaction between the model3d and the backgrounds?

for now I'm trying to learn unity3D thanks to these models

or tell me a video that uses the same notion in unity3D ?


for now I'm learning the basics of video games After at least it would be easier to do it under PSX


and thanks for everything and thanks in advance
 
1- You know that the backgrounds are made with several layers, right? "Merge tilesets" puts everything in a single layer so it decreases the .tiff file a lot. On the other hand, if you don't merge them, you have all the layers and animation frames available in the image file.
"Exporte selected only" will only export the layers (= tileset) that are ticked in the background preview.
"Sort by depth" changes the layers' order in the exported .tiff. By default, the layers are exported with their internal data order, but it won't always display well (because some layers that should be behind are placed on the front when this option is not used).

2- No, I don't know the format of the PSX sounds and Zidane_2 didn't work on it, for what I know.

3- Yes, that was "Game Alphabet", not "Charmap", sorry ^^'
The "000000..." names are a bug. I would fix it eventually but I am on a break regarding the development of HW.

4- I don't know this PSX development kit. There doesn't seem to be a 3D engine included in this kit (there's a project of a 3D game and the guy developped his own 3D engine). So Steam 3D models are not usable and even using the PSX models would not be usable as it is.
But in general, if you have models in one format, it shouldn't be a big wall to have compatibility or to do format conversion. That really doesn't seem to be the hardest part of the work.

5- Satoh explained it very nicely there (and in the following post) and Lein even showed a picture of a similar situation. You can see that the backgrounds are pictures splitted in several layers, some of them being in front and some in the back.
 
I thank you very much for your help you enlighten me with this information

1- ah good there is animation of these tif 50mo I open with photochop there is only one layer and unity and I can not find any animation or it can run these animation?

yes I know that these images are composed of several layers to play their animtion

a small question in this point to facilitate my task what are the box to check and uncheck to detach the ground as a ".tif " independently to move the character 3D background image to reutiliser for a simulation 3d ?

5- and thank you so much for the link

I just used the tools Zidane_2_Tools but I can not extract anything from my file FF9.IMG extracted under a virtual drive here is my example under cmd

Code: [Select]
Code:
ffix_img_extr.exe <C:\Users\PC\Desktop\Nouveau dossier> <C:\Users\SonyNintendo\Desktop\Nouveau dossier\Nouveau dossier>ffix_img_extr.exe <C:\Users\PC\Desktop\Nouveau dossier> <C:\Users\SonyNintendo\Desktop\Nouveau dossier\Nouveau dossier/>FF9_img_extractor.exe C:\Users\PC\Desktop\Nouveau dossier C:\Users\SonyNintendo\Desktop\Nouveau dossier\Nouveau dossier/FF9_img_extractor.exe C:\Users\PC\Desktop\Nouveau dossier C:\Users\SonyNintendo\Desktop\Nouveau dossier\Nouveau dossierffix_img_extr.exe (<C:\Users\PC\Desktop\Nouveau dossier/to/ff9.im> <C:\Users\SonyNintendo\Desktop\Nouveau dossier\Nouveau dossier/to/extract>)ffix_img_extr.exe C:\Users\PC\Desktop\Nouveau dossier/to/ff9.im> C:\Users\SonyNintendo\Desktop\Nouveau dossier\Nouveau dossier/to/extract>ffix_img_extr.exe <C:\Users\PC\Desktop\Nouveau dossier/to/ff9.im> <C:\Users\SonyNintendo\Desktop\Nouveau dossier\Nouveau dossier/to/extract>
3- It's worthless for your effort I hope you correct this

4- thank you very much for this information I did not know that there is a 3d engine with this SDK and the idea also for the conversion of models

and thanks for everything and thanks in advance
 
1- Ah, so photoshop does not feature multi-layer tiffs...
You can use Gimp (it's a free image tool) to open the tiff layers and export them in another format, but I don't know which one would be suitable for it.
I don't understand what you want to do with the backgrounds... You can, in the "Manage Background" window, untick all the tilesets except for the main one (usually the last) and export it using the option "Export Selected Only" (the two other options are not important in this situation).

5- In command lines, you need to write the paths inside quotes when there are spaces, so it would be something like this:
Code: [Select]
Code:
ffix_img_extr.exe "C:\Users\PC\Desktop\Nouveau dossier\ff9.img" "C:\Users\SonyNintendo\Desktop\Nouveau dossier"
If you don't have a ff9.img file but only a .bin, you need to use a tool (like CDmage) to extract the .img out of the .bin (Zidane_2's tools is always using the .img).
 
Status
Not open for further replies.
Back
Top