OMG!!! That's perfect!
Now my questions :)
----------------------------------
1. You said
ok first of all this is a member function of the class EQPlayer, called Levitating which takes no arguments and returns an int (or maybe bool)
This is because there are no args given and because at the end it just says 'retn' with nothing afterwards, correct? So, in assembly, if a function has arguments it looks like:
Code: Select all
.text:0045F545 arg_0 = dword ptr 4
.text:0045F545 arg_4 = dword ptr 8
Right?
----------------------------------
2. if "cmp byte ptr [ecx+16Ch], 0" = "if ( this->Something != 0 )" ...then, what would the assembly syntax for the following?
A.
"if (this.something != 0 )"
....again, mostly asking this question just to try to come to terms with things, your explanation is great!
-----------------------------------
3. You said that this:
Code: Select all
mov ecx, [ecx+120h]
test ecx, ecx
jz short loc_45F8A0
means:
Code: Select all
if (this->EQ_Character == 0) {
goto exit;
}
I don't follow this exactly. And, I think it's the 'mov' statement that I don't understand. How do you know that "mov ecx, [ecx+120h]" somehow means that ecx is now "this->EQ_Character"?
Also, any time we 'test' something against itself, are we always doing a "if whatever == 0"?
------------------------------------
4. You said:
Code: Select all
push 0
push 1
push 39h
call EQ_Character__TotalSpellAffects
Means:
Code: Select all
int result = this->EQ_Character->TotalSpellEffects(0x39, 1, 0);
Is this always the case? That the pushes before a 'call' are the arguments sent to the function that is called?
Also, when I go to EQ_Character__TotalSpellEffects() I see a function with tons of variables at the top of it (21 in fact) .....*sigh* ...my mind explodes....if you get bored, I'd love to see you translate TotalSpellEffects() into C++ too ...seeing one with lots of variables like that would be helpful.
------------------------------------------
5. You said that:
Somehow means "Return 1;" ...but, at the end you said that 'xor eax, eax' would equal zero. So, where does the "Return 1;" come from? I guess I don't know what 'inc' means.
---------------------------------------
6. Thanks for explaining what eax and ecx are! What is "esp" usually?
...oh, and a few more while I'm asking

"ebx", "esi", "edi", "ebp"
Thanks for my all my newbie questions!!! People may laugh, but this is how I learned to find offsets from DKAA

...tons of questions and windbg later, I can search pretty well nowadays.