Author Topic: Enemy Attack Data [Split from Skillster's Hardcode Mode]  (Read 31038 times)

Tonfa

  • *
  • Posts: 18
    • View Profile
Enemy Attack Data [Split from Skillster's Hardcode Mode]
« Reply #50 on: 2005-11-18 18:18:38 »
Yes. Values in range 01-3F are status infliction, both positive and negative, you can have an attack that causes Haste and Mini for example.  The higher the value, the higher the accuracy, of course.

L. Spiro

  • *
  • Posts: 797
    • View Profile
    • http://www.memoryhacking.com/index.php
Enemy Attack Data [Split from Skillster's Hardcode Mode]
« Reply #51 on: 2005-11-19 06:45:06 »
Quote from: The Skillster
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.


Quote
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.


Quote from: The Skillster
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:

Quote from: Genji
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.
Code: [Select]
m_dwStatus |= Confusion;  // Add “Confusion” status.
Remove statuses with this:
Code: [Select]
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

Genji

  • *
  • Posts: 23
    • View Profile
Enemy Attack Data [Split from Skillster's Hardcode Mode]
« Reply #52 on: 2005-11-19 07:23:48 »
Quote
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.


So to get right number we must use formula like (FF FF - [combination of offsets]). For 'Magic Hammer' it will be: FF FF - 02 11 = FD EE.
02 11 here is combination of 00 01, 00 10 and 02 00.
Right ?

L. Spiro

  • *
  • Posts: 797
    • View Profile
    • http://www.memoryhacking.com/index.php
Enemy Attack Data [Split from Skillster's Hardcode Mode]
« Reply #53 on: 2005-11-19 07:47:59 »
As far as coding is concerned, you would add a special attribute this way:
Code: [Select]
m_dwAttribs &= ~ATTRIBUTE;
Where “ATTRIBUTE” is the numerical value of the attribute you wish to add and m_dwAttribs defaults to 0xFFFF.
It might not be 0xFFFF when you perform the above operation, but it should start out initially as 0xFFFF.
Then you can perform the above operation as many times as you please to add any special attributes you wish.
To remove an attribute:
Code: [Select]
m_dwAttribs |= ATTRIBUTE;


That is for code.
If you want to do this by hand outside of programming, grab Microsoft® Calculator, set it to advanced mode, set it to “Hex” mode, check “Word”, type the value for the attack (FDEE), and then hit ~.
Microsoft® Calculator will show 211, which is the same result you got.
It works out the same way as what you did, but uses bitwise math to ensure correct results.
Likewise you can type 211 and hit ~ to get FDEE.
This would be the fastest way to convert these numbers by hand.


L. Spiro

Tonfa

  • *
  • Posts: 18
    • View Profile
Enemy Attack Data [Split from Skillster's Hardcode Mode]
« Reply #54 on: 2005-11-19 12:33:51 »
The enemy attack list is now done up to Scene 140. I'll add some more tonight.

EDIT: Really tired, no more progress tonight. However something occured to me while taking a quick look at some attack data.

EDIT2: Ignore this. I fail when I'm tired.

EDIT3: Finished!! Whew.

EDIT4: I need to edit the data inside Kernel.bin to confirm a suspicion I have about 0x0002 for bytes 27-28. However I can't seem to find a program for decompressing kernel.bin...any suggestions?

EDIT5: How can Limit Breaks be edited, and where are they located? They are not in kernel.bin according to Gears.

Genji

  • *
  • Posts: 23
    • View Profile
Enemy Attack Data [Split from Skillster's Hardcode Mode]
« Reply #55 on: 2005-11-23 07:00:04 »
Wow nice... Full list of enemy moves.

ARMs

  • *
  • Posts: 164
    • View Profile
Re: Enemy Attack Data [Split from Skillster's Hardcode Mode]
« Reply #56 on: 2006-05-30 10:48:42 »
OMG Thank you guys a million.  I have been testing these days for 2 weeks now and I managed to figure alot of stuff out but i didn't realize you guys have done so much already. 

Now i must look for your Hard core mod thread.

VincentVal

  • *
  • Posts: 142
    • View Profile
Re: Enemy Attack Data [Split from Skillster's Hardcode Mode]
« Reply #57 on: 2006-05-30 18:24:20 »
Don't revive topics!!!