[PSX/PC] KERNEL.BIN editor - WallMarket (v1.4.5)

  • Thread starter Thread starter nfitc1
  • Start date Start date
Status
Not open for further replies.
NFITC1 would you like to be a moderator for the game section of my forum?
No. I don't want to take the time to be a moderator to anything.

Just thought I'd leave you all with this. It's incomplete (obviously), but I'm pretty happy with it so far. Just don't ask how long it took go get that graph to work. :P
 
wallmarket doesn't recognise changes to the names of spells, weapons etc. that were made to kernel2.bin after I first used version 1.0; interestingly, it does recognise changes made with Teioh before that. The changes do show up in the game.
This is fixed now.

An unhandled exception occurs when I open my modded scene.bin; the program seems to work, but doesn't open any of the scenes from EA onwards. It doesn't happen when I open my unmodded backup, so it may be a problem at my end; I'm going to do a bit more experimenting.

But this still happens; it's a "System.ArgumentNullException: Buffer cannot be null" error.

Just thought I'd leave you all with this. It's incomplete (obviously), but I'm pretty happy with it so far. Just don't ask how long it took go get that graph to work. :-P
Looking good!
 
Last edited:
I've noticed a tab on that pic that says "spell order".  Does that mean the order of the spells on the menu?  Enemy Skills and Summons included?  Just a curious question.  "Big Gurad" and "White Wind" belong at the top of the Enemy Skill list more so than "Frog Song" and "L4 Suicide" after all.
 
Last edited:
It only includes spells on the magic menu; I don't know where the data determining in what order the enemy skills and summons go, but it is likely to be in /MENU/MGICMENU.MNU on the PSX version and in ff7.exe for the PC version.
 
Last edited:
It only includes spells on the magic menu; I don't know where the data determining in what order the enemy skills and summons go, but it is likely to be in /MENU/MGICMENU.MNU on the PSX version and in ff7.exe for the PC version.
Order of enemy skills and summons determining by their id only. There is no special data that sorts them.
 
An unhandled exception occurs when I open my modded scene.bin; the program seems to work, but doesn't open any of the scenes from EA onwards. It doesn't happen when I open my unmodded backup, so it may be a problem at my end; I'm going to do a bit more experimenting.
But this still happens; it's a "System.ArgumentNullException: Buffer cannot be null" error.
This has been fixed. Now that it's not forcing there to be no more or less than 33 scene blocks it works fine. :D I recreated LKM's scene.bin perfectly but modified the original one slightly. It's the same size as it's always been so I'm not real concerned. Heidegger now works to my intent and satisfaction. I'll fix errors/bugs, but I won't add any new features to it. It has been updated on the first post.

I think I need to take a brief moment and explain that last picture I hastily posted yesterday. Obviously there are six tabs there. These are representing all the information in the KERNEL.BIN2 file.

Character Growth:
This is where you can set the curves and limit info of the character in the List box in the upper left. The graph shows the possible range of stats for each level and the sliders cannot go outside those bars. Switching the buttons in the lower left will change the graph for the characters' stats. Changing the numbers to the right of those buttons will cause the characters to use a different curve. The graph uses initial data from KERNEL.BIN3 to get starting values so Yuffie's graphs all start at level 1 with stat 0. This will change if you modify the starting values in the Initial Character Data tab under Initial Data. Cait Sith's and Vincent's Initial Data is not contained in the KERNEL.BIN at all so their starting stats have been hard coded into the data.
Let me also add a disclaimer that the graphs assume that the stat increases are sequential in the bonuses and none are lower than the previous increases. If this is broken, the graph will be inaccurate.
You can also see frames for limits. The drop-downs there will be populated with attack names taken from KERNEL.BIN18 so as those change, these will be updated. To the right of limits X-1 and X-2 (sans level 4) there is a Uses required. This is the number of times that limit must be used to get to the next one. The game will ignore this if the next limit is empty or use count is NULL (FFFFh). The HP Divisor at the bottom right of these frames indicates....something. It's a calculation to do with MHP, but I'm not exactly sure how it calculates it. Either MHP / (Divisor / 100) damage raises the limit bar 1 point (what I suspect) or MHP * (Divisor / 100) is amount of damage required to get the limit bar to full. Regardless, the lower the number, the easier it is to "break limit" or whatever you want to call that action. :)

Curves:
The curves themselves can be edited here. Changing them will be reflected on the graph too and you can make some pretty funky curves. It might even be possible to break the program and stuff. :D On here will also be the stat bonus. The process of calculating that is basically described on the wiki and in Terence's Party Mechanics FAQ. So you can get your characters to have stats at level 100 within one level or never have any gain if you so choose. The bonuses are universal, but the curves are there to allow you to change the characters as you wish. :)

Character AI:
Admittedly this is currently blank. It will eventually have Character AI data so you can make characters automated or have them perform some action at the beginning of the battles. This will take the longest time to decode. Sorry, be patient. :(

Random Numbers:
This is just crazy stuff. It's all the numbers 0 - 255 inclusive all jumbled up. When the game wants a random number it randomly picks one of these bytes and uses that as the random number..... Crazy, I know. But you can use this to your advantage. If you set them all to the same number then your chances of really rare things happening becomes 100% (this,of course, assumes that you know the right number to change it to ;) ).

Scene look-up:
This is one of those things I'm going to classify as "use at your own risk". I'm only allowing editing of this because it's there in the KERNEL.BIN2 file. Hojo and Heidegger should be able to change these on their own, but you can set them however you want. The results could very well be disastrous so use with great care. More detail on the structure of this is in the wiki link above.

Spell Order:
This is also described on the wiki link above so I won't bother describing it further.

Have fun speculating on how great this will be. ;)
 
Last edited:
The HP Divisor at the bottom right of these frames indicates....something. It's a calculation to do with MHP, but I'm not exactly sure how it calculates it. Either MHP / (Divisor / 100) damage raises the limit bar 1 point (what I suspect) or MHP * (Divisor / 100) is amount of damage required to get the limit bar to full. Regardless, the lower the number, the easier it is to "break limit" or whatever you want to call that action.
I don't think that it is either of those: they would both require the character to lose more HP before a limit break than they actually do. T Fergusson says this in his "party mechanics FAQ":

Code: [Select]
Code:
The Limit Bar dictates when you can use a certain Limit Break.Depending on your Status Attributes, and which Limit Level you have chosento build, it will grow quickly or slowly based on the damage you take.A character's Limit Bar is measured in Units.  Once a Limit Bar contains 255Units, the Limit Bar is full, and the character may use their Limit Break.The conversion rate between damage points and Limit Bar Units is asfollows:   Units gained = [[300 * HP Lost / Max HP] * 256 * Status Factor / LNum]In the above formula, Status Factor is equal to 2.0 while in 'Fury' Status,0.5 in 'Sadness' Status, and 1.0 otherwise.LNum, on the other hand, is a special number that varies for each characterat each Limit Level.  The following table shows the LNum value for all ninecharacters at each of their Limit Levels.                   Level 1       Level 2       Level 3       Level 4     Cloud           140           324           435           506     Barret          129           240           374           450     Tifa            120           334           509           566     Aeris           200           284           322           436     Red XIII        195           300           389           486     Yuffie          200           300           400           480     Cait Sith       160           180          9590 *       12760 *     Vincent         202           244           319           426     Cid             200           280           380           480 * Cait Sith does not have either a L3 or L4 Limit Break - these numbers   are still in the data, however.Obviously, the higher the number, the larger the percentage of your Max HPyou must lose before you can fill the Limit Bar.  With the numbers above, itis possible to work out the rough percentage of HP that must be lost:                   Level 1       Level 2       Level 3       Level 4     Cloud           46.5%        107.6%        144.4%        168.0%     Barret          42.8%         79.7%        124.2%        149.4%     Tifa            39.8%        110.9%        169.0%        187.9%     Aeris           66.4%         94.3%        106.9%        144.8%     Red XIII        64.7%         99.6%        129.2%        161.4%     Yuffie          66.4%         99.6%        132.8%        159.3%     Cait Sith       53.1%         59.8%         ----          ----     Vincent         67.1%         81.0%        105.9%        141.4%     Cid             66.4%         93.0%        126.2%        159.3%
This is backed up by my experience; my Cloud (I may have modded this, I have lost track of the number of mods I have made), has a lv1 divisor of d2; using T Fergusson's formula he would need to lose 83 HP at the start of the game (with a MHP of 302) before getting a limit break. I haven't checked this, but that is approximately the amount of HP he loses before getting a limit break.
 
Last edited:
Hello,

Sorry for having some noob questions here but since the fact that I mostly hex edit the kernel.bin, I havent been able to use this program well. So with wall market you can edit the attack sound of the weapon, but does anyone know the index sound of rude's attack? Since i swap rude with barret i want to change the attack sound of barret gunshot to rude's punch.

Also, how do you change the attacking texture of a limit. For example, if i want to change the chain of machine gun shots in barret's ungarmax into a chain of grand spark, how do i do that?

Also, when i swap the limit between cloud and vincent, i got this level overflow glitch (although the battle animations are fine). Any help here?

primayb4.jpg
 
I don't think that it is either of those: they would both require the character to lose more HP before a limit break than they actually do. T Fergusson says this in his "party mechanics FAQ":

. . .

This is backed up by my experience; my Cloud (I may have modded this, I have lost track of the number of mods I have made), has a lv1 divisor of d2; using T Fergusson's formula he would need to lose 83 HP at the start of the game (with a MHP of 302) before getting a limit break. I haven't checked this, but that is approximately the amount of HP he loses before getting a limit break.
Ha. Well I certainly won't argue against Terence. It was mostly a guess on my part anyway with little to no observational data. ;)

Also, how do you change the attacking texture of a limit. For example, if i want to change the chain of machine gun shots in barret's ungarmax into a chain of grand spark, how do i do that?
No clue. Limit data isn't stored in the KERNEL.BIN so you'll have to look elsewhere for that info. The limit's name is stored in the KERNEL so you can use/change that at least.

Also, when i swap the limit between cloud and vincent, i got this level overflow glitch (although the battle animations are fine). Any help here?
What do you mean swap the limit? Are you editing the Growth data manually? At least that picture tells me needed exp is an unsigned Int32 value instead of a signed one. :)
 
Also, how do you change the attacking texture of a limit. For example, if i want to change the chain of machine gun shots in barret's ungarmax into a chain of grand spark, how do i do that?
No clue. Limit data isn't stored in the KERNEL.BIN so you'll have to look elsewhere for that info. The limit's name is stored in the KERNEL so you can use/change that at least.
Some info on limit breaks is in my post here, although I don't know how to give enemy specific animations to limit breaks, so you might have to work that out yourself.
 
Also, how do you change the attacking texture of a limit. For example, if i want to change the chain of machine gun shots in barret's ungarmax into a chain of grand spark, how do i do that?
No clue. Limit data isn't stored in the KERNEL.BIN so you'll have to look elsewhere for that info. The limit's name is stored in the KERNEL so you can use/change that at least.
Some info on limit breaks is in my post here, although I don't know how to give enemy specific animations to limit breaks, so you might have to work that out yourself.
Limit attack animation manipulated by animation script. Animation script Id for limits - hardcoded (don't remember which is which). To change effect of chain of machine gun shots in barret's ungarmax into a chain of grand spark you need to change animation script (0xF8[XX] - attach effect of machine gun shot to given model joint).  Impact effect id set with attack data though.
ps: I not looked into difficult animations scripts yet so I can't say this is 100% true, but more or less this is true =)
 
Limit swap is, well, changing the limit AI while still keeping the same ID. For example, in my Turks Mod, i modify the kernel.bin so that Rufus ( in vincent's battle skeleton ) is able to do vincent's limit break while still keep ID as Cloud. Like this:

ff72008-12-1916-28-27-23.jpg

ff72008-12-1916-28-55-26.jpg

ff72008-12-1916-29-30-17.jpg


The overflow level exp i got is after i edit the kernel and load a save file. When I start a new game, this didnt occur so I believe it is because of the kernel but I have no idea why. Anyway thanks for the information.

Btw kudistos megistos i saw your video on youtube you were able to change some spells to aero3 how did you do that?
 
Most of it was general editing with wallmarket. The only thing I found troublesome was the animation ID. It turns out that one has to add 4e to the animation ID of the enemy attack and use that as the ID for the magic attack. For example, the animation ID for Rapps' aero3 is 5c; adding 4e to that makes aa, and that the the animation ID one has to put in for a magic spell to use that animation. I found all of the information I needed to do this in this thread.
 
Last edited:
I'm eagerly awaiting WallMarket's amazing new version. Actually, my whole project is on hold till I can edit the characters' stat growth. 8-)
 
I'm doing something similar; my edits won't be quite as dramatic, but I plan to make the characters much more individual and to make the exp. curve much steeper as the levels increase.
 
I'm doing something similar; my edits won't be quite as dramatic, but I plan to make the characters much more individual and to make the exp. curve much steeper as the levels increase.
Good idea. I thought about that, too. So it looks my mod will be a "no stat growth" (with the player deciding how to use the many sources), while yours will be a "special stat growth" - with Aeris having the stat growth of a mage while Cloud would have the stat growth of a knight, for example ?
 
More or less. I'm going to exaggerate the differences between the characters in the normal game; Cloud is going to be strong in all areas, Aeris is going to be a mage, Barret will be a even stronger physically (and have the most HP), Yuffie and Tifa will be very quick, and so on. I'm also going to add some more special effects to their weapons: Barret's machine guns will be able to hit all enemies (by ticking both "start as multiple" and "toggle multiple" in wallmarket), Yuffie's weapons will be able to cause status effects (since she always has something up her sleeve). I'm trying to make every character and every weapon unique, so that the player has to choose who and what will be best to use in battle, and the decision will really matter.
 
Last edited:
More or less. I'm going to exaggerate the differences between the characters in the normal game; Cloud is going to be strong in all areas, Aeris is going to be a mage, Barret will be a even stronger physically (and have the most HP), Yuffie and Tifa will be very quick, and so on.
This looks like what I did in my own patch, with the starting stats.
Here is the character order I chose for each stat :

HP : Barret > Cid > Cloud > Cait > RedXIII > Tifa > Vincent > Yuffie > Aeris
MP : Aeris > Vincent > Cait > Yuffie > Tifa > Red > Cloud > Cid > Barret
STR : Barret > Cid > Cloud > Tifa > RedXIII > Yuffie > Cait > Vincent > Aeris
MAG : Aeris > Cait > Vincent > Yuffie > Tifa > RedXIII > Cloud > Cid > Barret
VIT : Barret > Cid > Cloud > Red > Cait > Vincent > Tifa > Yuffie > Aeris
SPR : Aeris > Yuffie > Vincent > Cait > Red > Tifa > Cloud > Cid > Barret
DEX : Yuffie > Red > Tifa > Vincent > Aeris > Cait > Cloud > Cid > Barret
LCK : Barret > Cid > Cloud > Tifa > Yuffie > Aeris > Red > Vincent > Cait

It's weird that Cait Sith has the worst luck stat, being a fortune-teller, but this choice allowed some kind of balance.
 
Cait Sith is the only one with whom I don't know what to do. I never use him, but still...I think that I might give him high HP (that giant stuffed mog must offer some protection), high magic power, low speed and low strength (surely a little cat can't hit very hard). I'm might give him weak weapons and make up for it by letting him use limit breaks more often. Actually, that might be a good way to balance things out; characters with higher overall stats and powerful limit breaks and weapons can get limit breaks less often.
 
Last edited:
I'm still a bit off in generating the HP values for each level. This is what T. Fergusson says they are:

Code: [Select]
Code:
  Cloud  8960-9511 Barret  9435-9999   Tifa  8513-9037  Aeris  8304-8816    Red  8980-9556 Yuffie  8471-8993   Cait  8608-9135Vincent  8211-8779    Cid  8682-9284
This is what my test stat prog says:
Code: [Select]
Code:
  Cloud  9007-9554 Barret  9481-9999   Tifa  8561-9075  Aeris  8348-8854    Red  9024-9585 Yuffie  8516-9037   Cait  8650-9177Vincent  8253-8801    Cid  8727-9318
They're all a little bit high as if they're going half-a-level beyond max (like lvl 99.5). Anyone have any insights on calculating these?
 
Status
Not open for further replies.
Back
Top