reformat files, remove function decorators
This commit is contained in:
1 parent
1b72ee48ac
commit
d0beb8d2a7
25 files changed
+7179
-7265
No files matched your search
+168
-170
@@ -5,199 +5,197 @@
|
||||
#include "TBall.h"
|
||||
|
||||
//----- (0100B072) --------------------------------------------------------
|
||||
bool __thiscall TBall::already_hit(TBall *this, struct TEdgeSegment *a2)
|
||||
bool __thiscall TBall::already_hit(TBall* this, struct TEdgeSegment* a2)
|
||||
{
|
||||
int v2; // esi
|
||||
bool result; // al
|
||||
int v2; // esi
|
||||
bool result; // al
|
||||
|
||||
v2 = *(DWORD *)((char *)this + 134);
|
||||
if ( !v2 )
|
||||
return 0;
|
||||
result = 1;
|
||||
if ( *(struct TEdgeSegment **)((char *)this + 114) != a2 )
|
||||
{
|
||||
if ( v2 == 1 )
|
||||
return 0;
|
||||
if ( *(struct TEdgeSegment **)((char *)this + 118) == a2 )
|
||||
return result;
|
||||
if ( v2 == 2 )
|
||||
return 0;
|
||||
if ( *(struct TEdgeSegment **)((char *)this + 122) == a2 )
|
||||
return result;
|
||||
if ( v2 == 3 )
|
||||
return 0;
|
||||
if ( *(struct TEdgeSegment **)((char *)this + 126) == a2 )
|
||||
return result;
|
||||
if ( v2 == 4 )
|
||||
return 0;
|
||||
if ( *(struct TEdgeSegment **)((char *)this + 130) != a2 )
|
||||
{
|
||||
result = 0;
|
||||
if ( v2 != 5 )
|
||||
result = v2 == (DWORD)a2;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
v2 = *(DWORD*)((char*)this + 134);
|
||||
if (!v2)
|
||||
return 0;
|
||||
result = 1;
|
||||
if (*(struct TEdgeSegment**)((char*)this + 114) != a2)
|
||||
{
|
||||
if (v2 == 1)
|
||||
return 0;
|
||||
if (*(struct TEdgeSegment**)((char*)this + 118) == a2)
|
||||
return result;
|
||||
if (v2 == 2)
|
||||
return 0;
|
||||
if (*(struct TEdgeSegment**)((char*)this + 122) == a2)
|
||||
return result;
|
||||
if (v2 == 3)
|
||||
return 0;
|
||||
if (*(struct TEdgeSegment**)((char*)this + 126) == a2)
|
||||
return result;
|
||||
if (v2 == 4)
|
||||
return 0;
|
||||
if (*(struct TEdgeSegment**)((char*)this + 130) != a2)
|
||||
{
|
||||
result = 0;
|
||||
if (v2 != 5)
|
||||
result = v2 == (DWORD)a2;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
//----- (0101590F) --------------------------------------------------------
|
||||
void __thiscall TBall::not_again(TBall *this, struct TEdgeSegment *a2)
|
||||
void __thiscall TBall::not_again(TBall* this, struct TEdgeSegment* a2)
|
||||
{
|
||||
signed int v2; // edx
|
||||
signed int v2; // edx
|
||||
|
||||
v2 = *(DWORD *)((char *)this + 134);
|
||||
if ( v2 < 5 )
|
||||
{
|
||||
*(DWORD *)((char *)this + 4 * v2 + 114) = a2;
|
||||
++*(DWORD *)((char *)this + 134);
|
||||
}
|
||||
v2 = *(DWORD*)((char*)this + 134);
|
||||
if (v2 < 5)
|
||||
{
|
||||
*(DWORD*)((char*)this + 4 * v2 + 114) = a2;
|
||||
++* (DWORD*)((char*)this + 134);
|
||||
}
|
||||
}
|
||||
|
||||
//----- (01015B9C) --------------------------------------------------------
|
||||
int __thiscall TBall::Message(TBall *this, int a2, float a3)
|
||||
int __thiscall TBall::Message(TBall* this, int a2, float a3)
|
||||
{
|
||||
TBall *v3; // esi
|
||||
int v4; // eax
|
||||
TBall* v3; // esi
|
||||
int v4; // eax
|
||||
|
||||
v3 = this;
|
||||
if ( a2 == 1024 )
|
||||
{
|
||||
render_ball_set(*(DWORD *)((char *)this + 26), 0, 0.0, 0, 0);
|
||||
v4 = *(DWORD *)((char *)v3 + 154);
|
||||
*(float *)((char *)v3 + 42) = 0.0;
|
||||
*(DWORD *)((char *)v3 + 106) = 0;
|
||||
*(float *)((char *)v3 + 46) = 0.0;
|
||||
*((_BYTE *)v3 + 5) = 0;
|
||||
*(DWORD *)((char *)v3 + 150) = 0;
|
||||
*(DWORD *)((char *)v3 + 110) = 1;
|
||||
*(float *)((char *)v3 + 58) = 0.0;
|
||||
*(DWORD *)((char *)v3 + 50) = v4;
|
||||
*(float *)((char *)v3 + 54) = 0.0;
|
||||
*(float *)((char *)v3 + 66) = 0.0;
|
||||
*(float *)((char *)v3 + 70) = 0.0;
|
||||
}
|
||||
return 0;
|
||||
v3 = this;
|
||||
if (a2 == 1024)
|
||||
{
|
||||
render_ball_set(*(DWORD*)((char*)this + 26), 0, 0.0, 0, 0);
|
||||
v4 = *(DWORD*)((char*)v3 + 154);
|
||||
*(float*)((char*)v3 + 42) = 0.0;
|
||||
*(DWORD*)((char*)v3 + 106) = 0;
|
||||
*(float*)((char*)v3 + 46) = 0.0;
|
||||
*((_BYTE*)v3 + 5) = 0;
|
||||
*(DWORD*)((char*)v3 + 150) = 0;
|
||||
*(DWORD*)((char*)v3 + 110) = 1;
|
||||
*(float*)((char*)v3 + 58) = 0.0;
|
||||
*(DWORD*)((char*)v3 + 50) = v4;
|
||||
*(float*)((char*)v3 + 54) = 0.0;
|
||||
*(float*)((char*)v3 + 66) = 0.0;
|
||||
*(float*)((char*)v3 + 70) = 0.0;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
//----- (01015C08) --------------------------------------------------------
|
||||
void __thiscall TBall::Repaint(TBall *this)
|
||||
void __thiscall TBall::Repaint(TBall* this)
|
||||
{
|
||||
TBall *v1; // esi
|
||||
double v2; // st7
|
||||
int v3; // edx
|
||||
int v4; // edi
|
||||
float *v5; // ebx
|
||||
int v6; // ecx
|
||||
float v7; // ST08_4
|
||||
int v8; // [esp+14h] [ebp-8h]
|
||||
int v9; // [esp+18h] [ebp-4h]
|
||||
TBall* v1; // esi
|
||||
double v2; // st7
|
||||
int v3; // edx
|
||||
int v4; // edi
|
||||
float* v5; // ebx
|
||||
int v6; // ecx
|
||||
float v7; // ST08_4
|
||||
int v8; // [esp+14h] [ebp-8h]
|
||||
int v9; // [esp+18h] [ebp-4h]
|
||||
|
||||
v1 = this;
|
||||
if ( *(DWORD *)((char *)this + 150) )
|
||||
*(float *)((char *)this + 50) = *(float *)((char *)this + 142) * *(float *)((char *)this + 46)
|
||||
+ *(float *)((char *)this + 138) * *(float *)((char *)this + 42)
|
||||
+ *(float *)((char *)this + 154)
|
||||
+ *(float *)((char *)this + 146);
|
||||
proj_xform_to_2d((float *)((char *)this + 42), &v8);
|
||||
v2 = proj_z_distance((char *)v1 + 42);
|
||||
v3 = *(DWORD *)(*(DWORD *)((char *)v1 + 34) + 4);
|
||||
v4 = 0;
|
||||
if ( *(DWORD *)(v3 + 4) - 1 > 0 )
|
||||
{
|
||||
v5 = (float *)((char *)v1 + 162);
|
||||
do
|
||||
{
|
||||
if ( v2 >= *v5 )
|
||||
break;
|
||||
++v4;
|
||||
++v5;
|
||||
}
|
||||
while ( v4 < *(DWORD *)(v3 + 4) - 1 );
|
||||
}
|
||||
v6 = *(DWORD *)(v3 + 4 * v4 + 8);
|
||||
v8 += *(DWORD *)(v6 + 12) / -2;
|
||||
v9 += *(DWORD *)(v6 + 16) / -2;
|
||||
v7 = v2;
|
||||
render_ball_set(*(DWORD *)((char *)v1 + 26), v6, v7, v8, v9);
|
||||
v1 = this;
|
||||
if (*(DWORD*)((char*)this + 150))
|
||||
* (float*)((char*)this + 50) = *(float*)((char*)this + 142) * *(float*)((char*)this + 46)
|
||||
+ *(float*)((char*)this + 138) * *(float*)((char*)this + 42)
|
||||
+ *(float*)((char*)this + 154)
|
||||
+ *(float*)((char*)this + 146);
|
||||
proj_xform_to_2d((float*)((char*)this + 42), &v8);
|
||||
v2 = proj_z_distance((char*)v1 + 42);
|
||||
v3 = *(DWORD*)(*(DWORD*)((char*)v1 + 34) + 4);
|
||||
v4 = 0;
|
||||
if (*(DWORD*)(v3 + 4) - 1 > 0)
|
||||
{
|
||||
v5 = (float*)((char*)v1 + 162);
|
||||
do
|
||||
{
|
||||
if (v2 >= *v5)
|
||||
break;
|
||||
++v4;
|
||||
++v5;
|
||||
} while (v4 < *(DWORD*)(v3 + 4) - 1);
|
||||
}
|
||||
v6 = *(DWORD*)(v3 + 4 * v4 + 8);
|
||||
v8 += *(DWORD*)(v6 + 12) / -2;
|
||||
v9 += *(DWORD*)(v6 + 16) / -2;
|
||||
v7 = v2;
|
||||
render_ball_set(*(DWORD*)((char*)v1 + 26), v6, v7, v8, v9);
|
||||
}
|
||||
// 1008ED8: using guessed type double proj_z_distance(DWORD);
|
||||
|
||||
//----- (01019309) --------------------------------------------------------
|
||||
TBall *__thiscall TBall::TBall(TBall *this, struct TPinballTable *a2)
|
||||
TBall* __thiscall TBall::TBall(TBall* this, struct TPinballTable* a2)
|
||||
{
|
||||
TBall *v2; // esi
|
||||
objlist_class *v3; // eax
|
||||
objlist_class *v4; // ebx
|
||||
objlist_class *v5; // eax
|
||||
int v6; // ebx
|
||||
objlist_class *v7; // ecx
|
||||
int v8; // eax
|
||||
double v9; // st7
|
||||
int v10; // eax
|
||||
int v11; // ecx
|
||||
char v13; // [esp+Ch] [ebp-50h]
|
||||
void *v14; // [esp+4Ch] [ebp-10h]
|
||||
int v15; // [esp+54h] [ebp-8h]
|
||||
float *v16; // [esp+58h] [ebp-4h]
|
||||
struct TPinballTable *v17; // [esp+64h] [ebp+8h]
|
||||
TBall* v2; // esi
|
||||
objlist_class* v3; // eax
|
||||
objlist_class* v4; // ebx
|
||||
objlist_class* v5; // eax
|
||||
int v6; // ebx
|
||||
objlist_class* v7; // ecx
|
||||
int v8; // eax
|
||||
double v9; // st7
|
||||
int v10; // eax
|
||||
int v11; // ecx
|
||||
char v13; // [esp+Ch] [ebp-50h]
|
||||
void* v14; // [esp+4Ch] [ebp-10h]
|
||||
int v15; // [esp+54h] [ebp-8h]
|
||||
float* v16; // [esp+58h] [ebp-4h]
|
||||
struct TPinballTable* v17; // [esp+64h] [ebp+8h]
|
||||
|
||||
v2 = this;
|
||||
TPinballComponent::TPinballComponent(this, a2, -1, 0);
|
||||
*(float *)((char *)v2 + 78) = 0.0;
|
||||
*(DWORD *)v2 = &TBall::vftable;
|
||||
*(float *)((char *)v2 + 70) = 0.0;
|
||||
*((_BYTE *)v2 + 5) = 1;
|
||||
*(DWORD *)((char *)v2 + 106) = 0;
|
||||
*(DWORD *)((char *)v2 + 134) = 0;
|
||||
*(float *)((char *)v2 + 74) = 0.0;
|
||||
*(DWORD *)((char *)v2 + 110) = 1;
|
||||
*(DWORD *)((char *)v2 + 150) = 0;
|
||||
*(float *)((char *)v2 + 66) = 0.0;
|
||||
*(float *)((char *)v2 + 58) = 0.0;
|
||||
*(float *)((char *)v2 + 54) = 0.0;
|
||||
*(float *)((char *)v2 + 86) = 1000000000.0;
|
||||
*(float *)((char *)v2 + 82) = 1000000000.0;
|
||||
*(float *)((char *)v2 + 42) = 0.0;
|
||||
*(float *)((char *)v2 + 46) = 0.0;
|
||||
v3 = (objlist_class *)operator new(8u);
|
||||
v4 = v3;
|
||||
if ( v3 )
|
||||
{
|
||||
objlist_class::objlist_class(v3, 0, 4);
|
||||
v5 = v4;
|
||||
}
|
||||
else
|
||||
{
|
||||
v5 = 0;
|
||||
}
|
||||
*(DWORD *)((char *)v2 + 34) = v5;
|
||||
v6 = loader_query_handle("ball");
|
||||
*(DWORD *)((char *)v2 + 154) = *(DWORD *)loader_query_float_attribute(v6, 0, 500);
|
||||
v15 = loader_query_visual_states(v6);
|
||||
v17 = 0;
|
||||
if ( v15 > 0 )
|
||||
{
|
||||
v16 = (float *)((char *)v2 + 162);
|
||||
do
|
||||
{
|
||||
loader_query_visual(v6, (signed int)v17, &v13);
|
||||
v7 = *(objlist_class **)((char *)v2 + 34);
|
||||
if ( v7 )
|
||||
objlist_class::Add(v7, v14);
|
||||
v8 = loader_query_float_attribute(v6, (signed int)v17, 501);
|
||||
v9 = proj_z_distance(v8);
|
||||
v17 = (struct TPinballTable *)((char *)v17 + 1);
|
||||
*v16 = v9;
|
||||
++v16;
|
||||
}
|
||||
while ( (signed int)v17 < v15 );
|
||||
}
|
||||
v10 = render_create_sprite(2, 0, 0, 0, 0, 0);
|
||||
v11 = *(DWORD *)((char *)v2 + 154);
|
||||
*(DWORD *)((char *)v2 + 26) = v10;
|
||||
*(DWORD *)(*(DWORD *)((char *)v2 + 30) + 282) = v11;
|
||||
*(DWORD *)((char *)v2 + 50) = *(DWORD *)((char *)v2 + 154);
|
||||
return v2;
|
||||
v2 = this;
|
||||
TPinballComponent::TPinballComponent(this, a2, -1, 0);
|
||||
*(float*)((char*)v2 + 78) = 0.0;
|
||||
*(DWORD*)v2 = &TBall::vftable;
|
||||
*(float*)((char*)v2 + 70) = 0.0;
|
||||
*((_BYTE*)v2 + 5) = 1;
|
||||
*(DWORD*)((char*)v2 + 106) = 0;
|
||||
*(DWORD*)((char*)v2 + 134) = 0;
|
||||
*(float*)((char*)v2 + 74) = 0.0;
|
||||
*(DWORD*)((char*)v2 + 110) = 1;
|
||||
*(DWORD*)((char*)v2 + 150) = 0;
|
||||
*(float*)((char*)v2 + 66) = 0.0;
|
||||
*(float*)((char*)v2 + 58) = 0.0;
|
||||
*(float*)((char*)v2 + 54) = 0.0;
|
||||
*(float*)((char*)v2 + 86) = 1000000000.0;
|
||||
*(float*)((char*)v2 + 82) = 1000000000.0;
|
||||
*(float*)((char*)v2 + 42) = 0.0;
|
||||
*(float*)((char*)v2 + 46) = 0.0;
|
||||
v3 = (objlist_class*)component_create(8u);
|
||||
v4 = v3;
|
||||
if (v3)
|
||||
{
|
||||
objlist_class::objlist_class(v3, 0, 4);
|
||||
v5 = v4;
|
||||
}
|
||||
else
|
||||
{
|
||||
v5 = 0;
|
||||
}
|
||||
*(DWORD*)((char*)v2 + 34) = v5;
|
||||
v6 = loader_query_handle("ball");
|
||||
*(DWORD*)((char*)v2 + 154) = *(DWORD*)loader_query_float_attribute(v6, 0, 500);
|
||||
v15 = loader_query_visual_states(v6);
|
||||
v17 = 0;
|
||||
if (v15 > 0)
|
||||
{
|
||||
v16 = (float*)((char*)v2 + 162);
|
||||
do
|
||||
{
|
||||
loader_query_visual(v6, (signed int)v17, &v13);
|
||||
v7 = *(objlist_class * *)((char*)v2 + 34);
|
||||
if (v7)
|
||||
objlist_class::Add(v7, v14);
|
||||
v8 = loader_query_float_attribute(v6, (signed int)v17, 501);
|
||||
v9 = proj_z_distance(v8);
|
||||
v17 = (struct TPinballTable*)((char*)v17 + 1);
|
||||
*v16 = v9;
|
||||
++v16;
|
||||
} while ((signed int)v17 < v15);
|
||||
}
|
||||
v10 = render_create_sprite(2, 0, 0, 0, 0, 0);
|
||||
v11 = *(DWORD*)((char*)v2 + 154);
|
||||
*(DWORD*)((char*)v2 + 26) = v10;
|
||||
*(DWORD*)(*(DWORD*)((char*)v2 + 30) + 282) = v11;
|
||||
*(DWORD*)((char*)v2 + 50) = *(DWORD*)((char*)v2 + 154);
|
||||
return v2;
|
||||
}
|
||||
// 1002554: using guessed type void *TBall::vftable;
|
||||
// 1008ED8: using guessed type double proj_z_distance(DWORD);
|
||||
@@ -1,415 +1,410 @@
|
||||
#include "TCollisionComponent.h"
|
||||
|
||||
//----- (01015A9A) --------------------------------------------------------
|
||||
void __thiscall TCollisionComponent::port_draw(TCollisionComponent *this)
|
||||
void TCollisionComponent::port_draw(TCollisionComponent* this)
|
||||
{
|
||||
TCollisionComponent *v1; // edi
|
||||
int v2; // eax
|
||||
int v3; // esi
|
||||
int v4; // ebx
|
||||
TCollisionComponent* v1; // edi
|
||||
int v2; // eax
|
||||
int v3; // esi
|
||||
int v4; // ebx
|
||||
|
||||
v1 = this;
|
||||
v2 = *(DWORD *)(*(DWORD *)((char *)this + 46) + 4) - 1;
|
||||
if ( v2 >= 0 )
|
||||
{
|
||||
v3 = 4 * v2 + 8;
|
||||
v4 = *(DWORD *)(*(DWORD *)((char *)this + 46) + 4);
|
||||
do
|
||||
{
|
||||
(*(void (**)(void))(**(DWORD **)(v3 + *(DWORD *)((char *)v1 + 46)) + 4))();
|
||||
v3 -= 4;
|
||||
--v4;
|
||||
}
|
||||
while ( v4 );
|
||||
}
|
||||
v1 = this;
|
||||
v2 = *(DWORD*)(*(DWORD*)((char*)this + 46) + 4) - 1;
|
||||
if (v2 >= 0)
|
||||
{
|
||||
v3 = 4 * v2 + 8;
|
||||
v4 = *(DWORD*)(*(DWORD*)((char*)this + 46) + 4);
|
||||
do
|
||||
{
|
||||
(*(void (**)(void))(**(DWORD * *)(v3 + *(DWORD*)((char*)v1 + 46)) + 4))();
|
||||
v3 -= 4;
|
||||
--v4;
|
||||
} while (v4);
|
||||
}
|
||||
}
|
||||
|
||||
//----- (01017883) --------------------------------------------------------
|
||||
double basic_collision(struct TBall *a1, struct vector_type *a2, struct vector_type *a3, float a4, float a5, float a6, float a7)
|
||||
double basic_collision(TBall* a1, vector_type* a2, vector_type* a3, float a4, float a5, float a6, float a7)
|
||||
{
|
||||
int v7; // ST30_4
|
||||
float *v8; // esi
|
||||
double v9; // st7
|
||||
unsigned __int8 v11; // c0
|
||||
unsigned __int8 v12; // c3
|
||||
double v13; // st7
|
||||
double v14; // st6
|
||||
float v15; // ST1C_4
|
||||
float v16; // ST20_4
|
||||
float v17; // ST10_4
|
||||
float v18; // ST20_4
|
||||
double v19; // st7
|
||||
float v21; // [esp+24h] [ebp-Ch]
|
||||
float v22; // [esp+28h] [ebp-8h]
|
||||
float v23; // [esp+3Ch] [ebp+Ch]
|
||||
float v24; // [esp+3Ch] [ebp+Ch]
|
||||
int v7; // ST30_4
|
||||
float* v8; // esi
|
||||
double v9; // st7
|
||||
unsigned __int8 v11; // c0
|
||||
unsigned __int8 v12; // c3
|
||||
double v13; // st7
|
||||
double v14; // st6
|
||||
float v15; // ST1C_4
|
||||
float v16; // ST20_4
|
||||
float v17; // ST10_4
|
||||
float v18; // ST20_4
|
||||
double v19; // st7
|
||||
float v21; // [esp+24h] [ebp-Ch]
|
||||
float v22; // [esp+28h] [ebp-8h]
|
||||
float v23; // [esp+3Ch] [ebp+Ch]
|
||||
float v24; // [esp+3Ch] [ebp+Ch]
|
||||
|
||||
*(float *)((char *)a1 + 42) = *(float *)a2;
|
||||
*(DWORD *)((char *)a1 + 46) = *((DWORD *)a2 + 1);
|
||||
v21 = *(float *)a3;
|
||||
v22 = *((float *)a3 + 1);
|
||||
v7 = *((DWORD *)a3 + 2);
|
||||
v8 = (float *)((char *)a1 + 54);
|
||||
v9 = -(v22 * *(float *)((char *)a1 + 58) + *(float *)a3 * *(float *)((char *)a1 + 54));
|
||||
v23 = v9;
|
||||
if ( v11 | v12 )
|
||||
{
|
||||
v23 = -v9;
|
||||
}
|
||||
else
|
||||
{
|
||||
v13 = v9 * v21;
|
||||
v14 = v22 * v23;
|
||||
v15 = v13 + *v8;
|
||||
v16 = v14 + *(float *)((char *)a1 + 58);
|
||||
v17 = v13 * a4;
|
||||
v18 = v16 * a5;
|
||||
*v8 = v15 * a5 + v17;
|
||||
*(float *)((char *)a1 + 58) = v18 + v14 * a4;
|
||||
normalize_2d((float *)((char *)a1 + 54));
|
||||
}
|
||||
v24 = v23 * *(float *)((char *)a1 + 66);
|
||||
v19 = *(float *)((char *)a1 + 66) - (1.0 - a4) * v24;
|
||||
*(float *)((char *)a1 + 66) = v19;
|
||||
if ( v24 >= (double)a6 )
|
||||
{
|
||||
*v8 = v19 * *v8 + v21 * a7;
|
||||
*(float *)((char *)a1 + 58) = v19 * *(float *)((char *)a1 + 58) + v22 * a7;
|
||||
*(float *)((char *)a1 + 66) = normalize_2d((float *)((char *)a1 + 54));
|
||||
}
|
||||
return v24;
|
||||
*(float*)((char*)a1 + 42) = *(float*)a2;
|
||||
*(DWORD*)((char*)a1 + 46) = *((DWORD*)a2 + 1);
|
||||
v21 = *(float*)a3;
|
||||
v22 = *((float*)a3 + 1);
|
||||
v7 = *((DWORD*)a3 + 2);
|
||||
v8 = (float*)((char*)a1 + 54);
|
||||
v9 = -(v22 * *(float*)((char*)a1 + 58) + *(float*)a3 * *(float*)((char*)a1 + 54));
|
||||
v23 = v9;
|
||||
if (v11 | v12)
|
||||
{
|
||||
v23 = -v9;
|
||||
}
|
||||
else
|
||||
{
|
||||
v13 = v9 * v21;
|
||||
v14 = v22 * v23;
|
||||
v15 = v13 + *v8;
|
||||
v16 = v14 + *(float*)((char*)a1 + 58);
|
||||
v17 = v13 * a4;
|
||||
v18 = v16 * a5;
|
||||
*v8 = v15 * a5 + v17;
|
||||
*(float*)((char*)a1 + 58) = v18 + v14 * a4;
|
||||
normalize_2d((float*)((char*)a1 + 54));
|
||||
}
|
||||
v24 = v23 * *(float*)((char*)a1 + 66);
|
||||
v19 = *(float*)((char*)a1 + 66) - (1.0 - a4) * v24;
|
||||
*(float*)((char*)a1 + 66) = v19;
|
||||
if (v24 >= (double)a6)
|
||||
{
|
||||
*v8 = v19 * *v8 + v21 * a7;
|
||||
*(float*)((char*)a1 + 58) = v19 * *(float*)((char*)a1 + 58) + v22 * a7;
|
||||
*(float*)((char*)a1 + 66) = normalize_2d((float*)((char*)a1 + 54));
|
||||
}
|
||||
return v24;
|
||||
}
|
||||
|
||||
//----- (010179A9) --------------------------------------------------------
|
||||
struct TEdgeSegment *install_wall(float *a1, struct TCollisionComponent *a2, char *a3, unsigned int a4, float a5, void *a6)
|
||||
struct TEdgeSegment* install_wall(float* a1, TCollisionComponent* a2, char* a3, int a4, float a5, void* a6)
|
||||
{
|
||||
signed __int64 v6; // rax
|
||||
float *v7; // esi
|
||||
float *v8; // ecx
|
||||
TCircle *v9; // eax
|
||||
struct TCollisionComponent *v10; // edi
|
||||
float v11; // ST14_4
|
||||
TCircle *v12; // esi
|
||||
TLine *v13; // eax
|
||||
double v14; // st7
|
||||
float v15; // eax
|
||||
double v16; // st6
|
||||
float v17; // eax
|
||||
TCircle *v18; // eax
|
||||
float v19; // ST10_4
|
||||
TCircle *v20; // edi
|
||||
int v21; // ebx
|
||||
TLine *v22; // eax
|
||||
TLine *v23; // esi
|
||||
char v25; // [esp+10h] [ebp-6Ch]
|
||||
float v26; // [esp+18h] [ebp-64h]
|
||||
float v27; // [esp+20h] [ebp-5Ch]
|
||||
float v28; // [esp+28h] [ebp-54h]
|
||||
float v29; // [esp+2Ch] [ebp-50h]
|
||||
float v30; // [esp+30h] [ebp-4Ch]
|
||||
float v31; // [esp+34h] [ebp-48h]
|
||||
float v32; // [esp+38h] [ebp-44h]
|
||||
float v33; // [esp+3Ch] [ebp-40h]
|
||||
float v34; // [esp+40h] [ebp-3Ch]
|
||||
float v35; // [esp+44h] [ebp-38h]
|
||||
int v36; // [esp+48h] [ebp-34h]
|
||||
int v37; // [esp+4Ch] [ebp-30h]
|
||||
int v38; // [esp+50h] [ebp-2Ch]
|
||||
int v39; // [esp+58h] [ebp-24h]
|
||||
int v40; // [esp+5Ch] [ebp-20h]
|
||||
int v41; // [esp+64h] [ebp-18h]
|
||||
float v42; // [esp+68h] [ebp-14h]
|
||||
int v43; // [esp+6Ch] [ebp-10h]
|
||||
float *v44; // [esp+70h] [ebp-Ch]
|
||||
int v45; // [esp+74h] [ebp-8h]
|
||||
TCircle *v46; // [esp+78h] [ebp-4h]
|
||||
float *v47; // [esp+84h] [ebp+8h]
|
||||
signed __int64 v6; // rax
|
||||
float* v7; // esi
|
||||
float* v8; // ecx
|
||||
TCircle* v9; // eax
|
||||
TCollisionComponent* v10; // edi
|
||||
float v11; // ST14_4
|
||||
TCircle* v12; // esi
|
||||
TLine* v13; // eax
|
||||
double v14; // st7
|
||||
float v15; // eax
|
||||
double v16; // st6
|
||||
float v17; // eax
|
||||
TCircle* v18; // eax
|
||||
float v19; // ST10_4
|
||||
TCircle* v20; // edi
|
||||
int v21; // ebx
|
||||
TLine* v22; // eax
|
||||
TLine* v23; // esi
|
||||
char v25; // [esp+10h] [ebp-6Ch]
|
||||
float v26; // [esp+18h] [ebp-64h]
|
||||
float v27; // [esp+20h] [ebp-5Ch]
|
||||
float v28; // [esp+28h] [ebp-54h]
|
||||
float v29; // [esp+2Ch] [ebp-50h]
|
||||
float v30; // [esp+30h] [ebp-4Ch]
|
||||
float v31; // [esp+34h] [ebp-48h]
|
||||
float v32; // [esp+38h] [ebp-44h]
|
||||
float v33; // [esp+3Ch] [ebp-40h]
|
||||
float v34; // [esp+40h] [ebp-3Ch]
|
||||
float v35; // [esp+44h] [ebp-38h]
|
||||
int v36; // [esp+48h] [ebp-34h]
|
||||
int v37; // [esp+4Ch] [ebp-30h]
|
||||
int v38; // [esp+50h] [ebp-2Ch]
|
||||
int v39; // [esp+58h] [ebp-24h]
|
||||
int v40; // [esp+5Ch] [ebp-20h]
|
||||
int v41; // [esp+64h] [ebp-18h]
|
||||
float v42; // [esp+68h] [ebp-14h]
|
||||
int v43; // [esp+6Ch] [ebp-10h]
|
||||
float* v44; // [esp+70h] [ebp-Ch]
|
||||
int v45; // [esp+74h] [ebp-8h]
|
||||
TCircle* v46; // [esp+78h] [ebp-4h]
|
||||
float* v47; // [esp+84h] [ebp+8h]
|
||||
|
||||
v6 = (signed __int64)(_floor(*a1) - 1.0);
|
||||
v7 = a1 + 1;
|
||||
v8 = a1 + 1;
|
||||
v45 = v6;
|
||||
v44 = a1 + 1;
|
||||
if ( !(DWORD)v6 )
|
||||
{
|
||||
v41 = *(int *)v7;
|
||||
v42 = a1[2];
|
||||
v9 = (TCircle *)operator new(0x25u);
|
||||
v10 = a2;
|
||||
if ( v9 )
|
||||
{
|
||||
v11 = a5 + a1[3];
|
||||
v12 = TCircle::TCircle(v9, a2, a3, a4, (struct vector_type *)&v41, v11);
|
||||
}
|
||||
else
|
||||
{
|
||||
v12 = 0;
|
||||
}
|
||||
v46 = v12;
|
||||
if ( !v12 )
|
||||
goto LABEL_14;
|
||||
*(DWORD *)((char *)v12 + 13) = a6;
|
||||
LABEL_13:
|
||||
(*(void (__thiscall **)(TCircle *))(*(DWORD *)v12 + 8))(v12);
|
||||
LABEL_14:
|
||||
objlist_class::Add((struct TCollisionComponent *)((char *)v10 + 42), (void *)v12);
|
||||
return v46;
|
||||
}
|
||||
if ( (DWORD)v6 == 1 )
|
||||
{
|
||||
v37 = *(DWORD *)v7;
|
||||
v38 = *((DWORD *)a1 + 2);
|
||||
v39 = *((DWORD *)a1 + 3);
|
||||
v40 = *((DWORD *)a1 + 4);
|
||||
v13 = (TLine *)operator new(0x55u);
|
||||
v10 = a2;
|
||||
if ( v13 )
|
||||
v12 = TLine::TLine(v13, a2, a3, a4, (struct vector_type *)&v37, (struct vector_type *)&v39);
|
||||
else
|
||||
v12 = 0;
|
||||
v46 = v12;
|
||||
if ( v12 )
|
||||
{
|
||||
*(DWORD *)((char *)v12 + 13) = a6;
|
||||
TLine::Offset(v12, a5);
|
||||
goto LABEL_13;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
*((float *)&v6 + 1) = v7[2 * (DWORD)v6 - 2];
|
||||
v47 = 0;
|
||||
v33 = 0.0;
|
||||
v34 = *((float *)&v6 + 1);
|
||||
v30 = 0.0;
|
||||
v35 = v7[2 * (DWORD)v6 - 1];
|
||||
if ( (signed int)v6 > 0 )
|
||||
{
|
||||
while ( 1 )
|
||||
{
|
||||
if ( (signed int)v47 >= (signed int)v6 - 1 )
|
||||
{
|
||||
v14 = *v8;
|
||||
v15 = v8[1];
|
||||
}
|
||||
else
|
||||
{
|
||||
v14 = v7[2];
|
||||
v15 = v7[3];
|
||||
}
|
||||
v16 = *v7;
|
||||
v27 = v15;
|
||||
v17 = v7[1];
|
||||
*(float *)&v41 = v16;
|
||||
v42 = v17;
|
||||
if ( 0.0 != a5 )
|
||||
{
|
||||
if ( (v28 = v16 - v34,
|
||||
v29 = v42 - v35,
|
||||
v31 = v14 - v16,
|
||||
v32 = v27 - v42,
|
||||
cross(&v28, &v31, (float *)&v25),
|
||||
v26 > 0.0)
|
||||
&& a5 > 0.0
|
||||
|| v26 < 0.0 && a5 < 0.0 )
|
||||
{
|
||||
v18 = (TCircle *)operator new(0x25u);
|
||||
if ( v18 )
|
||||
{
|
||||
v19 = a5 * 1.001;
|
||||
v20 = TCircle::TCircle(v18, a2, a3, a4, (struct vector_type *)&v41, v19);
|
||||
}
|
||||
else
|
||||
{
|
||||
v20 = 0;
|
||||
}
|
||||
if ( v20 )
|
||||
{
|
||||
*(DWORD *)((char *)v20 + 13) = a6;
|
||||
(*(void (__thiscall **)(TCircle *))(*(DWORD *)v20 + 8))(v20);
|
||||
objlist_class::Add((struct TCollisionComponent *)((char *)a2 + 42), (void *)v20);
|
||||
}
|
||||
}
|
||||
}
|
||||
v37 = *(DWORD *)v7;
|
||||
v38 = *((DWORD *)v7 + 1);
|
||||
v21 = (int)(v7 + 2);
|
||||
v39 = *((DWORD *)v7 + 2);
|
||||
v40 = *((DWORD *)v7 + 3);
|
||||
v22 = (TLine *)operator new(0x55u);
|
||||
if ( v22 )
|
||||
v23 = TLine::TLine(v22, a2, a3, a4, (struct vector_type *)&v37, (struct vector_type *)&v39);
|
||||
else
|
||||
v23 = 0;
|
||||
v46 = v23;
|
||||
if ( v23 )
|
||||
{
|
||||
*(DWORD *)((char *)v23 + 13) = a6;
|
||||
TLine::Offset(v23, a5);
|
||||
(*(void (__thiscall **)(TLine *))(*(DWORD *)v23 + 8))(v23);
|
||||
objlist_class::Add((struct TCollisionComponent *)((char *)a2 + 42), (void *)v23);
|
||||
}
|
||||
v47 = (float *)((char *)v47 + 1);
|
||||
v34 = *(float *)&v41;
|
||||
v35 = v42;
|
||||
v36 = v43;
|
||||
v7 = (float *)v21;
|
||||
if ( (signed int)v47 >= v45 )
|
||||
break;
|
||||
v8 = v44;
|
||||
LODWORD(v6) = v45;
|
||||
}
|
||||
}
|
||||
}
|
||||
return v46;
|
||||
v6 = (signed __int64)(_floor(*a1) - 1.0);
|
||||
v7 = a1 + 1;
|
||||
v8 = a1 + 1;
|
||||
v45 = v6;
|
||||
v44 = a1 + 1;
|
||||
if (!(DWORD)v6)
|
||||
{
|
||||
v41 = *(int*)v7;
|
||||
v42 = a1[2];
|
||||
v9 = (TCircle*)component_create(0x25u);
|
||||
v10 = a2;
|
||||
if (v9)
|
||||
{
|
||||
v11 = a5 + a1[3];
|
||||
v12 = TCircle::TCircle(v9, a2, a3, a4, (struct vector_type*) & v41, v11);
|
||||
}
|
||||
else
|
||||
{
|
||||
v12 = 0;
|
||||
}
|
||||
v46 = v12;
|
||||
if (!v12)
|
||||
goto LABEL_14;
|
||||
*(DWORD*)((char*)v12 + 13) = a6;
|
||||
LABEL_13:
|
||||
(*(void(__thiscall * *)(TCircle*))(*(DWORD*)v12 + 8))(v12);
|
||||
LABEL_14:
|
||||
objlist_class::Add((TCollisionComponent*)((char*)v10 + 42), (void*)v12);
|
||||
return v46;
|
||||
}
|
||||
if ((DWORD)v6 == 1)
|
||||
{
|
||||
v37 = *(DWORD*)v7;
|
||||
v38 = *((DWORD*)a1 + 2);
|
||||
v39 = *((DWORD*)a1 + 3);
|
||||
v40 = *((DWORD*)a1 + 4);
|
||||
v13 = (TLine*)component_create(0x55u);
|
||||
v10 = a2;
|
||||
if (v13)
|
||||
v12 = TLine::TLine(v13, a2, a3, a4, (struct vector_type*) & v37, (struct vector_type*) & v39);
|
||||
else
|
||||
v12 = 0;
|
||||
v46 = v12;
|
||||
if (v12)
|
||||
{
|
||||
*(DWORD*)((char*)v12 + 13) = a6;
|
||||
TLine::Offset(v12, a5);
|
||||
goto LABEL_13;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
*((float*)& v6 + 1) = v7[2 * (DWORD)v6 - 2];
|
||||
v47 = 0;
|
||||
v33 = 0.0;
|
||||
v34 = *((float*)& v6 + 1);
|
||||
v30 = 0.0;
|
||||
v35 = v7[2 * (DWORD)v6 - 1];
|
||||
if ((signed int)v6 > 0)
|
||||
{
|
||||
while (1)
|
||||
{
|
||||
if ((signed int)v47 >= (signed int)v6 - 1)
|
||||
{
|
||||
v14 = *v8;
|
||||
v15 = v8[1];
|
||||
}
|
||||
else
|
||||
{
|
||||
v14 = v7[2];
|
||||
v15 = v7[3];
|
||||
}
|
||||
v16 = *v7;
|
||||
v27 = v15;
|
||||
v17 = v7[1];
|
||||
*(float*)& v41 = v16;
|
||||
v42 = v17;
|
||||
if (0.0 != a5)
|
||||
{
|
||||
if ((v28 = v16 - v34,
|
||||
v29 = v42 - v35,
|
||||
v31 = v14 - v16,
|
||||
v32 = v27 - v42,
|
||||
cross(&v28, &v31, (float*)& v25),
|
||||
v26 > 0.0)
|
||||
&& a5 > 0.0
|
||||
|| v26 < 0.0 && a5 < 0.0)
|
||||
{
|
||||
v18 = (TCircle*)component_create(0x25u);
|
||||
if (v18)
|
||||
{
|
||||
v19 = a5 * 1.001;
|
||||
v20 = TCircle::TCircle(v18, a2, a3, a4, (struct vector_type*) & v41, v19);
|
||||
}
|
||||
else
|
||||
{
|
||||
v20 = 0;
|
||||
}
|
||||
if (v20)
|
||||
{
|
||||
*(DWORD*)((char*)v20 + 13) = a6;
|
||||
(*(void(__thiscall * *)(TCircle*))(*(DWORD*)v20 + 8))(v20);
|
||||
objlist_class::Add((struct TCollisionComponent*)((char*)a2 + 42), (void*)v20);
|
||||
}
|
||||
}
|
||||
}
|
||||
v37 = *(DWORD*)v7;
|
||||
v38 = *((DWORD*)v7 + 1);
|
||||
v21 = (int)(v7 + 2);
|
||||
v39 = *((DWORD*)v7 + 2);
|
||||
v40 = *((DWORD*)v7 + 3);
|
||||
v22 = (TLine*)component_create(0x55u);
|
||||
if (v22)
|
||||
v23 = TLine::TLine(v22, a2, a3, a4, (vector_type*) & v37, (vector_type*) & v39);
|
||||
else
|
||||
v23 = 0;
|
||||
v46 = v23;
|
||||
if (v23)
|
||||
{
|
||||
*(DWORD*)((char*)v23 + 13) = a6;
|
||||
TLine::Offset(v23, a5);
|
||||
(*(void(__thiscall * *)(TLine*))(*(DWORD*)v23 + 8))(v23);
|
||||
objlist_class::Add((TCollisionComponent*)((char*)a2 + 42), (void*)v23);
|
||||
}
|
||||
v47 = (float*)((char*)v47 + 1);
|
||||
v34 = *(float*)& v41;
|
||||
v35 = v42;
|
||||
v36 = v43;
|
||||
v7 = (float*)v21;
|
||||
if ((signed int)v47 >= v45)
|
||||
break;
|
||||
v8 = v44;
|
||||
LODWORD(v6) = v45;
|
||||
}
|
||||
}
|
||||
}
|
||||
return v46;
|
||||
}
|
||||
|
||||
//----- (01017E85) --------------------------------------------------------
|
||||
void __thiscall TCollisionComponent::Collision(TCollisionComponent *this, struct TBall *a2, struct vector_type *a3, struct vector_type *a4, float a5, struct TEdgeSegment *a6)
|
||||
void TCollisionComponent::Collision(TBall* a2, vector_type* a3, vector_type* a4, float a5, TEdgeSegment* a6)
|
||||
{
|
||||
TCollisionComponent *v6; // esi
|
||||
double v7; // st7
|
||||
int v8; // esi
|
||||
double collision; // st7
|
||||
int sound_id; // esi
|
||||
|
||||
v6 = this;
|
||||
if ( *(DWORD *)(*(DWORD *)((char *)this + 30) + 370) )
|
||||
{
|
||||
basic_collision(a2, a3, a4, *(float *)((char *)this + 54), *(float *)((char *)this + 58), 1000000000.0, 0.0);
|
||||
return;
|
||||
}
|
||||
v7 = basic_collision(
|
||||
a2,
|
||||
a3,
|
||||
a4,
|
||||
*(float *)((char *)this + 54),
|
||||
*(float *)((char *)this + 58),
|
||||
*(float *)((char *)this + 66),
|
||||
*(float *)((char *)this + 62));
|
||||
if ( v7 <= *(float *)((char *)v6 + 66) )
|
||||
{
|
||||
if ( v7 <= 0.2 )
|
||||
return;
|
||||
v8 = *(DWORD *)((char *)v6 + 70);
|
||||
}
|
||||
else
|
||||
{
|
||||
v8 = *(DWORD *)((char *)v6 + 74);
|
||||
}
|
||||
if ( v8 )
|
||||
loader_play_sound(v8);
|
||||
if (*(DWORD*)(*(DWORD*)((char*)this + 30) + 370))
|
||||
{
|
||||
basic_collision(a2, a3, a4, *(float*)((char*)this + 54), *(float*)((char*)this + 58), 1000000000.0, 0.0);
|
||||
return;
|
||||
}
|
||||
collision = basic_collision(
|
||||
a2,
|
||||
a3,
|
||||
a4,
|
||||
*(float*)((char*)this + 54),
|
||||
*(float*)((char*)this + 58),
|
||||
*(float*)((char*)this + 66),
|
||||
*(float*)((char*)this + 62));
|
||||
if (collision <= *(float*)((char*)this + 66))
|
||||
{
|
||||
if (collision <= 0.2)
|
||||
return;
|
||||
sound_id = *(DWORD*)((char*)this + 70);
|
||||
}
|
||||
else
|
||||
{
|
||||
sound_id = *(DWORD*)((char*)this + 74);
|
||||
}
|
||||
if (sound_id)
|
||||
loader_play_sound(sound_id);
|
||||
}
|
||||
|
||||
//----- (01017F29) --------------------------------------------------------
|
||||
int __thiscall TCollisionComponent::DefaultCollision(TCollisionComponent *this, struct TBall *a2, struct vector_type *a3, struct vector_type *a4)
|
||||
int TCollisionComponent::DefaultCollision(TBall* a2, vector_type* a3, vector_type* a4)
|
||||
{
|
||||
TCollisionComponent *v4; // esi
|
||||
double v5; // st7
|
||||
int v6; // esi
|
||||
int v8; // esi
|
||||
double collision; // st7
|
||||
int sound_id; // esi
|
||||
int v8; // esi
|
||||
|
||||
v4 = this;
|
||||
if ( *(DWORD *)(*(DWORD *)((char *)this + 30) + 370) )
|
||||
{
|
||||
basic_collision(a2, a3, a4, *(float *)((char *)this + 54), *(float *)((char *)this + 58), 1000000000.0, 0.0);
|
||||
return 0;
|
||||
}
|
||||
v5 = basic_collision(
|
||||
a2,
|
||||
a3,
|
||||
a4,
|
||||
*(float *)((char *)this + 54),
|
||||
*(float *)((char *)this + 58),
|
||||
*(float *)((char *)this + 66),
|
||||
*(float *)((char *)this + 62));
|
||||
if ( v5 <= *(float *)((char *)v4 + 66) )
|
||||
{
|
||||
if ( v5 > 0.2 )
|
||||
{
|
||||
v8 = *(DWORD *)((char *)v4 + 70);
|
||||
if ( v8 )
|
||||
loader_play_sound(v8);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
v6 = *(DWORD *)((char *)v4 + 74);
|
||||
if ( v6 )
|
||||
loader_play_sound(v6);
|
||||
return 1;
|
||||
if (*(DWORD*)(*(DWORD*)((char*)this + 30) + 370))
|
||||
{
|
||||
basic_collision(a2, a3, a4, *(float*)((char*)this + 54), *(float*)((char*)this + 58), 1000000000.0, 0.0);
|
||||
return 0;
|
||||
}
|
||||
collision = basic_collision(
|
||||
a2,
|
||||
a3,
|
||||
a4,
|
||||
*(float*)((char*)this + 54),
|
||||
*(float*)((char*)this + 58),
|
||||
*(float*)((char*)this + 66),
|
||||
*(float*)((char*)this + 62));
|
||||
if (collision <= *(float*)((char*)this + 66))
|
||||
{
|
||||
if (collision > 0.2)
|
||||
{
|
||||
v8 = *(DWORD*)((char*)this + 70);
|
||||
if (v8)
|
||||
loader_play_sound(v8);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
sound_id = *(DWORD*)((char*)this + 74);
|
||||
if (sound_id)
|
||||
loader_play_sound(sound_id);
|
||||
return 1;
|
||||
}
|
||||
|
||||
//----- (010190B3) --------------------------------------------------------
|
||||
TCollisionComponent *__thiscall TCollisionComponent::TCollisionComponent(TCollisionComponent *this, struct TPinballTable *a2, int a3, int a4)
|
||||
TCollisionComponent* TCollisionComponent::TCollisionComponent(TCollisionComponent* this, struct TPinballTable* a2, int a3, int a4)
|
||||
{
|
||||
TCollisionComponent *v4; // esi
|
||||
bool v5; // zf
|
||||
float v6; // ST18_4
|
||||
unsigned int v7; // ST14_4
|
||||
float *v8; // eax
|
||||
int v10; // [esp+14h] [ebp-48h]
|
||||
int v11; // [esp+18h] [ebp-44h]
|
||||
int v12; // [esp+24h] [ebp-38h]
|
||||
int v13; // [esp+28h] [ebp-34h]
|
||||
int v14; // [esp+2Ch] [ebp-30h]
|
||||
int v15; // [esp+44h] [ebp-18h]
|
||||
unsigned int v16; // [esp+48h] [ebp-14h]
|
||||
TCollisionComponent* v4; // esi
|
||||
bool v5; // zf
|
||||
float v6; // ST18_4
|
||||
unsigned int v7; // ST14_4
|
||||
float* v8; // eax
|
||||
int v10; // [esp+14h] [ebp-48h]
|
||||
int v11; // [esp+18h] [ebp-44h]
|
||||
int v12; // [esp+24h] [ebp-38h]
|
||||
int v13; // [esp+28h] [ebp-34h]
|
||||
int v14; // [esp+2Ch] [ebp-30h]
|
||||
int v15; // [esp+44h] [ebp-18h]
|
||||
unsigned int v16; // [esp+48h] [ebp-14h]
|
||||
|
||||
v4 = this;
|
||||
TPinballComponent::TPinballComponent(this, a2, a3, 1);
|
||||
*(DWORD *)v4 = &TCollisionComponent::vftable;
|
||||
objlist_class::objlist_class((TCollisionComponent *)((char *)v4 + 42), 4, 4);
|
||||
v5 = *(DWORD *)((char *)v4 + 10) == 0;
|
||||
*((_BYTE *)v4 + 5) = 1;
|
||||
if ( !v5 )
|
||||
*((_BYTE *)v4 + 4) = 1;
|
||||
if ( a3 <= 0 )
|
||||
{
|
||||
loader_default_vsi(&v10);
|
||||
}
|
||||
else
|
||||
{
|
||||
loader_query_visual(a3, 0, &v10);
|
||||
if ( a4 )
|
||||
{
|
||||
v6 = *(float *)((char *)a2 + 282);
|
||||
v7 = v16;
|
||||
v8 = (float *)loader_query_float_attribute(a3, 0, 600);
|
||||
install_wall(v8, v4, (char *)v4 + 5, v7, v6, 0);
|
||||
}
|
||||
}
|
||||
*(DWORD *)((char *)v4 + 66) = v13;
|
||||
*(DWORD *)((char *)v4 + 54) = v11;
|
||||
*(DWORD *)((char *)v4 + 58) = v10;
|
||||
*(DWORD *)((char *)v4 + 62) = v14;
|
||||
*(DWORD *)((char *)v4 + 74) = v15;
|
||||
*(DWORD *)((char *)v4 + 70) = v12;
|
||||
*(DWORD *)((char *)v4 + 22) = a3;
|
||||
return v4;
|
||||
v4 = this;
|
||||
TPinballComponent::TPinballComponent(this, a2, a3, 1);
|
||||
*(DWORD*)v4 = &TCollisionComponent::vftable;
|
||||
objlist_class::objlist_class((TCollisionComponent*)((char*)v4 + 42), 4, 4);
|
||||
v5 = *(DWORD*)((char*)v4 + 10) == 0;
|
||||
*((_BYTE*)v4 + 5) = 1;
|
||||
if (!v5)
|
||||
* ((_BYTE*)v4 + 4) = 1;
|
||||
if (a3 <= 0)
|
||||
{
|
||||
loader_default_vsi(&v10);
|
||||
}
|
||||
else
|
||||
{
|
||||
loader_query_visual(a3, 0, &v10);
|
||||
if (a4)
|
||||
{
|
||||
v6 = *(float*)((char*)a2 + 282);
|
||||
v7 = v16;
|
||||
v8 = (float*)loader_query_float_attribute(a3, 0, 600);
|
||||
install_wall(v8, v4, (char*)v4 + 5, v7, v6, 0);
|
||||
}
|
||||
}
|
||||
*(DWORD*)((char*)v4 + 66) = v13;
|
||||
*(DWORD*)((char*)v4 + 54) = v11;
|
||||
*(DWORD*)((char*)v4 + 58) = v10;
|
||||
*(DWORD*)((char*)v4 + 62) = v14;
|
||||
*(DWORD*)((char*)v4 + 74) = v15;
|
||||
*(DWORD*)((char*)v4 + 70) = v12;
|
||||
*(DWORD*)((char*)v4 + 22) = a3;
|
||||
return v4;
|
||||
}
|
||||
// 10024EC: using guessed type void *TCollisionComponent::vftable;
|
||||
|
||||
//----- (01019172) --------------------------------------------------------
|
||||
TZmapList *__thiscall TCollisionComponent::~TCollisionComponent(TCollisionComponent *this)
|
||||
TZmapList* TCollisionComponent::~TCollisionComponent()
|
||||
{
|
||||
TCollisionComponent *v1; // esi
|
||||
int v2; // eax
|
||||
int v3; // eax
|
||||
void *v4; // edi
|
||||
TCollisionComponent* v1; // esi
|
||||
int v2; // eax
|
||||
int v3; // eax
|
||||
void* v4; // edi
|
||||
|
||||
v1 = this;
|
||||
v2 = *(DWORD *)((char *)this + 46);
|
||||
*(DWORD *)this = &TCollisionComponent::vftable;
|
||||
if ( *(DWORD *)(v2 + 4) )
|
||||
{
|
||||
do
|
||||
{
|
||||
v3 = *(DWORD *)((char *)v1 + 46);
|
||||
v4 = *(void **)(v3 + 8);
|
||||
objlist_delete_object(*(DWORD *)((char *)v1 + 46), *(DWORD *)(v3 + 8));
|
||||
operator delete(v4);
|
||||
}
|
||||
while ( *(DWORD *)(*(DWORD *)((char *)v1 + 46) + 4) );
|
||||
}
|
||||
objlist_destroy(*(DWORD *)((char *)v1 + 46));
|
||||
return TPinballComponent::~TPinballComponent(v1);
|
||||
v2 = *(DWORD*)((char*)this + 46);
|
||||
*(DWORD*)this = &TCollisionComponent::vftable;
|
||||
if (*(DWORD*)(v2 + 4))
|
||||
{
|
||||
do
|
||||
{
|
||||
v3 = *(DWORD*)((char*)this + 46);
|
||||
v4 = *(void**)(v3 + 8);
|
||||
objlist_delete_object(*(DWORD*)((char*)this + 46), *(DWORD*)(v3 + 8));
|
||||
component_delete(v4);
|
||||
} while (*(DWORD*)(*(DWORD*)((char*)this + 46) + 4));
|
||||
}
|
||||
objlist_destroy(*(DWORD*)((char*)this + 46));
|
||||
|
||||
// TODO: FIXME: needs to be called on an object
|
||||
return TPinballComponent::~TPinballComponent(this);
|
||||
}
|
||||
// 10024EC: using guessed type void *TCollisionComponent::vftable;
|
||||
@@ -1,60 +1,59 @@
|
||||
#include "TComponentGroup.h"
|
||||
|
||||
//----- (010159DC) --------------------------------------------------------
|
||||
void TComponentGroup::NotifyTimerExpired(int a1, struct TPinballComponent *a2)
|
||||
void TComponentGroup::NotifyTimerExpired(int a1, struct TPinballComponent* a2)
|
||||
{
|
||||
*(DWORD *)((char *)a2 + 50) = 0;
|
||||
control_handler(61, a2);
|
||||
*(DWORD*)((char*)a2 + 50) = 0;
|
||||
control_handler(61, a2);
|
||||
}
|
||||
|
||||
//----- (010159F9) --------------------------------------------------------
|
||||
int __thiscall TComponentGroup::Message(TComponentGroup *this, int a2, float a3)
|
||||
int __thiscall TComponentGroup::Message(TComponentGroup* this, int a2, float a3)
|
||||
{
|
||||
TComponentGroup *v3; // esi
|
||||
int v4; // eax
|
||||
int v5; // edi
|
||||
int v6; // ebx
|
||||
TComponentGroup* v3; // esi
|
||||
int v4; // eax
|
||||
int v5; // edi
|
||||
int v6; // ebx
|
||||
|
||||
v3 = this;
|
||||
if ( a2 == 48 )
|
||||
{
|
||||
if ( *(DWORD *)((char *)this + 50) )
|
||||
{
|
||||
timer_kill(*(DWORD *)((char *)this + 50));
|
||||
*(DWORD *)((char *)v3 + 50) = 0;
|
||||
}
|
||||
if ( a3 > 0.0 )
|
||||
*(DWORD *)((char *)v3 + 50) = timer_set(a3, (int)v3, (int)TComponentGroup::NotifyTimerExpired);
|
||||
}
|
||||
else if ( a2 <= 1007 || a2 > 1011 && a2 != 1020 && a2 != 1022 )
|
||||
{
|
||||
v4 = *(DWORD *)(*(DWORD *)((char *)this + 46) + 4) - 1;
|
||||
if ( v4 >= 0 )
|
||||
{
|
||||
v5 = 4 * v4 + 8;
|
||||
v6 = *(DWORD *)(*(DWORD *)((char *)this + 46) + 4);
|
||||
do
|
||||
{
|
||||
(***(void (****)(int, DWORD))(v5 + *(DWORD *)((char *)v3 + 46)))(a2, LODWORD(a3));
|
||||
v5 -= 4;
|
||||
--v6;
|
||||
}
|
||||
while ( v6 );
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
v3 = this;
|
||||
if (a2 == 48)
|
||||
{
|
||||
if (*(DWORD*)((char*)this + 50))
|
||||
{
|
||||
timer_kill(*(DWORD*)((char*)this + 50));
|
||||
*(DWORD*)((char*)v3 + 50) = 0;
|
||||
}
|
||||
if (a3 > 0.0)
|
||||
* (DWORD*)((char*)v3 + 50) = timer_set(a3, (int)v3, (int)TComponentGroup::NotifyTimerExpired);
|
||||
}
|
||||
else if (a2 <= 1007 || a2 > 1011 && a2 != 1020 && a2 != 1022)
|
||||
{
|
||||
v4 = *(DWORD*)(*(DWORD*)((char*)this + 46) + 4) - 1;
|
||||
if (v4 >= 0)
|
||||
{
|
||||
v5 = 4 * v4 + 8;
|
||||
v6 = *(DWORD*)(*(DWORD*)((char*)this + 46) + 4);
|
||||
do
|
||||
{
|
||||
(***(void (****)(int, DWORD))(v5 + *(DWORD*)((char*)v3 + 46)))(a2, LODWORD(a3));
|
||||
v5 -= 4;
|
||||
--v6;
|
||||
} while (v6);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
//----- (0101AA81) --------------------------------------------------------
|
||||
TComponentGroup *__thiscall TComponentGroup::destroy(TComponentGroup *this, char a2)
|
||||
TComponentGroup* __thiscall TComponentGroup::destroy(TComponentGroup* this, char a2)
|
||||
{
|
||||
TComponentGroup *v2; // esi
|
||||
TComponentGroup* v2; // esi
|
||||
|
||||
v2 = this;
|
||||
TComponentGroup::~TComponentGroup(this);
|
||||
if ( a2 & 1 )
|
||||
operator delete((void *)v2);
|
||||
return v2;
|
||||
v2 = this;
|
||||
TComponentGroup::~TComponentGroup(this);
|
||||
if (a2 & 1)
|
||||
component_delete((void*)v2);
|
||||
return v2;
|
||||
}
|
||||
|
||||
//----- (01018FFD) --------------------------------------------------------
|
||||
|
||||
@@ -5,50 +5,50 @@
|
||||
#include "TEdgeBox.h"
|
||||
|
||||
//----- (0100B0D1) --------------------------------------------------------
|
||||
TEdgeBox *__thiscall TEdgeBox::TEdgeBox(TEdgeBox *this)
|
||||
TEdgeBox* __thiscall TEdgeBox::TEdgeBox(TEdgeBox* this)
|
||||
{
|
||||
TEdgeBox *v1; // esi
|
||||
TEdgeBox* v1; // esi
|
||||
|
||||
v1 = this;
|
||||
objlist_class::objlist_class(this, 0, 4);
|
||||
objlist_class::objlist_class((TEdgeBox *)((char *)v1 + 8), 0, 1);
|
||||
return v1;
|
||||
v1 = this;
|
||||
objlist_class::objlist_class(this, 0, 4);
|
||||
objlist_class::objlist_class((TEdgeBox*)((char*)v1 + 8), 0, 1);
|
||||
return v1;
|
||||
}
|
||||
|
||||
//----- (0100B2C9) --------------------------------------------------------
|
||||
void __thiscall TEdgeBox::~TEdgeBox(TEdgeBox *this)
|
||||
void __thiscall TEdgeBox::~TEdgeBox(TEdgeBox* this)
|
||||
{
|
||||
TEdgeBox *v1; // esi
|
||||
TEdgeBox* v1; // esi
|
||||
|
||||
v1 = this;
|
||||
objlist_destroy(*((DWORD *)this + 3));
|
||||
objlist_destroy(*((DWORD *)v1 + 1));
|
||||
v1 = this;
|
||||
objlist_destroy(*((DWORD*)this + 3));
|
||||
objlist_destroy(*((DWORD*)v1 + 1));
|
||||
}
|
||||
|
||||
//----- (0100B90E) --------------------------------------------------------
|
||||
TEdgeBox *__thiscall TEdgeBox::`vector deleting destructor'(TEdgeBox *this, char a2)
|
||||
TEdgeBox* __thiscall TEdgeBox::destroy(TEdgeBox* this, char a2)
|
||||
{
|
||||
TEdgeBox *v2; // edi
|
||||
TEdgeBox *result; // eax
|
||||
TEdgeBox* v2; // edi
|
||||
TEdgeBox* result; // eax
|
||||
|
||||
v2 = this;
|
||||
if ( a2 & 2 )
|
||||
{
|
||||
destroy(
|
||||
(void *)this,
|
||||
0x10u,
|
||||
*((DWORD *)this - 1),
|
||||
(void (__thiscall *)(void *))TEdgeBox::~TEdgeBox);
|
||||
if ( a2 & 1 )
|
||||
operator delete((char *)v2 - 4);
|
||||
result = (TEdgeBox *)((char *)v2 - 4);
|
||||
}
|
||||
else
|
||||
{
|
||||
TEdgeBox::~TEdgeBox(this);
|
||||
if ( a2 & 1 )
|
||||
operator delete((void *)v2);
|
||||
result = v2;
|
||||
}
|
||||
return result;
|
||||
v2 = this;
|
||||
if (a2 & 2)
|
||||
{
|
||||
destroy(
|
||||
(void*)this,
|
||||
0x10u,
|
||||
*((DWORD*)this - 1),
|
||||
(void(__thiscall*)(void*))TEdgeBox::~TEdgeBox);
|
||||
if (a2 & 1)
|
||||
component_delete((char*)v2 - 4);
|
||||
result = (TEdgeBox*)((char*)v2 - 4);
|
||||
}
|
||||
else
|
||||
{
|
||||
TEdgeBox::~TEdgeBox(this);
|
||||
if (a2 & 1)
|
||||
component_delete((void*)v2);
|
||||
result = v2;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
@@ -12,7 +12,7 @@ struct TEdgeBox;
|
||||
|
||||
TEdgeBox* __thiscall TEdgeBox::TEdgeBox(TEdgeBox* this);
|
||||
void __thiscall TEdgeBox::~TEdgeBox(TEdgeBox* this);
|
||||
TEdgeBox* __thiscall TEdgeBox::`vector deleting destructor`(TEdgeBox *this, char a2);
|
||||
TEdgeBox* __thiscall TEdgeBox::destroy(TEdgeBox *this, char a2);
|
||||
|
||||
|
||||
#endif //PINBALL_TEDGEBOX_H
|
||||
File diff suppressed because it is too large.
Load diff
@@ -156,7 +156,7 @@ v15 = *v13;
|
||||
v16 = v13[1];
|
||||
v17 = v13[2];
|
||||
v18 = v13[3];
|
||||
v4 = (TLine *)operator new(0x55u);
|
||||
v4 = (TLine *)component_create(0x55u);
|
||||
if ( v4 )
|
||||
v5 = TLine::TLine(v4, v3, (char *)v3 + 5, v14, (struct vector_type *)&v17, (struct vector_type *)&v15);
|
||||
else
|
||||
@@ -166,7 +166,7 @@ if ( v5 )
|
||||
(*(void (__thiscall **)(TLine *))(*(DWORD *)v5 + 8))(v5);
|
||||
objlist_class::Add((TFlagSpinner *)((char *)v3 + 42), (void *)v5);
|
||||
}
|
||||
v6 = (TLine *)operator new(0x55u);
|
||||
v6 = (TLine *)component_create(0x55u);
|
||||
if ( v6 )
|
||||
v7 = TLine::TLine(v6, v3, (char *)v3 + 5, v14, (struct vector_type *)&v15, (struct vector_type *)&v17);
|
||||
else
|
||||
|
||||
+225
-225
@@ -2,260 +2,260 @@
|
||||
|
||||
|
||||
//----- (0101C047) --------------------------------------------------------
|
||||
TZmapList *__thiscall TFlipper::~TFlipper(TFlipper *this)
|
||||
TZmapList* __thiscall TFlipper::~TFlipper(TFlipper* this)
|
||||
{
|
||||
TCollisionComponent *v1; // esi
|
||||
void *v2; // ST00_4
|
||||
TCollisionComponent* v1; // esi
|
||||
void* v2; // ST00_4
|
||||
|
||||
v1 = this;
|
||||
v2 = *(void **)((char *)this + 82);
|
||||
*(DWORD *)this = &TFlipper::vftable;
|
||||
operator delete(v2);
|
||||
return TCollisionComponent::~TCollisionComponent(v1);
|
||||
v1 = this;
|
||||
v2 = *(void**)((char*)this + 82);
|
||||
*(DWORD*)this = &TFlipper::vftable;
|
||||
component_delete(v2);
|
||||
return TCollisionComponent::~TCollisionComponent(v1);
|
||||
}
|
||||
// 1002838: using guessed type void *TFlipper::vftable;
|
||||
|
||||
//----- (0101C070) --------------------------------------------------------
|
||||
void TFlipper::TimerExpired(int a1, void *a2)
|
||||
void TFlipper::TimerExpired(int a1, void* a2)
|
||||
{
|
||||
char *v2; // esi
|
||||
double v3; // st7
|
||||
int v4; // edi
|
||||
signed __int64 v5; // rax
|
||||
int v6; // ebx
|
||||
int v7; // ecx
|
||||
int v8; // eax
|
||||
int v9; // ecx
|
||||
int v10; // edx
|
||||
int v11; // ecx
|
||||
int v12; // eax
|
||||
signed int v13; // [esp+14h] [ebp-4h]
|
||||
float v14; // [esp+24h] [ebp+Ch]
|
||||
char* v2; // esi
|
||||
double v3; // st7
|
||||
int v4; // edi
|
||||
signed __int64 v5; // rax
|
||||
int v6; // ebx
|
||||
int v7; // ecx
|
||||
int v8; // eax
|
||||
int v9; // ecx
|
||||
int v10; // edx
|
||||
int v11; // ecx
|
||||
int v12; // eax
|
||||
signed int v13; // [esp+14h] [ebp-4h]
|
||||
float v14; // [esp+24h] [ebp+Ch]
|
||||
|
||||
v2 = (char *)a2;
|
||||
v13 = 0;
|
||||
v3 = _floor((time_now - *(float *)((char *)a2 + 102)) / *(float *)((char *)a2 + 98) + 0.5);
|
||||
v4 = *(DWORD *)((char *)a2 + 34);
|
||||
v14 = (double)*(signed int *)(*(DWORD *)(v4 + 4) + 4);
|
||||
if ( v3 > v14 )
|
||||
v3 = v14;
|
||||
if ( v3 < 0.0 )
|
||||
v3 = 0.0;
|
||||
v5 = (signed __int64)v3;
|
||||
if ( !(unsigned int)(signed __int64)v3 )
|
||||
LODWORD(v5) = 1;
|
||||
v6 = *(DWORD *)(v2 + 6);
|
||||
if ( v6 == 1 )
|
||||
{
|
||||
*(DWORD *)(v2 + 78) += v5;
|
||||
v7 = *(DWORD *)(*(DWORD *)(v4 + 4) + 4) - 1;
|
||||
if ( *(DWORD *)(v2 + 78) >= v7 )
|
||||
{
|
||||
*(DWORD *)(v2 + 78) = v7;
|
||||
v13 = 1;
|
||||
}
|
||||
}
|
||||
if ( v6 == 2 )
|
||||
{
|
||||
*(DWORD *)(v2 + 78) -= v5;
|
||||
v8 = 0;
|
||||
if ( *(DWORD *)(v2 + 78) <= 0 )
|
||||
{
|
||||
*(DWORD *)(v2 + 78) = 0;
|
||||
v13 = 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
v8 = 0;
|
||||
}
|
||||
if ( v13 )
|
||||
*(DWORD *)(v2 + 6) = 0;
|
||||
else
|
||||
v8 = timer_set(*(float *)(v2 + 98), (int)v2, (int)TFlipper::TimerExpired);
|
||||
v9 = *(DWORD *)(v2 + 78);
|
||||
v10 = *(DWORD *)(v2 + 30);
|
||||
*(DWORD *)(v2 + 86) = v8;
|
||||
v11 = 4 * v9 + 8;
|
||||
v12 = *(DWORD *)(v11 + *(DWORD *)(*(DWORD *)(v2 + 34) + 4));
|
||||
render_sprite_set(
|
||||
*(DWORD **)(v2 + 26),
|
||||
*(DWORD *)(v11 + *(DWORD *)(*(DWORD *)(v2 + 34) + 4)),
|
||||
*(DWORD *)(*(DWORD *)(*(DWORD *)(v2 + 38) + 4) + v11),
|
||||
*(DWORD *)(v12 + 29) - *(DWORD *)(v10 + 234),
|
||||
*(DWORD *)(v12 + 33) - *(DWORD *)(v10 + 238));
|
||||
v2 = (char*)a2;
|
||||
v13 = 0;
|
||||
v3 = _floor((time_now - *(float*)((char*)a2 + 102)) / *(float*)((char*)a2 + 98) + 0.5);
|
||||
v4 = *(DWORD*)((char*)a2 + 34);
|
||||
v14 = (double) * (signed int*)(*(DWORD*)(v4 + 4) + 4);
|
||||
if (v3 > v14)
|
||||
v3 = v14;
|
||||
if (v3 < 0.0)
|
||||
v3 = 0.0;
|
||||
v5 = (signed __int64)v3;
|
||||
if (!(unsigned int)(signed __int64)v3)
|
||||
LODWORD(v5) = 1;
|
||||
v6 = *(DWORD*)(v2 + 6);
|
||||
if (v6 == 1)
|
||||
{
|
||||
*(DWORD*)(v2 + 78) += v5;
|
||||
v7 = *(DWORD*)(*(DWORD*)(v4 + 4) + 4) - 1;
|
||||
if (*(DWORD*)(v2 + 78) >= v7)
|
||||
{
|
||||
*(DWORD*)(v2 + 78) = v7;
|
||||
v13 = 1;
|
||||
}
|
||||
}
|
||||
if (v6 == 2)
|
||||
{
|
||||
*(DWORD*)(v2 + 78) -= v5;
|
||||
v8 = 0;
|
||||
if (*(DWORD*)(v2 + 78) <= 0)
|
||||
{
|
||||
*(DWORD*)(v2 + 78) = 0;
|
||||
v13 = 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
v8 = 0;
|
||||
}
|
||||
if (v13)
|
||||
* (DWORD*)(v2 + 6) = 0;
|
||||
else
|
||||
v8 = timer_set(*(float*)(v2 + 98), (int)v2, (int)TFlipper::TimerExpired);
|
||||
v9 = *(DWORD*)(v2 + 78);
|
||||
v10 = *(DWORD*)(v2 + 30);
|
||||
*(DWORD*)(v2 + 86) = v8;
|
||||
v11 = 4 * v9 + 8;
|
||||
v12 = *(DWORD*)(v11 + *(DWORD*)(*(DWORD*)(v2 + 34) + 4));
|
||||
render_sprite_set(
|
||||
*(DWORD * *)(v2 + 26),
|
||||
*(DWORD*)(v11 + *(DWORD*)(*(DWORD*)(v2 + 34) + 4)),
|
||||
*(DWORD*)(*(DWORD*)(*(DWORD*)(v2 + 38) + 4) + v11),
|
||||
*(DWORD*)(v12 + 29) - *(DWORD*)(v10 + 234),
|
||||
*(DWORD*)(v12 + 33) - *(DWORD*)(v10 + 238));
|
||||
}
|
||||
// 1025630: using guessed type float time_now;
|
||||
|
||||
//----- (0101C178) --------------------------------------------------------
|
||||
int __thiscall TFlipper::Message(TFlipper *this, int a2, float a3)
|
||||
int __thiscall TFlipper::Message(TFlipper* this, int a2, float a3)
|
||||
{
|
||||
signed int v3; // ebx
|
||||
TFlipper *v4; // esi
|
||||
int v5; // ST04_4
|
||||
int v6; // eax
|
||||
double v7; // st7
|
||||
double v8; // ST14_8
|
||||
float v9; // ST00_4
|
||||
signed int v3; // ebx
|
||||
TFlipper* v4; // esi
|
||||
int v5; // ST04_4
|
||||
int v6; // eax
|
||||
double v7; // st7
|
||||
double v8; // ST14_8
|
||||
float v9; // ST00_4
|
||||
|
||||
v3 = a2;
|
||||
v4 = this;
|
||||
if ( a2 == 1 )
|
||||
{
|
||||
control_handler(1, this);
|
||||
*(DWORD *)((char *)v4 + 98) = *(DWORD *)((char *)v4 + 90);
|
||||
v6 = *(DWORD *)((char *)v4 + 74);
|
||||
LABEL_15:
|
||||
if ( v6 )
|
||||
loader_play_sound(v6);
|
||||
goto LABEL_17;
|
||||
}
|
||||
if ( a2 == 2 )
|
||||
{
|
||||
*(DWORD *)((char *)this + 98) = *(DWORD *)((char *)this + 94);
|
||||
v6 = *(DWORD *)((char *)this + 70);
|
||||
goto LABEL_15;
|
||||
}
|
||||
if ( a2 <= 1008 )
|
||||
return 0;
|
||||
if ( a2 <= 1011 )
|
||||
{
|
||||
LABEL_12:
|
||||
v3 = 2;
|
||||
*(DWORD *)((char *)this + 98) = *(DWORD *)((char *)this + 94);
|
||||
LABEL_17:
|
||||
if ( *(DWORD *)((char *)v4 + 86) )
|
||||
{
|
||||
timer_kill(*(DWORD *)((char *)v4 + 86));
|
||||
*(DWORD *)((char *)v4 + 86) = 0;
|
||||
}
|
||||
if ( *(DWORD *)((char *)v4 + 6) )
|
||||
{
|
||||
v8 = a3 - *(float *)(*(DWORD *)((char *)v4 + 82) + 201);
|
||||
v7 = v8 - _floor(v8 / *(float *)((char *)v4 + 98)) * *(float *)((char *)v4 + 98);
|
||||
if ( v7 < 0.0 )
|
||||
v7 = 0.0;
|
||||
}
|
||||
else
|
||||
{
|
||||
v7 = *(float *)((char *)v4 + 98);
|
||||
}
|
||||
v9 = v7;
|
||||
*(DWORD *)((char *)v4 + 6) = v3;
|
||||
*(float *)((char *)v4 + 102) = a3;
|
||||
*(DWORD *)((char *)v4 + 86) = timer_set(v9, (int)v4, (int)TFlipper::TimerExpired);
|
||||
goto LABEL_24;
|
||||
}
|
||||
if ( a2 != 1020 )
|
||||
{
|
||||
if ( a2 != 1022 )
|
||||
{
|
||||
if ( a2 != 1024 )
|
||||
return 0;
|
||||
goto LABEL_8;
|
||||
}
|
||||
goto LABEL_12;
|
||||
}
|
||||
v3 = a2;
|
||||
v4 = this;
|
||||
if (a2 == 1)
|
||||
{
|
||||
control_handler(1, this);
|
||||
*(DWORD*)((char*)v4 + 98) = *(DWORD*)((char*)v4 + 90);
|
||||
v6 = *(DWORD*)((char*)v4 + 74);
|
||||
LABEL_15:
|
||||
if (v6)
|
||||
loader_play_sound(v6);
|
||||
goto LABEL_17;
|
||||
}
|
||||
if (a2 == 2)
|
||||
{
|
||||
*(DWORD*)((char*)this + 98) = *(DWORD*)((char*)this + 94);
|
||||
v6 = *(DWORD*)((char*)this + 70);
|
||||
goto LABEL_15;
|
||||
}
|
||||
if (a2 <= 1008)
|
||||
return 0;
|
||||
if (a2 <= 1011)
|
||||
{
|
||||
LABEL_12:
|
||||
v3 = 2;
|
||||
*(DWORD*)((char*)this + 98) = *(DWORD*)((char*)this + 94);
|
||||
LABEL_17:
|
||||
if (*(DWORD*)((char*)v4 + 86))
|
||||
{
|
||||
timer_kill(*(DWORD*)((char*)v4 + 86));
|
||||
*(DWORD*)((char*)v4 + 86) = 0;
|
||||
}
|
||||
if (*(DWORD*)((char*)v4 + 6))
|
||||
{
|
||||
v8 = a3 - *(float*)(*(DWORD*)((char*)v4 + 82) + 201);
|
||||
v7 = v8 - _floor(v8 / *(float*)((char*)v4 + 98)) * *(float*)((char*)v4 + 98);
|
||||
if (v7 < 0.0)
|
||||
v7 = 0.0;
|
||||
}
|
||||
else
|
||||
{
|
||||
v7 = *(float*)((char*)v4 + 98);
|
||||
}
|
||||
v9 = v7;
|
||||
*(DWORD*)((char*)v4 + 6) = v3;
|
||||
*(float*)((char*)v4 + 102) = a3;
|
||||
*(DWORD*)((char*)v4 + 86) = timer_set(v9, (int)v4, (int)TFlipper::TimerExpired);
|
||||
goto LABEL_24;
|
||||
}
|
||||
if (a2 != 1020)
|
||||
{
|
||||
if (a2 != 1022)
|
||||
{
|
||||
if (a2 != 1024)
|
||||
return 0;
|
||||
goto LABEL_8;
|
||||
}
|
||||
goto LABEL_12;
|
||||
}
|
||||
LABEL_8:
|
||||
if ( *(DWORD *)((char *)this + 6) )
|
||||
{
|
||||
if ( *(DWORD *)((char *)this + 86) )
|
||||
timer_kill(*(DWORD *)((char *)this + 86));
|
||||
*(DWORD *)((char *)v4 + 78) = -1;
|
||||
v5 = *(DWORD *)((char *)v4 + 86);
|
||||
*(DWORD *)((char *)v4 + 6) = 2;
|
||||
TFlipper::TimerExpired(v5, (void *)v4);
|
||||
LABEL_24:
|
||||
TFlipperEdge::SetMotion(*(TFlipperEdge **)((char *)v4 + 82), v3, a3);
|
||||
}
|
||||
return 0;
|
||||
if (*(DWORD*)((char*)this + 6))
|
||||
{
|
||||
if (*(DWORD*)((char*)this + 86))
|
||||
timer_kill(*(DWORD*)((char*)this + 86));
|
||||
*(DWORD*)((char*)v4 + 78) = -1;
|
||||
v5 = *(DWORD*)((char*)v4 + 86);
|
||||
*(DWORD*)((char*)v4 + 6) = 2;
|
||||
TFlipper::TimerExpired(v5, (void*)v4);
|
||||
LABEL_24:
|
||||
TFlipperEdge::SetMotion(*(TFlipperEdge * *)((char*)v4 + 82), v3, a3);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
//----- (0101C2AD) --------------------------------------------------------
|
||||
void __thiscall TFlipper::port_draw(TFlipper *this)
|
||||
void __thiscall TFlipper::port_draw(TFlipper* this)
|
||||
{
|
||||
(*(void (**)(void))(**(DWORD **)((char *)this + 82) + 4))();
|
||||
(*(void (**)(void))(**(DWORD * *)((char*)this + 82) + 4))();
|
||||
}
|
||||
|
||||
//----- (0101C59D) --------------------------------------------------------
|
||||
TFlipper *__thiscall TFlipper::TFlipper(TFlipper *this, struct TPinballTable *a2, int a3)
|
||||
TFlipper* __thiscall TFlipper::TFlipper(TFlipper* this, struct TPinballTable* a2, int a3)
|
||||
{
|
||||
int v3; // ebx
|
||||
TFlipper *v4; // esi
|
||||
int v5; // eax
|
||||
float *v6; // eax
|
||||
float v7; // ST2C_4
|
||||
float v8; // ST28_4
|
||||
float v9; // ST24_4
|
||||
float v10; // ST20_4
|
||||
float v11; // ST1C_4
|
||||
struct vector_type *v12; // ST18_4
|
||||
struct vector_type *v13; // ST14_4
|
||||
struct vector_type *v14; // eax
|
||||
TFlipperEdge *v15; // eax
|
||||
int v16; // ecx
|
||||
int v18; // [esp+20h] [ebp-50h]
|
||||
int v19; // [esp+24h] [ebp-4Ch]
|
||||
unsigned int v20; // [esp+54h] [ebp-1Ch]
|
||||
int v21; // [esp+58h] [ebp-18h]
|
||||
int v22; // [esp+5Ch] [ebp-14h]
|
||||
TFlipperEdge *v23; // [esp+68h] [ebp-8h]
|
||||
float *v24; // [esp+6Ch] [ebp-4h]
|
||||
float *v25; // [esp+7Ch] [ebp+Ch]
|
||||
int v3; // ebx
|
||||
TFlipper* v4; // esi
|
||||
int v5; // eax
|
||||
float* v6; // eax
|
||||
float v7; // ST2C_4
|
||||
float v8; // ST28_4
|
||||
float v9; // ST24_4
|
||||
float v10; // ST20_4
|
||||
float v11; // ST1C_4
|
||||
struct vector_type* v12; // ST18_4
|
||||
struct vector_type* v13; // ST14_4
|
||||
struct vector_type* v14; // eax
|
||||
TFlipperEdge* v15; // eax
|
||||
int v16; // ecx
|
||||
int v18; // [esp+20h] [ebp-50h]
|
||||
int v19; // [esp+24h] [ebp-4Ch]
|
||||
unsigned int v20; // [esp+54h] [ebp-1Ch]
|
||||
int v21; // [esp+58h] [ebp-18h]
|
||||
int v22; // [esp+5Ch] [ebp-14h]
|
||||
TFlipperEdge* v23; // [esp+68h] [ebp-8h]
|
||||
float* v24; // [esp+6Ch] [ebp-4h]
|
||||
float* v25; // [esp+7Ch] [ebp+Ch]
|
||||
|
||||
v3 = a3;
|
||||
v4 = this;
|
||||
TCollisionComponent::TCollisionComponent(this, a2, a3, 0);
|
||||
*(DWORD *)v4 = &TFlipper::vftable;
|
||||
loader_query_visual(a3, 0, &v18);
|
||||
*(DWORD *)((char *)v4 + 74) = v21;
|
||||
*(DWORD *)((char *)v4 + 70) = v22;
|
||||
*(DWORD *)((char *)v4 + 54) = v19;
|
||||
v5 = v18;
|
||||
*(DWORD *)((char *)v4 + 86) = 0;
|
||||
*(DWORD *)((char *)v4 + 58) = v5;
|
||||
v23 = (TFlipperEdge *)operator new(0xE9u);
|
||||
if ( v23 )
|
||||
{
|
||||
v25 = (float *)loader_query_float_attribute(a3, 0, 803);
|
||||
v24 = (float *)loader_query_float_attribute(v3, 0, 805);
|
||||
v6 = (float *)loader_query_float_attribute(v3, 0, 804);
|
||||
v7 = *(float *)((char *)v4 + 58);
|
||||
v8 = *(float *)((char *)v4 + 54);
|
||||
v9 = *v25;
|
||||
v10 = *v24;
|
||||
v11 = *v6;
|
||||
v12 = (struct vector_type *)loader_query_float_attribute(v3, 0, 802);
|
||||
v13 = (struct vector_type *)loader_query_float_attribute(v3, 0, 801);
|
||||
v14 = (struct vector_type *)loader_query_float_attribute(v3, 0, 800);
|
||||
v15 = TFlipperEdge::TFlipperEdge(v23, v4, (char *)v4 + 5, v20, a2, v14, v13, v12, v11, v10, v9, v8, v7);
|
||||
}
|
||||
else
|
||||
{
|
||||
v15 = 0;
|
||||
}
|
||||
*(DWORD *)((char *)v4 + 82) = v15;
|
||||
if ( v15 )
|
||||
{
|
||||
v16 = *(DWORD *)((char *)v4 + 34);
|
||||
*(float *)((char *)v4 + 90) = *(float *)((char *)v15 + 213) / (double)(*(DWORD *)(*(DWORD *)(v16 + 4) + 4) - 1);
|
||||
*(float *)((char *)v4 + 94) = *(float *)((char *)v15 + 217) / (double)(*(DWORD *)(*(DWORD *)(v16 + 4) + 4) - 1);
|
||||
}
|
||||
*(DWORD *)((char *)v4 + 78) = 0;
|
||||
*(float *)((char *)v4 + 102) = 0.0;
|
||||
return v4;
|
||||
v3 = a3;
|
||||
v4 = this;
|
||||
TCollisionComponent::TCollisionComponent(this, a2, a3, 0);
|
||||
*(DWORD*)v4 = &TFlipper::vftable;
|
||||
loader_query_visual(a3, 0, &v18);
|
||||
*(DWORD*)((char*)v4 + 74) = v21;
|
||||
*(DWORD*)((char*)v4 + 70) = v22;
|
||||
*(DWORD*)((char*)v4 + 54) = v19;
|
||||
v5 = v18;
|
||||
*(DWORD*)((char*)v4 + 86) = 0;
|
||||
*(DWORD*)((char*)v4 + 58) = v5;
|
||||
v23 = (TFlipperEdge*)operator new(0xE9u);
|
||||
if (v23)
|
||||
{
|
||||
v25 = (float*)loader_query_float_attribute(a3, 0, 803);
|
||||
v24 = (float*)loader_query_float_attribute(v3, 0, 805);
|
||||
v6 = (float*)loader_query_float_attribute(v3, 0, 804);
|
||||
v7 = *(float*)((char*)v4 + 58);
|
||||
v8 = *(float*)((char*)v4 + 54);
|
||||
v9 = *v25;
|
||||
v10 = *v24;
|
||||
v11 = *v6;
|
||||
v12 = (struct vector_type*)loader_query_float_attribute(v3, 0, 802);
|
||||
v13 = (struct vector_type*)loader_query_float_attribute(v3, 0, 801);
|
||||
v14 = (struct vector_type*)loader_query_float_attribute(v3, 0, 800);
|
||||
v15 = TFlipperEdge::TFlipperEdge(v23, v4, (char*)v4 + 5, v20, a2, v14, v13, v12, v11, v10, v9, v8, v7);
|
||||
}
|
||||
else
|
||||
{
|
||||
v15 = 0;
|
||||
}
|
||||
*(DWORD*)((char*)v4 + 82) = v15;
|
||||
if (v15)
|
||||
{
|
||||
v16 = *(DWORD*)((char*)v4 + 34);
|
||||
*(float*)((char*)v4 + 90) = *(float*)((char*)v15 + 213) / (double)(*(DWORD*)(*(DWORD*)(v16 + 4) + 4) - 1);
|
||||
*(float*)((char*)v4 + 94) = *(float*)((char*)v15 + 217) / (double)(*(DWORD*)(*(DWORD*)(v16 + 4) + 4) - 1);
|
||||
}
|
||||
*(DWORD*)((char*)v4 + 78) = 0;
|
||||
*(float*)((char*)v4 + 102) = 0.0;
|
||||
return v4;
|
||||
}
|
||||
// 1002838: using guessed type void *TFlipper::vftable;
|
||||
|
||||
//----- (0101C6D7) --------------------------------------------------------
|
||||
TFlipper *__thiscall TFlipper::`vector deleting destructor`(TFlipper *this, char a2)
|
||||
TFlipper* __thiscall TFlipper::destroy(TFlipper* this, char a2)
|
||||
{
|
||||
TFlipper *v2; // esi
|
||||
TFlipper* v2; // esi
|
||||
|
||||
v2 = this;
|
||||
TFlipper::~TFlipper(this);
|
||||
if ( a2 & 1 )
|
||||
operator delete((void *)v2);
|
||||
return v2;
|
||||
v2 = this;
|
||||
TFlipper::~TFlipper(this);
|
||||
if (a2 & 1)
|
||||
component_delete((void*)v2);
|
||||
return v2;
|
||||
}
|
||||
|
||||
@@ -15,7 +15,7 @@ void TFlipper::TimerExpired(int, void*); // idb
|
||||
int __thiscall TFlipper::Message(TFlipper* this, int, float); // idb
|
||||
void __thiscall TFlipper::port_draw(TFlipper* __hidden this); // idb
|
||||
TFlipper* __thiscall TFlipper::TFlipper(TFlipper* this, struct TPinballTable* a2, int a3);
|
||||
TFlipper* __thiscall TFlipper::`vector deleting destructor`(TFlipper *this, char a2);
|
||||
TFlipper* __thiscall TFlipper::destroy(TFlipper *this, char a2);
|
||||
|
||||
void* TFlipper::vftable = &TFlipper::Message; // weak
|
||||
|
||||
|
||||
@@ -4,192 +4,191 @@
|
||||
#include "TLightBargraph.h"
|
||||
|
||||
//----- (0100AA81) --------------------------------------------------------
|
||||
TZmapList *__thiscall TLightBargraph::~TLightBargraph(TLightBargraph *this)
|
||||
TZmapList* __thiscall TLightBargraph::~TLightBargraph(TLightBargraph* this)
|
||||
{
|
||||
TLightGroup *v1; // esi
|
||||
int v2; // eax
|
||||
TLightGroup* v1; // esi
|
||||
int v2; // eax
|
||||
|
||||
v1 = this;
|
||||
v2 = *(DWORD *)((char *)this + 138);
|
||||
*(DWORD *)this = &TLightBargraph::vftable;
|
||||
if ( v2 )
|
||||
memoryfree(v2);
|
||||
return TLightGroup::~TLightGroup(v1);
|
||||
v1 = this;
|
||||
v2 = *(DWORD*)((char*)this + 138);
|
||||
*(DWORD*)this = &TLightBargraph::vftable;
|
||||
if (v2)
|
||||
memoryfree(v2);
|
||||
return TLightGroup::~TLightGroup(v1);
|
||||
}
|
||||
// 1001A30: using guessed type void *TLightBargraph::vftable;
|
||||
|
||||
//----- (0100AAA9) --------------------------------------------------------
|
||||
void __thiscall TLightBargraph::Reset(TLightBargraph *this)
|
||||
void __thiscall TLightBargraph::Reset(TLightBargraph* this)
|
||||
{
|
||||
TLightBargraph *v1; // edi
|
||||
DWORD *v2; // esi
|
||||
TLightBargraph* v1; // edi
|
||||
DWORD* v2; // esi
|
||||
|
||||
v1 = this;
|
||||
v2 = (DWORD *)((char *)this + 142);
|
||||
if ( *(DWORD *)((char *)this + 142) )
|
||||
{
|
||||
timer_kill(*(DWORD *)((char *)this + 142));
|
||||
*v2 = 0;
|
||||
}
|
||||
*(DWORD *)((char *)v1 + 146) = 0;
|
||||
TLightGroup::Reset(v1);
|
||||
v1 = this;
|
||||
v2 = (DWORD*)((char*)this + 142);
|
||||
if (*(DWORD*)((char*)this + 142))
|
||||
{
|
||||
timer_kill(*(DWORD*)((char*)this + 142));
|
||||
*v2 = 0;
|
||||
}
|
||||
*(DWORD*)((char*)v1 + 146) = 0;
|
||||
TLightGroup::Reset(v1);
|
||||
}
|
||||
|
||||
//----- (0100AAD9) --------------------------------------------------------
|
||||
void TLightBargraph::BargraphTimerExpired(int a1, void *a2)
|
||||
void TLightBargraph::BargraphTimerExpired(int a1, void* a2)
|
||||
{
|
||||
int v2; // eax
|
||||
float v3; // ST04_4
|
||||
int v2; // eax
|
||||
float v3; // ST04_4
|
||||
|
||||
v2 = *(DWORD *)((char *)a2 + 146);
|
||||
*(DWORD *)((char *)a2 + 142) = 0;
|
||||
if ( v2 )
|
||||
{
|
||||
v3 = (double)(v2 - 1);
|
||||
(**(void (__thiscall ***)(void *, signed int, DWORD))a2)(a2, 45, LODWORD(v3));
|
||||
control_handler(60, (struct TPinballComponent *)a2);
|
||||
}
|
||||
else
|
||||
{
|
||||
(**(void (__thiscall ***)(void *, signed int, DWORD))a2)(a2, 20, 0.0);
|
||||
control_handler(47, (struct TPinballComponent *)a2);
|
||||
}
|
||||
v2 = *(DWORD*)((char*)a2 + 146);
|
||||
*(DWORD*)((char*)a2 + 142) = 0;
|
||||
if (v2)
|
||||
{
|
||||
v3 = (double)(v2 - 1);
|
||||
(**(void(__thiscall * **)(void*, signed int, DWORD))a2)(a2, 45, LODWORD(v3));
|
||||
control_handler(60, (struct TPinballComponent*)a2);
|
||||
}
|
||||
else
|
||||
{
|
||||
(**(void(__thiscall * **)(void*, signed int, DWORD))a2)(a2, 20, 0.0);
|
||||
control_handler(47, (struct TPinballComponent*)a2);
|
||||
}
|
||||
}
|
||||
|
||||
//----- (0100AB28) --------------------------------------------------------
|
||||
int __thiscall TLightBargraph::Message(TLightBargraph *this, int a2, float a3)
|
||||
int __thiscall TLightBargraph::Message(TLightBargraph* this, int a2, float a3)
|
||||
{
|
||||
TLightBargraph *v3; // esi
|
||||
int v4; // ecx
|
||||
DWORD *v5; // eax
|
||||
DWORD *v6; // edi
|
||||
float v7; // ST0C_4
|
||||
int v8; // ebx
|
||||
int v9; // eax
|
||||
float v10; // ST08_4
|
||||
int v11; // eax
|
||||
signed int v13; // [esp+20h] [ebp+Ch]
|
||||
TLightBargraph* v3; // esi
|
||||
int v4; // ecx
|
||||
DWORD* v5; // eax
|
||||
DWORD* v6; // edi
|
||||
float v7; // ST0C_4
|
||||
int v8; // ebx
|
||||
int v9; // eax
|
||||
float v10; // ST08_4
|
||||
int v11; // eax
|
||||
signed int v13; // [esp+20h] [ebp+Ch]
|
||||
|
||||
v3 = this;
|
||||
switch ( a2 )
|
||||
{
|
||||
case 37:
|
||||
return *(DWORD *)((char *)this + 146);
|
||||
case 45:
|
||||
if ( *(DWORD *)((char *)this + 142) )
|
||||
{
|
||||
timer_kill(*(DWORD *)((char *)this + 142));
|
||||
*(DWORD *)((char *)v3 + 142) = 0;
|
||||
}
|
||||
v8 = (signed __int64)_floor(a3);
|
||||
v9 = 2 * *(DWORD *)(*(DWORD *)((char *)v3 + 46) + 4);
|
||||
if ( v8 >= v9 )
|
||||
v8 = v9 - 1;
|
||||
if ( v8 >= 0 )
|
||||
{
|
||||
v10 = (double)(v8 / 2);
|
||||
TLightGroup::Message(v3, 45, v10);
|
||||
if ( !(v8 & 1) )
|
||||
TLightGroup::Message(v3, 46, 0.0);
|
||||
v11 = *(DWORD *)((char *)v3 + 138);
|
||||
if ( v11 )
|
||||
*(DWORD *)((char *)v3 + 142) = timer_set(
|
||||
*(float *)(v11 + 4 * v8),
|
||||
(int)v3,
|
||||
(int)TLightBargraph::BargraphTimerExpired);
|
||||
*(DWORD *)((char *)v3 + 146) = v8;
|
||||
}
|
||||
else
|
||||
{
|
||||
TLightGroup::Message(v3, 20, 0.0);
|
||||
*(DWORD *)((char *)v3 + 146) = 0;
|
||||
}
|
||||
break;
|
||||
case 1011:
|
||||
(*(void (**)(void))(*(DWORD *)this + 20))();
|
||||
break;
|
||||
case 1020:
|
||||
v6 = (DWORD *)((char *)this + 142);
|
||||
if ( *(DWORD *)((char *)this + 142) )
|
||||
{
|
||||
timer_kill(*(DWORD *)((char *)this + 142));
|
||||
*v6 = 0;
|
||||
}
|
||||
*(DWORD *)((char *)v3 + 4 * *(DWORD *)(*(DWORD *)((char *)v3 + 30) + 218) + 150) = *(DWORD *)((char *)v3 + 146);
|
||||
(*(void (__thiscall **)(TLightBargraph *))(*(DWORD *)v3 + 20))(v3);
|
||||
v13 = *(DWORD *)((char *)v3 + 4 * (unsigned __int64)(signed __int64)_floor(a3) + 150);
|
||||
*(DWORD *)((char *)v3 + 146) = v13;
|
||||
if ( v13 )
|
||||
{
|
||||
v7 = (double)v13;
|
||||
TLightBargraph::Message(v3, 45, v7);
|
||||
}
|
||||
break;
|
||||
case 1024:
|
||||
(*(void (**)(void))(*(DWORD *)this + 20))();
|
||||
v4 = 0;
|
||||
if ( *(DWORD *)(*(DWORD *)((char *)v3 + 30) + 214) > 0 )
|
||||
{
|
||||
v5 = (DWORD *)((char *)v3 + 150);
|
||||
do
|
||||
{
|
||||
*v5 = *(DWORD *)((char *)v3 + 146);
|
||||
++v4;
|
||||
++v5;
|
||||
}
|
||||
while ( v4 < *(DWORD *)(*(DWORD *)((char *)v3 + 30) + 214) );
|
||||
}
|
||||
TLightGroup::Message(v3, 1024, a3);
|
||||
break;
|
||||
default:
|
||||
TLightGroup::Message(this, a2, a3);
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
v3 = this;
|
||||
switch (a2)
|
||||
{
|
||||
case 37:
|
||||
return *(DWORD*)((char*)this + 146);
|
||||
case 45:
|
||||
if (*(DWORD*)((char*)this + 142))
|
||||
{
|
||||
timer_kill(*(DWORD*)((char*)this + 142));
|
||||
*(DWORD*)((char*)v3 + 142) = 0;
|
||||
}
|
||||
v8 = (signed __int64)_floor(a3);
|
||||
v9 = 2 * *(DWORD*)(*(DWORD*)((char*)v3 + 46) + 4);
|
||||
if (v8 >= v9)
|
||||
v8 = v9 - 1;
|
||||
if (v8 >= 0)
|
||||
{
|
||||
v10 = (double)(v8 / 2);
|
||||
TLightGroup::Message(v3, 45, v10);
|
||||
if (!(v8 & 1))
|
||||
TLightGroup::Message(v3, 46, 0.0);
|
||||
v11 = *(DWORD*)((char*)v3 + 138);
|
||||
if (v11)
|
||||
* (DWORD*)((char*)v3 + 142) = timer_set(
|
||||
*(float*)(v11 + 4 * v8),
|
||||
(int)v3,
|
||||
(int)TLightBargraph::BargraphTimerExpired);
|
||||
*(DWORD*)((char*)v3 + 146) = v8;
|
||||
}
|
||||
else
|
||||
{
|
||||
TLightGroup::Message(v3, 20, 0.0);
|
||||
*(DWORD*)((char*)v3 + 146) = 0;
|
||||
}
|
||||
break;
|
||||
case 1011:
|
||||
(*(void (**)(void))(*(DWORD*)this + 20))();
|
||||
break;
|
||||
case 1020:
|
||||
v6 = (DWORD*)((char*)this + 142);
|
||||
if (*(DWORD*)((char*)this + 142))
|
||||
{
|
||||
timer_kill(*(DWORD*)((char*)this + 142));
|
||||
*v6 = 0;
|
||||
}
|
||||
*(DWORD*)((char*)v3 + 4 * *(DWORD*)(*(DWORD*)((char*)v3 + 30) + 218) + 150) = *(DWORD*)((char*)v3 + 146);
|
||||
(*(void(__thiscall * *)(TLightBargraph*))(*(DWORD*)v3 + 20))(v3);
|
||||
v13 = *(DWORD*)((char*)v3 + 4 * (unsigned __int64)(signed __int64)_floor(a3) + 150);
|
||||
*(DWORD*)((char*)v3 + 146) = v13;
|
||||
if (v13)
|
||||
{
|
||||
v7 = (double)v13;
|
||||
TLightBargraph::Message(v3, 45, v7);
|
||||
}
|
||||
break;
|
||||
case 1024:
|
||||
(*(void (**)(void))(*(DWORD*)this + 20))();
|
||||
v4 = 0;
|
||||
if (*(DWORD*)(*(DWORD*)((char*)v3 + 30) + 214) > 0)
|
||||
{
|
||||
v5 = (DWORD*)((char*)v3 + 150);
|
||||
do
|
||||
{
|
||||
*v5 = *(DWORD*)((char*)v3 + 146);
|
||||
++v4;
|
||||
++v5;
|
||||
} while (v4 < *(DWORD*)(*(DWORD*)((char*)v3 + 30) + 214));
|
||||
}
|
||||
TLightGroup::Message(v3, 1024, a3);
|
||||
break;
|
||||
default:
|
||||
TLightGroup::Message(this, a2, a3);
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
//----- (0100AE72) --------------------------------------------------------
|
||||
TLightBargraph *__thiscall TLightBargraph::TLightBargraph(TLightBargraph *this, struct TPinballTable *a2, int a3)
|
||||
TLightBargraph* __thiscall TLightBargraph::TLightBargraph(TLightBargraph* this, struct TPinballTable* a2, int a3)
|
||||
{
|
||||
TLightBargraph *v3; // esi
|
||||
float *v4; // ebx
|
||||
int v5; // edi
|
||||
int v6; // eax
|
||||
int i; // eax
|
||||
TLightBargraph* v3; // esi
|
||||
float* v4; // ebx
|
||||
int v5; // edi
|
||||
int v6; // eax
|
||||
int i; // eax
|
||||
|
||||
v3 = this;
|
||||
TLightGroup::TLightGroup(this, a2, a3);
|
||||
*(DWORD *)v3 = &TLightBargraph::vftable;
|
||||
*(DWORD *)((char *)v3 + 138) = 0;
|
||||
TLightBargraph::Reset(v3);
|
||||
if ( a3 > 0 )
|
||||
{
|
||||
v4 = (float *)loader_query_float_attribute(a3, 0, 904);
|
||||
if ( v4 )
|
||||
{
|
||||
v5 = 2 * *(DWORD *)(*(DWORD *)((char *)v3 + 46) + 4);
|
||||
v6 = memoryallocate(8 * *(DWORD *)(*(DWORD *)((char *)v3 + 46) + 4));
|
||||
*(DWORD *)((char *)v3 + 138) = v6;
|
||||
if ( v6 )
|
||||
{
|
||||
for ( i = 0; i < v5; ++v4 )
|
||||
*(float *)(*(DWORD *)((char *)v3 + 138) + 4 * i++) = *v4;
|
||||
}
|
||||
}
|
||||
}
|
||||
return v3;
|
||||
v3 = this;
|
||||
TLightGroup::TLightGroup(this, a2, a3);
|
||||
*(DWORD*)v3 = &TLightBargraph::vftable;
|
||||
*(DWORD*)((char*)v3 + 138) = 0;
|
||||
TLightBargraph::Reset(v3);
|
||||
if (a3 > 0)
|
||||
{
|
||||
v4 = (float*)loader_query_float_attribute(a3, 0, 904);
|
||||
if (v4)
|
||||
{
|
||||
v5 = 2 * *(DWORD*)(*(DWORD*)((char*)v3 + 46) + 4);
|
||||
v6 = memoryallocate(8 * *(DWORD*)(*(DWORD*)((char*)v3 + 46) + 4));
|
||||
*(DWORD*)((char*)v3 + 138) = v6;
|
||||
if (v6)
|
||||
{
|
||||
for (i = 0; i < v5; ++v4)
|
||||
* (float*)(*(DWORD*)((char*)v3 + 138) + 4 * i++) = *v4;
|
||||
}
|
||||
}
|
||||
}
|
||||
return v3;
|
||||
}
|
||||
// 1001A30: using guessed type void *TLightBargraph::vftable;
|
||||
|
||||
//----- (0100AEF9) --------------------------------------------------------
|
||||
TLightBargraph *__thiscall TLightBargraph::`vector deleting destructor'(TLightBargraph *this, char a2)
|
||||
TLightBargraph* __thiscall TLightBargraph::destroy(TLightBargraph* this, char a2)
|
||||
{
|
||||
TLightBargraph *v2; // esi
|
||||
TLightBargraph* v2; // esi
|
||||
|
||||
v2 = this;
|
||||
TLightBargraph::~TLightBargraph(this);
|
||||
if ( a2 & 1 )
|
||||
operator delete((void *)v2);
|
||||
return v2;
|
||||
v2 = this;
|
||||
TLightBargraph::~TLightBargraph(this);
|
||||
if (a2 & 1)
|
||||
component_delete((void*)v2);
|
||||
return v2;
|
||||
}
|
||||
|
||||
@@ -15,7 +15,7 @@ void __thiscall TLightBargraph::Reset(TLightBargraph* this); // idb
|
||||
void TLightBargraph::BargraphTimerExpired(int, void*); // idb
|
||||
int __thiscall TLightBargraph::Message(TLightBargraph* this, int, float); // idb
|
||||
TLightBargraph* __thiscall TLightBargraph::TLightBargraph(TLightBargraph* this, struct TPinballTable* a2, int a3);
|
||||
TLightBargraph* __thiscall TLightBargraph::`vector deleting destructor'(TLightBargraph *this, char a2);
|
||||
TLightBargraph* __thiscall TLightBargraph::destroy(TLightBargraph *this, char a2);
|
||||
|
||||
void* TLightBargraph::vftable = &TLightBargraph::Message; // weak
|
||||
|
||||
|
||||
+105
-105
@@ -1,131 +1,131 @@
|
||||
#include "TOneWay.h"
|
||||
|
||||
//----- (01015B61) --------------------------------------------------------
|
||||
int __thiscall TOneway::get_scoring(TOneway *this, int a2)
|
||||
int __thiscall TOneway::get_scoring(TOneway* this, int a2)
|
||||
{
|
||||
int result; // eax
|
||||
int result; // eax
|
||||
|
||||
if ( a2 >= 6 )
|
||||
result = 0;
|
||||
else
|
||||
result = *(DWORD *)((char *)this + 4 * a2 + 86);
|
||||
return result;
|
||||
if (a2 >= 6)
|
||||
result = 0;
|
||||
else
|
||||
result = *(DWORD*)((char*)this + 4 * a2 + 86);
|
||||
return result;
|
||||
}
|
||||
|
||||
//----- (01015B7F) --------------------------------------------------------
|
||||
void __thiscall TOneway::put_scoring(TOneway *this, int a2, int a3)
|
||||
void __thiscall TOneway::put_scoring(TOneway* this, int a2, int a3)
|
||||
{
|
||||
if ( a2 < 6 )
|
||||
*(DWORD *)((char *)this + 4 * a2 + 86) = a3;
|
||||
if (a2 < 6)
|
||||
* (DWORD*)((char*)this + 4 * a2 + 86) = a3;
|
||||
}
|
||||
|
||||
//----- (01018032) --------------------------------------------------------
|
||||
void __thiscall TOneway::Collision(TOneway *this, struct TBall *a2, struct vector_type *a3, struct vector_type *a4, float a5, struct TEdgeSegment *a6)
|
||||
void __thiscall TOneway::Collision(TOneway* this, struct TBall* a2, struct vector_type* a3, struct vector_type* a4, float a5, struct TEdgeSegment* a6)
|
||||
{
|
||||
TOneway *v6; // edi
|
||||
int v7; // edi
|
||||
double v8; // st7
|
||||
int v9; // eax
|
||||
TOneway* v6; // edi
|
||||
int v7; // edi
|
||||
double v8; // st7
|
||||
int v9; // eax
|
||||
|
||||
v6 = this;
|
||||
if ( a6 == *(struct TEdgeSegment **)((char *)this + 82) )
|
||||
{
|
||||
TBall::not_again(a2, a6);
|
||||
v8 = *(float *)((char *)a2 + 70) - a5;
|
||||
*(DWORD *)((char *)a2 + 42) = *(DWORD *)a3;
|
||||
v9 = *((DWORD *)a3 + 1);
|
||||
*(float *)((char *)a2 + 70) = v8;
|
||||
*(DWORD *)((char *)a2 + 46) = v9;
|
||||
if ( !*(DWORD *)(*(DWORD *)((char *)v6 + 30) + 370) )
|
||||
{
|
||||
if ( *(DWORD *)((char *)v6 + 74) )
|
||||
loader_play_sound(*(DWORD *)((char *)v6 + 74));
|
||||
control_handler(63, v6);
|
||||
}
|
||||
}
|
||||
else if ( *(DWORD *)(*(DWORD *)((char *)this + 30) + 370) )
|
||||
{
|
||||
basic_collision(a2, a3, a4, *(float *)((char *)this + 54), *(float *)((char *)this + 58), 1000000000.0, 0.0);
|
||||
}
|
||||
else if ( basic_collision(
|
||||
a2,
|
||||
a3,
|
||||
a4,
|
||||
*(float *)((char *)this + 54),
|
||||
*(float *)((char *)this + 58),
|
||||
*(float *)((char *)this + 66),
|
||||
*(float *)((char *)this + 62)) > 0.2 )
|
||||
{
|
||||
v7 = *(DWORD *)((char *)v6 + 70);
|
||||
if ( v7 )
|
||||
loader_play_sound(v7);
|
||||
}
|
||||
v6 = this;
|
||||
if (a6 == *(struct TEdgeSegment**)((char*)this + 82))
|
||||
{
|
||||
TBall::not_again(a2, a6);
|
||||
v8 = *(float*)((char*)a2 + 70) - a5;
|
||||
*(DWORD*)((char*)a2 + 42) = *(DWORD*)a3;
|
||||
v9 = *((DWORD*)a3 + 1);
|
||||
*(float*)((char*)a2 + 70) = v8;
|
||||
*(DWORD*)((char*)a2 + 46) = v9;
|
||||
if (!*(DWORD*)(*(DWORD*)((char*)v6 + 30) + 370))
|
||||
{
|
||||
if (*(DWORD*)((char*)v6 + 74))
|
||||
loader_play_sound(*(DWORD*)((char*)v6 + 74));
|
||||
control_handler(63, v6);
|
||||
}
|
||||
}
|
||||
else if (*(DWORD*)(*(DWORD*)((char*)this + 30) + 370))
|
||||
{
|
||||
basic_collision(a2, a3, a4, *(float*)((char*)this + 54), *(float*)((char*)this + 58), 1000000000.0, 0.0);
|
||||
}
|
||||
else if (basic_collision(
|
||||
a2,
|
||||
a3,
|
||||
a4,
|
||||
*(float*)((char*)this + 54),
|
||||
*(float*)((char*)this + 58),
|
||||
*(float*)((char*)this + 66),
|
||||
*(float*)((char*)this + 62)) > 0.2)
|
||||
{
|
||||
v7 = *(DWORD*)((char*)v6 + 70);
|
||||
if (v7)
|
||||
loader_play_sound(v7);
|
||||
}
|
||||
}
|
||||
|
||||
//----- (01019204) --------------------------------------------------------
|
||||
TOneway *__thiscall TOneway::TOneway(TOneway *this, struct TPinballTable *a2, int a3)
|
||||
TOneway* __thiscall TOneway::TOneway(TOneway* this, struct TPinballTable* a2, int a3)
|
||||
{
|
||||
TLine *v3; // edi
|
||||
TOneway *v4; // esi
|
||||
TLine *v5; // eax
|
||||
TLine *v6; // eax
|
||||
TLine *v7; // eax
|
||||
float v8; // ST10_4
|
||||
char v10; // [esp+10h] [ebp-60h]
|
||||
int v11; // [esp+18h] [ebp-58h]
|
||||
int *v12; // [esp+1Ch] [ebp-54h]
|
||||
unsigned int v13; // [esp+44h] [ebp-2Ch]
|
||||
int v14; // [esp+58h] [ebp-18h]
|
||||
int v15; // [esp+5Ch] [ebp-14h]
|
||||
int v16; // [esp+64h] [ebp-Ch]
|
||||
int v17; // [esp+68h] [ebp-8h]
|
||||
TLine* v3; // edi
|
||||
TOneway* v4; // esi
|
||||
TLine* v5; // eax
|
||||
TLine* v6; // eax
|
||||
TLine* v7; // eax
|
||||
float v8; // ST10_4
|
||||
char v10; // [esp+10h] [ebp-60h]
|
||||
int v11; // [esp+18h] [ebp-58h]
|
||||
int* v12; // [esp+1Ch] [ebp-54h]
|
||||
unsigned int v13; // [esp+44h] [ebp-2Ch]
|
||||
int v14; // [esp+58h] [ebp-18h]
|
||||
int v15; // [esp+5Ch] [ebp-14h]
|
||||
int v16; // [esp+64h] [ebp-Ch]
|
||||
int v17; // [esp+68h] [ebp-8h]
|
||||
|
||||
v3 = 0;
|
||||
v4 = this;
|
||||
TCollisionComponent::TCollisionComponent(this, a2, a3, 0);
|
||||
*(DWORD *)v4 = &TOneway::vftable;
|
||||
loader_query_visual(a3, 0, &v10);
|
||||
if ( v11 == 2 )
|
||||
{
|
||||
v16 = *v12;
|
||||
v17 = v12[1];
|
||||
v14 = v12[2];
|
||||
v15 = v12[3];
|
||||
v5 = (TLine *)operator new(0x55u);
|
||||
if ( v5 )
|
||||
v3 = TLine::TLine(v5, v4, (char *)v4 + 5, v13, (struct vector_type *)&v16, (struct vector_type *)&v14);
|
||||
if ( v3 )
|
||||
{
|
||||
TLine::Offset(v3, *(float *)((char *)a2 + 282));
|
||||
(*(void (__thiscall **)(TLine *))(*(DWORD *)v3 + 8))(v3);
|
||||
objlist_class::Add((TOneway *)((char *)v4 + 42), (void *)v3);
|
||||
}
|
||||
v6 = (TLine *)operator new(0x55u);
|
||||
if ( v6 )
|
||||
v7 = TLine::TLine(v6, v4, (char *)v4 + 5, v13, (struct vector_type *)&v14, (struct vector_type *)&v16);
|
||||
else
|
||||
v7 = 0;
|
||||
*(DWORD *)((char *)v4 + 82) = v7;
|
||||
if ( v7 )
|
||||
{
|
||||
v8 = -(*(float *)((char *)a2 + 282) * 0.8);
|
||||
TLine::Offset(v7, v8);
|
||||
(*(void (**)(void))(**(DWORD **)((char *)v4 + 82) + 8))();
|
||||
objlist_class::Add((TOneway *)((char *)v4 + 42), *(void **)((char *)v4 + 82));
|
||||
}
|
||||
}
|
||||
return v4;
|
||||
v3 = 0;
|
||||
v4 = this;
|
||||
TCollisionComponent::TCollisionComponent(this, a2, a3, 0);
|
||||
*(DWORD*)v4 = &TOneway::vftable;
|
||||
loader_query_visual(a3, 0, &v10);
|
||||
if (v11 == 2)
|
||||
{
|
||||
v16 = *v12;
|
||||
v17 = v12[1];
|
||||
v14 = v12[2];
|
||||
v15 = v12[3];
|
||||
v5 = (TLine*)operator new(0x55u);
|
||||
if (v5)
|
||||
v3 = TLine::TLine(v5, v4, (char*)v4 + 5, v13, (struct vector_type*) & v16, (struct vector_type*) & v14);
|
||||
if (v3)
|
||||
{
|
||||
TLine::Offset(v3, *(float*)((char*)a2 + 282));
|
||||
(*(void(__thiscall * *)(TLine*))(*(DWORD*)v3 + 8))(v3);
|
||||
objlist_class::Add((TOneway*)((char*)v4 + 42), (void*)v3);
|
||||
}
|
||||
v6 = (TLine*)operator new(0x55u);
|
||||
if (v6)
|
||||
v7 = TLine::TLine(v6, v4, (char*)v4 + 5, v13, (struct vector_type*) & v14, (struct vector_type*) & v16);
|
||||
else
|
||||
v7 = 0;
|
||||
*(DWORD*)((char*)v4 + 82) = v7;
|
||||
if (v7)
|
||||
{
|
||||
v8 = -(*(float*)((char*)a2 + 282) * 0.8);
|
||||
TLine::Offset(v7, v8);
|
||||
(*(void (**)(void))(**(DWORD * *)((char*)v4 + 82) + 8))();
|
||||
objlist_class::Add((TOneway*)((char*)v4 + 42), *(void**)((char*)v4 + 82));
|
||||
}
|
||||
}
|
||||
return v4;
|
||||
}
|
||||
// 1002530: using guessed type void *TOneway::vftable;
|
||||
|
||||
//----- (0101AAA7) --------------------------------------------------------
|
||||
TOneway *__thiscall TOneway::destroy(TOneway *this, char a2)
|
||||
TOneway* __thiscall TOneway::destroy(TOneway* this, char a2)
|
||||
{
|
||||
TOneway *v2; // esi
|
||||
TOneway* v2; // esi
|
||||
|
||||
v2 = this;
|
||||
TCollisionComponent::~TCollisionComponent(this);
|
||||
if ( a2 & 1 )
|
||||
operator delete((void *)v2);
|
||||
return v2;
|
||||
v2 = this;
|
||||
TCollisionComponent::~TCollisionComponent(this);
|
||||
if (a2 & 1)
|
||||
component_delete((void*)v2);
|
||||
return v2;
|
||||
}
|
||||
@@ -13,9 +13,9 @@ void* TPinballComponent::operator new(size_t SizeOfElements)
|
||||
//----- (010159A9) --------------------------------------------------------
|
||||
int TPinballComponent::Message(int a2, float a3)
|
||||
{
|
||||
*(_DWORD*)((char*)this + 6) = a2;
|
||||
*(DWORD*)((char*)this + 6) = a2;
|
||||
if (a2 == 1024)
|
||||
* (_DWORD*)((char*)this + 6) = 0;
|
||||
* (DWORD*)((char*)this + 6) = 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -38,20 +38,20 @@ TPinballComponent* TPinballComponent::TPinballComponent(TPinballTable* a2, int a
|
||||
objlist_class* v11; // ecx
|
||||
int v12; // eax
|
||||
int v13; // ecx
|
||||
_DWORD* v14; // eax
|
||||
DWORD* v14; // eax
|
||||
signed int v15; // ebx
|
||||
_DWORD* v16; // eax
|
||||
DWORD* v16; // eax
|
||||
int v17; // eax
|
||||
|
||||
* (_DWORD*)((char*)this + 6) = 0;
|
||||
* (DWORD*)((char*)this + 6) = 0;
|
||||
*((_BYTE*)this + 4) = 0;
|
||||
*((_BYTE*)this + 5) = 0;
|
||||
*(_DWORD*)((char*)this + 30) = a2;
|
||||
*(_DWORD*)((char*)this + 26) = 0;
|
||||
*(DWORD*)((char*)this + 30) = a2;
|
||||
*(DWORD*)((char*)this + 26) = 0;
|
||||
if (a2)
|
||||
objlist_class::Add((struct TPinballTable*)((char*)a2 + 250), (void*)this);
|
||||
if (a3 >= 0)
|
||||
* (_DWORD*)((char*)this + 10) = loader_query_name(a3);
|
||||
* (DWORD*)((char*)this + 10) = loader_query_name(a3);
|
||||
if (a4 && a3 >= 0)
|
||||
{
|
||||
this.v33 = loader_query_visual_states(a3);
|
||||
@@ -63,14 +63,14 @@ TPinballComponent* TPinballComponent::TPinballComponent(TPinballTable* a2, int a
|
||||
loader_query_visual(a3, (signed int)this.v31, &v19);
|
||||
if (this.v20)
|
||||
{
|
||||
if (!*(_DWORD*)((char*)this + 34))
|
||||
if (!*(DWORD*)((char*)this + 34))
|
||||
{
|
||||
v6 = (TZmapList*)operator new(8u);
|
||||
if (v6)
|
||||
v7 = TZmapList::TZmapList(v6, this.v33, 4);
|
||||
else
|
||||
v7 = 0;
|
||||
*(_DWORD*)((char*)this + 34) = v7;
|
||||
*(DWORD*)((char*)this + 34) = v7;
|
||||
}
|
||||
v8 = *(objlist_class * *)((char*)this + 34);
|
||||
if (v8)
|
||||
@@ -78,14 +78,14 @@ TPinballComponent* TPinballComponent::TPinballComponent(TPinballTable* a2, int a
|
||||
}
|
||||
if (this.v21)
|
||||
{
|
||||
if (!*(_DWORD*)((char*)this + 38))
|
||||
if (!*(DWORD*)((char*)this + 38))
|
||||
{
|
||||
v9 = (TZmapList*)operator new(8u);
|
||||
if (v9)
|
||||
v10 = TZmapList::TZmapList(v9, v33, 4);
|
||||
else
|
||||
v10 = 0;
|
||||
*(_DWORD*)((char*)this + 38) = v10;
|
||||
*(DWORD*)((char*)this + 38) = v10;
|
||||
}
|
||||
v11 = *(objlist_class * *)((char*)this + 38);
|
||||
if (v11)
|
||||
@@ -94,44 +94,44 @@ TPinballComponent* TPinballComponent::TPinballComponent(TPinballTable* a2, int a
|
||||
this.v31 = (struct TPinballTable*)((char*)v31 + 1);
|
||||
} while (this.v31 < this.v33);
|
||||
}
|
||||
v12 = *(_DWORD*)((char*)this + 38);
|
||||
v12 = *(DWORD*)((char*)this + 38);
|
||||
if (v12)
|
||||
v30 = *(_DWORD*)(*(_DWORD*)(v12 + 4) + 8);
|
||||
v13 = *(_DWORD*)((char*)this + 34);
|
||||
v30 = *(DWORD*)(*(DWORD*)(v12 + 4) + 8);
|
||||
v13 = *(DWORD*)((char*)this + 34);
|
||||
if (v13)
|
||||
{
|
||||
v14 = *(_DWORD * *)(*(_DWORD*)(v13 + 4) + 8);
|
||||
this.v26 = *(_DWORD*)((char*)v14 + 29) - *(_DWORD*)((char*)a2 + 234);
|
||||
v14 = *(DWORD * *)(*(DWORD*)(v13 + 4) + 8);
|
||||
this.v26 = *(DWORD*)((char*)v14 + 29) - *(DWORD*)((char*)a2 + 234);
|
||||
v15 = 1;
|
||||
this.v27 = *(_DWORD*)((char*)v14 + 33) - *(_DWORD*)((char*)a2 + 238);
|
||||
this.v27 = *(DWORD*)((char*)v14 + 33) - *(DWORD*)((char*)a2 + 238);
|
||||
this.v28 = v14[3];
|
||||
this.v29 = v14[4];
|
||||
if (*(_DWORD*)(*(_DWORD*)(v13 + 4) + 4) > 1)
|
||||
if (*(DWORD*)(*(DWORD*)(v13 + 4) + 4) > 1)
|
||||
{
|
||||
this.v32 = (struct TPinballTable*)12;
|
||||
do
|
||||
{
|
||||
v16 = *(_DWORD * *)((char*)v32 + *(_DWORD*)(*(_DWORD*)((char*)this + 34) + 4));
|
||||
this.v22 = *(_DWORD*)((char*)v16 + 29) - *(_DWORD*)((char*)a2 + 234);
|
||||
this.v23 = *(_DWORD*)((char*)v16 + 33) - *(_DWORD*)((char*)a2 + 238);
|
||||
v16 = *(DWORD * *)((char*)v32 + *(DWORD*)(*(DWORD*)((char*)this + 34) + 4));
|
||||
this.v22 = *(DWORD*)((char*)v16 + 29) - *(DWORD*)((char*)a2 + 234);
|
||||
this.v23 = *(DWORD*)((char*)v16 + 33) - *(DWORD*)((char*)a2 + 238);
|
||||
this.v24 = v16[3];
|
||||
this.v25 = v16[4];
|
||||
enclosing_box(&v26, &v22, &v26);
|
||||
this.v32 = (struct TPinballTable*)((char*)v32 + 4);
|
||||
++v15;
|
||||
} while (v15 < *(_DWORD*)(*(_DWORD*)(*(_DWORD*)((char*)this + 34) + 4) + 4));
|
||||
} while (v15 < *(DWORD*)(*(DWORD*)(*(DWORD*)((char*)this + 34) + 4) + 4));
|
||||
}
|
||||
v17 = *(_DWORD*)(*(_DWORD*)(*(_DWORD*)((char*)this + 34) + 4) + 8);
|
||||
*(_DWORD*)((char*)this + 26) = render_create_sprite(
|
||||
v17 = *(DWORD*)(*(DWORD*)(*(DWORD*)((char*)this + 34) + 4) + 8);
|
||||
*(DWORD*)((char*)this + 26) = render_create_sprite(
|
||||
this.v33 > 0,
|
||||
*(_DWORD*)(*(_DWORD*)(*(_DWORD*)((char*)this + 34) + 4) + 8),
|
||||
*(DWORD*)(*(DWORD*)(*(DWORD*)((char*)this + 34) + 4) + 8),
|
||||
this.v30,
|
||||
*(_DWORD*)(v17 + 29) - *(_DWORD*)((char*)a2 + 234),
|
||||
*(_DWORD*)(v17 + 33) - *(_DWORD*)((char*)a2 + 238),
|
||||
*(DWORD*)(v17 + 29) - *(DWORD*)((char*)a2 + 234),
|
||||
*(DWORD*)(v17 + 33) - *(DWORD*)((char*)a2 + 238),
|
||||
&this.v26);
|
||||
}
|
||||
}
|
||||
*(_DWORD*)((char*)this + 22) = a3;
|
||||
*(DWORD*)((char*)this + 22) = a3;
|
||||
return this;
|
||||
}
|
||||
// 10024A8: using guessed type void *TPinballComponent::vftable;
|
||||
@@ -146,9 +146,9 @@ TZmapList* TPinballComponent::~TPinballComponent(TPinballComponent* this)
|
||||
|
||||
v1 = this;
|
||||
result = *(TZmapList * *)((char*)this + 30);
|
||||
*(_DWORD*)this = &TPinballComponent::vftable;
|
||||
*(DWORD*)this = &TPinballComponent::vftable;
|
||||
if (result)
|
||||
result = (TZmapList*)objlist_delete_object(*(_DWORD*)((char*)result + 254), (int)this);
|
||||
result = (TZmapList*)objlist_delete_object(*(DWORD*)((char*)result + 254), (int)this);
|
||||
v3 = *(TZmapList * *)((char*)v1 + 34);
|
||||
if (v3)
|
||||
result = TZmapList::destroy(v3, 1);
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
@@ -20,7 +20,7 @@ void TPinballTable::tilt_timeout(int, void*); // idb
|
||||
// void TPinballTable::tilt(TPinballTable *this, int a2, float a3);
|
||||
// int TPinballTable::Message(TPinballTable *this, int a2, int a3, float a4);
|
||||
TZmapList* __thiscall TPinballTable::~TPinballTable(TPinballTable* this);
|
||||
TPinballTable* __thiscall TPinballTable::`vector deleting destructor'(TPinballTable *this, char a2);
|
||||
TPinballTable* __thiscall TPinballTable::destroy(TPinballTable *this, char a2);
|
||||
TPinballTable* __thiscall TPinballTable::TPinballTable(TPinballTable* this);
|
||||
TPinballComponent* __thiscall TPinballTable::find_component(TPinballTable* this, char*); // idb
|
||||
TPinballComponent* __thiscall TPinballTable::find_component(TPinballTable* this, int); // idb
|
||||
|
||||
+19
-19
@@ -5,36 +5,36 @@
|
||||
#include "TSound.h"
|
||||
|
||||
//----- (0100AD8B) --------------------------------------------------------
|
||||
TSound *__thiscall TSound::`vector deleting destructor`(TSound *this, char a2)
|
||||
TSound* __thiscall TSound::destroy(TSound* this, char a2)
|
||||
{
|
||||
TSound *v2; // esi
|
||||
TSound* v2; // esi
|
||||
|
||||
v2 = this;
|
||||
TPinballComponent::~TPinballComponent(this);
|
||||
if ( a2 & 1 )
|
||||
operator delete((void *)v2);
|
||||
return v2;
|
||||
v2 = this;
|
||||
TPinballComponent::~TPinballComponent(this);
|
||||
if (a2 & 1)
|
||||
component_delete((void*)v2);
|
||||
return v2;
|
||||
}
|
||||
|
||||
//----- (0101797E) --------------------------------------------------------
|
||||
double __thiscall TSound::Play(TSound *this)
|
||||
double __thiscall TSound::Play(TSound* this)
|
||||
{
|
||||
return loader_play_sound(*(DWORD *)((char *)this + 42));
|
||||
return loader_play_sound(*(DWORD*)((char*)this + 42));
|
||||
}
|
||||
|
||||
//----- (0101AA18) --------------------------------------------------------
|
||||
TSound *__thiscall TSound::TSound(TSound *this, struct TPinballTable *a2, int a3)
|
||||
TSound* __thiscall TSound::TSound(TSound* this, struct TPinballTable* a2, int a3)
|
||||
{
|
||||
TSound *v3; // esi
|
||||
char v5; // [esp+4h] [ebp-48h]
|
||||
int v6; // [esp+3Ch] [ebp-10h]
|
||||
TSound* v3; // esi
|
||||
char v5; // [esp+4h] [ebp-48h]
|
||||
int v6; // [esp+3Ch] [ebp-10h]
|
||||
|
||||
v3 = this;
|
||||
TPinballComponent::TPinballComponent(this, a2, a3, 1);
|
||||
*(DWORD *)v3 = &TSound::vftable;
|
||||
loader_query_visual(a3, 0, &v5);
|
||||
*(DWORD *)((char *)v3 + 42) = v6;
|
||||
return v3;
|
||||
v3 = this;
|
||||
TPinballComponent::TPinballComponent(this, a2, a3, 1);
|
||||
*(DWORD*)v3 = &TSound::vftable;
|
||||
loader_query_visual(a3, 0, &v5);
|
||||
*(DWORD*)((char*)v3 + 42) = v6;
|
||||
return v3;
|
||||
}
|
||||
// 10027A4: using guessed type void *TSound::vftable;
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
/* 132 */
|
||||
struct TSound;
|
||||
|
||||
TSound* __thiscall TSound::`vector deleting destructor`(TSound *this, char a2);
|
||||
TSound* __thiscall TSound::destroy(TSound *this, char a2);
|
||||
double __thiscall TSound::Play(TSound* this);
|
||||
TSound* __thiscall TSound::TSound(TSound* this, struct TPinballTable* a2, int a3);
|
||||
|
||||
|
||||
+235
-235
@@ -1,258 +1,258 @@
|
||||
#include "TTableLayer.h"
|
||||
|
||||
//----- (010173E7) --------------------------------------------------------
|
||||
int __thiscall TTableLayer::FieldEffect(TTableLayer *this, struct TBall *a2, struct vector_type *a3)
|
||||
int __thiscall TTableLayer::FieldEffect(TTableLayer* this, struct TBall* a2, struct vector_type* a3)
|
||||
{
|
||||
TTableLayer *v3; // esi
|
||||
struct TBall *v4; // edi
|
||||
double v5; // ST08_8
|
||||
TTableLayer* v3; // esi
|
||||
struct TBall* v4; // edi
|
||||
double v5; // ST08_8
|
||||
|
||||
v3 = this;
|
||||
v4 = a2;
|
||||
v5 = *(float *)((char *)this + 98);
|
||||
*(float *)a3 = v5
|
||||
- (0.5 - (double)_rand() * 0.00003051850947599719 + *(float *)((char *)v4 + 54))
|
||||
* *(float *)((char *)v4 + 66)
|
||||
* *(float *)((char *)this + 110);
|
||||
*((float *)a3 + 1) = *(float *)((char *)v3 + 102)
|
||||
- *(float *)((char *)v4 + 58) * *(float *)((char *)v4 + 66) * *(float *)((char *)v3 + 110);
|
||||
return 1;
|
||||
v3 = this;
|
||||
v4 = a2;
|
||||
v5 = *(float*)((char*)this + 98);
|
||||
*(float*)a3 = v5
|
||||
- (0.5 - (double)_rand() * 0.00003051850947599719 + *(float*)((char*)v4 + 54))
|
||||
* *(float*)((char*)v4 + 66)
|
||||
* *(float*)((char*)this + 110);
|
||||
*((float*)a3 + 1) = *(float*)((char*)v3 + 102)
|
||||
- *(float*)((char*)v4 + 58) * *(float*)((char*)v4 + 66) * *(float*)((char*)v3 + 110);
|
||||
return 1;
|
||||
}
|
||||
|
||||
//----- (0101A5AB) --------------------------------------------------------
|
||||
TTableLayer *__thiscall TTableLayer::TTableLayer(TTableLayer *this, struct TPinballTable *a2)
|
||||
TTableLayer* __thiscall TTableLayer::TTableLayer(TTableLayer* this, struct TPinballTable* a2)
|
||||
{
|
||||
struct TPinballTable *v2; // edi
|
||||
TTableLayer *v3; // esi
|
||||
float *v4; // eax
|
||||
int v5; // eax
|
||||
DWORD *v6; // eax
|
||||
int v7; // eax
|
||||
DWORD *v8; // eax
|
||||
DWORD *v9; // eax
|
||||
float *v10; // ecx
|
||||
float *v11; // edi
|
||||
double v12; // st7
|
||||
double v13; // st7
|
||||
double v14; // st7
|
||||
double v15; // st7
|
||||
double v16; // st7
|
||||
double v17; // st7
|
||||
double v18; // st7
|
||||
double v19; // st7
|
||||
TEdgeManager *v20; // eax
|
||||
float v21; // ST18_4
|
||||
float v22; // ST14_4
|
||||
TLine *v23; // eax
|
||||
TLine *v24; // edi
|
||||
double v25; // st7
|
||||
float v26; // ST10_4
|
||||
double v27; // st7
|
||||
float v28; // ST0C_4
|
||||
char v30; // [esp+24h] [ebp-5Ch]
|
||||
int v31; // [esp+2Ch] [ebp-54h]
|
||||
float *v32; // [esp+30h] [ebp-50h]
|
||||
int v33; // [esp+38h] [ebp-48h]
|
||||
int v34; // [esp+54h] [ebp-2Ch]
|
||||
unsigned int v35; // [esp+58h] [ebp-28h]
|
||||
int v36; // [esp+5Ch] [ebp-24h]
|
||||
int v37; // [esp+60h] [ebp-20h]
|
||||
DWORD *v38; // [esp+64h] [ebp-1Ch]
|
||||
struct zmap_header_type *v39; // [esp+68h] [ebp-18h]
|
||||
int v40; // [esp+6Ch] [ebp-14h]
|
||||
int v41; // [esp+70h] [ebp-10h]
|
||||
int v42; // [esp+74h] [ebp-Ch]
|
||||
int v43; // [esp+78h] [ebp-8h]
|
||||
int v44; // [esp+7Ch] [ebp-4h]
|
||||
struct TPinballTable *v45; // [esp+88h] [ebp+8h]
|
||||
struct TPinballTable *v46; // [esp+88h] [ebp+8h]
|
||||
struct TPinballTable* v2; // edi
|
||||
TTableLayer* v3; // esi
|
||||
float* v4; // eax
|
||||
int v5; // eax
|
||||
DWORD* v6; // eax
|
||||
int v7; // eax
|
||||
DWORD* v8; // eax
|
||||
DWORD* v9; // eax
|
||||
float* v10; // ecx
|
||||
float* v11; // edi
|
||||
double v12; // st7
|
||||
double v13; // st7
|
||||
double v14; // st7
|
||||
double v15; // st7
|
||||
double v16; // st7
|
||||
double v17; // st7
|
||||
double v18; // st7
|
||||
double v19; // st7
|
||||
TEdgeManager* v20; // eax
|
||||
float v21; // ST18_4
|
||||
float v22; // ST14_4
|
||||
TLine* v23; // eax
|
||||
TLine* v24; // edi
|
||||
double v25; // st7
|
||||
float v26; // ST10_4
|
||||
double v27; // st7
|
||||
float v28; // ST0C_4
|
||||
char v30; // [esp+24h] [ebp-5Ch]
|
||||
int v31; // [esp+2Ch] [ebp-54h]
|
||||
float* v32; // [esp+30h] [ebp-50h]
|
||||
int v33; // [esp+38h] [ebp-48h]
|
||||
int v34; // [esp+54h] [ebp-2Ch]
|
||||
unsigned int v35; // [esp+58h] [ebp-28h]
|
||||
int v36; // [esp+5Ch] [ebp-24h]
|
||||
int v37; // [esp+60h] [ebp-20h]
|
||||
DWORD* v38; // [esp+64h] [ebp-1Ch]
|
||||
struct zmap_header_type* v39; // [esp+68h] [ebp-18h]
|
||||
int v40; // [esp+6Ch] [ebp-14h]
|
||||
int v41; // [esp+70h] [ebp-10h]
|
||||
int v42; // [esp+74h] [ebp-Ch]
|
||||
int v43; // [esp+78h] [ebp-8h]
|
||||
int v44; // [esp+7Ch] [ebp-4h]
|
||||
struct TPinballTable* v45; // [esp+88h] [ebp+8h]
|
||||
struct TPinballTable* v46; // [esp+88h] [ebp+8h]
|
||||
|
||||
v2 = a2;
|
||||
v3 = this;
|
||||
TCollisionComponent::TCollisionComponent(this, a2, -1, 0);
|
||||
*(DWORD *)v3 = &TTableLayer::vftable;
|
||||
v45 = (struct TPinballTable *)loader_query_handle("table");
|
||||
loader_query_visual((int)v45, 0, &v30);
|
||||
v4 = (float *)loader_query_float_attribute((int)v45, 0, 700);
|
||||
proj_recenter(COERCE_INT(*v4), COERCE_INT(v4[1]));
|
||||
render_set_background_zmap(v39, 0, 0);
|
||||
v5 = (int)v38;
|
||||
*(DWORD *)((char *)v3 + 78) = v38;
|
||||
v40 = 0;
|
||||
v41 = 0;
|
||||
v42 = *(DWORD *)(v5 + 12);
|
||||
v43 = *(DWORD *)(v5 + 16);
|
||||
render_create_sprite(0, v5, (int)v39, 0, 0, &v40);
|
||||
*(DWORD *)(*(DWORD *)((char *)v3 + 30) + 66) = v36;
|
||||
*(DWORD *)(*(DWORD *)((char *)v3 + 30) + 70) = v37;
|
||||
*(DWORD *)(*(DWORD *)((char *)v3 + 30) + 74) = v34;
|
||||
v6 = (DWORD *)loader_query_float_attribute((int)v45, 0, 305);
|
||||
if ( v6 )
|
||||
{
|
||||
*(DWORD *)(*(DWORD *)((char *)v3 + 30) + 270) = *v6;
|
||||
*(DWORD *)(*(DWORD *)((char *)v3 + 30) + 274) = v6[1];
|
||||
*(DWORD *)(*(DWORD *)((char *)v3 + 30) + 278) = v6[2];
|
||||
}
|
||||
else
|
||||
{
|
||||
*(DWORD *)(*(DWORD *)((char *)v3 + 30) + 270) = 1103626240;
|
||||
*(DWORD *)(*(DWORD *)((char *)v3 + 30) + 274) = 1056964608;
|
||||
*(DWORD *)(*(DWORD *)((char *)v3 + 30) + 278) = 1070141400;
|
||||
}
|
||||
v7 = *(DWORD *)((char *)v3 + 30);
|
||||
*(float *)((char *)v3 + 98) = cos(*(float *)(v7 + 278)) * sin(*(float *)(v7 + 274)) * *(float *)(v7 + 270);
|
||||
*(float *)((char *)v3 + 102) = sin(*(float *)(v7 + 278)) * sin(*(float *)(v7 + 274)) * *(float *)(v7 + 270);
|
||||
v8 = (DWORD *)loader_query_float_attribute((int)v45, 0, 701);
|
||||
if ( v8 )
|
||||
*(DWORD *)((char *)v3 + 110) = *v8;
|
||||
else
|
||||
*(DWORD *)((char *)v3 + 110) = 1045220557;
|
||||
v9 = v38;
|
||||
*(DWORD *)((char *)v2 + 234) = *(DWORD *)((char *)v38 + 29);
|
||||
*(DWORD *)((char *)v2 + 238) = *(DWORD *)((char *)v9 + 33);
|
||||
*(DWORD *)((char *)v2 + 242) = v9[3];
|
||||
v10 = v32;
|
||||
*(DWORD *)((char *)v2 + 246) = v9[4];
|
||||
v44 = v31;
|
||||
*(DWORD *)((char *)v3 + 66) = v33;
|
||||
*(DWORD *)((char *)v3 + 62) = 1097859072;
|
||||
v11 = v10;
|
||||
v46 = (struct TPinballTable *)v10;
|
||||
if ( v10[2] >= (double)v10[4] )
|
||||
v12 = v10[4];
|
||||
else
|
||||
v12 = v10[2];
|
||||
if ( v12 >= *v10 )
|
||||
{
|
||||
v13 = *v10;
|
||||
}
|
||||
else if ( v10[2] >= (double)v10[4] )
|
||||
{
|
||||
v13 = v10[4];
|
||||
}
|
||||
else
|
||||
{
|
||||
v13 = v10[2];
|
||||
}
|
||||
*(float *)((char *)v3 + 82) = v13;
|
||||
if ( v10[2] <= (double)v10[4] )
|
||||
v14 = v10[4];
|
||||
else
|
||||
v14 = v10[2];
|
||||
if ( v14 <= *v10 )
|
||||
{
|
||||
v15 = *v10;
|
||||
}
|
||||
else if ( v10[2] <= (double)v10[4] )
|
||||
{
|
||||
v15 = v10[4];
|
||||
}
|
||||
else
|
||||
{
|
||||
v15 = v10[2];
|
||||
}
|
||||
*(float *)((char *)v3 + 90) = v15;
|
||||
if ( v10[3] >= (double)v10[5] )
|
||||
v16 = v10[5];
|
||||
else
|
||||
v16 = v10[3];
|
||||
if ( v16 >= v10[1] )
|
||||
{
|
||||
v17 = v10[1];
|
||||
}
|
||||
else if ( v10[3] >= (double)v10[5] )
|
||||
{
|
||||
v17 = v10[5];
|
||||
}
|
||||
else
|
||||
{
|
||||
v17 = v10[3];
|
||||
}
|
||||
*(float *)((char *)v3 + 86) = v17;
|
||||
if ( v10[3] <= (double)v10[5] )
|
||||
v18 = v10[5];
|
||||
else
|
||||
v18 = v10[3];
|
||||
if ( v18 <= v10[1] )
|
||||
{
|
||||
v19 = v10[1];
|
||||
}
|
||||
else if ( v10[3] <= (double)v10[5] )
|
||||
{
|
||||
v19 = v10[5];
|
||||
}
|
||||
else
|
||||
{
|
||||
v19 = v10[3];
|
||||
}
|
||||
*(float *)((char *)v3 + 94) = v19;
|
||||
v20 = (TEdgeManager *)operator new(0xFC4u);
|
||||
if ( v20 )
|
||||
{
|
||||
v21 = *(float *)((char *)v3 + 94) - *(float *)((char *)v3 + 86);
|
||||
v22 = *(float *)((char *)v3 + 90) - *(float *)((char *)v3 + 82);
|
||||
edge_manager = TEdgeManager::TEdgeManager(v20, *(float *)((char *)v3 + 82), *(float *)((char *)v3 + 86), v22, v21);
|
||||
}
|
||||
else
|
||||
{
|
||||
edge_manager = 0;
|
||||
}
|
||||
if ( v44 > 0 )
|
||||
{
|
||||
while ( 1 )
|
||||
{
|
||||
v23 = (TLine *)operator new(0x55u);
|
||||
v24 = v23 ? TLine::TLine(v23, v3, (char *)v3 + 5, v35, v11[2], v11[3], *v11, v11[1]) : 0;
|
||||
if ( v24 )
|
||||
{
|
||||
(*(void (__thiscall **)(TLine *))(*(DWORD *)v24 + 8))(v24);
|
||||
objlist_class::Add((TTableLayer *)((char *)v3 + 42), (void *)v24);
|
||||
}
|
||||
v46 = (struct TPinballTable *)((char *)v46 + 8);
|
||||
if ( !--v44 )
|
||||
break;
|
||||
v11 = (float *)v46;
|
||||
}
|
||||
}
|
||||
v25 = *(float *)((char *)v3 + 90);
|
||||
*(DWORD *)((char *)v3 + 118) = -1;
|
||||
v26 = v25;
|
||||
v27 = *(float *)((char *)v3 + 94);
|
||||
*(DWORD *)((char *)v3 + 114) = (char *)v3 + 5;
|
||||
v28 = v27;
|
||||
*(DWORD *)((char *)v3 + 122) = v3;
|
||||
edges_insert_square(
|
||||
*(float *)((char *)v3 + 86),
|
||||
*(float *)((char *)v3 + 82),
|
||||
v28,
|
||||
v26,
|
||||
0,
|
||||
(TTableLayer *)((char *)v3 + 114));
|
||||
return v3;
|
||||
v2 = a2;
|
||||
v3 = this;
|
||||
TCollisionComponent::TCollisionComponent(this, a2, -1, 0);
|
||||
*(DWORD*)v3 = &TTableLayer::vftable;
|
||||
v45 = (struct TPinballTable*)loader_query_handle("table");
|
||||
loader_query_visual((int)v45, 0, &v30);
|
||||
v4 = (float*)loader_query_float_attribute((int)v45, 0, 700);
|
||||
proj_recenter(COERCE_INT(*v4), COERCE_INT(v4[1]));
|
||||
render_set_background_zmap(v39, 0, 0);
|
||||
v5 = (int)v38;
|
||||
*(DWORD*)((char*)v3 + 78) = v38;
|
||||
v40 = 0;
|
||||
v41 = 0;
|
||||
v42 = *(DWORD*)(v5 + 12);
|
||||
v43 = *(DWORD*)(v5 + 16);
|
||||
render_create_sprite(0, v5, (int)v39, 0, 0, &v40);
|
||||
*(DWORD*)(*(DWORD*)((char*)v3 + 30) + 66) = v36;
|
||||
*(DWORD*)(*(DWORD*)((char*)v3 + 30) + 70) = v37;
|
||||
*(DWORD*)(*(DWORD*)((char*)v3 + 30) + 74) = v34;
|
||||
v6 = (DWORD*)loader_query_float_attribute((int)v45, 0, 305);
|
||||
if (v6)
|
||||
{
|
||||
*(DWORD*)(*(DWORD*)((char*)v3 + 30) + 270) = *v6;
|
||||
*(DWORD*)(*(DWORD*)((char*)v3 + 30) + 274) = v6[1];
|
||||
*(DWORD*)(*(DWORD*)((char*)v3 + 30) + 278) = v6[2];
|
||||
}
|
||||
else
|
||||
{
|
||||
*(DWORD*)(*(DWORD*)((char*)v3 + 30) + 270) = 1103626240;
|
||||
*(DWORD*)(*(DWORD*)((char*)v3 + 30) + 274) = 1056964608;
|
||||
*(DWORD*)(*(DWORD*)((char*)v3 + 30) + 278) = 1070141400;
|
||||
}
|
||||
v7 = *(DWORD*)((char*)v3 + 30);
|
||||
*(float*)((char*)v3 + 98) = cos(*(float*)(v7 + 278)) * sin(*(float*)(v7 + 274)) * *(float*)(v7 + 270);
|
||||
*(float*)((char*)v3 + 102) = sin(*(float*)(v7 + 278)) * sin(*(float*)(v7 + 274)) * *(float*)(v7 + 270);
|
||||
v8 = (DWORD*)loader_query_float_attribute((int)v45, 0, 701);
|
||||
if (v8)
|
||||
* (DWORD*)((char*)v3 + 110) = *v8;
|
||||
else
|
||||
*(DWORD*)((char*)v3 + 110) = 1045220557;
|
||||
v9 = v38;
|
||||
*(DWORD*)((char*)v2 + 234) = *(DWORD*)((char*)v38 + 29);
|
||||
*(DWORD*)((char*)v2 + 238) = *(DWORD*)((char*)v9 + 33);
|
||||
*(DWORD*)((char*)v2 + 242) = v9[3];
|
||||
v10 = v32;
|
||||
*(DWORD*)((char*)v2 + 246) = v9[4];
|
||||
v44 = v31;
|
||||
*(DWORD*)((char*)v3 + 66) = v33;
|
||||
*(DWORD*)((char*)v3 + 62) = 1097859072;
|
||||
v11 = v10;
|
||||
v46 = (struct TPinballTable*)v10;
|
||||
if (v10[2] >= (double)v10[4])
|
||||
v12 = v10[4];
|
||||
else
|
||||
v12 = v10[2];
|
||||
if (v12 >= *v10)
|
||||
{
|
||||
v13 = *v10;
|
||||
}
|
||||
else if (v10[2] >= (double)v10[4])
|
||||
{
|
||||
v13 = v10[4];
|
||||
}
|
||||
else
|
||||
{
|
||||
v13 = v10[2];
|
||||
}
|
||||
*(float*)((char*)v3 + 82) = v13;
|
||||
if (v10[2] <= (double)v10[4])
|
||||
v14 = v10[4];
|
||||
else
|
||||
v14 = v10[2];
|
||||
if (v14 <= *v10)
|
||||
{
|
||||
v15 = *v10;
|
||||
}
|
||||
else if (v10[2] <= (double)v10[4])
|
||||
{
|
||||
v15 = v10[4];
|
||||
}
|
||||
else
|
||||
{
|
||||
v15 = v10[2];
|
||||
}
|
||||
*(float*)((char*)v3 + 90) = v15;
|
||||
if (v10[3] >= (double)v10[5])
|
||||
v16 = v10[5];
|
||||
else
|
||||
v16 = v10[3];
|
||||
if (v16 >= v10[1])
|
||||
{
|
||||
v17 = v10[1];
|
||||
}
|
||||
else if (v10[3] >= (double)v10[5])
|
||||
{
|
||||
v17 = v10[5];
|
||||
}
|
||||
else
|
||||
{
|
||||
v17 = v10[3];
|
||||
}
|
||||
*(float*)((char*)v3 + 86) = v17;
|
||||
if (v10[3] <= (double)v10[5])
|
||||
v18 = v10[5];
|
||||
else
|
||||
v18 = v10[3];
|
||||
if (v18 <= v10[1])
|
||||
{
|
||||
v19 = v10[1];
|
||||
}
|
||||
else if (v10[3] <= (double)v10[5])
|
||||
{
|
||||
v19 = v10[5];
|
||||
}
|
||||
else
|
||||
{
|
||||
v19 = v10[3];
|
||||
}
|
||||
*(float*)((char*)v3 + 94) = v19;
|
||||
v20 = (TEdgeManager*)operator new(0xFC4u);
|
||||
if (v20)
|
||||
{
|
||||
v21 = *(float*)((char*)v3 + 94) - *(float*)((char*)v3 + 86);
|
||||
v22 = *(float*)((char*)v3 + 90) - *(float*)((char*)v3 + 82);
|
||||
edge_manager = TEdgeManager::TEdgeManager(v20, *(float*)((char*)v3 + 82), *(float*)((char*)v3 + 86), v22, v21);
|
||||
}
|
||||
else
|
||||
{
|
||||
edge_manager = 0;
|
||||
}
|
||||
if (v44 > 0)
|
||||
{
|
||||
while (1)
|
||||
{
|
||||
v23 = (TLine*)operator new(0x55u);
|
||||
v24 = v23 ? TLine::TLine(v23, v3, (char*)v3 + 5, v35, v11[2], v11[3], *v11, v11[1]) : 0;
|
||||
if (v24)
|
||||
{
|
||||
(*(void(__thiscall * *)(TLine*))(*(DWORD*)v24 + 8))(v24);
|
||||
objlist_class::Add((TTableLayer*)((char*)v3 + 42), (void*)v24);
|
||||
}
|
||||
v46 = (struct TPinballTable*)((char*)v46 + 8);
|
||||
if (!--v44)
|
||||
break;
|
||||
v11 = (float*)v46;
|
||||
}
|
||||
}
|
||||
v25 = *(float*)((char*)v3 + 90);
|
||||
*(DWORD*)((char*)v3 + 118) = -1;
|
||||
v26 = v25;
|
||||
v27 = *(float*)((char*)v3 + 94);
|
||||
*(DWORD*)((char*)v3 + 114) = (char*)v3 + 5;
|
||||
v28 = v27;
|
||||
*(DWORD*)((char*)v3 + 122) = v3;
|
||||
edges_insert_square(
|
||||
*(float*)((char*)v3 + 86),
|
||||
*(float*)((char*)v3 + 82),
|
||||
v28,
|
||||
v26,
|
||||
0,
|
||||
(TTableLayer*)((char*)v3 + 114));
|
||||
return v3;
|
||||
}
|
||||
// 100276C: using guessed type void *TTableLayer::vftable;
|
||||
|
||||
//----- (0101A928) --------------------------------------------------------
|
||||
TZmapList *__thiscall TTableLayer::~TTableLayer(TTableLayer *this)
|
||||
TZmapList* __thiscall TTableLayer::~TTableLayer(TTableLayer* this)
|
||||
{
|
||||
TCollisionComponent *v1; // esi
|
||||
TCollisionComponent* v1; // esi
|
||||
|
||||
v1 = this;
|
||||
*(DWORD *)this = &TTableLayer::vftable;
|
||||
if ( edge_manager )
|
||||
TEdgeManager::destroy(edge_manager, 1);
|
||||
return TCollisionComponent::~TCollisionComponent(v1);
|
||||
v1 = this;
|
||||
*(DWORD*)this = &TTableLayer::vftable;
|
||||
if (edge_manager)
|
||||
TEdgeManager::destroy(edge_manager, 1);
|
||||
return TCollisionComponent::~TCollisionComponent(v1);
|
||||
}
|
||||
// 100276C: using guessed type void *TTableLayer::vftable;
|
||||
|
||||
//----- (0101AACD) --------------------------------------------------------
|
||||
TTableLayer *__thiscall TTableLayer::destroy(TTableLayer *this, char a2)
|
||||
TTableLayer* __thiscall TTableLayer::destroy(TTableLayer* this, char a2)
|
||||
{
|
||||
TTableLayer *v2; // esi
|
||||
TTableLayer* v2; // esi
|
||||
|
||||
v2 = this;
|
||||
TTableLayer::~TTableLayer(this);
|
||||
if ( a2 & 1 )
|
||||
operator delete((void *)v2);
|
||||
return v2;
|
||||
v2 = this;
|
||||
TTableLayer::~TTableLayer(this);
|
||||
if (a2 & 1)
|
||||
component_delete((void*)v2);
|
||||
return v2;
|
||||
}
|
||||
+353
-354
@@ -1,399 +1,398 @@
|
||||
#include "TTextbox.h"
|
||||
|
||||
//----- (01014092) --------------------------------------------------------
|
||||
TTextBox *__thiscall TTextBox::TTextBox(TTextBox *this, struct TPinballTable *a2, int a3)
|
||||
TTextBox* __thiscall TTextBox::TTextBox(TTextBox* this, struct TPinballTable* a2, int a3)
|
||||
{
|
||||
TTextBox *v3; // esi
|
||||
bool v4; // zf
|
||||
bool v5; // sf
|
||||
signed int *v6; // eax
|
||||
int v7; // ecx
|
||||
int v8; // ecx
|
||||
TTextBox* v3; // esi
|
||||
bool v4; // zf
|
||||
bool v5; // sf
|
||||
signed int* v6; // eax
|
||||
int v7; // ecx
|
||||
int v8; // ecx
|
||||
|
||||
v3 = this;
|
||||
TPinballComponent::TPinballComponent(this, a2, a3, 1);
|
||||
v4 = a3 == 0;
|
||||
v5 = a3 < 0;
|
||||
*(DWORD *)v3 = &TTextBox::vftable;
|
||||
*(DWORD *)((char *)v3 + 42) = 0;
|
||||
*(DWORD *)((char *)v3 + 46) = 0;
|
||||
*(DWORD *)((char *)v3 + 50) = 0;
|
||||
*(DWORD *)((char *)v3 + 54) = 0;
|
||||
*(DWORD *)((char *)v3 + 62) = render_background_bitmap;
|
||||
*(DWORD *)((char *)v3 + 66) = score_msg_fontp;
|
||||
*(DWORD *)((char *)v3 + 70) = 0;
|
||||
*(DWORD *)((char *)v3 + 74) = 0;
|
||||
*(DWORD *)((char *)v3 + 58) = 0;
|
||||
if ( !v5 && !v4 )
|
||||
{
|
||||
v6 = (signed int *)loader_query_iattribute(a3, 1500, &a2);
|
||||
v7 = *v6;
|
||||
++v6;
|
||||
*(DWORD *)((char *)v3 + 42) = v7;
|
||||
v8 = *v6;
|
||||
++v6;
|
||||
*(DWORD *)((char *)v3 + 46) = v8;
|
||||
*(DWORD *)((char *)v3 + 50) = *v6;
|
||||
*(DWORD *)((char *)v3 + 54) = v6[1];
|
||||
}
|
||||
return v3;
|
||||
v3 = this;
|
||||
TPinballComponent::TPinballComponent(this, a2, a3, 1);
|
||||
v4 = a3 == 0;
|
||||
v5 = a3 < 0;
|
||||
*(DWORD*)v3 = &TTextBox::vftable;
|
||||
*(DWORD*)((char*)v3 + 42) = 0;
|
||||
*(DWORD*)((char*)v3 + 46) = 0;
|
||||
*(DWORD*)((char*)v3 + 50) = 0;
|
||||
*(DWORD*)((char*)v3 + 54) = 0;
|
||||
*(DWORD*)((char*)v3 + 62) = render_background_bitmap;
|
||||
*(DWORD*)((char*)v3 + 66) = score_msg_fontp;
|
||||
*(DWORD*)((char*)v3 + 70) = 0;
|
||||
*(DWORD*)((char*)v3 + 74) = 0;
|
||||
*(DWORD*)((char*)v3 + 58) = 0;
|
||||
if (!v5 && !v4)
|
||||
{
|
||||
v6 = (signed int*)loader_query_iattribute(a3, 1500, &a2);
|
||||
v7 = *v6;
|
||||
++v6;
|
||||
*(DWORD*)((char*)v3 + 42) = v7;
|
||||
v8 = *v6;
|
||||
++v6;
|
||||
*(DWORD*)((char*)v3 + 46) = v8;
|
||||
*(DWORD*)((char*)v3 + 50) = *v6;
|
||||
*(DWORD*)((char*)v3 + 54) = v6[1];
|
||||
}
|
||||
return v3;
|
||||
}
|
||||
// 10023B4: using guessed type void *TTextBox::vftable;
|
||||
// 10253C4: using guessed type struct score_msg_font_type *score_msg_fontp;
|
||||
|
||||
//----- (01014143) --------------------------------------------------------
|
||||
void TTextBox::Clear(TTextBox *this, int a2)
|
||||
void TTextBox::Clear(TTextBox* this, int a2)
|
||||
{
|
||||
TTextBox *v2; // esi
|
||||
DWORD *v3; // edx
|
||||
int v4; // eax
|
||||
TTextBoxMessage *v5; // ecx
|
||||
int v6; // edi
|
||||
TTextBox* v2; // esi
|
||||
DWORD* v3; // edx
|
||||
int v4; // eax
|
||||
TTextBoxMessage* v5; // ecx
|
||||
int v6; // edi
|
||||
|
||||
v2 = this;
|
||||
v3 = *(DWORD **)((char *)this + 62);
|
||||
if ( v3 )
|
||||
gdrv_copy_bitmap(
|
||||
&vscreen,
|
||||
*(DWORD *)((char *)this + 50),
|
||||
*(DWORD *)((char *)this + 54),
|
||||
*(DWORD *)((char *)this + 42),
|
||||
*(DWORD *)((char *)this + 46),
|
||||
v3,
|
||||
*(DWORD *)((char *)this + 42),
|
||||
*(DWORD *)((char *)this + 46));
|
||||
else
|
||||
gdrv_fill_bitmap(
|
||||
a2,
|
||||
&vscreen,
|
||||
*(DWORD *)((char *)this + 50),
|
||||
*(DWORD *)((char *)this + 54),
|
||||
*(DWORD *)((char *)this + 42),
|
||||
*(DWORD *)((char *)this + 46),
|
||||
0);
|
||||
gdrv_blit(
|
||||
(int)&vscreen,
|
||||
*(DWORD *)((char *)v2 + 42),
|
||||
*(DWORD *)((char *)v2 + 46),
|
||||
*(DWORD *)((char *)v2 + 42) + xDest,
|
||||
*(DWORD *)((char *)v2 + 46) + yDest,
|
||||
*(DWORD *)((char *)v2 + 50),
|
||||
*(DWORD *)((char *)v2 + 54));
|
||||
v4 = *(DWORD *)((char *)v2 + 58);
|
||||
if ( v4 )
|
||||
{
|
||||
if ( v4 != -1 )
|
||||
timer_kill(*(DWORD *)((char *)v2 + 58));
|
||||
*(DWORD *)((char *)v2 + 58) = 0;
|
||||
}
|
||||
while ( *(DWORD *)((char *)v2 + 70) )
|
||||
{
|
||||
v5 = *(TTextBoxMessage **)((char *)v2 + 70);
|
||||
v6 = *(DWORD *)v5;
|
||||
if ( v5 )
|
||||
TTextBoxMessage::destroy(v5, 1);
|
||||
*(DWORD *)((char *)v2 + 70) = v6;
|
||||
}
|
||||
v2 = this;
|
||||
v3 = *(DWORD * *)((char*)this + 62);
|
||||
if (v3)
|
||||
gdrv_copy_bitmap(
|
||||
&vscreen,
|
||||
*(DWORD*)((char*)this + 50),
|
||||
*(DWORD*)((char*)this + 54),
|
||||
*(DWORD*)((char*)this + 42),
|
||||
*(DWORD*)((char*)this + 46),
|
||||
v3,
|
||||
*(DWORD*)((char*)this + 42),
|
||||
*(DWORD*)((char*)this + 46));
|
||||
else
|
||||
gdrv_fill_bitmap(
|
||||
a2,
|
||||
&vscreen,
|
||||
*(DWORD*)((char*)this + 50),
|
||||
*(DWORD*)((char*)this + 54),
|
||||
*(DWORD*)((char*)this + 42),
|
||||
*(DWORD*)((char*)this + 46),
|
||||
0);
|
||||
gdrv_blit(
|
||||
(int)& vscreen,
|
||||
*(DWORD*)((char*)v2 + 42),
|
||||
*(DWORD*)((char*)v2 + 46),
|
||||
*(DWORD*)((char*)v2 + 42) + xDest,
|
||||
*(DWORD*)((char*)v2 + 46) + yDest,
|
||||
*(DWORD*)((char*)v2 + 50),
|
||||
*(DWORD*)((char*)v2 + 54));
|
||||
v4 = *(DWORD*)((char*)v2 + 58);
|
||||
if (v4)
|
||||
{
|
||||
if (v4 != -1)
|
||||
timer_kill(*(DWORD*)((char*)v2 + 58));
|
||||
*(DWORD*)((char*)v2 + 58) = 0;
|
||||
}
|
||||
while (*(DWORD*)((char*)v2 + 70))
|
||||
{
|
||||
v5 = *(TTextBoxMessage * *)((char*)v2 + 70);
|
||||
v6 = *(DWORD*)v5;
|
||||
if (v5)
|
||||
TTextBoxMessage::destroy(v5, 1);
|
||||
*(DWORD*)((char*)v2 + 70) = v6;
|
||||
}
|
||||
}
|
||||
|
||||
//----- (010141E1) --------------------------------------------------------
|
||||
void TTextBox::TimerExpired(int a1, int a2, TTextBox *a3)
|
||||
void TTextBox::TimerExpired(int a1, int a2, TTextBox* a3)
|
||||
{
|
||||
TTextBoxMessage *v3; // ecx
|
||||
int v4; // edi
|
||||
TTextBoxMessage* v3; // ecx
|
||||
int v4; // edi
|
||||
|
||||
v3 = *(TTextBoxMessage **)((char *)a3 + 70);
|
||||
*(DWORD *)((char *)a3 + 58) = 0;
|
||||
if ( v3 )
|
||||
{
|
||||
v4 = *(DWORD *)v3;
|
||||
TTextBoxMessage::destroy(v3, 1);
|
||||
*(DWORD *)((char *)a3 + 70) = v4;
|
||||
TTextBox::Draw(a3, a1);
|
||||
control_handler(60, a3);
|
||||
}
|
||||
v3 = *(TTextBoxMessage * *)((char*)a3 + 70);
|
||||
*(DWORD*)((char*)a3 + 58) = 0;
|
||||
if (v3)
|
||||
{
|
||||
v4 = *(DWORD*)v3;
|
||||
TTextBoxMessage::destroy(v3, 1);
|
||||
*(DWORD*)((char*)a3 + 70) = v4;
|
||||
TTextBox::Draw(a3, a1);
|
||||
control_handler(60, a3);
|
||||
}
|
||||
}
|
||||
|
||||
//----- (0101421C) --------------------------------------------------------
|
||||
TZmapList *__thiscall TTextBox::~TTextBox(TTextBox *this)
|
||||
TZmapList* __thiscall TTextBox::~TTextBox(TTextBox* this)
|
||||
{
|
||||
TTextBox *v1; // esi
|
||||
int v2; // eax
|
||||
TTextBoxMessage *v3; // ecx
|
||||
int v4; // edi
|
||||
TTextBox* v1; // esi
|
||||
int v2; // eax
|
||||
TTextBoxMessage* v3; // ecx
|
||||
int v4; // edi
|
||||
|
||||
v1 = this;
|
||||
v2 = *(DWORD *)((char *)this + 58);
|
||||
*(DWORD *)this = &TTextBox::vftable;
|
||||
if ( v2 )
|
||||
{
|
||||
if ( v2 != -1 )
|
||||
timer_kill(v2);
|
||||
*(DWORD *)((char *)v1 + 58) = 0;
|
||||
}
|
||||
if ( *(DWORD *)((char *)v1 + 70) )
|
||||
{
|
||||
do
|
||||
{
|
||||
v3 = *(TTextBoxMessage **)((char *)v1 + 70);
|
||||
v4 = *(DWORD *)v3;
|
||||
if ( v3 )
|
||||
TTextBoxMessage::destroy(v3, 1);
|
||||
*(DWORD *)((char *)v1 + 70) = v4;
|
||||
}
|
||||
while ( v4 );
|
||||
}
|
||||
return TPinballComponent::~TPinballComponent(v1);
|
||||
v1 = this;
|
||||
v2 = *(DWORD*)((char*)this + 58);
|
||||
*(DWORD*)this = &TTextBox::vftable;
|
||||
if (v2)
|
||||
{
|
||||
if (v2 != -1)
|
||||
timer_kill(v2);
|
||||
*(DWORD*)((char*)v1 + 58) = 0;
|
||||
}
|
||||
if (*(DWORD*)((char*)v1 + 70))
|
||||
{
|
||||
do
|
||||
{
|
||||
v3 = *(TTextBoxMessage * *)((char*)v1 + 70);
|
||||
v4 = *(DWORD*)v3;
|
||||
if (v3)
|
||||
TTextBoxMessage::destroy(v3, 1);
|
||||
*(DWORD*)((char*)v1 + 70) = v4;
|
||||
} while (v4);
|
||||
}
|
||||
return TPinballComponent::~TPinballComponent(v1);
|
||||
}
|
||||
// 10023B4: using guessed type void *TTextBox::vftable;
|
||||
|
||||
//----- (01014269) --------------------------------------------------------
|
||||
void TTextBox::Draw(TTextBox *this, int a2)
|
||||
void TTextBox::Draw(TTextBox* this, int a2)
|
||||
{
|
||||
TTextBox *v2; // esi
|
||||
DWORD *v3; // edx
|
||||
float *v4; // edi
|
||||
int v5; // ebx
|
||||
double v6; // st7
|
||||
int v7; // eax
|
||||
float v8; // ST14_4
|
||||
DWORD *v9; // ecx
|
||||
_BYTE *v10; // ebx
|
||||
int v11; // edi
|
||||
int v12; // eax
|
||||
int v13; // eax
|
||||
char *v14; // edx
|
||||
char v15; // al
|
||||
int v16; // eax
|
||||
DWORD *v17; // edi
|
||||
int v18; // [esp-10h] [ebp-34h]
|
||||
int v19; // [esp-Ch] [ebp-30h]
|
||||
_BYTE *v20; // [esp+18h] [ebp-Ch]
|
||||
int v21; // [esp+18h] [ebp-Ch]
|
||||
int i; // [esp+1Ch] [ebp-8h]
|
||||
_BYTE *v23; // [esp+20h] [ebp-4h]
|
||||
TTextBox* v2; // esi
|
||||
DWORD* v3; // edx
|
||||
float* v4; // edi
|
||||
int v5; // ebx
|
||||
double v6; // st7
|
||||
int v7; // eax
|
||||
float v8; // ST14_4
|
||||
DWORD* v9; // ecx
|
||||
_BYTE* v10; // ebx
|
||||
int v11; // edi
|
||||
int v12; // eax
|
||||
int v13; // eax
|
||||
char* v14; // edx
|
||||
char v15; // al
|
||||
int v16; // eax
|
||||
DWORD* v17; // edi
|
||||
int v18; // [esp-10h] [ebp-34h]
|
||||
int v19; // [esp-Ch] [ebp-30h]
|
||||
_BYTE* v20; // [esp+18h] [ebp-Ch]
|
||||
int v21; // [esp+18h] [ebp-Ch]
|
||||
int i; // [esp+1Ch] [ebp-8h]
|
||||
_BYTE* v23; // [esp+20h] [ebp-4h]
|
||||
|
||||
v2 = this;
|
||||
v3 = *(DWORD **)((char *)this + 62);
|
||||
if ( v3 )
|
||||
gdrv_copy_bitmap(
|
||||
&vscreen,
|
||||
*(DWORD *)((char *)this + 50),
|
||||
*(DWORD *)((char *)this + 54),
|
||||
*(DWORD *)((char *)this + 42),
|
||||
*(DWORD *)((char *)this + 46),
|
||||
v3,
|
||||
*(DWORD *)((char *)this + 42),
|
||||
*(DWORD *)((char *)this + 46));
|
||||
else
|
||||
gdrv_fill_bitmap(
|
||||
a2,
|
||||
&vscreen,
|
||||
*(DWORD *)((char *)this + 50),
|
||||
*(DWORD *)((char *)this + 54),
|
||||
*(DWORD *)((char *)this + 42),
|
||||
*(DWORD *)((char *)this + 46),
|
||||
0);
|
||||
while ( *(DWORD *)((char *)v2 + 70) )
|
||||
{
|
||||
v4 = *(float **)((char *)v2 + 70);
|
||||
if ( v4[2] == -1.0 )
|
||||
{
|
||||
v5 = *(DWORD *)v4;
|
||||
if ( !*(DWORD *)v4 )
|
||||
{
|
||||
*(DWORD *)((char *)v2 + 58) = -1;
|
||||
LABEL_18:
|
||||
v9 = *(DWORD **)((char *)v2 + 66);
|
||||
if ( !v9 )
|
||||
{
|
||||
gdrv_blit(
|
||||
(int)&vscreen,
|
||||
*(DWORD *)((char *)v2 + 42),
|
||||
*(DWORD *)((char *)v2 + 46),
|
||||
*(DWORD *)((char *)v2 + 42) + xDest,
|
||||
*(DWORD *)((char *)v2 + 46) + yDest,
|
||||
*(DWORD *)((char *)v2 + 50),
|
||||
*(DWORD *)((char *)v2 + 54));
|
||||
grtext_draw_ttext_in_box(
|
||||
*(LPCSTR *)(*(DWORD *)((char *)v2 + 70) + 4),
|
||||
xDest + *(DWORD *)((char *)v2 + 42),
|
||||
yDest + *(DWORD *)((char *)v2 + 46),
|
||||
*(DWORD *)((char *)v2 + 50),
|
||||
*(DWORD *)((char *)v2 + 54),
|
||||
255);
|
||||
return;
|
||||
}
|
||||
v10 = *(_BYTE **)(*(DWORD *)((char *)v2 + 70) + 4);
|
||||
for ( i = *(DWORD *)((char *)v2 + 46); ; i += v9[1] )
|
||||
{
|
||||
v15 = *v10;
|
||||
if ( !*v10 || i + v9[1] > *(DWORD *)((char *)v2 + 46) + *(DWORD *)((char *)v2 + 54) )
|
||||
break;
|
||||
v11 = 0;
|
||||
v20 = 0;
|
||||
v23 = v10;
|
||||
while ( 1 )
|
||||
{
|
||||
v16 = v15 & 0x7F;
|
||||
if ( !v16 || v16 == 10 )
|
||||
break;
|
||||
v12 = v9[v16 + 2];
|
||||
if ( v12 )
|
||||
{
|
||||
v13 = *(DWORD *)(v12 + 12) + *v9 + v11;
|
||||
if ( v13 > *(DWORD *)((char *)v2 + 50) )
|
||||
{
|
||||
if ( v20 )
|
||||
v23 = v20;
|
||||
break;
|
||||
}
|
||||
if ( *v23 == 32 )
|
||||
v20 = v23;
|
||||
v14 = v23 + 1;
|
||||
v11 = v13;
|
||||
++v23;
|
||||
}
|
||||
else
|
||||
{
|
||||
v14 = v23;
|
||||
}
|
||||
v15 = *v14;
|
||||
}
|
||||
v21 = *(DWORD *)((char *)v2 + 42);
|
||||
while ( v10 < v23 )
|
||||
{
|
||||
v17 = (DWORD *)v9[(*v10++ & 0x7F) + 2];
|
||||
if ( v17 )
|
||||
{
|
||||
v19 = v17[4];
|
||||
v18 = v17[3];
|
||||
if ( render_background_bitmap )
|
||||
gdrv_copy_bitmap_w_transparency(&vscreen, v18, v19, v21, i, v17, 0, 0);
|
||||
else
|
||||
gdrv_copy_bitmap(&vscreen, v18, v19, v21, i, v17, 0, 0);
|
||||
v9 = *(DWORD **)((char *)v2 + 66);
|
||||
v21 += v17[3] + *v9;
|
||||
}
|
||||
}
|
||||
while ( (*v10 & 0x7F) == 32 )
|
||||
++v10;
|
||||
if ( (*v10 & 0x7F) == 10 )
|
||||
++v10;
|
||||
v9 = *(DWORD **)((char *)v2 + 66);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
v6 = TTextBoxMessage::TimeLeft((TTextBoxMessage *)*(DWORD *)((char *)v2 + 70));
|
||||
if ( v6 >= -2.0 )
|
||||
{
|
||||
if ( v6 >= 0.25 )
|
||||
{
|
||||
v8 = v6;
|
||||
v7 = timer_set(v8, (int)v2, (int)TTextBox::TimerExpired);
|
||||
}
|
||||
else
|
||||
{
|
||||
v7 = timer_set(0.25, (int)v2, (int)TTextBox::TimerExpired);
|
||||
}
|
||||
*(DWORD *)((char *)v2 + 58) = v7;
|
||||
goto LABEL_18;
|
||||
}
|
||||
v5 = *(DWORD *)v4;
|
||||
}
|
||||
if ( v4 )
|
||||
TTextBoxMessage::destroy((TTextBoxMessage *)v4, 1);
|
||||
*(DWORD *)((char *)v2 + 70) = v5;
|
||||
}
|
||||
gdrv_blit(
|
||||
(int)&vscreen,
|
||||
*(DWORD *)((char *)v2 + 42),
|
||||
*(DWORD *)((char *)v2 + 46),
|
||||
*(DWORD *)((char *)v2 + 42) + xDest,
|
||||
*(DWORD *)((char *)v2 + 46) + yDest,
|
||||
*(DWORD *)((char *)v2 + 50),
|
||||
*(DWORD *)((char *)v2 + 54));
|
||||
v2 = this;
|
||||
v3 = *(DWORD * *)((char*)this + 62);
|
||||
if (v3)
|
||||
gdrv_copy_bitmap(
|
||||
&vscreen,
|
||||
*(DWORD*)((char*)this + 50),
|
||||
*(DWORD*)((char*)this + 54),
|
||||
*(DWORD*)((char*)this + 42),
|
||||
*(DWORD*)((char*)this + 46),
|
||||
v3,
|
||||
*(DWORD*)((char*)this + 42),
|
||||
*(DWORD*)((char*)this + 46));
|
||||
else
|
||||
gdrv_fill_bitmap(
|
||||
a2,
|
||||
&vscreen,
|
||||
*(DWORD*)((char*)this + 50),
|
||||
*(DWORD*)((char*)this + 54),
|
||||
*(DWORD*)((char*)this + 42),
|
||||
*(DWORD*)((char*)this + 46),
|
||||
0);
|
||||
while (*(DWORD*)((char*)v2 + 70))
|
||||
{
|
||||
v4 = *(float**)((char*)v2 + 70);
|
||||
if (v4[2] == -1.0)
|
||||
{
|
||||
v5 = *(DWORD*)v4;
|
||||
if (!*(DWORD*)v4)
|
||||
{
|
||||
*(DWORD*)((char*)v2 + 58) = -1;
|
||||
LABEL_18:
|
||||
v9 = *(DWORD * *)((char*)v2 + 66);
|
||||
if (!v9)
|
||||
{
|
||||
gdrv_blit(
|
||||
(int)& vscreen,
|
||||
*(DWORD*)((char*)v2 + 42),
|
||||
*(DWORD*)((char*)v2 + 46),
|
||||
*(DWORD*)((char*)v2 + 42) + xDest,
|
||||
*(DWORD*)((char*)v2 + 46) + yDest,
|
||||
*(DWORD*)((char*)v2 + 50),
|
||||
*(DWORD*)((char*)v2 + 54));
|
||||
grtext_draw_ttext_in_box(
|
||||
*(LPCSTR*)(*(DWORD*)((char*)v2 + 70) + 4),
|
||||
xDest + *(DWORD*)((char*)v2 + 42),
|
||||
yDest + *(DWORD*)((char*)v2 + 46),
|
||||
*(DWORD*)((char*)v2 + 50),
|
||||
*(DWORD*)((char*)v2 + 54),
|
||||
255);
|
||||
return;
|
||||
}
|
||||
v10 = *(_BYTE * *)(*(DWORD*)((char*)v2 + 70) + 4);
|
||||
for (i = *(DWORD*)((char*)v2 + 46); ; i += v9[1])
|
||||
{
|
||||
v15 = *v10;
|
||||
if (!*v10 || i + v9[1] > * (DWORD*)((char*)v2 + 46) + *(DWORD*)((char*)v2 + 54))
|
||||
break;
|
||||
v11 = 0;
|
||||
v20 = 0;
|
||||
v23 = v10;
|
||||
while (1)
|
||||
{
|
||||
v16 = v15 & 0x7F;
|
||||
if (!v16 || v16 == 10)
|
||||
break;
|
||||
v12 = v9[v16 + 2];
|
||||
if (v12)
|
||||
{
|
||||
v13 = *(DWORD*)(v12 + 12) + *v9 + v11;
|
||||
if (v13 > * (DWORD*)((char*)v2 + 50))
|
||||
{
|
||||
if (v20)
|
||||
v23 = v20;
|
||||
break;
|
||||
}
|
||||
if (*v23 == 32)
|
||||
v20 = v23;
|
||||
v14 = v23 + 1;
|
||||
v11 = v13;
|
||||
++v23;
|
||||
}
|
||||
else
|
||||
{
|
||||
v14 = v23;
|
||||
}
|
||||
v15 = *v14;
|
||||
}
|
||||
v21 = *(DWORD*)((char*)v2 + 42);
|
||||
while (v10 < v23)
|
||||
{
|
||||
v17 = (DWORD*)v9[(*v10++ & 0x7F) + 2];
|
||||
if (v17)
|
||||
{
|
||||
v19 = v17[4];
|
||||
v18 = v17[3];
|
||||
if (render_background_bitmap)
|
||||
gdrv_copy_bitmap_w_transparency(&vscreen, v18, v19, v21, i, v17, 0, 0);
|
||||
else
|
||||
gdrv_copy_bitmap(&vscreen, v18, v19, v21, i, v17, 0, 0);
|
||||
v9 = *(DWORD * *)((char*)v2 + 66);
|
||||
v21 += v17[3] + *v9;
|
||||
}
|
||||
}
|
||||
while ((*v10 & 0x7F) == 32)
|
||||
++v10;
|
||||
if ((*v10 & 0x7F) == 10)
|
||||
++v10;
|
||||
v9 = *(DWORD * *)((char*)v2 + 66);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
v6 = TTextBoxMessage::TimeLeft((TTextBoxMessage*) * (DWORD*)((char*)v2 + 70));
|
||||
if (v6 >= -2.0)
|
||||
{
|
||||
if (v6 >= 0.25)
|
||||
{
|
||||
v8 = v6;
|
||||
v7 = timer_set(v8, (int)v2, (int)TTextBox::TimerExpired);
|
||||
}
|
||||
else
|
||||
{
|
||||
v7 = timer_set(0.25, (int)v2, (int)TTextBox::TimerExpired);
|
||||
}
|
||||
*(DWORD*)((char*)v2 + 58) = v7;
|
||||
goto LABEL_18;
|
||||
}
|
||||
v5 = *(DWORD*)v4;
|
||||
}
|
||||
if (v4)
|
||||
TTextBoxMessage::destroy((TTextBoxMessage*)v4, 1);
|
||||
*(DWORD*)((char*)v2 + 70) = v5;
|
||||
}
|
||||
gdrv_blit(
|
||||
(int)& vscreen,
|
||||
*(DWORD*)((char*)v2 + 42),
|
||||
*(DWORD*)((char*)v2 + 46),
|
||||
*(DWORD*)((char*)v2 + 42) + xDest,
|
||||
*(DWORD*)((char*)v2 + 46) + yDest,
|
||||
*(DWORD*)((char*)v2 + 50),
|
||||
*(DWORD*)((char*)v2 + 54));
|
||||
}
|
||||
|
||||
//----- (010144B7) --------------------------------------------------------
|
||||
void TTextBox::Display(TTextBox *this, int a2, char *a3, float a4)
|
||||
void TTextBox::Display(TTextBox* this, int a2, char* a3, float a4)
|
||||
{
|
||||
TTextBox *v4; // esi
|
||||
const char **v5; // ecx
|
||||
int v6; // ST08_4
|
||||
int v7; // eax
|
||||
int v8; // eax
|
||||
TTextBoxMessage *v9; // eax
|
||||
TTextBoxMessage *v10; // eax
|
||||
bool v11; // zf
|
||||
TTextBox* v4; // esi
|
||||
const char** v5; // ecx
|
||||
int v6; // ST08_4
|
||||
int v7; // eax
|
||||
int v8; // eax
|
||||
TTextBoxMessage* v9; // eax
|
||||
TTextBoxMessage* v10; // eax
|
||||
bool v11; // zf
|
||||
|
||||
v4 = this;
|
||||
if ( a3 )
|
||||
{
|
||||
if ( !*(DWORD *)((char *)this + 70)
|
||||
|| (v5 = *(const char ***)((char *)this + 74), v6 = a2, v7 = strcmp(a3, v5[1]), a2 = v6, v7) )
|
||||
{
|
||||
if ( *(DWORD *)((char *)v4 + 58) == -1 )
|
||||
TTextBox::Clear(v4, a2);
|
||||
v9 = (TTextBoxMessage *)operator new(0x10u);
|
||||
if ( v9 )
|
||||
v10 = TTextBoxMessage::TTextBoxMessage(v9, a3, a4);
|
||||
else
|
||||
v10 = 0;
|
||||
if ( v10 )
|
||||
{
|
||||
if ( *((DWORD *)v10 + 1) )
|
||||
{
|
||||
if ( *(DWORD *)((char *)v4 + 70) )
|
||||
**(DWORD **)((char *)v4 + 74) = v10;
|
||||
else
|
||||
*(DWORD *)((char *)v4 + 70) = v10;
|
||||
v11 = *(DWORD *)((char *)v4 + 58) == 0;
|
||||
*(DWORD *)((char *)v4 + 74) = v10;
|
||||
if ( v11 )
|
||||
TTextBox::Draw(v4, a2);
|
||||
}
|
||||
else
|
||||
{
|
||||
TTextBoxMessage::destroy(v10, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
TTextBoxMessage::Refresh((TTextBoxMessage *)v5, a4);
|
||||
if ( *(DWORD *)((char *)v4 + 74) == *(DWORD *)((char *)v4 + 70) )
|
||||
{
|
||||
v8 = *(DWORD *)((char *)v4 + 58);
|
||||
if ( v8 && v8 != -1 )
|
||||
timer_kill(*(DWORD *)((char *)v4 + 58));
|
||||
if ( a4 == -1.0 )
|
||||
*(DWORD *)((char *)v4 + 58) = -1;
|
||||
else
|
||||
*(DWORD *)((char *)v4 + 58) = timer_set(a4, (int)v4, (int)TTextBox::TimerExpired);
|
||||
}
|
||||
}
|
||||
}
|
||||
v4 = this;
|
||||
if (a3)
|
||||
{
|
||||
if (!*(DWORD*)((char*)this + 70)
|
||||
|| (v5 = *(const char***)((char*)this + 74), v6 = a2, v7 = strcmp(a3, v5[1]), a2 = v6, v7))
|
||||
{
|
||||
if (*(DWORD*)((char*)v4 + 58) == -1)
|
||||
TTextBox::Clear(v4, a2);
|
||||
v9 = (TTextBoxMessage*)operator new(0x10u);
|
||||
if (v9)
|
||||
v10 = TTextBoxMessage::TTextBoxMessage(v9, a3, a4);
|
||||
else
|
||||
v10 = 0;
|
||||
if (v10)
|
||||
{
|
||||
if (*((DWORD*)v10 + 1))
|
||||
{
|
||||
if (*(DWORD*)((char*)v4 + 70))
|
||||
** (DWORD * *)((char*)v4 + 74) = v10;
|
||||
else
|
||||
*(DWORD*)((char*)v4 + 70) = v10;
|
||||
v11 = *(DWORD*)((char*)v4 + 58) == 0;
|
||||
*(DWORD*)((char*)v4 + 74) = v10;
|
||||
if (v11)
|
||||
TTextBox::Draw(v4, a2);
|
||||
}
|
||||
else
|
||||
{
|
||||
TTextBoxMessage::destroy(v10, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
TTextBoxMessage::Refresh((TTextBoxMessage*)v5, a4);
|
||||
if (*(DWORD*)((char*)v4 + 74) == *(DWORD*)((char*)v4 + 70))
|
||||
{
|
||||
v8 = *(DWORD*)((char*)v4 + 58);
|
||||
if (v8 && v8 != -1)
|
||||
timer_kill(*(DWORD*)((char*)v4 + 58));
|
||||
if (a4 == -1.0)
|
||||
* (DWORD*)((char*)v4 + 58) = -1;
|
||||
else
|
||||
*(DWORD*)((char*)v4 + 58) = timer_set(a4, (int)v4, (int)TTextBox::TimerExpired);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//----- (010145CF) --------------------------------------------------------
|
||||
TTextBox *__thiscall TTextBox::destroy(TTextBox *this, char a2)
|
||||
TTextBox* __thiscall TTextBox::destroy(TTextBox* this, char a2)
|
||||
{
|
||||
TTextBox *v2; // esi
|
||||
TTextBox* v2; // esi
|
||||
|
||||
v2 = this;
|
||||
TTextBox::~TTextBox(this);
|
||||
if ( a2 & 1 )
|
||||
operator delete((void *)v2);
|
||||
return v2;
|
||||
v2 = this;
|
||||
TTextBox::~TTextBox(this);
|
||||
if (a2 & 1)
|
||||
component_delete((void*)v2);
|
||||
return v2;
|
||||
}
|
||||
|
||||
//----- (01019168) --------------------------------------------------------
|
||||
int TTextBox::Message(int a2, float a3)
|
||||
{
|
||||
return 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1,50 +1,50 @@
|
||||
#include "TTextBoxMessage.h"
|
||||
|
||||
//----- (01013AF1) --------------------------------------------------------
|
||||
TTextBoxMessage *__thiscall TTextBoxMessage::TTextBoxMessage(TTextBoxMessage *this, char *a2, float a3)
|
||||
TTextBoxMessage* __thiscall TTextBoxMessage::TTextBoxMessage(TTextBoxMessage* this, char* a2, float a3)
|
||||
{
|
||||
TTextBoxMessage *v3; // esi
|
||||
char *v4; // edx
|
||||
TTextBoxMessage* v3; // esi
|
||||
char* v4; // edx
|
||||
|
||||
v3 = this;
|
||||
*(DWORD *)this = 0;
|
||||
*((float *)this + 2) = a3;
|
||||
*((DWORD *)this + 3) = time_ticks - (unsigned __int64)(signed __int64)(a3 * -1000.0);
|
||||
if ( a2 )
|
||||
*((DWORD *)this + 1) = memoryallocate(strlen(a2) + 1);
|
||||
else
|
||||
*((DWORD *)this + 1) = 0;
|
||||
v4 = (char *)*((DWORD *)v3 + 1);
|
||||
if ( v4 )
|
||||
strcpy(v4, a2);
|
||||
return v3;
|
||||
v3 = this;
|
||||
*(DWORD*)this = 0;
|
||||
*((float*)this + 2) = a3;
|
||||
*((DWORD*)this + 3) = time_ticks - (unsigned __int64)(signed __int64)(a3 * -1000.0);
|
||||
if (a2)
|
||||
* ((DWORD*)this + 1) = memoryallocate(strlen(a2) + 1);
|
||||
else
|
||||
*((DWORD*)this + 1) = 0;
|
||||
v4 = (char*) * ((DWORD*)v3 + 1);
|
||||
if (v4)
|
||||
strcpy(v4, a2);
|
||||
return v3;
|
||||
}
|
||||
// 1024F84: using guessed type int time_ticks;
|
||||
|
||||
//----- (01013B60) --------------------------------------------------------
|
||||
double __thiscall TTextBoxMessage::TimeLeft(TTextBoxMessage *this)
|
||||
double __thiscall TTextBoxMessage::TimeLeft(TTextBoxMessage* this)
|
||||
{
|
||||
return (double)(*((DWORD *)this + 3) - time_ticks) * 0.001;
|
||||
return (double)(*((DWORD*)this + 3) - time_ticks) * 0.001;
|
||||
}
|
||||
// 1024F84: using guessed type int time_ticks;
|
||||
|
||||
//----- (01013B82) --------------------------------------------------------
|
||||
void __thiscall TTextBoxMessage::Refresh(TTextBoxMessage *this, float a2)
|
||||
void __thiscall TTextBoxMessage::Refresh(TTextBoxMessage* this, float a2)
|
||||
{
|
||||
*((float *)this + 2) = a2;
|
||||
*((DWORD *)this + 3) = time_ticks - (unsigned __int64)(signed __int64)(a2 * -1000.0);
|
||||
*((float*)this + 2) = a2;
|
||||
*((DWORD*)this + 3) = time_ticks - (unsigned __int64)(signed __int64)(a2 * -1000.0);
|
||||
}
|
||||
// 1024F84: using guessed type int time_ticks;
|
||||
|
||||
//----- (01014115) --------------------------------------------------------
|
||||
TTextBoxMessage *__thiscall TTextBoxMessage::destroy(TTextBoxMessage *this, char a2)
|
||||
TTextBoxMessage* __thiscall TTextBoxMessage::destroy(TTextBoxMessage* this, char a2)
|
||||
{
|
||||
TTextBoxMessage *v2; // esi
|
||||
TTextBoxMessage* v2; // esi
|
||||
|
||||
v2 = this;
|
||||
if ( *((DWORD *)this + 1) )
|
||||
memoryfree(*((DWORD *)this + 1));
|
||||
if ( a2 & 1 )
|
||||
operator delete((void *)v2);
|
||||
return v2;
|
||||
v2 = this;
|
||||
if (*((DWORD*)this + 1))
|
||||
memoryfree(*((DWORD*)this + 1));
|
||||
if (a2 & 1)
|
||||
component_delete((void*)v2);
|
||||
return v2;
|
||||
}
|
||||
@@ -1,22 +1,22 @@
|
||||
#include "TZmaplist.h"
|
||||
|
||||
//----- (010158F0) --------------------------------------------------------
|
||||
TZmapList *__thiscall TZmapList::TZmapList(TZmapList *this, int a2, int a3)
|
||||
TZmapList* __thiscall TZmapList::TZmapList(TZmapList* this, int a2, int a3)
|
||||
{
|
||||
TZmapList *v3; // esi
|
||||
TZmapList* v3; // esi
|
||||
|
||||
v3 = this;
|
||||
objlist_class::objlist_class(this, a2, a3);
|
||||
return v3;
|
||||
v3 = this;
|
||||
objlist_class::objlist_class(this, a2, a3);
|
||||
return v3;
|
||||
}
|
||||
//----- (01017E5C) --------------------------------------------------------
|
||||
TZmapList *__thiscall TZmapList::destroy(TZmapList *this, char a2)
|
||||
TZmapList* __thiscall TZmapList::destroy(TZmapList* this, char a2)
|
||||
{
|
||||
TZmapList *v2; // esi
|
||||
TZmapList* v2; // esi
|
||||
|
||||
v2 = this;
|
||||
objlist_destroy(*((DWORD *)this + 1));
|
||||
if ( a2 & 1 )
|
||||
operator delete((void *)v2);
|
||||
return v2;
|
||||
v2 = this;
|
||||
objlist_destroy(*((DWORD*)this + 1));
|
||||
if (a2 & 1)
|
||||
component_delete((void*)v2);
|
||||
return v2;
|
||||
}
|
||||
+728
-741
File diff suppressed because it is too large.
Load diff
@@ -20,7 +20,7 @@ void __thiscall TLightGroup::start_animation(TLightGroup* __hidden this); // idb
|
||||
void TLightGroup::NotifyTimerExpired(int, void*); // idb
|
||||
int __thiscall TLightGroup::Message(TLightGroup* this, int, float); // idb
|
||||
TLightGroup* __thiscall TLightGroup::TLightGroup(TLightGroup* this, struct TPinballTable* a2, int a3);
|
||||
TLightGroup* __thiscall TLightGroup::`vector deleting destructor`(TLightGroup *this, char a2);
|
||||
TLightGroup* __thiscall TLightGroup::destroy(TLightGroup *this, char a2);
|
||||
|
||||
void* TLightGroup::vftable = &TLightGroup::Message; // weak
|
||||
|
||||
|
||||
@@ -59,7 +59,7 @@ LONG fullscrn_shutdown();
|
||||
BOOL fullscrn_activate(int a1);
|
||||
int fullscrn_convert_mouse_pos(int a1);
|
||||
DWORD *fullscrn_getminmaxinfo(DWORD *a1);
|
||||
// HBRUSH sub_1003F10(LONG a1, LONG a2, int a3, int a4);
|
||||
HBRUSH sub_1003F10(LONG a1, LONG a2, int a3, int a4);
|
||||
void fullscrn_paint();
|
||||
signed int rectangle_clip(int *a1, int *a2, DWORD *a3);
|
||||
int enclosing_box(DWORD *a1, DWORD *a2, DWORD *a3);
|
||||
@@ -77,13 +77,13 @@ int gdrv_blit_sequence(int, int xSrc, int, int xDest, int yDest, int DestWidth,
|
||||
int gdrv_end_blit_sequence();
|
||||
HDC gdrv_blit(int a1, int xSrc, int a3, int xDest, int yDest, int DestWidth, int DestHeight);
|
||||
int gdrv_blat(int, int xDest, int yDest); // idb
|
||||
// int gdrv_fill_bitmap(int a1, DWORD *a2, unsigned int a3, int a4, int a5, int a6, char a7);
|
||||
int gdrv_fill_bitmap(int a1, DWORD *a2, unsigned int a3, int a4, int a5, int a6, char a7);
|
||||
char *gdrv_copy_bitmap(DWORD *a1, int a2, int a3, int a4, int a5, DWORD *a6, int a7, int a8);
|
||||
_BYTE *gdrv_copy_bitmap_w_transparency(DWORD *a1, int a2, int a3, int a4, int a5, DWORD *a6, int a7, int a8);
|
||||
int zdrv_pad(int a1);
|
||||
signed int zdrv_create_zmap(int a1, int a2, int a3);
|
||||
signed int zdrv_destroy_zmap(DWORD *a1);
|
||||
// int zdrv_fill(int a1, int a2, unsigned int a3, int a4, int a5, int a6, int a7);
|
||||
int zdrv_fill(int a1, int a2, unsigned int a3, int a4, int a5, int a6, int a7);
|
||||
WORD *zdrv_paint(int a1, int a2, DWORD *a3, int a4, int a5, int a6, int a7, int a8, DWORD *a9, int a10, int a11, int a12, int a13, int a14);
|
||||
unsigned int *zdrv_paint_flat(int a1, int a2, DWORD *a3, int a4, int a5, int a6, int a7, int a8, DWORD *a9, int a10, int a11, unsigned int a12);
|
||||
int high_score_clear_table(int a1);
|
||||
@@ -150,9 +150,9 @@ int make_path_name(LPSTR lpFilename, LPCSTR lpString2, DWORD nSize); // idb
|
||||
void help_introduction(int a1, int a2);
|
||||
BOOL center_in(HWND hWnd, HWND a2);
|
||||
INT a_dialog(HINSTANCE hInstance, HWND hWnd, int a3);
|
||||
// void winmain_pause(int a1);
|
||||
// void winmain_end_pause(int a1);
|
||||
// HCURSOR winmain_new_game(int a1);
|
||||
void winmain_pause(int a1);
|
||||
void winmain_end_pause(int a1);
|
||||
HCURSOR winmain_new_game(int a1);
|
||||
void winmain_memalloc_failure(); // idb
|
||||
HANDLE adjust_priority(int a1);
|
||||
LRESULT message_handler(HWND hWnd, UINT Msg, WPARAM wParam, int a4);
|
||||
@@ -200,14 +200,14 @@ struct TPinballComponent *make_component_link(struct component_tag *); // idb
|
||||
void control_make_links(struct TPinballTable *); // idb
|
||||
BOOL light_on(struct component_tag *a1);
|
||||
void table_control_handler(int); // idb
|
||||
// void table_set_replay(int a1, float a2);
|
||||
// void table_set_multiball(int a1);
|
||||
// void table_set_jackpot(int a1);
|
||||
// void table_set_bonus(int a1);
|
||||
// void table_set_flag_lights(int a1);
|
||||
// void table_set_bonus_hold(int a1);
|
||||
// void table_bump_ball_sink_lock(int a1);
|
||||
// void table_add_extra_ball(int a1, float a2);
|
||||
void table_set_replay(int a1, float a2);
|
||||
void table_set_multiball(int a1);
|
||||
void table_set_jackpot(int a1);
|
||||
void table_set_bonus(int a1);
|
||||
void table_set_flag_lights(int a1);
|
||||
void table_set_bonus_hold(int a1);
|
||||
void table_bump_ball_sink_lock(int a1);
|
||||
void table_add_extra_ball(int a1, float a2);
|
||||
int SpecialAddScore(int); // idb
|
||||
void AdvanceWormHoleDestination(int); // idb
|
||||
void FlipperRebounderControl1(int, struct TPinballComponent *); // idb
|
||||
@@ -218,42 +218,42 @@ void LeftKickerControl(int, struct TPinballComponent *); // idb
|
||||
void RightKickerControl(int, struct TPinballComponent *); // idb
|
||||
void LeftKickerGateControl(int, struct TPinballComponent *); // idb
|
||||
void RightKickerGateControl(int, struct TPinballComponent *); // idb
|
||||
// void DeploymentChuteToEscapeChuteOneWayControl(int a1, int a2, int a3, struct TPinballComponent *a4);
|
||||
void DeploymentChuteToEscapeChuteOneWayControl(int a1, int a2, int a3, struct TPinballComponent *a4);
|
||||
void DeploymentChuteToTableOneWayControl(int, struct TPinballComponent *); // idb
|
||||
void DrainBallBlockerControl(int, struct TPinballComponent *); // idb
|
||||
// void LaunchRampControl(int a1, int a2, struct TPinballComponent *a3);
|
||||
void LaunchRampControl(int a1, int a2, struct TPinballComponent *a3);
|
||||
void LaunchRampHoleControl(int, struct TPinballComponent *); // idb
|
||||
void SpaceWarpRolloverControl(int, struct TPinballComponent *); // idb
|
||||
// void ReentryLanesRolloverControl(int a1, int a2, int a3, int a4, struct TPinballComponent *a5);
|
||||
void ReentryLanesRolloverControl(int a1, int a2, int a3, int a4, struct TPinballComponent *a5);
|
||||
void BumperGroupControl(int, struct TPinballComponent *); // idb
|
||||
// void LaunchLanesRolloverControl(int a1, int a2, int a3, int a4, struct TPinballComponent *a5);
|
||||
// void OutLaneRolloverControl(int a1, int a2, int a3, struct TPinballComponent *a4);
|
||||
void LaunchLanesRolloverControl(int a1, int a2, int a3, int a4, struct TPinballComponent *a5);
|
||||
void OutLaneRolloverControl(int a1, int a2, int a3, struct TPinballComponent *a4);
|
||||
void ExtraBallLightControl(int, struct TPinballComponent *); // idb
|
||||
// void ReturnLaneRolloverControl(int a1, int a2, struct TPinballComponent *a3);
|
||||
// void BonusLaneRolloverControl(int a1, int a2, struct TPinballComponent *a3);
|
||||
// void FuelRollover1Control(int a1, int a2, struct TPinballComponent *a3);
|
||||
// void FuelRollover2Control(int a1, int a2, struct TPinballComponent *a3);
|
||||
// void FuelRollover3Control(int a1, int a2, struct TPinballComponent *a3);
|
||||
// void FuelRollover4Control(int a1, int a2, struct TPinballComponent *a3);
|
||||
// void FuelRollover5Control(int a1, int a2, struct TPinballComponent *a3);
|
||||
// void FuelRollover6Control(int a1, int a2, struct TPinballComponent *a3);
|
||||
void ReturnLaneRolloverControl(int a1, int a2, struct TPinballComponent *a3);
|
||||
void BonusLaneRolloverControl(int a1, int a2, struct TPinballComponent *a3);
|
||||
void FuelRollover1Control(int a1, int a2, struct TPinballComponent *a3);
|
||||
void FuelRollover2Control(int a1, int a2, struct TPinballComponent *a3);
|
||||
void FuelRollover3Control(int a1, int a2, struct TPinballComponent *a3);
|
||||
void FuelRollover4Control(int a1, int a2, struct TPinballComponent *a3);
|
||||
void FuelRollover5Control(int a1, int a2, struct TPinballComponent *a3);
|
||||
void FuelRollover6Control(int a1, int a2, struct TPinballComponent *a3);
|
||||
void HyperspaceLightGroupControl(int, struct TPinballComponent *); // idb
|
||||
// void WormHoleControl(int a1, int a2, int a3, int a4, struct TPinballComponent *a5);
|
||||
void WormHoleControl(int a1, int a2, int a3, int a4, struct TPinballComponent *a5);
|
||||
void LeftFlipperControl(int, struct TPinballComponent *); // idb
|
||||
void RightFlipperControl(int, struct TPinballComponent *); // idb
|
||||
void JackpotLightControl(int, struct TPinballComponent *); // idb
|
||||
void BonusLightControl(int, struct TPinballComponent *); // idb
|
||||
void BoosterTargetControl(int, struct TPinballComponent *); // idb
|
||||
void MedalLightGroupControl(int, struct TPinballComponent *); // idb
|
||||
// void MultiplierLightGroupControl(int a1, int a2, struct TPinballComponent *a3);
|
||||
// void FuelSpotTargetControl(int a1, int a2, struct TPinballComponent *a3);
|
||||
// void MissionSpotTargetControl(int a1, int a2, struct TPinballComponent *a3);
|
||||
void MultiplierLightGroupControl(int a1, int a2, struct TPinballComponent *a3);
|
||||
void FuelSpotTargetControl(int a1, int a2, struct TPinballComponent *a3);
|
||||
void MissionSpotTargetControl(int a1, int a2, struct TPinballComponent *a3);
|
||||
void LeftHazardSpotTargetControl(int, struct TPinballComponent *); // idb
|
||||
void RightHazardSpotTargetControl(int, struct TPinballComponent *); // idb
|
||||
// void WormHoleDestinationControl(int a1, int a2, struct TPinballComponent *a3);
|
||||
// void BlackHoleKickoutControl(int a1, int a2, struct TPinballComponent *a3);
|
||||
void WormHoleDestinationControl(int a1, int a2, struct TPinballComponent *a3);
|
||||
void BlackHoleKickoutControl(int a1, int a2, struct TPinballComponent *a3);
|
||||
void FlagControl(int, struct TPinballComponent *); // idb
|
||||
// void GravityWellKickoutControl(int a1, int a2, struct TPinballComponent *a3);
|
||||
void GravityWellKickoutControl(int a1, int a2, struct TPinballComponent *a3);
|
||||
void SkillShotGate1Control(int, struct TPinballComponent *); // idb
|
||||
void SkillShotGate2Control(int, struct TPinballComponent *); // idb
|
||||
void SkillShotGate3Control(int, struct TPinballComponent *); // idb
|
||||
@@ -262,48 +262,48 @@ void SkillShotGate5Control(int, struct TPinballComponent *); // idb
|
||||
void SkillShotGate6Control(int, struct TPinballComponent *); // idb
|
||||
void ShootAgainLightControl(int, struct TPinballComponent *); // idb
|
||||
void EscapeChuteSinkControl(int, struct TPinballComponent *); // idb
|
||||
// int cheat_bump_rank(int a1);
|
||||
// void pbctrl_bdoor_controller(int a1, int a2);
|
||||
int cheat_bump_rank(int a1);
|
||||
void pbctrl_bdoor_controller(int a1, int a2);
|
||||
int AddRankProgress(int); // idb
|
||||
// void WaitingDeploymentController(int a1, int a2, struct TPinballComponent *a3);
|
||||
void WaitingDeploymentController(int a1, int a2, struct TPinballComponent *a3);
|
||||
void SelectMissionController(int, struct TPinballComponent *); // idb
|
||||
// void PracticeMissionController(int a1, int a2, struct TPinballComponent *a3);
|
||||
// void LaunchTrainingController(int a1, int a2, struct TPinballComponent *a3);
|
||||
// void ReentryTrainingController(int a1, int a2, struct TPinballComponent *a3);
|
||||
// void ScienceMissionController(int a1, int a2, struct TPinballComponent *a3);
|
||||
// void StrayCometController(int a1, int a2, struct TPinballComponent *a3);
|
||||
// void SpaceRadiationController(int a1, int a2, struct TPinballComponent *a3);
|
||||
// void BlackHoleThreatController(int a1, int a2, struct TPinballComponent *a3);
|
||||
// void BugHuntController(int a1, int a2, struct TPinballComponent *a3);
|
||||
// void RescueMissionController(int a1, int a2, struct TPinballComponent *a3);
|
||||
// void AlienMenaceController(int a1, int a2, struct TPinballComponent *a3);
|
||||
// void AlienMenacePartTwoController(int a1, int a2, struct TPinballComponent *a3);
|
||||
// void SatelliteController(int a1, int a2, struct TPinballComponent *a3);
|
||||
// void ReconnaissanceController(int a1, int a2, struct TPinballComponent *a3);
|
||||
// void DoomsdayMachineController(int a1, int a2, struct TPinballComponent *a3);
|
||||
// void CosmicPlagueController(int a1, int a2, struct TPinballComponent *a3);
|
||||
// void CosmicPlaguePartTwoController(int a1, int a2, struct TPinballComponent *a3);
|
||||
// void SecretMissionYellowController(int a1, int a2, struct TPinballComponent *a3);
|
||||
// void SecretMissionRedController(int a1, int a2, struct TPinballComponent *a3);
|
||||
// void SecretMissionGreenController(int a1, int a2, struct TPinballComponent *a3);
|
||||
// void TimeWarpController(int a1, int a2, struct TPinballComponent *a3);
|
||||
// void TimeWarpPartTwoController(int a1, int a2, struct TPinballComponent *a3);
|
||||
// void MaelstromController(int a1, int a2, struct TPinballComponent *a3);
|
||||
// void MaelstromPartTwoController(int a1, int a2, struct TPinballComponent *a3);
|
||||
// void MaelstromPartThreeController(int a1, int a2, struct TPinballComponent *a3);
|
||||
// void MaelstromPartFourController(int a1, int a2, struct TPinballComponent *a3);
|
||||
// void MaelstromPartFiveController(int a1, int a2, struct TPinballComponent *a3);
|
||||
// void MaelstromPartSixController(int a1, int a2, struct TPinballComponent *a3);
|
||||
// void MaelstromPartSevenController(int a1, int a2, struct TPinballComponent *a3);
|
||||
// void MaelstromPartEightController(int a1, int a2, struct TPinballComponent *a3);
|
||||
void PracticeMissionController(int a1, int a2, struct TPinballComponent *a3);
|
||||
void LaunchTrainingController(int a1, int a2, struct TPinballComponent *a3);
|
||||
void ReentryTrainingController(int a1, int a2, struct TPinballComponent *a3);
|
||||
void ScienceMissionController(int a1, int a2, struct TPinballComponent *a3);
|
||||
void StrayCometController(int a1, int a2, struct TPinballComponent *a3);
|
||||
void SpaceRadiationController(int a1, int a2, struct TPinballComponent *a3);
|
||||
void BlackHoleThreatController(int a1, int a2, struct TPinballComponent *a3);
|
||||
void BugHuntController(int a1, int a2, struct TPinballComponent *a3);
|
||||
void RescueMissionController(int a1, int a2, struct TPinballComponent *a3);
|
||||
void AlienMenaceController(int a1, int a2, struct TPinballComponent *a3);
|
||||
void AlienMenacePartTwoController(int a1, int a2, struct TPinballComponent *a3);
|
||||
void SatelliteController(int a1, int a2, struct TPinballComponent *a3);
|
||||
void ReconnaissanceController(int a1, int a2, struct TPinballComponent *a3);
|
||||
void DoomsdayMachineController(int a1, int a2, struct TPinballComponent *a3);
|
||||
void CosmicPlagueController(int a1, int a2, struct TPinballComponent *a3);
|
||||
void CosmicPlaguePartTwoController(int a1, int a2, struct TPinballComponent *a3);
|
||||
void SecretMissionYellowController(int a1, int a2, struct TPinballComponent *a3);
|
||||
void SecretMissionRedController(int a1, int a2, struct TPinballComponent *a3);
|
||||
void SecretMissionGreenController(int a1, int a2, struct TPinballComponent *a3);
|
||||
void TimeWarpController(int a1, int a2, struct TPinballComponent *a3);
|
||||
void TimeWarpPartTwoController(int a1, int a2, struct TPinballComponent *a3);
|
||||
void MaelstromController(int a1, int a2, struct TPinballComponent *a3);
|
||||
void MaelstromPartTwoController(int a1, int a2, struct TPinballComponent *a3);
|
||||
void MaelstromPartThreeController(int a1, int a2, struct TPinballComponent *a3);
|
||||
void MaelstromPartFourController(int a1, int a2, struct TPinballComponent *a3);
|
||||
void MaelstromPartFiveController(int a1, int a2, struct TPinballComponent *a3);
|
||||
void MaelstromPartSixController(int a1, int a2, struct TPinballComponent *a3);
|
||||
void MaelstromPartSevenController(int a1, int a2, struct TPinballComponent *a3);
|
||||
void MaelstromPartEightController(int a1, int a2, struct TPinballComponent *a3);
|
||||
void GameoverController(int, struct TPinballComponent *); // idb
|
||||
void UnselectMissionController(int, struct TPinballComponent *); // idb
|
||||
void MissionControl(int, struct TPinballComponent *); // idb
|
||||
void control_handler(int, struct TPinballComponent *); // idb
|
||||
void HyperspaceKickOutControl(int, struct TPinballComponent *); // idb
|
||||
// void PlungerControl(int a1, int a2, struct TPinballComponent *a3);
|
||||
// void MedalTargetControl(int a1, int a2, int a3, int a4, struct TPinballComponent *a5);
|
||||
// void MultiplierTargetControl(int a1, int a2, int a3, int a4, struct TPinballComponent *a5);
|
||||
void PlungerControl(int a1, int a2, struct TPinballComponent *a3);
|
||||
void MedalTargetControl(int a1, int a2, int a3, int a4, struct TPinballComponent *a5);
|
||||
void MultiplierTargetControl(int a1, int a2, int a3, int a4, struct TPinballComponent *a5);
|
||||
void BallDrainControl(int, struct TPinballComponent *); // idb
|
||||
int objlist_add_object(DWORD *a1, int a2);
|
||||
signed int objlist_delete_object(int a1, int a2);
|
||||
@@ -331,8 +331,8 @@ DWORD *score_create(LPCSTR lpString, int a2);
|
||||
void *score_dup(const void *a1, int a2);
|
||||
void objlist_destroy(int a1);
|
||||
DWORD *score_set(DWORD *a1, int a2);
|
||||
// void *score_erase(int a1, DWORD *a2, int a3);
|
||||
// HDC score_update(int a1, int *a2);
|
||||
void *score_erase(int a1, DWORD *a2, int a3);
|
||||
HDC score_update(int a1, int *a2);
|
||||
signed int score_init();
|
||||
void score_unload_msg_font();
|
||||
HRSRC score_load_msg_font(LPCSTR lpName);
|
||||
@@ -343,9 +343,9 @@ int pb_end_game();
|
||||
signed int pb_chk_highscore();
|
||||
long double pb_collide(struct TEdgeSegment *a1, float a2, struct TBall *a3);
|
||||
void pb_timed_frame(float, float, int); // idb
|
||||
// signed int pb_frame(int a1, int a2);
|
||||
signed int pb_frame(int a1, int a2);
|
||||
void pb_firsttime_setup();
|
||||
// struct TPinballTable *pb_tilt_no_more(int a1);
|
||||
struct TPinballTable *pb_tilt_no_more(int a1);
|
||||
void pb_ballset(signed int a1, signed int a2);
|
||||
void nudge(float, float); // idb
|
||||
void un_nudge_left(int, void *); // idb
|
||||
@@ -362,10 +362,10 @@ DWORD *pb_window_size(DWORD *a1, DWORD *a2);
|
||||
int pb_init();
|
||||
int pb_uninit();
|
||||
int pb_loose_focus();
|
||||
// void pb_pause_continue(int a1);
|
||||
void pb_pause_continue(int a1);
|
||||
int pb_launch_ball();
|
||||
int pb_reset_table();
|
||||
// void pb_toggle_demo(int a1);
|
||||
void pb_toggle_demo(int a1);
|
||||
DWORD gdrv_get_focus(); // idb
|
||||
void throw_ball(struct TBall *, struct vector_type *, float, float, float); // idb
|
||||
void find_closest_edge(struct ramp_plane_type *, int, struct wall_point_type *, struct vector_type **, struct vector_type **); // idb
|
||||
@@ -451,9 +451,9 @@ int WaveMixConfigureInit(WORD *a1);
|
||||
int WaveMixInit();
|
||||
HLOCAL WaveMixCloseSession(HLOCAL hMem);
|
||||
int WinMainCRTStartup();
|
||||
// void __cdecl operator delete(void *); idb
|
||||
// void *__cdecl operator new(unsigned int); idb
|
||||
// int __cdecl _initterm(DWORD, DWORD); weak
|
||||
void component_delete(void *); idb
|
||||
void *component_create(unsigned int); idb
|
||||
int _initterm(DWORD, DWORD); weak
|
||||
unsigned int _setdefaultprecision();
|
||||
int check_expiration_date();
|
||||
// unsigned int __cdecl _controlfp(unsigned int NewValue, unsigned int Mask);
|
||||
|
||||
+3202
-3245
File diff suppressed because it is too large.
Load diff
Reference in new issue
Block a user