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

  • Thread starter Thread starter Tirlititi
  • Start date Start date
Status
Not open for further replies.
Is there any version of Hades Workshop that the Background editor works on the psx version of the game?
 
No, Gledson999. Hades Workshop cannot increase the file size of the PSX version, so using custom backgrounds can't be done and will most likely never be possible for the PSX version.
 
No, Gledson999. Hades Workshop cannot increase the file size of the PSX version, so using custom backgrounds can't be done and will most likely never be possible for the PSX version.
I understood, I wanted to translate some city names in my translation, which are those names when we enter somewhere for the first time in some city/location, like Chocobo's Forest, Gizamaluke Grottos... and insert back using the same palette and the same size.

cbIqNEM.png


ukJv34k.png
 
@Tirlititi I'm wanting to add one more item to the moogle exchange point menu in the Chocobo Forest, I did the following by adding one more line to "Function Moogle_Male_64"

Code: [Select]
Code:
Function Moogle_Male_64    switch 3 ( Chocobo_CurrentField ) from 1 {    case +0:        SetTextVariable( 2, Chocobo_ForestHighScore )        SetTextVariable( 3, Chocobo_ForestGamePlayed )        break    case +1:        SetTextVariable( 2, Chocobo_LagoonHighScore )        SetTextVariable( 3, Chocobo_LagoonGamePlayed )        break    case +2:        SetTextVariable( 2, Chocobo_GardenHighScore )        SetTextVariable( 3, Chocobo_GardenGamePlayed )    }    SetTextVariable( 5, ( Chocobo_ForestGamePlayed + Chocobo_LagoonGamePlayed ) + Chocobo_GardenGamePlayed )    SetTextVariable( 4, Chocobo_HotColdPoints )    if ( Chocobo_Lv99 == 0 ) {        WindowSync( 7, 128, 240 )    } else {        WindowSync( 7, 128, 243 )    }    if ( GetDialogChoice == 0 ) {        set VAR_LocUInt16_9 = 0        set VAR_LocUInt8_2 = 8        EnableDialogChoices( 511, VAR_LocUInt8_2 )        WindowAsync( 6, 4, 246 )        while ( VAR_LocUInt16_9 < 1 ) {            set VAR_LocInt8_29 = 1            EnableDialogChoices( 511, VAR_LocUInt8_2 )            SetTextVariable( 4, Chocobo_HotColdPoints )            set VAR_LocInt8_30 = 0            while ( VAR_LocInt8_30 < 1 ) {                if ( IsButton(655360L) ) {                    set VAR_LocInt8_30 = 1                }                Wait( 1 )            }            switch 9 ( GetDialogChoice ) from 0 {            case +0:                if ( ( Chocobo_HotColdPoints >= 10000 ) && ( GetItemCount(175) < 99 ) ) {                    set Chocobo_HotColdPoints -= 10000                    AddItem( 175, 1 )                    set VAR_LocInt8_29 = 0                }                set VAR_LocUInt8_2 = 0                break            case +1:                if ( ( Chocobo_HotColdPoints >= 8500 ) && ( GetItemCount(209) < 99 ) ) {                    set Chocobo_HotColdPoints -= 8500                    AddItem( 209, 1 )                    set VAR_LocInt8_29 = 0                }                set VAR_LocUInt8_2 = 1                break            case +2:                if ( ( Chocobo_HotColdPoints >= 3500 ) && ( GetItemCount(87) < 99 ) ) {                    set Chocobo_HotColdPoints -= 3500                    AddItem( 87, 1 )                    set VAR_LocInt8_29 = 0                }                set VAR_LocUInt8_2 = 2                break            case +3:                if ( ( Chocobo_HotColdPoints >= 1800 ) && ( GetCardAmount < 100 ) ) {                    set Chocobo_HotColdPoints -= 1800                    AddItem( 599, 1 )                    set VAR_LocInt8_29 = 0                }                set VAR_LocUInt8_2 = 3                break            case +4:                if ( ( Chocobo_HotColdPoints >= 450 ) && ( GetItemCount(238) < 99 ) ) {                    set Chocobo_HotColdPoints -= 450                    AddItem( 238, 1 )                    set VAR_LocInt8_29 = 0                }                set VAR_LocUInt8_2 = 4                break            case +5:                if ( ( Chocobo_HotColdPoints >= 250 ) && ( GetItemCount(254) < 99 ) ) {                    set Chocobo_HotColdPoints -= 250                    AddItem( 254, 1 )                    set VAR_LocInt8_29 = 0                }                set VAR_LocUInt8_2 = 5                break            case +6:                if ( ( Chocobo_HotColdPoints >= 150 ) && ( GetItemCount(249) < 99 ) ) {                    set Chocobo_HotColdPoints -= 150                    AddItem( 249, 1 )                    set VAR_LocInt8_29 = 0                }                set VAR_LocUInt8_2 = 6                break            case +7:                if ( ( Chocobo_HotColdPoints >= 10 ) && ( GetItemCount(251) < 99 ) ) {                    set Chocobo_HotColdPoints -= 10                    AddItem( 251, 1 )                    set VAR_LocInt8_29 = 0                }                set VAR_LocUInt8_2 = 7                break            default:                set VAR_LocUInt16_9 = 99                set VAR_LocInt8_29 = 99                CloseWindow( 7 )                break            }            switch 2 ( VAR_LocInt8_29 ) from 0 {            case +0:                Wait( 4 )                RunSoundCode3( 53248, 108, 0, -128, 125 )                Wait( 4 )                break            case +1:                Wait( 4 )                RunSoundCode3( 53248, 102, 0, -128, 125 )                Wait( 4 )                break            }        }        RunSoundCode3( 53248, 103, 0, -128, 125 )    }    return
To:
Code: [Select]
Code:
Function Moogle_Male_64    switch 3 ( Chocobo_CurrentField ) from 1 {    case +0:        SetTextVariable( 2, Chocobo_ForestHighScore )        SetTextVariable( 3, Chocobo_ForestGamePlayed )        break    case +1:        SetTextVariable( 2, Chocobo_LagoonHighScore )        SetTextVariable( 3, Chocobo_LagoonGamePlayed )        break    case +2:        SetTextVariable( 2, Chocobo_GardenHighScore )        SetTextVariable( 3, Chocobo_GardenGamePlayed )    }    SetTextVariable( 5, ( Chocobo_ForestGamePlayed + Chocobo_LagoonGamePlayed ) + Chocobo_GardenGamePlayed )    SetTextVariable( 4, Chocobo_HotColdPoints )    if ( Chocobo_Lv99 == 0 ) {        WindowSync( 7, 128, 240 )    } else {        WindowSync( 7, 128, 243 )    }    if ( GetDialogChoice == 0 ) {        set VAR_LocUInt16_9 = 0        set VAR_LocUInt8_2 = 8        EnableDialogChoices( 511, VAR_LocUInt8_2 )        WindowAsync( 6, 4, 246 )        while ( VAR_LocUInt16_9 < 1 ) {            set VAR_LocInt8_29 = 1            EnableDialogChoices( 511, VAR_LocUInt8_2 )            SetTextVariable( 4, Chocobo_HotColdPoints )            set VAR_LocInt8_30 = 0            while ( VAR_LocInt8_30 < 1 ) {                if ( IsButton(655360L) ) {                    set VAR_LocInt8_30 = 1                }                Wait( 1 )            }            switch 9 ( GetDialogChoice ) from 0 {            case +0:                if ( ( Chocobo_HotColdPoints >= 60000 ) && ( GetItemCount(0) < 99 ) ) {                    set Chocobo_HotColdPoints -= 60000                    AddItem( 0, 1 )                    set VAR_LocInt8_29 = 0                }                set VAR_LocUInt8_2 = 0                break            case +1:                if ( ( Chocobo_HotColdPoints >= 10000 ) && ( GetItemCount(175) < 99 ) ) {                    set Chocobo_HotColdPoints -= 10000                    AddItem( 175, 1 )                    set VAR_LocInt8_29 = 0                }                set VAR_LocUInt8_2 = 1                break            case +2:                if ( ( Chocobo_HotColdPoints >= 8500 ) && ( GetItemCount(209) < 99 ) ) {                    set Chocobo_HotColdPoints -= 8500                    AddItem( 209, 1 )                    set VAR_LocInt8_29 = 0                }                set VAR_LocUInt8_2 = 2                break            case +3:                if ( ( Chocobo_HotColdPoints >= 3500 ) && ( GetItemCount(87) < 99 ) ) {                    set Chocobo_HotColdPoints -= 3500                    AddItem( 87, 1 )                    set VAR_LocInt8_29 = 0                }                set VAR_LocUInt8_2 = 3                break            case +4:                if ( ( Chocobo_HotColdPoints >= 1800 ) && ( GetCardAmount < 100 ) ) {                    set Chocobo_HotColdPoints -= 1800                    AddItem( 599, 1 )                    set VAR_LocInt8_29 = 0                }                set VAR_LocUInt8_2 = 4                break            case +5:                if ( ( Chocobo_HotColdPoints >= 450 ) && ( GetItemCount(238) < 99 ) ) {                    set Chocobo_HotColdPoints -= 450                    AddItem( 238, 1 )                    set VAR_LocInt8_29 = 0                }                set VAR_LocUInt8_2 = 5                break            case +6:                if ( ( Chocobo_HotColdPoints >= 250 ) && ( GetItemCount(254) < 99 ) ) {                    set Chocobo_HotColdPoints -= 250                    AddItem( 254, 1 )                    set VAR_LocInt8_29 = 0                }                set VAR_LocUInt8_2 = 6                break            case +7:                if ( ( Chocobo_HotColdPoints >= 150 ) && ( GetItemCount(249) < 99 ) ) {                    set Chocobo_HotColdPoints -= 150                    AddItem( 249, 1 )                    set VAR_LocInt8_29 = 0                }                set VAR_LocUInt8_2 = 7                break            case +8:                if ( ( Chocobo_HotColdPoints >= 10 ) && ( GetItemCount(251) < 99 ) ) {                    set Chocobo_HotColdPoints -= 10                    AddItem( 251, 1 )                    set VAR_LocInt8_29 = 0                }                set VAR_LocUInt8_2 = 8                break            default:                set VAR_LocUInt16_9 = 99                set VAR_LocInt8_29 = 99                CloseWindow( 8 )                break            }            switch 2 ( VAR_LocInt8_29 ) from 0 {            case +0:                Wait( 4 )                RunSoundCode3( 53248, 108, 0, -128, 125 )                Wait( 4 )                break            case +1:                Wait( 4 )                RunSoundCode3( 53248, 102, 0, -128, 125 )                Wait( 4 )                break            }        }        RunSoundCode3( 53248, 103, 0, -128, 125 )    }    return
I also edited the texts in Environment >> Texts to add the extra option text, but when I went to test it in the game, I couldn't make the menu select the extra option, and the "cancel" option is unselectable, could you help me?

Example:

In the original version, when the menu is open, It's begin in "Cancel" text
QezXcmx.png


In the Modded, It's begin in "Gysahl Green" text and the "Cancel" option is unavailable to chose
TSQzhFf.png


EDIT: The funny thing about this is that in addition to the problem that I am not able to make the "Cancel" option selectable, the other problem is that when I choose to buy the Hammer, instead of decreasing -60000 Gil, it simply increases +5536 Gil
 
Last edited:
Replace "60000" by "60000L" in the code:
Code: [Select]
Code:
set Chocobo_HotColdPoints -= 60000L
That is because numbers higher than 32636 should be flagged as "long" numbers, otherwise they are stored as a 2-byte signed integer type.

Also, for the selectability problem, update the lines "EnableDialogChoices". You must both include the added choice to the available choice list (change "511" into "1023", or tick the next box in the script editor), and tell the game that the "default" choice has index 9 instead of 8 (change "set VAR_LocUInt8_2 = 8" into "set VAR_LocUInt8_2 = 9").

Also, when editing the text, there's an opcode that setups the choices ("FORMAT:Multichoice" in the PSX version): double-click to edit its parameter and do the same kind of changes there (number of choices => 10, "Cancel" choice => 9).
 
Replace "60000" by "60000L" in the code:
Code: [Select]
Code:
set Chocobo_HotColdPoints -= 60000L
That is because numbers higher than 32636 should be flagged as "long" numbers, otherwise they are stored as a 2-byte signed integer type.

Also, for the selectability problem, update the lines "EnableDialogChoices". You must both include the added choice to the available choice list (change "511" into "1023", or tick the next box in the script editor), and tell the game that the "default" choice has index 9 instead of 8 (change "set VAR_LocUInt8_2 = 8" into "set VAR_LocUInt8_2 = 9").
Thank you, I corrected the item price issue here, as I also managed to put the value "set VAR_LocUInt8_2 = 9"
Immediately the "Cancel" option becomes available, but when I select another option, I can't go back to cancel again.

I don't know if it's because of this option here:
Also, when editing the text, there's an opcode that setups the choices ("FORMAT:Multichoice" in the PSX version): double-click to edit its parameter and do the same kind of changes there (number of choices => 10, "Cancel" choice => 9).
I couldn't open the menu using the two clicks to edit the parameters, correct me if i'm wrong or i'm trying to click the wrong box
RG7fGUR.png
 
Ah, maybe you can't change "Format" opcodes for the PSX version of the game...
What happens if you delete that opcode? Careful, you won't be able to add it back, I think.
 
Ah, maybe you can't change "Format" opcodes for the PSX version of the game...
What happens if you delete that opcode? Careful, you won't be able to add it back, I think.
If delete this Opcode, Only this two option are available
gJKc53k.gif
 
hey tiriltiti,
i'm trying to edit enemies panel on FF9 PSX (1.0 version) (pure vanilla/untouched) but when I try to rename an enemy, Hades Workshop crash instantly, even try to backspace one letter it instant crash.
tirlititi, i tried latest HW on vanilla ff9 psx v1.1 and monster panel still crash if try to edit monster text
ok looks like HW older is ok.
 
Last edited:
Hello! Is it possible to rename a character in a specific save file? I messed up with the translation, and now some of the characters' names are duplicated. "ZidaneZidane" "ViviVivi".
 
The save editor is more suited for that, Rassellek.

You *could* force naming screens to appear by editing the field scripts of the fields you are currently in (in Hades Workshop, panel "Environment -> Fields -> select the field you're in -> Edit Script"), by writing a line like "Menu( 1, 0 )" for renaming Zidane, but that's not very convenient compared to using the save editor.
 
Version 0.35b is up. All the changes apply only to the Steam version :
- Fixed the black screen bug in battles when you modified an item,
- Improved the reading/modding of Assembly-CSharp.dll,
- Added a "Break damage limit" macro, be careful that it will bug with certain bosses,
...->
Hello, Tirlititi!
Please help me! I save the "Apple Macros" macro using "save steam mod" -> "c# code pieces" -> "raw assets". I'm applying a new mod in "memoria.ini". However, in the game, the maximum damage inflicted remains 9999. Did I miss something? This is the only way to achieve breaking the damage limit, if so, how do I make it work? Thank you!)
 
The C# macros (and more generally the "CIL code" panel) don't work with the Memoria Engine mod.
I just added a "Break damage limit" option directly in Memoria though: it will be a new option of the next Memoria release.
 
The C# macros (and more generally the "CIL code" panel) don't work with the Memoria Engine mod.
I just added a "Break damage limit" option directly in Memoria though: it will be a new option of the next Memoria release.
Great news!
Thanks Tirlititi  :)
We are waiting for the release, have you planned a date?
 
Not yet.
DV is currently working on a major update from his end (amongst other things, he implemented Triple Triad in the game). I'll also do a couple of things afterwards.
 
what month aprox you think launch the next release? when you have time, you can help me about break the max stats of strengs, speed etc?
 
Hello, Tirlititi!

I use custom AbilityFeatures.txt (>SA global) to change the magic properties of a character with a certain items.

Example:
Permanent Code: (Condition) [Select]
Code:
 Weapon ID == 64
Code: (Magic) [Select]
Code:
 Magic + 6
.

However, this, unlike MaxHP/MaxMP, changes the magic forever. That is, if you remove / put on an item, the magic reaches 99. Is this a bug of the method or is another function used for this?

I didn't find anything in the description (except Max HP, Max MP, Speed, Strength, Magic, Spirit, Defense, Evasion...)

Thanks You!)
 
Hello everyone and hello again Tirlititi, it's been some years since my last post. In these past few weeks, I've finally played until disc 3. (PSX - Italian version with Alternate version, run on EpsxE PC and android)

***************** (this part originally was at the end of the post)
THE QUESTIONS of nowadays (to understand how i came to this maybe-billion-time-questions, please read this little truly-(un)satisfied but enthusiastic-guy story)
1 - Is there a GAMESHARK code that works with the PSX italian version to remove trance bar?
2 - Is IMPOSSIBLE to set trance with these guys (Marcus, Blank, Cinna and Beatrix) with psx version (and HW things and tricks)?
2bis - i've read something about in the forum...the issue seems to be that they don't have a trance model (and not only this)... so, according to my ignorance, if i set only thief dagger for zidane, so i don't have to use the zidane with thief sword model and relative trance model,...then for Blank, Blank have a second model with the Pluto soldier suite...
So with these informations, is possibile to think - a MIRACLE? - to set trance models for marcus, cinna, blank (blank with pluto soldier suite) and beatrix?

Where it all begans - DIALOGUES ISSUES with alternate version
I confirm (like my old post in the alternate version thread) that some lines are messed up in some specific area (or maybe it's quite correct call them "field" according HW). Until disc 2 i've take notes about what lines are "corrupted" (or wrong pg says lines that in normal game are attribute of other, or lines during RTE completely wrong) and where it happens.
Maybe the origin of this little mess is...me! I explain...later.

Where my dream set MY AIM
My aim was have Zidan with Excalibur II and Beatrix in the party.

First, I use GAMESHARK CODES... even if at beginning it was hard to find workable codes, reading forums and billions of tons of landing pages and some other down site (my bad), i gone through this and (with many many tentatives, glitches and game freezee) find codes that works. With these codes i'm able to modify the party (one by one) members, with other tentatives i can change the battle menu with relative abilities.

Second, I finally approde to HADESWORKSHOP. It's the big deal!!!!! With this i can modify the same (and much much much more) things and finally got Excalibur II in the hands of Zidane and Beatrix in the party "on call" (whenever gameshark cheat is set up).

Where my mental health is gone - My aim was achieved but i can stop there? YES but...nope!

So from Beatrix i went to marcus and blank (with custom battle menu i've made) (until disc 2...then i was shocked (the big disappointing point) to find out that when Eiko and Amarant join party, these gameshark codes don't call up even more marcus and blank but Eiko and Amarant (and Quina instead Cinna))....
So that hard work to bring them with me...for nothing?
Many sites and forums later, i've find out gameshark's codes that let me to switch every party member with other ones.
Secondary, for these pg, until i've found the Big disappointing point, i want to set some support abilities. So with HW, i can set the support abilities to Marcus, Blank and Cinna but can't activate them, not in game (even if i can see the list) and not in HW (or i don't found out how to do it) BUT it seems that the support abilities of the "originals" are still active (like autopotion).
With gameshark codes i've found the way to can see and can activate/deactivate the support abilities...but this affect also the battle menu, equipment etc.... so i can have Cinna with Quina abilities and so on.
In both case, there was (and there is still) a Big problem.

Big problem: if i want Marcus, Blank and Cinna in the party instead of base pg, i can play with them until trance happens and the game freezee.
How can i solve?
2 solutions i've thought:
1 - i can play with one of this guys (marcus, blank and cinna) instead of Beatrix, so the trance problem can't happen.
2 - Is there a way to remove the trance bar?
so.... 1 is too simple, 2 is much more attractive... so you can imagine how i answer to my question.

Third - CHEAT ENGINE. With this i've found how modify things in "live action" like, guil, time, pg'stats, turn on trance, or set it to zero...but these changes only works until cheatengine is operating. Or maybe i'don't find the right code that modify the existence of trance bar.
I've tried not so many times... 'cause cheatengine is not newbie-idiot-friendly.

Fourth - MEMORIA SAVE EDITOR. The save editor can set same changes that are possible with gameshark codes and with HW (for my aim)...so with memoria i changed something here and there, making some tries, some messing around... then i've found an interesting things...
My Beatrix, called on party with gameshark, with support abilities that you can set but you can't activate (with HW)...with memoria, in the save editor you can activate them, and then in the game you can see in the menu, according to what you've set in HW (in my case i've set with HW autopotion, autolife and many others that are listed in game menu but not activate, with memoria i can activate the support abilities from a list of the program... so in this list i've activated autolife and autohaste (this one i've not choose in HW and is not listed in game menù) ... in game, with this changes i can see the list of supporting abilities i've set with HW, and the active supporting abilities i've chosen with memoria, so in my case i see autolife and i can see it is active but not autohaste that i've not set with HW but activated with MEMORIA... in battle works autolife and so autohaste...
So the conclusion is that the supporting abilities that you set with memoria, affect Beatrix even if you can't see it in game menu.
I think this doesn't work with Marcus Blank and Cinna 'cause they share the code with Eiko and partners...so, i think, if you modify these ones, the changes affect both.

Fifth - CONCLUSION? Maybe
Beatrix is a badass with hammer (with level bonus), and seems like magic hammer when she hit the enemy.
Marcus, Blank and Cinna...'i've made a custom menu, Marcus alternate version, Blank is like a pusher (hahahah), Cinna a sort of support mage.
Zidane...i've achieved the aim to bring excalibur II, like a thief sword, so in the erect version of Zidane in battle...
but the question is: is possibile use Excalibur like a thief dagger? And answer is YES. In HW, you have to set the menu's image font of a dagger instead a sword and the game is set, you can play with excalibur II dagger


AND THE TRANCE BAR ISSUE?????????????
 
Or i change one to one the Cinna Marcus and Blank with Beatrix when i want one of them with gameshark codes.
Or what?

THE QUESTIONS of nowadays ************ (this part is now at the begin of this post)


WHY I THINK THE PROBLEM TO DIALOGUES ISSUE WAS ME. During the game i used the gameshark codes to add beatrix or marcus or blank and so this maybe caused these issues through the game.

Now I'm heading to modify party members with fields on HW....and messing around like that.

Side note 1: this forum is a masterpiece to handling with the tools created for this game and , as i say, HW is a pure Rosetta Stone
Side note 2: yes, i miss some part of this forum to handle in easy way some of the mess i've done. Sorry for that and for my five-yo english.

Thanks for time you dedicate to this post.
 
@rassellek: Can't you just add +6 Magic to the weapon's stats?
I'll see what I can do (it can be useful) but if it's just giving stats to a piece of equipments, it's better to do it directly without using a SA feature.

@paky-outsider: Congrats!
I must say, not only I have stopped working on the PSX version of the game, but also I don't use CheatEngine at all and would have been totally useless to help with anything related to it.
 
Thanks for the reply.

So, if you remember that, for PSX version:
1) :roll: it's possible to remove trance bar in HW or with gameshark codes?
2) :mrgreen: it's possible to add Cinna/Marcus/Blank or Beatrix to the party whenever in the game you can choose party members? (I can do it with gameshark codes but i want to know if this is possible with HW to make a .bin's permanent modify)
3) :-* it's possibile to add gameshark codes on cheats'cd (like action replay without card, or others)?
4) 8-)  this is not a question but only a time to say a really "thank you" to all your work and to this community.

And I swear... in this century or the next, I play with the PC version (so the mainly features that i request are already in game  :P and i don't have to bother you and the community with this  :'( psxoomer nostalgic request)
 
Status
Not open for further replies.
Back
Top