Author Topic: [PSX/PC] KERNEL.BIN editor - WallMarket (v1.4.5)  (Read 392060 times)

Kudistos Megistos

  • Banned
  • No life
  • *
  • Posts: 3936
  • Karma: 1
    • View Profile
Wall Market, FFVII KERNEL.BIN editor
« Reply #225 on: 2008-12-16 18:34:45 »
Quote from: NeoCloudstrife
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.

Akari

  • Freak
  • *
  • Posts: 761
  • Karma: 26
    • View Profile
Wall Market, FFVII KERNEL.BIN editor
« Reply #226 on: 2008-12-16 19:14:41 »
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.

BlitzNCS

  • Freak
  • *
  • Posts: 891
  • Karma: 2
  • Master of nothing in particular
    • View Profile
    • My Youtube
Wall Market, FFVII KERNEL.BIN editor
« Reply #227 on: 2008-12-16 19:15:39 »
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 Edit: 2008-12-16 19:18:36 by NeoCloudstrife »

Akari

  • Freak
  • *
  • Posts: 761
  • Karma: 26
    • View Profile
Wall Market, FFVII KERNEL.BIN editor
« Reply #228 on: 2008-12-16 20:08:53 »
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.

NFITC1

  • No life
  • *
  • Posts: 2899
  • Karma: 72
  • I just don't know what went wrong.
    • View Profile
    • WM/PrC Blog
Wall Market, FFVII KERNEL.BIN editor
« Reply #229 on: 2008-12-16 20:49:58 »
Well, it's an attack editor; how about giving it a name like Scarlet or Heidegger?

You mean like this?

Something that does this or this? That's on the first post already. ;)
« Last Edit: 2008-12-16 20:54:38 by NFITC1 »

Kudistos Megistos

  • Banned
  • No life
  • *
  • Posts: 3936
  • Karma: 1
    • View Profile
Wall Market, FFVII KERNEL.BIN editor
« Reply #230 on: 2008-12-16 20:59:38 »
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?

NFITC1

  • No life
  • *
  • Posts: 2899
  • Karma: 72
  • I just don't know what went wrong.
    • View Profile
    • WM/PrC Blog
Wall Market, FFVII KERNEL.BIN editor
« Reply #231 on: 2008-12-16 21:07:47 »
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

The Seer of Shadows

  • No life
  • *
  • Posts: 1146
  • Karma: 0
  • I used to be indecisive. But now, I'm not sure...
    • View Profile
Wall Market, FFVII KERNEL.BIN editor
« Reply #232 on: 2008-12-17 00:48:36 »
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?

burnloungaz

  • Cool newbie
  • *
  • Posts: 64
  • Karma: 0
  • www.burnloungaz.synthasite.com
    • View Profile
    • Burnloungaz's site
Wall Market, FFVII KERNEL.BIN editor
« Reply #233 on: 2008-12-17 07:15:50 »
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.

Izban

  • Insane poster
  • *
  • Posts: 376
  • Karma: 1
    • View Profile
Wall Market, FFVII KERNEL.BIN editor
« Reply #234 on: 2008-12-17 10:11:01 »
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

NFITC1

  • No life
  • *
  • Posts: 2899
  • Karma: 72
  • I just don't know what went wrong.
    • View Profile
    • WM/PrC Blog
Wall Market, FFVII KERNEL.BIN editor
« Reply #235 on: 2008-12-17 12:12:28 »
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.

Jonnylossus

  • Crazy poster
  • *
  • Posts: 115
  • Karma: 0
    • View Profile
Wall Market, FFVII KERNEL.BIN editor
« Reply #236 on: 2008-12-17 12:24:52 »
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

I think you are talking about meteor.

http://wiki.qhimm.com/FF7/Technical/Customising

Quote
Meteor     Field editor, with dialog, script, walkmesh and encounter editing.     Synergy Blades     0.2b

burnloungaz

  • Cool newbie
  • *
  • Posts: 64
  • Karma: 0
  • www.burnloungaz.synthasite.com
    • View Profile
    • Burnloungaz's site
Wall Market, FFVII KERNEL.BIN editor
« Reply #237 on: 2008-12-17 13:41:00 »
any clue on how to extract the field files?

NFITC1

  • No life
  • *
  • Posts: 2899
  • Karma: 72
  • I just don't know what went wrong.
    • View Profile
    • WM/PrC Blog
Wall Market, FFVII KERNEL.BIN editor
« Reply #238 on: 2008-12-17 13:57:03 »
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 Edit: 2008-12-17 14:43:37 by NFITC1 »

Kudistos Megistos

  • Banned
  • No life
  • *
  • Posts: 3936
  • Karma: 1
    • View Profile
Wall Market, FFVII KERNEL.BIN editor
« Reply #239 on: 2008-12-17 14:43:13 »
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.

burnloungaz

  • Cool newbie
  • *
  • Posts: 64
  • Karma: 0
  • www.burnloungaz.synthasite.com
    • View Profile
    • Burnloungaz's site
Wall Market, FFVII KERNEL.BIN editor
« Reply #240 on: 2008-12-17 15:22:15 »
no!!!! make the kernal.binXX files, i use it for fixing errors. I allways run into mistakes with my pc, for instance it crashes in the middle of it saving. so the kernal.bin files get corrupted. so i have back ups to just slip in the cluster of kernal.binXX files. so please dont get rid of that please. =(

burnloungaz

  • Cool newbie
  • *
  • Posts: 64
  • Karma: 0
  • www.burnloungaz.synthasite.com
    • View Profile
    • Burnloungaz's site
Wall Market, FFVII KERNEL.BIN editor
« Reply #241 on: 2008-12-17 15:49:29 »
Btw the guy is trying to bring up the fact that ff7 and 10 are connected. interesting, took me a few days but i played all the games involved and watched advent children and i see the connection. after finishing WM Take a look. then play 7, watch advent children, play dirge of cerberus and then play 10 and 10-2. after that think about it and you will see it massive cleary, the writer of ff7 and x10 is trying to make a point about the real world. funny really.

NFITC1

  • No life
  • *
  • Posts: 2899
  • Karma: 72
  • I just don't know what went wrong.
    • View Profile
    • WM/PrC Blog
Wall Market, FFVII KERNEL.BIN editor
« Reply #242 on: 2008-12-17 16:15:05 »
Btw the guy is trying to bring up the fact that ff7 and 10 are connected. interesting, took me a few days but i played all the games involved and watched advent children and i see the connection. after finishing WM Take a look. then play 7, watch advent children, play dirge of cerberus and then play 10 and 10-2. after that think about it and you will see it massive cleary, the writer of ff7 and x10 is trying to make a point about the real world. funny really.

#1. Don't double post. The "modify" button is there for a reason.

#2. I know what that website is trying to say, but I don't know what the ""key item" found by wallmarket. "Memories of yuna"" is that NeoCloudstrife is talking about.

#3. I think I'll add a "save/load pieces" option to the file menu. I don't know why your pc is crashing, but in the interest of accuracy and complete compatibility WM should not exclusively load from them.

BlitzNCS

  • Freak
  • *
  • Posts: 891
  • Karma: 2
  • Master of nothing in particular
    • View Profile
    • My Youtube
Wall Market, FFVII KERNEL.BIN editor
« Reply #243 on: 2008-12-17 16:55:01 »
You know, i have no idea what i'm talking about either. and no, it wasn't a key item, it seems to be below "guide book"...the decription had red box tags and squares (which i'm assuming are japanese characters exposed to an unjapanese format)
it wasnt there in PC mode, only PSX mode, and i cant seem to find it anymore. i may have deleted it, however...
also, as a slightly less weird side note, is the kernel responsible for the HP values of enemies? if so, maybe that could be a nice addition to wallmarket :wink:

Kudistos Megistos

  • Banned
  • No life
  • *
  • Posts: 3936
  • Karma: 1
    • View Profile
Wall Market, FFVII KERNEL.BIN editor
« Reply #244 on: 2008-12-17 16:58:26 »
Everything about enemies is in scene.bin. If you want to change their HP, use Hojo.

burnloungaz

  • Cool newbie
  • *
  • Posts: 64
  • Karma: 0
  • www.burnloungaz.synthasite.com
    • View Profile
    • Burnloungaz's site
Wall Market, FFVII KERNEL.BIN editor
« Reply #245 on: 2008-12-17 17:03:02 »
sry bout double posting, my pc crashes because my pc sucks and is over packed(laptop, overloaded harddrive makes it shut down cause it gets to hot), and for the other guy enamy hp is determined in scene.bin. ...


i have an idea, why not make wallmarket a universal editer? insted of just kernal go scene and field scripting.....just a thought.

NFITC1

  • No life
  • *
  • Posts: 2899
  • Karma: 72
  • I just don't know what went wrong.
    • View Profile
    • WM/PrC Blog
Wall Market, FFVII KERNEL.BIN editor
« Reply #246 on: 2008-12-17 20:00:39 »
WM will only ever be a kernel editor.

So I created 1.1.7 that no longer creates the kernel pieces on its own. Rather, it will detect their presence and offer the option to open the pieces or not. It will also create them only when the user chooses to (via a new menu option) and delete them as well. This should fix about 90% of the file-related errors that people get since it will only ever read one file unless you tell it otherwise. Down side of this is it will require more memory. Peaked at just over 24MB (*cough**cough*thankyouverymuchWindows*cough* :P) where previously it was peaking out at just under 22MB I think. Let me update the help file a little and I'll throw it on filefront.

Armorvil

  • Freak
  • *
  • Posts: 621
  • Karma: 0
  • Working on : FFVII Total Grudge
    • View Profile
Wall Market, FFVII KERNEL.BIN editor
« Reply #247 on: 2008-12-17 21:01:34 »
Just one little thing, when you have the time, NFITC1 :
Heidegger is listing the scene files in hexadecimal, while most other tools and documents list them in decimal values... Could you change them to decimal, too ? It would allow one to use gjoerulv's enemy list more easily, for instance.

NFITC1

  • No life
  • *
  • Posts: 2899
  • Karma: 72
  • I just don't know what went wrong.
    • View Profile
    • WM/PrC Blog
Wall Market, FFVII KERNEL.BIN editor
« Reply #248 on: 2008-12-17 21:36:26 »
Just one little thing, when you have the time, NFITC1 :
Heidegger is listing the scene files in hexadecimal, while most other tools and documents list them in decimal values... Could you change them to decimal, too ? It would allow one to use gjoerulv's enemy list more easily, for instance.

NO! I HATE YOU PEOPLE AND YOUR DEMANDS. ....wait. Oops, wrong board. teehee ;) Yeah.... Just updated it. :D
Really I've been meaning to update the Attack ID listed above the Attack names. Now it shows the actual game ID rather than the index in which appears in the file. It goes to 65535 on blank ones because their index is NULL (FFFFh).

The Seer of Shadows

  • No life
  • *
  • Posts: 1146
  • Karma: 0
  • I used to be indecisive. But now, I'm not sure...
    • View Profile
Wall Market, FFVII KERNEL.BIN editor
« Reply #249 on: 2008-12-18 01:43:09 »
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.

You... are... amazing.  How do you do these things so quickly?  Are you sleep-depriving yourself or something? (please tell me you're not)

Character IA is in the kernel, isn't it?  It's used for Vincent's Limit Breaks and for Sephiroth.  Will this ever be changable?  And if it's not, do you know where it is stored?  I just wanna see what happens when you make Galian Beast, Hellmasker, etc. controllable, that's all.  As for making Seph controllable, I think I found a certain topic on that a while back.  I'll have to go looking for it.