Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - Tirlititi

Pages: [1] 2 3 4 5 6 ... 33
WIP / Re: FF7 + FF9 Field Maps
« on: Yesterday at 23:53:04 »
That's too bad :'(

I am fairly sure that it's not "other parameters" that is the problem, it's most likely the fact that they changed a bit the way cameras work between FF7 and FF9. You know, when the system is created, the devs decide for example that the coordinate system will be:
Code: [Select]
1st number: left to right coordinate (negative is on the left, positive is on the right)
2nd number: front to back coordinate
3rd number: bottom to top coordinate
But it's arbitrary. They could have used them in different orders or with different meanings.
For camera parameters, it's the same: knowing the correct number doesn't help if you don't know what these numbers correspond to. Also, there are much more arbitrary choices that can be made concerning camera parameters than for the coordinate system. I hoped that they didn't change the meanings of camera parameters between the different games but I'm afraid that's what is going on there (even though they kept some part of it, like 4096 being the unit).

WIP / Re: FF7 + FF9 Field Maps
« on: 2022-11-25 20:31:46 »
The first 3 lines look like a matrix, yes.
It's not exactly a 3D cube, but it can relate to one, depending on how it is interpreted. But in any case, it's a mathematical device.

Here are the different numbers I have for the camera of these two maps. If you can try and see what you need amongst them and in which order, I can generate a file containing all the coordinates for all the maps.
Code: [Select]
Ice Cavern/Outside
Proj = 588
Matrix =
4096 -14 -32
0 3451 -1763
35 1645 3697
Position = 6 -379 -1190
CenterOffset = 0 -7
WidthHeight = 352 560
vrp = 160 192 112 448
Depth = -1

Ice Cavern/Entrance
Proj = 718
Matrix =
4093 -10 152
0 3814 286
-153 -266 4083
Position = -319 1246 9176
CenterOffset = 0 -136
WidthHeight = 320 368
vrp = 160 160 112 256
Depth = -196

Maybe the matrix should be "transposed", that is, instead of using these for the Entrance:
Code: [Select]
x: 4093 y: -10 z: 152
x: 0 y: 3814 z: 286
x: -153 y: -266 z: 4083
The numbers may need to be symmetrized like this:
Code: [Select]
x: 4093 y: 0 z: -153
x: -10 y: 3814 z: -266
x: 152 y: 286 z: 4083

WIP / Re: FF7 + FF9 Field Maps
« on: 2022-11-24 19:35:16 »
Wow, impressive :)
I can surely provide the camera matrix of each map, but I never really figured out how that matrix should be interpreted (the things I tested back then were always a bit off). Or if you need other kind of informations, feel free to ask. I never used the FF7 modding tools myself, except 7th Heaven as a player.

There has been several reports yesterday of weird things like that happening. That is very strange.
Normally, the Character Pack shouldn't mess at all with the way you did your Freya Solo mod: there is no "AddParty" or "RemoveParty" in any script that points to the added characters.

The problem is, I fail to reproduce any of these weird bugs and thus I struggle to find out what could be the cause.

Someone said that the bug triggered only if the "[Import]" section of the Memoria.ini is enabled. Indeed, that feature preceeds mod folders, it uses different formats for many files, it messes a lot with other things and I never really cared maintaining it or looking at how it worked. However, even enabling it, I fail to reproduce your bug (Freya is in the party if I use her + the 3 new characters, and I don't see why your mod would make any difference regarding that).

I don't understand though "[It worked by running a script] at the beginning of every enemy script". Do you use "AddParty" in enemy scripts? Maybe that's not the cause of the problem (or maybe it is), but it would be an incorrect behaviour. I don't advise messing with the party members in-battle. Besides, if you've spotted all the places where the party members are changed (including before scripted fights) and added your "AddParty(4)" script there, you shouldn't need to add anything in battles.

You can reach me on Qhimm's discord.

The documentation for SFX sequences can be found there. It's not easy to master it.

For Zidane's attack, you would want to use "MP_ATTACK" (and/or "MP_RUN_TO_ATTACK") as the main animations that loops, not "MP_SET". For almost all characters (and enemies), the attack animation is splitted into several pieces:
Code: [Select]
then MP_RUN
then MP_BACK
It's only the ranged weapons that use only "MP_SET" as a complete attack animation loop.

The first line of each file is the description ^^'
The player attack sequences are special cases that all can be found in the range "ef100-ef118".

However, you can see the enum list in Memoria's code here as well.

I don't think that's possible using the supporting ability features. However, you can try doing something like that as a custom SFX sequence.

In "Data\SpecialEffects\ef104\PlayerSequence.seq" (and similarly in ef106 and in ef111):
Code: [Select]
// Player sequence of SFX Player_Attack_Garnet_LH_Racket

WaitAnimation: Char=Caster
PlayAnimation: Char=Caster ; Anim=MP_SET
StartThread: Condition=AreCasterAndTargetsEnemies ; Sync=True
Turn: Char=Caster ; BaseAngle=AllTargets ; Time=10
StartThread: Condition=!AreCasterAndTargetsEnemies ; Sync=True
MoveToTarget: Char=Caster ; Target=AllTargets ; Offset=(0.0, 0.0, 1600) ; Time=0
Turn: Char=Caster ; BaseAngle=AllTargets ; Time=0
StartThread: Condition=CasterWeaponId == 52 ; LoopCount=3 ; Chain ; Sync
LoadSFX: SFX=Player_Attack_Garnet_LH_Racket
Wait: Time=25
PlaySound: Sound=WeaponAttack
WaitSFXLoaded: SFX=Player_Attack_Garnet_LH_Racket
PlaySFX: SFX=Player_Attack_Garnet_LH_Racket
Wait: Time=7
EffectPoint: Char=AllTargets ; Type=Effect
StartThread: Condition=!IsAttackMiss
PlaySound: Sound=WeaponHit
Wait: Time=10
EffectPoint: Char=Everyone ; Type=Figure
WaitAnimation: Char=Caster
PlayAnimation: Char=Caster ; Anim=MP_SET
LoadSFX: SFX=Player_Attack_Garnet_LH_Racket
Wait: Time=25
PlaySound: Sound=WeaponAttack
WaitSFXLoaded: SFX=Player_Attack_Garnet_LH_Racket
PlaySFX: SFX=Player_Attack_Garnet_LH_Racket
Wait: Time=7
EffectPoint: Char=AllTargets ; Type=Effect
StartThread: Condition=!IsAttackMiss
PlaySound: Sound=WeaponHit
Wait: Time=10
EffectPoint: Char=Everyone ; Type=Figure
StartThread: Condition=AreCasterAndTargetsEnemies ; Sync=True
Turn: Char=Caster ; BaseAngle=Default ; Time=4
StartThread: Condition=!AreCasterAndTargetsEnemies ; Sync=True
MoveToPosition: Char=Caster ; AbsolutePosition=Default ; Time=0
Turn: Char=Caster ; BaseAngle=Default ; Time=0
WaitTurn: Char=Caster
WaitSFXDone: SFX=Player_Attack_Garnet_LH_Racket
After a test, that seems to work fine. Maybe I'll do something similar for my own mod ^^
It requires the "SFXRework" system to be activated, which should be the case by default.

However, there is no option "swap to a random target" for now, so she will attack the same target 4 times (that would have also been the case with a SA feature).

It's not possible to trade space from one text block (eg. "Black Mage Village (2)") to another. The game can only use the texts of a single text block at a time, it never uses two of them simultaneously.
The only thing you can do is to delete unused lines in order to gain size within a text block. It cannot be automatised because the tool doesn't know which line can be deleted safely.

Usually, the following lines are unused and you can delete them to gain space:

[When there is a moogle in the area covered by the text block]
"table10..." and "table20..."
"Error:Mog command"
"Old letter data. Erasing..."
You could also consider shortening/deleting the lines "Mognet is a mail delivery system..." and the following, because they trigger only if the player never went to the Mognet menu before (usually, those lines are only actually used in the Alexandria (1) text block).

[In all the text blocks]
"Test", "Null"
"Error Set Scenario Counter()..." and the following are debugging messages; they are never displayed except if the player uses an action replay cheat to go back in a closed place.
"Nothing more inside.", "Nothing more to find."
"Skip FMV"
"Party Del Error"
The names of the party members are used in several areas but not in all of them. Zidane's name, for example, is used in the "Prima Vista" text block but is unused in all the others, so you can mostly delete it. For Cinna, Marcus, Blank and Beatrix, you should assume that the name is used everytime they enter temporarily the party (so Beatrix's name is used both in Alexandria Castle (2) and in Alexandria (Night) for example).

The size limit is a big trouble when modding the PSX version and I'm afraid that it will never be possible to remove that limit when modding the PSX version.

I don't understand what you mean by "offset of texts". Also, your request surely depends a lot on whether you do a translation for the PSX version or the PC version.
For the PSX version, you can edit the "charmap" (character map) to add or modify letters/glyphs. On the charmap windows, you can also set the width of each character.

Make sure to search for previous translation work before you as well. I know that the PC version already has a (brazilian) portuguese translation.

I must have badly tested it because that was indeed a bug common to all of the HP+X% or MP+X% features.
Thanks for pointing that bug; I've fixed it for the next Memoria release.

I'll check what it is but I don't remember having that issue. Maybe that's because you use GlobalLast instead of Global? Although I don't see why it would matter... I'm pretty sure that my implementation of MP+20% on Magus Hat doesn't have that problem.

Good day to you!
It would be awesome to have more visual guides but I have such a long todo-list right now about this game that I don't feel like doing it myself at the moment.

Updating the "Memoria.script.dll" will not help toward "AbilityFeatures.txt". I can tell you however that "Memoria.script.dll" goes to "StreamingAssets/Scripts/Memoria.script.dll" by default and it can also be present in mod folders to take over that default one (for example, I have one for my own mod and thus it has the path "AlternateFantasy/StreamingAssets/Scripts/Memoria.script.dll").

Running Memoria.Patcher.exe should the be correct way to update Memoria.
There are surely problems because you have the game installed in the D: drive though, and not the C: drive. If you didn't install the game using Steam, then I don't know what happens. The normal installation path is "C:\Program Files (x86)\Steam\steamapps\common\FINAL FANTASY IX".

That code works perfectly fine when I try it (the weapon 74 is Vivi's Oak Staff).
How did you update Memoria?

The "code" tag is problematic with the forum's tag, so it's not obvious to read your message.
However, I think that your only problem is that ">SA" and "GlobalLast" are not on the same line. You must have:
Code: [Select]
>SA GlobalLast
and not:
Code: [Select]

No, it's not possible to overcome that limit with HW but you can bypass it using a trick (basically healing the enemy to simulate a max health increase; that's what I did for my own mod for Necron).

On the Steam version of the game, using Albeoris's Memoria tool, it is possible to really overcome the max HP limit without any drawback or side effect. It is not very convenient to do it right now but it should be better relatively soon, and when that comes the information will be provided in the wiki (it doesn't explain how to do that yet).

Update to v0.43.
That's a big update, with several new features, half of which I still don't know why I did them and who will ever really use them...

- Added a Damage Calculator: that's something I wanted for a long time. It doesn't take into account the enemy's elemental boost bug in the PSX version so it can be inaccurate for a couple of enemy attacks depending on the language you play (in PSX, enemies can benefit from elemental boosts but that depends on the language, eg. Sealion has a Water boost but only in the PSX japanese version).

- Added a Walkmesh editor, a Walkmesh OBJ exporter and a Walkmesh OBJ importer. Now walkmeshes can be (almost) fully edited. The editor of the tool is not very convenient or practical, but it allows to change path flags that cannot be passed to an OBJ model. The addition of this editor makes the script editor a bit more convenient regarding the functions "EnablePathTriangle" and "EnablePath" as you can now double-click on the 3D model of the walkmesh to select the triangle/walkpath you want to enable/disable.
Although the walkmesh editor is accessible for both the Steam and the PSX version, it is very buggy on the PSX version and sometimes place newly-added triangles at random positions in-game.

- Added "command" version of the tool. It is a fake command-line version because it still uses an interface but it allows HW to be used by external programs by providing it a sequence of commands written into a file. In the ZIP, I added a file, "CommandSample.txt", that shows how to use this feature and should run fine if you have the Steam version of the game installed.

- Added the options "Memoria -> Export as Custom Field/Battle". These take an existing field or battle and simply create Steam assets (same as "Save Steam Mod" with the option "Raw Assets") with the correct paths and filenames so they can be used by Memoria as additional fields/battles without the need to replace existing ones. I tested a adding a custom field and that worked correctly.
In addition to using that option, creating a custom field/battle requires:
-- reference them in another script, adding a "Field" or "Battle" line using that custom field/battle's script ID,
-- create a file "DictionaryPatch.txt" in your mod folder and copy/paste a line that Hades Workshop provides,
-- for fields, you need to edit the files "[ModFolder]/FF9_Data/embeddedasset/text/[LANG]/location/loc_name.mes" and adding an entry for specifying the custom field's name (these files are generated when you have modified another field name and saved Steam mod with "Raw Assets" and they can be edited with a text editor).
I guess that the convenient workflow for making a mod with custom fields/battles is to have 2 HWS files: one without the custom fields/battles but with all other modifications and the scripts referencing to custom IDs, a the other HWS with only custom fields/battles (because you can't add fields/battles in the lists in Hades Workshop, so you can't have the base field/battle and the custom field/battle simultaneously).
The assets generated this way are not removed when generating a Steam mod (except if you picked the same identifiers as existing fields/battles, which is not advised).

- Added a couple of datas that can be changed in field backgrounds: the depths and positions of tiles (individual tiles or tile sets) can now be changed. I think that most (all?) bug fixes provided by the Moguri mod concerning incorrect tile depths (as described in this topic) could be done using that feature instead of editing the scripts (and potentially make mod compatibility more difficult).

- Fixed several bugs and added several improvements. The world map battle spots or place names should now work correctly (both when saving HWS files and generating Steam mods). "Opening-for-FMV" should not cause any problem anymore. Several script functions were given a name and description instead of the "0xXX" default names. Script batch exporting are a bit better commented because entries are correctly named in the Main_Init function (typically the "InitObject" lines). etc.

Hello stir472.

The name of the function is automatically using the entry's model. You can't change it indeed: it's automatically set when it finds a line "SetModel" in the entry's functions.

In order to add a NPC, first get off the "Edit Script" window and start by adding an entry in the "Edit Entries" window. Set that entry's type to "Object" (I think it is the type number "2" if I recall correctly), remember the newly added entry's ID and confirm.
Then only, go back to the "Edit Script" window and right-click on the function list to add a function. Select the newly added entry and create a function of type "0" (the "_Init" function). In there, add the code to initialize your NPC (you can copy/paste the content of another "_Init" function of an object-type entry and change the positions and the "SetModel" value). Also add a line "InitObject" in the "Main_Init" function to actually initialize it when entering the screen.
Then add whatever code you want for your NPC (most likely, add a function of type "talk button").

Make sure to have the option "[Graphics] Enabled = 1, TileSize = 64" in your file Memoria.ini (it is "32" without Moguri and "64" with it). The bug you show on your screenshot is 100% related to that.

Hello ViviQuen.
You are indeed supposed to get it from Gilgamesh. If you got the S-rank in disc 3, that means you didn't have the mod properly installed. Most likely, you are playing the PC version of the mod and have the Moguri mod installed and didn't let AlternateFantasy have priority over MoguriFiles (and didn't notice the mod was malfunctionning until now).
In Memoria.ini, you need to have "AlternateFantasy" written BEFORE "MoguriFiles" in the list of mod folders, to ensure compatibility.

Sorry for the delayed answer. Since you were new on the forum I didn't get notified your message.

Hi Seramera,
Congrats on doing all that already. That's really neat.

Many script variables are indeed used by the back engine. The scenario counter (General_ScenarioCounter) is used indeed a lot (for city destroyed and whether Iifa roots expand to post-Terra spots on the World Map, but also whether Garnet has long or short hair and surely I'm missing some). The friendly flags (FriendlyMonster_Progress and the first bit of Ragtime_QuizzSuccess) disable the possibility to encounter those friendly monsters. The pepper spot flags (Chocobo_ParadiseFound and Chocobo_MognetFound) change the appearance of the entrance on the world map etc...
The "General" variables are usually the ones used by the engine. It sometimes happens that the engine fetch local or global variables for "hotfixes", especially on the Steam version of the game. At the end of the day, that's very rare though so you'll most likely never get to one of these instances. Here's an example of such hotfix that can be found in the engine's source code: it increases the score of the Blank sword fight minigame by checking that the field map is 64 (A. Castle/Public Seats), that the running script is a function of the object 4 (Code4_Init or Code4_Loop) and even the exact binary position of the code executed (after the normal score is computed but before the "SetTextVariable" line). So you can see in that example that hotfixes are very specific: you'll almost surely won't have issues because of them. Also, these hotfixes aside, script variables (local or global) are never used by the engine so you can't mess with it by using "VAR_GlobBool_1" especially if it weren't used in the field's script already.

I don't have a complete list of these hotfixes or how the engine uses general-type variables for purposes like the ones you spotted.
Unfortunatly, these uses are spread in the code and hard to interpret.

I don't understand your 3rd question. Ice Cavern's Entrance and Daguerro's field scripts should be editable like any other. I'll check if there is a problem with these but there shouldn't.

I am currently working on an update of the tool that will fix the issues with the field 70: Opening for FMV (among other things).

I don't know of a better way to check if the player character is in the region. I think that your solution is actually the best suited and fits with the spirit of programming tricks they usually used.

(By the way, Global-type variables can be used up to index 79. If you use "VAR_GlobUInt8_80", it will get out of the array range and probably at least throw an exception on Steam, effectively at least terminating the script function, or have an unexpected behaviour on the PSX version. I'm not sure if that limit is documented correctly in the tool.)

I am obviously not going to answer his new questions.

@carl09876: I don't know what is your age or your situation, so I'm not going to lecture you on how to behave, on the internet or elsewhere. I'll only say that, without even considering the insult, I have been thinking that you don't pay attention to what people write to you and mostly ignore them. It is very dishonest of you to accuse someone else of doing that.

@akirat9: Here they are.

@carl09876: About item/card steals/drops, mostly no. These are hardcoded in the battle code, which is MIPS in the PSX version and CIL/C# in the Steam version. I guess you can try changing the steal % of each item slot on the PSX version in the MIPS panel (with a bit of luck, these "256/64/16/1" pourcentages are written plainly in the code, so you'd just have to change these figures, even though it will change the rates for all the enemies). If you are on the Steam version, then you can change the code of the Steal script for this kind of result (check out the documentations on how to use Memoria). It is actually not a bad idea to add fields to change these % chances; I'll see what I can do for the next version of Memoria.

When you add/remove an enemy to a group, make sure to change the script accordingly (Edit Script -> function Main_Init -> make sure that the "InitObject" lines match with the changes you made).

The corruption of .hws files happen when you try to modify the script of the field "Opening-for FMV" or when you change something in the panels "Environment -> World Maps -> Place Names" and "Environment -> World Maps -> Battle Spots". I am currently working on an update of HW that will fix that bug amongst other things.

Everything is written down in the "Readme.txt" file.

The installation depends on whether you're using the Steam version or the PSX version. Basically, you install the PSX version by applying a PPF patch to the original game files using the tool PPF-O-MATIC and you install the Steam version, you must first install the Moguri or Memoria Engine mod, then install Alternate Fantasy by moving the right files at the right place and registering it in "Memoria.ini".

On Steam Memoria's last release allows you to download and install this mod (and a few others) all through the launcher.

HW is quite sensible to mods, even those it generates itself. Other than that, there should be no problem. It used to scan correctly the japanese, US, UK, french, italian, german and spanish PSX images; I don't have copies of them anymore to thoroughly check but it still scans correctly at least the US version.

When it scans a game successfully, it generates a "Final Fantasy IX (Disc 1).hwf" file next to your PSX image that contains the results of the scan so you don't need to do that anymore next time.

So I guess you are trying to open a modded version of a PSX image. If you know which mod it is and you can remove it (eg. it's a .ppf with an "undo" feature), do that then open it with HW. In many cases, HW will then generate a .hwf that you can use even after re-applying the mod (close HW, re-apply the mod but keep the .hwf next to the game and with the same name, then re-open the PSX image with HW).
If you don't know what mod your game has, you'll have to get another version of the PSX image first, one that is not modded or only very slightly modded. If you're using the US version, I can share .hwf files as well; hopefully they'll work.

Hum... By default, these dialogs are not translated in all the languages. The balloon mini-game was translated in french but not in english for example and the ATE in Cleyra was not translated in any language if I recall correctly. In these situations of a missing translation (but with good remnants of the deleted scene in the script), the lines are often replaced by "debug" as a placeholder or empty text. In other situations, the line was completly removed, resulting in a shift in the text IDs depending on the language (that is why there is not always the same number of texts depending on the language).

So you don't have these lines properly translated, either because you unlocked those scenes yourself in the scripts (in which case, congrats!) or because you imported only a part of a mod unlocking them (typically you unticked the "Texts" box when loading the .hws) or because the script-related modifications are properly installed but somehow the text-related modifications are not (the scripts are stored in a sub-folder of "StreamingAssets" while the texts are stored in a subfolder of "FF9_Data").

Pages: [1] 2 3 4 5 6 ... 33