reformat files, remove function decorators

This commit is contained in:
Sydney Biscuit committed 2019-08-19 00:27:54 -07:00
1 parent 1b72ee48ac
commit d0beb8d2a7
25 files changed
+7179 -7265

No files matched your search

+168 -170
View File
@@ -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;
+42 -43
View File
@@ -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) --------------------------------------------------------
+34 -34
View File
@@ -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;
}
+1 -1
View File
@@ -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
+2 -2
View File
@@ -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
View File
@@ -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;
}
+1 -1
View File
@@ -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
+157 -158
View File
@@ -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;
}
+1 -1
View File
@@ -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
View File
@@ -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;
}
+31 -31
View File
@@ -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
+1 -1
View File
@@ -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
View File
@@ -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;
+1 -1
View File
@@ -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
View File
@@ -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
View File
@@ -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;
}
+28 -28
View File
@@ -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;
}
+12 -12
View File
@@ -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;
}
File diff suppressed because it is too large. Load diff
+1 -1
View File
@@ -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
+78 -78
View File
@@ -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
View File
File diff suppressed because it is too large. Load diff