Now this really can edit virtually all bytes of the KERNEL.BIN and kernel2.bin (at least, to the best of my knowledge). In case something is wrong (I'm almost sure something will be), let me know. I cannot stress enough to make backups!!

Optional:Included .dat file. This file contains all the display characters and battle script addresses and their values. If you decide to change the character set, update this file. If this file is not present in the same directory as WallMarket.exe, then WallMarket will use the standard FFVII display characters. Also, disassembly will not display functions of known address values. If you discover the function of an unknown value, add it to the bottom of the file (or anywhere after the first 256 lines) in the same format as the rest of the addresses:<4-digit hex address>|<function>and it will show up during disassembly.

All the information for this program is described in this thread. In a nutshell, this can edit in-battle information on attacks, items, weapons, armor, accessories, and materia! Want to make a potion heal 1000 HP? Easy! Want to make Bahamut ZERO hit all targets, party and enemies alike? Simple! Want to make casting Ultima end the battle without rewards and be holy elemental AND cause poison, silence, and darkness? No problem! Want to make Buster Sword have 8 linked Materia slots with triple growth? Piece of Cake! You get the idea by now, I hope. Almost any effect any attack has can be given to another. Any weapon can be modified to be equipable by another party member (may cause graphical errors . . . haven't tested this much). Armors can be changed to raise stats very high or not at all. Accessories can be changed to nullify any elements and block ALL status effects. Materia levels can be increased or AP requirements decreased!I could go on and on about what this can do, but I'd run out of space! Just download it for yourself and see!!Always keep a backup, unmodified KERNEL.BIN in case some change causes the game to crash. Every modification of known information I've made has successfully been reflected in battle.

Features:

* WallMarket will detect if the PC version exists and will initially point to kernel directory * Finally updated that help file * Can edit all parts of KERNEL.BIN!! * If you can call this a feature, it now requires Microsoft Visual Basic PowerPacks 1.2 or higher. * Can edit Character AI and moderately accurately disassembles into something readable similar to C or Java. NOTE: Disassembly not always accurate. I can't get it much more accurate than it is now so don't contact me about it unless it crashes during disassembly. * Forgot to mention that it comes with a WallMarket.dat file that contains the text and script address functions. Doesn't handle multi-character font values yet. Still working on that. Rather, it will read the multi-characters and display just fine, but it won't save them back the way you'll expect. o Actually saves now. Stupid 1.1.8.2 was written to account for the Read-Only flag, but didn't save if it wasn't on. Talk about embarrassing. * You can now save changes in a smaller file that can be distributed and applied to other users' KERNELs via WM. Best part of this is that the changes will stack! You can load one file that changes names, then another that changes data and both will take effect! * Fixes some string issues related to AI Editing * Smaller file size and virtual footprint * Attack Damage is split in two. This offers more variety to attack types.*new* * Materia type is also split in two. This is likely going to be more confusing than before, but it's meant to be wholistic.*new* * Fixed Initial Materia AP not saving when clicking on materia picture as well as a few other things.*new* * Limited size of PC text so it will warn you if you exceed the game's maximum allowed size. *new*

Note: Most information is known, but not all. If you have any information on unknown values please let me know by replying to this or PMing me.Also keep in mind that I intend to continue updating this with relevant information so this is not the final version.Note2: zlib1.dll needs to be in the same directory as WM or in the WINDOWS\system32 directory. If you get an error during KERNEL.BIN creation saying it can't find zlib1.dll, put it in the same directory as WM.Note3: Filefront was saved so the links to the Filefront files has been restored and I'll be staying with them.Note4: Comes with an incomplete readme with opcodes and such.Note5: To delete scripts, highlight the script section ("Pre-Battle", "Main", etc) and press the Delete key on the keyboard.Note6: For questions about animations indexes, read this thread first. It will likely answer most of them.

PS - In case anyone is having problems with the new version, sorry. The old versions are dead.

I've gotten a request or two for this. It's a basic LZS Compressor/Decompressor that's designed to work with FF7 LZS files and largely based off the LZS compression WM uses for the PCs kernel2.bin file, but optimized for larger files. As far as I can tell it works fine and usually compresses better than Qhimm's method which is really just designed to work with the PC version so size wasn't an issue. In the few tests I've made with this prog, it decompressed all tests successfully and re-compressed them to be smaller than the original LZS file. These newly compressed files were then decompressed and shown to be identical to the first decompressed file. Tests went like this:File.LZS -> File.Dec -> File2.LZS -> File2.DecSize of File2.LZS < Size of File.LZS AND File.Dec identical to File2.DecBasically, that means it'll work for PSX modding too since they can be injected into a disc image without rearranging file locations. The prog comes with a basic readme as well that should explain how to use it.

Very good. I've just tried a few things, and have made a couple of observations, which I apologise profusely for not noticing during beta testing:

#Status attack for weapons (at 0x05) only goes up to 11 (MBarrier). I think that any status can go in here; I've had berserk (17h) and Paralyse (19h) work before (although their success rate is low, which may explain why it was thought that they don't work).

#It seems that MP cost for attacks is controlled by one byte; when I tried to make some attacks cost more than 255MP, the cost overflowed: setting the cost to 300MP will make it cost 44MP in the game.

EDIT: I was going to mention the problem with item effects used in the menu, then I read the helpme file. I suspect that the data for item effects in the menu is in ff7.exe (where attack data for limit beaks is).

Still, an excellent program; my modding is now much less time consuming and more reliable.

#Status attack for weapons (at 0x05) only goes up to 11 (MBarrier). I think that any status can go in here; I've had berserk (17h) and Paralyse (19h) work before (although their success rate is low, which may explain why it was thought that they don't work).

#It seems that MP cost for attacks is controlled by one byte; when I tried to make some attacks cost more than 255MP, the cost overflowed: setting the cost to 300MP will make it cost 44MP in the game.

I've made these changes and updated the executable on FileFront. Only five downloads have occured to this point so I don't think too many people will explode over there being an update so soon.

Thank you all for your positive reactions to this! I have to admit, I wasn't sure what kind of response I'd get from this. Even when I began this project I was sure that there was something like this already and someone was going to say "Why did you do this when [This program] does it too...and better?" That would surely have ruined my last two weeks. LKM, your reaction to this was particularly amusing.

CyberPirate, unfortunately the Command tab cannot be edited YET. When that happens I'll bump this version up to 1.0. I'm still trying to identify those first two bytes and I think I'll have it.

I just noticed that one of the item effects is mislabeled. 0x50 is labeled as "Raises Stats" when I believe 0x00 actually should be "Raises Stats" and 0x50 should remain "Unknown". This is minor and not worth an update yet.

Anyway, I too thought that there would have been a kernel.bin editor by now; since so many important changes can be made by editing that file I'd have thought it would have been one of the first to have its own editor.

And do you have any idea how long it would take before the program will be able to edit kernelbin.2&3? At the moment I am editing these manually to make my own hardcore mod (for personal use at the moment - it will be a long, long (long) time before I have anything worth releasing).

Kernel.bin2/3? Hmm... Most of that information is quite incomplete in the wiki. I'd have to go through it on my own to determine what it all means unless someone can provide a whitesheet with that kind of stuff on it.

3 looks easy enough as it's just a blank portion of a savemap (which has pretty complete information).2 would be significantly harder without more precise definitions of things like "Character Data", "Stat Curve", and "Character AI".The other sections were cake walks to the challenge that these two would provide. I really wanted to finish them before releasing the first version, which I believe I have. I just need values for those first two bytes of the commands and I'll rework it again.

I'd expect that it could take another month before I'm ready to for testing on 2 or 3. There are at least 6 sections covering 64 bytes in the save map 3 contains that are not identified. Not to mention that each character map has 4 bytes that are still unidentified. That's a rather large amount of "Unknown data" present, but it's still possible. It will require a lot of boring/tedious play-testing to nail down some of the differences.Let me "re-coup" from Wall Market and make sure it's accurate before I start on adding more to it. Rest assured, I do intend (as I always have) to do this.

Yay nice! I've been paying attention to this one a while. 1 question. Though I've never tested it I think "Additional Effects" (AD) must be 00h to make "Effect Modifier" (EM) usable. If EM is number of times the attack shall take effect that is (I don't see it can be anything else here). But both AD end EM can be combined to make an effect together. Like the Hero Drink effect. I was just wondering how this proggy handles this (if it's true what I suspect)?

EDIT: ok I see that AD has a number of hits choice. Should have checked 1st.

From a simple request and a pipe dream, to the magnificence on clear display for all who love FF7 to tinker with to their heart's content... And so quick to bring it all together!! NFITC1, a big, large, Huge Thankyou Materia to you from me for picking up my simple request and running with it like it was an Olympic sprint! (The Huge Thankyou Materia is orange with thin white stripes by the way; it's on display at the Observatory with the others .)

Seriously, how cool is this? It's way beyond anything I could ever do with my meagre skills; the beta testing though I could really sink my sharp little teeth into. I'm good at finding bugs

I'm going to be posting links to WallMarket's topics on here to the forums I'm a Super Mod on; I reckon some more interest will come from over there too, and will then spread from there! Anyone who loves FF7 should check this out.

Out of respect and etiquette I'm not going to just post the name of those forums on here; if interested, type this into Google:

"Brad the Gingercat" +forum

That'll lead ya there

Weeeeeeee!

Love the icons on the tabs too - That is really inventive. Visual appeal++!

Byte 0x00: Cursor Action:0x00: Character0x01: Magic Menu0x02: Summon Menu0x03: Item Menu0x04: E.Skill Menu0x05: Throw Menu0x06: "Limit"0x07: Enemy0x08: W-Item Menu0x09: W-Magic Menu0x0A: W-Summon Menu0x0B: Coin Menu0xFF: Untested, might cause crashByte 0x01: Force TargetByte 0x02: NULL (0xFF)Byte 0x03: NULL (0xFF)Word 0x04: Force Camera (Single)Word 0x06: Force Camera (Multiple)Looks good, right? I tested quite a few of these and was quite satisfied with the results as they gave me what I expected. So now I can change "Attack" into "Limit" right?! . . . No. This is the bad news.While it LOOKS like you could easily change "Attack"'s leading byte of 0x07 to 0x06, this does not change the behavior of Attack. First of all, the game is hard-wired to know that "Attack" is "Attack". Even if you bring up a W-Summon Menu it will still attack. After an object (magic, summon, item) is selected, only a pointer to that item will be returned to the battle engine. The battle engine is programmed to know that Command 0x03 is used to cast magics so if you try to summon something or throw an item, it will only cast the magic in the position of the summon or item in the menu that was brought up.

Example to demonstrate what I mean: I changed "Magic" to bring the "Summon" menu. I wanted to summon Titan. In the list of summons, he is number 5. However, the number 5 is returned as being paired with command 0x03, which the battle engine understands as "Magic". So instead of trying to summon Titan, it performed the magic that is number 5 on the list, which happens to be Poisona.

Still, being able to edit this will not be ignored nor considered a waste of time. The Force Target worked rather well. When setting this to 0x97 (pick one random target from ALL enemies), EVERY magic attack picked one random enemy even though the targeting information of the attack was different. In a few cases, I tried to cast cure on one of my party members and it cast cure on a random monster. I tried to cast Ultima and it only hit one random monster. Pretty fun no?I still also believe that those NULL bytes still have some function. In fact, I refuse to believe they're worthless. I know that it's not Index, MP Cost, Element, Attack Properties, Sound, Status Changes, Additional Effects, or Attack Attribute. It MIGHT have to do with linked materia.My theory about these is this: These eight bytes (or at least, the last seven) are a sort of template of things to pass to the battle engine. When an object is selected (be it magic, summon, item, monster, or player), data appropriate to this action are copied into this string and sent to the battle engine to handle. I know that setting byte 0x01 overrides ANY targeting information the attack might have, even if the cursor only points to a single target on the opposite side of the field. Now it's possible that these two NULLS deal with multipliers (which I'd have no way of tracing). Even playing around with different values in these I could never see any difference in the way the battle occurred.

Yet another tiny update: Additional Effect 0x23 on the Attack Tab should read "Receive no Gil from enemy hit by this attack".

I know you said you was going to edit so we can edit the Command tab, and it seems like you figured it out as well. But is there really a way to edit the materia to create more cuts, or would that be impossible?

Not with this. This is just a kernel editor. I believe that to be a battle engine issue. I don't know how to edit that. It's either hard-coded into the executable (likely) or it's part of battle.lgp, which I'm not going to touch. You'd have to change the way the battle engine responds to the 0x1B command...or any command I guess. I suppose this could be tracked with a debugger, but I don't have any experience with those and wouldn't really know what to look for.

Something I just noticed : in the Attack tab, the "Unused" box in the status field should really be "Dual" - because if you only check the already existing Dual box, the spell will make the game crash. The Dual status works fine as long as those two boxes are checked.

Also, would it be possible to add a text editor ? I'm gonna have to rename lots of stuff (items, armors, weapons, accessories and materias) as well as to edit some descriptions - but hex-editing is a pain...

Something I just noticed : in the Attack tab, the "Unused" box in the status field should really be "Dual" - because if you only check the already existing Dual box, the spell will make the game crash. The Dual status works fine as long as those two boxes are checked.

Wow! That's an excellent find! I was wondering what that Unused was really for. It seems that the "Unused" flags the character as being in Dual, but the "Dual" actually does the HP draining. So "Unused" will be renamed to "Dual" and the "Dual" will be renamed to "DualHP" and will require that "Dual be checked.

EDIT: Just noticed that Items' "Restore Apply" and Attacks' "Attack Attribute" are the same things. Items' "Amount Multiplier" will be changed to "Item Strength". Because of this, Attack Attribute 0x50 is going to be "Unknown" again. I can't shake the feeling that it has something to do with the ATB.

RE-EDIT: This is a good day for items! Unknown 1 is "Camera"; Unknown 2 is now "Additional Effects" (as I had expected); Unknown 3 is now "Item Properties" (Identical to Attack Properties). So Item tab is all filled in terms of function. Values are still a mystery. I'll upload the newest version 0.9.10 (not to be confused with 0.9.1) after I'm finished writing an updated Help file.

Great utility ! I just tried it... ...and it won't work That's because I'm modding the PSX game, so there is no KERNEL2.BIN file...Oh well, I guess I'll just have to hex-edit again.

Quote

Wow! That's an excellent find! I was wondering what that Unused was really for. It seems that the "Unused" flags the character as being in Dual, but the "Dual" actually does the HP draining. So "Unused" will be renamed to "Dual" and the "Dual" will be renamed to "DualHP" and will require that "Dual be checked.

I have made a crude Enemy attack information viewer based on WallMarket. I'm trying to find additional effects that the characters don't use that the enemies do. Only discovered a few things so far:

Ruby Weapon's Whirlsand has "Additional Effect" 0x11. Remove target from battle?Gighee's "Sun Diver" has "Additional Effect" 0x12. I have no idea what this does.Ultima Weapon's "Ultima Beam" has the Unknown element. I'd call it ultima element, but the magic Ultima doesn't have it.Aps's Sewer Tsunami has "Additional Effect" 0x04. There are two of these, each identical except for having different camera movements and Effect Modifiers. Could this be "causes double damage to row [modifier]?" because I think there's one that comes from behind him that causes him double damage and one that comes from behind Cloud, Tifa, and Aeris that causes them double damage.

Interestingly, I have been looking at the data at 0x11 for Ruby Weapon's Whirlsand and the Midgar Zolom's "sweep" attack. It seems that having this at 11h (as Ruby's Whirlsand does) flags the victim as dead when removed from battle, whereas having it as 12h flags the enemy as "escaped". I changed 0x11 of the Midgar Zolom's sweep to 11h rather than 12h and voila! the player was flagged as dead and I got game over when the one remaining character was killed, when I didn't before (you can see this on my youtube video).

I wonder whether the unusual effect you noticed in "Sewer Tsunami" might have something to do with the fact that it attacks both sides, but does more damage to one than the other?

Attack Attributes: 00 is used in quite a few monsters, but I think it's indicates a scripted effect although I can't find the scripts or the index. 25 should be changed to Magical (Ignore def calculation) 6A I believe is Heartless Angel (reduce target(s) to 1 HP)

EDIT: I think I just discovered what the Attack/Item property "Angel Whisper" does. It's really "Do not retarget if dead".I set Bolt3 to this property and cast flare on an enemy in a group then told another party member to cast Bolt3 on that same enemy while Flare was animating. Bolt3 hit the target where the dead enemy was! I tried this again with an unchanged Fire3 and Fire3 re-targeted! Angel Whisper also does this. If you are about to kill an enemy and cue up some party member to cast Angel Whisper on it before it dies (and the battle doesn't end with the killing of that one enemy) then Angel Whisper will actually bring back the fallen enemy to full health.So it's KINDA like "Miss if not dead", which can target targets with the "Death" status, but it won't miss.

I also thought I was onto something about property 0x0002 dealing with multiple targets and animations. Here's a list of Magics/E.Skills that can have it:

0x0002 Property:LifeLife2ConfuHasteSlowDeathEscapeRemoveFire3Ice3Bolt3Quake2Quake3Bio3Demi3FullCureUltimaAll Summons (15)White WindBig GuardBad BreathBetaAqualungTrineMagic BreathPandora's BoxWith the exception of Big Guard, FullCure, and Ultima, these all have a single animation for "all targets" that is different from the animation from the single target. FullCure doesn't even work with multiple targets. Game crashes.