I still plan on tons of things actually.• Correcting bugs. I saw there was still some bugs with the preloading thing (it can totally mess up with your file because the check of the data size is wrong) and with scripts (I saw Cactuar's IA are surely wrong).• Walkmesh viewer/editor, as well as making backgrounds editable. I think it will be more simple to make walkmeshes editable directly from the tool, as there may be some features specific to FF9's format.• Making the file size modifiable. It will allow more changes to be made. However, I'll make it in a separate module because PPF patches won't work anymore with that. You'll have to use .hws files to share the mods then.• Completing things already there. There are tons of datas about enemies that are currently unknown or uneditable, for instance. The command panel and the supporting abilities panel are also my shame for now and since a long time ^^'• Making spell animations editable. tasior2 is looking for the models, but there's also the sequencing that can be modified. For instance, it will allow to make spells deal damage several times in one cast, like Cloud's Omnislash and such.• Speaking of models : importers and exporters of more model files (that was hella tedious for me with battle scenes so that's why I'm not motivated a lot to do the others)• A Tetra Master panel.• A menu UI panel.• Editing the other texts that can't be edited yet.• Sound and Music exporter/importer.• A damage calculator, to display conveniently what would be the damage dealt by spells, plus the accuracy of hitting/inflicting statuses.• Add more flexibility about everything : be able to move an enemy from an enemy formation to another (I'm thinking of making a Garland + Silverdragon fight, for instance ^^), be able to add text lines and not only modify them, same for fields, enemy formations and such...

Actually, I'm not sure to have enough of a life to make everything I would like ^^"Plus, I'm quiet busy with my job right now.

For the model importing/exporting it might be a smart idea to team up with the guy who made the online viewer, your implementation would be quite different but I'm sure it might save some time and headaches to go over the wiki documentation he's written once he's learned all there is to know about formats.

The walkmesh editor I find interesting, an exporter would be interesting too (though I guess I could use Zidanes tool for that, or his his just editor only, I bet it is...).

How would you even go about the file size modification? I'd understood that to be the ceiling as it were, with no real passable point.

A Tetra Master panel sounds super interesting, what with the possibility of editing the card data along with the card graphics, could change the tide of the game a fair bit (square enix are doing a phone release of Tripple Triad, I wonder if Tetra Master will get the same treatment?), and at the very least make it interesting to have HD cards.

Model data editing is interesting for possible model replacements, especially texture wise, could make the game look real nice, of course the biggest limitation is still the field scenes, since those can only be upscaled really.

These additional features look very promising, I'm looking forward to them. I don't know if this is helpful to you, but I've made an excel file for some of the damage calculation formulas which I'm using for my modding. For those who are interested, here it is:

http://speedy.sh/PYtGD/FF9-Damage-Formulas.xlsBy the way, I tried your suggestion with placing the counter script in Function_func_1_1, but it didn't seem to work. Although I have to admit, I didn't test it very thoroughly yet. I will experiment some more with it.

On another topic, your to do list reminds me about something else that I've always wanted to play around with, but since I don't know anything about programming, you need to tell me whether the following 2 things are impossible, or whether you could include them in a future version of the editor.

1.) The first one is about the duration of temporary status effects, which are way too short I think. When you’re playing the game with the ATB on active mode and the battle speed set to fastest, no negative status lasts longer than 2 rounds at most if your spirit stat is decent. This becomes especially obvious near the end of the game, when most party members have spirit stats of around 40 even on moderate levels. For example, Mustard Bomb will hardly ever have a chance of killing a character even if it inflicts Heat, because if just a single attack with a decent animation time is in between Mustard Bomb and the targeted character’s turn, the Heat status will have already expired by then. And with ‘decent animation times’ I’m not even talking about summons, as the length of any normal spell or other technique is already sufficient to make Heat wear off. This makes the Body Temp ability more or less obsolete in the late game, even when going up against enemies that use Mustard Bomb or Freeze.

I have found some info on the duration times of status effects in this document here.

It’s a very in-depth analysis of FF9’s battle mechanics, which leads me to believe that the author (Rebirth Flame) must have located these data by looking directly at the code. After all, the only way to obtain that knowledge is by actually hacking the game, isn’t it? Now as I said I am no programmer, so what I’m saying now might be completely wrong, but the duration time seems to be one fixed number for each temporary status (both positive and negative ones), like 160 for Heat or 240 for Poison. This counter decreases continually, and when it reaches 0, the status wears off (at least that's what the author claims). So my question is, if you know where these duration counters are located, would it be possible to make them editable in Hades Workshop to prolong status duration? That would be great.

2.) The second point is about the Poison and Regen stats. One thing that I believe needs to be changed in order to make the game more challenging is to break the power of the Auto-Haste & Auto-Regen Combo. With these 2 abilities activated, you’ll never need to manually heal your party ever again. No matter how powerful the enemy’s attacks are, with Haste status the Regen healing will come so fast that it easily heals you back to full health before the enemy gets his next turn. Add Auto-Life into the mix and your party becomes nigh invincible, eliminating any level of difficulty from late disc 3 onward.

I was thinking that one way to weaken this combo would be to increase the time span between Regen healings. According to the same battle mechanics guide, there seem to be secondary counters for Poison and Regen which determine the time span between two Poison damages / Regen healings. Would it be possible to make these counters editable?

Anyway, these are just some ideas floating around in my head, and I don't know how difficult it would be to change them. But I would like to hear your thoughts on those.

Kefka, it sounds like you might be interested in the Poison and Regen tables I have on the Statuses sheet of my mod's spreadsheet. They show how many hits and what % of HP each status moves at each value of Spirit.

Thanks, Vir, your tables give a nice overview of how the spirit stat influences the time span and the amount of damage/healing that comes from regen and poison. Now all I would need to know is how to edit that. As for now, the only way to lower Regen healing is by lowering the Spirit stat, but I don't wanna do that, as Spirit is important for so many other things as well.

Hey ! I'm sorry, I'm having some problems with my computers so I can't check or test things right now.

@ Kefka : that's a pitty for the counters :/I would have thought it should work at least in the looping function. Did you check if it was actually looping? The function should end with those two lines :

WAIT(1) loopIf there is a RETURN instead, it won't loop anyway so it may be why it didn't work.About the statuses : no, I don't plan to go that far in the battle mechanics. I wish I could, but the figures controlling these kind of things are really spread over the file and it will be too difficult for me to draw the big picture of the battle mechanics.However, I've progressed in the spell animation editing feature ; without giving false hope (this feature was full of them for my concern), there might be a way to stop the ATB progression during spell animations, making the combo regen+booster lighter. That also needs checks.

@ gledson : I would have advise you to do exactly what you did....There is no need to remove the battles from the preloading list, though, and it is the thing that most likely made the bug.In order to take no risk : simply remove the line RANDOM_BATTLE (remove it, don't change it to "NOTHING" though if that was the problem, then I made a terrible mistake ^^"), parse and save and that should be all about it.Save states should work fine for a script edition like this. The changes will be effective as soon as you (re)enter the field. However, when changing the preloading files, I think the field needs not to have been preloaded first, so the save state must be at least 2 fields away from the modified field (for the entrance of the Gargan Roo, the save state should be in Tot's tower stairs, for example).

Also, keep in mind that there may be the "RANDOM_BATTLE" opcode somewhere else than in the main function. For instance, the random battles of the fire room in the Desert Palace are activated only once all the fires have been lightened up. So there is a conditionnal execution of "RANDOM_BATTLE" in the main function but there is also another one in another function running when the last fire is lightened.

@ gledson : I would have advise you to do exactly what you did....There is no need to remove the battles from the preloading list, though, and it is the thing that most likely made the bug.In order to take no risk : simply remove the line RANDOM_BATTLE (remove it, don't change it to "NOTHING" though if that was the problem, then I made a terrible mistake ^^"), parse and save and that should be all about it.Save states should work fine for a script edition like this. The changes will be effective as soon as you (re)enter the field. However, when changing the preloading files, I think the field needs not to have been preloaded first, so the save state must be at least 2 fields away from the modified field (for the entrance of the Gargan Roo, the save state should be in Tot's tower stairs, for example).

Also, keep in mind that there may be the "RANDOM_BATTLE" opcode somewhere else than in the main function. For instance, the random battles of the fire room in the Desert Palace are activated only once all the fires have been lightened up. So there is a conditionnal execution of "RANDOM_BATTLE" in the main function but there is also another one in another function running when the last fire is lightened.

Thanks Tirlititiworked perfectly on field battle

other questions, I could not find where the value disables battles on the world map ?, as it does to disable because I did not find any opcode called Random Battle, is to remove battles for some monsters.

Ex: no battle will be read with Armstrong data Desert, only be read data Adamantoise

@ Kefka : that's a pitty for the counters :/I would have thought it should work at least in the looping function. Did you check if it was actually looping? The function should end with those two lines :

About the statuses : no, I don't plan to go that far in the battle mechanics. I wish I could, but the figures controlling these kind of things are really spread over the file and it will be too difficult for me to draw the big picture of the battle mechanics.However, I've progressed in the spell animation editing feature ; without giving false hope (this feature was full of them for my concern), there might be a way to stop the ATB progression during spell animations, making the combo regen+booster lighter. That also needs checks.

Interesting, that might be a solution to both of my status-related questions. It would make Auto-Regen far weaker while at the same time prolonging the duration of all status effects. If that is indeed possible it would be great.

Another question regarding the random battles: If it is possible to remove random battles from a certain field, the opposite should be possible, too, right? Because I was considering adding random battles to fields that currently have none. So all I would need to do would be to add the RANDOM_ENCOUNTER function to a field file, plus the four random battles that I want in brackets, like this:

@ gledson : Yeah, the random battles are not handled by the script in the world map (except for Ragtime mouses and Antlion, IIRC). You can't remove the battles from the world map for now :/

@ Kefka : You got it right, but you also need to add the battles in the preloading datas. There is a bug that should be corrected in the next version for preloading datas, but you can try now nonetheless.Add those battles to the preloading datas, add the "RANDOM_BATTLE" opcode inside the script and test : it will crash in-game if the bug occured and should work fine if not ^^The corresponding battle scene for the battles must be preloaded as well but I think I made it automatic (if you add a battle, the battle scene is added too if it weren't there).

Note that the 1st argument of "RANDOM_BATTLE" has unknown effect. It might be about the frequency of random encounters.

@ Kefka : You got it right, but you also need to add the battles in the preloading datas. There is a bug that should be corrected in the next version for preloading datas, but you can try now nonetheless.Add those battles to the preloading datas, add the "RANDOM_BATTLE" opcode inside the script and test : it will crash in-game if the bug occured and should work fine if not ^^The corresponding battle scene for the battles must be preloaded as well but I think I made it automatic (if you add a battle, the battle scene is added too if it weren't there).

Note that the 1st argument of "RANDOM_BATTLE" has unknown effect. It might be about the frequency of random encounters.

Ah, ok, thanks for the tip. I'll play around with that for a while.

I've got another question for you, and maybe it can already be done in the current version, but I'm not quite sure how. Is it possible to change the contents of treasure chests on the World Map? I already know how to do it in the Field files, but I'm not sure about the World Map. There is a section called Chocobo Treasures in the World Map tab, but the ITEM ADD Opcode in its script contains only variables, not absolute item IDs like in the field files. Where exactly are the items in the chocobo treasures located?

The reason I’m asking is because I'm mainly working on rebalancing the game's difficulty (not an extreme hardcore mod, just a bit more challenging than normal) because I find that it’s way too easy. Rebalancing the first two discs was easy, but early disc 3 is where the problems start. This is the point when you can find some of the game's most powerful equipment way too early, like Dragon's Hair, Ragnarok, Kaiser Knuckles, High Mage Staff, Light Robe, Shadow Robe, Circlet and Genji Armor. So I was planning on swapping some of these items to later treasure chests, when their stats are more appropriate for the point in the game.

According to my memories :The variables that set the items for the Chocobo chests are located in one of the "chest" function. There is a switch with several variable settings.The first "SET" is about marking the treasure as found,the second "SET" is about the first item given,the third "SET" is about the amount of that item,the fourth "SET" is about the second item given,etc... for 4 itemsNote that a special variable is used for smoke-evolving chocographs. Also, the script is written so only the 4th item can be a card (but I think you can also give a regular item in the 4th slot).

To see the corresponding item when in the "SET" lines, you need to go to the "Inventory" panel before editing the script. Then the corresponding item will be displayed when you select a number. You need to be quiet familiar with the item sorting by ID if you want to modify it, though :/Alternatively, you can also write a dummy line "ITEM_ADD" only to have the menu on the right that automatically puts the corresponding number. You remove that line once you're done.

I didn't do what I initially planned... That happens too often ^^"- You can now edit the animation sequencing for both spells and enemy attacks,- Fixed script bugs and made it a bit more comfortable to read,- Improved the UI some bit (images no longer twinkles, for instance),

The good news : editing the enemy animation sequencing allows to choose which spell they can cast (SFX-speaking). You can also add several damage points in a spell animation so the spell effect is activated several time (you can use it for making an enemy double-casting or dealing more than 9999 in one attack, for instance).Enemy animation sequencing and spell animation sequencing are alike, but not totally the same. There are a lot of opcodes related that are unknown. The ones the game doesn't use at all are called "Unused XXXX" but some of them actually do have an effect.

The bad news is that I didn't find a spell animation opcode that halts the ATB, as I wished. I think the chances such an opcode exist are thin.There is also much less control in spell animation sequencing that I thought. The "Play model" opcodes are kinda bad named because it doesn't only display the spell model but also has some control over the sequencing (Death lvl 5's "Play model" defines the damage point and Ultima's last "Play model" is the thing that loops forever and freeze the battle).

About the script's improvement, you have more translations available in the left of the screen (if an integer corresponds to an attack list, a spell ID or a button list, you can read it conveniently) and the battle properties are also displayed better.

As always, I also found the use of some more script opcodes... But the animation sequencing ones have been added so I'm not near to see the end ^^"

Great work, man! Thanks for the update! It's even working for me, don't know why I had problems and crashes with version 0.27, but 0.28 is running flawlessly again.

Anyway, I've got two questions regarding monster formations that I hope you can shed some light into:

1.) I've noticed that in some monster formations, there are additional slots checked as Targetable even when they don't contain an enemy (see pic). Do you know why this is the case or whether it serves a purpose?

2.) I've tried adding additional monsters to some battle formations (I also did check the Targetable flag in the new slots that were filled). For example, I wanted to add 2 Goblins to a fight that normally only has 2 Fangs. But then in battle something wierd happens: the new monsters are only visible for a couple seconds, then they disappear. I suppose it happens when their turn comes up, because the new enemies also cannot perform any attacks. The funny thing is that they still remain targetable, but they're just invisible and cannot act. Any ideas about what's going on?

1) The "targetable" flag isn't actually used by the vanilla game, but disabling it can be used to make things like the Bomb-Steiner battle. The vanilla game must be doing that using the script to do that.

2) For adding more enemies, you need to go to the script too and add "INIT_OBJECT" lines to the main function. The first argument of this opcode is the related AI and the second may be related to the enemy slot in the "Groups" section (just check how it is coded in other battles and you'll understand ^^).Be aware that, for bosses, adding more enemies can be handled weirdly by the script : the battle is usually automatically won when the boss reach 10000 HP, for instance.

Ah, thanks a lot, it's working now! Don't worry, I don't plan on messing with boss formations, just wanted to add more enemies in random battles. I find it kinda lame that in most battles there's only 1-2 enemies, and the maximum of 4 is hardly ever used.

I find it kinda lame that in most battles there's only 1-2 enemies, and the maximum of 4 is hardly ever used.

That's certainly due to the limited PlayStation VRAM space for enemy textures during battle.Remember there's already a fixed space for the stage's textures and up to four characters and characterweapons texture space, and a certain amount of space must be free for attacks/magic/summons textures too.

There could be a problem if you put more than 3 different enemies in the same battle depending on their specific texture data.I guess they put thought on balance for texture data for each enemy formation.

Most bosses don't die by their HP being reduced to 0. Instead, if HP < 10000 trigger death script. This is why Ozma has 55535 HP -- he actually has 65535 but he dies when going below 10000 so he effectively only has 55535. You can't scan so you wouldn't know either way. If the boss's HP did reach 0 the battle just wouldn't end/would hang, which isn't a problem since bosses are immune to instant death attacks and other damage doesn't exceed 9999.

Most bosses don't die by their HP being reduced to 0. Instead, if HP < 10000 trigger death script. This is why Ozma has 55535 HP -- he actually has 65535 but he dies when going below 10000 so he effectively only has 55535. You can't scan so you wouldn't know either way. If the boss's HP did reach 0 the battle just wouldn't end/would hang, which isn't a problem since bosses are immune to instant death attacks and other damage doesn't exceed 9999.

Most bosses don't die by their HP being reduced to 0. Instead, if HP < 10000 trigger death script. This is why Ozma has 55535 HP -- he actually has 65535 but he dies when going below 10000 so he effectively only has 55535. You can't scan so you wouldn't know either way. If the boss's HP did reach 0 the battle just wouldn't end/would hang, which isn't a problem since bosses are immune to instant death attacks and other damage doesn't exceed 9999.

The "death if HP drops below 10000" script is used by all enemies that have a special death animation, be it a spectacular explosion or just talking to you (Baku, Lani, Kuja, for example). The funny thing is, for all bosses that have less than 20000 HP total you can actually verify that in game by throwing a tent at them (which heals exactly 50% of HP and MP in battle). For example, the Masked Man from the game's beginning has acutally 10188 HP, and when you throw a tent at him it heals him for 5094, that's how you know it.

The only enemy in the game that has a "true" final attack is Maliris with her Raining Swords. This is the only attack that is performed when the bosses HP reach indeed 0, so we know that true final attacks must be possible.

I have no idea why they did that, but it's been bugging me too for a while now. I've always wondered if it might be possible to make these special boss deaths behave like Maliris (change them from "perform special death if HP is less than 10000" to "perform special death if HP is 0"). This would allow us to give most disc 4 bosses an additional 10000 HP. But so far I've been unsuccessful with that.

That's really strange indeed. I didn't even see Maliris's final attack code. I thought it was also using the "under 10000 HP" way.So they indeed made 2 different systems for handling the end of the boss battles...

You can't use the "perform special death if HP is 0" system with HW for now. I'll look into it but if that works as I think it does, it shouldn't be too hard to enable.

This is an awesome update, and that information about Boss HP going under 0 is really interesting too, so that means boss battles have a different ending script to the normal random battles, interesting.

Are there any plans to add Gif support, lots of the backgrounds have nice animations going on and its not really possible to show the animations right now without exporting each frame individually and stitching them together in photoshop. A better method could be layered Tifs, with each frame being its own layer within the tif. I'm not sure how difficult that might be though.

I thought about making it GIF exporting instead of TIFF exporting, but that wouldn't work because there is not only 1 animation per scene but several independant ones. Or there is a GIF feature I'm not aware of?

Personally, when I want to get a GIF from the scene, I use either one of the 2 solutions :1) using a program, Screen2Gif and capturing the animation(s) in the editor,2) check all the tile blocks in the editor, then export, then open the TIFF with GIMP, then "Copy visible" -> "Paste" in a new image for each frame of the animation.

The second solution is cleaner but a little more tedious. I find it less tedious than exporting each frame from the editor though.I'm not aware of photoshop's subtilities but I guess it would work pretty much the same with it.