I
Incinerator
Guest
I see thanks.
Is it possible to not make the sfxs no pitch with speed booster on?
Is it possible to not make the sfxs no pitch with speed booster on?
Last edited:
ldloc.1conv.r4ldloc.0ldfld 0x40038A0 // SoundProfile::Pitchmulstloc.2ldloc.0ldloc.2stfld 0x40038A0 // SoundProfile::Pitch
So do I get this right, whenever I save my changes on an unmodded file, it'll change every file in this entire FFIX folder, and then I have to copy each one of them over the original ones in the different FFIX folder that I will be using to play?Saving Instructions
You have to backup your files yourself. The program asks for the "FF9_Launcher.exe" file when opening the game, and then for a folder where you want to save your modded files. In any case, never choose the folder in which the selected "FF9_Launcher.exe" lies, either create a new folder either save it in a folder containing another "FF9_Launcher.exe".
The files created this way are intended to replace the files in the sub-folders of your "FINAL FANTASY IX" folder.
Here are the 2 safest possible choices :
1) Start by creating a backup of your "FINAL FANTASY IX" folder. When you use HW, only open the backup files and choose the non-backup "FINAL FANTASY IX" folder when you save (it's important that you keep that default name). As that's the game launched by Steam, you'll have your game directly modded.
2) Start by creating a backup of your "FINAL FANTASY IX" folder and use that backup for HW, but create a new folder somewhere else for the saving. To apply the mod, you need to replace manually the files in the "FINAL FANTASY IX" folder by the modded ones.
In any case, a 3rd backup is not a bad idea, unless you don't mind downloading the game again in case of problems.
I see, too bad. I guess I'll just have to redo the changes I made to some enemy, spell and item names by manually going through all of them.1) The text still can't be imported properly from PSX to Steam, and it concerns all the texts, not only the ones in the "Texts" panel.
If there is one thing that HW does less well for Steam than for PSX, it's editing and managing the texts... I have been working on multi-language support lately but I will need more time to work on the Steam text opcodes (that's what makes it troublesome).
The best solution for now would be to use file batching for dialogs, I guess, but for the rest, you'll have to copy/paste and write the Steam opcodes yourself (you can have 2 windows/panels of HW opened: one of PSX and the other for Steam).
I've just googled around and it seems no one knows the reason for the indeed much lower encounter rate of the steam version. Damn, that's an even bigger bummer to my plans. So the only option is to manually go through each field and increase the encounter rate to somehow restore the battle frequency of the original PSX game (more or less)? That'll be quite tedious, but I guess there's no way around it if I don't want to remain constantly underleveled.2) Yes, the encounter rate is definitely lower in the Steam version, but the difference is indeed not in the field script. It is unclear to me what makes this difference... I've said what I saw and what I think of it here (comparing the Steam engine's code with the description of SoftReset of the PSX engine's code, it would really look like they are the same):
https://www.gamefaqs.com/boards/197338-final-fantasy-ix/75389893
Hi Tirliti, I have the same question of Kefka. Actually the only way to increase random battle encounter is to manually edit all fields with a random battle?I've just googled around and it seems no one knows the reason for the indeed much lower encounter rate of the steam version. Damn, that's an even bigger bummer to my plans. So the only option is to manually go through each field and increase the encounter rate to somehow restore the battle frequency of the original PSX game (more or less)? That'll be quite tedious, but I guess there's no way around it if I don't want to remain constantly underleveled.
Since you seem to know where this formula is, is it possible to edit it with the CIL code to increase the encounter rate in general (maybe lower the 960 like you suggested in that thread)? This would be far simpler than going through each field file individually.if (sMoveKey && !IsNearlyZero(DistanceFromLastFramePos)) {
. . sEncountTimer += DistanceFromLastFramePos * FieldWorldMapFactor;
. . if (!Cheat.IsNoEncounter && usercontrol != 0 && sEncountTimer > 960) {
. . . . sEncountTimer = 0f;
. . . . sEncountBase += encratio;
. . . . if (random8() < sEncountBase/8) {
. . . . . . sEncountBase = 0;
. . . . . . TriggerRandomBattle();
. . . . }
. . }
}
ldc.i4.0beq.s IL_00A8ldc.i4.1br.s IL_00A9ldc.i4.0ret
This find is certainly interesting, but does it apply to Regen only, or to Poison and Toxic statuses as well? Seeing as they work kinda similar...@ste459: Controlling the ATB that accurately is not possible with Hades Workshop. It is possible with Albeoris's Memoria but you'd need to recode part of the engine for that.
However it is indeed possible to increase the Regen frequency, with both HW and Memoria. In HW, you go to CIL Code, search for the method "btl_stat -> SetOprStatusCount" and remove that part of the code:
Code: [Select]
ldarg.0
ldfld 0x400022A // BTL_DATA::elem
ldfld 0x400080F // ELEMENT::wpr
sub
It's the four lines under a "ldc.i4.s 60". The Regen frequency formula is indeed "Frames to wait = (60 - wpr) << 2", which is, in a more standard writing, "(60 - Spirit) * 4". Removing these four lines will remove the spirit part so you will always regen with the same frequency (the overall duration is something else and will still increase though). You may change the number in "ldc.i4.s 60" to adjust it if you think it's too slow (or too fast).
@Incinerator: I was bugged by the task of giving a precise answer but replying to ste459 gave me one : if you use regen on a character with 60 spirit or more, the formula above goes to negative which can either mean regen will never trigger or it will trigger every single frame (having a quick look at the code, I would incline to the latter).
ldarg.0 // This is the 1st argument passed to the method, of type BTL_DATA ; it contains a character's (or enemy's) battle infosldfld 0x400022B // BTL_DATA::elem ; contains the statisticsldfld 0x4000811 // ELEMENT::wpr ; spiritldc.i4.2 // Put the number "2" on the stack for later left shiftshl // LeftShift( spirit, 2 )conv.u2 // Just a conversion to unsigned short integerstloc.1 // Store the result in a variable (used later)