[Release I] "Wall Market" Kernel.bin editor [Release Candidate I ready!]

  • Thread starter Thread starter nfitc1
  • Start date Start date
Status
Not open for further replies.
N

nfitc1

Guest
The initial information for this is from this topic. I think I should make a new one so I don't steal too much of Gingercat's thunder.

Pictures are now up in the release topic on the Game Tweaking board..

9-25: Still have to populate dropdowns (probably tomorrow) before I try to open files. That's WAY more fun than putting all those check boxes and text boxes on the window. Ugh. Talk about Eye strain!

9-26: Finished first draft of Attacks Menu! Currently showing Freeze. You can notice a few things about it already:
-The number under the "Inflict Status" box indicates it's percentage chance of hitting. Haven't found how significant this number is yet
-Even though Freeze's damage type is single target, it has separate animations for single and multiple enemies. Sephiroth can cast it in such a way that it hits all enemies at once.
-Impact Sound is ALWAYS "FFFF" for all attacks in this file. Possibly this is not really sound?
-Times Attacking is always 255 if it's a single hit. Only changes if more than one hit. KotR is 13 hit so I know that's working too. :)
Finished the Reading part of the Weapon and Item sections as well. One of the unknowns on the weapons I MAY have identified.
-0x26 is 05 for all normal range weapons and 2F for all long range weapons with one exception. Barret's Pile Banger is long range and has a value of 05. This refers to sounds of the weapon when it hits, criticals, and misses like I initially suspected and confirmed by LKM below.
And I still don't know what exactly what 0x05 is. Wiki says it's Status attack bit. Could some weapons, at some time, be able to do certain status effects? Maybe it's only an in-battle thing. Not sure. Armor is now done too. Nothing special learned here except Four Slots is somehow "special" compared to the others. Think I'm done for the day. Opening Accessories, and Materia are all that's left before I release this as a beta.

9-28: Officially finished the Accessories tab on Saturday, but didn't update until today.
Materia tab is getting close to being done. Maybe by Monday I'll start requesting beta testers before I begin writing files.
Phase I is complete and ready to be beta tested. Please PM me your email address if you'd like to help. I'll have to write up some simple command documentation, but I'll be able to do that Monday morning (I hope).

9-29: After a rough start Phase II is underway. What's this mean? The Attack information is now successfully being saved BACK to the KERNEL.BIN1 file and being re-encoded into the KERNEL.BIN file!! The rest is just a matter of time. So phase II beta testing will begin probably by the end of the week if I get enough time to finish the remaining tabs.
I also added the information of the command tab into generic text boxes so nothing to manipulate yet. Just there to observe and see what makes the commands special. (see latest post for more information)

9-30: I've been looking at the weapon/armor/accessory data in the wiki and I think I have an idea for the restriction mask for these. They don't mean usable in battle or appears in battle or whatnot. Rather, it's FE if it can be sold and FF if it cannot. The ONLY objects among the weapons, armors, and accessories that are FF are the Buster Sword, Gatling Gun, and Masamune. These are not sellable. All the other objects are FE and none of them can be used in battle, but they all appear in the battle menu.
Phase II is so mind-numbingly tedious. It's making sure all those little boxes and drop downs are changing the data they should be changing and accounting for things like if they're in hex or not or whether they're too large. Still, I'm done with the Items and Weapons now as well. This is a mighty big if, but IF I can keep this pace up Phase II might be completed later today. (cross your fingers)
PHASE II IS COMPELTE!! I have successfully written/read, modifications to/from the kernel.bin file! This is now ready to undergo in-game testing to make sure all the values are correct. I already have an idea on how to test some of the materia, but I need people now to test other things too. Again, PM me with your email address if you wish to test this. Slight disclaimer: Names do not appear yet. That's Phase III since it's so different from the other methods. I'm not sure how long that will take. I also can't guarantee that I will be able to email you tonight, but I will by the end of the day tomorrow. I might have the time to, I might not. Just be patient. :)
I also took the pictures down because they are now grossly inaccurate. I'll try to put up new pictures soon.
I just performed my own small, and successful I might add, test on changing the Added Cut and Steal As Well Materias from 2-stars to 5-stars. Unfortunately, it didn't perform they way I thought it would. I thought that the Materia Type set to 0x35 would make it perform that action X number of times depending on the level. Unfortunately it attempted to steal each time. So I'm still at a loss as the difference between type 0x25 and type 0x35. Or maybe it's that action 0x5D takes no parameters and just does it every time. So 0x35 is still an unknown if it's different from 0x25.

10-1: Phase III is looking promising. I'm able to read names of attacks based on the kernel.bin18 file. This, however, gives me a little bit of bad news. Not all the attacks are in the kernel.bin1 file. Only 128 are stored in there. That includes (in this order) Magics, Summons, E.Skills, "Extra" Summons (Fat Chocobo, Gunge Lance), Tifa's Limits, Cait Sith's limits, Vincent's Limits, and Braver. Where are the rest of the limits? This seems to be the only question at the moment. I'd like the answer as well. Maybe ff7dec doesn't open it all?
PHASE III IS COMPLETE!!! And it only took about 3 hours! Should have taken less, but I kept screwing up. :) Now that this is done, nothing is left except to test it all (and I need much help with this) and fill in the missing data.
Phase III consisted of reading the names and pairing them with their appropriate entries. Without indexes, it can be reasonably assumed that the data and the names are, at least, in the same order. With some small discrepancies in the Attack and Materia names. This seems to be the case as the weapons, armor, and accessories match up perfectly and they're easy enough to tell apart based on stats. Phase IV (if there is demand of it) will be to make the interface more pleasing. Adding some FF7-related pictures or whatnot. Also, I'd still like to add the raw data at the bottom like I mentioned below. Not necessary, but would be nice. Still trying to find out the best way to do that.
Structurally, this is program is no different from Phase II. It does NO writing to the entries with the names, just reading. Again, this is in compliance with the goal of PC/PSX independence. As long as a US KERNEL.BIN is being opened, it will read the names properly.
PLEASE! PLEASE!! PLEASE!!! PM me and request to test this. I believe it is finished, but any/all bugs need to be squashed.
I'm fed up with ff7dec since it's not working properly in probably 90% of my tests. Therefore I'm just going to run the gunzip/gzip executables myself. I looked into actually getting a gzip library, but the cheapest one is still $50 and I doubt I'll ever need it outside of this program again. So I'm going to have to re-write it slightly to eliminate some of the annoying issues I'm coming up with. It'll give me something to do tomorrow at least.

10-2:
I have rid the dependency on ff7dec since it wasn't performing how I wanted it. At the same time, it was dependent on gunzip, gzip, and the dll it came with. So now Wall Market is only dependent on gzip and comdlg32.ocx.
Made a update to Reply #10. Check it out. Pretty interesting.

10-3: I'm getting tired of seeing the same Visual Studio 6 standard executable icon for this. Maybe I should make it the Hi-Res cross-dressing Cloud? Heh, that'd be great. I hope that everyone who reads the updates on this post also checks out Reply #10 as I have quite a few discoveries listed there. One I just made yesterday and I think I nailed the question about flag 0x10 I had when I discovered it.
One byte of previously unknown piece of data for items identified. Commands have now been split up appropriately and their names have been added.
I also cleaned up the GUI significantly (pics to be updated soon). Things aren't just randomly thrown about now. They're a little more structured than they were. It's mostly for the tabbing purposes, though. I'm trying to keep similar things in the same relative positions.
I think Phase IV is now complete. However, since this doesn't change anything functionally and it will continue to be updated as new information is discovered, I won't call it significant. I dare not speak of Phase V which I also planned since the beginning. I don't think it's impossible, but I don't want to try it just to have it fail on me.
Once again discovered that the wiki is inaccurate. The files in the kernel are not numbered higher than 9. Every segment from Command descriptions to Summon Attack names has a file number of 9. I didn't know this until I started testing my kernels. When they all failed I noticed this. I fixed it and they work fine now. :) That and after al the files are concatenated together it ends in 0x0, 0x0.

10-7:
Haven't had anything to report recently because nothing new has happened. Mostly I'm just finalizing the way every thing looks. Started writing a chm for this yesterday and made a new discovery or two (see Reply #10 again). This is getting so close to becoming release I can almost taste it.
Added the "bling" I wanted so now it's ready to be released. I need a host to put it on so I'll take recommendations. The entire package is zipped and is 450,297 Bytes in size.
I had to remove the "New Game" and "Battle & Growth" tabs because I concluded that there is too much information to put in that window size. I may go back and make other programs to modify those, but Wall Market will likely not do that.

10-8:
Less than two weeks from birth to conception. Now ready for initial public consumption. Enjoy and leave feedback here from now on.

Drop-down menus are populated at run-time. Probably only reading information will be implemented in the first release.
Command data doesn't exist yet on the wiki and Battle & Growth and New Game info are SO long I may end up writing those differently than in tabs (separately or in a different window I'm not sure yet).
I'd like to have a grid below the frames that displays the item's raw data to show what's happening, highlighting things as they change. If you've seen FF3USME, it's the same idea. Once the prog actually works I'll play with this idea.
I hope I can have a working beta (read, but not write) by October 1st, but we'll see. It may be more complicated than that. It's actually coming together exceedingly well. MUCH easier than I had originally thought. Doesn't look like writing files will take any more time than creating the interface up to this point. Maybe functional beta by end of first week of October. Well what do you know? Phase I to Phase III by October 1st! Am I good or what?
Once everything can be read correctly I'm going to update these pictures with information on certain objects of interest so people can see this actually does work.

The information is all based on Qhimm's wiki so some things will have gaps where they either did not test or did not know.
 
Last edited:
This looks very interesting. I have been hex editing the kernel.bin for a while, and having to look at all of those numbers and spend time decompressing and recompressing of all those files can be a pain.

By the way, quite a lot of the information which is missing on the wiki can be found on this forum. Peerless, for example, is 0x01000000. Changing the hex data for "cure" from this:

Code: [Select]
Code:
FF FF 00 FF 05 00 FF FF 00 00 28 00 0D 00 25 05 00 FF FF FF FF FF FF FF 00 02 FF FD
to this:

Code: [Select]
Code:
FF FF 00 FF 0F 00 FF FF 00 00 28 00 0D 00 08 20 00 3F 14 FF 00 00 00 01 00 02 FF FD
will fully restore HP and MP, put all targets in peerless, and fill the limit bars of everyone except the caster.

This is a round-up of how attack data works.

 Code: [Select]
Code:
Offset   Length   Description0x00  1 byte           Att%0x01    1 byte           Impact animation0x02    2 bytes         Target animation0x04  2 bytes  Casting cost0x06  2 bytes  Impact sound0x08  2 bytes  Camera movement ID for 1 target0x0A   2 bytes         Camera movement ID for multiple targets0x0C   1 byte           Attack attribute - some of these may be wrong   00  Escape/Exit-Type        01  Single target        03  Single target        05  Multiple target        07  Multiple target        0D  Restorative/Protective        0F  Status-giving/Elemental        11  Shield        13  Limit Break        15  Cait Sith Limit Break        17  Summon/Final limit break        C7  Roulette        97  Multiple Strike Limit Breaks0x0D  1 byte   Animation ID0x0E  1 byte   Type of damage. There are lots of these; a few of them are:        08 = recovery (?)        11 = physical        22 = magical        23 = Based on current HP        24 = Based on max. HP        26h: Deals constant damage (Magic Hammer, 1000 Needles, ...). 01h = 20 HP/MP.        28h: Fully recovers the target's HP/MP (Mog Dance).        29h: Always deals 1 damage (?).        60h: Damage = attacker's current HP (White Wind)        61h: Damage = MaxHP - CurrHP (the Huh? enemy skill)        68h: Random Damage (Dice)        69h: Damage = number of times the party escaped (Chocobuckle).        6Bh: Damage = (hours played * 100) + minutes played (Time Damage)        6Ch: It's Everyone's Grudge damage calculation method (does damage according to the amount of enemies the target has killed). Does 0 damage to enemies        6Dh: It's Aire Tam Storm's damage calculation method, meaning that it always deals  0 damage since enemies can't equip materia        83 = Only hits targets with a certain level; this level is determined by the first byte.        96h: Damage = approx. 1/2 attacker's current HP0x0F  1 byte   Strength0x10  1 byte   Restore type   00  Restore HP        01  Restore MP        02  Restore Ailment        3E     100% cause status change        FF  None0x11  1 byte          Status effect        3Fh Inflict Status 7Fh Cure Status0x12    1 byte   "Special" 1. Again, there are a lot of these, and I have only tested one:       14      Fills limit bar0x13  1 byte   Number of hits0x14  4 bytes        Status        0x00000001 Death  0x00000002 Near-Death  0x00000004 Sleep  0x00000008 Poison  0x00000010 Sadness  0x00000020 Fury  0x00000040 Confusion  0x00000080 Silence  0x00000100 Haste  0x00000200 Slow  0x00000400 Stop  0x00000800 Frog  0x00001000 Small  0x00002000 Slow-numb  0x00004000 Petrify  0x00008000 Regen  0x00010000 Barrier  0x00020000 MBarrier  0x00040000 Reflect  0x00080000 Unused  0x00100000 Shield  0x00200000 D.Sentence  0x00400000 Manipulate  0x00800000 Berserk  0x01000000 Peerless  0x02000000 Paralyzed  0x04000000 Darkness  0x08000000 Dual  0x10000000 DeathForce  0x20000000 Resist  0x40000000 Lucky Girl  0x80000000 Imprisoned0x18  2 bytes  Element        0x0000 Non Elemental 0x0001 Fire  0x0002 Ice  0x0004 Lightning  0x0008 Earth  0x0010 Poison  0x0020 Gravity  0x0040 Water  0x0080 Wind  0x0100 Holy  0x0200 Restorative  0x0400 Cut  0x0800 Hit  0x1000 Punch  0x2000 Shoot  0x4000 Shout        0x8000 Unknown0x1A  2 bytes  "Special" 2        0x0001 Attack MP instead of HP  0x0002 ?  0x0004 ?  0x0008 ? 0x0010 Drain Damage Dealt 0x0020 Drain HP/MP 0x0040 Blade Beam  0x0080 Ignore Status  0x0100 Miss if Not in “Death” Status  0x0200 Reflectable  0x0400 Piercing (Unblockable)  0x0800 Angel Whisper/Pulse of Life  0x1000 ?  0x2000 Critical Hits  0x4000 ?  0x8000 ?
You might also want to look at this thread

https://www.ff7catalog.com/]

and some of the work we have done in this thread

[url=https://www.ff7catalog.com/threads/5122/]https://www.ff7catalog.com/threads/5122/
 
Last edited:
This is a fracking amazing project....

A kernel.bin editor has been needed for a very very very long time, much thanks to you for this, seriously. I can't wait to try it out!!!!!
 
Positive feedback so far. That's great!

LKM (your name's too long to type out each time), those are amazingly helpful! Thanks for pointing them out. Since this is a WIP I'm hoping mostly that people will chime in during betas and help me fill in the "unknown" gaps that will exist. That does eliminate quite a few right off the bat.
Maybe after this gets made someone should update the wiki with the currently known info.
 
Wow!! at first i thought u were about to release a mod with improved stats in kernel.bin ... not a editor itself  :-o
That's really a awesome project... it's really useful so we can have tools to easily edit every single characteristics of the game without needing to lose so much time with programming... also useful to people that don't have programming knowledge at all

REP ++

I really appreciate your work... feel free to ask me for any help
really can't wait to test it   :wink:
 
I see this topic and I think "Ooh!!"

I have a read of the topic and my response is "Coooooooooooooooooooooooooool...!"

This is gonna be awesome as!!

And don't worry about stealing my thunder... I'm more than happy to hand over the whole enchilada :P
 
This seems really intresting. If you need beta-testing, just let me know. I hope the best for you  :-)
 
Can open, ff7dec, and begin to read information in KERNEL.BIN already!
Made some good progress on reading the Attacks so far and determined a bit. Found some enemy skills that used some Damage type flags that are unique to them

60 - White Wind
83 - Lv4 Suicide/lv5 Death

Looking at Lv4 Suicide and Lv5 Death I've probably determined that damage type 0x83 uses the Atk% (first byte. It's 4 for L4 Suicide and 5 for L5 Death.) as divisor to determine if the hit connects or not. And 0x60 depends entirely on the casters current HP. Prettly good for initial results, no? :)
 
Last edited:
Sorry, ignore this double-post. I hit quote on the above post when I meant to hit Modify. :(
 
Last edited:
I've added those, as well as some of Armorvil's work, to the "Type of damage" list in my first post.
 
Great! Now added. Only four are left: I think I know these now:

0x00 Nothing; occurs in one attack that's a filler
0x25 Only Cure 1, 2, and 3; Probably just Magic-based curative
0x50 Apply status temporarily. I still don't see a counter though.
0xB1 Slot based hit. Only shows up in Tifa's Limit Breaks. "Hit" "Yeah!" or "Miss". Need to test this

Also noticed: Inflict Status MAY be dependent on the percentage chance it has to succeed. Choco/Mog has an Inflict Status of 10, which is related to its chance of causing Stop.
I now believe this to be half the percentage chance of inflicting. I'm still not sure how it relates to percentage.

One more thing: About 0x0002 of Attack Properties. Could this be "Force Animation"? You can change the Battle Camera motion up and down in the config and not all camera motion stops. All the summons always take control of the camera. This will require a little testing as well.

Possibly Major find:

What's labeled as "Attack attribute" in Reply #1 and "Damage Type" in Wall Market I now believe to be a bit mask of targeting restraints:
Code: [Select]
Code:
0x01 - Enable target selection (Escape's target is 0x00 and target cannot be selected)0x02 - Start target on Enemies0x04 - Begin target as multiple0x08 - Can toggle between single/multiple0x10 - One side (Party or enemy) only0x20 - unused0x40 - All Active battle participants0x80 - Random target.* - 0x08 is never on without 0x04
If anyone can verify this or can think of a way to test it, please do and let me know the results. [Heh. I just made Choco/Mog hit both enemies and party. I may make an "unpredictable" mod that reassigns the attacks to do random things and the weapons with different stats. :D]
Come to think of it, the Item Target acts very similarly. I believe I may have found a match.
I believe now that these are the effects. When I changed Ice2 to hit twice (see below) and set its target to 0x87 it selected all enemies and hit two of them randomly each time. This doesn't seem to work for the summons. I can make a summon hit all members on both sides, but I can't make  them hit only one target.

I've also been looking at the Additional Effects. Here's the list of attacks that have additional effects in the kernel:
Code: [Select]
Code:
0 Comet20 Splattercombo0 Knights of Round1 Oden   If all enemies are immune to Death summon Gunge Lance2 Choco/Mog  Sometimes summon Fat Chocobo5 Escape   No Reward?8 Toy Box    ??9 Goblin Punch  Damage based on Attakers level/target's levelE Phoenix   Heal/Restore Dead allies10 Transform (Cait Sith) Removes other allies from battle1C Dragon Force  Raises Stats18 Satan Slam  Cast OTHER Satan Slam23 Remove   Remove target from battle and kills
So WHAT does Comet2, KotR, and Splattercombo have in common?! I have no idea. And what else does toy box do? I think it sometimes hits all enemies or just one, but I try to avoid Cait Sith so I'm not really sure. :)

After some testing I think I figured out what is happening with Additional Effect 0x00. In Reply #1 made by LKM, he states the following information for attack values:
Code: [Select]
Code:
0x12    1 byte   "Special" 1. Again, there are a lot of these, and I have only tested one:       14      Fills limit bar0x13  1 byte   Number of hits
This is true, but not completely correct. 0x13 is ONLY number of hits when 0x12 is 0. This is what links KotR, Comet2, and Splattercombo. They all are multihit. If 0x12 is set to NULL (0xFF), then Comet2 only hits once. So 0x12 can remain "Special properties", but 0x13 will have to be changed to "Special Properties Modifier".
 
Last edited:
By extraordinary coincidence, I had just been testing bytes 0x24, 0x25 and 0x26 of the weapon data: 0x24 is the sound the weapon makes when it hits normally, 0x25 is the sound it makes when it makes a critical hit and 0x26 is the sound the weapon makes when it misses. 0x05 is indeed status attack:

https://www.ff7catalog.com/posts/72163/
 
Last edited:
Great! I'll add that to the interface later (today I hope). Are those the ONLY statuses weapons can inflict? If so I'll make it a drop-down list instead of the normal bit masking checkboxes.

I am, as you apparently notice, updating the first post with my progress instead of adding new posts. So all the people that come new to this thread need only read the first post to see how far I am into this.
I have noticed something odd already. For Weapons, the "stat increase" blocks aren't completely correct. Only two are used:
0x15 : 0x19
0x16 : 0x1A
The pair "above" these and the pair "below" these don't get reflected in the weapon. I've been wondering this for a while because weapons only increase up to two different stats. Thus, I'm confused as to their functions. Can anyone shed some light on this? Armors seem to be similar, but it's possible that they could increase more than two stats, but I'm not doing any game testing yet.
 
Whoa, talk about progress!!  :-o

How cool is this? :-D

I wish I knew enough to contribute, but my skills are... A bit lacking.

Still, I can certainly offer encouragement for this awesome project!
 
With the last image up there, I notice that "Nullify" and "Absorb" are radio buttons... But from memory, there is at least one accessory (Man's Armlet?) that "drains 1/2 x/y/z". How does the game go about "draining 1/2"? I imagine it may be a combination of blocking (Nullify) 1/2 and Drain (Absorb) the other 1/2 of the proposed damage... Either way there would need to be some way of specifying that 1/2 modifier in order to properly edit / create such an item.
 
You're thinking of the Zeidrich, which is an armor, not an Accessory. Accessories either absorb or nullify elemental damage (or don't do anything). If they CAN half damage I would like to know about it. Or if they can affect any of the physical elements I need to know that too.
Cat's Bell officially has no data because it does not have an in-battle effect and the KERNEL.BIN only contains information about battle routines. I've also noticed that it only contains attack information on attacks available to the Player(s). It doesn't contain information on Aire Tam Storm or Ruby's tentacle attacks, etc. (not that I found anyway).
 
Attacks only used by enemies are in the scene.bin files for those fights.
 
Ah, armors do that. Oops :lol:

My mistake.

And a slightly-off-topic question:

What does the "Imprisoned" status do? (Just curious.)
 
Last edited:
Imprisoned stops a character from acting and flags him/her as dead until the status is broken. It is the status caused by Reno's pyramid (in the sector 7 fight), Bottomswell's water polo and Carry Armor's right/left arm.
 
Imprisoned stops a character from acting and flags him/her as dead until the status is broken. It is the status caused by Reno's pyramid (in the sector 7 fight), Bottomswell's water polo and Carry Armor's right/left arm.
I thought Bottomswell's water polo causes "dual" since you have to attack the water bubble to free them.
 
Status
Not open for further replies.
Back
Top