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

  • Thread starter Thread starter nfitc1
  • Start date Start date
Status
Not open for further replies.
BTW, in case you can stand to wait. Version 1.1 (which will allow the changing of the initial data) is already proceeding. I've been working on that since I uploaded the current version and I've already been able to change the Gil count and item list/counts. It's also loading all the characters' data, but it's not doing anything with it yet. The interface to these parts looks slightly clumsy and will probably stay that way. You've used Jenova save game editor right? well, this won't look much like it, but it'll try. :)

EDIT: Just like I supposed earlier in a previous post, changing initial party members does NOTHING so I'll just take out the ability to edit those.
 
Last edited:
This editor is the best, I'm telling you!  Very well done!  And to think v1.1 will include even more options!

I just got my best Christmas present from someone I don't know!!
 
I am ecstatic peoples' positive responses and the fact that not one person has said something doesn't work or complained about the Ms. Cloud graphic on the About window. :D Don't get me wrong. Of course I want to hear if something's not right.


So I have an idea that I want to put it to you, the users. I'm currently playing around with initial materia (initial stuff is a PAIN to test since I have to sit through that stupid first video). I'm wondering, WallMarket has the ability to enforce AP levels and master materia and such. Should I restrict the maximum AP to the highest value set on the materia? For instance, I know a mastered materia stores its AP as 16,777,215 (FFFFFFh), but should I let, say, Knights of Round materia have 600,000 when it's maximum is 500,000? In other words, should the AP selection always be 0 - 16,777,215 inclusive or 0 - (Highest Level AP - 1) & 16,777,215 inclusive?
 
not one person has said something doesn't work or complained about the Ms. Cloud graphic on the About window
Well, I was going to... ;-)

Should I restrict the maximum AP to the highest value set on the materia? For instance, I know a mastered materia stores its AP as 16,777,215 (FFFFFFh), but should I let, say, Knights of Round materia have 600,000 when it's maximum is 500,000?
Would this cause any problems in the game? If not then I wouldn't be against it. And this reminds me of something else (and sorry for not bringing this up earlier); would it be possible to have armour and accessories with elemental weaknesses as well as immunities? So, for example, one could have a piece of armour that gives the player double damage from lightning? I doubt that many people would use it, but it might come in handy.
 
I noticed two bugs. Let me explain.

I'm editing the PSX Kernel, and I'm always struggling for size, as in order to insert the modified kernel back into the ISO, it has to be smaller or equal in size to the original.
My last changes made the Kernel size go over the limit, so I decided to "delete" some descriptions by placing numerous FFh in their places. This is because, after the gzip compression, a bunch of FFh together save a lot of space.

I first tried to do this by using Wall Market : I headed into the materia tab, selected a materia, and erased its description. It seemed to work for the first materias (the "pluses" ones), but the ones below wouldn't let me delete their descriptions : the update and ok buttons wouldn't do anything. That's the first bug.

The second bug occured after I used a hex editor. I inserted FFh all over Kernel15.bin (the materia descriptions, because which FF7 veteran needs them ?), and all that was left to do was to recompile the Kernel archive. I decided to use Wall Market for this. Thus, I tried to load my Kernel files into Wall Market, and here is what I got (my windows xp version is the french one) :

Code: [Select]
Code:
System.IndexOutOfRangeException: L'index se trouve en dehors des limites du tableau.   à WallMarket.Form1.FF7Names(Byte[] NameArray, Byte NameIndex)   à WallMarket.Form1.Load_Materia_Desc(String KERNEL15)   à WallMarket.Form1.Open_KERNEL(Char kernel)   à WallMarket.Form1.OpenKERNELBINToolStripMenuItem_Click(Object sender, EventArgs e)   à WallMarket.Form1.Form1_Load(Object sender, EventArgs e)   à System.EventHandler.Invoke(Object sender, EventArgs e)   à System.Windows.Forms.Form.OnLoad(EventArgs e)   à System.Windows.Forms.Form.OnCreateControl()   à System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)   à System.Windows.Forms.Control.CreateControl()   à System.Windows.Forms.Control.WmShowWindow(Message& m)   à System.Windows.Forms.Control.WndProc(Message& m)   à System.Windows.Forms.ScrollableControl.WndProc(Message& m)   à System.Windows.Forms.ContainerControl.WndProc(Message& m)   à System.Windows.Forms.Form.WmShowWindow(Message& m)   à System.Windows.Forms.Form.WndProc(Message& m)   à System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)   à System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)   à System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
I have the same error message when I try to load into WallMarket this KERNEL.BIN after I recreated it with a GZIP MS-DOS command, by the way. And the problem doesn't come from the Kernel file, as it works great in-game.

A fix would be highly appreciated, as now my "corrupted" kernel can't be loaded into Wall Market anymore  :cry:
 
Last edited:
So, for example, one could have a piece of armour that gives the player double damage from lightning? I doubt that many people would use it, but it might come in handy.
Great idea, i would use it too! That would be funny, since a firearmor should be weak against ice.. And so on.

@Armorvil

I had a similar error, but i don't remember how it appeared. I am too lazy to look now, but it was not the same exception. It was an error with the .net 3.0 ..

@NFITC1

I like the Icon. Cloud as a girl is cute, or am i wrong? :P
 
Unfortunately, I think that armour and accessories can only have one level of resistance to elements, i.e. they can not absorb one and halve another, or be immune to one and weak against another. Still, you can have a lot of other double edged swords, such as something that gives the player a high evasion rate but is weak against all physical attack elements or that causes instant death when one particular element is used, or something that raises stats very high but makes the wearer absorb the "restore" element (i.e. he or she will be harmed by "cure" and "life" spells and items). Actually, one might be able to make the latter already...
 
Last edited:
...but makes the wearer absorb the "restore" element (i.e. he or she will be harmed by "cure" and "life" spells and items).
Yeah, like the "Zombie"-status. =D

Actually, one might be able to make the latter already...
But you did a great job with WallMarket. Very useful tool!
 
@Armorvil - I'm sorry, but I can't reproduce your error. On my machine, the materia tab and raw editing is working fine. I didn't try blanking out a file, but make sure the address offsets in the header of that file are correct. Logically, looking at the way the FF7Names function is set up, it wouldn't give that error unless there was a offset header that was larger than the length of the file. I warn users in the readme to keep a backup. I hope you did (Psst, send me your corrupted kernel so I can look at it).

@LKM - about the Materia AP limit. I'm not sure what would happen in the game, but imagine if a person wanted materia that was just 1 AP away from mastering so they could slap it on a weapon and get a new one. Maybe that's splitting hairs so I don't know. I'm not really sure how it changes in game. The game stores mastered materia as having 16777215 AP. I'm afraid if you set the KoR materia at 500,001 AP it may have missed the "AP mastered" check and keep gaining AP. This probably wouldn't be a major problem, except it might never master. This would make Barret's overflow bug easier to hit....maybe. I think you're right though. I mean, I don't want someone to open WallMarket just to realize there are restrictions. How lame is that? :) So every materia will be between 0-16777215 inclusive and every item count will be between 0-127 inclusive. It's not my problem if games are crashing when people set them wrong. :D
Also about the elementals. No. That's not possible with the armors or accessories They have one byte that tells them how to handle the whole of the elemental properties. And yes, absorbing restore will hurt leaving the way for the "Zombie" status Jonnylossus mentioned. Too bad you can't make a character berserk based on the armor. :(
 
now to get this thing to change default stats/equiped stuff in the kernal3 file. but awsome program.
 
now to get this thing to change default stats/equiped stuff in the kernal3 file. but awsome program.
I'm actually working on that right now. ;) The only problem is there's so many little things to squish into the window. You'll be pleased to know, however, that the initial item list and initial materia list are working correctly.


On a more general note: I really hate to say this, but the mistake that Armorvil made with his kernel is the exact thing WallMarket was made to prevent. He's a smart guy. I'm not saying anything to the contrary. The fact that he can put the kernel BACK into a PSX disc image (I still can't get that to work :)) means he knows what he's doing. I built WallMarket to read a kernel that fits the parameters of the original kernel. That was...disrupted. With the headers in range of the data it works fine. Basically, don't edit the contents outside of WM if you can help it. You can still play with KERNEL.BIN2 and KERNEL.BIN3 and recompile those since WM doesn't touch them (.....yet :evil:).
 
The fact that he can put the kernel BACK into a PSX disc image (I still can't get that to work :)) means he knows what he's doing.
I did not try it, because i was too lazy to create Images of my FF7 PSX CDs, but.. Why is that hard? I thought you just have to open the Image with MagicIso or something equal and switch the original kernel to the modified kernel.. Or am i wrong?

Edit: Got an error message.. Sorry, it is german, since i am german. :P

b4ff5lzugory8uibi.jpg



Code: [Select]
Code:
Informationen über das Aufrufen von JIT-Debuggenanstelle dieses Dialogfelds finden Sie am Ende dieser Meldung.************** Ausnahmetext **************System.IO.FileNotFoundException: Die Datei E:\Rollenspiele\Final Fantasy VII\data\kernel\KERNEL2.BIN17 wurde nicht gefunden.   bei Microsoft.VisualBasic.FileSystem.FileLen(String PathName)   bei WallMarket.Form1.Load_Command_Names(String KERNEL17)   bei WallMarket.Form1.Open_KERNEL(Char kernel)   bei WallMarket.Form1.OpenKERNELBINToolStripMenuItem_Click(Object sender, EventArgs e)   bei System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)   bei System.Windows.Forms.ToolStripMenuItem.OnClick(EventArgs e)   bei System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)   bei System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)   bei System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)   bei System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)   bei System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)   bei System.Windows.Forms.ToolStripDropDown.OnMouseUp(MouseEventArgs mea)   bei System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)   bei System.Windows.Forms.Control.WndProc(Message& m)   bei System.Windows.Forms.ScrollableControl.WndProc(Message& m)   bei System.Windows.Forms.ToolStrip.WndProc(Message& m)   bei System.Windows.Forms.ToolStripDropDown.WndProc(Message& m)   bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)   bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)   bei System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)************** Geladene Assemblys **************mscorlib    Assembly-Version: 2.0.0.0.    Win32-Version: 2.0.50727.1434 (REDBITS.050727-1400).    CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll.----------------------------------------WallMarket    Assembly-Version: 1.0.0.0.    Win32-Version: 1.0.0.0.    CodeBase: file:///E:/Rollenspiele/Final%20Fantasy%20VII/FF7%20Neue%20Tools/WallMarket10/WallMarket.exe.----------------------------------------Microsoft.VisualBasic    Assembly-Version: 8.0.0.0.    Win32-Version: 8.0.50727.1434 (REDBITS.050727-1400).    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/Microsoft.VisualBasic/8.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll.----------------------------------------System    Assembly-Version: 2.0.0.0.    Win32-Version: 2.0.50727.1434 (REDBITS.050727-1400).    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll.----------------------------------------System.Windows.Forms    Assembly-Version: 2.0.0.0.    Win32-Version: 2.0.50727.1434 (REDBITS.050727-1400).    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll.----------------------------------------System.Drawing    Assembly-Version: 2.0.0.0.    Win32-Version: 2.0.50727.1434 (REDBITS.050727-1400).    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll.----------------------------------------System.Runtime.Remoting    Assembly-Version: 2.0.0.0.    Win32-Version: 2.0.50727.1434 (REDBITS.050727-1400).    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Runtime.Remoting/2.0.0.0__b77a5c561934e089/System.Runtime.Remoting.dll.----------------------------------------Microsoft.VisualBasic.resources    Assembly-Version: 8.0.0.0.    Win32-Version: 8.0.50727.1434 (REDBITS.050727-1400).    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/Microsoft.VisualBasic.resources/8.0.0.0_de_b03f5f7f11d50a3a/Microsoft.VisualBasic.resources.dll.----------------------------------------System.Windows.Forms.resources    Assembly-Version: 2.0.0.0.    Win32-Version: 2.0.50727.1434 (REDBITS.050727-1400).    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms.resources/2.0.0.0_de_b77a5c561934e089/System.Windows.Forms.resources.dll.----------------------------------------mscorlib.resources    Assembly-Version: 2.0.0.0.    Win32-Version: 2.0.50727.1434 (REDBITS.050727-1400).    CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll.----------------------------------------System.Xml    Assembly-Version: 2.0.0.0.    Win32-Version: 2.0.50727.1434 (REDBITS.050727-1400).    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll.----------------------------------------************** JIT-Debuggen **************Um das JIT-Debuggen (Just-In-Time) zu aktivieren, muss in derKonfigurationsdatei der Anwendung oder des Computers(machine.config) der jitDebugging-Wert im Abschnitt system.windows.forms festgelegt werden.Die Anwendung muss mit aktiviertem Debuggen kompiliert werden.Zum Beispiel:<configuration>    <system.windows.forms jitDebugging="true" /></configuration>Wenn das JIT-Debuggen aktiviert ist, werden alle nicht behandeltenAusnahmen an den JIT-Debugger gesendet, der auf demComputer registriert ist, und nicht in diesem Dialogfeld behandelt.
Edit2: I managed to open the file now, and i am going to test something.. Maybe it works, but i don't know yet. =)

Edit3: I created an Image of my FF7 Disc, and i was able to load it with ePSXe. But after injecting the kernel to the INIT-Folder, it gave me a blackscreen. :/ Guess i try something else tomorrow..
 
Last edited:
On a more general note: I really hate to say this, but the mistake that Armorvil made with his kernel is the exact thing WallMarket was made to prevent. He's a smart guy. I'm not saying anything to the contrary. The fact that he can put the kernel BACK into a PSX disc image (I still can't get that to work :)) means he knows what he's doing. I built WallMarket to read a kernel that fits the parameters of the original kernel. That was...disrupted. With the headers in range of the data it works fine. Basically, don't edit the contents outside of WM if you can help it. You can still play with KERNEL.BIN2 and KERNEL.BIN3 and recompile those since WM doesn't touch them (.....yet :evil:).
Hey, thanks !  :-D
But it's not really complicated, actually. There is a really cool freeware called CDMage, and with it you can extract any file from an image, and import it back in (as long as the modified file doesn't exceed the original's length, or it will truncate it). Now you know my secret  :-)
 
System.IO.FileNotFoundException: Die Datei E:\Rollenspiele\Final Fantasy VII\data\kernel\KERNEL2.BIN17 wurde nicht gefunden.
I think I mentioned this in the readme, but I may not have. WM creates the little files in the same directory that the KERNEL.BIN file is. Therefore, you cannot open this in a place where file access is read-only, such as a CD image. Copy the file to a directory on your hard drive and open the kernel from there.
Also, that error message and your code copy don't match. It looks like you're opening the kernel.bin from the PSX data in the picture. Why is it looking for kernel2.anything? That's weird since it shouldn't do anything kernel2.bin related if it doesn't find a kernel2.bin file in the same directory. Did you make a kernel2.bin and try to open that?

How come people are getting errors on things that I have no control to fix? :(
 
I did open the kernel.bin from the HDD. I extracted the files to my pc, created a folder and put all of the files inside. Then i modified the kernel.bin and injected it to the old image.

I was opening the PSX kernel.bin, since i wanted to try that with my PSX version too. =p

No, i didn't make a kernel2.bin, i just tried to open my kernel.bin
 
Hi, maybe I'm wrong but you forgot about one attack and it's Odin's Gaunge Lance. Sors if I said something silly, I'm noob afterall! :-P
 
Hi, maybe I'm wrong but you forgot about one attack and it's Odin's Gaunge Lance. Sors if I said something silly, I'm noob afterall! :-P
It's there. It's attack ID #97.
 
Status
Not open for further replies.
Back
Top