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 - nfitc1

Pages: 1 ... 107 108 109 110 111 [112] 113 114 115 116 117 ... 121
2776
So the series of camera angles at the start is classed as an attack? thats whats confusing me since when i tried just for the hell of it to replace another bos with sephiroth since i don't have any disc 3 data yet and wanted to see if my changes worked with the boss it loaded. Showed sephiroth the black screen but it looked like when it goes to the camera screens it froze and crashed could be because i had 2 people in my party i dunno.

Oh! If you want to change the camera angle at the beginning of the battle you'll have to change the formation setup at the beginning of the scene. I'm sorry, I thought you were talking about the "Done-In" animation. For that battle those will appear somewhere in this range of bytes in that scene:

0x01C - 0x02F
0x044 - 0x057
0x088 - 0x0B7
0x0E8 - 0x117

Unfortunately, there's not a lot of public documentation on these pieces so I'm not sure what they do. Regardless I believe that intro camera angles exist somewhere in there.

2777
The animation and camera are completely controlled by the attack itself. Don't change any of that. Also don't forget that the 32 bytes preceding that script will need to be updated to reflect the beginning point of each script section.

2778
1. Yes, it's totally possible to make him a better final-battle. There's room for 32 attacks in any scene and his scene only uses 17. Don't touch Done-In. It's very specific attack that needs to stay the same. Feel free to add more attacks.
2. Yes, his AI will need significant re-writing. From TFergusson's Enemy Mechanics guide this is his script:

Code: [Select]
AI: Setup
{
   Sephiroth's [402C] = 1
}
AI: Main
{
   Choose Cloud
   Use <Cut> on Target
   Set Cloud as Self
   Choose Sephiroth
   Use Attack Command on Target
}
AI: Counter - General
{
   Choose Self
   Use <Done-in> on Target
   Remove Self
   RunCmd 0x22/0x0F
}
AI: Counter - Death
{
   Choose Self
   Use <Done-in> on Target
   RunCmd 0x22/0x0F
}
AI: Counter - 13 [Post-Defeat/Battle]
{
   [2110] = [2110] OR 0x08
}

There's plenty of things that could be changed, but don't leave out the Initialize script, RunCmd 22h/0Fh in the Counter-Death script or the Post-Battle script. Since we don't know for sure what they do.
402C is almost certainly "Don't allow death visual". ie, when target "dies" it flashes red and disappears. If this is set then the target won't do that. It's mostly only used in boss battles when the boss has a specific run-away animation.
Command 22/0F and the 2110 OR 08 have unknown functions.
Still, shouldn't be too hard to do.

2779
FF7 Tools / Wall Market, FFVII KERNEL.BIN editor
« on: 2009-02-10 20:44:14 »
Ah, Yes. Well, this certainly looks easy enough assuming that I did have an external translate table. It looks like everything from 60h onward (with a few exceptions) is never used in the game anyway. It wouldn't be a big deal, I suppose, to change them. The FFVII font itself is just a 32-byte shift from an ANSI standard font family anyway.
Yeah, I've run into DTEs (I never called them that) before while editing FFV and VI. They have pairings like "ng", "st", "th", etc. common pairings that show up all over.
WM is currently looking at text character by character to see how to store them. I'd have to change it to two characters, but I don't think that'll be an issue since the compressions is a byte-wise compression and not text-wise. I'll look into it. Thanks for the idea!

2780
FF7 Tools / Wall Market, FFVII KERNEL.BIN editor
« on: 2009-02-10 18:12:15 »
Hey, thanks for the link! I'll make good use of it. ;)
Anyway, if I were you (but I don't know how hard it is, so I may be wrong ;-) ), I wouldn't disdain an option to load external tables in your wonderful program. I assure you that DTEs save a lot of space!) and special characters.

Thanks again.

I have been toying with the idea of a translatable GUI since I know that some people that use WM are not monolingual English speakers. I'm not exactly sure what you mean by DTEs (could you give me an example?), but on context it seems that that wouldn't be an illogical extension of that idea. Currently, you can enter any of the special characters listed on that table into the description fields. I just currently don't have a way to allow the user to do that easily. I've tried several things and wasn't satisfied with any of the solutions. Copy/Paste is the only option left to the user at the time.

2781
FF7 Tools / Wall Market, FFVII KERNEL.BIN editor
« on: 2009-02-10 13:49:43 »
Hello there and congrats for your wonderful program.  :-D
I was curious to know if it can compress the text within the files (not using the gzip compression, but with that other system used in PSX kernel.bin, I'm positive you noticed and hacked it), and if it's possible to edit the text table used by the program (in order to make it use special characters, graphical DTEs, etc.).

I'm working on a translation of the game and I'm having problems with maximum size (as of now I just put graphical DTEs which work flawlessly, but I'm sure it's possible to have even more space for translating with the compression).

Ciao!

Do you mean the compression detailed at the bottom of this page? Then yes. WM already uses that compression method to write text to the KERNEL.BIN. It can be slow on some systems so I made it optional. Just remember to click the "Update Text" box next to the PSX button when you want to change the text in the KERNEL.BIN. It will have to be in PSX mode for this to be available. WM produces exact binary clones of all pieces of the original data all the way down to the gzip file (with one exception that I can't quite explain). I can't say the same for the kernel2.bin file because WM actually makes it smaller (but still fully functional).
To answer your second question about the text table. No, it cannot be changed externally. If you have a custom table of characters in your game I can only suggest that you use that as a reference against that page I linked to earlier.

I just completed the last major programmatical hurdle in version 1.2.0. Don't expect an update very soon because now I have to
1. Get it to save the scripts back to the data it holds
2. merge my "proving grounds" app with WM
Not HARD tasks, but it'll take time. Just wanted everyone to know that barring me getting hit by a bus that the next version is coming. If I make this thing look easy then I'm sorry. ;)

2782
FF7 Tools / Wall Market, FFVII KERNEL.BIN editor
« on: 2009-02-09 20:43:28 »
This is quite odd. I've just tried giving the MPs different MHP in different scenes as well as changing the attack data for their machine gun attack (using Heidegger ftw!), and it worked for me; the MPs outside of the reactor had different MHP and different damage calculation for their machine gun attack from the ones inside.

Hmm. Maybe it's because I was using a dummied scene that the first Adamantaimai didn't have any effect on the other one. But I know that KERNEL.BIN attack data trumps the data in the scenes so I assumed the attacks in the scene did too. If it really can be different from scene to scene, I wonder why identical attack data is written into then and uniquely indexed. Hmm....
I GOT IT! The developers were idiots. :P Actually, I don't know why they did this. I had assumed, when I started Heidegger, that the attack indexes were just 0-31 since I knew there are no more than 32 attacks in each scene. This is quite perplexing. I still want to be able to edit every instance of an attack, but I guess I should allow for individual scenes as well...

2783
FF7 Tools / Wall Market, FFVII KERNEL.BIN editor
« on: 2009-02-09 18:27:58 »
M'kay, I'm confused. Do you mean that every attack with the same attack ID will have the same data as the first instance of that attack in the scene.bin file? And monsters as well? (I presume that would be based on ID too). For example, if there were an attack with the ID 0101 in the first scene file, the 27th, the 36th and the 129th, would the game would always use the data from the first file?

I think so. Two things could happen when a scene is loaded with an already loaded attack.
#1, the game sees that that attack ID is loaded in memory and doesn't re-load it.
#2, the game re-writes it with the attack in the scene file each time.

The KERNEL.BIN attacks always trump the scene.bin attacks. I changed Demi in KERNEL.BIN and a monster that does Demi used the KERNEL.BIN's data to do damage.

I'm pretty sure this happens with monsters too, but the other way around. They might be different depending on where you encounter them. ie, there are a few instances of Gargoyles in the later scenes even though the data is identical. This seems to me, and hopefully many other people, that this is a very inefficient way of storing the data for monsters and attacks as there are several repeated blocks of identical info.

In scene 6 (which, I believe is a dummied scene anyway) there is an Adamantaimai, but in scene 44 it appears again with an identical set of data, AI, attacks, etc. Editing the first instance did nothing. I had to change the script of the second one to get the results I wanted.

2784
FF7 Tools / Wall Market, FFVII KERNEL.BIN editor
« on: 2009-02-09 15:03:37 »
It occurred to me the other day that I'll have to update Heidegger again. I thought I was happy with it, but now it seems like it's going to be problematic.
As all of you who use it (may or may not) know, every attack that a monster uses in a scene has data in that scene. Well, problem is that the game loads all ~1000 attacks into memory at the beginning of the game. This makes most of the attack data in each scene mostly redundant. Why was it done this way? Who knows. Probably something modular on the part of the developers that they never thought needed changing. This, however, over inflates the SCENE.BIN file as it is with many occurrences of the same attack data for every monster. The attack "Body Blow" is in 38 different scene files! However, it's useless to edit just one of them if you want them all to be that attack unless it's the first one. If the game reads an attack data for an attack that is already loaded it ignores it. So what I want to do with it now is eliminate the scene selection altogether and just have a HUGE list of attacks to the attack selection box on the left of it. Then when it saves it will re-write pretty much every scene that has that attack so you can know that it is going to do that attack. But it will only load attacks IDs >= 256. The others are in the KERNEL.BIN and limit breaks so changing them in the scene.bin won't do any good.
So I'll have to devise a way to inform the user which monster(s) use each attack and which attacks each monster uses. Sounds complicated because it is. :( Oh well. I like a challenge.
It also does this with monster data. If a monster is in multiple scenes, it will only use the first one's data.

WM 1.2.0 is coming along. I've just got to be able to save the Character AI and we're in business. Actually, then I have to merge my test prog into WM and THEN we'll have 1.2.0. :) I'll get there eventually. Just continue to have patience.

2785
Oh, on the "Ogre Nix" issue:

In Japanese, it was spelled OGANIKUSU. Which, if Romanjinized to an actual English word, becomes "Organics". However, as a Proper Noun, it could be anything you want. Ogre Nix would not be an inappropriate stretch of this word, depending on which syllable the stress fell upon.

2786
Hmmm, it should be possible to make a mod to fight every single boss in the game, one after the other; *that* would be a challenge! I'm going to have a go at that.

You'd have to be careful with that. You couldn't just change the bosses' scenes or we'd end up fighting all of them every time we were supposed to fight one. :-o

2787
I changed it to 9c 03. This gets more awesome!  8-)

[img]

I've also found that by putting in the foundation ID of the battle being fought (here 58 03), one can fight the same battle an infinite number of times. This might come in handy if anyone wants to have an endless stream of enemies for some reason.

That is beyond awesome! Now an enemy can be made that needs to be fought 200+ times before a win. Like a horde of soldiers or stampede of Elfadunks. I've been considering changing the Characters' AI Scripts to actually affect the love points instead of dumping them in a unused portion of memory. Then those memory blocks (80 - 83) could actually be used for something useful such as keeping track of how many of the monsters have been defeated. :D
Or possibly better yet, a single battle could be made that has you fighting EACH WEAPON IN TURN! I think I'm going to try to set that up and make a YouTube video of it. :D

Quote from: NFITC1
The scripts looks fine (If I'm reading them correctly), but I have a theory as to why this isn't working. You're referencing monsters in a different scene from Hojo's script. I don't know if this has any effect or not.

I'm not quite sure what you mean here; could you elaborate? All of their data is in this file, unless you mean that they have to be exclusive to this scene.

I think I misunderstood your first post. If you replaced the Samples' data with the Unknowns' data in the scene then there's no problem.

Unfortunately, this still doesn't solve your problem. It's possible that there's something in the Samples' animations that allow them to "appear" when activated.

2788
Archive / Re: Sephiroth patch KERNEL.BIN
« on: 2009-02-06 12:14:48 »
I'm getting victory screen but the EXP gains the old Sephiroth.
That might be because you swapped the Character IDs. The game uses that value for some things and not others, but I'm pretty sure it's all battle-related. Maybe since you switched Cloud's/Sephiroth's Character IDs and the old Sephiroth's ID is now active and the old Cloud is inactive, the Exp is going to character ID 0Ah (Sephiroth's old ID) and not to 00h (your Sephiroth's ID, I suppose). Restore the original Character IDs (just the IDs) and try that.

2789
Archive / Re: Sephiroth patch KERNEL.BIN
« on: 2009-02-06 02:40:07 »
Ah HA! A KERNEL.BIN question. I'd be only too happy to help.

Within the KERNEL.BIN, the only data for Sephiroth in the third section are his two scripts. The Init and Main. The Init basically just tells the Main to take control of him. Control can be regained by either NULLing out his INIT pointer (at 0xACE - 0xACF) or NULLing his script pointer (0x630 - 0x631) all together. Sephiroth's stat/HP/MP/Exp curves are probably shared with Cloud. TFergusson believes that Sephiroth's Exp curve is shared by Cloud. Whether or not this is true can only be determined if Sephiroth can level up. Since they can't even get exp during the flashback, then their curves aren't important.

Quote
I edited mostly section 4 of KERNEL.BIN. I swapped their stats and IDs.
Swapping IDs (the first byte of character data) doesn't seem to do a whole lot. Instead, try swapping their AI pointers in the third KERNEL.BIN section.

Sephiroth's Init Script (0x0AEE) does this:

BattleVar(Self).CharVar(Flag(0:4)) <- 1 (Activate Main Script)
BattleVar(Self).CharVar(Flag(1:1)) <- 1 (Not sure)
BattleVar(Self).CharVar(Flag(1:0)) <- 1 (Not sure)
BattleVar(Self).CharVar(Flag(1:2)) <- 1 (Not sure)

Not all these flags are known. I'm basing a lot of my info on Akari's findings of battle addresses, but I'm going to guess that one of those Flag(1.x)s sets the invulnerability and one cancels the victory rewards. Try deactivating one at a time to see what happens.
The three bytes in the third KERNEL.BIN section you'll want to try changing are:
0x0AFC, 0x0B06, 0x0B10 to 28h, 29h, or 2Ah. Have one repeat and leave one out and see which one gives you a victory screen.
You can also probably safely point two characters to the same script if you'd like. So changing 0x61E and 0x61F to B2h and 04h respectively will point both Sephiroth and Cloud to the same scripts. You could also use the 75h code in Cloud's INIT script to link his with Sephiroth's scripts (60 0A 75 73; probably safer) then just re-point the INIT script to after the point where it says "Activate Main Script" (change 0xACE from 20h to 2Ah).

There's a lot of info here, so if you want some clear-er directions on my suggestions we'll try again. :)

2790
So, theoretically, if you set it to itself will it be in a continuous battle? Sounds fun, but isn't Bizzaro facing the wrong way? :D I just updated the wiki with this discovery.

2791
The scripts looks fine (If I'm reading them correctly), but I have a theory as to why this isn't working. You're referencing monsters in a different scene from Hojo's script. I don't know if this has any effect or not.
That info on the unknown parts of the scene files is interesting. Battle Setup and Formation is still largely unknown, I think. Is 0x035C the Monster ID or battle formation ID of Helletic(/Heretic) Hojo?

2792
Right off the bat I can see that I need to know what is stored at address 0x0000 (Looks like the Death Status, actually). That's going to be in the init script. Can you post that too plz? There may be some "issues" with that too.

The Main looks fine except for this part:

Code: [Select]
12 70 20 PSHA 2070
10 20 40 PSHA 4020
80 AND
60 01 PSH 01
90 STOR

I can't really tell what this is supposed to do. Actually, I know it's setting the target's flag 00 at 0x04, but I don't know what that flag does. Maybe invalidates their Exp/Gil/AP? Oh well. Further research is unnecessary.
You've also got a block checking his MP against the Capsule attack. Capsule normally costs no MP, have you changed this?

2793
Could you post Hojo's main script? It's normally got an "activate" command that may not be firing properly in this situation.

2794
Well, as I said, hardly any of it is my work  :-P. I found an attack list for all enemy attacks somewhere in these forums and I found one with all the player attacks and decided to merge them and add some info on how attack data works.

Quote from: NFITC1
How do you determine what monsters use which attacks in a given scene without reading the scripts? Is that even possible?

I'm not sure what you mean here. Are you asking how the person who put together the enemy attack list got all the info right? Or something else?

Still, it's a good find. ;)
Yes, but I want to know how that person knew that those attacks went with those monsters. I could go through all the monsters' scripts and look at the attack IDs they perform, but that's a very lengthy process. I guess it's the only way....

2795
I can confirm that they do work the way NFITC1 has described, as I found when I used enemy skills and enemy only attacks as animations for wind water and darkness spells (that's right, I never miss a chance to advertise  :-P )

And on a related topic, I have updated my FF7 attack data file, which I think is the most complete of its kind (I say my; 99% is the work of other people on qhimm). It can be downloaded in .doc, .odt and .txt formats here.

Wow! Totally going to steal that attack list! :D Best thing I've found yet!
Thanks for confirming the animations for me. How do you determine what monsters use which attacks in a given scene without reading the scripts? Is that even possible?
I don't mind you "advertising" your WM-created mods in my topics. ;)

2796
As per Tsetra's request, I've just made a listing of all the used attack animations (byte 0x0D of attack data) and put it here: http://www.mediafire.com/?yoynjegujn1
(Yes, I know Silence is listed twice after number 13, ignore that. There's also more than one of "Escape", "Sewer Tsunami", etc. as well; That's why there are multiple listings)

It occurs to me now, about six-and-a-half months after writing this that it needs re-writing. It was enough explanation for the people that were helping me develop WM (and thereby understanding parts of the inner workings of the FFVII), but it's not enough for people who are coming in to the scene. So, because I've gotten 50 requests or more (actually, it's been more like 5, but I don't want it to GET to 50) I've decided to revisit this and re-explain how the animation index works.

If you're starting out using WallMarket/Proud Clod and want to change animations of attacks you'll quickly realize that some of the values don't make sense. Different attacks can have the same animation index and still look very different. The reason is simple. There are more than 256 animations for attacks even though the animation value itself is only one byte. Therefore, it is offset based on the attack index. Specific ranges of attack indexes will add a fixed amount to the animation index supplied in the attack information. This value can then exceed 256 will then select that specific animation (all animations are found in magic.lgp in the PC version and I think there are just about 300 or so). This value I will call "absolute animation index" and the value supplied by the attack information will be called "relative animation index".

So then the question becomes: "What do I need to change the relative animation index to to get a specific absolute animation index?"
Since WM and PrC display this information in Hexadecimal, I'll do the math in that mode. Most calculators can do calculations in hexadecimal including the calc.exe that comes with all Windows versions. Switch it to Scientific mode and you can switch between Decimal and Hexadecimal at any time.
First, I need to explain what ranges of attack index add what value to the relative animation index. Here's the list:

Bosola has provided information to indicate that these values might not be correct for certain PSX versions

Code: [Select]
Index range        increase (PC)   increase (PSX)   description
000-037              0              0                Player-accessible Magics
038-047, 060-061     [not sure]     4E               Summons
048-05F              36             36               E.Skills
062-0FF              EC             [not sure]       Limit Breaks
100~FFF              4E             60               Enemy-exclusive Attacks
(replace 'FFF' with whatever the upper limit for attack indexes is)

In short, to get the absolute animation index from an attack's supplied relative animation index:
  • For Player-accessible magics, do not increase
  • For Summon attacks, increase by [currently unknown amount]
  • For E.Skill attacks, increase by 36h
  • For Limit Breaks, increase by ECh
  • For Enemy-exclusive attacks, increase by 4Eh

Since this value is stored as a byte, there are limits to what certain attacks can look like. For instance, Player-accessible magics can't look like any of Yuffie's Limit Breaks because those absolute indexes cannot be achieved without increasing the relative indexes.

Let's look at an example:

The easiest thing would be to look at relative animation index 00h. The attacks Light Shell, Frog Song, Pyramid, Reanimagic, Cure, Capsule, and Right Arm Revive use this. They don't all look alike, but some of them do. Their attack indexes are:

Cure: 000
Frog Song: 048
Light Shell: 26A
Pyramid: 15D, 15E, 15F (these are three separate attacks for reasons I won't go into, but they all look the same)
Reanimagic: 18E
Capsule: 38B, 38C (same as Pyramid)
Right Arm Revive: 38F

Now we have to add the fixed values to find what animation index to use. Since the relative index of all these is 0, we add the fixed increase to 0 (remember, these values are in Hexadecimal).

Cure: 0 + 0 = 0
Frog Song: 0 + 36 = 36
Light Shell: 0 + 4E = 4E
etc.

If we want Cure to look like Light Shell we need to change it's relative animation index to produce the absolute index 4E. Since this is a Player-accessible magic, that means making the relative animation index 4E.
For Frog Song, we'll need to do a little algebra:
rel + inc = abs
x + 36 = 4E
x = 4E - 36
x = 18
so changing Frog Song's relative animation index to 18h will make it look like Light Shell.

IMPORTANT NOTE: animation indexes can not go "backwards". ie, Light Shell cannot look like Cure because Cure's absolute animation index is less than the increase Light Shell's index gives. Light Shell's absolute animation index limits are 04E-14D inclusive.
I also don't believe it's possible to get an enemy attack to look like a summon. Better just give them the summon attack instead.

Interesting note: Increasing an enemy attack's relative animation index past ED (beyond the Limit Breaks' animations) makes them look like they're throwing Cloud's weapons. :D

Warning: Changing the Limit's animation indexes is dangerous. Most of them contain animations the "caster" is supposed to perform. I'm not sure which one's would be safe to change so I can't say.

2797
FF7 Tools / Wall Market, FFVII KERNEL.BIN editor
« on: 2009-02-02 20:11:37 »
First let me assure you all that I AM working on version 1.2.0 of WM. There was a recent Ice Storm across Central to Eastern US and I lost power for four days because of it so I'm pretty behind (though I didn't lose anything, thankfully). I'm just at a loss as to how to make the scripts editable. The easiest way is to allow the user to edit the raw bytes themselves and make a "translated version" next to it that tries to make sense of it all. Compiling is something that I have not yet tried and is probably harder than you'd think.

Now, to address Tsetra's question:

I don't know how to add NEW spells to the game. Replacing spells is easy. I recently replaced the "Exit" materia and "Escape"/"Remove" spells with "Kyuushu" Materia and "Drain"/"Osmose" spells. This worked quite well and I'm happy with the result.
Theory of adding spells:
Several Materia are dummied out. It's a simple thing to get a shop to sell one of these dummied materia too so it's easy enough to create a custom magic materia and put it in the game this way. I'm sure there's also a way to put it in a chest or out in the open field somehow, but I haven't even attempted that yet.
The problem comes in the third KERNEL.BIN section (bottom of the page) which is currently not editable in WM (that'll be in 1.2.0). This section builds the magic menu from the FIRST 54-56 ATTACKS ONLY!. This is how it keeps track of what is to be displayed in the Magic menu and in what order it is to be displayed in. Also keep in mind that the un-edited Magic menu only has 56 entries to it. No more magics can be added without first increasing the size of this list.

2798
Absolutely love the idea of this project!

The last time I went through the PC game looking for them I counted no fewer than 12 typos. I can't remember where most of them are, but I remember that one of them was when you talk to the guy in the highwind about how to fly the highwind. He tells you that one of the buttons does two things when it doesn't.

Oh, and I vote against "Ogre Nix". That's a Woolsey translation (maybe he was sad at the lack of ogres in FFVI?) and was renamed "Organyx" in the GBA port.
A good pic of the Organics (and everyone's weapon) is located here: http://www.eternal-legend.com/ffvii/equip/sword.shtml. Yes, it does look like a sword + Axe combo so if you want to leave it "Ogre Nix" that's fine, but I never liked that since it was a sword. Don't change it on my account, though. :)

2799
Archive / Re: FFVIIPC MDef bug fix
« on: 2009-02-02 12:19:57 »
NFITC1,
After writing Wall Market, by any chance have you located where the animation index table is located for all the different attacks? And if so, are there extra index values that could be used?

I can tell you several things:
1. This question is more appropriate to be in the WallMarket topic, but oh well
2. Animation index table is NOT in any piece of the kernel. I haven't looked at any other files than the KERNEL.BIN, kernel2.bin, scene.bin and ff7.exe files
3. I can get Heidegger to make me a listing of all the animation indexes used by monsters to see if any of them aren't used.
4. Some of them (particularly summons and limits) are probably in their own category and can't be swapped between them (eg. Howling Moon can't be made to look like Big Guard, Life2, Choco/Mog, etc).
5. When I get this info I'll probably make a new topic about it so everyone knows what it's about (so you know not to check back here :)).

2800
Archive / Re: A Secret left hidden
« on: 2009-02-01 15:15:20 »
AHHH!! ZOMBIE TOPIC!!! DIE DIE DIE DIE!!!!!

Pages: 1 ... 107 108 109 110 111 [112] 113 114 115 116 117 ... 121