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.


Topics - Karifean

Pages: [1]
1
Hey there qhimm, figured I'd share a project of mine going on - it's a Java tool that parses and prints out data and script from Final Fantasy X files in readable formats. The intent of the tool is mainly to give enough context into what bytes do what so that you may use a Hex Editor to achieve results you want, though it may yet grow into something bigger or at least hopefully inspire proper tools to be made. What originally started as being my own solo work (however using files from pbirdman's mod to gain some initial insights) has since grown into being more collaborative, getting lots of extra information from other modders on the FFX Speedrunning Discord and Noclip.

Link to the Repo: https://github.com/Karifean/FFXDataParser
Link to a .jar of the Parser (status 25.09.2023): https://drive.google.com/file/d/1oMzROUYfSy4J1oh8U_01FCT4kSeLqSuj/view?usp=sharing

What can you do with it currently?

 - First and most importantly, extract script code from field events, battle encounters and monster AIs and print them in a (more) readable format.
 - Extract and print information on all abilities usable in battle including items.
 - Extract and print information on auto-abilities on gear.
 - Extract and print information on treasure and weapon pickups.
 - Translate text strings to and from FFX formats including parsing entire files.
 - Potentially more to come.

If you're having trouble with the tool setup but still want to see some of the disassembled code of the game's internals, I periodically run the parser across the entire set of field scripts (jppc/event/obj, excluding the /bl/ blitzball folder because it's massive, instead separating them into their own output), encounter scripts (jppc/battle/btl) and monster files (jppc/battle/mon), as well as parsing of all abilities and upload them to my Google Drive; you can find them here:

Field Scripts: https://drive.google.com/file/d/15Tml4Q87ZGJ8NbDvC1nVA-IST4hMPLk2/view?usp=sharing
Encounter Scripts: https://drive.google.com/file/d/15ZjWRhtKVV_wsMNKqPgnGB6UtW7TQq6W/view?usp=sharing
Blitzball Scripts: https://drive.google.com/file/d/12GZAndawUfrAvMKI5uHxBqb4_KX8qDkP/view?usp=sharing
Monster AIs: https://drive.google.com/file/d/1QTdIA_J9VtATPLl7Pkd9iAywAI2ThVkX/view?usp=sharing
Abilities: https://drive.google.com/file/d/1O9y4pXPOfDtNUT7bm5mtW0_5_zJUITCk/view?usp=sharing

Preview:


A lot of this tool's script parsing capabilities are based upon the work of fkelava/peppy and his Fahrenheit github project (https://github.com/fkelava/fahrenheit) and Ghidra project into disassembling the game's .exe file. Major shoutouts to him.

This is a public github project for anyone to contribute to or take anything from, and I welcome assistance in further disassembling the yet unknown data, constants and functions. For now, I hope this tool and parser output will be of use to some people looking for information on this game's internals, like I was looking for when I started this whole thing. Cheers!

2
Hello qhimm,

so there's a few ways to change characters' Attack/Magic/Defense/MDefense/Def% bonus values during battle. From what I know they're only controllable through the "Additional Effects" on Attacks, namely effects 0x15, 0x16, 0x17 and 0x1C. Now the problem here is that while 0x15 and 0x1C affect the target of the attack as is right (given that they're from Hero Drink and Dragon Force respectively), 0x16 and 0x17 affect the caster instead. I would like to add magic spells to the game akin to the Persona series' Tarukaja, Rakukaja and Sukukaja spells (if you don't know them, basically think Attack Buff, Defense Buff and Agility Buff) but the fact that these affect the caster instead of the target is a bit of a problematic wrench there. And from what I know there's no other way to affect these stats.

Is there a way to change these Effects so that they affect the target of the attack instead of the caster, like 0x15 and 0x1C? Or is there maybe a different way to affect stat bonus values altogether?

3
Hey there. I've just had some ideas for a mod of mine to make the game balance a little different, but unfortunately I've run into problems with them.

First is to have a fraction of all damage you take persist to your max HP for that battle. Easily done with a Post-Attack Character AI script in WallMarket and works fine; only problem is that the max HP value does not update in the battle menu. It works - you cannot heal above the new max HP value - but the menu doesn't reflect that. Anybody know a way to deal with this issue in the PC version?

Secondly, I'd like to halve the party members' limit gauges after every battle to make it more of a challenge to use higher level Limit Breaks effectively. Fortunately there's a Post-Battle Character AI script I can (hopefully) use for that purpose. Unfortunately, I haven't found anything indicating the address on this address list or WallMarket/ProudClod's dat files. Tifa's Premium Heart uses the value for damage calculation so I'm guessing it's readable? Anybody know this one?

4
So I had the idea of having Barret's and Vincent's guns work similar to FF XII, in that they completely ignore the enemy's defense, always hit, and mostly (in FFXII: completely) run off their own attack stat rather than the user's stats having much/any influence. So I turned to the item formula.

Now of course the problem I had already predicted would appear did indeed appear, which is that the attacks always deal between 240 and 256 damage, because Attack has an attack strength of 16, and nobody cares about the weapon's or character's strength. Is there an easy way to circumvent this problem or would that require rewriting the game's damage calculations? Or is there a good alternative? If it doesn't work out I guess I'll just go with the regular damage formula.

5
So I've been experimenting with letting characters have 3 Limit Breaks on the LB Level 1. Problem is, Tifa's reels don't play along. The reel for her third Level 1 Limit Break is always a pure MISS reel. Is there any way to fix this?

6
Releases / [FF7PC] Superboss Rush Challenge (v1.1)
« on: 2014-01-16 21:15:14 »
Final Fantasy VII - Superboss Rush Challenge

Version 1.1, Made by Karifean

DOWNLOAD VERSION 1.1

File Type: RAR, includes one EXE file (patcher) and one TXT file (readme).

What is this?

This is a slight modification of Final Fantasy VII PC, simply changing the "Hall of Beginners" in Junon to a "Hall of Battles". In there, you can fight all the storyline bosses in order, but they've all been made into superbosses! Do you think you can beat them?

The idea is that you install this mod, load up your best save file and give these bosses a try. There're no rewards for it, it's just to challenge yourself. All bosses' AIs and stats have been reworked. Many of them still act in a similar fashion as their original versions did, but none are the same. How far can you get before you get (your first) Game Over?

I strongly urge you not to use any of the 'forbidden' items or materia. They are classified as such for a reason.

How to install this mod?

The following files from an English FF7 PC installation are required:
scene.bin, KERNEL.BIN, flevel.lgp, battle.lgp

Copy them into a separate directory, all together, and then let the patcher run. Replace the original files with the patched ones (don't forget to make backups of the original files!) and you're done!

Note: Even though the KERNEL.BIN must be updated, this is solely for the scene.bin lookup table. Character stats and materia functions etc. are completely unchanged.

Further information can be taken from the Readme.

Special Thanks goes to SegaChief, XeroKynos, NTIFC1 and GeneralIronside for helping when I needed it. You guys are awesome!

Screenshots

Rufus has been playing some FFX-2.


Reno is not oblivious to the power of his Pyramids.

7
So I'm trying to make a custom Jenova SYNTH battle and I'm having some trouble: one of the tentacles is in the wrong spot. As in, both tentacles' "target" marker are on the right tentacle.

Now I don't quite understand what even places the markers in the first place. All 3 instances of JSYN are in the same location, at least in the Formation preset, yet I assume via AI their marker is replaced to where, graphically, the tentacle is located. One line of code seems to be doing this:

Code: [Select]
Self.Unknown(4278) <- 16
This applies to the JSYN instance with FormationNumber == 1. For the instance with FormationNumber == 2, this variable is set to 20 instead. Finally, the instance with FormationNumber == 0, in other words the main body, has it set to 3.

This is the case both in the original JSYN battle as well as my own. Yet the problem still occurs.

If you need it for better understanding, here is the Pre-Battle Routine of my homemade JSYN:

Code: [Select]
0x000LocalVar:0020 <-  (ActiveMask.FormationNumber == 0)
0x00ELocalVar:0040 <-  (ActiveMask.FormationNumber == 2)
0x01CSelf.Flag:Unknown(00001000) <- 1
0x026 If ( (Self.FormationNumber == 0) )
0x026 {
0x033 Self.Flag:Unknown(00001000) <- 0
0x03D Self.Unknown(4278) <- 3
0x047 LocalVar:0020 <-  (ActiveMask.FormationNumber == 1)
0x055 }
0x055 Else
0x055 {
0x058 If ( (Self.FormationNumber == 1) )
0x058 {
0x065 Self.Unknown(4278) <- 16 (MBarrier)
0x06F Self.MHP <- 150000
0x07B Self.HP <- 150000
0x087 }
0x087 Else
0x087 {
0x08A LocalVar:0040 <-  (ActiveMask.FormationNumber == 1)
0x098 Self.Unknown(4278) <- 20
0x0A2 Self.MHP <- 150000
0x0AE Self.HP <- 150000
0x0BASCRIPT END

Edit:

Seems the problem lies elsewhere: a test message revealed that the query (Self.FormationNumber == 1) never returns true, which means that both tentacles have their Unknown(4278) variables set to 20, which makes them overlap. Now to find out just why the condition doesn't work...

Editga:

Solved it, the problem was that I called on the FormationNumber with the "02" command instead of the "01" command. Silly me. Works fine now.

8
I seriously do not get how this works. As far as I can tell, there are two different lines that end up storing another enemy in a variable:

Code: [Select]
LocalVar:00XX <-  (AllyMask.EnemyID == ???)

and

LocalVar:00XX <-  (BitCount(Self.FormationNumber) == ActiveMask.FormationNumber)
LocalVar:00XX <-  (LocalVar:00XX.EnemyID == ???)

Both of them are used quite a bunch of times. The Rufus battle uses both; Rufus uses the top version, Dark Nation uses the bottom version. And yet, I can't quite see through it. Sometimes it randomly stops working, especially when using "manipulation" - as in changing the Self variable for a moment to have another enemy execute an attack. And what is does that line in the middle actually do?

To give a more concrete example, I have modified Dark Nation to use a custom skill (ID 03E9h/1001) on Rufus if it dies and Rufus is still alive. The following code comes into play:

Dark Nation's Pre-Battle Script:

Code: [Select]
0x000LocalVar:0020 <-  (BitCount(Self.FormationNumber) == ActiveMask.FormationNumber)
0x014LocalVar:0020 <-  (LocalVar:0020.EnemyID == 68)
0x022TargetMask <- AllyMask
0x029Perform("Reflect"[0011], EnemyAttack)
0x02FSCRIPT END

and Dark Nation's Death Counter Script, naturally:

Code: [Select]
0x000 If ( (LocalVar:0020.Status:Death == 0) )
0x000 {
0x00D TargetMask <- LocalVar:0020
0x014 Perform(1001, EnemyAttack)
0x01ASCRIPT END

And yet, Dark Nation did nothing. How come?

9
So I'm making a mod with direct battle transitions, Hojo-style. One major problem that arises is the Imprisoned status. Some enemies in the gauntlet - in this case Reno - are capable of inflicting this status effect on party members. Problem is, if it is not remedied until the enemy is defeated, it will never go away. The character will remain inactive forever.

Obviously, I have the un-imprison routine (sets Flag:Enabled to 1 and Status:Imprisoned to 0) in Reno's Death Counter script and even in the following enemy's (Sample:H0512's) Pre-Battle script. Doesn't matter, the characters remain Imprisoned. I have no idea why the status refuses to be remedied. Making the Pyramids use their Vanish skill also doesn't work.

I even tried making Reno's (Report) ability target all party members and remove the Imprisoned status. It ended in a Game Over, don't ask me why.

10
Is there any way to check for specific materia or remove them? The designated opcodes don't seem to work at all.

The only scripts I could think of that do this are the Huge Materia and the initiation of the Yuffie sidequest, but both of those seem to be hardcoded using the MENU opcode.

On a similar note, is it possible to unequip all party members' accessories?

11
Scripting and Reverse Engineering / AI Editing: Flag 402C
« on: 2013-08-30 23:58:57 »
So in the midst of all the unknown addresses in the ProudClod.dat and WallMarket.dat, there is address 402C. Has anyone ever found out what exactly it does?

I'm asking because it has become important for me right now. I am trying to make a boss rush gauntlet and certain bosses would cause trouble. Palmer is a perfect example. If you delete his whole Death Counter, the next formation in the gauntlet will be invisible and as soon as you press the triangle button, you can no longer select commands and the battle is frozen. Likewise, if you don't delete his Death Counter, his "final attack" (where he runs off and gets hit by the truck) initiates Wait Mode, but never goes back to Active Mode so the next battle in the gauntlet is screwed just as much.

HOWEVER if you set flag 402C to 1 in his Pre-Battle script, it works fine! It also works for the other troublesome enemies (basically all the ones that don't have a red-flashing death animation) such as Rufus or Dyne. This is super-convenient, but I'm kind of interested in what the flag actually DOES, so... does anyone know?

12
So I gave an enemy the model of Party Member Sephiroth. Problem is, his Masamune is missing. Any way this can be fixed?

And on a side note, can you use the animations of PM Sephiroth without too much trouble or is it going to be tough? (So far all the ones I've tried just froze the fight)

13
Okay, I'm stumped on this one. I'm trying to make an enemy not use his elemental attack if 2 party members absorb it. I just can't figure out how you can check to see if a party member absorbs an element.

Any ideas?

14
Archive / Modding PS-Network (PS3) Version
« on: 2009-07-24 20:18:10 »
I'd like to know, is it possible to mod the PSN-version of FF7? Like copy the scene.bin and kernel.bin from your computer to your PS3 using a USB-Stick or something like that.

At first I thought it was impossible, but then I saw this Youtube-video:

http://www.youtube.com/watch?v=N6gMru9Cjis

If I'm not completely mistaken, that strange menu at the very beginning of the video is a PSP/PS3 menu, isn't it??

Edit: Something also speaks for PS3 - the option "Controller Settings" in that menu. Since neither PC nor PSP have controllers, that can only be PS3, right? And no, neither PSX nor PS2 have that menu...

15
Archive / Adding new enemies
« on: 2009-07-17 14:14:25 »
I got a bit of a problem...

I created a new enemy, using Hojo and Proud Clod, and set his attacks, HP, immunities and his AI. The new enemy is in readiness, except for two things.

1. How do I view and change enemy models in Kimera? I cannot find any enemy models anywhere. :-( I would like to change the Doorbull-model - its size and color. Then I would like to give my new enemy that specific model - how to do that?

2. How do I add new encounters? I do not mean in specific screens, but when picking up a materia or something like that. Example, when picking up the Double Cut materia you should fight Gilgamesh. :wink: By the way, I know that I can add encounters to screens using Meteor-tool, but what about the world map? Where can I view its encounters and/or change them? :?

I hope you can help me - thanks already!

16
Archive / Encounter, AI and Model Problems
« on: 2009-07-10 15:05:40 »
Hello there, I'm new at this forum, and I'm new to FF7-Modding, too. My first goal was to create a monster called "Omega Weapon", which is stronger than Ruby and Emerald, has four million HP and must be fought in order to get KotR-materia. Of course, if I had known it'd be so much work to do that, I'd surely have given it up fast...

I started by downloading a bunch of modding-programs; Proud Clod, Hojo, Scenester (which doesn't work, by the way), Meteor, Teioh, WallMarket, Loveless, Kimera, PCreator, Gast and Jenova.

Using Hojo, I managed to find a free space for my Omega Weapon. I did all normal things: setting HP/EXP/AP/Gil/Items Dropped/Status and Elemental Immunities. The first program came up here - there were no spells to set.
So I started Proud Clod. I found my Omega Weapon (which mysteriously moves 1 file between Hojo and Proud Clod) and set up some spells, such as Level 3 Death.
Next problem: I couldn't set it up, so Omega Weapon would use Level 3 Death only when the battle starts. And that was where the 'disaster' started. I nearly had a shock when I looked at "Edit AI" :?. I'd have never thought it'd be so complicated - and in hex-code. I searched for a tutorial for this, but everything I looked at only got me more confused. Ex.: On one page I found different actions with Opcodes, like 92 for RunCmd. Though I was able to type 92 into Opcode column, but typing anything into argument would result in an error... I now understand that the "Attack IDs" are very important. But so far, I gave up on that.

Next problem: I couldn't figure out, how to trigger the battle vs Omega Weapon just when picking up the KotR-Materia. I couldn't do it with Meteor or any other programs... I'm afraid, that's hex-code again. I also searched for help, but couldn't find any that solved my problem.

Last problem: At the beginning, I had the plan of making Omega Weapon look like in FF8, and I figured the model of "Doorbull" would be the best, if I could just make it bigger and change its color. I downloaded a few model-editors for this, but now I don't come any further. Where's the Doorbull-model? I could never find out the answer to that question.

I'd like to have a solution to all these questions and the only way I've found was to register in this forum and ask you all myself. If possible I'd also like a link to a good and easily understandable guide for enemy AI-editing. By the way, I've downloaded HxD, but I think Proud Clod is more understandable than that...

Can you help me?

Pages: [1]