Your memory hacking software could do with some direct editing via the Hex viewer (viewing ram),
Very soon.
I am currently working on just that.
It will allow you to edit by typing directly into the RAM, with ASCII, Unicode, and raw hex input.
But it will be a little while before release.
I am really putting everything into this new hex editor, making sure it is the best one out there.
And that means I am competing against some pretty hefty hex editors.
also isnt their a way to create a way to assign a button which could say increase a value by 1 on every press?
For example to find each animation I have to set it in MemHack and then go back to FF7, note the animation and go back to MemHack and do over.
Suggestions are always welcome and I usually implement almost all of them.
Look for this type of feature in an upcoming version.
I noticed you can only fit one status effect in, so how do you check for multiple statuses? Do you have to switch on the appropriate bytes?
Example:
Hmm... maybe 0x000000C0 (4h + 8h = Ch)
Well almost.
For a simple example such as that, addition does work and you do get the correct result, but the means to the end is technically flawed.
If Confusion = 0x00000040 and Silence = 0x00000080, then (Confusion + Silence) = 0x000000C0 (= Confusion/Silence).
But what if (Confusion + Confusion)?
You would get 0x00000080 from just addition.
The correct way to combine statues is with the bitwise OR operator.
(Confusion + Confusion) == (0x00000040 | 0x00000040) == 0x00000040 (still Confusion).
There aren’t many calculators that have an OR operator, but you can use addition for any case where two of the same statuses are not being added together.
But if you were to write a program that uses this information (such as an editor) you need to use the | operator.
m_dwStatus |= Confusion; // Add “Confusion†status.
Remove statuses with this:
m_dwStatus &= ~Confusion; // Remove “Confusion†status.
Tonfa and Genji, I knew byte 18 was something along those lines but could not remember clearly.
Just another bit of info that may help.
It is entirely likely that byte 18 uses the same generic formula as drop/steal ratios in enemy data.
That is, the final chance percent would not be ((Byte_18) / 0x3F), but rather ((Byte_18 + 1) / 0x40).
Thus “Slow†has a 39.0625% chance rather than a 39.68253968253968253968253968254% chance.
For values between 0x40 and 0x7F (inclusive) you subtract 0x40 from it and then use the formula above to determine the chance of
removing the status(es).
Also, the last two bytes are “specialsâ€.
They contain data related to:
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 ?
They are combined the same way as statuses and elements except for one thing.
Rather than each bit being set, the effects apply if the bit is NOT set.
Thus Magic Hammer (0xFDEE) has the following properties:
0xFDEE =
1111110111101110 =
Attack MP instead of HP,
Drain Damage Dealt,
Reflectable
I’m not done yet.
Byte 13 is the target information.
0x00 Target Self and only Self
0x01 Only One Target Allowed
0x02 Target Enemy By Default
0x04 Target All (Ignores 0x01)
0x08 Can Switch Between 1 Target and All Targets if Both Are Valid Options
0x10 Only Target Default Team
0x20 ?
0x40 Hits Everyone (Allies and Foes)
0x80 Random Targets Within Valid Group
More may come as I remember things.
L. Spiro