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

  • Thread starter Thread starter nfitc1
  • Start date Start date
Status
Not open for further replies.
I have the same problem, and I installed everything you asked (session ran as administrator).
 
Last edited:
I think I solved the problem. It's complicated, but the link in the first post should be working for those that have had problems. Sorry this took so long.
 
Last edited:
Awesome, it works !  :-D You rock !! I can't wait for the version that allows AI script editing ^^
 
Wow, it works for me too. You really fixed it out of my little information?? god, you're good. Thanks. ^^
 
Wow, it works for me too. You really fixed it out of my little information?? god, you're good. Thanks. ^^
Sorry to say, no one's info helped. It was an entirely different problem. :) I had suspected it might be an issue when I first uploaded it. Regardless, it works now so no point in drowning in that sorrow. Enjoy :D
 
Wow, this thing has grown really powerful now. And so quickly, too!

Super-kudos.
 
New version is not saving any changes as supposed to, at least for me. I tried to modify the whole list of magic names and nothing really changed. anybody having same problem??
 
Thanks for fixing this it works great now! I do have a few questions though, can you explain what stuff like scene look ups, random numbers and curves do? i trtied working it out but i can't. Im guessing scene look ups is like what code each scene is given?
 
Thanks for fixing this it works great now! I do have a few questions though, can you explain what stuff like scene look ups, random numbers and curves do? i trtied working it out but i can't. Im guessing scene look ups is like what code each scene is given?
Read the help file or check out this page: http://wiki.qhimm.com/FF7/Battle_and_growth_data

EDIT: So I made an unbelievably stupid error preventing (any of) the KERNEL.BIN from being saved at all in most cases. This has been resolved and I'm sorry for the trouble. Use the link on the first post again.

Unusual Update:
So I was screwing around with the FFVIII files seeing what they looked like. The files on the PC version in the data folder are grouped in threes (.fs, .fl, .fi). There's a "battle", "field", "magic", "main", "menu", and "world". The FS files contain what appears to be a concatenation of many LZSed and raw files together. The FL file contains to be a listing of the file's names, likely in the order they are compressed into the FS file. The FI files seem to be an what their uncompressed size is, index of where each file is in the archive, and if they're LZS (I'm operating under the assumption that it is) compressed or not. The reason I even bothered posting it in this thread is that I found FFVIII's kernel.bin! :D It's the 13th file in main.fs. Unfortunately, it doesn't make any sense to me. :( It's still interesting.

More Update:
It occurs to me that some people may be using the "break the 9999 MHP" patch. I guess I'm going to have to add the functionality to display HP/MP if they want to grow beyond this range. That shouldn't be too hard an update. I'll either release that soon as version 1.1.9 or just wait until version 1.2.0. ....I'll probably wait. I've gotten lazy and too interested in playing Mario World hacks (I'm not sure why, they're just fun).

Another again Update:
I'm VERY close to getting the functionality of AI Script editing. It can save them just fine, there's no problem with that. The problem lies in the interface. How would you like it if you had spent 10 minutes tinkering with an AI script only to have it crash on you close to the end? I wouldn't either.
The more interesting part of this means that I can give Heidegger this functionality too and I can start rewriting enemies' AIs.
 
Last edited:
Rock on ! An AI editor sounds like the second coming of Jesus Christ  :-D

As for its interface... ...Do you know FF3USME ? It's a multi-editor for the FFVI rom, and it's the only one I know that can edit the monsters' AI. Its interface is really good, and very noob-friendly.

Here is a screenshot, in case it gives you ideas.
 
Rock on ! An AI editor sounds like the second coming of Jesus Christ  :-D
Well.....I hope it doesn't mean the end of everything. :-o

As for its interface... ...Do you know FF3USME ? It's a multi-editor for the FFVI rom, and it's the only one I know that can edit the monsters' AI. Its interface is really good, and very noob-friendly.

Here is a screenshot, in case it gives you ideas.
Yes I DO know of FF3usme and have used it to modify several bosses; Including making a harder MagiMaster and a counter-attack-only Dark Chadernook. HOWEVER...The AI of FF7 is infinitely more complicated than FFVI's. FFVI's has a patterned AI, but FFVII's is much more high-leveled than that.

EX:
Most enemies of FFVI have little more than a list of attacks to choose from. Take the "Dark Force" for example. He has a very simple script:

Perform one of three actions
Wait until next turn
Perform one of three actions
Wait until next turn
Perform one of three actions
Wait until next turn
Perform one of three actions
Wait until next turn
Perform one of three actions
Wait until next turn
Perform one of three actions
Wait until next turn
Perform one of three actions
End Script (wait until next turn to start over)
End Script (this is the counter attack script, which he doesn't have)

And that's the sum total of his script. It takes ~36 bytes of code to do this. However, in FF7, it would take probably 150 bytes (likely more) to do this since it has fewer built-in functions.

Now let's look at Rufus' script:

AI: Main
{
   If ((Rufus' HP > 200) AND (TempVar:HPDiff < 100) AND (1/3 Chance)) Then
   {
      Print Message [Rufus "Heh, Heh, Heh..."]
      Choose Self
      Use <> on Target
   } Else {
      Choose Random Opponent
      Use Shotgun on Target
   }
}
AI: Counter - General
{
   TempVar:HPDiff = TempVar:PrevHP - Rufus' HP
   TempVar:PrevHP = Rufus' HP
}
AI: Counter - Death
{
   Print Message [Rufus "Heh... That's all for today..."]
   Choose Self
   Use <(Report)> on Target
   If (Dark Nation doesn't have Death Status) Then
   {
      Remove Dark Nation
   }
}

Some of this can't be done in FFVI, but this script takes 199 bytes and executes the entire main script in one turn.

FFVII doesn't have a "choose one of the following three attacks" built in to it. All those "choose one"s have to be randomly selected using if statements which are made more difficult because we have to write it in assembler. I know of no way to make this noob-friendly, but I'll probably make some tutorials (in the helpfile and otherwise) on how to do certain things like if-conditions, random choices, loops, etc.

EDIT: Speaking of scripting, now that this is close to being able to edit scripts (it's so close now I can smell it. Continue being patient) I feel a tutorial needs to be made on how to do such things. I've started making one in the helpfile, but I think it needs to be more centralized than that. I was thinking of making something like Morrowind's Scripting for Dummies guide. It's 230 pages long, but since there are less than 100 opcodes available to us in FFVII, we'd have fewer pages. :) Would anyone with advanced scripting knowledge like to help me write one or, at least, proof-read my tutorials to make sure they're correct?
 
Last edited:
The link of Filefront doesn't works for me,can you upload it somewhere else please?
 
The link of Filefront doesn't works for me,can you upload it somewhere else please?
No. Because the lastest version on FileFront right now has several (REALLY retarded) flaws and I'm almost ready to release another one.

I changed Scene 232 (from SceneEdit's output files) address 0x1248 to 14h and changed 0x124A to 86h. Now when Cloud's supposed to retaliate at Sephiroth in the REALLY final battle (as I like to call it :) ), he does Omnislash rather than just lamely take a swing. Isn't that great? :D

AI editing is coming along mostly smoothly. I hit a VERY peculiar snag, however. In order to make the process of editing AI bearable I had to improvise. However, now in order to make up for that I'll need to sync two things together. BUT THEY'RE BOTH READONLY PROPERTIES!!! What genius at MS thought of that? Nevermind that. I figured a way around it. :) Just a few steps left.
 
Last edited:
Can't wait man really appreciate all the work you put into wallmarket and heid.So your saying this next one will allow us to edit the AI enemys with needing to hex edit AND characters? if so thats INCREDIBLE! can't wait.
 
Can't wait man really appreciate all the work you put into wallmarket and heid.So your saying this next one will allow us to edit the AI enemys with needing to hex edit AND characters? if so thats INCREDIBLE! can't wait.
WallMarket will only ever edit KERNEL.BIN and/or kernel2.bin. Heidegger will soon after evolve to edit Enemy AI.
 
Can't wait man really appreciate all the work you put into wallmarket and heid.So your saying this next one will allow us to edit the AI enemys with needing to hex edit AND characters? if so thats INCREDIBLE! can't wait.
WallMarket will only ever edit KERNEL.BIN and/or kernel2.bin. Heidegger will soon after evolve to edit Enemy AI.
My mistake mate sorry. so in the next version of hedigegger how will editing the AI work? will we be given a list of commands we can input and what attack we want them to link to or will it only do the simple stuff? It will be so usefull as making one mistake in hex editing can ruin a whole script.
 
so in the next version of hedigegger how will editing the AI work? will we be given a list of commands we can input and what attack we want them to link to or will it only do the simple stuff? It will be so usefull as making one mistake in hex editing can ruin a whole script.
Oh yes, it will be complicated. There's no way to make it easy. It will have to be done in assembler since I don't have the ability to compile. Theoretically it could, but it's not likely. AI Scripting for this game is just that complex.
The readme will come with a moderately detailed explanation on how to code in the assembler you're allowed, but it's up to you to decide how you want to do it all.

UPDATE:
Some may have noticed the new tag here, but not noticed anything new (unless I updated this of course ;) ). What changed is the picture of the completed CharAI on the first post. It now will end up looking like this. Cool, huh?
This is the way it will look in WM. It will look similar in Proud Clod as well. The interface is still just a little clumsy, but let me explain what it's got right now.

There are only six parts to it. It's got a character list, a script section list, a "Disassemble" button, a Total Script Size indicator, the actual code in assembler that can be edited, and a "translated" scrollable, copyable text box.

The asterisks by the character names and script section names indicates that there is a script linked to those (eg. "Cloud*" means Cloud has scripts while "Red XIII" does not and there is a "General Counter*" script while there is not a "Pre-Battle" one).
The total script size MUST NOT EXCEED 2048 BYTES! Any larger than that and the game won't load (seriously banged my head for a LONG while confused as to why my game wouldn't start :) ). This count updates when a script is edited so you can keep track of how much space you have left.
NOTE: Removing those pointless "Battle Love Character Points" script from the characters reduces used space from 1508 to 410! That should be more than enough to do several little things to most of the characters. I'd suggest leaving Vincent's Main script alone or his Limit Breaks won't work the same.
The editable code is conveniently separated into Opcode and Argument. If an Opcode is entered that requires an argument, this will conveniently add 0s equal to the required Argument length in the Argument column. More conveniently so, if an argument is typed that is too short, it makes it the appropriate length. Even MORE conveniently, if an Argument is typed where one is not allowed, it just removes it. If that weren't enough, the arguments are in Little Endian instead of Big Endian! (That means that the value 1 is stored as "0001" instead of "0100") That's a lot of convenience!!! And yes, I'm hyping all that because I can't compile code like "If Self.HP = 1". and get good results.
The "translated window" to the right will show the assembler version of what the codes mean. This probably won't mean much to some. But the "Disassemble" button will (key word alert!)attempt(key word alert!) to turn it into readable code similar to C or Java. It may or may not end up exactly the way the game will read it and it's mostly based on the existing scripts on characters.

And that's what I've got. Aside from one annoying interface fluke it's all fully functional. I'm now devoting more time trying to iron that out since my final is over.

UPDATE 2:
Look promising? Ignore the red text and the mis-aligned curly brackets.
 
Last edited:
1.1.8 wont run for me, OS is windows XP.

1.1.7 works fine.
1.1.8 I get a hourglass for split second and then nothing happens, I get no dialog box, no errors etc.

--edit--
to add heiddeggar is one sweet app, and does what I was looking for, got to modify enemy attacks.
 
Last edited:
Also seems to be incompatible with Windows 7 RC 7100.

EDIT:  Disregard.  I should have payed more attention to the original post
 
Last edited:
ok I see I needed to install visual basic powerpacks for new version so installed it.  I already got net 3.5 installed.

It now runs but after clicking on initial data tab I got this error and it crashed.

Code: [Select]
Code:
See the end of this message for details on invoking just-in-time (JIT) debugging instead of this dialog box.************** Exception Text **************System.IO.FileNotFoundException: Could not load file or assembly 'System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. The system cannot find the file specified.File name: 'System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'   at WallMarket.Form1.DrawStatIndic()   at WallMarket.Form1.Draw_Curves(Object sender, EventArgs e)   at WallMarket.Form1.Radio_CheckedChanged(Object sender, EventArgs e)   at System.Windows.Forms.RadioButton.OnCheckedChanged(EventArgs e)   at System.Windows.Forms.RadioButton.set_Checked(Boolean value)   at WallMarket.Form1.TabControl1_Click(Object sender, EventArgs e)   at System.Windows.Forms.Control.OnClick(EventArgs e)   at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)   at System.Windows.Forms.Control.WndProc(Message& m)   at System.Windows.Forms.TabControl.WndProc(Message& m)   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)WRN: Assembly binding logging is turned OFF.To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.Note: There is some performance penalty associated with assembly bind failure logging.To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].************** Loaded Assemblies **************mscorlib    Assembly Version: 2.0.0.0    Win32 Version: 2.0.50727.3082 (QFE.050727-3000)    CodeBase: file:///C:/WINNT/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll----------------------------------------WallMarket    Assembly Version: 1.1.8.2    Win32 Version: 1.1.8.2    CodeBase: file:///F:/patches/ff7/WallMarket118/WallMarket.exe----------------------------------------Microsoft.VisualBasic    Assembly Version: 8.0.0.0    Win32 Version: 8.0.50727.3053 (netfxsp.050727-3000)    CodeBase: file:///C:/WINNT/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.3053 (netfxsp.050727-3000)    CodeBase: file:///C:/WINNT/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.3053 (netfxsp.050727-3000)    CodeBase: file:///C:/WINNT/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.3053 (netfxsp.050727-3000)    CodeBase: file:///C:/WINNT/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.3053 (netfxsp.050727-3000)    CodeBase: file:///C:/WINNT/assembly/GAC_MSIL/System.Runtime.Remoting/2.0.0.0__b77a5c561934e089/System.Runtime.Remoting.dll----------------------------------------Microsoft.VisualBasic.PowerPacks    Assembly Version: 9.0.0.0    Win32 Version: 3.0.30214.0    CodeBase: file:///C:/WINNT/assembly/GAC_MSIL/Microsoft.VisualBasic.PowerPacks/9.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.PowerPacks.dll----------------------------------------Accessibility    Assembly Version: 2.0.0.0    Win32 Version: 2.0.50727.3053 (netfxsp.050727-3000)    CodeBase: file:///C:/WINNT/assembly/GAC_MSIL/Accessibility/2.0.0.0__b03f5f7f11d50a3a/Accessibility.dll----------------------------------------************** JIT Debugging **************To enable just-in-time (JIT) debugging, the .config file for thisapplication or computer (machine.config) must have thejitDebugging value set in the system.windows.forms section.The application must also be compiled with debuggingenabled.For example:<configuration>    <system.windows.forms jitDebugging="true" /></configuration>When JIT debugging is enabled, any unhandled exceptionwill be sent to the JIT debugger registered on the computerrather than be handled by this dialog box.
 
Status
Not open for further replies.
Back
Top