Ru-MaNGOS

Вернуться   Ru-MaNGOS > Ядро > Опкоды, Формулы, Клиент > Копаем клиент

Важная информация

Копаем клиент Копаем клиент

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 12.12.2010, 17:10   #1
Konctantin
RuDB Dev
 
Аватар для Konctantin
 
Регистрация: 01.02.2010
Адрес: localhost
Сообщений: 592
Сказал(а) спасибо: 323
Поблагодарили 283 раз(а) в 122 сообщениях
Записей в дневнике: 2
Konctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всем
По умолчанию [13329] Quaternion [Packed] <-> [Unpacked]

Вот разбирался с ротацией ГО и дошел до упаковки данных этой структуры обратно в тип ulong, но в клиенте нашел только одну функцию, которая могла бы это сделать:
Код:
//----- (0041F2A0) --------------------------------------------------------
// PackedQuaternion
void *__thiscall sub_41F2A0(void *this, Quaternion *a2)
{
  int _EDI; // edi@1
  unsigned __int8 _CF; // cf@1
  unsigned __int8 _ZF; // zf@1
  signed int v8; // esi@2
  void *result; // eax@4
  float v12; // ST00_4@4
  int v13; // eax@4
  int v16; // ebx@4
  float v17; // ST00_4@4
  int v18; // ST14_4@4
  signed __int64 _QAX; // qax@4
  int v20; // ebx@4
  __int64 _QT0; // qt0@4
  int v22; // edi@4
  float v23; // ST00_4@4
  int v24; // eax@4
  __int64 v25; // qax@4
  int v26; // ebx@4
  void *v27; // [sp+10h] [bp-8h]@1

  __asm { xorps   xmm0, xmm0 }
  _EDI = (int)a2;
  __asm { comiss  xmm0, dword ptr [edi+0Ch] }
  v27 = this;
  if ( _CF | _ZF )
    v8 = 1;
  else
    v8 = -1;
  __asm
  {
    movss   xmm0, dword ptr [edi+4]
    mulss   xmm0, ds:dword_AB2C64
    movss   [esp+18h+var_18], xmm0
  }
  v13 = v8 * sub_408BC0(v12);
  __asm
  {
    movss   xmm0, dword ptr [edi]
    mulss   xmm0, ds:dword_AB2C60
  }
  v13 &= 0x1FFFFFu;
  v16 = v13;
  __asm { movss   [esp+18h+var_18], xmm0 }
  v18 = (unsigned __int64)v13 >> 32;
  _QAX = (signed __int64)(v8 * sub_408BC0(v17)) << 21;
  v20 = _QAX | v16;
  HIDWORD(_QT0) = HIDWORD(_QAX) | v18;
  LODWORD(_QT0) = v20;
  v22 = (unsigned __int64)(_QT0 << 21) >> 32;
  LODWORD(_QAX) = a2;
  __asm
  {
    movss   xmm0, dword ptr [eax+8]
    mulss   xmm0, ds:dword_AB2C64
    movss   [esp+18h+var_18], xmm0
  }
  v24 = v8 * sub_408BC0(v23);
  v25 = v24 & 0x1FFFFF;
  v26 = v25 | (v20 << 21);
  result = v27;
  *((_DWORD *)v27 + 1) = HIDWORD(v25) | v22;
  *(_DWORD *)v27 = v26;
  return result;
}
Но не получается привести ее в читабельный вид, Не подскажите, как это сделать.

ЗЫ. если кому-то интересно - то вот сама структура:
http://paste2.org/p/1138036
__________________

Последний раз редактировалось Konctantin; 12.12.2010 в 17:24.
Konctantin вне форума   Ответить с цитированием
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
IDB WoW 5.2.0 Build 16650 TOM_RUS Копаем клиент 74 26.03.2016 03:04
[13329] SMSG_UPDATE_OBJECT Konctantin Копаем клиент 7 19.07.2011 20:17
PACKED данные Йоха Опкоды 11 10.05.2011 20:16
[9606] Send packed caster GUID for AFLAG_NOT_CASTER. newsbot CMaNGOS Commits 0 19.03.2010 17:40


Текущее время: 11:20. Часовой пояс GMT +3.


ru-mangos.ru - Русское сообщество MaNGOS
Главная цель проекта MaNGOS - обучающая, поэтому разрешается использовать исходный код и собранную программу только для образовательных целей.
Вы не можете использовать MaNGOS в коммерческих целях, а также не разрешается устанавливать публичные серверы на базе MaNGOS.
Любое копирование материалов, информации в любом виде без указания источника - форума Ru-MaNGOS будет считаться нарушением авторских прав и нарушением Уголовного Кодекса РФ, ст. 146 ст. 147.
Перевод vBulletin: zCarot