Comprehensive Decompile/Organization
IDA Pro / Hex Rays Decompiler Organized source by C/C++ [Class] and by prefix
This commit is contained in:
1 parent
43a2b21d73
commit
6c7361c45c
84 files changed
+30453
No files matched your search
@@ -0,0 +1,196 @@
|
||||
#include "../../pinball.h"
|
||||
|
||||
//----- (010169A4) --------------------------------------------------------
|
||||
void __stdcall THole::TimerExpired(int a1, void *a2)
|
||||
{
|
||||
*(_DWORD *)((char *)a2 + 86) = 0;
|
||||
*(_DWORD *)((char *)a2 + 82) = 1;
|
||||
}
|
||||
|
||||
//----- (010169C0) --------------------------------------------------------
|
||||
int __thiscall THole::FieldEffect(THole *this, struct TBall *a2, struct vector_type *a3)
|
||||
{
|
||||
THole *v3; // esi
|
||||
double v4; // st7
|
||||
double v5; // st7
|
||||
int v6; // eax
|
||||
int v7; // eax
|
||||
int result; // eax
|
||||
double v9; // st7
|
||||
double v10; // st6
|
||||
float v11; // [esp+4h] [ebp-Ch]
|
||||
float v12; // [esp+8h] [ebp-8h]
|
||||
|
||||
v3 = this;
|
||||
if ( *(_DWORD *)((char *)this + 78) )
|
||||
{
|
||||
if ( *(_DWORD *)((char *)this + 82) )
|
||||
{
|
||||
v4 = *(float *)((char *)a2 + 62)
|
||||
- *(float *)(*(_DWORD *)((char *)this + 30) + 270)
|
||||
* *(float *)((char *)a2 + 74)
|
||||
* *(float *)((char *)this + 98);
|
||||
*(float *)((char *)a2 + 62) = v4;
|
||||
v5 = v4 + *(float *)((char *)a2 + 50);
|
||||
*(float *)((char *)a2 + 50) = v5;
|
||||
if ( v5 <= *(float *)((char *)this + 102) )
|
||||
{
|
||||
v6 = *(_DWORD *)((char *)this + 102);
|
||||
*(_DWORD *)((char *)this + 78) = 0;
|
||||
*(_DWORD *)((char *)this + 82) = 0;
|
||||
*(_DWORD *)((char *)a2 + 50) = v6;
|
||||
v7 = *(_DWORD *)((char *)this + 106);
|
||||
*(float *)((char *)a2 + 62) = 0.0;
|
||||
*(_DWORD *)((char *)a2 + 110) = v7;
|
||||
*(float *)((char *)a2 + 58) = 0.0;
|
||||
*(_DWORD *)((char *)a2 + 106) = 0;
|
||||
*(float *)((char *)a2 + 54) = 0.0;
|
||||
*(float *)((char *)a2 + 66) = 0.0;
|
||||
loader_play_sound(*(_DWORD *)((char *)this + 70));
|
||||
control_handler(58, v3);
|
||||
}
|
||||
}
|
||||
result = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
v9 = *(float *)((char *)this + 114) - *(float *)((char *)a2 + 42);
|
||||
v11 = v9;
|
||||
v10 = *(float *)((char *)this + 118) - *(float *)((char *)a2 + 46);
|
||||
v12 = v10;
|
||||
if ( v10 * v10 + v9 * v9 <= *(float *)((char *)this + 126) )
|
||||
{
|
||||
normalize_2d(&v11);
|
||||
*(float *)a3 = v11 * *(float *)((char *)v3 + 110) - *(float *)((char *)a2 + 54) * *(float *)((char *)a2 + 66);
|
||||
*((float *)a3 + 1) = v12 * *(float *)((char *)v3 + 110)
|
||||
- *(float *)((char *)a2 + 58) * *(float *)((char *)a2 + 66);
|
||||
result = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
result = 0;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
//----- (01016AB1) --------------------------------------------------------
|
||||
int __thiscall THole::Message(THole *this, int a2, float a3)
|
||||
{
|
||||
THole *v3; // esi
|
||||
|
||||
v3 = this;
|
||||
if ( a2 == 1024 && *(_DWORD *)((char *)this + 78) )
|
||||
{
|
||||
if ( *(_DWORD *)((char *)this + 86) )
|
||||
timer_kill(*(_DWORD *)((char *)this + 86));
|
||||
*(_DWORD *)((char *)v3 + 86) = 0;
|
||||
*(_DWORD *)((char *)v3 + 82) = 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
//----- (01018476) --------------------------------------------------------
|
||||
void __thiscall THole::Collision(THole *this, struct TBall *a2, struct vector_type *a3, struct vector_type *a4, float a5, struct TEdgeSegment *a6)
|
||||
{
|
||||
THole *v6; // esi
|
||||
int v7; // ecx
|
||||
|
||||
v6 = this;
|
||||
if ( !*(_DWORD *)((char *)this + 78) )
|
||||
{
|
||||
*(_DWORD *)((char *)this + 82) = 0;
|
||||
*(_DWORD *)((char *)this + 66) = 1315859240;
|
||||
*(_DWORD *)((char *)this + 78) = 1;
|
||||
*(_DWORD *)((char *)a2 + 106) = this;
|
||||
*(_DWORD *)((char *)a2 + 42) = *(_DWORD *)((char *)this + 114);
|
||||
v7 = *(_DWORD *)((char *)this + 118);
|
||||
*(float *)((char *)a2 + 62) = 0.0;
|
||||
*(_DWORD *)((char *)a2 + 46) = v7;
|
||||
*(_DWORD *)((char *)v6 + 86) = timer_set(0.5, (int)v6, (int)THole::TimerExpired);
|
||||
if ( !*(_DWORD *)(*(_DWORD *)((char *)v6 + 30) + 370) )
|
||||
{
|
||||
loader_play_sound(*(_DWORD *)((char *)v6 + 74));
|
||||
control_handler(57, v6);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//----- (01019A1C) --------------------------------------------------------
|
||||
THole *__thiscall THole::THole(THole *this, struct TPinballTable *a2, int a3)
|
||||
{
|
||||
THole *v3; // ebx
|
||||
_DWORD *v4; // eax
|
||||
_DWORD *v5; // eax
|
||||
int v6; // eax
|
||||
float *v7; // edi
|
||||
double v8; // st7
|
||||
TCircle *v9; // eax
|
||||
float *v10; // eax
|
||||
unsigned int v11; // ecx
|
||||
char v13; // [esp+14h] [ebp-5Ch]
|
||||
_DWORD *v14; // [esp+20h] [ebp-50h]
|
||||
unsigned int v15; // [esp+48h] [ebp-28h]
|
||||
int v16; // [esp+5Ch] [ebp-14h]
|
||||
int v17; // [esp+60h] [ebp-10h]
|
||||
int v18; // [esp+64h] [ebp-Ch]
|
||||
int v19; // [esp+68h] [ebp-8h]
|
||||
struct vector_type *v20; // [esp+6Ch] [ebp-4h]
|
||||
float v21; // [esp+78h] [ebp+8h]
|
||||
TCircle *v22; // [esp+78h] [ebp+8h]
|
||||
|
||||
v3 = this;
|
||||
TCollisionComponent::TCollisionComponent(this, a2, a3, 0);
|
||||
*(_DWORD *)v3 = &THole::`vftable';
|
||||
*(_DWORD *)((char *)v3 + 94) = 1028443341;
|
||||
*(_DWORD *)((char *)v3 + 6) = 0;
|
||||
*(_DWORD *)((char *)v3 + 86) = 0;
|
||||
*(_DWORD *)((char *)v3 + 78) = 0;
|
||||
v4 = (_DWORD *)loader_query_float_attribute(a3, 0, 407);
|
||||
if ( v4 )
|
||||
*(_DWORD *)((char *)v3 + 90) = *v4;
|
||||
else
|
||||
*(_DWORD *)((char *)v3 + 90) = 1048576000;
|
||||
v5 = (_DWORD *)loader_query_float_attribute(a3, 0, 701);
|
||||
if ( v5 )
|
||||
*(_DWORD *)((char *)v3 + 98) = *v5;
|
||||
else
|
||||
*(_DWORD *)((char *)v3 + 98) = 1056964608;
|
||||
v21 = *(float *)loader_query_float_attribute(a3, 0, 306);
|
||||
*(_DWORD *)((char *)v3 + 110) = *(_DWORD *)loader_query_float_attribute(a3, 0, 305);
|
||||
loader_query_visual(a3, 0, &v13);
|
||||
v6 = (int)v14;
|
||||
*(_DWORD *)((char *)v3 + 114) = *v14;
|
||||
v7 = (float *)(v6 + 8);
|
||||
*(_DWORD *)((char *)v3 + 118) = *(_DWORD *)(v6 + 4);
|
||||
v8 = v21 * *(float *)(v6 + 8);
|
||||
v20 = (struct vector_type *)v6;
|
||||
*(float *)((char *)v3 + 126) = v8;
|
||||
if ( 0.0 == v8 )
|
||||
*(_DWORD *)((char *)v3 + 126) = 981668463;
|
||||
v9 = (TCircle *)operator new(0x25u);
|
||||
if ( v9 )
|
||||
v22 = TCircle::TCircle(v9, v3, (char *)v3 + 5, v15, v20, *(float *)((char *)v3 + 126));
|
||||
else
|
||||
v22 = 0;
|
||||
if ( v22 )
|
||||
{
|
||||
(*(void (**)(void))(*(_DWORD *)v22 + 8))();
|
||||
objlist_class::Add((THole *)((char *)v3 + 42), (void *)v22);
|
||||
}
|
||||
*(float *)((char *)v3 + 126) = *v7 * *v7;
|
||||
*(_DWORD *)((char *)v3 + 102) = *(_DWORD *)(loader_query_float_attribute(a3, 0, 408) + 8);
|
||||
v10 = (float *)loader_query_float_attribute(a3, 0, 1304);
|
||||
*(_DWORD *)((char *)v3 + 106) = (signed __int64)_floor(*v10);
|
||||
v19 = *(_DWORD *)((char *)v3 + 126);
|
||||
v16 = *(_DWORD *)((char *)v3 + 114);
|
||||
v17 = *(_DWORD *)((char *)v3 + 118);
|
||||
*(_DWORD *)((char *)v3 + 130) = (char *)v3 + 5;
|
||||
v11 = v15;
|
||||
v18 = *(_DWORD *)((char *)v3 + 122);
|
||||
*(_DWORD *)((char *)v3 + 138) = v3;
|
||||
*(_DWORD *)((char *)v3 + 134) = v11;
|
||||
edges_insert_circle((struct circle_type *)&v16, 0, (THole *)((char *)v3 + 130));
|
||||
return v3;
|
||||
}
|
||||
// 10026AC: using guessed type void *THole::`vftable';
|
||||
Reference in new issue
Block a user