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

  • Thread starter Thread starter nfitc1
  • Start date Start date
Status
Not open for further replies.
There isn't much that one can do with commands right now :-(; I don't think anyone knows where the data determining how they work is. The only things one can really change by editing kernel.bin0 is the targeting info and the camera, not that that isn't useful: I made my "flash" command hit one enemy only and my "slash-all" toggle multiple targets so that it works like magic + all materia (i.e. one can choose whether to attack one target or all, and the damage is reduced by 1/3 when targeting all).
 
There isn't much that one can do with commands right now :-(; I don't think anyone knows where the data determining how they work is. The only things one can really change by editing kernel.bin0 is the targeting info and the camera, not that that isn't useful: I made my "flash" command hit one enemy only and my "slash-all" toggle multiple targets so that it works like magic + all materia (i.e. one can choose whether to attack one target or all, and the damage is reduced by 1/3 when targeting all).
Commands mostly hardcoded. Not that much you can change about them.

Jump can be made by any attack (spell for example). Just create animation of jump and syncronize it with damage infliction. Easy, but we don't have editors for this thing.
 
That's a shame  :cry:

So, other than the things that can be changed in the kernel, can anything about them be edited? Is modding them just very hard and complicated or is it impossible to do without making huge changes to the way the game works?
 
Question. Can the kernel(s) determine how many people are in and who is in the party at particular points in the game, and also what stats they have at random intervals. so say for instance i was recreating a different game based on the FF7 engine. Would editing the Kernel allow me add characters when you meet them, give them X stats, remove them when they are removed from the party and make them return freely, and with different stats, just like Aeris and sephiroth are? I'm simply curious to see how this is done, if it anything to do with the kernel, and if so, would WM be able to do this in the future? something tells me the code in the scene files denotes this, however...

EDIT:
NFITC1, with your help, i can now conclude that the website i stumbled across years ago was right:
http://www.willamette.edu/~ejohnson/findex.htm

take a look at the ideas conveyed there, then take a look at the latest secret "key item" found by wallmarket. "Memories of yuna"... suspicious?

:P
 
Last edited:
Question. Can the kernel(s) determine how many people are in and who is in the party at particular points in the game, and also what stats they have at random intervals. so say for instance i was recreating a different game based on the FF7 engine. Would editing the Kernel allow me add characters when you meet them, give them X stats, remove them when they are removed from the party and make them return freely, and with different stats, just like Aeris and sephiroth are? I'm simply curious to see how this is done, if it anything to do with the kernel, and if so, would WM be able to do this in the future? something tells me the code in the scene files denotes this, however...
*whistle* That's a complicated question. The short answer is no. The kernel has data for Sephiroth and Young Cloud for the Kalm flashback, then that data gets forcibly overwritten by Vincent's and Cait Sith's data by the active script at some point after the flashback is over, possibly as late as the moment they "join the party". The kernel does not contain these characters' stats and, regrettably, can't be affected by WM. Aeris's data never actually leaves the memory. Only the flag allowing you to switch to her is turned off. Same thing can be said about assigning stats. I don't think the game ever assigns this (indeed, there may not even be a function to do so). Rather, it will calculate stats based on average party level at the time the character is first recruited. They start out at level 1. Then they are given experience until their level is within a certain level of the average level of your active members (which is counted in halves in kernel.bin2). Their levels and stats are then increased accordingly.
It is most unfortunate as Vincent's and Cait Sith's initial data are not in the kernel. I don't even know where they are, but they're probably hard-coded into the main executable script.
 
Question. Can the kernel(s) determine how many people are in and who is in the party at particular points in the game, and also what stats they have at random intervals. so say for instance i was recreating a different game based on the FF7 engine. Would editing the Kernel allow me add characters when you meet them, give them X stats, remove them when they are removed from the party and make them return freely, and with different stats, just like Aeris and sephiroth are? I'm simply curious to see how this is done, if it anything to do with the kernel, and if so, would WM be able to do this in the future? something tells me the code in the scene files denotes this, however...

Listen to that something. If you are talking about having more characters (instead of replacing them for the whole game), you'll have to edit a lot more than the kernel, including but not limited to flevel.lgp and battle.lgp. You'll either have to make some other character IDs shared or add more slots. I'm not sure which will be harder, but neither will be easy.
 
You can't edit number of character in party and in battle. Arrays that holds data for battle units have fixed size (10), most of checks are done like "if (unit_id < 3)"

ps:I see that there is one more slot in battle (4th), but now I think it's for additional script that direct whole battle. Terrence can answer for what 4th slot exist. I still can't. But Im very positive about that you cant adjust number of people in party or in battle.
 
Question. Can the kernel(s) determine how many people are in and who is in the party at particular points in the game, and also what stats they have at random intervals. so say for instance i was recreating a different game based on the FF7 engine. Would editing the Kernel allow me add characters when you meet them, give them X stats, remove them when they are removed from the party and make them return freely, and with different stats, just like Aeris and sephiroth are? I'm simply curious to see how this is done, if it anything to do with the kernel, and if so, would WM be able to do this in the future? something tells me the code in the scene files denotes this, however...
*whistle* That's a complicated question. The short answer is no. The kernel has data for Sephiroth and Young Cloud for the Kalm flashback, then that data gets forcibly overwritten by Vincent's and Cait Sith's data by the active script at some point after the flashback is over, possibly as late as the moment they "join the party". The kernel does not contain these characters' stats and, regrettably, can't be affected by WM. Aeris's data never actually leaves the memory. Only the flag allowing you to switch to her is turned off. Same thing can be said about assigning stats. I don't think the game ever assigns this (indeed, there may not even be a function to do so). Rather, it will calculate stats based on average party level at the time the character is first recruited. They start out at level 1. Then they are given experience until their level is within a certain level of the average level of your active members (which is counted in halves in kernel.bin2). Their levels and stats are then increased accordingly.
It is most unfortunate as Vincent's and Cait Sith's initial data are not in the kernel. I don't even know where they are, but they're probably hard-coded into the main executable script.
so, if i were to come across sephiroth & cloud's stats (possibly in the EXE?), i guess i could use them as a base. i wonder if "young cloud" can level up just as a normal character can...if of course i could completely skip the parts where they "join the party"...active script? you mean scene files script? anyway, can these "flags" that you speak of be controlled via the kernel? and do you have any idea about how the game works out when on the timeline it triggers them? lol i'm pretty curious about this stuff now.

EDIT: just to clear things up, my intention was not to discover if More people could be added to the overall party, but if the people that are already in it could be triggered/added earlier/later than usual, thus being able to give my own feel to a game, if i ever decided to build one upon the FF7 engine.
 
Last edited:
EDIT: just to clear things up, my intention was not to discover if More people could be added to the overall party, but if the people that are already in it could be triggered/added earlier/later than usual, thus being able to give my own feel to a game, if i ever decided to build one upon the FF7 engine.
Yes, you can, via field script.
 
That's quite an odd name for an attack :mrgreen:. Was that random silliness or is there a 4chan meme that I am missing out on?
 
That's quite an odd name for an attack :mrgreen:. Was that random silliness or is there a 4chan meme that I am missing out on?
Just something random from H*R. Mostly just to see how long the names could be. :D
 
lol!  That's one random attack name!

One question: I know that you can edit attacks with WM and expect the enemies that use those attacks to have the changes you made.  For instance, if you turned Fire2 into Ultima, then every enemy that has Fire2 will use Ultima instead.  As a result, if you edit attacks that are in the kernel using Heidegger, the changes you made will not register unless the kernel is updated, right?  Is there a way that you could use Heidegger to change an enemy's attack such as Fire to one that's not in the kernel, such as Pale Horse?

The reason why I'm asking is that I want to make an uber Safer Sephy.  I want his Wall to cause Peerless, but at the same time, I don't want my characters to be inflicting Peerless on each other every time they use Wall.  I also want to make his Break more fearsome without changing anything about the Break my characters use.  This would mean changing both to completely different attacks, won't it?  Any way to do that?
 
niftc1 do you know of any program that can change events? or even add them? for example in reactor 1 there is a recovery materia, would i be able to change it to a different one. if i did i know the text would need to be edited but its worth it.
 
there is one its called metero or metior i cant remember im fairly certain that synergy blades made it but its only in beta stages and hasnt been updated in a long while
 
lol!  That's one random attack name!

One question: I know that you can edit attacks with WM and expect the enemies that use those attacks to have the changes you made.  For instance, if you turned Fire2 into Ultima, then every enemy that has Fire2 will use Ultima instead.  As a result, if you edit attacks that are in the kernel using Heidegger, the changes you made will not register unless the kernel is updated, right?  Is there a way that you could use Heidegger to change an enemy's attack such as Fire to one that's not in the kernel, such as Pale Horse?
This is correct, but the answer to the second question is no (I originally believed it was yes, now I know differently). The reason is that all the attacks are indexed. On the wiki there's a space in the scenes labeled as Attack IDs starting at address 0x0840. I originally thought this to be specific to the monster, but now it seems it's universal like I had pre-originally thought (it's a long story, don't worry about it). The only way to change a monster's attacks would be to change THAT number and the corresponding attack equivalent in their script. Not a simple task, but not impossible either. I MAY add a feature to Heidegger that will allow reassigning of attack IDs, but don't get your hopes up, that's a VERY ambitious action. What I CAN do is make a data sheet of different attacks' IDs. The data will still have to be changed in the scene files, however.
Basically, if you want to give another monster Pale Horse you'd have to put Pale Horse's data in that monster's scene file(s) and give it a reference in its own script to perform that action. So it is possible, but not with Heidegger (which I've only been working on for a day anyway) at the moment.
 
A command-level decision must be reached so I'm putting it to my faithful users. Should WM make the KERNEL.BINXX files anymore? They're not needed because I found out that I can create dynamic arrays (how 'bout that?) that I can store the de/compressed info in. This would be several disk-writes shorter (and possibly make writing the kernel virtually instantaneous if the text isn't being updated). This is currently what Heidegger is doing. It reads the scene.bin and stores all 256 compressed scenes and decompresses them when needed. When a scene is selected it is decompressed into a scene file array. Since they're all 7808 bytes this part was easy. When the "Somethingchanged" check is on (though admittedly it's supposed to be invisible. sorry ;) ) and the scene changes, Heidegger re-compresses the scene that's currently loaded and puts it back in its place before loading the next scene.
So let me give you a little history lesson about WM (for those who don't know or are getting in on the ground floor on how it works). Early on in the development (before 0.9.0 was released) WM couldn't decompress or compress the KERNEL.BIN. So it relied on FF7dec to split the KERNEL.BIN into the 27 pieces so it could load each of those and draw info from. Then I decided that I could do that myself to remove a step that people shouldn't have to take. Since it was already written to use those files I just created files with the same names. This was also for the compressing. WM had to rely on GZip to compress the files (until version 1.1.5 when I learned to do it myself) then WM would read the .gz files and squish them all together in the KERNEL.BIN. This is no longer needed since all GZipping happens internally.
It is still reading from these files and writing to them. This is mostly because some things still aren't being edited (such as the KERNEL.BIN2), but now that even raw data can be edited, there's NO byte in any kernel file other than in KERNEL.BIN1 (some of these WILL NOT be touched because it would be pointless to do so) and KERNEL.BIN2 (feature coming soon) that cannot be edited. Text is also being created dynamically and appropriately. At the moment, KERNEL.BIN2 can be Hex Edited and then WM will read whatever is inside it and put it in the KERNEL.BIN since WM doesn't edit it. Once it does, however, would there really be any need to create these files? I think not or else you'd run into the problem that someone ran into where the data wouldn't match what was in the kernel if it was edited by another application.


PS:
NFITC1, with your help, i can now conclude that the website i stumbled across years ago was right:
http://www.willamette.edu/~ejohnson/findex.htm

take a look at the ideas conveyed there, then take a look at the latest secret "key item" found by wallmarket. "Memories of yuna"... suspicious?
I have no idea what you're talking about. I don't see a key item called "Memories of yuna" or anything similar. What information on that website are you getting these ideas from?


EDIT:
What I CAN do is make a data sheet of different attacks' IDs.
I've just done this. There are just under 1000 unique attacks in this game. I now have a text file and csv file with a list of their names and the scenes that contain them.
 
Last edited:
I'd say that WM shouldn't make the kernel.binxx files any more once every file can be edited; in any case, someone who wants to hex edit the kernel.bin files can decompress them using an older version of WM or using one of the other techniques (like this).

And as for changing the properties of attacks that the player can use when they are used by the enemies, gjoerulv confirmed on another thread that one has to make one's own version of the attack, which requires a change of ID and some modification of the AI as well (shared attacks use 60 xx 92, enemy only ones 61 xx xx 92), I've tried this a few times and never got it right.
 
Status
Not open for further replies.
Back
Top