clean up extra decorators
This commit is contained in:
1 parent
531e638179
commit
3183e73860
95 files changed
+4629
-4631
No files matched your search
+12
-12
@@ -1,7 +1,7 @@
|
||||
#include "pinball.h"
|
||||
|
||||
//----- (01012E51) --------------------------------------------------------
|
||||
int __stdcall objlist_add_object(_DWORD *a1, int a2)
|
||||
int objlist_add_object(DWORD *a1, int a2)
|
||||
{
|
||||
int v2; // ecx
|
||||
|
||||
@@ -13,17 +13,17 @@ return ++a1[1];
|
||||
}
|
||||
|
||||
//----- (01012E7A) --------------------------------------------------------
|
||||
signed int __stdcall objlist_delete_object(int a1, int a2)
|
||||
signed int objlist_delete_object(int a1, int a2)
|
||||
{
|
||||
int v2; // edx
|
||||
int v3; // ecx
|
||||
_DWORD *v4; // esi
|
||||
DWORD *v4; // esi
|
||||
|
||||
v2 = *(_DWORD *)(a1 + 4);
|
||||
v2 = *(DWORD *)(a1 + 4);
|
||||
v3 = v2 - 1;
|
||||
if ( v2 - 1 < 0 )
|
||||
return 0;
|
||||
v4 = (_DWORD *)(a1 + 4 * v3 + 8);
|
||||
v4 = (DWORD *)(a1 + 4 * v3 + 8);
|
||||
while ( *v4 != a2 )
|
||||
{
|
||||
--v3;
|
||||
@@ -31,17 +31,17 @@ while ( *v4 != a2 )
|
||||
if ( v3 < 0 )
|
||||
return 0;
|
||||
}
|
||||
*(_DWORD *)(a1 + 4 * v3 + 8) = *(_DWORD *)(a1 + 4 * v2 + 4);
|
||||
--*(_DWORD *)(a1 + 4);
|
||||
*(DWORD *)(a1 + 4 * v3 + 8) = *(DWORD *)(a1 + 4 * v2 + 4);
|
||||
--*(DWORD *)(a1 + 4);
|
||||
return 1;
|
||||
}
|
||||
|
||||
//----- (01012EBE) --------------------------------------------------------
|
||||
_DWORD *__stdcall objlist_new(int a1)
|
||||
DWORD *objlist_new(int a1)
|
||||
{
|
||||
_DWORD *result; // eax
|
||||
DWORD *result; // eax
|
||||
|
||||
result = (_DWORD *)memoryallocate(4 * a1 + 12);
|
||||
result = (DWORD *)memoryallocate(4 * a1 + 12);
|
||||
if ( result )
|
||||
{
|
||||
result[1] = 0;
|
||||
@@ -51,7 +51,7 @@ return result;
|
||||
}
|
||||
|
||||
//----- (01012EE8) --------------------------------------------------------
|
||||
int *__stdcall objlist_grow(int *a1, int a2)
|
||||
int *objlist_grow(int *a1, int a2)
|
||||
{
|
||||
int *v2; // esi
|
||||
int v3; // eax
|
||||
@@ -75,7 +75,7 @@ return v2;
|
||||
}
|
||||
|
||||
//----- (01013C6F) --------------------------------------------------------
|
||||
void __stdcall objlist_destroy(int a1)
|
||||
void objlist_destroy(int a1)
|
||||
{
|
||||
if ( a1 )
|
||||
memoryfree(a1);
|
||||
|
||||
@@ -10,15 +10,15 @@ objlist_class *__thiscall objlist_class::objlist_class(objlist_class *this, int
|
||||
objlist_class *v3; // esi
|
||||
|
||||
v3 = this;
|
||||
*((_DWORD *)this + 1) = objlist_new(a2);
|
||||
*(_DWORD *)v3 = a3;
|
||||
*((DWORD *)this + 1) = objlist_new(a2);
|
||||
*(DWORD *)v3 = a3;
|
||||
return v3;
|
||||
}
|
||||
|
||||
//----- (010098F7) --------------------------------------------------------
|
||||
void __thiscall objlist_class::Grow(objlist_class *this)
|
||||
{
|
||||
*((_DWORD *)this + 1) = objlist_grow(*((int **)this + 1), *(_DWORD *)this);
|
||||
*((DWORD *)this + 1) = objlist_grow(*((int **)this + 1), *(DWORD *)this);
|
||||
}
|
||||
|
||||
//----- (0100ACF3) --------------------------------------------------------
|
||||
@@ -27,7 +27,7 @@ void __thiscall objlist_class::Add(objlist_class *this, void *a2)
|
||||
objlist_class *v2; // esi
|
||||
|
||||
v2 = this;
|
||||
if ( *(_DWORD *)(*((_DWORD *)this + 1) + 4) == **((_DWORD **)this + 1) )
|
||||
if ( *(DWORD *)(*((DWORD *)this + 1) + 4) == **((DWORD **)this + 1) )
|
||||
objlist_class::Grow(this);
|
||||
objlist_add_object(*((_DWORD **)v2 + 1), (int)a2);
|
||||
objlist_add_object(*((DWORD **)v2 + 1), (int)a2);
|
||||
}
|
||||
+32
-32
@@ -10,7 +10,7 @@ bool __thiscall TBall::already_hit(TBall *this, struct TEdgeSegment *a2)
|
||||
int v2; // esi
|
||||
bool result; // al
|
||||
|
||||
v2 = *(_DWORD *)((char *)this + 134);
|
||||
v2 = *(DWORD *)((char *)this + 134);
|
||||
if ( !v2 )
|
||||
return 0;
|
||||
result = 1;
|
||||
@@ -34,7 +34,7 @@ if ( *(struct TEdgeSegment **)((char *)this + 130) != a2 )
|
||||
{
|
||||
result = 0;
|
||||
if ( v2 != 5 )
|
||||
result = v2 == (_DWORD)a2;
|
||||
result = v2 == (DWORD)a2;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
@@ -45,11 +45,11 @@ void __thiscall TBall::not_again(TBall *this, struct TEdgeSegment *a2)
|
||||
{
|
||||
signed int v2; // edx
|
||||
|
||||
v2 = *(_DWORD *)((char *)this + 134);
|
||||
v2 = *(DWORD *)((char *)this + 134);
|
||||
if ( v2 < 5 )
|
||||
{
|
||||
*(_DWORD *)((char *)this + 4 * v2 + 114) = a2;
|
||||
++*(_DWORD *)((char *)this + 134);
|
||||
*(DWORD *)((char *)this + 4 * v2 + 114) = a2;
|
||||
++*(DWORD *)((char *)this + 134);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -62,16 +62,16 @@ 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);
|
||||
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;
|
||||
*(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;
|
||||
*(DWORD *)((char *)v3 + 150) = 0;
|
||||
*(DWORD *)((char *)v3 + 110) = 1;
|
||||
*(float *)((char *)v3 + 58) = 0.0;
|
||||
*(_DWORD *)((char *)v3 + 50) = v4;
|
||||
*(DWORD *)((char *)v3 + 50) = v4;
|
||||
*(float *)((char *)v3 + 54) = 0.0;
|
||||
*(float *)((char *)v3 + 66) = 0.0;
|
||||
*(float *)((char *)v3 + 70) = 0.0;
|
||||
@@ -93,16 +93,16 @@ int v8; // [esp+14h] [ebp-8h]
|
||||
int v9; // [esp+18h] [ebp-4h]
|
||||
|
||||
v1 = this;
|
||||
if ( *(_DWORD *)((char *)this + 150) )
|
||||
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);
|
||||
v3 = *(DWORD *)(*(DWORD *)((char *)v1 + 34) + 4);
|
||||
v4 = 0;
|
||||
if ( *(_DWORD *)(v3 + 4) - 1 > 0 )
|
||||
if ( *(DWORD *)(v3 + 4) - 1 > 0 )
|
||||
{
|
||||
v5 = (float *)((char *)v1 + 162);
|
||||
do
|
||||
@@ -112,15 +112,15 @@ break;
|
||||
++v4;
|
||||
++v5;
|
||||
}
|
||||
while ( v4 < *(_DWORD *)(v3 + 4) - 1 );
|
||||
while ( v4 < *(DWORD *)(v3 + 4) - 1 );
|
||||
}
|
||||
v6 = *(_DWORD *)(v3 + 4 * v4 + 8);
|
||||
v8 += *(_DWORD *)(v6 + 12) / -2;
|
||||
v9 += *(_DWORD *)(v6 + 16) / -2;
|
||||
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);
|
||||
render_ball_set(*(DWORD *)((char *)v1 + 26), v6, v7, v8, v9);
|
||||
}
|
||||
// 1008ED8: using guessed type double __stdcall proj_z_distance(_DWORD);
|
||||
// 1008ED8: using guessed type double proj_z_distance(DWORD);
|
||||
|
||||
//----- (01019309) --------------------------------------------------------
|
||||
TBall *__thiscall TBall::TBall(TBall *this, struct TPinballTable *a2)
|
||||
@@ -144,14 +144,14 @@ 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;
|
||||
*(DWORD *)v2 = &TBall::vftable;
|
||||
*(float *)((char *)v2 + 70) = 0.0;
|
||||
*((_BYTE *)v2 + 5) = 1;
|
||||
*(_DWORD *)((char *)v2 + 106) = 0;
|
||||
*(_DWORD *)((char *)v2 + 134) = 0;
|
||||
*(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;
|
||||
*(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;
|
||||
@@ -170,9 +170,9 @@ else
|
||||
{
|
||||
v5 = 0;
|
||||
}
|
||||
*(_DWORD *)((char *)v2 + 34) = v5;
|
||||
*(DWORD *)((char *)v2 + 34) = v5;
|
||||
v6 = loader_query_handle("ball");
|
||||
*(_DWORD *)((char *)v2 + 154) = *(_DWORD *)loader_query_float_attribute(v6, 0, 500);
|
||||
*(DWORD *)((char *)v2 + 154) = *(DWORD *)loader_query_float_attribute(v6, 0, 500);
|
||||
v15 = loader_query_visual_states(v6);
|
||||
v17 = 0;
|
||||
if ( v15 > 0 )
|
||||
@@ -193,11 +193,11 @@ v17 = (struct TPinballTable *)((char *)v17 + 1);
|
||||
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);
|
||||
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 __stdcall proj_z_distance(_DWORD);
|
||||
// 1008ED8: using guessed type double proj_z_distance(DWORD);
|
||||
@@ -4,7 +4,7 @@
|
||||
int __thiscall TBlocker::Message(TBlocker *this, int a2, float a3)
|
||||
{
|
||||
TBlocker *v3; // esi
|
||||
_DWORD *v4; // ST04_4
|
||||
DWORD *v4; // ST04_4
|
||||
int v6; // ST08_4
|
||||
double v7; // st7
|
||||
float v8; // ST00_4
|
||||
@@ -14,25 +14,25 @@ switch ( a2 )
|
||||
{
|
||||
case 51:
|
||||
LABEL_7:
|
||||
if ( *(_DWORD *)((char *)this + 86) )
|
||||
if ( *(DWORD *)((char *)this + 86) )
|
||||
{
|
||||
timer_kill(*(_DWORD *)((char *)this + 86));
|
||||
*(_DWORD *)((char *)v3 + 86) = 0;
|
||||
timer_kill(*(DWORD *)((char *)this + 86));
|
||||
*(DWORD *)((char *)v3 + 86) = 0;
|
||||
}
|
||||
*(_DWORD *)((char *)v3 + 6) = 0;
|
||||
v4 = *(_DWORD **)((char *)v3 + 26);
|
||||
*(DWORD *)((char *)v3 + 6) = 0;
|
||||
v4 = *(DWORD **)((char *)v3 + 26);
|
||||
*((_BYTE *)v3 + 5) = 0;
|
||||
render_sprite_set_bitmap(v4, 0);
|
||||
if ( a2 == 51 )
|
||||
loader_play_sound(*(_DWORD *)((char *)v3 + 94));
|
||||
loader_play_sound(*(DWORD *)((char *)v3 + 94));
|
||||
return 0;
|
||||
case 52:
|
||||
v6 = *(_DWORD *)((char *)this + 90);
|
||||
v6 = *(DWORD *)((char *)this + 90);
|
||||
*((_BYTE *)this + 5) = 1;
|
||||
loader_play_sound(v6);
|
||||
render_sprite_set_bitmap(
|
||||
*(_DWORD **)((char *)v3 + 26),
|
||||
*(_DWORD *)(*(_DWORD *)(*(_DWORD *)((char *)v3 + 34) + 4) + 8));
|
||||
*(DWORD **)((char *)v3 + 26),
|
||||
*(DWORD *)(*(DWORD *)(*(DWORD *)((char *)v3 + 34) + 4) + 8));
|
||||
break;
|
||||
case 59:
|
||||
break;
|
||||
@@ -43,21 +43,21 @@ goto LABEL_7;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
if ( *(_DWORD *)((char *)v3 + 86) )
|
||||
timer_kill(*(_DWORD *)((char *)v3 + 86));
|
||||
if ( *(DWORD *)((char *)v3 + 86) )
|
||||
timer_kill(*(DWORD *)((char *)v3 + 86));
|
||||
if ( a3 <= 0.0 )
|
||||
v7 = 0.0;
|
||||
else
|
||||
v7 = a3;
|
||||
v8 = v7;
|
||||
*(_DWORD *)((char *)v3 + 86) = timer_set(v8, (int)v3, (int)TBlocker::TimerExpired);
|
||||
*(DWORD *)((char *)v3 + 86) = timer_set(v8, (int)v3, (int)TBlocker::TimerExpired);
|
||||
return 0;
|
||||
}
|
||||
|
||||
//----- (010162FF) --------------------------------------------------------
|
||||
void __stdcall TBlocker::TimerExpired(int a1, struct TPinballComponent *a2)
|
||||
void TBlocker::TimerExpired(int a1, struct TPinballComponent *a2)
|
||||
{
|
||||
*(_DWORD *)((char *)a2 + 86) = 0;
|
||||
*(DWORD *)((char *)a2 + 86) = 0;
|
||||
control_handler(60, a2);
|
||||
}
|
||||
|
||||
@@ -65,23 +65,23 @@ control_handler(60, a2);
|
||||
TBlocker *__thiscall TBlocker::TBlocker(TBlocker *this, struct TPinballTable *a2, int a3)
|
||||
{
|
||||
TBlocker *v3; // esi
|
||||
_DWORD *v4; // ST04_4
|
||||
DWORD *v4; // ST04_4
|
||||
char v6; // [esp+8h] [ebp-48h]
|
||||
int v7; // [esp+40h] [ebp-10h]
|
||||
int v8; // [esp+44h] [ebp-Ch]
|
||||
|
||||
v3 = this;
|
||||
TCollisionComponent::TCollisionComponent(this, a2, a3, 1);
|
||||
*(_DWORD *)v3 = &TBlocker::vftable;
|
||||
*(DWORD *)v3 = &TBlocker::vftable;
|
||||
loader_query_visual(a3, 0, &v6);
|
||||
v4 = *(_DWORD **)((char *)v3 + 26);
|
||||
*(_DWORD *)((char *)v3 + 90) = v7;
|
||||
*(_DWORD *)((char *)v3 + 94) = v8;
|
||||
*(_DWORD *)((char *)v3 + 78) = 55;
|
||||
*(_DWORD *)((char *)v3 + 82) = 5;
|
||||
*(_DWORD *)((char *)v3 + 66) = 1315859240;
|
||||
*(_DWORD *)((char *)v3 + 86) = 0;
|
||||
*(_DWORD *)((char *)v3 + 6) = 0;
|
||||
v4 = *(DWORD **)((char *)v3 + 26);
|
||||
*(DWORD *)((char *)v3 + 90) = v7;
|
||||
*(DWORD *)((char *)v3 + 94) = v8;
|
||||
*(DWORD *)((char *)v3 + 78) = 55;
|
||||
*(DWORD *)((char *)v3 + 82) = 5;
|
||||
*(DWORD *)((char *)v3 + 66) = 1315859240;
|
||||
*(DWORD *)((char *)v3 + 86) = 0;
|
||||
*(DWORD *)((char *)v3 + 6) = 0;
|
||||
*((_BYTE *)v3 + 5) = 0;
|
||||
render_sprite_set_bitmap(v4, 0);
|
||||
return v3;
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
/* 130 */
|
||||
struct TBlocker;
|
||||
|
||||
void __stdcall TBlocker::TimerExpired(int, struct TPinballComponent*); // idb
|
||||
void TBlocker::TimerExpired(int, struct TPinballComponent*); // idb
|
||||
int __thiscall TBlocker::Message(TBlocker* this, int, float); // idb
|
||||
TBlocker* __thiscall TBlocker::TBlocker(TBlocker* this, struct TPinballTable* a2, int a3);
|
||||
|
||||
|
||||
+54
-54
@@ -1,23 +1,23 @@
|
||||
#include "TBumper.h"
|
||||
|
||||
//----- (01015CB2) --------------------------------------------------------
|
||||
void __stdcall TBumper::TimerExpired(int a1, void *a2)
|
||||
void TBumper::TimerExpired(int a1, void *a2)
|
||||
{
|
||||
int v2; // edx
|
||||
int v3; // ecx
|
||||
int v4; // eax
|
||||
|
||||
v2 = *(_DWORD *)((char *)a2 + 30);
|
||||
v3 = 8 * *(_DWORD *)((char *)a2 + 78) + 8;
|
||||
v4 = *(_DWORD *)(v3 + *(_DWORD *)(*(_DWORD *)((char *)a2 + 34) + 4));
|
||||
*(_DWORD *)((char *)a2 + 82) = 0;
|
||||
v2 = *(DWORD *)((char *)a2 + 30);
|
||||
v3 = 8 * *(DWORD *)((char *)a2 + 78) + 8;
|
||||
v4 = *(DWORD *)(v3 + *(DWORD *)(*(DWORD *)((char *)a2 + 34) + 4));
|
||||
*(DWORD *)((char *)a2 + 82) = 0;
|
||||
render_sprite_set(
|
||||
*(_DWORD **)((char *)a2 + 26),
|
||||
*(DWORD **)((char *)a2 + 26),
|
||||
v4,
|
||||
*(_DWORD *)(*(_DWORD *)(*(_DWORD *)((char *)a2 + 38) + 4) + v3),
|
||||
*(_DWORD *)(v4 + 29) - *(_DWORD *)(v2 + 234),
|
||||
*(_DWORD *)(v4 + 33) - *(_DWORD *)(v2 + 238));
|
||||
*(_DWORD *)((char *)a2 + 66) = *(_DWORD *)((char *)a2 + 90);
|
||||
*(DWORD *)(*(DWORD *)(*(DWORD *)((char *)a2 + 38) + 4) + v3),
|
||||
*(DWORD *)(v4 + 29) - *(DWORD *)(v2 + 234),
|
||||
*(DWORD *)(v4 + 33) - *(DWORD *)(v2 + 238));
|
||||
*(DWORD *)((char *)a2 + 66) = *(DWORD *)((char *)a2 + 90);
|
||||
}
|
||||
|
||||
//----- (01015D0F) --------------------------------------------------------
|
||||
@@ -30,18 +30,18 @@ int v4; // ecx
|
||||
int v5; // eax
|
||||
|
||||
v1 = this;
|
||||
v2 = *(_DWORD *)((char *)this + 30);
|
||||
v3 = 2 * *(_DWORD *)((char *)this + 78) + 1;
|
||||
*(_DWORD *)((char *)this + 66) = 1315859240;
|
||||
v2 = *(DWORD *)((char *)this + 30);
|
||||
v3 = 2 * *(DWORD *)((char *)this + 78) + 1;
|
||||
*(DWORD *)((char *)this + 66) = 1315859240;
|
||||
v4 = 4 * v3 + 8;
|
||||
v5 = *(_DWORD *)(v4 + *(_DWORD *)(*(_DWORD *)((char *)v1 + 34) + 4));
|
||||
v5 = *(DWORD *)(v4 + *(DWORD *)(*(DWORD *)((char *)v1 + 34) + 4));
|
||||
render_sprite_set(
|
||||
*(_DWORD **)((char *)v1 + 26),
|
||||
*(_DWORD *)(v4 + *(_DWORD *)(*(_DWORD *)((char *)v1 + 34) + 4)),
|
||||
*(_DWORD *)(*(_DWORD *)(*(_DWORD *)((char *)v1 + 38) + 4) + v4),
|
||||
*(_DWORD *)(v5 + 29) - *(_DWORD *)(v2 + 234),
|
||||
*(_DWORD *)(v5 + 33) - *(_DWORD *)(v2 + 238));
|
||||
*(_DWORD *)((char *)v1 + 82) = timer_set(*(float *)((char *)v1 + 86), (int)v1, (int)TBumper::TimerExpired);
|
||||
*(DWORD **)((char *)v1 + 26),
|
||||
*(DWORD *)(v4 + *(DWORD *)(*(DWORD *)((char *)v1 + 34) + 4)),
|
||||
*(DWORD *)(*(DWORD *)(*(DWORD *)((char *)v1 + 38) + 4) + v4),
|
||||
*(DWORD *)(v5 + 29) - *(DWORD *)(v2 + 234),
|
||||
*(DWORD *)(v5 + 33) - *(DWORD *)(v2 + 238));
|
||||
*(DWORD *)((char *)v1 + 82) = timer_set(*(float *)((char *)v1 + 86), (int)v1, (int)TBumper::TimerExpired);
|
||||
}
|
||||
|
||||
//----- (01015D79) --------------------------------------------------------
|
||||
@@ -50,7 +50,7 @@ int __thiscall TBumper::Message(TBumper *this, int a2, float a3)
|
||||
TBumper *v3; // esi
|
||||
int v4; // eax
|
||||
int v5; // ecx
|
||||
_DWORD *v6; // eax
|
||||
DWORD *v6; // eax
|
||||
char *v7; // eax
|
||||
char *v8; // eax
|
||||
double v9; // st7
|
||||
@@ -65,8 +65,8 @@ if ( a2 != 11 )
|
||||
{
|
||||
if ( a2 == 12 )
|
||||
{
|
||||
v15 = *(_DWORD *)((char *)this + 78) + 1;
|
||||
v11 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)((char *)this + 34) + 4) + 4) - 1;
|
||||
v15 = *(DWORD *)((char *)this + 78) + 1;
|
||||
v11 = *(DWORD *)(*(DWORD *)(*(DWORD *)((char *)this + 34) + 4) + 4) - 1;
|
||||
if ( 2 * v15 > v11 )
|
||||
v15 = v11 / 2;
|
||||
}
|
||||
@@ -78,18 +78,18 @@ if ( a2 != 1020 )
|
||||
{
|
||||
if ( a2 == 1024 )
|
||||
{
|
||||
if ( *(_DWORD *)((char *)this + 82) )
|
||||
if ( *(DWORD *)((char *)this + 82) )
|
||||
{
|
||||
timer_kill(*(_DWORD *)((char *)this + 82));
|
||||
TBumper::TimerExpired(*(_DWORD *)((char *)v3 + 82), (void *)v3);
|
||||
timer_kill(*(DWORD *)((char *)this + 82));
|
||||
TBumper::TimerExpired(*(DWORD *)((char *)v3 + 82), (void *)v3);
|
||||
}
|
||||
v4 = *(_DWORD *)((char *)v3 + 30);
|
||||
*(_DWORD *)((char *)v3 + 78) = 0;
|
||||
*(_DWORD *)((char *)v3 + 6) = 0;
|
||||
v4 = *(DWORD *)((char *)v3 + 30);
|
||||
*(DWORD *)((char *)v3 + 78) = 0;
|
||||
*(DWORD *)((char *)v3 + 6) = 0;
|
||||
v5 = 0;
|
||||
if ( *(_DWORD *)(v4 + 214) > 0 )
|
||||
if ( *(DWORD *)(v4 + 214) > 0 )
|
||||
{
|
||||
v6 = (_DWORD *)((char *)v3 + 118);
|
||||
v6 = (DWORD *)((char *)v3 + 118);
|
||||
do
|
||||
{
|
||||
v6[1] = 0;
|
||||
@@ -97,25 +97,25 @@ v6[1] = 0;
|
||||
++v5;
|
||||
v6 += 2;
|
||||
}
|
||||
while ( v5 < *(_DWORD *)(*(_DWORD *)((char *)v3 + 30) + 214) );
|
||||
while ( v5 < *(DWORD *)(*(DWORD *)((char *)v3 + 30) + 214) );
|
||||
}
|
||||
TBumper::TimerExpired(0, (void *)v3);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
v7 = (char *)this + 8 * *(_DWORD *)(*(_DWORD *)((char *)this + 30) + 218);
|
||||
*(_DWORD *)(v7 + 122) = *(_DWORD *)((char *)this + 78);
|
||||
*(_DWORD *)(v7 + 118) = *(_DWORD *)((char *)this + 6);
|
||||
v7 = (char *)this + 8 * *(DWORD *)(*(DWORD *)((char *)this + 30) + 218);
|
||||
*(DWORD *)(v7 + 122) = *(DWORD *)((char *)this + 78);
|
||||
*(DWORD *)(v7 + 118) = *(DWORD *)((char *)this + 6);
|
||||
v8 = (char *)this + 8 * (unsigned __int64)(signed __int64)_floor(a3);
|
||||
*(_DWORD *)((char *)v3 + 78) = *(_DWORD *)(v8 + 122);
|
||||
*(DWORD *)((char *)v3 + 78) = *(DWORD *)(v8 + 122);
|
||||
v9 = (double)*(signed int *)((char *)v3 + 78);
|
||||
*(_DWORD *)((char *)v3 + 6) = *(_DWORD *)(v8 + 118);
|
||||
*(DWORD *)((char *)v3 + 6) = *(DWORD *)(v8 + 118);
|
||||
LABEL_16:
|
||||
v10 = v9;
|
||||
TBumper::Message(v3, 11, v10);
|
||||
return 0;
|
||||
}
|
||||
v15 = *(_DWORD *)((char *)this + 78) - 1;
|
||||
v15 = *(DWORD *)((char *)this + 78) - 1;
|
||||
if ( v15 < 0 )
|
||||
v15 = 0;
|
||||
}
|
||||
@@ -123,18 +123,18 @@ v9 = (double)v15;
|
||||
goto LABEL_16;
|
||||
}
|
||||
v12 = (signed __int64)_floor(a3);
|
||||
if ( 2 * v12 > *(_DWORD *)(*(_DWORD *)(*(_DWORD *)((char *)v3 + 34) + 4) + 4) - 1 )
|
||||
v12 = (*(_DWORD *)(*(_DWORD *)(*(_DWORD *)((char *)v3 + 34) + 4) + 4) - 1) / 2;
|
||||
if ( 2 * v12 > *(DWORD *)(*(DWORD *)(*(DWORD *)((char *)v3 + 34) + 4) + 4) - 1 )
|
||||
v12 = (*(DWORD *)(*(DWORD *)(*(DWORD *)((char *)v3 + 34) + 4) + 4) - 1) / 2;
|
||||
if ( v12 < 0 )
|
||||
v12 = 0;
|
||||
v13 = *(_DWORD *)((char *)v3 + 78);
|
||||
v13 = *(DWORD *)((char *)v3 + 78);
|
||||
if ( v12 != v13 )
|
||||
{
|
||||
if ( v12 >= v13 )
|
||||
loader_play_sound(*(_DWORD *)((char *)v3 + 94));
|
||||
if ( v12 < *(_DWORD *)((char *)v3 + 78) )
|
||||
loader_play_sound(*(_DWORD *)((char *)v3 + 98));
|
||||
*(_DWORD *)((char *)v3 + 78) = v12;
|
||||
loader_play_sound(*(DWORD *)((char *)v3 + 94));
|
||||
if ( v12 < *(DWORD *)((char *)v3 + 78) )
|
||||
loader_play_sound(*(DWORD *)((char *)v3 + 98));
|
||||
*(DWORD *)((char *)v3 + 78) = v12;
|
||||
TBumper::Fire(v3);
|
||||
control_handler(11, v3);
|
||||
}
|
||||
@@ -149,7 +149,7 @@ int result; // eax
|
||||
if ( a2 >= 4 )
|
||||
result = 0;
|
||||
else
|
||||
result = *(_DWORD *)((char *)this + 4 * a2 + 102);
|
||||
result = *(DWORD *)((char *)this + 4 * a2 + 102);
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -157,7 +157,7 @@ return result;
|
||||
void __thiscall TBumper::put_scoring(TBumper *this, int a2, int a3)
|
||||
{
|
||||
if ( a2 < 4 )
|
||||
*(_DWORD *)((char *)this + 4 * a2 + 102) = a3;
|
||||
*(DWORD *)((char *)this + 4 * a2 + 102) = a3;
|
||||
}
|
||||
|
||||
//----- (0101811D) --------------------------------------------------------
|
||||
@@ -183,14 +183,14 @@ int v7; // [esp+40h] [ebp-Ch]
|
||||
|
||||
v3 = this;
|
||||
TCollisionComponent::TCollisionComponent(this, a2, a3, 1);
|
||||
*(_DWORD *)((char *)v3 + 78) = 0;
|
||||
*(_DWORD *)((char *)v3 + 82) = 0;
|
||||
*(_DWORD *)v3 = &TBumper::vftable;
|
||||
*(_DWORD *)((char *)v3 + 86) = *(_DWORD *)loader_query_float_attribute(a3, 0, 407);
|
||||
*(DWORD *)((char *)v3 + 78) = 0;
|
||||
*(DWORD *)((char *)v3 + 82) = 0;
|
||||
*(DWORD *)v3 = &TBumper::vftable;
|
||||
*(DWORD *)((char *)v3 + 86) = *(DWORD *)loader_query_float_attribute(a3, 0, 407);
|
||||
loader_query_visual(a3, 0, &v5);
|
||||
*(_DWORD *)((char *)v3 + 94) = v6;
|
||||
*(_DWORD *)((char *)v3 + 98) = v7;
|
||||
*(_DWORD *)((char *)v3 + 90) = *(_DWORD *)((char *)v3 + 66);
|
||||
*(DWORD *)((char *)v3 + 94) = v6;
|
||||
*(DWORD *)((char *)v3 + 98) = v7;
|
||||
*(DWORD *)((char *)v3 + 90) = *(DWORD *)((char *)v3 + 66);
|
||||
return v3;
|
||||
}
|
||||
// 100256C: using guessed type void *TBumper::vftable;
|
||||
@@ -10,7 +10,7 @@
|
||||
/* 104 */
|
||||
struct TBumper;
|
||||
|
||||
void __stdcall TBumper::TimerExpired(int, void*); // idb
|
||||
void TBumper::TimerExpired(int, void*); // idb
|
||||
void __thiscall TBumper::Fire(TBumper* this); // idb
|
||||
int __thiscall TBumper::Message(TBumper* this, int, float); // idb
|
||||
int __thiscall TBumper::get_scoring(TBumper* this, int); // idb
|
||||
|
||||
@@ -7,11 +7,11 @@ TCircle *v6; // ebx
|
||||
|
||||
v6 = this;
|
||||
TEdgeSegment::TEdgeSegment(this, a2, a3, a4);
|
||||
*(_DWORD *)v6 = &TCircle::vftable;
|
||||
*(DWORD *)v6 = &TCircle::vftable;
|
||||
*(float *)((char *)v6 + 33) = a6 * a6;
|
||||
*(_DWORD *)((char *)v6 + 21) = *(_DWORD *)a5;
|
||||
*(_DWORD *)((char *)v6 + 25) = *((_DWORD *)a5 + 1);
|
||||
*(_DWORD *)((char *)v6 + 29) = *((_DWORD *)a5 + 2);
|
||||
*(DWORD *)((char *)v6 + 21) = *(DWORD *)a5;
|
||||
*(DWORD *)((char *)v6 + 25) = *((DWORD *)a5 + 1);
|
||||
*(DWORD *)((char *)v6 + 29) = *((DWORD *)a5 + 2);
|
||||
return v6;
|
||||
}
|
||||
// 1002454: using guessed type void *TCircle::vftable;
|
||||
@@ -44,7 +44,7 @@ v8 = a3 * *(float *)((char *)a2 + 58) + *(float *)((char *)a2 + 46);
|
||||
v5 = v7 - *(float *)((char *)this + 21);
|
||||
v6 = v8 - *(float *)((char *)this + 25);
|
||||
normalize_2d(&v5);
|
||||
(*(void (__stdcall **)(int, float *, float *, _DWORD, TCircle *))(**((_DWORD **)v3 + 1) + 20))(
|
||||
(*(void (**)(int, float *, float *, DWORD, TCircle *))(**((DWORD **)v3 + 1) + 20))(
|
||||
v4,
|
||||
&v7,
|
||||
&v5,
|
||||
|
||||
@@ -9,14 +9,14 @@ int v3; // esi
|
||||
int v4; // ebx
|
||||
|
||||
v1 = this;
|
||||
v2 = *(_DWORD *)(*(_DWORD *)((char *)this + 46) + 4) - 1;
|
||||
v2 = *(DWORD *)(*(DWORD *)((char *)this + 46) + 4) - 1;
|
||||
if ( v2 >= 0 )
|
||||
{
|
||||
v3 = 4 * v2 + 8;
|
||||
v4 = *(_DWORD *)(*(_DWORD *)((char *)this + 46) + 4);
|
||||
v4 = *(DWORD *)(*(DWORD *)((char *)this + 46) + 4);
|
||||
do
|
||||
{
|
||||
(*(void (**)(void))(**(_DWORD **)(v3 + *(_DWORD *)((char *)v1 + 46)) + 4))();
|
||||
(*(void (**)(void))(**(DWORD **)(v3 + *(DWORD *)((char *)v1 + 46)) + 4))();
|
||||
v3 -= 4;
|
||||
--v4;
|
||||
}
|
||||
@@ -25,7 +25,7 @@ while ( v4 );
|
||||
}
|
||||
|
||||
//----- (01017883) --------------------------------------------------------
|
||||
double __stdcall basic_collision(struct TBall *a1, struct vector_type *a2, struct vector_type *a3, float a4, float a5, float a6, float a7)
|
||||
double basic_collision(struct TBall *a1, struct vector_type *a2, struct vector_type *a3, float a4, float a5, float a6, float a7)
|
||||
{
|
||||
int v7; // ST30_4
|
||||
float *v8; // esi
|
||||
@@ -45,10 +45,10 @@ 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);
|
||||
*(DWORD *)((char *)a1 + 46) = *((DWORD *)a2 + 1);
|
||||
v21 = *(float *)a3;
|
||||
v22 = *((float *)a3 + 1);
|
||||
v7 = *((_DWORD *)a3 + 2);
|
||||
v7 = *((DWORD *)a3 + 2);
|
||||
v8 = (float *)((char *)a1 + 54);
|
||||
v9 = -(v22 * *(float *)((char *)a1 + 58) + *(float *)a3 * *(float *)((char *)a1 + 54));
|
||||
v23 = v9;
|
||||
@@ -81,7 +81,7 @@ return v24;
|
||||
}
|
||||
|
||||
//----- (010179A9) --------------------------------------------------------
|
||||
struct TEdgeSegment *__stdcall install_wall(float *a1, struct TCollisionComponent *a2, char *a3, unsigned int a4, float a5, void *a6)
|
||||
struct TEdgeSegment *install_wall(float *a1, struct TCollisionComponent *a2, char *a3, unsigned int a4, float a5, void *a6)
|
||||
{
|
||||
signed __int64 v6; // rax
|
||||
float *v7; // esi
|
||||
@@ -130,7 +130,7 @@ v7 = a1 + 1;
|
||||
v8 = a1 + 1;
|
||||
v45 = v6;
|
||||
v44 = a1 + 1;
|
||||
if ( !(_DWORD)v6 )
|
||||
if ( !(DWORD)v6 )
|
||||
{
|
||||
v41 = *(int *)v7;
|
||||
v42 = a1[2];
|
||||
@@ -148,19 +148,19 @@ v12 = 0;
|
||||
v46 = v12;
|
||||
if ( !v12 )
|
||||
goto LABEL_14;
|
||||
*(_DWORD *)((char *)v12 + 13) = a6;
|
||||
*(DWORD *)((char *)v12 + 13) = a6;
|
||||
LABEL_13:
|
||||
(*(void (__thiscall **)(TCircle *))(*(_DWORD *)v12 + 8))(v12);
|
||||
(*(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 )
|
||||
if ( (DWORD)v6 == 1 )
|
||||
{
|
||||
v37 = *(_DWORD *)v7;
|
||||
v38 = *((_DWORD *)a1 + 2);
|
||||
v39 = *((_DWORD *)a1 + 3);
|
||||
v40 = *((_DWORD *)a1 + 4);
|
||||
v37 = *(DWORD *)v7;
|
||||
v38 = *((DWORD *)a1 + 2);
|
||||
v39 = *((DWORD *)a1 + 3);
|
||||
v40 = *((DWORD *)a1 + 4);
|
||||
v13 = (TLine *)operator new(0x55u);
|
||||
v10 = a2;
|
||||
if ( v13 )
|
||||
@@ -170,19 +170,19 @@ v12 = 0;
|
||||
v46 = v12;
|
||||
if ( v12 )
|
||||
{
|
||||
*(_DWORD *)((char *)v12 + 13) = a6;
|
||||
*(DWORD *)((char *)v12 + 13) = a6;
|
||||
TLine::Offset(v12, a5);
|
||||
goto LABEL_13;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
*((float *)&v6 + 1) = v7[2 * (_DWORD)v6 - 2];
|
||||
*((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];
|
||||
v35 = v7[2 * (DWORD)v6 - 1];
|
||||
if ( (signed int)v6 > 0 )
|
||||
{
|
||||
while ( 1 )
|
||||
@@ -225,17 +225,17 @@ v20 = 0;
|
||||
}
|
||||
if ( v20 )
|
||||
{
|
||||
*(_DWORD *)((char *)v20 + 13) = a6;
|
||||
(*(void (__thiscall **)(TCircle *))(*(_DWORD *)v20 + 8))(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);
|
||||
v37 = *(DWORD *)v7;
|
||||
v38 = *((DWORD *)v7 + 1);
|
||||
v21 = (int)(v7 + 2);
|
||||
v39 = *((_DWORD *)v7 + 2);
|
||||
v40 = *((_DWORD *)v7 + 3);
|
||||
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);
|
||||
@@ -244,9 +244,9 @@ v23 = 0;
|
||||
v46 = v23;
|
||||
if ( v23 )
|
||||
{
|
||||
*(_DWORD *)((char *)v23 + 13) = a6;
|
||||
*(DWORD *)((char *)v23 + 13) = a6;
|
||||
TLine::Offset(v23, a5);
|
||||
(*(void (__thiscall **)(TLine *))(*(_DWORD *)v23 + 8))(v23);
|
||||
(*(void (__thiscall **)(TLine *))(*(DWORD *)v23 + 8))(v23);
|
||||
objlist_class::Add((struct TCollisionComponent *)((char *)a2 + 42), (void *)v23);
|
||||
}
|
||||
v47 = (float *)((char *)v47 + 1);
|
||||
@@ -272,7 +272,7 @@ double v7; // st7
|
||||
int v8; // esi
|
||||
|
||||
v6 = this;
|
||||
if ( *(_DWORD *)(*(_DWORD *)((char *)this + 30) + 370) )
|
||||
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;
|
||||
@@ -289,11 +289,11 @@ if ( v7 <= *(float *)((char *)v6 + 66) )
|
||||
{
|
||||
if ( v7 <= 0.2 )
|
||||
return;
|
||||
v8 = *(_DWORD *)((char *)v6 + 70);
|
||||
v8 = *(DWORD *)((char *)v6 + 70);
|
||||
}
|
||||
else
|
||||
{
|
||||
v8 = *(_DWORD *)((char *)v6 + 74);
|
||||
v8 = *(DWORD *)((char *)v6 + 74);
|
||||
}
|
||||
if ( v8 )
|
||||
loader_play_sound(v8);
|
||||
@@ -308,7 +308,7 @@ int v6; // esi
|
||||
int v8; // esi
|
||||
|
||||
v4 = this;
|
||||
if ( *(_DWORD *)(*(_DWORD *)((char *)this + 30) + 370) )
|
||||
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;
|
||||
@@ -325,13 +325,13 @@ if ( v5 <= *(float *)((char *)v4 + 66) )
|
||||
{
|
||||
if ( v5 > 0.2 )
|
||||
{
|
||||
v8 = *(_DWORD *)((char *)v4 + 70);
|
||||
v8 = *(DWORD *)((char *)v4 + 70);
|
||||
if ( v8 )
|
||||
loader_play_sound(v8);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
v6 = *(_DWORD *)((char *)v4 + 74);
|
||||
v6 = *(DWORD *)((char *)v4 + 74);
|
||||
if ( v6 )
|
||||
loader_play_sound(v6);
|
||||
return 1;
|
||||
@@ -355,9 +355,9 @@ unsigned int v16; // [esp+48h] [ebp-14h]
|
||||
|
||||
v4 = this;
|
||||
TPinballComponent::TPinballComponent(this, a2, a3, 1);
|
||||
*(_DWORD *)v4 = &TCollisionComponent::vftable;
|
||||
*(DWORD *)v4 = &TCollisionComponent::vftable;
|
||||
objlist_class::objlist_class((TCollisionComponent *)((char *)v4 + 42), 4, 4);
|
||||
v5 = *(_DWORD *)((char *)v4 + 10) == 0;
|
||||
v5 = *(DWORD *)((char *)v4 + 10) == 0;
|
||||
*((_BYTE *)v4 + 5) = 1;
|
||||
if ( !v5 )
|
||||
*((_BYTE *)v4 + 4) = 1;
|
||||
@@ -376,13 +376,13 @@ 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;
|
||||
*(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;
|
||||
@@ -396,20 +396,20 @@ int v3; // eax
|
||||
void *v4; // edi
|
||||
|
||||
v1 = this;
|
||||
v2 = *(_DWORD *)((char *)this + 46);
|
||||
*(_DWORD *)this = &TCollisionComponent::vftable;
|
||||
if ( *(_DWORD *)(v2 + 4) )
|
||||
v2 = *(DWORD *)((char *)this + 46);
|
||||
*(DWORD *)this = &TCollisionComponent::vftable;
|
||||
if ( *(DWORD *)(v2 + 4) )
|
||||
{
|
||||
do
|
||||
{
|
||||
v3 = *(_DWORD *)((char *)v1 + 46);
|
||||
v3 = *(DWORD *)((char *)v1 + 46);
|
||||
v4 = *(void **)(v3 + 8);
|
||||
objlist_delete_object(*(_DWORD *)((char *)v1 + 46), *(_DWORD *)(v3 + 8));
|
||||
objlist_delete_object(*(DWORD *)((char *)v1 + 46), *(DWORD *)(v3 + 8));
|
||||
operator delete(v4);
|
||||
}
|
||||
while ( *(_DWORD *)(*(_DWORD *)((char *)v1 + 46) + 4) );
|
||||
while ( *(DWORD *)(*(DWORD *)((char *)v1 + 46) + 4) );
|
||||
}
|
||||
objlist_destroy(*(_DWORD *)((char *)v1 + 46));
|
||||
objlist_destroy(*(DWORD *)((char *)v1 + 46));
|
||||
return TPinballComponent::~TPinballComponent(v1);
|
||||
}
|
||||
// 10024EC: using guessed type void *TCollisionComponent::vftable;
|
||||
@@ -1,9 +1,9 @@
|
||||
#include "TComponentGroup.h"
|
||||
|
||||
//----- (010159DC) --------------------------------------------------------
|
||||
void __stdcall TComponentGroup::NotifyTimerExpired(int a1, struct TPinballComponent *a2)
|
||||
void TComponentGroup::NotifyTimerExpired(int a1, struct TPinballComponent *a2)
|
||||
{
|
||||
*(_DWORD *)((char *)a2 + 50) = 0;
|
||||
*(DWORD *)((char *)a2 + 50) = 0;
|
||||
control_handler(61, a2);
|
||||
}
|
||||
|
||||
@@ -18,24 +18,24 @@ int v6; // ebx
|
||||
v3 = this;
|
||||
if ( a2 == 48 )
|
||||
{
|
||||
if ( *(_DWORD *)((char *)this + 50) )
|
||||
if ( *(DWORD *)((char *)this + 50) )
|
||||
{
|
||||
timer_kill(*(_DWORD *)((char *)this + 50));
|
||||
*(_DWORD *)((char *)v3 + 50) = 0;
|
||||
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);
|
||||
*(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;
|
||||
v4 = *(DWORD *)(*(DWORD *)((char *)this + 46) + 4) - 1;
|
||||
if ( v4 >= 0 )
|
||||
{
|
||||
v5 = 4 * v4 + 8;
|
||||
v6 = *(_DWORD *)(*(_DWORD *)((char *)this + 46) + 4);
|
||||
v6 = *(DWORD *)(*(DWORD *)((char *)this + 46) + 4);
|
||||
do
|
||||
{
|
||||
(***(void (__stdcall ****)(int, _DWORD))(v5 + *(_DWORD *)((char *)v3 + 46)))(a2, LODWORD(a3));
|
||||
(***(void (****)(int, DWORD))(v5 + *(DWORD *)((char *)v3 + 46)))(a2, LODWORD(a3));
|
||||
v5 -= 4;
|
||||
--v6;
|
||||
}
|
||||
@@ -62,21 +62,21 @@ TComponentGroup* __thiscall TComponentGroup::TComponentGroup(TComponentGroup* th
|
||||
{
|
||||
TComponentGroup* v3; // esi
|
||||
int v4; // eax
|
||||
signed __int16* i; // edi
|
||||
signed int* i; // edi
|
||||
struct TPinballComponent* v6; // eax
|
||||
int v8; // [esp+Ch] [ebp-4h]
|
||||
int v9; // [esp+1Ch] [ebp+Ch]
|
||||
|
||||
v3 = this;
|
||||
TPinballComponent::TPinballComponent(this, a2, a3, 0);
|
||||
*(_DWORD*)v3 = &TComponentGroup::vftable;
|
||||
*(DWORD*)v3 = &TComponentGroup::vftable;
|
||||
objlist_class::objlist_class((TComponentGroup*)((char*)v3 + 42), 4, 4);
|
||||
*(_DWORD*)((char*)v3 + 50) = 0;
|
||||
*(DWORD*)((char*)v3 + 50) = 0;
|
||||
if (a3 > 0)
|
||||
{
|
||||
v4 = loader_query_iattribute(a3, 1027, &v8);
|
||||
v9 = 0;
|
||||
for (i = (signed __int16*)v4; v9 < v8; ++i)
|
||||
for (i = (signed int*)v4; v9 < v8; ++i)
|
||||
{
|
||||
v6 = TPinballTable::find_component(a2, *i);
|
||||
if (v6)
|
||||
@@ -95,14 +95,14 @@ TZmapList* __thiscall TComponentGroup::~TComponentGroup(TComponentGroup* this)
|
||||
int v2; // eax
|
||||
|
||||
v1 = this;
|
||||
v2 = *(_DWORD*)((char*)this + 50);
|
||||
*(_DWORD*)this = &TComponentGroup::vftable;
|
||||
v2 = *(DWORD*)((char*)this + 50);
|
||||
*(DWORD*)this = &TComponentGroup::vftable;
|
||||
if (v2)
|
||||
{
|
||||
timer_kill(v2);
|
||||
*(_DWORD*)((char*)v1 + 50) = 0;
|
||||
*(DWORD*)((char*)v1 + 50) = 0;
|
||||
}
|
||||
objlist_destroy(*(_DWORD*)((char*)v1 + 46));
|
||||
objlist_destroy(*(DWORD*)((char*)v1 + 46));
|
||||
return TPinballComponent::~TPinballComponent(v1);
|
||||
}
|
||||
// 10024D8: using guessed type void *TComponentGroup::vftable;
|
||||
|
||||
+74
-74
@@ -1,50 +1,50 @@
|
||||
#include "TDemo.h"
|
||||
|
||||
//----- (01016D62) --------------------------------------------------------
|
||||
void __stdcall TDemo::PlungerRelease(int a1, void *a2)
|
||||
void TDemo::PlungerRelease(int a1, void *a2)
|
||||
{
|
||||
void (__stdcall ***v2)(signed int, _DWORD); // ecx
|
||||
void (***v2)(signed int, DWORD); // ecx
|
||||
|
||||
v2 = *(void (__stdcall ****)(signed int, _DWORD))((char *)a2 + 30);
|
||||
*(_DWORD *)((char *)a2 + 110) = 0;
|
||||
v2 = *(void (****)(signed int, DWORD))((char *)a2 + 30);
|
||||
*(DWORD *)((char *)a2 + 110) = 0;
|
||||
(**v2)(1005, LODWORD(time_next));
|
||||
}
|
||||
// 1025634: using guessed type float time_next;
|
||||
|
||||
//----- (01016D8D) --------------------------------------------------------
|
||||
void __stdcall TDemo::UnFlipRight(int a1, void *a2)
|
||||
void TDemo::UnFlipRight(int a1, void *a2)
|
||||
{
|
||||
if ( *(_DWORD *)((char *)a2 + 98) )
|
||||
(***(void (__stdcall ****)(signed int, _DWORD))((char *)a2 + 30))(1003, LODWORD(time_next));
|
||||
*(_DWORD *)((char *)a2 + 98) = 0;
|
||||
if ( *(DWORD *)((char *)a2 + 98) )
|
||||
(***(void (****)(signed int, DWORD))((char *)a2 + 30))(1003, LODWORD(time_next));
|
||||
*(DWORD *)((char *)a2 + 98) = 0;
|
||||
}
|
||||
// 1025634: using guessed type float time_next;
|
||||
|
||||
//----- (01016DC0) --------------------------------------------------------
|
||||
void __stdcall TDemo::UnFlipLeft(int a1, void *a2)
|
||||
void TDemo::UnFlipLeft(int a1, void *a2)
|
||||
{
|
||||
if ( *(_DWORD *)((char *)a2 + 94) )
|
||||
(***(void (__stdcall ****)(signed int, _DWORD))((char *)a2 + 30))(1001, LODWORD(time_next));
|
||||
*(_DWORD *)((char *)a2 + 94) = 0;
|
||||
if ( *(DWORD *)((char *)a2 + 94) )
|
||||
(***(void (****)(signed int, DWORD))((char *)a2 + 30))(1001, LODWORD(time_next));
|
||||
*(DWORD *)((char *)a2 + 94) = 0;
|
||||
}
|
||||
// 1025634: using guessed type float time_next;
|
||||
|
||||
//----- (01016DF3) --------------------------------------------------------
|
||||
void __stdcall TDemo::FlipRight(int a1, void *a2)
|
||||
void TDemo::FlipRight(int a1, void *a2)
|
||||
{
|
||||
double v2; // st7
|
||||
float v3; // ST08_4
|
||||
|
||||
if ( !*(_DWORD *)((char *)a2 + 98) )
|
||||
if ( !*(DWORD *)((char *)a2 + 98) )
|
||||
{
|
||||
if ( *(_DWORD *)((char *)a2 + 106) )
|
||||
if ( *(DWORD *)((char *)a2 + 106) )
|
||||
{
|
||||
timer_kill(*(_DWORD *)((char *)a2 + 106));
|
||||
*(_DWORD *)((char *)a2 + 106) = 0;
|
||||
timer_kill(*(DWORD *)((char *)a2 + 106));
|
||||
*(DWORD *)((char *)a2 + 106) = 0;
|
||||
}
|
||||
(***(void (__stdcall ****)(signed int, _DWORD))((char *)a2 + 30))(1002, LODWORD(time_next));
|
||||
(***(void (****)(signed int, DWORD))((char *)a2 + 30))(1002, LODWORD(time_next));
|
||||
v2 = *(float *)((char *)a2 + 86) + *(float *)((char *)a2 + 90);
|
||||
*(_DWORD *)((char *)a2 + 98) = 1;
|
||||
*(DWORD *)((char *)a2 + 98) = 1;
|
||||
v3 = v2 - (double)_rand() * 0.00003051850947599719 * (*(float *)((char *)a2 + 90) + *(float *)((char *)a2 + 90));
|
||||
timer_set(v3, (int)a2, (int)TDemo::UnFlipRight);
|
||||
}
|
||||
@@ -52,21 +52,21 @@ timer_set(v3, (int)a2, (int)TDemo::UnFlipRight);
|
||||
// 1025634: using guessed type float time_next;
|
||||
|
||||
//----- (01016E70) --------------------------------------------------------
|
||||
void __stdcall TDemo::FlipLeft(int a1, void *a2)
|
||||
void TDemo::FlipLeft(int a1, void *a2)
|
||||
{
|
||||
double v2; // st7
|
||||
float v3; // ST08_4
|
||||
|
||||
if ( !*(_DWORD *)((char *)a2 + 94) )
|
||||
if ( !*(DWORD *)((char *)a2 + 94) )
|
||||
{
|
||||
if ( *(_DWORD *)((char *)a2 + 102) )
|
||||
if ( *(DWORD *)((char *)a2 + 102) )
|
||||
{
|
||||
timer_kill(*(_DWORD *)((char *)a2 + 102));
|
||||
*(_DWORD *)((char *)a2 + 102) = 0;
|
||||
timer_kill(*(DWORD *)((char *)a2 + 102));
|
||||
*(DWORD *)((char *)a2 + 102) = 0;
|
||||
}
|
||||
(***(void (__stdcall ****)(signed int, _DWORD))((char *)a2 + 30))(1000, LODWORD(time_next));
|
||||
(***(void (****)(signed int, DWORD))((char *)a2 + 30))(1000, LODWORD(time_next));
|
||||
v2 = *(float *)((char *)a2 + 86) + *(float *)((char *)a2 + 90);
|
||||
*(_DWORD *)((char *)a2 + 94) = 1;
|
||||
*(DWORD *)((char *)a2 + 94) = 1;
|
||||
v3 = v2 - (double)_rand() * 0.00003051850947599719 * (*(float *)((char *)a2 + 90) + *(float *)((char *)a2 + 90));
|
||||
timer_set(v3, (int)a2, (int)TDemo::UnFlipLeft);
|
||||
}
|
||||
@@ -74,16 +74,16 @@ timer_set(v3, (int)a2, (int)TDemo::UnFlipLeft);
|
||||
// 1025634: using guessed type float time_next;
|
||||
|
||||
//----- (01016EED) --------------------------------------------------------
|
||||
void __stdcall TDemo::NewGameRestartTimer(int a1, void *a2)
|
||||
void TDemo::NewGameRestartTimer(int a1, void *a2)
|
||||
{
|
||||
int v2; // ecx
|
||||
float v3; // ST04_4
|
||||
|
||||
pb_replay_level(1);
|
||||
v2 = *(_DWORD *)((char *)a2 + 30);
|
||||
v2 = *(DWORD *)((char *)a2 + 30);
|
||||
v3 = (double)*(signed int *)(v2 + 214);
|
||||
(**(void (__stdcall ***)(signed int, _DWORD))v2)(1014, LODWORD(v3));
|
||||
*(_DWORD *)((char *)a2 + 114) = 0;
|
||||
(**(void (***)(signed int, DWORD))v2)(1014, LODWORD(v3));
|
||||
*(DWORD *)((char *)a2 + 114) = 0;
|
||||
}
|
||||
|
||||
//----- (01016F21) --------------------------------------------------------
|
||||
@@ -103,15 +103,15 @@ float v16; // ST08_4
|
||||
double v17; // ST20_8
|
||||
float v18; // ST08_4
|
||||
|
||||
v6 = *(_DWORD *)((char *)a6 + 13);
|
||||
v6 = *(DWORD *)((char *)a6 + 13);
|
||||
v7 = this;
|
||||
TBall::not_again(a2, a6);
|
||||
v8 = v6 - 1400;
|
||||
v9 = *(float *)((char *)a2 + 70) - a5;
|
||||
*(_DWORD *)((char *)a2 + 42) = *(_DWORD *)a3;
|
||||
v10 = *((_DWORD *)a3 + 1);
|
||||
*(DWORD *)((char *)a2 + 42) = *(DWORD *)a3;
|
||||
v10 = *((DWORD *)a3 + 1);
|
||||
*(float *)((char *)a2 + 70) = v9;
|
||||
*(_DWORD *)((char *)a2 + 46) = v10;
|
||||
*(DWORD *)((char *)a2 + 46) = v10;
|
||||
if ( v8 )
|
||||
{
|
||||
v11 = v8 - 1;
|
||||
@@ -123,11 +123,11 @@ if ( v12 )
|
||||
v13 = v12 - 1;
|
||||
if ( v13 )
|
||||
{
|
||||
if ( v13 == 1 && !*(_DWORD *)((char *)v7 + 110) )
|
||||
if ( v13 == 1 && !*(DWORD *)((char *)v7 + 110) )
|
||||
{
|
||||
(***(void (__stdcall ****)(signed int, _DWORD))((char *)v7 + 30))(1004, *(float *)((char *)a2 + 78));
|
||||
(***(void (****)(signed int, DWORD))((char *)v7 + 30))(1004, *(float *)((char *)a2 + 78));
|
||||
v14 = (double)_rand() * 0.00003051850947599719 + 2.0;
|
||||
*(_DWORD *)((char *)v7 + 110) = timer_set(v14, (int)v7, (int)TDemo::PlungerRelease);
|
||||
*(DWORD *)((char *)v7 + 110) = timer_set(v14, (int)v7, (int)TDemo::PlungerRelease);
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -135,12 +135,12 @@ else
|
||||
TDemo::FlipRight(0, (void *)v7);
|
||||
}
|
||||
}
|
||||
else if ( !*(_DWORD *)((char *)v7 + 106) && !*(_DWORD *)((char *)v7 + 98) )
|
||||
else if ( !*(DWORD *)((char *)v7 + 106) && !*(DWORD *)((char *)v7 + 98) )
|
||||
{
|
||||
v15 = *(float *)((char *)v7 + 78) + *(float *)((char *)v7 + 82);
|
||||
v16 = v15
|
||||
- (double)_rand() * 0.00003051850947599719 * (*(float *)((char *)v7 + 82) + *(float *)((char *)v7 + 82));
|
||||
*(_DWORD *)((char *)v7 + 106) = timer_set(v16, (int)v7, (int)TDemo::FlipRight);
|
||||
*(DWORD *)((char *)v7 + 106) = timer_set(v16, (int)v7, (int)TDemo::FlipRight);
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -148,11 +148,11 @@ else
|
||||
TDemo::FlipLeft(0, (void *)v7);
|
||||
}
|
||||
}
|
||||
else if ( !*(_DWORD *)((char *)v7 + 102) && !*(_DWORD *)((char *)v7 + 94) )
|
||||
else if ( !*(DWORD *)((char *)v7 + 102) && !*(DWORD *)((char *)v7 + 94) )
|
||||
{
|
||||
v17 = *(float *)((char *)v7 + 78) + *(float *)((char *)v7 + 82);
|
||||
v18 = v17 - (double)_rand() * 0.00003051850947599719 * (*(float *)((char *)v7 + 82) + *(float *)((char *)v7 + 82));
|
||||
*(_DWORD *)((char *)v7 + 102) = timer_set(v18, (int)v7, (int)TDemo::FlipLeft);
|
||||
*(DWORD *)((char *)v7 + 102) = timer_set(v18, (int)v7, (int)TDemo::FlipLeft);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -167,32 +167,32 @@ v3 = this;
|
||||
switch ( a2 )
|
||||
{
|
||||
case 1014:
|
||||
if ( *(_DWORD *)((char *)this + 114) )
|
||||
timer_kill(*(_DWORD *)((char *)this + 114));
|
||||
*(_DWORD *)((char *)v3 + 114) = 0;
|
||||
if ( *(DWORD *)((char *)this + 114) )
|
||||
timer_kill(*(DWORD *)((char *)this + 114));
|
||||
*(DWORD *)((char *)v3 + 114) = 0;
|
||||
break;
|
||||
case 1022:
|
||||
if ( *(_DWORD *)((char *)this + 114) )
|
||||
timer_kill(*(_DWORD *)((char *)this + 114));
|
||||
if ( *(DWORD *)((char *)this + 114) )
|
||||
timer_kill(*(DWORD *)((char *)this + 114));
|
||||
v5 = *((_BYTE *)v3 + 5) == 0;
|
||||
*(_DWORD *)((char *)v3 + 114) = 0;
|
||||
*(DWORD *)((char *)v3 + 114) = 0;
|
||||
if ( !v5 )
|
||||
*(_DWORD *)((char *)v3 + 114) = timer_set(5.0, (int)v3, (int)TDemo::NewGameRestartTimer);
|
||||
*(DWORD *)((char *)v3 + 114) = timer_set(5.0, (int)v3, (int)TDemo::NewGameRestartTimer);
|
||||
break;
|
||||
case 1024:
|
||||
if ( *(_DWORD *)((char *)this + 102) )
|
||||
timer_kill(*(_DWORD *)((char *)this + 102));
|
||||
v4 = *(_DWORD *)((char *)v3 + 106);
|
||||
*(_DWORD *)((char *)v3 + 102) = 0;
|
||||
if ( *(DWORD *)((char *)this + 102) )
|
||||
timer_kill(*(DWORD *)((char *)this + 102));
|
||||
v4 = *(DWORD *)((char *)v3 + 106);
|
||||
*(DWORD *)((char *)v3 + 102) = 0;
|
||||
if ( v4 )
|
||||
timer_kill(v4);
|
||||
v5 = *(_DWORD *)((char *)v3 + 94) == 0;
|
||||
*(_DWORD *)((char *)v3 + 106) = 0;
|
||||
v5 = *(DWORD *)((char *)v3 + 94) == 0;
|
||||
*(DWORD *)((char *)v3 + 106) = 0;
|
||||
if ( !v5 )
|
||||
TDemo::UnFlipLeft(0, (void *)v3);
|
||||
if ( *(_DWORD *)((char *)v3 + 98) )
|
||||
if ( *(DWORD *)((char *)v3 + 98) )
|
||||
TDemo::UnFlipRight(0, (void *)v3);
|
||||
if ( *(_DWORD *)((char *)v3 + 110) )
|
||||
if ( *(DWORD *)((char *)v3 + 110) )
|
||||
TDemo::PlungerRelease(0, (void *)v3);
|
||||
break;
|
||||
}
|
||||
@@ -203,7 +203,7 @@ return 0;
|
||||
TDemo *__thiscall TDemo::TDemo(TDemo *this, struct TPinballTable *a2, int a3)
|
||||
{
|
||||
TDemo *v3; // esi
|
||||
_DWORD *v4; // eax
|
||||
DWORD *v4; // eax
|
||||
float *v5; // eax
|
||||
float *v6; // eax
|
||||
float *v7; // eax
|
||||
@@ -214,24 +214,24 @@ unsigned int v12; // [esp+48h] [ebp-14h]
|
||||
|
||||
v3 = this;
|
||||
TCollisionComponent::TCollisionComponent(this, a2, a3, 0);
|
||||
*(_DWORD *)v3 = &TDemo::vftable;
|
||||
*(_DWORD *)((char *)v3 + 114) = 0;
|
||||
*(_DWORD *)((char *)v3 + 110) = 0;
|
||||
*(_DWORD *)((char *)v3 + 102) = 0;
|
||||
*(_DWORD *)((char *)v3 + 106) = 0;
|
||||
*(_DWORD *)((char *)v3 + 6) = 0;
|
||||
*(DWORD *)v3 = &TDemo::vftable;
|
||||
*(DWORD *)((char *)v3 + 114) = 0;
|
||||
*(DWORD *)((char *)v3 + 110) = 0;
|
||||
*(DWORD *)((char *)v3 + 102) = 0;
|
||||
*(DWORD *)((char *)v3 + 106) = 0;
|
||||
*(DWORD *)((char *)v3 + 6) = 0;
|
||||
*((_BYTE *)v3 + 4) = 0;
|
||||
*((_BYTE *)v3 + 5) = 0;
|
||||
*(_DWORD *)((char *)v3 + 98) = 0;
|
||||
*(_DWORD *)((char *)v3 + 94) = 0;
|
||||
*(_DWORD *)((char *)a2 + 230) = v3;
|
||||
v4 = (_DWORD *)loader_query_float_attribute(a3, 0, 407);
|
||||
*(DWORD *)((char *)v3 + 98) = 0;
|
||||
*(DWORD *)((char *)v3 + 94) = 0;
|
||||
*(DWORD *)((char *)a2 + 230) = v3;
|
||||
v4 = (DWORD *)loader_query_float_attribute(a3, 0, 407);
|
||||
if ( v4 )
|
||||
{
|
||||
*(_DWORD *)((char *)v3 + 78) = *v4;
|
||||
*(_DWORD *)((char *)v3 + 82) = v4[1];
|
||||
*(_DWORD *)((char *)v3 + 86) = v4[2];
|
||||
*(_DWORD *)((char *)v3 + 90) = v4[3];
|
||||
*(DWORD *)((char *)v3 + 78) = *v4;
|
||||
*(DWORD *)((char *)v3 + 82) = v4[1];
|
||||
*(DWORD *)((char *)v3 + 86) = v4[2];
|
||||
*(DWORD *)((char *)v3 + 90) = v4[3];
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -242,15 +242,15 @@ else
|
||||
}
|
||||
loader_query_visual(a3, 0, &v11);
|
||||
v5 = (float *)loader_query_float_attribute(a3, 0, 1400);
|
||||
*(_DWORD *)((char *)v3 + 118) = install_wall(v5, v3, (char *)v3 + 5, v12, 0.0, (void *)0x578);
|
||||
*(DWORD *)((char *)v3 + 118) = install_wall(v5, v3, (char *)v3 + 5, v12, 0.0, (void *)0x578);
|
||||
v6 = (float *)loader_query_float_attribute(a3, 0, 1401);
|
||||
install_wall(v6, v3, (char *)v3 + 5, v12, 0.0, (void *)0x579);
|
||||
v7 = (float *)loader_query_float_attribute(a3, 0, 1402);
|
||||
*(_DWORD *)((char *)v3 + 122) = install_wall(v7, v3, (char *)v3 + 5, v12, 0.0, (void *)0x57A);
|
||||
*(DWORD *)((char *)v3 + 122) = install_wall(v7, v3, (char *)v3 + 5, v12, 0.0, (void *)0x57A);
|
||||
v8 = (float *)loader_query_float_attribute(a3, 0, 1403);
|
||||
install_wall(v8, v3, (char *)v3 + 5, v12, 0.0, (void *)0x57B);
|
||||
v9 = (float *)loader_query_float_attribute(a3, 0, 1404);
|
||||
*(_DWORD *)((char *)v3 + 126) = install_wall(v9, v3, (char *)v3 + 5, v12, *(float *)((char *)a2 + 282), (void *)0x57C);
|
||||
*(DWORD *)((char *)v3 + 126) = install_wall(v9, v3, (char *)v3 + 5, v12, *(float *)((char *)a2 + 282), (void *)0x57C);
|
||||
return v3;
|
||||
}
|
||||
// 10026E8: using guessed type void *TDemo::vftable;
|
||||
@@ -10,12 +10,12 @@
|
||||
/* 128 */
|
||||
struct TDemo;
|
||||
|
||||
void __stdcall TDemo::PlungerRelease(int, void*); // idb
|
||||
void __stdcall TDemo::UnFlipRight(int, void*); // idb
|
||||
void __stdcall TDemo::UnFlipLeft(int, void*); // idb
|
||||
void __stdcall TDemo::FlipRight(int, void*); // idb
|
||||
void __stdcall TDemo::FlipLeft(int, void*); // idb
|
||||
void __stdcall TDemo::NewGameRestartTimer(int, void*); // idb
|
||||
void TDemo::PlungerRelease(int, void*); // idb
|
||||
void TDemo::UnFlipRight(int, void*); // idb
|
||||
void TDemo::UnFlipLeft(int, void*); // idb
|
||||
void TDemo::FlipRight(int, void*); // idb
|
||||
void TDemo::FlipLeft(int, void*); // idb
|
||||
void TDemo::NewGameRestartTimer(int, void*); // idb
|
||||
void __thiscall TDemo::Collision(TDemo* this, struct TBall*, struct vector_type*, struct vector_type*, float, struct TEdgeSegment*); // idb
|
||||
int __thiscall TDemo::Message(TDemo* this, int, float); // idb
|
||||
TDemo* __thiscall TDemo::TDemo(TDemo* this, struct TPinballTable* a2, int a3);
|
||||
|
||||
+11
-11
@@ -8,18 +8,18 @@ TDrain *v3; // esi
|
||||
v3 = this;
|
||||
if ( a2 == 1024 )
|
||||
{
|
||||
if ( *(_DWORD *)((char *)this + 86) )
|
||||
if ( *(DWORD *)((char *)this + 86) )
|
||||
{
|
||||
timer_kill(*(_DWORD *)((char *)this + 86));
|
||||
*(_DWORD *)((char *)v3 + 86) = 0;
|
||||
timer_kill(*(DWORD *)((char *)this + 86));
|
||||
*(DWORD *)((char *)v3 + 86) = 0;
|
||||
}
|
||||
*(_DWORD *)(*(_DWORD *)((char *)v3 + 30) + 78) = 0;
|
||||
*(DWORD *)(*(DWORD *)((char *)v3 + 30) + 78) = 0;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
//----- (010172D8) --------------------------------------------------------
|
||||
void __stdcall TDrain::TimerCallback(int a1, struct TPinballComponent *a2)
|
||||
void TDrain::TimerCallback(int a1, struct TPinballComponent *a2)
|
||||
{
|
||||
control_handler(60, a2);
|
||||
}
|
||||
@@ -30,9 +30,9 @@ void __thiscall TDrain::Collision(TDrain *this, struct TBall *a2, struct vector_
|
||||
TDrain *v6; // esi
|
||||
|
||||
v6 = this;
|
||||
(**(void (__stdcall ***)(signed int, _DWORD))a2)(1024, 0.0);
|
||||
*(_DWORD *)(*(_DWORD *)((char *)v6 + 30) + 78) = 1;
|
||||
*(_DWORD *)((char *)v6 + 86) = timer_set(*(float *)((char *)v6 + 78), (int)v6, (int)TDrain::TimerCallback);
|
||||
(**(void (***)(signed int, DWORD))a2)(1024, 0.0);
|
||||
*(DWORD *)(*(DWORD *)((char *)v6 + 30) + 78) = 1;
|
||||
*(DWORD *)((char *)v6 + 86) = timer_set(*(float *)((char *)v6 + 78), (int)v6, (int)TDrain::TimerCallback);
|
||||
control_handler(63, v6);
|
||||
}
|
||||
|
||||
@@ -43,9 +43,9 @@ TDrain *v3; // esi
|
||||
|
||||
v3 = this;
|
||||
TCollisionComponent::TCollisionComponent(this, a2, a3, 1);
|
||||
*(_DWORD *)((char *)v3 + 86) = 0;
|
||||
*(_DWORD *)v3 = &TDrain::vftable;
|
||||
*(_DWORD *)((char *)v3 + 78) = *(_DWORD *)loader_query_float_attribute(a3, 0, 407);
|
||||
*(DWORD *)((char *)v3 + 86) = 0;
|
||||
*(DWORD *)v3 = &TDrain::vftable;
|
||||
*(DWORD *)((char *)v3 + 78) = *(DWORD *)loader_query_float_attribute(a3, 0, 407);
|
||||
return v3;
|
||||
}
|
||||
// 1002720: using guessed type void *TDrain::vftable;
|
||||
@@ -11,7 +11,7 @@
|
||||
struct TDrain
|
||||
|
||||
int __thiscall TDrain::Message(TDrain* this, int, float); // idb
|
||||
void __stdcall TDrain::TimerCallback(int, struct TPinballComponent*); // idb
|
||||
void TDrain::TimerCallback(int, struct TPinballComponent*); // idb
|
||||
void __thiscall TDrain::Collision(TDrain* this, struct TBall*, struct vector_type*, struct vector_type*, float, struct TEdgeSegment*); // idb
|
||||
TDrain* __thiscall TDrain::TDrain(TDrain* this, struct TPinballTable* a2, int a3);
|
||||
|
||||
|
||||
@@ -21,8 +21,8 @@ void __thiscall TEdgeBox::~TEdgeBox(TEdgeBox *this)
|
||||
TEdgeBox *v1; // esi
|
||||
|
||||
v1 = this;
|
||||
objlist_destroy(*((_DWORD *)this + 3));
|
||||
objlist_destroy(*((_DWORD *)v1 + 1));
|
||||
objlist_destroy(*((DWORD *)this + 3));
|
||||
objlist_destroy(*((DWORD *)v1 + 1));
|
||||
}
|
||||
|
||||
//----- (0100B90E) --------------------------------------------------------
|
||||
@@ -34,10 +34,10 @@ TEdgeBox *result; // eax
|
||||
v2 = this;
|
||||
if ( a2 & 2 )
|
||||
{
|
||||
`vector destructor iterator'(
|
||||
destroy(
|
||||
(void *)this,
|
||||
0x10u,
|
||||
*((_DWORD *)this - 1),
|
||||
*((DWORD *)this - 1),
|
||||
(void (__thiscall *)(void *))TEdgeBox::~TEdgeBox);
|
||||
if ( a2 & 1 )
|
||||
operator delete((char *)v2 - 4);
|
||||
|
||||
@@ -14,7 +14,7 @@ double v6; // [esp+Ch] [ebp-8h]
|
||||
double v7; // [esp+Ch] [ebp-8h]
|
||||
|
||||
v2 = this;
|
||||
v6 = (double)(*((_DWORD *)this + 4) - 1);
|
||||
v6 = (double)(*((DWORD *)this + 4) - 1);
|
||||
if ( _floor((a2 - *((float *)this + 6)) * *((float *)this + 2)) >= v6 )
|
||||
v3 = v6;
|
||||
else
|
||||
@@ -25,7 +25,7 @@ v4 = 0.0;
|
||||
}
|
||||
else
|
||||
{
|
||||
v7 = (double)(*((_DWORD *)v2 + 4) - 1);
|
||||
v7 = (double)(*((DWORD *)v2 + 4) - 1);
|
||||
if ( _floor((a2 - *((float *)v2 + 6)) * *((float *)v2 + 2)) >= v7 )
|
||||
v4 = v7;
|
||||
else
|
||||
@@ -44,7 +44,7 @@ double v6; // [esp+Ch] [ebp-8h]
|
||||
double v7; // [esp+Ch] [ebp-8h]
|
||||
|
||||
v2 = this;
|
||||
v6 = (double)(*((_DWORD *)this + 5) - 1);
|
||||
v6 = (double)(*((DWORD *)this + 5) - 1);
|
||||
if ( _floor((a2 - *((float *)this + 7)) * *((float *)this + 3)) >= v6 )
|
||||
v3 = v6;
|
||||
else
|
||||
@@ -55,7 +55,7 @@ v4 = 0.0;
|
||||
}
|
||||
else
|
||||
{
|
||||
v7 = (double)(*((_DWORD *)v2 + 5) - 1);
|
||||
v7 = (double)(*((DWORD *)v2 + 5) - 1);
|
||||
if ( _floor((a2 - *((float *)v2 + 7)) * *((float *)v2 + 3)) >= v7 )
|
||||
v4 = v7;
|
||||
else
|
||||
@@ -69,7 +69,7 @@ int __thiscall TEdgeManager::increment_box_x(TEdgeManager *this, int a2)
|
||||
{
|
||||
int result; // eax
|
||||
|
||||
result = *((_DWORD *)this + 4) - 1;
|
||||
result = *((DWORD *)this + 4) - 1;
|
||||
if ( a2 + 1 < result )
|
||||
result = a2 + 1;
|
||||
return result;
|
||||
@@ -80,7 +80,7 @@ int __thiscall TEdgeManager::increment_box_y(TEdgeManager *this, int a2)
|
||||
{
|
||||
int result; // eax
|
||||
|
||||
result = *((_DWORD *)this + 5) - 1;
|
||||
result = *((DWORD *)this + 5) - 1;
|
||||
if ( a2 + 1 < result )
|
||||
result = a2 + 1;
|
||||
return result;
|
||||
@@ -88,7 +88,7 @@ return result;
|
||||
|
||||
|
||||
//----- (0100B2A0) --------------------------------------------------------
|
||||
void __stdcall `vector constructor iterator`(void *a1, unsigned int a2, int a3, void *(__thiscall *a4)(void *))
|
||||
void create(void *a1, unsigned int a2, int a3, void *(__thiscall *a4)(void *))
|
||||
{
|
||||
char *v4; // esi
|
||||
int v5; // edi
|
||||
@@ -108,7 +108,7 @@ while ( v5 );
|
||||
}
|
||||
|
||||
//----- (0100B2E5) --------------------------------------------------------
|
||||
void __stdcall `vector destructor iterator`(void *a1, unsigned int a2, int a3, void (__thiscall *a4)(void *))
|
||||
void destroy(void *a1, unsigned int a2, int a3, void (__thiscall *a4)(void *))
|
||||
{
|
||||
char *v4; // edi
|
||||
int v5; // esi
|
||||
@@ -143,20 +143,20 @@ struct TBall *v11; // [esp+24h] [ebp+8h]
|
||||
v3 = a2;
|
||||
v4 = this;
|
||||
v5 = TEdgeManager::box_x(this, *(float *)((char *)a2 + 42));
|
||||
v6 = *((_DWORD *)v4 + 8)
|
||||
+ 16 * (v5 + (unsigned __int64)TEdgeManager::box_y(v4, *(float *)((char *)a2 + 46)) * *((_DWORD *)v4 + 4));
|
||||
v7 = *(_DWORD *)(*(_DWORD *)(v6 + 12) + 4) - 1;
|
||||
v6 = *((DWORD *)v4 + 8)
|
||||
+ 16 * (v5 + (unsigned __int64)TEdgeManager::box_y(v4, *(float *)((char *)a2 + 46)) * *((DWORD *)v4 + 4));
|
||||
v7 = *(DWORD *)(*(DWORD *)(v6 + 12) + 4) - 1;
|
||||
if ( v7 >= 0 )
|
||||
{
|
||||
v8 = 4 * v7 + 8;
|
||||
v11 = *(struct TBall **)(*(_DWORD *)(v6 + 12) + 4);
|
||||
v11 = *(struct TBall **)(*(DWORD *)(v6 + 12) + 4);
|
||||
do
|
||||
{
|
||||
v9 = *(_DWORD *)(v8 + *(_DWORD *)(v6 + 12));
|
||||
if ( **(_BYTE **)v9 && *(_DWORD *)((_BYTE *)v3 + 110) & *(_DWORD *)(v9 + 4) )
|
||||
v9 = *(DWORD *)(v8 + *(DWORD *)(v6 + 12));
|
||||
if ( **(_BYTE **)v9 && *(DWORD *)((_BYTE *)v3 + 110) & *(DWORD *)(v9 + 4) )
|
||||
{
|
||||
if ( (*(int (__thiscall **)(_DWORD, struct TBall *, char *))(**(_DWORD **)(v9 + 8) + 24))(
|
||||
*(_DWORD *)(v9 + 8),
|
||||
if ( (*(int (__thiscall **)(DWORD, struct TBall *, char *))(**(DWORD **)(v9 + 8) + 24))(
|
||||
*(DWORD *)(v9 + 8),
|
||||
v3,
|
||||
&v10) )
|
||||
{
|
||||
@@ -171,7 +171,7 @@ while ( v11 );
|
||||
}
|
||||
|
||||
//----- (0100B3AE) --------------------------------------------------------
|
||||
int __userpurge TEdgeManager::TestGridBox@<eax>(TEdgeManager *this@<ecx>, double a2@<st0>, int a3, int a4, float *a5, struct TEdgeSegment **a6, struct ray_type *a7, struct TBall *a8, int a9)
|
||||
int TEdgeManager::TestGridBox(TEdgeManager *this, double a2@<st0>, int a3, int a4, float *a5, struct TEdgeSegment **a6, struct ray_type *a7, struct TBall *a8, int a9)
|
||||
{
|
||||
int v9; // edi
|
||||
int v10; // eax
|
||||
@@ -184,21 +184,21 @@ int v17; // [esp+Ch] [ebp+Ch]
|
||||
|
||||
if ( a3 >= 0 && a3 < 10 && a4 >= 0 && a4 < 15 )
|
||||
{
|
||||
v9 = *((_DWORD *)this + 8) + 16 * (a3 + a4 * *((_DWORD *)this + 4));
|
||||
v10 = *(_DWORD *)(*(_DWORD *)(v9 + 4) + 4) - 1;
|
||||
v9 = *((DWORD *)this + 8) + 16 * (a3 + a4 * *((DWORD *)this + 4));
|
||||
v10 = *(DWORD *)(*(DWORD *)(v9 + 4) + 4) - 1;
|
||||
if ( v10 >= 0 )
|
||||
{
|
||||
v17 = 4 * v10 + 8;
|
||||
v11 = (int **)((char *)this + 4 * a9 + 36);
|
||||
v16 = *(_DWORD *)(*(_DWORD *)(v9 + 4) + 4);
|
||||
v16 = *(DWORD *)(*(DWORD *)(v9 + 4) + 4);
|
||||
do
|
||||
{
|
||||
v12 = *(int **)(v17 + *(_DWORD *)(v9 + 4));
|
||||
v12 = *(int **)(v17 + *(DWORD *)(v9 + 4));
|
||||
if ( !*((_BYTE *)v12 + 12) )
|
||||
{
|
||||
if ( *(_BYTE *)v12[2] )
|
||||
{
|
||||
if ( *(int *)((char *)v12 + 17) & *((_DWORD *)a7 + 10) )
|
||||
if ( *(int *)((char *)v12 + 17) & *((DWORD *)a7 + 10) )
|
||||
{
|
||||
LOBYTE(v13) = TBall::already_hit(a8, (struct TEdgeSegment *)v12);
|
||||
if ( !v13 )
|
||||
@@ -499,7 +499,7 @@ TEdgeManager *__thiscall TEdgeManager::TEdgeManager(TEdgeManager *this, float a2
|
||||
double v5; // st7
|
||||
TEdgeManager *v6; // esi
|
||||
double v7; // st6
|
||||
_DWORD *v8; // eax
|
||||
DWORD *v8; // eax
|
||||
int v9; // edi
|
||||
|
||||
v5 = a4 * 0.1;
|
||||
@@ -508,9 +508,9 @@ v6 = this;
|
||||
*(float *)this = v5;
|
||||
v7 = a5 * 0.06666667;
|
||||
*((float *)this + 7) = a3;
|
||||
*((_DWORD *)this + 4) = 10;
|
||||
*((DWORD *)this + 4) = 10;
|
||||
*((float *)this + 1) = v7;
|
||||
*((_DWORD *)this + 5) = 15;
|
||||
*((DWORD *)this + 5) = 15;
|
||||
*((float *)this + 2) = 1.0 / v5;
|
||||
*((float *)this + 3) = 1.0 / v7;
|
||||
v8 = operator new(0x964u);
|
||||
@@ -518,13 +518,13 @@ if ( v8 )
|
||||
{
|
||||
v9 = (int)(v8 + 1);
|
||||
*v8 = 150;
|
||||
`vector constructor iterator`(v8 + 1, 0x10u, 150, (void *(__thiscall *)(void *))TEdgeBox::TEdgeBox);
|
||||
create(v8 + 1, 0x10u, 150, (void *(__thiscall *)(void *))TEdgeBox::TEdgeBox);
|
||||
}
|
||||
else
|
||||
{
|
||||
v9 = 0;
|
||||
}
|
||||
*((_DWORD *)v6 + 8) = v9;
|
||||
*((DWORD *)v6 + 8) = v9;
|
||||
return v6;
|
||||
}
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ signed __int64 __thiscall TEdgeManager::box_y(TEdgeManager* this, float a2);
|
||||
int __thiscall TEdgeManager::increment_box_x(TEdgeManager* this, int); // idb
|
||||
int __thiscall TEdgeManager::increment_box_y(TEdgeManager* this, int); // idb
|
||||
void __thiscall TEdgeManager::FieldEffects(TEdgeManager* this, struct TBall*, struct vector_type*); // idb
|
||||
// int __userpurge TEdgeManager::TestGridBox@<eax>(TEdgeManager *this@<ecx>, double a2@<st0>, int a3, int a4, float *a5, struct TEdgeSegment **a6, struct ray_type *a7, struct TBall *a8, int a9);
|
||||
// int TEdgeManager::TestGridBox(TEdgeManager *this, double a2@<st0>, int a3, int a4, float *a5, struct TEdgeSegment **a6, struct ray_type *a7, struct TBall *a8, int a9);
|
||||
double __thiscall TEdgeManager::FindCollisionDistance(TEdgeManager* this, struct ray_type* a2, struct TBall* a3, struct TEdgeSegment** a4);
|
||||
TEdgeManager* __thiscall TEdgeManager::TEdgeManager(TEdgeManager* this, float a2, float a3, float a4, float a5);
|
||||
void __thiscall TEdgeManager::add_edge_to_box(TEdgeManager* this, int, int, struct TEdgeSegment*); // idb
|
||||
|
||||
@@ -6,10 +6,10 @@ TEdgeSegment *__thiscall TEdgeSegment::TEdgeSegment(TEdgeSegment *this, struct T
|
||||
TEdgeSegment *result; // eax
|
||||
|
||||
result = this;
|
||||
*((_DWORD *)this + 1) = a2;
|
||||
*((_DWORD *)this + 2) = a3;
|
||||
*(_DWORD *)this = &TEdgeSegment::vftable;
|
||||
*(_DWORD *)((char *)this + 17) = a4;
|
||||
*((DWORD *)this + 1) = a2;
|
||||
*((DWORD *)this + 2) = a3;
|
||||
*(DWORD *)this = &TEdgeSegment::vftable;
|
||||
*(DWORD *)((char *)this + 17) = a4;
|
||||
*((_BYTE *)this + 12) = 0;
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
#include "TFlagSpinner.h"
|
||||
|
||||
//----- (01015F34) --------------------------------------------------------
|
||||
void __stdcall TFlagSpinner::SpinTimer(int a1, void *a2)
|
||||
void TFlagSpinner::SpinTimer(int a1, void *a2)
|
||||
{
|
||||
*(_DWORD *)((char *)a2 + 102) = 0;
|
||||
*(DWORD *)((char *)a2 + 102) = 0;
|
||||
TFlagSpinner::NextFrame((TFlagSpinner *)a2);
|
||||
}
|
||||
|
||||
@@ -21,36 +21,36 @@ char v9; // c0
|
||||
float v10; // ST0C_4
|
||||
|
||||
v1 = this;
|
||||
*(_DWORD *)((char *)v1 + 98) += *(_DWORD *)((char *)this + 94);
|
||||
v2 = *(_DWORD *)((char *)this + 34);
|
||||
v3 = *(_DWORD *)((char *)this + 98);
|
||||
v4 = *(_DWORD *)(*(_DWORD *)(v2 + 4) + 4);
|
||||
*(DWORD *)((char *)v1 + 98) += *(DWORD *)((char *)this + 94);
|
||||
v2 = *(DWORD *)((char *)this + 34);
|
||||
v3 = *(DWORD *)((char *)this + 98);
|
||||
v4 = *(DWORD *)(*(DWORD *)(v2 + 4) + 4);
|
||||
if ( v3 < v4 )
|
||||
{
|
||||
if ( v3 < 0 )
|
||||
*(_DWORD *)((char *)v1 + 98) = v4 - 1;
|
||||
*(DWORD *)((char *)v1 + 98) = v4 - 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
*(_DWORD *)((char *)v1 + 98) = 0;
|
||||
*(DWORD *)((char *)v1 + 98) = 0;
|
||||
}
|
||||
v5 = *(_DWORD *)(*(_DWORD *)(v2 + 4) + 4 * *(_DWORD *)((char *)v1 + 98) + 8);
|
||||
if ( !*(_DWORD *)(*(_DWORD *)((char *)v1 + 30) + 370) )
|
||||
v5 = *(DWORD *)(*(DWORD *)(v2 + 4) + 4 * *(DWORD *)((char *)v1 + 98) + 8);
|
||||
if ( !*(DWORD *)(*(DWORD *)((char *)v1 + 30) + 370) )
|
||||
{
|
||||
control_handler(63, v1);
|
||||
if ( *(_DWORD *)((char *)v1 + 70) )
|
||||
loader_play_sound(*(_DWORD *)((char *)v1 + 70));
|
||||
if ( !*(_DWORD *)((char *)v1 + 98) )
|
||||
if ( *(DWORD *)((char *)v1 + 70) )
|
||||
loader_play_sound(*(DWORD *)((char *)v1 + 70));
|
||||
if ( !*(DWORD *)((char *)v1 + 98) )
|
||||
control_handler(62, v1);
|
||||
}
|
||||
render_sprite_set(
|
||||
*(_DWORD **)((char *)v1 + 26),
|
||||
*(DWORD **)((char *)v1 + 26),
|
||||
v5,
|
||||
*(_DWORD *)(*(_DWORD *)(*(_DWORD *)((char *)v1 + 38) + 4) + 4 * *(_DWORD *)((char *)v1 + 98) + 8),
|
||||
*(_DWORD *)(v5 + 29) - *(_DWORD *)(*(_DWORD *)((char *)v1 + 30) + 234),
|
||||
*(_DWORD *)(v5 + 33) - *(_DWORD *)(*(_DWORD *)((char *)v1 + 30) + 238));
|
||||
*(DWORD *)(*(DWORD *)(*(DWORD *)((char *)v1 + 38) + 4) + 4 * *(DWORD *)((char *)v1 + 98) + 8),
|
||||
*(DWORD *)(v5 + 29) - *(DWORD *)(*(DWORD *)((char *)v1 + 30) + 234),
|
||||
*(DWORD *)(v5 + 33) - *(DWORD *)(*(DWORD *)((char *)v1 + 30) + 238));
|
||||
v6 = *(float *)((char *)v1 + 90) * *(float *)((char *)v1 + 78);
|
||||
v7 = *(_DWORD *)((char *)v1 + 86);
|
||||
v7 = *(DWORD *)((char *)v1 + 86);
|
||||
*(float *)((char *)v1 + 78) = v6;
|
||||
if ( !v9 )
|
||||
{
|
||||
@@ -68,19 +68,19 @@ int v4; // eax
|
||||
v3 = this;
|
||||
if ( a2 == 1024 )
|
||||
{
|
||||
if ( *(_DWORD *)((char *)this + 102) )
|
||||
if ( *(DWORD *)((char *)this + 102) )
|
||||
{
|
||||
timer_kill(*(_DWORD *)((char *)this + 102));
|
||||
*(_DWORD *)((char *)v3 + 102) = 0;
|
||||
timer_kill(*(DWORD *)((char *)this + 102));
|
||||
*(DWORD *)((char *)v3 + 102) = 0;
|
||||
}
|
||||
*(_DWORD *)((char *)v3 + 98) = 0;
|
||||
v4 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)((char *)v3 + 34) + 4) + 8);
|
||||
*(DWORD *)((char *)v3 + 98) = 0;
|
||||
v4 = *(DWORD *)(*(DWORD *)(*(DWORD *)((char *)v3 + 34) + 4) + 8);
|
||||
render_sprite_set(
|
||||
*(_DWORD **)((char *)v3 + 26),
|
||||
*(_DWORD *)(*(_DWORD *)(*(_DWORD *)((char *)v3 + 34) + 4) + 8),
|
||||
*(_DWORD *)(*(_DWORD *)(*(_DWORD *)((char *)v3 + 38) + 4) + 8),
|
||||
*(_DWORD *)(v4 + 29) - *(_DWORD *)(*(_DWORD *)((char *)v3 + 30) + 234),
|
||||
*(_DWORD *)(v4 + 33) - *(_DWORD *)(*(_DWORD *)((char *)v3 + 30) + 238));
|
||||
*(DWORD **)((char *)v3 + 26),
|
||||
*(DWORD *)(*(DWORD *)(*(DWORD *)((char *)v3 + 34) + 4) + 8),
|
||||
*(DWORD *)(*(DWORD *)(*(DWORD *)((char *)v3 + 38) + 4) + 8),
|
||||
*(DWORD *)(v4 + 29) - *(DWORD *)(*(DWORD *)((char *)v3 + 30) + 234),
|
||||
*(DWORD *)(v4 + 33) - *(DWORD *)(*(DWORD *)((char *)v3 + 30) + 238));
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -93,7 +93,7 @@ int result; // eax
|
||||
if ( a2 >= 2 )
|
||||
result = 0;
|
||||
else
|
||||
result = *(_DWORD *)((char *)this + 4 * a2 + 110);
|
||||
result = *(DWORD *)((char *)this + 4 * a2 + 110);
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -101,7 +101,7 @@ return result;
|
||||
void __thiscall TFlagSpinner::put_scoring(TFlagSpinner *this, int a2, int a3)
|
||||
{
|
||||
if ( a2 < 2 )
|
||||
*(_DWORD *)((char *)this + 4 * a2 + 110) = a3;
|
||||
*(DWORD *)((char *)this + 4 * a2 + 110) = a3;
|
||||
}
|
||||
|
||||
//----- (01018150) --------------------------------------------------------
|
||||
@@ -111,20 +111,20 @@ int v6; // eax
|
||||
TFlagSpinner *v7; // edi
|
||||
|
||||
*(float *)((char *)a2 + 42) = *(float *)a3;
|
||||
v6 = *((_DWORD *)a3 + 1);
|
||||
v6 = *((DWORD *)a3 + 1);
|
||||
v7 = this;
|
||||
*(float *)((char *)a2 + 70) = *(float *)((char *)a2 + 70) - a5;
|
||||
*(_DWORD *)((char *)a2 + 46) = v6;
|
||||
*(DWORD *)((char *)a2 + 46) = v6;
|
||||
TBall::not_again(a2, a6);
|
||||
*(_DWORD *)((char *)v7 + 94) = 2 * (*(_DWORD *)((char *)v7 + 106) != (_DWORD)a6) - 1;
|
||||
*(DWORD *)((char *)v7 + 94) = 2 * (*(DWORD *)((char *)v7 + 106) != (DWORD)a6) - 1;
|
||||
if ( *(float *)((char *)a2 + 66) == 0.0 )
|
||||
*(_DWORD *)((char *)v7 + 78) = *(_DWORD *)((char *)v7 + 86);
|
||||
*(DWORD *)((char *)v7 + 78) = *(DWORD *)((char *)v7 + 86);
|
||||
else
|
||||
*(float *)((char *)v7 + 78) = *(float *)((char *)a2 + 66) * 20.0;
|
||||
if ( *(float *)((char *)v7 + 78) < (double)*(float *)((char *)v7 + 86) )
|
||||
*(_DWORD *)((char *)v7 + 78) = *(_DWORD *)((char *)v7 + 86);
|
||||
*(DWORD *)((char *)v7 + 78) = *(DWORD *)((char *)v7 + 86);
|
||||
if ( *(float *)((char *)v7 + 78) > (double)*(float *)((char *)v7 + 82) )
|
||||
*(_DWORD *)((char *)v7 + 78) = *(_DWORD *)((char *)v7 + 82);
|
||||
*(DWORD *)((char *)v7 + 78) = *(DWORD *)((char *)v7 + 82);
|
||||
TFlagSpinner::NextFrame(v7);
|
||||
}
|
||||
|
||||
@@ -136,9 +136,9 @@ TLine *v4; // eax
|
||||
TLine *v5; // edi
|
||||
TLine *v6; // eax
|
||||
TLine *v7; // eax
|
||||
_DWORD *v8; // eax
|
||||
_DWORD *v9; // eax
|
||||
_DWORD *v10; // eax
|
||||
DWORD *v8; // eax
|
||||
DWORD *v9; // eax
|
||||
DWORD *v10; // eax
|
||||
char v12; // [esp+Ch] [ebp-60h]
|
||||
int *v13; // [esp+18h] [ebp-54h]
|
||||
unsigned int v14; // [esp+40h] [ebp-2Ch]
|
||||
@@ -149,8 +149,8 @@ int v18; // [esp+64h] [ebp-8h]
|
||||
|
||||
v3 = this;
|
||||
TCollisionComponent::TCollisionComponent(this, a2, a3, 0);
|
||||
*(_DWORD *)v3 = &TFlagSpinner::vftable;
|
||||
*(_DWORD *)((char *)v3 + 102) = 0;
|
||||
*(DWORD *)v3 = &TFlagSpinner::vftable;
|
||||
*(DWORD *)((char *)v3 + 102) = 0;
|
||||
loader_query_visual(a3, 0, &v12);
|
||||
v15 = *v13;
|
||||
v16 = v13[1];
|
||||
@@ -163,7 +163,7 @@ else
|
||||
v5 = 0;
|
||||
if ( v5 )
|
||||
{
|
||||
(*(void (__thiscall **)(TLine *))(*(_DWORD *)v5 + 8))(v5);
|
||||
(*(void (__thiscall **)(TLine *))(*(DWORD *)v5 + 8))(v5);
|
||||
objlist_class::Add((TFlagSpinner *)((char *)v3 + 42), (void *)v5);
|
||||
}
|
||||
v6 = (TLine *)operator new(0x55u);
|
||||
@@ -171,24 +171,24 @@ if ( v6 )
|
||||
v7 = TLine::TLine(v6, v3, (char *)v3 + 5, v14, (struct vector_type *)&v15, (struct vector_type *)&v17);
|
||||
else
|
||||
v7 = 0;
|
||||
*(_DWORD *)((char *)v3 + 106) = v7;
|
||||
*(DWORD *)((char *)v3 + 106) = v7;
|
||||
if ( v7 )
|
||||
{
|
||||
(*(void (__thiscall **)(TLine *))(*(_DWORD *)v7 + 8))(v7);
|
||||
(*(void (__thiscall **)(TLine *))(*(DWORD *)v7 + 8))(v7);
|
||||
objlist_class::Add((TFlagSpinner *)((char *)v3 + 42), *(void **)((char *)v3 + 106));
|
||||
}
|
||||
*(_DWORD *)((char *)v3 + 90) = 1059481190;
|
||||
*(_DWORD *)((char *)v3 + 82) = 1195593728;
|
||||
*(_DWORD *)((char *)v3 + 86) = 1084227584;
|
||||
v8 = (_DWORD *)loader_query_float_attribute(a3, 0, 1202);
|
||||
*(DWORD *)((char *)v3 + 90) = 1059481190;
|
||||
*(DWORD *)((char *)v3 + 82) = 1195593728;
|
||||
*(DWORD *)((char *)v3 + 86) = 1084227584;
|
||||
v8 = (DWORD *)loader_query_float_attribute(a3, 0, 1202);
|
||||
if ( v8 )
|
||||
*(_DWORD *)((char *)v3 + 90) = *v8;
|
||||
v9 = (_DWORD *)loader_query_float_attribute(a3, 0, 1200);
|
||||
*(DWORD *)((char *)v3 + 90) = *v8;
|
||||
v9 = (DWORD *)loader_query_float_attribute(a3, 0, 1200);
|
||||
if ( v9 )
|
||||
*(_DWORD *)((char *)v3 + 82) = *v9;
|
||||
v10 = (_DWORD *)loader_query_float_attribute(a3, 0, 1201);
|
||||
*(DWORD *)((char *)v3 + 82) = *v9;
|
||||
v10 = (DWORD *)loader_query_float_attribute(a3, 0, 1201);
|
||||
if ( v10 )
|
||||
*(_DWORD *)((char *)v3 + 86) = *v10;
|
||||
*(DWORD *)((char *)v3 + 86) = *v10;
|
||||
return v3;
|
||||
}
|
||||
// 1002588: using guessed type void *TFlagSpinner::vftable;
|
||||
@@ -10,7 +10,7 @@
|
||||
/* 105 */
|
||||
struct TFlagSpinner;
|
||||
|
||||
void __stdcall TFlagSpinner::SpinTimer(int, void*); // idb
|
||||
void TFlagSpinner::SpinTimer(int, void*); // idb
|
||||
void __thiscall TFlagSpinner::NextFrame(TFlagSpinner* this); // idb
|
||||
int __thiscall TFlagSpinner::Message(TFlagSpinner* this, int, float); // idb
|
||||
int __thiscall TFlagSpinner::get_scoring(TFlagSpinner* this, int); // idb
|
||||
|
||||
@@ -9,14 +9,14 @@ void *v2; // ST00_4
|
||||
|
||||
v1 = this;
|
||||
v2 = *(void **)((char *)this + 82);
|
||||
*(_DWORD *)this = &TFlipper::vftable;
|
||||
*(DWORD *)this = &TFlipper::vftable;
|
||||
operator delete(v2);
|
||||
return TCollisionComponent::~TCollisionComponent(v1);
|
||||
}
|
||||
// 1002838: using guessed type void *TFlipper::vftable;
|
||||
|
||||
//----- (0101C070) --------------------------------------------------------
|
||||
void __stdcall TFlipper::TimerExpired(int a1, void *a2)
|
||||
void TFlipper::TimerExpired(int a1, void *a2)
|
||||
{
|
||||
char *v2; // esi
|
||||
double v3; // st7
|
||||
@@ -35,8 +35,8 @@ 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);
|
||||
v4 = *(DWORD *)((char *)a2 + 34);
|
||||
v14 = (double)*(signed int *)(*(DWORD *)(v4 + 4) + 4);
|
||||
if ( v3 > v14 )
|
||||
v3 = v14;
|
||||
if ( v3 < 0.0 )
|
||||
@@ -44,24 +44,24 @@ v3 = 0.0;
|
||||
v5 = (signed __int64)v3;
|
||||
if ( !(unsigned int)(signed __int64)v3 )
|
||||
LODWORD(v5) = 1;
|
||||
v6 = *(_DWORD *)(v2 + 6);
|
||||
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) += v5;
|
||||
v7 = *(DWORD *)(*(DWORD *)(v4 + 4) + 4) - 1;
|
||||
if ( *(DWORD *)(v2 + 78) >= v7 )
|
||||
{
|
||||
*(_DWORD *)(v2 + 78) = v7;
|
||||
*(DWORD *)(v2 + 78) = v7;
|
||||
v13 = 1;
|
||||
}
|
||||
}
|
||||
if ( v6 == 2 )
|
||||
{
|
||||
*(_DWORD *)(v2 + 78) -= v5;
|
||||
*(DWORD *)(v2 + 78) -= v5;
|
||||
v8 = 0;
|
||||
if ( *(_DWORD *)(v2 + 78) <= 0 )
|
||||
if ( *(DWORD *)(v2 + 78) <= 0 )
|
||||
{
|
||||
*(_DWORD *)(v2 + 78) = 0;
|
||||
*(DWORD *)(v2 + 78) = 0;
|
||||
v13 = 1;
|
||||
}
|
||||
}
|
||||
@@ -70,20 +70,20 @@ else
|
||||
v8 = 0;
|
||||
}
|
||||
if ( v13 )
|
||||
*(_DWORD *)(v2 + 6) = 0;
|
||||
*(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;
|
||||
v9 = *(DWORD *)(v2 + 78);
|
||||
v10 = *(DWORD *)(v2 + 30);
|
||||
*(DWORD *)(v2 + 86) = v8;
|
||||
v11 = 4 * v9 + 8;
|
||||
v12 = *(_DWORD *)(v11 + *(_DWORD *)(*(_DWORD *)(v2 + 34) + 4));
|
||||
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));
|
||||
*(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;
|
||||
|
||||
@@ -103,8 +103,8 @@ v4 = this;
|
||||
if ( a2 == 1 )
|
||||
{
|
||||
control_handler(1, this);
|
||||
*(_DWORD *)((char *)v4 + 98) = *(_DWORD *)((char *)v4 + 90);
|
||||
v6 = *(_DWORD *)((char *)v4 + 74);
|
||||
*(DWORD *)((char *)v4 + 98) = *(DWORD *)((char *)v4 + 90);
|
||||
v6 = *(DWORD *)((char *)v4 + 74);
|
||||
LABEL_15:
|
||||
if ( v6 )
|
||||
loader_play_sound(v6);
|
||||
@@ -112,8 +112,8 @@ goto LABEL_17;
|
||||
}
|
||||
if ( a2 == 2 )
|
||||
{
|
||||
*(_DWORD *)((char *)this + 98) = *(_DWORD *)((char *)this + 94);
|
||||
v6 = *(_DWORD *)((char *)this + 70);
|
||||
*(DWORD *)((char *)this + 98) = *(DWORD *)((char *)this + 94);
|
||||
v6 = *(DWORD *)((char *)this + 70);
|
||||
goto LABEL_15;
|
||||
}
|
||||
if ( a2 <= 1008 )
|
||||
@@ -122,16 +122,16 @@ if ( a2 <= 1011 )
|
||||
{
|
||||
LABEL_12:
|
||||
v3 = 2;
|
||||
*(_DWORD *)((char *)this + 98) = *(_DWORD *)((char *)this + 94);
|
||||
*(DWORD *)((char *)this + 98) = *(DWORD *)((char *)this + 94);
|
||||
LABEL_17:
|
||||
if ( *(_DWORD *)((char *)v4 + 86) )
|
||||
if ( *(DWORD *)((char *)v4 + 86) )
|
||||
{
|
||||
timer_kill(*(_DWORD *)((char *)v4 + 86));
|
||||
*(_DWORD *)((char *)v4 + 86) = 0;
|
||||
timer_kill(*(DWORD *)((char *)v4 + 86));
|
||||
*(DWORD *)((char *)v4 + 86) = 0;
|
||||
}
|
||||
if ( *(_DWORD *)((char *)v4 + 6) )
|
||||
if ( *(DWORD *)((char *)v4 + 6) )
|
||||
{
|
||||
v8 = a3 - *(float *)(*(_DWORD *)((char *)v4 + 82) + 201);
|
||||
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;
|
||||
@@ -141,9 +141,9 @@ else
|
||||
v7 = *(float *)((char *)v4 + 98);
|
||||
}
|
||||
v9 = v7;
|
||||
*(_DWORD *)((char *)v4 + 6) = v3;
|
||||
*(DWORD *)((char *)v4 + 6) = v3;
|
||||
*(float *)((char *)v4 + 102) = a3;
|
||||
*(_DWORD *)((char *)v4 + 86) = timer_set(v9, (int)v4, (int)TFlipper::TimerExpired);
|
||||
*(DWORD *)((char *)v4 + 86) = timer_set(v9, (int)v4, (int)TFlipper::TimerExpired);
|
||||
goto LABEL_24;
|
||||
}
|
||||
if ( a2 != 1020 )
|
||||
@@ -157,13 +157,13 @@ goto LABEL_8;
|
||||
goto LABEL_12;
|
||||
}
|
||||
LABEL_8:
|
||||
if ( *(_DWORD *)((char *)this + 6) )
|
||||
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;
|
||||
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);
|
||||
@@ -174,7 +174,7 @@ return 0;
|
||||
//----- (0101C2AD) --------------------------------------------------------
|
||||
void __thiscall TFlipper::port_draw(TFlipper *this)
|
||||
{
|
||||
(*(void (**)(void))(**(_DWORD **)((char *)this + 82) + 4))();
|
||||
(*(void (**)(void))(**(DWORD **)((char *)this + 82) + 4))();
|
||||
}
|
||||
|
||||
//----- (0101C59D) --------------------------------------------------------
|
||||
@@ -206,14 +206,14 @@ float *v25; // [esp+7Ch] [ebp+Ch]
|
||||
v3 = a3;
|
||||
v4 = this;
|
||||
TCollisionComponent::TCollisionComponent(this, a2, a3, 0);
|
||||
*(_DWORD *)v4 = &TFlipper::vftable;
|
||||
*(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;
|
||||
*(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;
|
||||
*(DWORD *)((char *)v4 + 86) = 0;
|
||||
*(DWORD *)((char *)v4 + 58) = v5;
|
||||
v23 = (TFlipperEdge *)operator new(0xE9u);
|
||||
if ( v23 )
|
||||
{
|
||||
@@ -234,14 +234,14 @@ else
|
||||
{
|
||||
v15 = 0;
|
||||
}
|
||||
*(_DWORD *)((char *)v4 + 82) = v15;
|
||||
*(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);
|
||||
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;
|
||||
*(DWORD *)((char *)v4 + 78) = 0;
|
||||
*(float *)((char *)v4 + 102) = 0.0;
|
||||
return v4;
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
struct TFlipper;
|
||||
|
||||
TZmapList* __thiscall TFlipper::~TFlipper(TFlipper* this);
|
||||
void __stdcall TFlipper::TimerExpired(int, void*); // idb
|
||||
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);
|
||||
|
||||
@@ -64,7 +64,7 @@ int v2; // edx
|
||||
double v4; // st7
|
||||
double v5; // st7
|
||||
|
||||
v2 = *(_DWORD *)((char *)this + 21);
|
||||
v2 = *(DWORD *)((char *)this + 21);
|
||||
if ( !v2 )
|
||||
return *(float *)((char *)this + 77);
|
||||
v4 = (*(float *)((char *)this + 77) - *(float *)((char *)this + 73))
|
||||
@@ -93,10 +93,10 @@ TFlipperEdge *v1; // esi
|
||||
v1 = this;
|
||||
line_init((int)&lineA, A1, flt_1025718, A2, flt_10256B8);
|
||||
line_init((int)&lineB, B1, flt_10256F4, B2, flt_1025700);
|
||||
dword_102566C = *(_DWORD *)((char *)v1 + 53);
|
||||
circlebase = *(_DWORD *)((char *)v1 + 33);
|
||||
dword_1025664 = *(_DWORD *)((char *)v1 + 37);
|
||||
dword_102567C = *(_DWORD *)((char *)v1 + 57);
|
||||
dword_102566C = *(DWORD *)((char *)v1 + 53);
|
||||
circlebase = *(DWORD *)((char *)v1 + 33);
|
||||
dword_1025664 = *(DWORD *)((char *)v1 + 37);
|
||||
dword_102567C = *(DWORD *)((char *)v1 + 57);
|
||||
circleT1 = T1;
|
||||
dword_1025674 = dword_102570C;
|
||||
}
|
||||
@@ -122,21 +122,21 @@ v2 = this;
|
||||
v3 = TFlipperEdge::flipper_angle(this, a2);
|
||||
SinCos(v3, &flipper_sin_angle, &flipper_cos_angle);
|
||||
v4 = flipper_cos_angle;
|
||||
A1 = *(_DWORD *)((char *)v2 + 101);
|
||||
*((_DWORD *)&A1 + 1) = *(_DWORD *)((char *)v2 + 105);
|
||||
*((_DWORD *)&A1 + 2) = *(_DWORD *)((char *)v2 + 109);
|
||||
A2 = *(_DWORD *)((char *)v2 + 113);
|
||||
*((_DWORD *)&A2 + 1) = *(_DWORD *)((char *)v2 + 117);
|
||||
*((_DWORD *)&A2 + 2) = *(_DWORD *)((char *)v2 + 121);
|
||||
B1 = *(_DWORD *)((char *)v2 + 125);
|
||||
*((_DWORD *)&B1 + 1) = *(_DWORD *)((char *)v2 + 129);
|
||||
*((_DWORD *)&B1 + 2) = *(_DWORD *)((char *)v2 + 133);
|
||||
B2 = *(_DWORD *)((char *)v2 + 137);
|
||||
*((_DWORD *)&B2 + 1) = *(_DWORD *)((char *)v2 + 141);
|
||||
*((_DWORD *)&B2 + 2) = *(_DWORD *)((char *)v2 + 145);
|
||||
T1 = *(_DWORD *)((char *)v2 + 153);
|
||||
*((_DWORD *)&T1 + 1) = *(_DWORD *)((char *)v2 + 157);
|
||||
*((_DWORD *)&T1 + 2) = *(_DWORD *)((char *)v2 + 161);
|
||||
A1 = *(DWORD *)((char *)v2 + 101);
|
||||
*((DWORD *)&A1 + 1) = *(DWORD *)((char *)v2 + 105);
|
||||
*((DWORD *)&A1 + 2) = *(DWORD *)((char *)v2 + 109);
|
||||
A2 = *(DWORD *)((char *)v2 + 113);
|
||||
*((DWORD *)&A2 + 1) = *(DWORD *)((char *)v2 + 117);
|
||||
*((DWORD *)&A2 + 2) = *(DWORD *)((char *)v2 + 121);
|
||||
B1 = *(DWORD *)((char *)v2 + 125);
|
||||
*((DWORD *)&B1 + 1) = *(DWORD *)((char *)v2 + 129);
|
||||
*((DWORD *)&B1 + 2) = *(DWORD *)((char *)v2 + 133);
|
||||
B2 = *(DWORD *)((char *)v2 + 137);
|
||||
*((DWORD *)&B2 + 1) = *(DWORD *)((char *)v2 + 141);
|
||||
*((DWORD *)&B2 + 2) = *(DWORD *)((char *)v2 + 145);
|
||||
T1 = *(DWORD *)((char *)v2 + 153);
|
||||
*((DWORD *)&T1 + 1) = *(DWORD *)((char *)v2 + 157);
|
||||
*((DWORD *)&T1 + 2) = *(DWORD *)((char *)v2 + 161);
|
||||
v5 = v4;
|
||||
RotatePt((struct vector_type *)&A1, flipper_sin_angle, v5, (TFlipperEdge *)((char *)v2 + 33));
|
||||
RotatePt((struct vector_type *)&A2, flipper_sin_angle, flipper_cos_angle, (TFlipperEdge *)((char *)v2 + 33));
|
||||
@@ -181,7 +181,7 @@ v10 = *(float *)((char *)this + 37) - a3,
|
||||
v10 * v10 + v9 * v9 <= *(float *)((char *)this + 53))
|
||||
|| (*(float *)&dword_102570C - a3) * (*(float *)&dword_102570C - a3) + (T1 - a2) * (T1 - a2) < *(float *)((char *)this + 57) )
|
||||
{
|
||||
v11 = *(_DWORD *)((char *)this + 21);
|
||||
v11 = *(DWORD *)((char *)this + 21);
|
||||
if ( *(float *)((char *)this + 69) < 0.0 )
|
||||
{
|
||||
v19 = v11 - 1;
|
||||
@@ -251,20 +251,20 @@ double __thiscall TFlipperEdge::FindCollisionDistance(TFlipperEdge *this, struct
|
||||
{
|
||||
struct ray_type *v2; // esi
|
||||
TFlipperEdge *v3; // ebx
|
||||
_DWORD *v4; // eax
|
||||
DWORD *v4; // eax
|
||||
double result; // st7
|
||||
int v6; // eax
|
||||
int v7; // ecx
|
||||
float *v8; // esi
|
||||
double v9; // st7
|
||||
float *v10; // eax
|
||||
_DWORD *v11; // edi
|
||||
DWORD *v11; // edi
|
||||
char *v12; // esi
|
||||
float v13; // eax
|
||||
char *v14; // esi
|
||||
_DWORD *v15; // edi
|
||||
_DWORD *v16; // edi
|
||||
_DWORD *v17; // esi
|
||||
DWORD *v15; // edi
|
||||
DWORD *v16; // edi
|
||||
DWORD *v17; // esi
|
||||
double v18; // st7
|
||||
float v19; // eax
|
||||
double v20; // st7
|
||||
@@ -272,12 +272,12 @@ int v21; // eax
|
||||
int v22; // esi
|
||||
int v23; // eax
|
||||
int v24; // edx
|
||||
_DWORD *v25; // esi
|
||||
DWORD *v25; // esi
|
||||
double v26; // st7
|
||||
_DWORD *v27; // esi
|
||||
DWORD *v27; // esi
|
||||
double v28; // st7
|
||||
_DWORD *v29; // edi
|
||||
_DWORD *v30; // esi
|
||||
DWORD *v29; // edi
|
||||
DWORD *v30; // esi
|
||||
double v31; // st7
|
||||
double v32; // st7
|
||||
float v33; // eax
|
||||
@@ -285,7 +285,7 @@ double v34; // st7
|
||||
double v35; // st6
|
||||
double v36; // st5
|
||||
double v37; // st4
|
||||
__int16 v38; // fps
|
||||
int v38; // fps
|
||||
double v39; // st6
|
||||
char v40; // ah
|
||||
bool v41; // c0
|
||||
@@ -315,14 +315,14 @@ float v63; // [esp+80h] [ebp-4h]
|
||||
v2 = a2;
|
||||
v3 = this;
|
||||
if ( *((float *)a2 + 8) > (double)*(float *)((char *)this + 205) )
|
||||
*(_DWORD *)((char *)this + 21) = 0;
|
||||
v4 = (_DWORD *)((char *)this + 197);
|
||||
if ( *(_DWORD *)((char *)this + 197) )
|
||||
*(DWORD *)((char *)this + 21) = 0;
|
||||
v4 = (DWORD *)((char *)this + 197);
|
||||
if ( *(DWORD *)((char *)this + 197) )
|
||||
{
|
||||
*v4 = 0;
|
||||
return 1000000000.0;
|
||||
}
|
||||
if ( *(_DWORD *)((char *)this + 21) )
|
||||
if ( *(DWORD *)((char *)this + 21) )
|
||||
{
|
||||
v18 = *(float *)((char *)this + 181) * *((float *)a2 + 6);
|
||||
v63 = *(float *)a2;
|
||||
@@ -346,19 +346,19 @@ v22 = (int)v2 + 12;
|
||||
v53 = *(float *)v22;
|
||||
v22 += 4;
|
||||
v54 = *(float *)v22;
|
||||
v55 = *(_DWORD *)(v22 + 4);
|
||||
v23 = *((_DWORD *)a2 + 7);
|
||||
v55 = *(DWORD *)(v22 + 4);
|
||||
v23 = *((DWORD *)a2 + 7);
|
||||
v50 = *(float *)a2;
|
||||
v51 = *((float *)a2 + 1);
|
||||
v52 = *((_DWORD *)a2 + 2);
|
||||
v52 = *((DWORD *)a2 + 2);
|
||||
v57 = v23;
|
||||
v56 = v60;
|
||||
result = distance_to_flipper((struct ray_type *)&v50, (struct ray_type *)&v44);
|
||||
if ( result < 1000000000.0 )
|
||||
{
|
||||
*(_DWORD *)((char *)v3 + 221) = *(_DWORD *)&v44;
|
||||
*(_DWORD *)((char *)v3 + 225) = v45;
|
||||
*(_DWORD *)((char *)v3 + 229) = v46;
|
||||
*(DWORD *)((char *)v3 + 221) = *(DWORD *)&v44;
|
||||
*(DWORD *)((char *)v3 + 225) = v45;
|
||||
*(DWORD *)((char *)v3 + 229) = v46;
|
||||
v35 = *(float *)((char *)v3 + 221) - v53 * 0.00001;
|
||||
*(float *)((char *)v3 + 221) = v35;
|
||||
v36 = *(float *)((char *)v3 + 225) - v54 * 0.00001;
|
||||
@@ -383,15 +383,15 @@ goto LABEL_47;
|
||||
LABEL_49:
|
||||
v43 = 0;
|
||||
}
|
||||
v15 = (_DWORD *)((char *)v3 + 89);
|
||||
if ( *(_DWORD *)((char *)v3 + 21) == 2 )
|
||||
v15 = (DWORD *)((char *)v3 + 89);
|
||||
if ( *(DWORD *)((char *)v3 + 21) == 2 )
|
||||
{
|
||||
v14 = (char *)&lineB;
|
||||
*(_DWORD *)((char *)v3 + 81) = v43 == 0;
|
||||
*(DWORD *)((char *)v3 + 81) = v43 == 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
*(_DWORD *)((char *)v3 + 81) = v43;
|
||||
*(DWORD *)((char *)v3 + 81) = v43;
|
||||
v14 = (char *)&lineA;
|
||||
}
|
||||
goto LABEL_25;
|
||||
@@ -403,14 +403,14 @@ if ( *((float *)a2 + 9) + *((float *)a2 + 8) <= v61 )
|
||||
return 1000000000.0;
|
||||
v2 = a2;
|
||||
}
|
||||
v24 = *(_DWORD *)((char *)v3 + 21);
|
||||
v24 = *(DWORD *)((char *)v3 + 21);
|
||||
if ( v24 != 1 || v21 == 5 )
|
||||
{
|
||||
if ( v24 != 2 || v21 == 4 )
|
||||
{
|
||||
v31 = *(float *)((char *)v3 + 33) - v63;
|
||||
*(_DWORD *)((char *)v3 + 81) = 0;
|
||||
*(_DWORD *)((char *)v3 + 85) = 1;
|
||||
*(DWORD *)((char *)v3 + 81) = 0;
|
||||
*(DWORD *)((char *)v3 + 85) = 1;
|
||||
v53 = v31;
|
||||
v54 = *(float *)((char *)v3 + 37) - v62;
|
||||
normalize_2d(&v53);
|
||||
@@ -439,27 +439,27 @@ v53 = -lineA;
|
||||
v26 = flt_1025684;
|
||||
}
|
||||
v54 = -v26;
|
||||
*(_DWORD *)((char *)v3 + 89) = *v25;
|
||||
*(DWORD *)((char *)v3 + 89) = *v25;
|
||||
v27 = v25 + 1;
|
||||
*(_DWORD *)((char *)v3 + 93) = *v27;
|
||||
*(_DWORD *)((char *)v3 + 97) = v27[1];
|
||||
*(_DWORD *)((char *)v3 + 85) = 0;
|
||||
*(_DWORD *)((char *)v3 + 81) = 1;
|
||||
*(DWORD *)((char *)v3 + 93) = *v27;
|
||||
*(DWORD *)((char *)v3 + 97) = v27[1];
|
||||
*(DWORD *)((char *)v3 + 85) = 0;
|
||||
*(DWORD *)((char *)v3 + 81) = 1;
|
||||
v57 = 990057071;
|
||||
v50 = *(float *)a2 - v53 * 5.0;
|
||||
v51 = *((float *)a2 + 1) - v54 * 5.0;
|
||||
v56 = *((float *)a2 + 6) + 10.0;
|
||||
v28 = distance_to_flipper((struct ray_type *)&v50, (struct ray_type *)&v44);
|
||||
*(_DWORD *)((char *)v3 + 185) = *(_DWORD *)&v47;
|
||||
*(_DWORD *)((char *)v3 + 189) = v48;
|
||||
*(_DWORD *)((char *)v3 + 193) = v49;
|
||||
*(DWORD *)((char *)v3 + 185) = *(DWORD *)&v47;
|
||||
*(DWORD *)((char *)v3 + 189) = v48;
|
||||
*(DWORD *)((char *)v3 + 193) = v49;
|
||||
if ( v28 >= 1000000000.0 )
|
||||
return 1000000000.0;
|
||||
v10 = (float *)((char *)v3 + 221);
|
||||
v12 = &v44;
|
||||
v11 = (_DWORD *)((char *)v3 + 221);
|
||||
v11 = (DWORD *)((char *)v3 + 221);
|
||||
LABEL_41:
|
||||
*v11 = *(_DWORD *)v12;
|
||||
*v11 = *(DWORD *)v12;
|
||||
v30 = v12 + 4;
|
||||
v29 = v11 + 1;
|
||||
*v29 = *v30;
|
||||
@@ -469,12 +469,12 @@ v29[1] = v30[1];
|
||||
return 0.0;
|
||||
}
|
||||
*v4 = 0;
|
||||
*(_DWORD *)((char *)this + 81) = 0;
|
||||
*(_DWORD *)((char *)this + 85) = 0;
|
||||
*(DWORD *)((char *)this + 81) = 0;
|
||||
*(DWORD *)((char *)this + 85) = 0;
|
||||
TFlipperEdge::set_control_points(this, *((float *)a2 + 8));
|
||||
TFlipperEdge::build_edges_in_motion(v3);
|
||||
*(float *)&v6 = COERCE_FLOAT(TFlipperEdge::is_ball_inside(v3, *(float *)a2, *((float *)a2 + 1)));
|
||||
v7 = *((_DWORD *)a2 + 7);
|
||||
v7 = *((DWORD *)a2 + 7);
|
||||
v61 = *(float *)&v6;
|
||||
v57 = v7;
|
||||
if ( *(float *)&v6 != 0.0 )
|
||||
@@ -482,18 +482,18 @@ if ( *(float *)&v6 != 0.0 )
|
||||
if ( Distance_Squared(
|
||||
*(float *)a2,
|
||||
*((float *)a2 + 1),
|
||||
*((_DWORD *)a2 + 2),
|
||||
*((DWORD *)a2 + 2),
|
||||
*(float *)((char *)v3 + 33),
|
||||
*(float *)((char *)v3 + 37),
|
||||
*(_DWORD *)((char *)v3 + 41)) >= *(float *)((char *)v3 + 61) )
|
||||
*(DWORD *)((char *)v3 + 41)) >= *(float *)((char *)v3 + 61) )
|
||||
{
|
||||
if ( Distance_Squared(
|
||||
*(float *)a2,
|
||||
*((float *)a2 + 1),
|
||||
*((_DWORD *)a2 + 2),
|
||||
*((DWORD *)a2 + 2),
|
||||
T1,
|
||||
*((float *)&T1 + 1),
|
||||
*((_DWORD *)&T1 + 2)) >= *(float *)((char *)v3 + 65) )
|
||||
*((DWORD *)&T1 + 2)) >= *(float *)((char *)v3 + 65) )
|
||||
{
|
||||
if ( LODWORD(v61) == 4 )
|
||||
{
|
||||
@@ -537,44 +537,44 @@ return 1000000000.0;
|
||||
}
|
||||
LABEL_20:
|
||||
v10 = (float *)((char *)v3 + 221);
|
||||
*(_DWORD *)((char *)v3 + 221) = *(_DWORD *)&v44;
|
||||
*(_DWORD *)((char *)v3 + 225) = v45;
|
||||
*(_DWORD *)((char *)v3 + 229) = v46;
|
||||
v11 = (_DWORD *)((char *)v3 + 185);
|
||||
*(DWORD *)((char *)v3 + 221) = *(DWORD *)&v44;
|
||||
*(DWORD *)((char *)v3 + 225) = v45;
|
||||
*(DWORD *)((char *)v3 + 229) = v46;
|
||||
v11 = (DWORD *)((char *)v3 + 185);
|
||||
v12 = &v47;
|
||||
goto LABEL_41;
|
||||
}
|
||||
v53 = *((float *)a2 + 3);
|
||||
v54 = *((float *)a2 + 4);
|
||||
v55 = *((_DWORD *)a2 + 5);
|
||||
v55 = *((DWORD *)a2 + 5);
|
||||
v13 = *((float *)a2 + 6);
|
||||
v50 = *(float *)a2;
|
||||
v51 = *((float *)a2 + 1);
|
||||
v52 = *((_DWORD *)a2 + 2);
|
||||
v52 = *((DWORD *)a2 + 2);
|
||||
v56 = v13;
|
||||
result = distance_to_flipper((struct ray_type *)&v50, (struct ray_type *)&v44);
|
||||
v14 = &v44;
|
||||
if ( result == 0.0 )
|
||||
{
|
||||
*(_DWORD *)((char *)v3 + 221) = *(_DWORD *)&v44;
|
||||
*(_DWORD *)((char *)v3 + 225) = v45;
|
||||
*(_DWORD *)((char *)v3 + 229) = v46;
|
||||
*(DWORD *)((char *)v3 + 221) = *(DWORD *)&v44;
|
||||
*(DWORD *)((char *)v3 + 225) = v45;
|
||||
*(DWORD *)((char *)v3 + 229) = v46;
|
||||
*(float *)((char *)v3 + 221) = *(float *)((char *)v3 + 221) - v53 * 0.00001;
|
||||
*(float *)((char *)v3 + 225) = *(float *)((char *)v3 + 225) - v54 * 0.00001;
|
||||
}
|
||||
else
|
||||
{
|
||||
v15 = (_DWORD *)((char *)v3 + 221);
|
||||
v15 = (DWORD *)((char *)v3 + 221);
|
||||
LABEL_25:
|
||||
*v15 = *(_DWORD *)v14;
|
||||
*v15 = *(DWORD *)v14;
|
||||
v17 = v14 + 4;
|
||||
v16 = v15 + 1;
|
||||
*v16 = *v17;
|
||||
v16[1] = v17[1];
|
||||
}
|
||||
*(_DWORD *)((char *)v3 + 185) = *(_DWORD *)&v47;
|
||||
*(_DWORD *)((char *)v3 + 189) = v48;
|
||||
*(_DWORD *)((char *)v3 + 193) = v49;
|
||||
*(DWORD *)((char *)v3 + 185) = *(DWORD *)&v47;
|
||||
*(DWORD *)((char *)v3 + 189) = v48;
|
||||
*(DWORD *)((char *)v3 + 193) = v49;
|
||||
return result;
|
||||
}
|
||||
// 1025684: using guessed type float flt_1025684;
|
||||
@@ -604,11 +604,11 @@ float v19; // ST14_4
|
||||
float v20; // [esp+14h] [ebp-4h]
|
||||
|
||||
v3 = this;
|
||||
v4 = *(_DWORD *)((char *)this + 21);
|
||||
*(_DWORD *)((char *)this + 197) = 1;
|
||||
v4 = *(DWORD *)((char *)this + 21);
|
||||
*(DWORD *)((char *)this + 197) = 1;
|
||||
if ( !v4 )
|
||||
goto LABEL_4;
|
||||
if ( *(_DWORD *)((char *)this + 81) )
|
||||
if ( *(DWORD *)((char *)this + 81) )
|
||||
{
|
||||
v5 = *(float *)((char *)this + 221) - *(float *)((char *)this + 33);
|
||||
v6 = *(float *)((char *)this + 225) - *(float *)((char *)this + 37);
|
||||
@@ -645,7 +645,7 @@ v19,
|
||||
v18);
|
||||
return;
|
||||
}
|
||||
if ( !v4 || !*(_DWORD *)((char *)this + 85) )
|
||||
if ( !v4 || !*(DWORD *)((char *)this + 85) )
|
||||
goto LABEL_4;
|
||||
v12 = (TFlipperEdge *)((char *)this + 221);
|
||||
v13 = *(float *)((char *)v3 + 221) - *(float *)((char *)v3 + 33);
|
||||
@@ -673,28 +673,28 @@ switch ( a2 )
|
||||
{
|
||||
case 1:
|
||||
v5 = TFlipperEdge::flipper_angle(this, a3);
|
||||
v6 = *(_DWORD *)((char *)this + 69);
|
||||
v6 = *(DWORD *)((char *)this + 69);
|
||||
*(float *)((char *)this + 73) = v5;
|
||||
*(_DWORD *)((char *)this + 77) = v6;
|
||||
v4 = *(_DWORD *)((char *)this + 213);
|
||||
*(DWORD *)((char *)this + 77) = v6;
|
||||
v4 = *(DWORD *)((char *)this + 213);
|
||||
goto LABEL_7;
|
||||
case 2:
|
||||
v3 = TFlipperEdge::flipper_angle(this, a3);
|
||||
v4 = *(_DWORD *)((char *)this + 217);
|
||||
v4 = *(DWORD *)((char *)this + 217);
|
||||
*(float *)((char *)this + 73) = v3;
|
||||
*(float *)((char *)this + 77) = 0.0;
|
||||
LABEL_7:
|
||||
*(_DWORD *)((char *)this + 209) = v4;
|
||||
*(DWORD *)((char *)this + 209) = v4;
|
||||
break;
|
||||
case 1024:
|
||||
*(_DWORD *)((char *)this + 21) = 0;
|
||||
*(DWORD *)((char *)this + 21) = 0;
|
||||
*(float *)((char *)this + 77) = 0.0;
|
||||
return;
|
||||
}
|
||||
if ( !*(_DWORD *)((char *)this + 21) )
|
||||
if ( !*(DWORD *)((char *)this + 21) )
|
||||
*(float *)((char *)this + 201) = a3;
|
||||
v7 = *(float *)((char *)this + 209);
|
||||
*(_DWORD *)((char *)this + 21) = a2;
|
||||
*(DWORD *)((char *)this + 21) = a2;
|
||||
*(float *)((char *)this + 205) = v7 + *(float *)((char *)this + 201);
|
||||
}
|
||||
|
||||
@@ -758,7 +758,7 @@ v13 = this;
|
||||
TEdgeSegment::TEdgeSegment(this, a2, a3, a4);
|
||||
*(float *)((char *)v13 + 25) = a12;
|
||||
*(float *)((char *)v13 + 29) = a13;
|
||||
*(_DWORD *)v13 = &TFlipperEdge::vftable;
|
||||
*(DWORD *)v13 = &TFlipperEdge::vftable;
|
||||
v46 = *(float *)a6;
|
||||
v47 = *((float *)a6 + 1);
|
||||
v48 = *((float *)a6 + 2);
|
||||
@@ -776,10 +776,10 @@ v15 = v48 + *(float *)((char *)a5 + 282);
|
||||
v16 = v46;
|
||||
*(float *)((char *)v13 + 153) = v49;
|
||||
v52 = v15;
|
||||
*(_DWORD *)((char *)v13 + 157) = LODWORD(v50);
|
||||
*(DWORD *)((char *)v13 + 157) = LODWORD(v50);
|
||||
*(float *)((char *)v13 + 45) = v15;
|
||||
v17 = *(float *)((char *)v13 + 49) * 1.01;
|
||||
*(_DWORD *)((char *)v13 + 161) = HIDWORD(v50);
|
||||
*(DWORD *)((char *)v13 + 161) = HIDWORD(v50);
|
||||
*(float *)((char *)v13 + 65) = v17 * v17;
|
||||
*(float *)((char *)v13 + 165) = v36;
|
||||
*(float *)((char *)v13 + 169) = v37;
|
||||
@@ -807,7 +807,7 @@ v43 = 0.0;
|
||||
cross(&v39, &v41, &v33);
|
||||
if ( v35 < 0.0 )
|
||||
*(float *)((char *)v13 + 69) = -*(float *)((char *)v13 + 69);
|
||||
*(_DWORD *)((char *)v13 + 21) = 0;
|
||||
*(DWORD *)((char *)v13 + 21) = 0;
|
||||
*(float *)((char *)v13 + 77) = 0.0;
|
||||
v44 = v53;
|
||||
v45 = v51;
|
||||
@@ -849,9 +849,9 @@ v50 = v30;
|
||||
v31 = Distance((struct vector_type *)&v39, (struct vector_type *)&v33);
|
||||
*(float *)((char *)v13 + 181) = v50 / (v31 / *(float *)((char *)v13 + 49) + v31 / *(float *)((char *)v13 + 49));
|
||||
TFlipperEdge::place_in_grid(v13);
|
||||
*(_DWORD *)((char *)v13 + 197) = 0;
|
||||
*(DWORD *)((char *)v13 + 197) = 0;
|
||||
*(float *)((char *)v13 + 201) = 0.0;
|
||||
*(_DWORD *)((char *)v13 + 81) = 0;
|
||||
*(DWORD *)((char *)v13 + 81) = 0;
|
||||
*(float *)((char *)v13 + 205) = 0.0;
|
||||
result = v13;
|
||||
*(float *)((char *)v13 + 209) = 0.0;
|
||||
|
||||
+11
-11
@@ -5,25 +5,25 @@ int __thiscall TGate::Message(TGate *this, int a2, float a3)
|
||||
{
|
||||
TGate *v3; // esi
|
||||
int v4; // eax
|
||||
_DWORD *v5; // ST00_4
|
||||
DWORD *v5; // ST00_4
|
||||
|
||||
v3 = this;
|
||||
if ( a2 != 1020 )
|
||||
{
|
||||
if ( a2 == 53 )
|
||||
{
|
||||
v5 = *(_DWORD **)((char *)this + 26);
|
||||
v5 = *(DWORD **)((char *)this + 26);
|
||||
*((_BYTE *)this + 5) = 0;
|
||||
render_sprite_set_bitmap(v5, 0);
|
||||
loader_play_sound(*(_DWORD *)((char *)v3 + 82));
|
||||
loader_play_sound(*(DWORD *)((char *)v3 + 82));
|
||||
}
|
||||
else if ( a2 == 54 || a2 == 1024 )
|
||||
{
|
||||
v4 = *(_DWORD *)((char *)this + 34);
|
||||
v4 = *(DWORD *)((char *)this + 34);
|
||||
*((_BYTE *)this + 5) = 1;
|
||||
render_sprite_set_bitmap(*(_DWORD **)((char *)this + 26), *(_DWORD *)(*(_DWORD *)(v4 + 4) + 8));
|
||||
render_sprite_set_bitmap(*(DWORD **)((char *)this + 26), *(DWORD *)(*(DWORD *)(v4 + 4) + 8));
|
||||
if ( a2 == 54 )
|
||||
loader_play_sound(*(_DWORD *)((char *)v3 + 78));
|
||||
loader_play_sound(*(DWORD *)((char *)v3 + 78));
|
||||
}
|
||||
control_handler(a2, v3);
|
||||
}
|
||||
@@ -41,13 +41,13 @@ int v8; // [esp+40h] [ebp-Ch]
|
||||
|
||||
v3 = this;
|
||||
TCollisionComponent::TCollisionComponent(this, a2, a3, 1);
|
||||
*(_DWORD *)v3 = &TGate::vftable;
|
||||
*(DWORD *)v3 = &TGate::vftable;
|
||||
loader_query_visual(a3, 0, &v6);
|
||||
*(_DWORD *)((char *)v3 + 78) = v7;
|
||||
*(_DWORD *)((char *)v3 + 82) = v8;
|
||||
v4 = *(_DWORD *)((char *)v3 + 34);
|
||||
*(DWORD *)((char *)v3 + 78) = v7;
|
||||
*(DWORD *)((char *)v3 + 82) = v8;
|
||||
v4 = *(DWORD *)((char *)v3 + 34);
|
||||
*((_BYTE *)v3 + 5) = 1;
|
||||
render_sprite_set_bitmap(*(_DWORD **)((char *)v3 + 26), *(_DWORD *)(*(_DWORD *)(v4 + 4) + 8));
|
||||
render_sprite_set_bitmap(*(DWORD **)((char *)v3 + 26), *(DWORD *)(*(DWORD *)(v4 + 4) + 8));
|
||||
control_handler(1024, v3);
|
||||
return v3;
|
||||
}
|
||||
|
||||
+58
-58
@@ -1,10 +1,10 @@
|
||||
#include "../../pinball.h"
|
||||
|
||||
//----- (010169A4) --------------------------------------------------------
|
||||
void __stdcall THole::TimerExpired(int a1, void *a2)
|
||||
void THole::TimerExpired(int a1, void *a2)
|
||||
{
|
||||
*(_DWORD *)((char *)a2 + 86) = 0;
|
||||
*(_DWORD *)((char *)a2 + 82) = 1;
|
||||
*(DWORD *)((char *)a2 + 86) = 0;
|
||||
*(DWORD *)((char *)a2 + 82) = 1;
|
||||
}
|
||||
|
||||
//----- (010169C0) --------------------------------------------------------
|
||||
@@ -22,12 +22,12 @@ float v11; // [esp+4h] [ebp-Ch]
|
||||
float v12; // [esp+8h] [ebp-8h]
|
||||
|
||||
v3 = this;
|
||||
if ( *(_DWORD *)((char *)this + 78) )
|
||||
if ( *(DWORD *)((char *)this + 78) )
|
||||
{
|
||||
if ( *(_DWORD *)((char *)this + 82) )
|
||||
if ( *(DWORD *)((char *)this + 82) )
|
||||
{
|
||||
v4 = *(float *)((char *)a2 + 62)
|
||||
- *(float *)(*(_DWORD *)((char *)this + 30) + 270)
|
||||
- *(float *)(*(DWORD *)((char *)this + 30) + 270)
|
||||
* *(float *)((char *)a2 + 74)
|
||||
* *(float *)((char *)this + 98);
|
||||
*(float *)((char *)a2 + 62) = v4;
|
||||
@@ -35,18 +35,18 @@ v5 = v4 + *(float *)((char *)a2 + 50);
|
||||
*(float *)((char *)a2 + 50) = v5;
|
||||
if ( v5 <= *(float *)((char *)this + 102) )
|
||||
{
|
||||
v6 = *(_DWORD *)((char *)this + 102);
|
||||
*(_DWORD *)((char *)this + 78) = 0;
|
||||
*(_DWORD *)((char *)this + 82) = 0;
|
||||
*(_DWORD *)((char *)a2 + 50) = v6;
|
||||
v7 = *(_DWORD *)((char *)this + 106);
|
||||
v6 = *(DWORD *)((char *)this + 102);
|
||||
*(DWORD *)((char *)this + 78) = 0;
|
||||
*(DWORD *)((char *)this + 82) = 0;
|
||||
*(DWORD *)((char *)a2 + 50) = v6;
|
||||
v7 = *(DWORD *)((char *)this + 106);
|
||||
*(float *)((char *)a2 + 62) = 0.0;
|
||||
*(_DWORD *)((char *)a2 + 110) = v7;
|
||||
*(DWORD *)((char *)a2 + 110) = v7;
|
||||
*(float *)((char *)a2 + 58) = 0.0;
|
||||
*(_DWORD *)((char *)a2 + 106) = 0;
|
||||
*(DWORD *)((char *)a2 + 106) = 0;
|
||||
*(float *)((char *)a2 + 54) = 0.0;
|
||||
*(float *)((char *)a2 + 66) = 0.0;
|
||||
loader_play_sound(*(_DWORD *)((char *)this + 70));
|
||||
loader_play_sound(*(DWORD *)((char *)this + 70));
|
||||
control_handler(58, v3);
|
||||
}
|
||||
}
|
||||
@@ -80,12 +80,12 @@ int __thiscall THole::Message(THole *this, int a2, float a3)
|
||||
THole *v3; // esi
|
||||
|
||||
v3 = this;
|
||||
if ( a2 == 1024 && *(_DWORD *)((char *)this + 78) )
|
||||
if ( a2 == 1024 && *(DWORD *)((char *)this + 78) )
|
||||
{
|
||||
if ( *(_DWORD *)((char *)this + 86) )
|
||||
timer_kill(*(_DWORD *)((char *)this + 86));
|
||||
*(_DWORD *)((char *)v3 + 86) = 0;
|
||||
*(_DWORD *)((char *)v3 + 82) = 1;
|
||||
if ( *(DWORD *)((char *)this + 86) )
|
||||
timer_kill(*(DWORD *)((char *)this + 86));
|
||||
*(DWORD *)((char *)v3 + 86) = 0;
|
||||
*(DWORD *)((char *)v3 + 82) = 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -97,20 +97,20 @@ THole *v6; // esi
|
||||
int v7; // ecx
|
||||
|
||||
v6 = this;
|
||||
if ( !*(_DWORD *)((char *)this + 78) )
|
||||
if ( !*(DWORD *)((char *)this + 78) )
|
||||
{
|
||||
*(_DWORD *)((char *)this + 82) = 0;
|
||||
*(_DWORD *)((char *)this + 66) = 1315859240;
|
||||
*(_DWORD *)((char *)this + 78) = 1;
|
||||
*(_DWORD *)((char *)a2 + 106) = this;
|
||||
*(_DWORD *)((char *)a2 + 42) = *(_DWORD *)((char *)this + 114);
|
||||
v7 = *(_DWORD *)((char *)this + 118);
|
||||
*(DWORD *)((char *)this + 82) = 0;
|
||||
*(DWORD *)((char *)this + 66) = 1315859240;
|
||||
*(DWORD *)((char *)this + 78) = 1;
|
||||
*(DWORD *)((char *)a2 + 106) = this;
|
||||
*(DWORD *)((char *)a2 + 42) = *(DWORD *)((char *)this + 114);
|
||||
v7 = *(DWORD *)((char *)this + 118);
|
||||
*(float *)((char *)a2 + 62) = 0.0;
|
||||
*(_DWORD *)((char *)a2 + 46) = v7;
|
||||
*(_DWORD *)((char *)v6 + 86) = timer_set(0.5, (int)v6, (int)THole::TimerExpired);
|
||||
if ( !*(_DWORD *)(*(_DWORD *)((char *)v6 + 30) + 370) )
|
||||
*(DWORD *)((char *)a2 + 46) = v7;
|
||||
*(DWORD *)((char *)v6 + 86) = timer_set(0.5, (int)v6, (int)THole::TimerExpired);
|
||||
if ( !*(DWORD *)(*(DWORD *)((char *)v6 + 30) + 370) )
|
||||
{
|
||||
loader_play_sound(*(_DWORD *)((char *)v6 + 74));
|
||||
loader_play_sound(*(DWORD *)((char *)v6 + 74));
|
||||
control_handler(57, v6);
|
||||
}
|
||||
}
|
||||
@@ -120,8 +120,8 @@ control_handler(57, v6);
|
||||
THole *__thiscall THole::THole(THole *this, struct TPinballTable *a2, int a3)
|
||||
{
|
||||
THole *v3; // ebx
|
||||
_DWORD *v4; // eax
|
||||
_DWORD *v5; // eax
|
||||
DWORD *v4; // eax
|
||||
DWORD *v5; // eax
|
||||
int v6; // eax
|
||||
float *v7; // edi
|
||||
double v8; // st7
|
||||
@@ -129,7 +129,7 @@ TCircle *v9; // eax
|
||||
float *v10; // eax
|
||||
unsigned int v11; // ecx
|
||||
char v13; // [esp+14h] [ebp-5Ch]
|
||||
_DWORD *v14; // [esp+20h] [ebp-50h]
|
||||
DWORD *v14; // [esp+20h] [ebp-50h]
|
||||
unsigned int v15; // [esp+48h] [ebp-28h]
|
||||
int v16; // [esp+5Ch] [ebp-14h]
|
||||
int v17; // [esp+60h] [ebp-10h]
|
||||
@@ -141,33 +141,33 @@ TCircle *v22; // [esp+78h] [ebp+8h]
|
||||
|
||||
v3 = this;
|
||||
TCollisionComponent::TCollisionComponent(this, a2, a3, 0);
|
||||
*(_DWORD *)v3 = &THole::vftable;
|
||||
*(_DWORD *)((char *)v3 + 94) = 1028443341;
|
||||
*(_DWORD *)((char *)v3 + 6) = 0;
|
||||
*(_DWORD *)((char *)v3 + 86) = 0;
|
||||
*(_DWORD *)((char *)v3 + 78) = 0;
|
||||
v4 = (_DWORD *)loader_query_float_attribute(a3, 0, 407);
|
||||
*(DWORD *)v3 = &THole::vftable;
|
||||
*(DWORD *)((char *)v3 + 94) = 1028443341;
|
||||
*(DWORD *)((char *)v3 + 6) = 0;
|
||||
*(DWORD *)((char *)v3 + 86) = 0;
|
||||
*(DWORD *)((char *)v3 + 78) = 0;
|
||||
v4 = (DWORD *)loader_query_float_attribute(a3, 0, 407);
|
||||
if ( v4 )
|
||||
*(_DWORD *)((char *)v3 + 90) = *v4;
|
||||
*(DWORD *)((char *)v3 + 90) = *v4;
|
||||
else
|
||||
*(_DWORD *)((char *)v3 + 90) = 1048576000;
|
||||
v5 = (_DWORD *)loader_query_float_attribute(a3, 0, 701);
|
||||
*(DWORD *)((char *)v3 + 90) = 1048576000;
|
||||
v5 = (DWORD *)loader_query_float_attribute(a3, 0, 701);
|
||||
if ( v5 )
|
||||
*(_DWORD *)((char *)v3 + 98) = *v5;
|
||||
*(DWORD *)((char *)v3 + 98) = *v5;
|
||||
else
|
||||
*(_DWORD *)((char *)v3 + 98) = 1056964608;
|
||||
*(DWORD *)((char *)v3 + 98) = 1056964608;
|
||||
v21 = *(float *)loader_query_float_attribute(a3, 0, 306);
|
||||
*(_DWORD *)((char *)v3 + 110) = *(_DWORD *)loader_query_float_attribute(a3, 0, 305);
|
||||
*(DWORD *)((char *)v3 + 110) = *(DWORD *)loader_query_float_attribute(a3, 0, 305);
|
||||
loader_query_visual(a3, 0, &v13);
|
||||
v6 = (int)v14;
|
||||
*(_DWORD *)((char *)v3 + 114) = *v14;
|
||||
*(DWORD *)((char *)v3 + 114) = *v14;
|
||||
v7 = (float *)(v6 + 8);
|
||||
*(_DWORD *)((char *)v3 + 118) = *(_DWORD *)(v6 + 4);
|
||||
*(DWORD *)((char *)v3 + 118) = *(DWORD *)(v6 + 4);
|
||||
v8 = v21 * *(float *)(v6 + 8);
|
||||
v20 = (struct vector_type *)v6;
|
||||
*(float *)((char *)v3 + 126) = v8;
|
||||
if ( 0.0 == v8 )
|
||||
*(_DWORD *)((char *)v3 + 126) = 981668463;
|
||||
*(DWORD *)((char *)v3 + 126) = 981668463;
|
||||
v9 = (TCircle *)operator new(0x25u);
|
||||
if ( v9 )
|
||||
v22 = TCircle::TCircle(v9, v3, (char *)v3 + 5, v15, v20, *(float *)((char *)v3 + 126));
|
||||
@@ -175,21 +175,21 @@ else
|
||||
v22 = 0;
|
||||
if ( v22 )
|
||||
{
|
||||
(*(void (**)(void))(*(_DWORD *)v22 + 8))();
|
||||
(*(void (**)(void))(*(DWORD *)v22 + 8))();
|
||||
objlist_class::Add((THole *)((char *)v3 + 42), (void *)v22);
|
||||
}
|
||||
*(float *)((char *)v3 + 126) = *v7 * *v7;
|
||||
*(_DWORD *)((char *)v3 + 102) = *(_DWORD *)(loader_query_float_attribute(a3, 0, 408) + 8);
|
||||
*(DWORD *)((char *)v3 + 102) = *(DWORD *)(loader_query_float_attribute(a3, 0, 408) + 8);
|
||||
v10 = (float *)loader_query_float_attribute(a3, 0, 1304);
|
||||
*(_DWORD *)((char *)v3 + 106) = (signed __int64)_floor(*v10);
|
||||
v19 = *(_DWORD *)((char *)v3 + 126);
|
||||
v16 = *(_DWORD *)((char *)v3 + 114);
|
||||
v17 = *(_DWORD *)((char *)v3 + 118);
|
||||
*(_DWORD *)((char *)v3 + 130) = (char *)v3 + 5;
|
||||
*(DWORD *)((char *)v3 + 106) = (signed __int64)_floor(*v10);
|
||||
v19 = *(DWORD *)((char *)v3 + 126);
|
||||
v16 = *(DWORD *)((char *)v3 + 114);
|
||||
v17 = *(DWORD *)((char *)v3 + 118);
|
||||
*(DWORD *)((char *)v3 + 130) = (char *)v3 + 5;
|
||||
v11 = v15;
|
||||
v18 = *(_DWORD *)((char *)v3 + 122);
|
||||
*(_DWORD *)((char *)v3 + 138) = v3;
|
||||
*(_DWORD *)((char *)v3 + 134) = v11;
|
||||
v18 = *(DWORD *)((char *)v3 + 122);
|
||||
*(DWORD *)((char *)v3 + 138) = v3;
|
||||
*(DWORD *)((char *)v3 + 134) = v11;
|
||||
edges_insert_circle((struct circle_type *)&v16, 0, (THole *)((char *)v3 + 130));
|
||||
return v3;
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
/* 112 */
|
||||
struct THole;
|
||||
|
||||
void __stdcall THole::TimerExpired(int, void*); // idb
|
||||
void THole::TimerExpired(int, void*); // idb
|
||||
int __thiscall THole::FieldEffect(THole* this, struct TBall*, struct vector_type*); // idb
|
||||
int __thiscall THole::Message(THole* this, int, float); // idb
|
||||
void __thiscall THole::Collision(THole* this, struct TBall*, struct vector_type*, struct vector_type*, float, struct TEdgeSegment*); // idb
|
||||
|
||||
@@ -1,40 +1,40 @@
|
||||
#include "../../pinball.h"
|
||||
|
||||
//----- (0101663F) --------------------------------------------------------
|
||||
void __stdcall TKickback::TimerExpired(int a1, struct TPinballComponent *a2)
|
||||
void TKickback::TimerExpired(int a1, struct TPinballComponent *a2)
|
||||
{
|
||||
int v2; // eax
|
||||
int v3; // ST10_4
|
||||
int v4; // eax
|
||||
int v5; // eax
|
||||
|
||||
if ( *(_DWORD *)((char *)a2 + 90) )
|
||||
if ( *(DWORD *)((char *)a2 + 90) )
|
||||
{
|
||||
*(float *)((char *)a2 + 66) = 0.0;
|
||||
v2 = timer_set(*(float *)((char *)a2 + 82), (int)a2, (int)TKickback::TimerExpired);
|
||||
v3 = *(_DWORD *)((char *)a2 + 74);
|
||||
*(_DWORD *)((char *)a2 + 86) = v2;
|
||||
v3 = *(DWORD *)((char *)a2 + 74);
|
||||
*(DWORD *)((char *)a2 + 86) = v2;
|
||||
loader_play_sound(v3);
|
||||
v4 = *(_DWORD *)((char *)a2 + 34);
|
||||
v4 = *(DWORD *)((char *)a2 + 34);
|
||||
if ( v4 )
|
||||
render_sprite_set(
|
||||
*(_DWORD **)((char *)a2 + 26),
|
||||
*(_DWORD *)(*(_DWORD *)(v4 + 4) + 12),
|
||||
*(_DWORD *)(*(_DWORD *)(*(_DWORD *)((char *)a2 + 38) + 4) + 12),
|
||||
*(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v4 + 4) + 12) + 29) - *(_DWORD *)(*(_DWORD *)((char *)a2 + 30) + 234),
|
||||
*(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v4 + 4) + 12) + 33) - *(_DWORD *)(*(_DWORD *)((char *)a2 + 30) + 238));
|
||||
*(DWORD **)((char *)a2 + 26),
|
||||
*(DWORD *)(*(DWORD *)(v4 + 4) + 12),
|
||||
*(DWORD *)(*(DWORD *)(*(DWORD *)((char *)a2 + 38) + 4) + 12),
|
||||
*(DWORD *)(*(DWORD *)(*(DWORD *)(v4 + 4) + 12) + 29) - *(DWORD *)(*(DWORD *)((char *)a2 + 30) + 234),
|
||||
*(DWORD *)(*(DWORD *)(*(DWORD *)(v4 + 4) + 12) + 33) - *(DWORD *)(*(DWORD *)((char *)a2 + 30) + 238));
|
||||
}
|
||||
else
|
||||
{
|
||||
v5 = *(_DWORD *)((char *)a2 + 34);
|
||||
v5 = *(DWORD *)((char *)a2 + 34);
|
||||
if ( v5 )
|
||||
render_sprite_set(
|
||||
*(_DWORD **)((char *)a2 + 26),
|
||||
*(_DWORD *)(*(_DWORD *)(v5 + 4) + 8),
|
||||
*(_DWORD *)(*(_DWORD *)(*(_DWORD *)((char *)a2 + 38) + 4) + 8),
|
||||
*(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v5 + 4) + 8) + 29) - *(_DWORD *)(*(_DWORD *)((char *)a2 + 30) + 234),
|
||||
*(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v5 + 4) + 8) + 33) - *(_DWORD *)(*(_DWORD *)((char *)a2 + 30) + 238));
|
||||
*(_DWORD *)((char *)a2 + 86) = 0;
|
||||
*(DWORD **)((char *)a2 + 26),
|
||||
*(DWORD *)(*(DWORD *)(v5 + 4) + 8),
|
||||
*(DWORD *)(*(DWORD *)(*(DWORD *)((char *)a2 + 38) + 4) + 8),
|
||||
*(DWORD *)(*(DWORD *)(*(DWORD *)(v5 + 4) + 8) + 29) - *(DWORD *)(*(DWORD *)((char *)a2 + 30) + 234),
|
||||
*(DWORD *)(*(DWORD *)(*(DWORD *)(v5 + 4) + 8) + 33) - *(DWORD *)(*(DWORD *)((char *)a2 + 30) + 238));
|
||||
*(DWORD *)((char *)a2 + 86) = 0;
|
||||
control_handler(60, a2);
|
||||
}
|
||||
}
|
||||
@@ -45,14 +45,14 @@ int __thiscall TKickback::Message(TKickback *this, int a2, float a3)
|
||||
TKickback *v3; // esi
|
||||
|
||||
v3 = this;
|
||||
if ( (a2 == 1011 || a2 == 1024) && *(_DWORD *)((char *)this + 86) )
|
||||
if ( (a2 == 1011 || a2 == 1024) && *(DWORD *)((char *)this + 86) )
|
||||
{
|
||||
timer_kill(*(_DWORD *)((char *)this + 86));
|
||||
if ( *(_DWORD *)((char *)v3 + 34) )
|
||||
render_sprite_set_bitmap(*(_DWORD **)((char *)v3 + 26), 0);
|
||||
*(_DWORD *)((char *)v3 + 86) = 0;
|
||||
*(_DWORD *)((char *)v3 + 90) = 0;
|
||||
*(_DWORD *)((char *)v3 + 66) = 1315859240;
|
||||
timer_kill(*(DWORD *)((char *)this + 86));
|
||||
if ( *(DWORD *)((char *)v3 + 34) )
|
||||
render_sprite_set_bitmap(*(DWORD **)((char *)v3 + 26), 0);
|
||||
*(DWORD *)((char *)v3 + 86) = 0;
|
||||
*(DWORD *)((char *)v3 + 90) = 0;
|
||||
*(DWORD *)((char *)v3 + 66) = 1315859240;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -64,7 +64,7 @@ TKickback *v6; // esi
|
||||
float v7; // ST10_4
|
||||
|
||||
v6 = this;
|
||||
if ( *(_DWORD *)(*(_DWORD *)((char *)this + 30) + 370) )
|
||||
if ( *(DWORD *)(*(DWORD *)((char *)this + 30) + 370) )
|
||||
{
|
||||
basic_collision(
|
||||
a2,
|
||||
@@ -77,15 +77,15 @@ a4,
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( !*(_DWORD *)((char *)this + 90) )
|
||||
if ( !*(DWORD *)((char *)this + 90) )
|
||||
{
|
||||
v7 = *(float *)((char *)this + 78);
|
||||
*(_DWORD *)((char *)this + 66) = 1315859240;
|
||||
*(_DWORD *)((char *)this + 90) = 1;
|
||||
*(_DWORD *)((char *)this + 86) = timer_set(v7, (int)this, (int)TKickback::TimerExpired);
|
||||
*(DWORD *)((char *)this + 66) = 1315859240;
|
||||
*(DWORD *)((char *)this + 90) = 1;
|
||||
*(DWORD *)((char *)this + 86) = timer_set(v7, (int)this, (int)TKickback::TimerExpired);
|
||||
}
|
||||
if ( TCollisionComponent::DefaultCollision(v6, a2, a3, a4) )
|
||||
*(_DWORD *)((char *)v6 + 90) = 0;
|
||||
*(DWORD *)((char *)v6 + 90) = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -96,13 +96,13 @@ TKickback *v3; // esi
|
||||
|
||||
v3 = this;
|
||||
TCollisionComponent::TCollisionComponent(this, a2, a3, 1);
|
||||
*(_DWORD *)((char *)v3 + 6) = 0;
|
||||
*(_DWORD *)((char *)v3 + 86) = 0;
|
||||
*(_DWORD *)((char *)v3 + 90) = 0;
|
||||
*(_DWORD *)v3 = &TKickback::vftable;
|
||||
*(_DWORD *)((char *)v3 + 78) = 1060320051;
|
||||
*(_DWORD *)((char *)v3 + 82) = 1036831949;
|
||||
*(_DWORD *)((char *)v3 + 66) = 1315859240;
|
||||
*(DWORD *)((char *)v3 + 6) = 0;
|
||||
*(DWORD *)((char *)v3 + 86) = 0;
|
||||
*(DWORD *)((char *)v3 + 90) = 0;
|
||||
*(DWORD *)v3 = &TKickback::vftable;
|
||||
*(DWORD *)((char *)v3 + 78) = 1060320051;
|
||||
*(DWORD *)((char *)v3 + 82) = 1036831949;
|
||||
*(DWORD *)((char *)v3 + 66) = 1315859240;
|
||||
return v3;
|
||||
}
|
||||
// 1002668: using guessed type void *TKickback::vftable;
|
||||
@@ -10,7 +10,7 @@
|
||||
/* 110 */
|
||||
struct TKickback;
|
||||
|
||||
void __stdcall TKickback::TimerExpired(int, struct TPinballComponent*); // idb
|
||||
void TKickback::TimerExpired(int, struct TPinballComponent*); // idb
|
||||
int __thiscall TKickback::Message(TKickback* this, int, float); // idb
|
||||
void __thiscall TKickback::Collision(TKickback* this, struct TBall*, struct vector_type*, struct vector_type*, float, struct TEdgeSegment*); // idb
|
||||
TKickback* __thiscall TKickback::TKickback(TKickback* this, struct TPinballTable* a2, int a3);
|
||||
|
||||
@@ -6,38 +6,38 @@ void __thiscall TKickout::Collision(TKickout *this, struct TBall *a2, struct vec
|
||||
struct TPinballComponent *v6; // esi
|
||||
|
||||
v6 = this;
|
||||
if ( !*(_DWORD *)((char *)this + 78) )
|
||||
if ( !*(DWORD *)((char *)this + 78) )
|
||||
{
|
||||
*(_DWORD *)((char *)this + 102) = a2;
|
||||
*(_DWORD *)((char *)this + 66) = 1315859240;
|
||||
*(_DWORD *)((char *)this + 78) = 1;
|
||||
*(_DWORD *)((char *)a2 + 106) = this;
|
||||
*(_DWORD *)((char *)a2 + 42) = *(_DWORD *)((char *)this + 110);
|
||||
*(_DWORD *)((char *)a2 + 46) = *(_DWORD *)((char *)this + 114);
|
||||
*(_DWORD *)((char *)this + 126) = *(_DWORD *)((char *)a2 + 50);
|
||||
*(_DWORD *)((char *)a2 + 50) = *(_DWORD *)((char *)this + 98);
|
||||
if ( *(_DWORD *)(*(_DWORD *)((char *)this + 30) + 370) )
|
||||
*(DWORD *)((char *)this + 102) = a2;
|
||||
*(DWORD *)((char *)this + 66) = 1315859240;
|
||||
*(DWORD *)((char *)this + 78) = 1;
|
||||
*(DWORD *)((char *)a2 + 106) = this;
|
||||
*(DWORD *)((char *)a2 + 42) = *(DWORD *)((char *)this + 110);
|
||||
*(DWORD *)((char *)a2 + 46) = *(DWORD *)((char *)this + 114);
|
||||
*(DWORD *)((char *)this + 126) = *(DWORD *)((char *)a2 + 50);
|
||||
*(DWORD *)((char *)a2 + 50) = *(DWORD *)((char *)this + 98);
|
||||
if ( *(DWORD *)(*(DWORD *)((char *)this + 30) + 370) )
|
||||
{
|
||||
(**(void (__thiscall ***)(TKickout *, signed int, _DWORD))this)(this, 55, 0.1);
|
||||
(**(void (__thiscall ***)(TKickout *, signed int, DWORD))this)(this, 55, 0.1);
|
||||
}
|
||||
else
|
||||
{
|
||||
loader_play_sound(*(_DWORD *)((char *)this + 70));
|
||||
loader_play_sound(*(DWORD *)((char *)this + 70));
|
||||
control_handler(63, v6);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//----- (010167BE) --------------------------------------------------------
|
||||
void __stdcall TKickout::ResetTimerExpired(int a1, void *a2)
|
||||
void TKickout::ResetTimerExpired(int a1, void *a2)
|
||||
{
|
||||
if ( !*(_DWORD *)((char *)a2 + 82) )
|
||||
if ( !*(DWORD *)((char *)a2 + 82) )
|
||||
*((_BYTE *)a2 + 5) = 1;
|
||||
*(_DWORD *)((char *)a2 + 86) = 0;
|
||||
*(DWORD *)((char *)a2 + 86) = 0;
|
||||
}
|
||||
|
||||
//----- (010167DD) --------------------------------------------------------
|
||||
void __stdcall TKickout::TimerExpired(int a1, void *a2)
|
||||
void TKickout::TimerExpired(int a1, void *a2)
|
||||
{
|
||||
double v2; // st7
|
||||
float v3; // ST08_4
|
||||
@@ -45,25 +45,25 @@ int v4; // eax
|
||||
int v5; // ecx
|
||||
int v6; // ST10_4
|
||||
|
||||
if ( *(_DWORD *)((char *)a2 + 78) )
|
||||
if ( *(DWORD *)((char *)a2 + 78) )
|
||||
{
|
||||
v2 = *(float *)((char *)a2 + 94);
|
||||
*(_DWORD *)((char *)a2 + 78) = 0;
|
||||
*(DWORD *)((char *)a2 + 78) = 0;
|
||||
v3 = v2;
|
||||
*(_DWORD *)((char *)a2 + 86) = timer_set(v3, (int)a2, (int)TKickout::ResetTimerExpired);
|
||||
v4 = *(_DWORD *)((char *)a2 + 102);
|
||||
*(DWORD *)((char *)a2 + 86) = timer_set(v3, (int)a2, (int)TKickout::ResetTimerExpired);
|
||||
v4 = *(DWORD *)((char *)a2 + 102);
|
||||
if ( v4 )
|
||||
{
|
||||
v5 = *(_DWORD *)((char *)a2 + 126);
|
||||
*(_DWORD *)((char *)a2 + 102) = 0;
|
||||
*(_DWORD *)(v4 + 50) = v5;
|
||||
v5 = *(DWORD *)((char *)a2 + 126);
|
||||
*(DWORD *)((char *)a2 + 102) = 0;
|
||||
*(DWORD *)(v4 + 50) = v5;
|
||||
throw_ball(
|
||||
(struct TBall *)v4,
|
||||
(struct vector_type *)((char *)a2 + 130),
|
||||
*(float *)((char *)a2 + 142),
|
||||
*(float *)((char *)a2 + 146),
|
||||
*(float *)((char *)a2 + 150));
|
||||
v6 = *(_DWORD *)((char *)a2 + 74);
|
||||
v6 = *(DWORD *)((char *)a2 + 74);
|
||||
*((_BYTE *)a2 + 5) = 0;
|
||||
loader_play_sound(v6);
|
||||
}
|
||||
@@ -80,7 +80,7 @@ float v7; // [esp+4h] [ebp-Ch]
|
||||
float v8; // [esp+8h] [ebp-8h]
|
||||
|
||||
v3 = this;
|
||||
if ( *(_DWORD *)((char *)this + 78) )
|
||||
if ( *(DWORD *)((char *)this + 78) )
|
||||
return 0;
|
||||
v5 = *(float *)((char *)this + 110) - *(float *)((char *)a2 + 42);
|
||||
v7 = v5;
|
||||
@@ -102,11 +102,11 @@ TKickout *v3; // esi
|
||||
v3 = this;
|
||||
if ( a2 == 55 )
|
||||
{
|
||||
if ( *(_DWORD *)((char *)this + 78) )
|
||||
if ( *(DWORD *)((char *)this + 78) )
|
||||
{
|
||||
if ( a3 < 0.0 )
|
||||
a3 = *(float *)((char *)this + 90);
|
||||
*(_DWORD *)((char *)this + 86) = timer_set(a3, (int)this, (int)TKickout::TimerExpired);
|
||||
*(DWORD *)((char *)this + 86) = timer_set(a3, (int)this, (int)TKickout::TimerExpired);
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -115,14 +115,14 @@ if ( a2 != 1011 )
|
||||
{
|
||||
if ( a2 != 1024 )
|
||||
return 0;
|
||||
if ( *(_DWORD *)((char *)this + 78) )
|
||||
if ( *(DWORD *)((char *)this + 78) )
|
||||
{
|
||||
if ( *(_DWORD *)((char *)this + 86) )
|
||||
timer_kill(*(_DWORD *)((char *)this + 86));
|
||||
if ( *(DWORD *)((char *)this + 86) )
|
||||
timer_kill(*(DWORD *)((char *)this + 86));
|
||||
TKickout::TimerExpired(0, (void *)v3);
|
||||
}
|
||||
}
|
||||
if ( *(_DWORD *)((char *)v3 + 82) )
|
||||
if ( *(DWORD *)((char *)v3 + 82) )
|
||||
*((_BYTE *)v3 + 5) = 0;
|
||||
}
|
||||
return 0;
|
||||
@@ -136,7 +136,7 @@ int result; // eax
|
||||
if ( a2 >= 5 )
|
||||
result = 0;
|
||||
else
|
||||
result = *(_DWORD *)((char *)this + 4 * a2 + 166);
|
||||
result = *(DWORD *)((char *)this + 4 * a2 + 166);
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -144,7 +144,7 @@ return result;
|
||||
void __thiscall TKickout::put_scoring(TKickout *this, int a2, int a3)
|
||||
{
|
||||
if ( a2 < 5 )
|
||||
*(_DWORD *)((char *)this + 4 * a2 + 166) = a3;
|
||||
*(DWORD *)((char *)this + 4 * a2 + 166) = a3;
|
||||
}
|
||||
|
||||
//----- (01019884) --------------------------------------------------------
|
||||
@@ -181,20 +181,20 @@ struct vector_type *v32; // [esp+78h] [ebp+10h]
|
||||
|
||||
v4 = this;
|
||||
TCollisionComponent::TCollisionComponent(this, a2, a3, 0);
|
||||
*(_DWORD *)v4 = &TKickout::vftable;
|
||||
*(_DWORD *)((char *)v4 + 82) = a4 == 0;
|
||||
*(DWORD *)v4 = &TKickout::vftable;
|
||||
*(DWORD *)((char *)v4 + 82) = a4 == 0;
|
||||
if ( !a4 )
|
||||
*((_BYTE *)v4 + 5) = 0;
|
||||
*(_DWORD *)((char *)v4 + 90) = 1069547520;
|
||||
*(_DWORD *)((char *)v4 + 94) = 1028443341;
|
||||
*(_DWORD *)((char *)v4 + 6) = 0;
|
||||
*(_DWORD *)((char *)v4 + 86) = 0;
|
||||
*(_DWORD *)((char *)v4 + 78) = 0;
|
||||
*(DWORD *)((char *)v4 + 90) = 1069547520;
|
||||
*(DWORD *)((char *)v4 + 94) = 1028443341;
|
||||
*(DWORD *)((char *)v4 + 6) = 0;
|
||||
*(DWORD *)((char *)v4 + 86) = 0;
|
||||
*(DWORD *)((char *)v4 + 78) = 0;
|
||||
v30 = *(float *)loader_query_float_attribute(a3, 0, 306);
|
||||
*(_DWORD *)((char *)v4 + 106) = *(_DWORD *)loader_query_float_attribute(a3, 0, 305);
|
||||
*(DWORD *)((char *)v4 + 106) = *(DWORD *)loader_query_float_attribute(a3, 0, 305);
|
||||
loader_query_visual(a3, 0, &v15);
|
||||
*(_DWORD *)((char *)v4 + 70) = v17;
|
||||
*(_DWORD *)((char *)v4 + 74) = v24;
|
||||
*(DWORD *)((char *)v4 + 70) = v17;
|
||||
*(DWORD *)((char *)v4 + 74) = v24;
|
||||
v5 = v16;
|
||||
*(float *)((char *)v4 + 110) = *v16;
|
||||
v6 = v5 + 2;
|
||||
@@ -203,7 +203,7 @@ v7 = v30 * v5[2];
|
||||
v32 = (struct vector_type *)v5;
|
||||
*(float *)((char *)v4 + 122) = v7;
|
||||
if ( 0.0 == v7 )
|
||||
*(_DWORD *)((char *)v4 + 122) = 981668463;
|
||||
*(DWORD *)((char *)v4 + 122) = 981668463;
|
||||
v8 = (TCircle *)operator new(0x25u);
|
||||
if ( v8 )
|
||||
v31 = TCircle::TCircle(v8, v4, (char *)v4 + 5, v25, v32, *(float *)((char *)v4 + 122));
|
||||
@@ -211,29 +211,29 @@ else
|
||||
v31 = 0;
|
||||
if ( v31 )
|
||||
{
|
||||
(*(void (**)(void))(*(_DWORD *)v31 + 8))();
|
||||
(*(void (**)(void))(*(DWORD *)v31 + 8))();
|
||||
objlist_class::Add((TKickout *)((char *)v4 + 42), (void *)v31);
|
||||
}
|
||||
*(float *)((char *)v4 + 122) = *v6 * *v6;
|
||||
v9 = loader_query_float_attribute(a3, 0, 408);
|
||||
v10 = v19 * 0.01;
|
||||
*(_DWORD *)((char *)v4 + 98) = *(_DWORD *)(v9 + 8);
|
||||
*(DWORD *)((char *)v4 + 98) = *(DWORD *)(v9 + 8);
|
||||
v11 = v23;
|
||||
*(float *)((char *)v4 + 150) = v10;
|
||||
*(_DWORD *)((char *)v4 + 130) = v20;
|
||||
*(_DWORD *)((char *)v4 + 134) = v21;
|
||||
*(_DWORD *)((char *)v4 + 142) = v11;
|
||||
*(DWORD *)((char *)v4 + 130) = v20;
|
||||
*(DWORD *)((char *)v4 + 134) = v21;
|
||||
*(DWORD *)((char *)v4 + 142) = v11;
|
||||
v12 = v18;
|
||||
*(_DWORD *)((char *)v4 + 138) = v22;
|
||||
*(_DWORD *)((char *)v4 + 146) = v12;
|
||||
v29 = *(_DWORD *)((char *)v4 + 122);
|
||||
v26 = *(_DWORD *)((char *)v4 + 110);
|
||||
v27 = *(_DWORD *)((char *)v4 + 114);
|
||||
*(_DWORD *)((char *)v4 + 154) = (char *)v4 + 5;
|
||||
*(DWORD *)((char *)v4 + 138) = v22;
|
||||
*(DWORD *)((char *)v4 + 146) = v12;
|
||||
v29 = *(DWORD *)((char *)v4 + 122);
|
||||
v26 = *(DWORD *)((char *)v4 + 110);
|
||||
v27 = *(DWORD *)((char *)v4 + 114);
|
||||
*(DWORD *)((char *)v4 + 154) = (char *)v4 + 5;
|
||||
v13 = v25;
|
||||
v28 = *(_DWORD *)((char *)v4 + 118);
|
||||
*(_DWORD *)((char *)v4 + 162) = v4;
|
||||
*(_DWORD *)((char *)v4 + 158) = v13;
|
||||
v28 = *(DWORD *)((char *)v4 + 118);
|
||||
*(DWORD *)((char *)v4 + 162) = v4;
|
||||
*(DWORD *)((char *)v4 + 158) = v13;
|
||||
edges_insert_circle((struct circle_type *)&v26, 0, (TKickout *)((char *)v4 + 154));
|
||||
return v4;
|
||||
}
|
||||
|
||||
@@ -11,8 +11,8 @@
|
||||
struct TKickout;
|
||||
|
||||
void __thiscall TKickout::Collision(TKickout* this, struct TBall*, struct vector_type*, struct vector_type*, float, struct TEdgeSegment*); // idb
|
||||
void __stdcall TKickout::ResetTimerExpired(int, void*); // idb
|
||||
void __stdcall TKickout::TimerExpired(int, void*); // idb
|
||||
void TKickout::ResetTimerExpired(int, void*); // idb
|
||||
void TKickout::TimerExpired(int, void*); // idb
|
||||
int __thiscall TKickout::FieldEffect(TKickout* this, struct TBall*, struct vector_type*); // idb
|
||||
int __thiscall TKickout::Message(TKickout* this, int, float); // idb
|
||||
int __thiscall TKickout::get_scoring(TKickout* this, int); // idb
|
||||
|
||||
+145
-145
@@ -8,60 +8,60 @@
|
||||
void __thiscall TLight::Reset(TLight *this)
|
||||
{
|
||||
TLight *v1; // esi
|
||||
_DWORD *v2; // ST00_4
|
||||
DWORD *v2; // ST00_4
|
||||
int v3; // eax
|
||||
|
||||
v1 = this;
|
||||
if ( *(_DWORD *)((char *)this + 110) )
|
||||
timer_kill(*(_DWORD *)((char *)this + 110));
|
||||
if ( *(_DWORD *)((char *)v1 + 114) )
|
||||
timer_kill(*(_DWORD *)((char *)v1 + 114));
|
||||
if ( *(_DWORD *)((char *)v1 + 82) )
|
||||
if ( *(DWORD *)((char *)this + 110) )
|
||||
timer_kill(*(DWORD *)((char *)this + 110));
|
||||
if ( *(DWORD *)((char *)v1 + 114) )
|
||||
timer_kill(*(DWORD *)((char *)v1 + 114));
|
||||
if ( *(DWORD *)((char *)v1 + 82) )
|
||||
flasher_stop((TLight *)((char *)v1 + 42), -1);
|
||||
v2 = *(_DWORD **)((char *)v1 + 26);
|
||||
v2 = *(DWORD **)((char *)v1 + 26);
|
||||
*(float *)((char *)v1 + 122) = 1.0;
|
||||
*(_DWORD *)((char *)v1 + 110) = 0;
|
||||
*(_DWORD *)((char *)v1 + 114) = 0;
|
||||
*(_DWORD *)((char *)v1 + 78) = 0;
|
||||
*(_DWORD *)((char *)v1 + 98) = 0;
|
||||
*(_DWORD *)((char *)v1 + 86) = 0;
|
||||
*(_DWORD *)((char *)v1 + 90) = 0;
|
||||
*(_DWORD *)((char *)v1 + 82) = 0;
|
||||
*(_DWORD *)((char *)v1 + 94) = 0;
|
||||
*(DWORD *)((char *)v1 + 110) = 0;
|
||||
*(DWORD *)((char *)v1 + 114) = 0;
|
||||
*(DWORD *)((char *)v1 + 78) = 0;
|
||||
*(DWORD *)((char *)v1 + 98) = 0;
|
||||
*(DWORD *)((char *)v1 + 86) = 0;
|
||||
*(DWORD *)((char *)v1 + 90) = 0;
|
||||
*(DWORD *)((char *)v1 + 82) = 0;
|
||||
*(DWORD *)((char *)v1 + 94) = 0;
|
||||
render_sprite_set_bitmap(v2, 0);
|
||||
*(_DWORD *)((char *)v1 + 42) = *(_DWORD *)((char *)v1 + 26);
|
||||
v3 = *(_DWORD *)((char *)v1 + 34);
|
||||
*(_DWORD *)((char *)v1 + 46) = 0;
|
||||
*(DWORD *)((char *)v1 + 42) = *(DWORD *)((char *)v1 + 26);
|
||||
v3 = *(DWORD *)((char *)v1 + 34);
|
||||
*(DWORD *)((char *)v1 + 46) = 0;
|
||||
if ( v3 )
|
||||
*(_DWORD *)((char *)v1 + 50) = *(_DWORD *)(*(_DWORD *)(v3 + 4) + 8);
|
||||
*(_DWORD *)((char *)v1 + 58) = 0;
|
||||
*(_DWORD *)((char *)v1 + 54) = 0;
|
||||
*(_DWORD *)((char *)v1 + 6) = 0;
|
||||
*(DWORD *)((char *)v1 + 50) = *(DWORD *)(*(DWORD *)(v3 + 4) + 8);
|
||||
*(DWORD *)((char *)v1 + 58) = 0;
|
||||
*(DWORD *)((char *)v1 + 54) = 0;
|
||||
*(DWORD *)((char *)v1 + 6) = 0;
|
||||
}
|
||||
|
||||
//----- (01009A2A) --------------------------------------------------------
|
||||
void __stdcall TLight::TimerExpired(int a1, void *a2)
|
||||
void TLight::TimerExpired(int a1, void *a2)
|
||||
{
|
||||
bool v2; // zf
|
||||
void (__thiscall **v3)(void *, signed int, _DWORD); // eax
|
||||
void (__thiscall **v3)(void *, signed int, DWORD); // eax
|
||||
|
||||
if ( *(_DWORD *)((char *)a2 + 82) )
|
||||
if ( *(DWORD *)((char *)a2 + 82) )
|
||||
flasher_stop((struct flasher_type *)((char *)a2 + 42), -1);
|
||||
render_sprite_set_bitmap(
|
||||
*(_DWORD **)((char *)a2 + 26),
|
||||
*(_DWORD *)((char *)a2 + 4 * *(_DWORD *)((char *)a2 + 78) + 46));
|
||||
v2 = *(_DWORD *)((char *)a2 + 94) == 0;
|
||||
*(_DWORD *)((char *)a2 + 86) = 0;
|
||||
*(_DWORD *)((char *)a2 + 90) = 0;
|
||||
*(_DWORD *)((char *)a2 + 82) = 0;
|
||||
*(_DWORD *)((char *)a2 + 110) = 0;
|
||||
*(DWORD **)((char *)a2 + 26),
|
||||
*(DWORD *)((char *)a2 + 4 * *(DWORD *)((char *)a2 + 78) + 46));
|
||||
v2 = *(DWORD *)((char *)a2 + 94) == 0;
|
||||
*(DWORD *)((char *)a2 + 86) = 0;
|
||||
*(DWORD *)((char *)a2 + 90) = 0;
|
||||
*(DWORD *)((char *)a2 + 82) = 0;
|
||||
*(DWORD *)((char *)a2 + 110) = 0;
|
||||
if ( !v2 )
|
||||
{
|
||||
v3 = *(void (__thiscall ***)(void *, signed int, _DWORD))a2;
|
||||
*(_DWORD *)((char *)a2 + 94) = 0;
|
||||
v3 = *(void (__thiscall ***)(void *, signed int, DWORD))a2;
|
||||
*(DWORD *)((char *)a2 + 94) = 0;
|
||||
(*v3)(a2, 20, 0.0);
|
||||
}
|
||||
if ( *(_DWORD *)((char *)a2 + 18) )
|
||||
if ( *(DWORD *)((char *)a2 + 18) )
|
||||
control_handler(60, (struct TPinballComponent *)a2);
|
||||
}
|
||||
|
||||
@@ -71,13 +71,13 @@ void __thiscall TLight::schedule_timeout(TLight *this, float a2)
|
||||
TLight *v2; // esi
|
||||
|
||||
v2 = this;
|
||||
*(_DWORD *)((char *)this + 62) = *(_DWORD *)((char *)this + 102);
|
||||
*(_DWORD *)((char *)this + 66) = *(_DWORD *)((char *)this + 106);
|
||||
if ( *(_DWORD *)((char *)this + 110) )
|
||||
timer_kill(*(_DWORD *)((char *)this + 110));
|
||||
*(_DWORD *)((char *)v2 + 110) = 0;
|
||||
*(DWORD *)((char *)this + 62) = *(DWORD *)((char *)this + 102);
|
||||
*(DWORD *)((char *)this + 66) = *(DWORD *)((char *)this + 106);
|
||||
if ( *(DWORD *)((char *)this + 110) )
|
||||
timer_kill(*(DWORD *)((char *)this + 110));
|
||||
*(DWORD *)((char *)v2 + 110) = 0;
|
||||
if ( a2 > 0.0 )
|
||||
*(_DWORD *)((char *)v2 + 110) = timer_set(a2, (int)v2, (int)TLight::TimerExpired);
|
||||
*(DWORD *)((char *)v2 + 110) = timer_set(a2, (int)v2, (int)TLight::TimerExpired);
|
||||
}
|
||||
|
||||
//----- (01009AE3) --------------------------------------------------------
|
||||
@@ -101,7 +101,7 @@ char *v18; // eax
|
||||
char *v19; // eax
|
||||
float v20; // ST04_4
|
||||
int v21; // ecx
|
||||
_DWORD *v22; // eax
|
||||
DWORD *v22; // eax
|
||||
int v23; // [esp+1Ch] [ebp+Ch]
|
||||
|
||||
v3 = this;
|
||||
@@ -109,45 +109,45 @@ if ( a2 > 1020 )
|
||||
{
|
||||
if ( a2 == 1024 )
|
||||
{
|
||||
(*(void (__thiscall **)(TLight *))(*(_DWORD *)this + 20))(this);
|
||||
(*(void (__thiscall **)(TLight *))(*(DWORD *)this + 20))(this);
|
||||
v21 = 0;
|
||||
if ( *(_DWORD *)(*(_DWORD *)((char *)v3 + 30) + 214) > 0 )
|
||||
if ( *(DWORD *)(*(DWORD *)((char *)v3 + 30) + 214) > 0 )
|
||||
{
|
||||
v22 = (_DWORD *)((char *)v3 + 146);
|
||||
v22 = (DWORD *)((char *)v3 + 146);
|
||||
do
|
||||
{
|
||||
*(v22 - 3) = *(_DWORD *)((char *)v3 + 82);
|
||||
*v22 = *(_DWORD *)((char *)v3 + 98);
|
||||
*(v22 - 4) = *(_DWORD *)((char *)v3 + 78);
|
||||
*(v22 - 5) = *(_DWORD *)((char *)v3 + 6);
|
||||
*(v22 - 3) = *(DWORD *)((char *)v3 + 82);
|
||||
*v22 = *(DWORD *)((char *)v3 + 98);
|
||||
*(v22 - 4) = *(DWORD *)((char *)v3 + 78);
|
||||
*(v22 - 5) = *(DWORD *)((char *)v3 + 6);
|
||||
++v21;
|
||||
v22 += 6;
|
||||
}
|
||||
while ( v21 < *(_DWORD *)(*(_DWORD *)((char *)v3 + 30) + 214) );
|
||||
while ( v21 < *(DWORD *)(*(DWORD *)((char *)v3 + 30) + 214) );
|
||||
}
|
||||
}
|
||||
}
|
||||
else if ( a2 == 1020 )
|
||||
{
|
||||
v18 = (char *)this + 24 * *(_DWORD *)(*(_DWORD *)((char *)this + 30) + 218);
|
||||
*(_DWORD *)(v18 + 134) = *(_DWORD *)((char *)this + 82);
|
||||
*(_DWORD *)(v18 + 146) = *(_DWORD *)((char *)this + 98);
|
||||
*(_DWORD *)(v18 + 130) = *(_DWORD *)((char *)this + 78);
|
||||
*(_DWORD *)(v18 + 126) = *(_DWORD *)((char *)this + 6);
|
||||
(*(void (__thiscall **)(TLight *))(*(_DWORD *)this + 20))(this);
|
||||
v18 = (char *)this + 24 * *(DWORD *)(*(DWORD *)((char *)this + 30) + 218);
|
||||
*(DWORD *)(v18 + 134) = *(DWORD *)((char *)this + 82);
|
||||
*(DWORD *)(v18 + 146) = *(DWORD *)((char *)this + 98);
|
||||
*(DWORD *)(v18 + 130) = *(DWORD *)((char *)this + 78);
|
||||
*(DWORD *)(v18 + 126) = *(DWORD *)((char *)this + 6);
|
||||
(*(void (__thiscall **)(TLight *))(*(DWORD *)this + 20))(this);
|
||||
v19 = (char *)v3 + 24 * (unsigned __int64)(signed __int64)_floor(a3);
|
||||
*(_DWORD *)((char *)v3 + 82) = *(_DWORD *)(v19 + 134);
|
||||
*(_DWORD *)((char *)v3 + 98) = *(_DWORD *)(v19 + 146);
|
||||
*(_DWORD *)((char *)v3 + 78) = *(_DWORD *)(v19 + 130);
|
||||
*(_DWORD *)((char *)v3 + 6) = *(_DWORD *)(v19 + 126);
|
||||
if ( *(_DWORD *)((char *)v3 + 98) )
|
||||
*(DWORD *)((char *)v3 + 82) = *(DWORD *)(v19 + 134);
|
||||
*(DWORD *)((char *)v3 + 98) = *(DWORD *)(v19 + 146);
|
||||
*(DWORD *)((char *)v3 + 78) = *(DWORD *)(v19 + 130);
|
||||
*(DWORD *)((char *)v3 + 6) = *(DWORD *)(v19 + 126);
|
||||
if ( *(DWORD *)((char *)v3 + 98) )
|
||||
{
|
||||
v20 = (double)*(signed int *)((char *)v3 + 98);
|
||||
TLight::Message(v3, 11, v20);
|
||||
}
|
||||
if ( *(_DWORD *)((char *)v3 + 78) )
|
||||
if ( *(DWORD *)((char *)v3 + 78) )
|
||||
TLight::Message(v3, 1, 0.0);
|
||||
if ( *(_DWORD *)((char *)v3 + 82) )
|
||||
if ( *(DWORD *)((char *)v3 + 82) )
|
||||
TLight::Message(v3, 4, 0.0);
|
||||
}
|
||||
else
|
||||
@@ -155,30 +155,30 @@ else
|
||||
switch ( a2 )
|
||||
{
|
||||
case 0:
|
||||
v4 = *(_DWORD *)((char *)this + 82) == 0;
|
||||
*(_DWORD *)((char *)this + 78) = 0;
|
||||
if ( v4 && !*(_DWORD *)((char *)this + 86) && !*(_DWORD *)((char *)this + 90) )
|
||||
render_sprite_set_bitmap(*(_DWORD **)((char *)this + 26), *(_DWORD *)((char *)this + 46));
|
||||
v4 = *(DWORD *)((char *)this + 82) == 0;
|
||||
*(DWORD *)((char *)this + 78) = 0;
|
||||
if ( v4 && !*(DWORD *)((char *)this + 86) && !*(DWORD *)((char *)this + 90) )
|
||||
render_sprite_set_bitmap(*(DWORD **)((char *)this + 26), *(DWORD *)((char *)this + 46));
|
||||
return 0;
|
||||
case 1:
|
||||
v4 = *(_DWORD *)((char *)this + 82) == 0;
|
||||
*(_DWORD *)((char *)this + 78) = 1;
|
||||
if ( v4 && !*(_DWORD *)((char *)this + 86) && !*(_DWORD *)((char *)this + 90) )
|
||||
render_sprite_set_bitmap(*(_DWORD **)((char *)this + 26), *(_DWORD *)((char *)this + 50));
|
||||
v4 = *(DWORD *)((char *)this + 82) == 0;
|
||||
*(DWORD *)((char *)this + 78) = 1;
|
||||
if ( v4 && !*(DWORD *)((char *)this + 86) && !*(DWORD *)((char *)this + 90) )
|
||||
render_sprite_set_bitmap(*(DWORD **)((char *)this + 26), *(DWORD *)((char *)this + 50));
|
||||
return 0;
|
||||
case 2:
|
||||
return *(_DWORD *)((char *)v3 + 78);
|
||||
return *(DWORD *)((char *)v3 + 78);
|
||||
case 3:
|
||||
return *(_DWORD *)((char *)this + 82);
|
||||
return *(DWORD *)((char *)this + 82);
|
||||
case 4:
|
||||
TLight::schedule_timeout(this, 0.0);
|
||||
if ( !*(_DWORD *)((char *)v3 + 82) || !*(_DWORD *)((char *)v3 + 70) )
|
||||
if ( !*(DWORD *)((char *)v3 + 82) || !*(DWORD *)((char *)v3 + 70) )
|
||||
{
|
||||
v5 = *(_DWORD *)((char *)v3 + 78);
|
||||
*(_DWORD *)((char *)v3 + 82) = 1;
|
||||
*(_DWORD *)((char *)v3 + 90) = 0;
|
||||
*(_DWORD *)((char *)v3 + 86) = 0;
|
||||
*(_DWORD *)((char *)v3 + 94) = 0;
|
||||
v5 = *(DWORD *)((char *)v3 + 78);
|
||||
*(DWORD *)((char *)v3 + 82) = 1;
|
||||
*(DWORD *)((char *)v3 + 90) = 0;
|
||||
*(DWORD *)((char *)v3 + 86) = 0;
|
||||
*(DWORD *)((char *)v3 + 94) = 0;
|
||||
flasher_start((TLight *)((char *)v3 + 42), v5);
|
||||
}
|
||||
return 0;
|
||||
@@ -187,88 +187,88 @@ case 5:
|
||||
*(float *)((char *)this + 66) = a3 * *(float *)((char *)this + 106);
|
||||
return 0;
|
||||
case 6:
|
||||
*(_DWORD *)((char *)this + 62) = *(_DWORD *)((char *)this + 102);
|
||||
*(_DWORD *)((char *)this + 66) = *(_DWORD *)((char *)this + 106);
|
||||
*(DWORD *)((char *)this + 62) = *(DWORD *)((char *)this + 102);
|
||||
*(DWORD *)((char *)this + 66) = *(DWORD *)((char *)this + 106);
|
||||
return 0;
|
||||
case 7:
|
||||
if ( !*(_DWORD *)((char *)this + 82) )
|
||||
flasher_start((TLight *)((char *)this + 42), *(_DWORD *)((char *)this + 78));
|
||||
*(_DWORD *)((char *)v3 + 82) = 1;
|
||||
*(_DWORD *)((char *)v3 + 90) = 0;
|
||||
*(_DWORD *)((char *)v3 + 94) = 0;
|
||||
if ( !*(DWORD *)((char *)this + 82) )
|
||||
flasher_start((TLight *)((char *)this + 42), *(DWORD *)((char *)this + 78));
|
||||
*(DWORD *)((char *)v3 + 82) = 1;
|
||||
*(DWORD *)((char *)v3 + 90) = 0;
|
||||
*(DWORD *)((char *)v3 + 94) = 0;
|
||||
goto LABEL_28;
|
||||
case 8:
|
||||
if ( !*(_DWORD *)((char *)this + 86) )
|
||||
if ( !*(DWORD *)((char *)this + 86) )
|
||||
{
|
||||
if ( *(_DWORD *)((char *)this + 82) )
|
||||
if ( *(DWORD *)((char *)this + 82) )
|
||||
{
|
||||
flasher_stop((TLight *)((char *)this + 42), 0);
|
||||
*(_DWORD *)((char *)v3 + 82) = 0;
|
||||
*(DWORD *)((char *)v3 + 82) = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
render_sprite_set_bitmap(*(_DWORD **)((char *)this + 26), *(_DWORD *)((char *)this + 46));
|
||||
render_sprite_set_bitmap(*(DWORD **)((char *)this + 26), *(DWORD *)((char *)this + 46));
|
||||
}
|
||||
*(_DWORD *)((char *)v3 + 86) = 1;
|
||||
*(_DWORD *)((char *)v3 + 90) = 0;
|
||||
*(DWORD *)((char *)v3 + 86) = 1;
|
||||
*(DWORD *)((char *)v3 + 90) = 0;
|
||||
}
|
||||
goto LABEL_29;
|
||||
case 9:
|
||||
if ( !*(_DWORD *)((char *)this + 90) )
|
||||
if ( !*(DWORD *)((char *)this + 90) )
|
||||
{
|
||||
if ( *(_DWORD *)((char *)this + 82) )
|
||||
if ( *(DWORD *)((char *)this + 82) )
|
||||
{
|
||||
flasher_stop((TLight *)((char *)this + 42), 1);
|
||||
*(_DWORD *)((char *)v3 + 82) = 0;
|
||||
*(DWORD *)((char *)v3 + 82) = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
render_sprite_set_bitmap(*(_DWORD **)((char *)this + 26), *(_DWORD *)((char *)this + 50));
|
||||
render_sprite_set_bitmap(*(DWORD **)((char *)this + 26), *(DWORD *)((char *)this + 50));
|
||||
}
|
||||
*(_DWORD *)((char *)v3 + 90) = 1;
|
||||
*(DWORD *)((char *)v3 + 90) = 1;
|
||||
LABEL_28:
|
||||
*(_DWORD *)((char *)v3 + 86) = 0;
|
||||
*(DWORD *)((char *)v3 + 86) = 0;
|
||||
}
|
||||
LABEL_29:
|
||||
TLight::schedule_timeout(v3, a3);
|
||||
return 0;
|
||||
case 11:
|
||||
v7 = (signed __int64)_floor(a3);
|
||||
v8 = *(_DWORD *)((char *)v3 + 34);
|
||||
*(_DWORD *)((char *)v3 + 98) = v7;
|
||||
v9 = *(_DWORD *)(*(_DWORD *)(v8 + 4) + 4);
|
||||
v8 = *(DWORD *)((char *)v3 + 34);
|
||||
*(DWORD *)((char *)v3 + 98) = v7;
|
||||
v9 = *(DWORD *)(*(DWORD *)(v8 + 4) + 4);
|
||||
if ( (signed int)v7 > v9 )
|
||||
*(_DWORD *)((char *)v3 + 98) = v9;
|
||||
*(DWORD *)((char *)v3 + 98) = v9;
|
||||
v10 = 0;
|
||||
if ( *(_DWORD *)((char *)v3 + 98) < 0 )
|
||||
*(_DWORD *)((char *)v3 + 98) = 0;
|
||||
v4 = *(_DWORD *)((char *)v3 + 82) == 0;
|
||||
v11 = *(_DWORD *)((char *)v3 + 98);
|
||||
*(_DWORD *)((char *)v3 + 46) = 0;
|
||||
*(_DWORD *)((char *)v3 + 50) = *(_DWORD *)(*(_DWORD *)(v8 + 4) + 4 * v11 + 8);
|
||||
if ( *(DWORD *)((char *)v3 + 98) < 0 )
|
||||
*(DWORD *)((char *)v3 + 98) = 0;
|
||||
v4 = *(DWORD *)((char *)v3 + 82) == 0;
|
||||
v11 = *(DWORD *)((char *)v3 + 98);
|
||||
*(DWORD *)((char *)v3 + 46) = 0;
|
||||
*(DWORD *)((char *)v3 + 50) = *(DWORD *)(*(DWORD *)(v8 + 4) + 4 * v11 + 8);
|
||||
if ( v4 )
|
||||
{
|
||||
if ( !*(_DWORD *)((char *)v3 + 86) )
|
||||
if ( !*(DWORD *)((char *)v3 + 86) )
|
||||
{
|
||||
if ( *(_DWORD *)((char *)v3 + 90) )
|
||||
if ( *(DWORD *)((char *)v3 + 90) )
|
||||
v10 = 1;
|
||||
else
|
||||
v10 = *(_DWORD *)((char *)v3 + 78);
|
||||
v10 = *(DWORD *)((char *)v3 + 78);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
v10 = *(_DWORD *)((char *)v3 + 74);
|
||||
v10 = *(DWORD *)((char *)v3 + 74);
|
||||
}
|
||||
render_sprite_set_bitmap(*(_DWORD **)((char *)v3 + 26), *(_DWORD *)((char *)v3 + 4 * v10 + 46));
|
||||
render_sprite_set_bitmap(*(DWORD **)((char *)v3 + 26), *(DWORD *)((char *)v3 + 4 * v10 + 46));
|
||||
return 0;
|
||||
case 12:
|
||||
v23 = *(_DWORD *)((char *)this + 98) + 1;
|
||||
if ( v23 > *(_DWORD *)(*(_DWORD *)(*(_DWORD *)((char *)this + 34) + 4) + 4) )
|
||||
v23 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)((char *)this + 34) + 4) + 4);
|
||||
v23 = *(DWORD *)((char *)this + 98) + 1;
|
||||
if ( v23 > *(DWORD *)(*(DWORD *)(*(DWORD *)((char *)this + 34) + 4) + 4) )
|
||||
v23 = *(DWORD *)(*(DWORD *)(*(DWORD *)((char *)this + 34) + 4) + 4);
|
||||
goto LABEL_32;
|
||||
case 13:
|
||||
v23 = *(_DWORD *)((char *)this + 98) - 1;
|
||||
v23 = *(DWORD *)((char *)this + 98) - 1;
|
||||
if ( v23 < 0 )
|
||||
v23 = 0;
|
||||
LABEL_32:
|
||||
@@ -276,42 +276,42 @@ LABEL_32:
|
||||
TLight::Message(this, 11, v6);
|
||||
return 0;
|
||||
case 14:
|
||||
if ( *(_DWORD *)((char *)this + 110) )
|
||||
timer_kill(*(_DWORD *)((char *)this + 110));
|
||||
v4 = *(_DWORD *)((char *)v3 + 82) == 0;
|
||||
*(_DWORD *)((char *)v3 + 110) = 0;
|
||||
if ( *(DWORD *)((char *)this + 110) )
|
||||
timer_kill(*(DWORD *)((char *)this + 110));
|
||||
v4 = *(DWORD *)((char *)v3 + 82) == 0;
|
||||
*(DWORD *)((char *)v3 + 110) = 0;
|
||||
if ( !v4 )
|
||||
flasher_stop((TLight *)((char *)v3 + 42), -1);
|
||||
v12 = *(_DWORD *)((char *)v3 + 78);
|
||||
*(_DWORD *)((char *)v3 + 82) = 0;
|
||||
*(_DWORD *)((char *)v3 + 86) = 0;
|
||||
*(_DWORD *)((char *)v3 + 90) = 0;
|
||||
render_sprite_set_bitmap(*(_DWORD **)((char *)v3 + 26), *(_DWORD *)((char *)v3 + 4 * v12 + 46));
|
||||
v12 = *(DWORD *)((char *)v3 + 78);
|
||||
*(DWORD *)((char *)v3 + 82) = 0;
|
||||
*(DWORD *)((char *)v3 + 86) = 0;
|
||||
*(DWORD *)((char *)v3 + 90) = 0;
|
||||
render_sprite_set_bitmap(*(DWORD **)((char *)v3 + 26), *(DWORD *)((char *)v3 + 4 * v12 + 46));
|
||||
return 0;
|
||||
case 15:
|
||||
v13 = *(_DWORD *)((char *)this + 114);
|
||||
*(_DWORD *)((char *)this + 94) = 0;
|
||||
v13 = *(DWORD *)((char *)this + 114);
|
||||
*(DWORD *)((char *)this + 94) = 0;
|
||||
if ( v13 )
|
||||
timer_kill(v13);
|
||||
*(_DWORD *)((char *)v3 + 114) = 0;
|
||||
*(DWORD *)((char *)v3 + 114) = 0;
|
||||
TLight::Message(v3, 1, 0.0);
|
||||
TLight::Message(v3, 7, a3);
|
||||
return 0;
|
||||
case 16:
|
||||
if ( *(_DWORD *)((char *)this + 114) )
|
||||
timer_kill(*(_DWORD *)((char *)this + 114));
|
||||
*(_DWORD *)((char *)v3 + 114) = 0;
|
||||
if ( *(DWORD *)((char *)this + 114) )
|
||||
timer_kill(*(DWORD *)((char *)this + 114));
|
||||
*(DWORD *)((char *)v3 + 114) = 0;
|
||||
TLight::Message(v3, 7, a3);
|
||||
*(_DWORD *)((char *)v3 + 94) = 1;
|
||||
*(DWORD *)((char *)v3 + 94) = 1;
|
||||
return 0;
|
||||
case 17:
|
||||
v17 = (signed __int64)_floor(a3);
|
||||
TLight::Message(v3, v17 != 0, 0.0);
|
||||
return *(_DWORD *)((char *)v3 + 78);
|
||||
return *(DWORD *)((char *)v3 + 78);
|
||||
case 18:
|
||||
TLight::Message(this, 17, a3);
|
||||
TLight::Message(v3, 14, 0.0);
|
||||
return *(_DWORD *)((char *)v3 + 78);
|
||||
return *(DWORD *)((char *)v3 + 78);
|
||||
case 19:
|
||||
TLight::Message(this, 1, 0.0);
|
||||
goto LABEL_62;
|
||||
@@ -321,15 +321,15 @@ LABEL_62:
|
||||
TLight::Message(v3, 14, 0.0);
|
||||
return 0;
|
||||
case 21:
|
||||
v15 = (double)(*(_DWORD *)((char *)this + 78) == 0);
|
||||
v15 = (double)(*(DWORD *)((char *)this + 78) == 0);
|
||||
TLight::Message(this, 17, v15);
|
||||
return *(_DWORD *)((char *)v3 + 78);
|
||||
return *(DWORD *)((char *)v3 + 78);
|
||||
case 22:
|
||||
v16 = (double)(*(_DWORD *)((char *)this + 78) == 0);
|
||||
v16 = (double)(*(DWORD *)((char *)this + 78) == 0);
|
||||
TLight::Message(this, 18, v16);
|
||||
return *(_DWORD *)((char *)v3 + 78);
|
||||
return *(DWORD *)((char *)v3 + 78);
|
||||
case 23:
|
||||
*(_DWORD *)((char *)this + 6) = (signed __int64)_floor(a3);
|
||||
*(DWORD *)((char *)this + 6) = (signed __int64)_floor(a3);
|
||||
break;
|
||||
default:
|
||||
return 0;
|
||||
@@ -349,11 +349,11 @@ double v7; // st7
|
||||
|
||||
v3 = this;
|
||||
TPinballComponent::TPinballComponent(this, a2, a3, 1);
|
||||
*(_DWORD *)v3 = &TLight::vftable;
|
||||
*(_DWORD *)((char *)v3 + 110) = 0;
|
||||
*(_DWORD *)((char *)v3 + 82) = 0;
|
||||
*(_DWORD *)((char *)v3 + 114) = 0;
|
||||
*(_DWORD *)((char *)v3 + 70) = 0;
|
||||
*(DWORD *)v3 = &TLight::vftable;
|
||||
*(DWORD *)((char *)v3 + 110) = 0;
|
||||
*(DWORD *)((char *)v3 + 82) = 0;
|
||||
*(DWORD *)((char *)v3 + 114) = 0;
|
||||
*(DWORD *)((char *)v3 + 70) = 0;
|
||||
TLight::Reset(v3);
|
||||
v4 = (float *)loader_query_float_attribute(a3, 0, 900);
|
||||
v5 = *v4;
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
struct TLight;
|
||||
|
||||
void __thiscall TLight::Reset(TLight* __hidden this); // idb
|
||||
void __stdcall TLight::TimerExpired(int, void*); // idb
|
||||
void TLight::TimerExpired(int, void*); // idb
|
||||
void __thiscall TLight::schedule_timeout(TLight* this, float); // idb
|
||||
int __thiscall TLight::Message(TLight* this, int, float); // idb
|
||||
TLight* __thiscall TLight::TLight(TLight* this, struct TPinballTable* a2, int a3);
|
||||
|
||||
@@ -10,8 +10,8 @@ TZmapList *__thiscall TLightBargraph::~TLightBargraph(TLightBargraph *this)
|
||||
int v2; // eax
|
||||
|
||||
v1 = this;
|
||||
v2 = *(_DWORD *)((char *)this + 138);
|
||||
*(_DWORD *)this = &TLightBargraph::vftable;
|
||||
v2 = *(DWORD *)((char *)this + 138);
|
||||
*(DWORD *)this = &TLightBargraph::vftable;
|
||||
if ( v2 )
|
||||
memoryfree(v2);
|
||||
return TLightGroup::~TLightGroup(v1);
|
||||
@@ -22,36 +22,36 @@ TZmapList *__thiscall TLightBargraph::~TLightBargraph(TLightBargraph *this)
|
||||
void __thiscall TLightBargraph::Reset(TLightBargraph *this)
|
||||
{
|
||||
TLightBargraph *v1; // edi
|
||||
_DWORD *v2; // esi
|
||||
DWORD *v2; // esi
|
||||
|
||||
v1 = this;
|
||||
v2 = (_DWORD *)((char *)this + 142);
|
||||
if ( *(_DWORD *)((char *)this + 142) )
|
||||
v2 = (DWORD *)((char *)this + 142);
|
||||
if ( *(DWORD *)((char *)this + 142) )
|
||||
{
|
||||
timer_kill(*(_DWORD *)((char *)this + 142));
|
||||
timer_kill(*(DWORD *)((char *)this + 142));
|
||||
*v2 = 0;
|
||||
}
|
||||
*(_DWORD *)((char *)v1 + 146) = 0;
|
||||
*(DWORD *)((char *)v1 + 146) = 0;
|
||||
TLightGroup::Reset(v1);
|
||||
}
|
||||
|
||||
//----- (0100AAD9) --------------------------------------------------------
|
||||
void __stdcall TLightBargraph::BargraphTimerExpired(int a1, void *a2)
|
||||
void TLightBargraph::BargraphTimerExpired(int a1, void *a2)
|
||||
{
|
||||
int v2; // eax
|
||||
float v3; // ST04_4
|
||||
|
||||
v2 = *(_DWORD *)((char *)a2 + 146);
|
||||
*(_DWORD *)((char *)a2 + 142) = 0;
|
||||
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));
|
||||
(**(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);
|
||||
(**(void (__thiscall ***)(void *, signed int, DWORD))a2)(a2, 20, 0.0);
|
||||
control_handler(47, (struct TPinballComponent *)a2);
|
||||
}
|
||||
}
|
||||
@@ -61,8 +61,8 @@ int __thiscall TLightBargraph::Message(TLightBargraph *this, int a2, float a3)
|
||||
{
|
||||
TLightBargraph *v3; // esi
|
||||
int v4; // ecx
|
||||
_DWORD *v5; // eax
|
||||
_DWORD *v6; // edi
|
||||
DWORD *v5; // eax
|
||||
DWORD *v6; // edi
|
||||
float v7; // ST0C_4
|
||||
int v8; // ebx
|
||||
int v9; // eax
|
||||
@@ -74,15 +74,15 @@ v3 = this;
|
||||
switch ( a2 )
|
||||
{
|
||||
case 37:
|
||||
return *(_DWORD *)((char *)this + 146);
|
||||
return *(DWORD *)((char *)this + 146);
|
||||
case 45:
|
||||
if ( *(_DWORD *)((char *)this + 142) )
|
||||
if ( *(DWORD *)((char *)this + 142) )
|
||||
{
|
||||
timer_kill(*(_DWORD *)((char *)this + 142));
|
||||
*(_DWORD *)((char *)v3 + 142) = 0;
|
||||
timer_kill(*(DWORD *)((char *)this + 142));
|
||||
*(DWORD *)((char *)v3 + 142) = 0;
|
||||
}
|
||||
v8 = (signed __int64)_floor(a3);
|
||||
v9 = 2 * *(_DWORD *)(*(_DWORD *)((char *)v3 + 46) + 4);
|
||||
v9 = 2 * *(DWORD *)(*(DWORD *)((char *)v3 + 46) + 4);
|
||||
if ( v8 >= v9 )
|
||||
v8 = v9 - 1;
|
||||
if ( v8 >= 0 )
|
||||
@@ -91,34 +91,34 @@ v10 = (double)(v8 / 2);
|
||||
TLightGroup::Message(v3, 45, v10);
|
||||
if ( !(v8 & 1) )
|
||||
TLightGroup::Message(v3, 46, 0.0);
|
||||
v11 = *(_DWORD *)((char *)v3 + 138);
|
||||
v11 = *(DWORD *)((char *)v3 + 138);
|
||||
if ( v11 )
|
||||
*(_DWORD *)((char *)v3 + 142) = timer_set(
|
||||
*(DWORD *)((char *)v3 + 142) = timer_set(
|
||||
*(float *)(v11 + 4 * v8),
|
||||
(int)v3,
|
||||
(int)TLightBargraph::BargraphTimerExpired);
|
||||
*(_DWORD *)((char *)v3 + 146) = v8;
|
||||
*(DWORD *)((char *)v3 + 146) = v8;
|
||||
}
|
||||
else
|
||||
{
|
||||
TLightGroup::Message(v3, 20, 0.0);
|
||||
*(_DWORD *)((char *)v3 + 146) = 0;
|
||||
*(DWORD *)((char *)v3 + 146) = 0;
|
||||
}
|
||||
break;
|
||||
case 1011:
|
||||
(*(void (**)(void))(*(_DWORD *)this + 20))();
|
||||
(*(void (**)(void))(*(DWORD *)this + 20))();
|
||||
break;
|
||||
case 1020:
|
||||
v6 = (_DWORD *)((char *)this + 142);
|
||||
if ( *(_DWORD *)((char *)this + 142) )
|
||||
v6 = (DWORD *)((char *)this + 142);
|
||||
if ( *(DWORD *)((char *)this + 142) )
|
||||
{
|
||||
timer_kill(*(_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;
|
||||
*(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;
|
||||
@@ -126,18 +126,18 @@ TLightBargraph::Message(v3, 45, v7);
|
||||
}
|
||||
break;
|
||||
case 1024:
|
||||
(*(void (**)(void))(*(_DWORD *)this + 20))();
|
||||
(*(void (**)(void))(*(DWORD *)this + 20))();
|
||||
v4 = 0;
|
||||
if ( *(_DWORD *)(*(_DWORD *)((char *)v3 + 30) + 214) > 0 )
|
||||
if ( *(DWORD *)(*(DWORD *)((char *)v3 + 30) + 214) > 0 )
|
||||
{
|
||||
v5 = (_DWORD *)((char *)v3 + 150);
|
||||
v5 = (DWORD *)((char *)v3 + 150);
|
||||
do
|
||||
{
|
||||
*v5 = *(_DWORD *)((char *)v3 + 146);
|
||||
*v5 = *(DWORD *)((char *)v3 + 146);
|
||||
++v4;
|
||||
++v5;
|
||||
}
|
||||
while ( v4 < *(_DWORD *)(*(_DWORD *)((char *)v3 + 30) + 214) );
|
||||
while ( v4 < *(DWORD *)(*(DWORD *)((char *)v3 + 30) + 214) );
|
||||
}
|
||||
TLightGroup::Message(v3, 1024, a3);
|
||||
break;
|
||||
@@ -159,21 +159,21 @@ int i; // eax
|
||||
|
||||
v3 = this;
|
||||
TLightGroup::TLightGroup(this, a2, a3);
|
||||
*(_DWORD *)v3 = &TLightBargraph::vftable;
|
||||
*(_DWORD *)((char *)v3 + 138) = 0;
|
||||
*(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;
|
||||
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;
|
||||
*(float *)(*(DWORD *)((char *)v3 + 138) + 4 * i++) = *v4;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@ struct TLightBargraph;
|
||||
|
||||
TZmapList* __thiscall TLightBargraph::~TLightBargraph(TLightBargraph* this);
|
||||
void __thiscall TLightBargraph::Reset(TLightBargraph* this); // idb
|
||||
void __stdcall TLightBargraph::BargraphTimerExpired(int, void*); // 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);
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
#include "TLightRollover.h"
|
||||
|
||||
//----- (010164D1) --------------------------------------------------------
|
||||
void __stdcall TLightRollover::delay_expired(int a1, void *a2)
|
||||
void TLightRollover::delay_expired(int a1, void *a2)
|
||||
{
|
||||
render_sprite_set_bitmap(*(_DWORD **)((char *)a2 + 26), 0);
|
||||
*(_DWORD *)((char *)a2 + 91) = 0;
|
||||
render_sprite_set_bitmap(*(DWORD **)((char *)a2 + 26), 0);
|
||||
*(DWORD *)((char *)a2 + 91) = 0;
|
||||
}
|
||||
|
||||
//----- (010164F2) --------------------------------------------------------
|
||||
@@ -19,10 +19,10 @@ int v10; // eax
|
||||
v6 = this;
|
||||
*(float *)((char *)a2 + 42) = *(float *)a3;
|
||||
v7 = *(float *)((char *)a2 + 70);
|
||||
*(_DWORD *)((char *)a2 + 46) = *((_DWORD *)a3 + 1);
|
||||
*(DWORD *)((char *)a2 + 46) = *((DWORD *)a3 + 1);
|
||||
*(float *)((char *)a2 + 70) = v7 - a5;
|
||||
TBall::not_again(a2, a6);
|
||||
if ( !*(_DWORD *)(*(_DWORD *)((char *)v6 + 30) + 370) )
|
||||
if ( !*(DWORD *)(*(DWORD *)((char *)v6 + 30) + 370) )
|
||||
{
|
||||
if ( *((_BYTE *)v6 + 78) )
|
||||
{
|
||||
@@ -30,22 +30,22 @@ timer_set(0.1, (int)v6, (int)TRollover::TimerExpired);
|
||||
v8 = *((_BYTE *)v6 + 78) == 0;
|
||||
*((_BYTE *)v6 + 5) = 0;
|
||||
v9 = v8;
|
||||
v8 = *(_DWORD *)((char *)v6 + 91) == 0;
|
||||
v8 = *(DWORD *)((char *)v6 + 91) == 0;
|
||||
*((_BYTE *)v6 + 78) = v9;
|
||||
if ( v8 )
|
||||
*(_DWORD *)((char *)v6 + 91) = timer_set(
|
||||
*(DWORD *)((char *)v6 + 91) = timer_set(
|
||||
*(float *)((char *)v6 + 87),
|
||||
(int)v6,
|
||||
(int)TLightRollover::delay_expired);
|
||||
}
|
||||
else
|
||||
{
|
||||
loader_play_sound(*(_DWORD *)((char *)v6 + 70));
|
||||
loader_play_sound(*(DWORD *)((char *)v6 + 70));
|
||||
control_handler(63, v6);
|
||||
*((_BYTE *)v6 + 78) = *((_BYTE *)v6 + 78) == 0;
|
||||
v10 = *(_DWORD *)((char *)v6 + 34);
|
||||
v10 = *(DWORD *)((char *)v6 + 34);
|
||||
if ( v10 )
|
||||
render_sprite_set_bitmap(*(_DWORD **)((char *)v6 + 26), *(_DWORD *)(*(_DWORD *)(v10 + 4) + 8));
|
||||
render_sprite_set_bitmap(*(DWORD **)((char *)v6 + 26), *(DWORD *)(*(DWORD *)(v10 + 4) + 8));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -59,14 +59,14 @@ int v4; // eax
|
||||
v3 = this;
|
||||
if ( a2 == 1024 )
|
||||
{
|
||||
v4 = *(_DWORD *)((char *)this + 91);
|
||||
v4 = *(DWORD *)((char *)this + 91);
|
||||
*((_BYTE *)this + 5) = 1;
|
||||
*((_BYTE *)this + 78) = 0;
|
||||
if ( v4 )
|
||||
timer_kill(v4);
|
||||
*(_DWORD *)((char *)v3 + 91) = 0;
|
||||
if ( *(_DWORD *)((char *)v3 + 34) )
|
||||
render_sprite_set_bitmap(*(_DWORD **)((char *)v3 + 26), 0);
|
||||
*(DWORD *)((char *)v3 + 91) = 0;
|
||||
if ( *(DWORD *)((char *)v3 + 34) )
|
||||
render_sprite_set_bitmap(*(DWORD **)((char *)v3 + 26), 0);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -79,14 +79,14 @@ bool v4; // zf
|
||||
|
||||
v3 = this;
|
||||
TRollover::TRollover(this, a2, a3, 0);
|
||||
v4 = *(_DWORD *)((char *)v3 + 34) == 0;
|
||||
*(_DWORD *)v3 = &TLightRollover::vftable;
|
||||
v4 = *(DWORD *)((char *)v3 + 34) == 0;
|
||||
*(DWORD *)v3 = &TLightRollover::vftable;
|
||||
*((_BYTE *)v3 + 78) = 0;
|
||||
*(_DWORD *)((char *)v3 + 91) = 0;
|
||||
*(DWORD *)((char *)v3 + 91) = 0;
|
||||
if ( !v4 )
|
||||
render_sprite_set_bitmap(*(_DWORD **)((char *)v3 + 26), 0);
|
||||
render_sprite_set_bitmap(*(DWORD **)((char *)v3 + 26), 0);
|
||||
TRollover::build_walls(v3, a3);
|
||||
*(_DWORD *)((char *)v3 + 87) = *(_DWORD *)loader_query_float_attribute(a3, 0, 407);
|
||||
*(DWORD *)((char *)v3 + 87) = *(DWORD *)loader_query_float_attribute(a3, 0, 407);
|
||||
return v3;
|
||||
}
|
||||
// 1002630: using guessed type void *TLightRollover::vftable;
|
||||
@@ -10,7 +10,7 @@
|
||||
/* 109 */
|
||||
struct TLightRollover;
|
||||
|
||||
void __stdcall TLightRollover::delay_expired(int, void*); // idb
|
||||
void TLightRollover::delay_expired(int, void*); // idb
|
||||
void __thiscall TLightRollover::Collision(TLightRollover* this, struct TBall*, struct vector_type*, struct vector_type*, float, struct TEdgeSegment*); // idb
|
||||
int __thiscall TLightRollover::Message(TLightRollover* this, int, float); // idb
|
||||
TLightRollover* __thiscall TLightRollover::TLightRollover(TLightRollover* this, struct TPinballTable* a2, int a3);
|
||||
|
||||
@@ -11,7 +11,7 @@ TEdgeSegment::TEdgeSegment(this, a2, a3, a4);
|
||||
*(float *)((char *)v8 + 73) = a6;
|
||||
*(float *)((char *)v8 + 77) = a7;
|
||||
*(float *)((char *)v8 + 81) = a8;
|
||||
*(_DWORD *)v8 = &TLine::vftable;
|
||||
*(DWORD *)v8 = &TLine::vftable;
|
||||
line_init((int)v8 + 21, a5, a6, a7, a8);
|
||||
return v8;
|
||||
}
|
||||
@@ -32,10 +32,10 @@ float v8; // ST10_4
|
||||
|
||||
v6 = this;
|
||||
TEdgeSegment::TEdgeSegment(this, a2, a3, a4);
|
||||
*(_DWORD *)v6 = &TLine::vftable;
|
||||
*(_DWORD *)((char *)v6 + 69) = *(_DWORD *)a5;
|
||||
*(_DWORD *)((char *)v6 + 73) = *((_DWORD *)a5 + 1);
|
||||
*(_DWORD *)((char *)v6 + 77) = *(_DWORD *)a6;
|
||||
*(DWORD *)v6 = &TLine::vftable;
|
||||
*(DWORD *)((char *)v6 + 69) = *(DWORD *)a5;
|
||||
*(DWORD *)((char *)v6 + 73) = *((DWORD *)a5 + 1);
|
||||
*(DWORD *)((char *)v6 + 77) = *(DWORD *)a6;
|
||||
v7 = *((float *)a6 + 1);
|
||||
*(float *)((char *)v6 + 81) = *((float *)a6 + 1);
|
||||
v8 = v7;
|
||||
@@ -47,7 +47,7 @@ return v6;
|
||||
//----- (0101C7E6) --------------------------------------------------------
|
||||
void __thiscall TLine::EdgeCollision(TLine *this, struct TBall *a2, float a3)
|
||||
{
|
||||
(*(void (__stdcall **)(struct TBall *, char *, char *, _DWORD, TLine *))(**((_DWORD **)this + 1) + 20))(
|
||||
(*(void (**)(struct TBall *, char *, char *, DWORD, TLine *))(**((DWORD **)this + 1) + 20))(
|
||||
a2,
|
||||
(char *)this + 57,
|
||||
(char *)this + 21,
|
||||
|
||||
+14
-14
@@ -8,7 +8,7 @@ int result; // eax
|
||||
if ( a2 >= 6 )
|
||||
result = 0;
|
||||
else
|
||||
result = *(_DWORD *)((char *)this + 4 * a2 + 86);
|
||||
result = *(DWORD *)((char *)this + 4 * a2 + 86);
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@ return result;
|
||||
void __thiscall TOneway::put_scoring(TOneway *this, int a2, int a3)
|
||||
{
|
||||
if ( a2 < 6 )
|
||||
*(_DWORD *)((char *)this + 4 * a2 + 86) = a3;
|
||||
*(DWORD *)((char *)this + 4 * a2 + 86) = a3;
|
||||
}
|
||||
|
||||
//----- (01018032) --------------------------------------------------------
|
||||
@@ -32,18 +32,18 @@ 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);
|
||||
*(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) )
|
||||
*(DWORD *)((char *)a2 + 46) = v9;
|
||||
if ( !*(DWORD *)(*(DWORD *)((char *)v6 + 30) + 370) )
|
||||
{
|
||||
if ( *(_DWORD *)((char *)v6 + 74) )
|
||||
loader_play_sound(*(_DWORD *)((char *)v6 + 74));
|
||||
if ( *(DWORD *)((char *)v6 + 74) )
|
||||
loader_play_sound(*(DWORD *)((char *)v6 + 74));
|
||||
control_handler(63, v6);
|
||||
}
|
||||
}
|
||||
else if ( *(_DWORD *)(*(_DWORD *)((char *)this + 30) + 370) )
|
||||
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);
|
||||
}
|
||||
@@ -56,7 +56,7 @@ a4,
|
||||
*(float *)((char *)this + 66),
|
||||
*(float *)((char *)this + 62)) > 0.2 )
|
||||
{
|
||||
v7 = *(_DWORD *)((char *)v6 + 70);
|
||||
v7 = *(DWORD *)((char *)v6 + 70);
|
||||
if ( v7 )
|
||||
loader_play_sound(v7);
|
||||
}
|
||||
@@ -83,7 +83,7 @@ int v17; // [esp+68h] [ebp-8h]
|
||||
v3 = 0;
|
||||
v4 = this;
|
||||
TCollisionComponent::TCollisionComponent(this, a2, a3, 0);
|
||||
*(_DWORD *)v4 = &TOneway::vftable;
|
||||
*(DWORD *)v4 = &TOneway::vftable;
|
||||
loader_query_visual(a3, 0, &v10);
|
||||
if ( v11 == 2 )
|
||||
{
|
||||
@@ -97,7 +97,7 @@ v3 = TLine::TLine(v5, v4, (char *)v4 + 5, v13, (struct vector_type *)&v16, (stru
|
||||
if ( v3 )
|
||||
{
|
||||
TLine::Offset(v3, *(float *)((char *)a2 + 282));
|
||||
(*(void (__thiscall **)(TLine *))(*(_DWORD *)v3 + 8))(v3);
|
||||
(*(void (__thiscall **)(TLine *))(*(DWORD *)v3 + 8))(v3);
|
||||
objlist_class::Add((TOneway *)((char *)v4 + 42), (void *)v3);
|
||||
}
|
||||
v6 = (TLine *)operator new(0x55u);
|
||||
@@ -105,12 +105,12 @@ 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;
|
||||
*(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))();
|
||||
(*(void (**)(void))(**(DWORD **)((char *)v4 + 82) + 8))();
|
||||
objlist_class::Add((TOneway *)((char *)v4 + 42), *(void **)((char *)v4 + 82));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
//----- (010145F5) --------------------------------------------------------
|
||||
void* TPinballComponent::operator new(size_t SizeOfElements)
|
||||
{
|
||||
return _calloc(1u, SizeOfElements);
|
||||
return calloc(1u, SizeOfElements);
|
||||
}
|
||||
|
||||
//----- (010159A9) --------------------------------------------------------
|
||||
|
||||
@@ -28,7 +28,7 @@ struct TPinballComponent {
|
||||
|
||||
void* operator new(size_t SizeOfElements); // idb
|
||||
int Message(int, float); // idb
|
||||
int __stdcall TPinballComponent::get_scoring(int a2);
|
||||
int TPinballComponent::get_scoring(int a2);
|
||||
TPinballComponent* TPinballComponent::TPinballComponent(TPinballTable* a2, int a3, int a4);
|
||||
TZmapList* TPinballComponent::~TPinballComponent();
|
||||
|
||||
|
||||
@@ -1,42 +1,42 @@
|
||||
#include "TPinballTable.h"
|
||||
|
||||
//----- (01017467) --------------------------------------------------------
|
||||
void __stdcall TPinballTable::LightShow_timeout(int a1, void *a2)
|
||||
void TPinballTable::LightShow_timeout(int a1, void *a2)
|
||||
{
|
||||
void (__stdcall **v2)(signed int, _DWORD); // eax
|
||||
void (**v2)(signed int, DWORD); // eax
|
||||
|
||||
v2 = *(void (__stdcall ***)(signed int, _DWORD))a2;
|
||||
*(_DWORD *)((char *)a2 + 90) = 0;
|
||||
v2 = *(void (***)(signed int, DWORD))a2;
|
||||
*(DWORD *)((char *)a2 + 90) = 0;
|
||||
(*v2)(1013, 0.0);
|
||||
}
|
||||
|
||||
//----- (0101748B) --------------------------------------------------------
|
||||
void __stdcall TPinballTable::EndGame_timeout(int a1, void *a2)
|
||||
void TPinballTable::EndGame_timeout(int a1, void *a2)
|
||||
{
|
||||
char *v2; // esi
|
||||
int v3; // eax
|
||||
int v4; // edi
|
||||
void (__thiscall ***v5)(_DWORD, signed int, _DWORD); // esi
|
||||
void (__thiscall ***v5)(DWORD, signed int, DWORD); // esi
|
||||
char *v6; // eax
|
||||
char *v7; // [esp+28h] [ebp+Ch]
|
||||
|
||||
v2 = (char *)a2;
|
||||
*(_DWORD *)((char *)a2 + 94) = 0;
|
||||
*(DWORD *)((char *)a2 + 94) = 0;
|
||||
pb_end_game();
|
||||
v3 = *(_DWORD *)(*(_DWORD *)((char *)a2 + 254) + 4) - 1;
|
||||
v3 = *(DWORD *)(*(DWORD *)((char *)a2 + 254) + 4) - 1;
|
||||
if ( v3 >= 0 )
|
||||
{
|
||||
v4 = 4 * v3 + 8;
|
||||
v7 = *(char **)(*(_DWORD *)((char *)a2 + 254) + 4);
|
||||
v7 = *(char **)(*(DWORD *)((char *)a2 + 254) + 4);
|
||||
do
|
||||
{
|
||||
(***(void (__stdcall ****)(signed int, _DWORD))(v4 + *(_DWORD *)(v2 + 254)))(1022, 0.0);
|
||||
(***(void (****)(signed int, DWORD))(v4 + *(DWORD *)(v2 + 254)))(1022, 0.0);
|
||||
v4 -= 4;
|
||||
--v7;
|
||||
}
|
||||
while ( v7 );
|
||||
}
|
||||
v5 = *(void (__thiscall ****)(_DWORD, signed int, _DWORD))(v2 + 230);
|
||||
v5 = *(void (__thiscall ****)(DWORD, signed int, DWORD))(v2 + 230);
|
||||
if ( v5 )
|
||||
(**v5)(v5, 1022, 0.0);
|
||||
control_handler(67, MissTextBox);
|
||||
@@ -47,62 +47,62 @@ TTextBox::Display(InfoTextBox, 1022, v6, -1.0);
|
||||
//----- (01017526) --------------------------------------------------------
|
||||
int __thiscall TPinballTable::AddScore(TPinballTable *this, int a2)
|
||||
{
|
||||
_DWORD *v2; // eax
|
||||
_DWORD *v3; // eax
|
||||
DWORD *v2; // eax
|
||||
DWORD *v3; // eax
|
||||
int v4; // esi
|
||||
int *v5; // eax
|
||||
signed int v6; // edx
|
||||
|
||||
if ( *(_DWORD *)((char *)this + 318) )
|
||||
if ( *(DWORD *)((char *)this + 318) )
|
||||
{
|
||||
v2 = (_DWORD *)((char *)this + 314);
|
||||
v2 = (DWORD *)((char *)this + 314);
|
||||
*v2 += a2;
|
||||
if ( *(_DWORD *)((char *)this + 314) > 5000000 )
|
||||
if ( *(DWORD *)((char *)this + 314) > 5000000 )
|
||||
*v2 = 5000000;
|
||||
}
|
||||
if ( *(_DWORD *)((char *)this + 310) )
|
||||
if ( *(DWORD *)((char *)this + 310) )
|
||||
{
|
||||
v3 = (_DWORD *)((char *)this + 306);
|
||||
v3 = (DWORD *)((char *)this + 306);
|
||||
*v3 += a2;
|
||||
if ( *(_DWORD *)((char *)this + 306) > 5000000 )
|
||||
if ( *(DWORD *)((char *)this + 306) > 5000000 )
|
||||
*v3 = 5000000;
|
||||
}
|
||||
v4 = *(_DWORD *)((char *)this + 298) + a2 * dword_1024758[*(_DWORD *)((char *)this + 294)];
|
||||
v4 = *(DWORD *)((char *)this + 298) + a2 * dword_1024758[*(DWORD *)((char *)this + 294)];
|
||||
v5 = (int *)((char *)this + 82);
|
||||
*v5 += v4;
|
||||
v6 = *(_DWORD *)((char *)this + 82);
|
||||
v6 = *(DWORD *)((char *)this + 82);
|
||||
if ( v6 > 1000000000 )
|
||||
{
|
||||
++*(_DWORD *)((char *)this + 86);
|
||||
++*(DWORD *)((char *)this + 86);
|
||||
*v5 = v6 - 1000000000;
|
||||
}
|
||||
score_set(*(_DWORD **)((char *)this + 50), *v5);
|
||||
score_set(*(DWORD **)((char *)this + 50), *v5);
|
||||
return v4;
|
||||
}
|
||||
|
||||
//----- (010175AA) --------------------------------------------------------
|
||||
void __userpurge TPinballTable::ChangeBallCount(TPinballTable *this@<ecx>, int a2@<ebx>, int a3)
|
||||
void TPinballTable::ChangeBallCount(TPinballTable *this, int a2, int a3)
|
||||
{
|
||||
TPinballTable *v3; // esi
|
||||
|
||||
v3 = this;
|
||||
*(_DWORD *)((char *)this + 326) = a3;
|
||||
*(DWORD *)((char *)this + 326) = a3;
|
||||
if ( a3 <= 0 )
|
||||
{
|
||||
score_erase(a2, *(_DWORD **)((char *)this + 54), 1);
|
||||
score_erase(a2, *(DWORD **)((char *)this + 54), 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
score_set(*(_DWORD **)((char *)this + 54), *(_DWORD *)((char *)this + 330) - a3 + 1);
|
||||
score_set(*(DWORD **)((char *)this + 54), *(DWORD *)((char *)this + 330) - a3 + 1);
|
||||
score_update(a2, *(int **)((char *)v3 + 54));
|
||||
}
|
||||
}
|
||||
|
||||
//----- (010175EF) --------------------------------------------------------
|
||||
void __stdcall TPinballTable::replay_timer_callback(int a1, void *a2)
|
||||
void TPinballTable::replay_timer_callback(int a1, void *a2)
|
||||
{
|
||||
*(_DWORD *)((char *)a2 + 354) = 0;
|
||||
*(_DWORD *)((char *)a2 + 358) = 0;
|
||||
*(DWORD *)((char *)a2 + 354) = 0;
|
||||
*(DWORD *)((char *)a2 + 358) = 0;
|
||||
}
|
||||
|
||||
//----- (0101760E) --------------------------------------------------------
|
||||
@@ -114,14 +114,14 @@ int v3; // esi
|
||||
int v4; // ebx
|
||||
|
||||
v1 = this;
|
||||
v2 = *(_DWORD *)(*(_DWORD *)((char *)this + 254) + 4) - 1;
|
||||
v2 = *(DWORD *)(*(DWORD *)((char *)this + 254) + 4) - 1;
|
||||
if ( v2 >= 0 )
|
||||
{
|
||||
v3 = 4 * v2 + 8;
|
||||
v4 = *(_DWORD *)(*(_DWORD *)((char *)this + 254) + 4);
|
||||
v4 = *(DWORD *)(*(DWORD *)((char *)this + 254) + 4);
|
||||
do
|
||||
{
|
||||
(*(void (**)(void))(**(_DWORD **)(v3 + *(_DWORD *)((char *)v1 + 254)) + 4))();
|
||||
(*(void (**)(void))(**(DWORD **)(v3 + *(DWORD *)((char *)v1 + 254)) + 4))();
|
||||
v3 -= 4;
|
||||
--v4;
|
||||
}
|
||||
@@ -142,8 +142,8 @@ int v8; // [esp+10h] [ebp-4h]
|
||||
|
||||
v8 = 0;
|
||||
v2 = this;
|
||||
v7 = *(_DWORD *)(*(_DWORD *)((char *)this + 254) + 4);
|
||||
if ( *(_DWORD *)(*(_DWORD *)((char *)this + 254) + 4) <= 0 )
|
||||
v7 = *(DWORD *)(*(DWORD *)((char *)this + 254) + 4);
|
||||
if ( *(DWORD *)(*(DWORD *)((char *)this + 254) + 4) <= 0 )
|
||||
{
|
||||
LABEL_6:
|
||||
MessageBoxA(0, "Table cant find:", lpString2, 0x2000u);
|
||||
@@ -154,7 +154,7 @@ else
|
||||
v3 = 8;
|
||||
while ( 1 )
|
||||
{
|
||||
v4 = *(_DWORD *)(v3 + *(_DWORD *)((char *)v2 + 254));
|
||||
v4 = *(DWORD *)(v3 + *(DWORD *)((char *)v2 + 254));
|
||||
v5 = *(const CHAR **)(v4 + 10);
|
||||
if ( v5 )
|
||||
{
|
||||
@@ -181,8 +181,8 @@ int v5; // edx
|
||||
struct TPinballComponent *result; // eax
|
||||
char DstBuf; // [esp+8h] [ebp-CCh]
|
||||
|
||||
v2 = *(_DWORD *)((char *)this + 254);
|
||||
v3 = *(_DWORD *)(v2 + 4);
|
||||
v2 = *(DWORD *)((char *)this + 254);
|
||||
v3 = *(DWORD *)(v2 + 4);
|
||||
v4 = 0;
|
||||
if ( v3 <= 0 )
|
||||
{
|
||||
@@ -197,7 +197,7 @@ v5 = v2 + 8;
|
||||
while ( 1 )
|
||||
{
|
||||
result = *(struct TPinballComponent **)v5;
|
||||
if ( Val == *(_DWORD *)(*(_DWORD *)v5 + 22) )
|
||||
if ( Val == *(DWORD *)(*(DWORD *)v5 + 22) )
|
||||
break;
|
||||
++v4;
|
||||
v5 += 4;
|
||||
@@ -209,24 +209,24 @@ return result;
|
||||
}
|
||||
|
||||
//----- (01017738) --------------------------------------------------------
|
||||
void __stdcall TPinballTable::tilt_timeout(int a1, void *a2)
|
||||
void TPinballTable::tilt_timeout(int a1, void *a2)
|
||||
{
|
||||
int v2; // eax
|
||||
_DWORD *v3; // edi
|
||||
DWORD *v3; // edi
|
||||
int v4; // ebx
|
||||
char v5; // [esp+14h] [ebp-Ch]
|
||||
|
||||
*(_DWORD *)((char *)a2 + 98) = 0;
|
||||
if ( *(_DWORD *)((char *)a2 + 370) )
|
||||
*(DWORD *)((char *)a2 + 98) = 0;
|
||||
if ( *(DWORD *)((char *)a2 + 370) )
|
||||
{
|
||||
v2 = *(_DWORD *)((char *)a2 + 262);
|
||||
v3 = (_DWORD *)(v2 + 8);
|
||||
if ( *(_DWORD *)(v2 + 4) > 0 )
|
||||
v2 = *(DWORD *)((char *)a2 + 262);
|
||||
v3 = (DWORD *)(v2 + 8);
|
||||
if ( *(DWORD *)(v2 + 4) > 0 )
|
||||
{
|
||||
v4 = *(_DWORD *)(v2 + 4);
|
||||
v4 = *(DWORD *)(v2 + 4);
|
||||
do
|
||||
{
|
||||
(*(void (__stdcall **)(_DWORD, char *, char *, _DWORD, _DWORD))(**(_DWORD **)((char *)a2 + 226) + 20))(
|
||||
(*(void (**)(DWORD, char *, char *, DWORD, DWORD))(**(DWORD **)((char *)a2 + 226) + 20))(
|
||||
*v3,
|
||||
&v5,
|
||||
&v5,
|
||||
@@ -241,7 +241,7 @@ while ( v4 );
|
||||
}
|
||||
|
||||
//----- (01017791) --------------------------------------------------------
|
||||
void __userpurge TPinballTable::tilt(TPinballTable *this@<ecx>, int a2@<ebx>, float a3)
|
||||
void TPinballTable::tilt(TPinballTable *this, int a2, float a3)
|
||||
{
|
||||
TPinballTable *v3; // esi
|
||||
int v4; // ST14_4
|
||||
@@ -251,37 +251,37 @@ signed int v7; // ebx
|
||||
int v8; // [esp+20h] [ebp-4h]
|
||||
|
||||
v3 = this;
|
||||
if ( !*(_DWORD *)((char *)this + 370) && !*(_DWORD *)((char *)this + 78) )
|
||||
if ( !*(DWORD *)((char *)this + 370) && !*(DWORD *)((char *)this + 78) )
|
||||
{
|
||||
v4 = a2;
|
||||
TTextBox::Clear(InfoTextBox, a2);
|
||||
TTextBox::Clear(MissTextBox, a2);
|
||||
v5 = get_rc_string(35, 0);
|
||||
TTextBox::Display(InfoTextBox, a2, v5, -1.0);
|
||||
loader_play_sound(*(_DWORD *)((char *)v3 + 74));
|
||||
*(_DWORD *)((char *)v3 + 98) = timer_set(30.0, (int)v3, (int)TPinballTable::tilt_timeout);
|
||||
v6 = *(_DWORD *)(*(_DWORD *)((char *)v3 + 254) + 4);
|
||||
v8 = *(_DWORD *)(*(_DWORD *)((char *)v3 + 254) + 4);
|
||||
(**(void (__thiscall ***)(TPinballTable *, signed int, _DWORD, int))v3)(v3, 1011, -1.0, v4);
|
||||
loader_play_sound(*(DWORD *)((char *)v3 + 74));
|
||||
*(DWORD *)((char *)v3 + 98) = timer_set(30.0, (int)v3, (int)TPinballTable::tilt_timeout);
|
||||
v6 = *(DWORD *)(*(DWORD *)((char *)v3 + 254) + 4);
|
||||
v8 = *(DWORD *)(*(DWORD *)((char *)v3 + 254) + 4);
|
||||
(**(void (__thiscall ***)(TPinballTable *, signed int, DWORD, int))v3)(v3, 1011, -1.0, v4);
|
||||
if ( v6 > 0 )
|
||||
{
|
||||
v7 = 8;
|
||||
do
|
||||
{
|
||||
(***(void (__stdcall ****)(signed int, _DWORD))(v7 + *(_DWORD *)((char *)v3 + 254)))(1011, LODWORD(a3));
|
||||
(***(void (****)(signed int, DWORD))(v7 + *(DWORD *)((char *)v3 + 254)))(1011, LODWORD(a3));
|
||||
v7 += 4;
|
||||
--v8;
|
||||
}
|
||||
while ( v8 );
|
||||
}
|
||||
(***(void (__stdcall ****)(signed int))((char *)v3 + 266))(8);
|
||||
*(_DWORD *)((char *)v3 + 370) = 1;
|
||||
(***(void (****)(signed int))((char *)v3 + 266))(8);
|
||||
*(DWORD *)((char *)v3 + 370) = 1;
|
||||
table_control_handler(1011);
|
||||
}
|
||||
}
|
||||
|
||||
//----- (010187D6) --------------------------------------------------------
|
||||
int __userpurge TPinballTable::Message@<eax>(TPinballTable *this@<ecx>, int a2@<ebx>, int a3, float a4)
|
||||
int TPinballTable::Message(TPinballTable *this, int a2, int a3, float a4)
|
||||
{
|
||||
TPinballTable *v4; // esi
|
||||
int v5; // eax
|
||||
@@ -290,28 +290,28 @@ int v7; // ebx
|
||||
int v8; // eax
|
||||
int v9; // eax
|
||||
signed __int64 v10; // rax
|
||||
_DWORD *v11; // ST14_4
|
||||
DWORD *v11; // ST14_4
|
||||
bool v12; // zf
|
||||
bool v13; // sf
|
||||
unsigned __int8 v14; // of
|
||||
_DWORD *v15; // edi
|
||||
DWORD *v15; // edi
|
||||
signed int v16; // eax
|
||||
int v17; // edi
|
||||
float v18; // ST10_4
|
||||
char *v19; // eax
|
||||
void (__thiscall ***v20)(_DWORD, signed int, _DWORD); // esi
|
||||
void (__thiscall ***v20)(DWORD, signed int, DWORD); // esi
|
||||
float v21; // ST10_4
|
||||
signed int v22; // ebx
|
||||
int v23; // ecx
|
||||
int v24; // eax
|
||||
int v25; // ST18_4
|
||||
_DWORD *v26; // ST14_4
|
||||
DWORD *v26; // ST14_4
|
||||
int v27; // edi
|
||||
float v28; // ST28_4
|
||||
char *v29; // eax
|
||||
char *v30; // eax
|
||||
void (__thiscall ***v31)(_DWORD, signed int, _DWORD); // esi
|
||||
void (__thiscall ***v32)(_DWORD, signed int, _DWORD); // esi
|
||||
void (__thiscall ***v31)(DWORD, signed int, DWORD); // esi
|
||||
void (__thiscall ***v32)(DWORD, signed int, DWORD); // esi
|
||||
int v33; // eax
|
||||
int v34; // edi
|
||||
int v35; // ebx
|
||||
@@ -319,60 +319,60 @@ char *v36; // eax
|
||||
float v38; // [esp+18h] [ebp-18h]
|
||||
int v39; // [esp+2Ch] [ebp-4h]
|
||||
signed int v40; // [esp+3Ch] [ebp+Ch]
|
||||
_DWORD **v41; // [esp+3Ch] [ebp+Ch]
|
||||
DWORD **v41; // [esp+3Ch] [ebp+Ch]
|
||||
signed int v42; // [esp+3Ch] [ebp+Ch]
|
||||
|
||||
v4 = this;
|
||||
switch ( a3 )
|
||||
{
|
||||
case 1000:
|
||||
if ( !*(_DWORD *)((char *)this + 370) )
|
||||
if ( !*(DWORD *)((char *)this + 370) )
|
||||
{
|
||||
v32 = *(void (__thiscall ****)(_DWORD, signed int, _DWORD))((char *)this + 42);
|
||||
v32 = *(void (__thiscall ****)(DWORD, signed int, DWORD))((char *)this + 42);
|
||||
goto LABEL_73;
|
||||
}
|
||||
goto LABEL_81;
|
||||
case 1001:
|
||||
if ( !*(_DWORD *)((char *)this + 370) )
|
||||
if ( !*(DWORD *)((char *)this + 370) )
|
||||
{
|
||||
v31 = *(void (__thiscall ****)(_DWORD, signed int, _DWORD))((char *)this + 42);
|
||||
v31 = *(void (__thiscall ****)(DWORD, signed int, DWORD))((char *)this + 42);
|
||||
goto LABEL_70;
|
||||
}
|
||||
goto LABEL_81;
|
||||
case 1002:
|
||||
if ( !*(_DWORD *)((char *)this + 370) )
|
||||
if ( !*(DWORD *)((char *)this + 370) )
|
||||
{
|
||||
v32 = *(void (__thiscall ****)(_DWORD, signed int, _DWORD))((char *)this + 46);
|
||||
v32 = *(void (__thiscall ****)(DWORD, signed int, DWORD))((char *)this + 46);
|
||||
LABEL_73:
|
||||
(**v32)(v32, 1, LODWORD(a4));
|
||||
}
|
||||
goto LABEL_81;
|
||||
case 1003:
|
||||
if ( !*(_DWORD *)((char *)this + 370) )
|
||||
if ( !*(DWORD *)((char *)this + 370) )
|
||||
{
|
||||
v31 = *(void (__thiscall ****)(_DWORD, signed int, _DWORD))((char *)this + 46);
|
||||
v31 = *(void (__thiscall ****)(DWORD, signed int, DWORD))((char *)this + 46);
|
||||
LABEL_70:
|
||||
(**v31)(v31, 2, LODWORD(a4));
|
||||
}
|
||||
goto LABEL_81;
|
||||
case 1004:
|
||||
case 1005:
|
||||
(***(void (__thiscall ****)(_DWORD, int, _DWORD))((char *)this + 222))(
|
||||
*(_DWORD *)((char *)this + 222),
|
||||
(***(void (__thiscall ****)(DWORD, int, DWORD))((char *)this + 222))(
|
||||
*(DWORD *)((char *)this + 222),
|
||||
a3,
|
||||
LODWORD(a4));
|
||||
goto LABEL_81;
|
||||
case 1008:
|
||||
case 1009:
|
||||
case 1010:
|
||||
v33 = *(_DWORD *)(*(_DWORD *)((char *)this + 254) + 4) - 1;
|
||||
v33 = *(DWORD *)(*(DWORD *)((char *)this + 254) + 4) - 1;
|
||||
if ( v33 >= 0 )
|
||||
{
|
||||
v34 = 4 * v33 + 8;
|
||||
v35 = *(_DWORD *)(*(_DWORD *)((char *)this + 254) + 4);
|
||||
v35 = *(DWORD *)(*(DWORD *)((char *)this + 254) + 4);
|
||||
do
|
||||
{
|
||||
(***(void (__stdcall ****)(int, _DWORD))(v34 + *(_DWORD *)((char *)v4 + 254)))(a3, LODWORD(a4));
|
||||
(***(void (****)(int, DWORD))(v34 + *(DWORD *)((char *)v4 + 254)))(a3, LODWORD(a4));
|
||||
v34 -= 4;
|
||||
--v35;
|
||||
}
|
||||
@@ -380,97 +380,97 @@ while ( v35 );
|
||||
}
|
||||
goto LABEL_81;
|
||||
case 1012:
|
||||
(***(void (__stdcall ****)(signed int, _DWORD))((char *)this + 266))(14, 0.0);
|
||||
if ( *(_DWORD *)((char *)v4 + 370) )
|
||||
(***(void (****)(signed int, DWORD))((char *)this + 266))(14, 0.0);
|
||||
if ( *(DWORD *)((char *)v4 + 370) )
|
||||
{
|
||||
*(_DWORD *)((char *)v4 + 370) = 0;
|
||||
if ( *(_DWORD *)((char *)v4 + 98) )
|
||||
timer_kill(*(_DWORD *)((char *)v4 + 98));
|
||||
*(_DWORD *)((char *)v4 + 98) = 0;
|
||||
*(DWORD *)((char *)v4 + 370) = 0;
|
||||
if ( *(DWORD *)((char *)v4 + 98) )
|
||||
timer_kill(*(DWORD *)((char *)v4 + 98));
|
||||
*(DWORD *)((char *)v4 + 98) = 0;
|
||||
}
|
||||
goto LABEL_81;
|
||||
case 1013:
|
||||
(***(void (__stdcall ****)(signed int, _DWORD))((char *)this + 266))(34, 0.0);
|
||||
(***(void (__stdcall ****)(signed int, _DWORD))((char *)v4 + 266))(20, 0.0);
|
||||
(***(void (__stdcall ****)(signed int, _DWORD))((char *)v4 + 222))(1016, 0.0);
|
||||
if ( *(_BYTE *)(*(_DWORD *)((char *)v4 + 230) + 5) )
|
||||
(***(void (****)(signed int, DWORD))((char *)this + 266))(34, 0.0);
|
||||
(***(void (****)(signed int, DWORD))((char *)v4 + 266))(20, 0.0);
|
||||
(***(void (****)(signed int, DWORD))((char *)v4 + 222))(1016, 0.0);
|
||||
if ( *(_BYTE *)(*(DWORD *)((char *)v4 + 230) + 5) )
|
||||
v19 = get_rc_string(30, 0);
|
||||
else
|
||||
v19 = get_rc_string(26, 0);
|
||||
TTextBox::Display(InfoTextBox, 0, v19, -1.0);
|
||||
v20 = *(void (__thiscall ****)(_DWORD, signed int, _DWORD))((char *)v4 + 230);
|
||||
v20 = *(void (__thiscall ****)(DWORD, signed int, DWORD))((char *)v4 + 230);
|
||||
if ( v20 )
|
||||
(**v20)(v20, 1014, 0.0);
|
||||
goto LABEL_81;
|
||||
case 1014:
|
||||
if ( *(_DWORD *)((char *)this + 94) )
|
||||
if ( *(DWORD *)((char *)this + 94) )
|
||||
{
|
||||
timer_kill(*(_DWORD *)((char *)this + 94));
|
||||
timer_kill(*(DWORD *)((char *)this + 94));
|
||||
TPinballTable::EndGame_timeout(0, (void *)v4);
|
||||
pb_mode_change(1);
|
||||
}
|
||||
if ( *(_DWORD *)((char *)v4 + 90) )
|
||||
if ( *(DWORD *)((char *)v4 + 90) )
|
||||
{
|
||||
timer_kill(*(_DWORD *)((char *)v4 + 90));
|
||||
*(_DWORD *)((char *)v4 + 90) = 0;
|
||||
timer_kill(*(DWORD *)((char *)v4 + 90));
|
||||
*(DWORD *)((char *)v4 + 90) = 0;
|
||||
TPinballTable::Message(v4, 1013, 0.0);
|
||||
}
|
||||
else
|
||||
{
|
||||
*(_DWORD *)((char *)v4 + 62) = 0;
|
||||
*(DWORD *)((char *)v4 + 62) = 0;
|
||||
TPinballTable::Message(v4, 1024, 0.0);
|
||||
v9 = *(_DWORD *)(*(_DWORD *)((char *)v4 + 262) + 8);
|
||||
v9 = *(DWORD *)(*(DWORD *)((char *)v4 + 262) + 8);
|
||||
*(float *)(v9 + 46) = 0.0;
|
||||
*(float *)(v9 + 42) = 0.0;
|
||||
*(_DWORD *)(v9 + 50) = -1085485875;
|
||||
*(DWORD *)(v9 + 50) = -1085485875;
|
||||
v10 = (signed __int64)_floor(a4);
|
||||
*(_DWORD *)((char *)v4 + 214) = v10;
|
||||
*(DWORD *)((char *)v4 + 214) = v10;
|
||||
if ( (signed int)v10 >= 1 )
|
||||
{
|
||||
if ( (signed int)v10 > 4 )
|
||||
*(_DWORD *)((char *)v4 + 214) = 4;
|
||||
*(DWORD *)((char *)v4 + 214) = 4;
|
||||
}
|
||||
else
|
||||
{
|
||||
*(_DWORD *)((char *)v4 + 214) = 1;
|
||||
*(DWORD *)((char *)v4 + 214) = 1;
|
||||
}
|
||||
v11 = *(_DWORD **)((char *)v4 + 102);
|
||||
*(_DWORD *)((char *)v4 + 218) = 0;
|
||||
*(_DWORD *)((char *)v4 + 50) = v11;
|
||||
*(_DWORD *)((char *)v4 + 82) = 0;
|
||||
v11 = *(DWORD **)((char *)v4 + 102);
|
||||
*(DWORD *)((char *)v4 + 218) = 0;
|
||||
*(DWORD *)((char *)v4 + 50) = v11;
|
||||
*(DWORD *)((char *)v4 + 82) = 0;
|
||||
score_set(v11, 0);
|
||||
v14 = __OFSUB__(*(_DWORD *)((char *)v4 + 214), 1);
|
||||
v12 = *(_DWORD *)((char *)v4 + 214) == 1;
|
||||
v13 = *(_DWORD *)((char *)v4 + 214) - 1 < 0;
|
||||
*(_DWORD *)((char *)v4 + 294) = 0;
|
||||
v14 = __OFSUB__(*(DWORD *)((char *)v4 + 214), 1);
|
||||
v12 = *(DWORD *)((char *)v4 + 214) == 1;
|
||||
v13 = *(DWORD *)((char *)v4 + 214) - 1 < 0;
|
||||
*(DWORD *)((char *)v4 + 294) = 0;
|
||||
v40 = 1;
|
||||
if ( !((unsigned __int8)(v13 ^ v14) | v12) )
|
||||
{
|
||||
v15 = (_DWORD *)((char *)v4 + 134);
|
||||
v15 = (DWORD *)((char *)v4 + 134);
|
||||
do
|
||||
{
|
||||
score_set((_DWORD *)*(v15 - 1), 0);
|
||||
score_set((DWORD *)*(v15 - 1), 0);
|
||||
++v40;
|
||||
*v15 = 0;
|
||||
v15[1] = 0;
|
||||
v15[3] = *(_DWORD *)((char *)v4 + 330);
|
||||
v15[4] = *(_DWORD *)((char *)v4 + 334);
|
||||
v15[5] = *(_DWORD *)((char *)v4 + 342);
|
||||
v15[2] = *(_DWORD *)((char *)v4 + 314);
|
||||
v15[3] = *(DWORD *)((char *)v4 + 330);
|
||||
v15[4] = *(DWORD *)((char *)v4 + 334);
|
||||
v15[5] = *(DWORD *)((char *)v4 + 342);
|
||||
v15[2] = *(DWORD *)((char *)v4 + 314);
|
||||
v15 += 7;
|
||||
}
|
||||
while ( v40 < *(_DWORD *)((char *)v4 + 214) );
|
||||
while ( v40 < *(DWORD *)((char *)v4 + 214) );
|
||||
}
|
||||
*(_DWORD *)((char *)v4 + 326) = *(_DWORD *)((char *)v4 + 330);
|
||||
*(DWORD *)((char *)v4 + 326) = *(DWORD *)((char *)v4 + 330);
|
||||
Sound_Idle();
|
||||
TPinballTable::ChangeBallCount(v4, 0, *(_DWORD *)((char *)v4 + 326));
|
||||
score_set(*(_DWORD **)((char *)v4 + 58), *(_DWORD *)((char *)v4 + 218) + 1);
|
||||
TPinballTable::ChangeBallCount(v4, 0, *(DWORD *)((char *)v4 + 326));
|
||||
score_set(*(DWORD **)((char *)v4 + 58), *(DWORD *)((char *)v4 + 218) + 1);
|
||||
score_update(0, *(int **)((char *)v4 + 58));
|
||||
Sound_Idle();
|
||||
v16 = *(_DWORD *)((char *)v4 + 214);
|
||||
v16 = *(DWORD *)((char *)v4 + 214);
|
||||
if ( v16 < 4 )
|
||||
{
|
||||
v41 = (_DWORD **)((char *)v4 + 28 * v16 + 102);
|
||||
v41 = (DWORD **)((char *)v4 + 28 * v16 + 102);
|
||||
v17 = 4 - v16;
|
||||
do
|
||||
{
|
||||
@@ -481,66 +481,66 @@ v41 += 7;
|
||||
while ( v17 );
|
||||
}
|
||||
Sound_Idle();
|
||||
*(_DWORD *)((char *)v4 + 318) = 0;
|
||||
*(_DWORD *)((char *)v4 + 310) = 0;
|
||||
*(_DWORD *)((char *)v4 + 322) = 0;
|
||||
*(DWORD *)((char *)v4 + 318) = 0;
|
||||
*(DWORD *)((char *)v4 + 310) = 0;
|
||||
*(DWORD *)((char *)v4 + 322) = 0;
|
||||
TTextBox::Clear(InfoTextBox, 0);
|
||||
Sound_Idle();
|
||||
TTextBox::Clear(MissTextBox, 0);
|
||||
Sound_Idle();
|
||||
(***(void (__stdcall ****)(signed int, _DWORD))((char *)v4 + 266))(28, 0.2);
|
||||
v18 = loader_play_sound(*(_DWORD *)((char *)v4 + 66));
|
||||
*(_DWORD *)((char *)v4 + 90) = timer_set(v18, (int)v4, (int)TPinballTable::LightShow_timeout);
|
||||
(***(void (****)(signed int, DWORD))((char *)v4 + 266))(28, 0.2);
|
||||
v18 = loader_play_sound(*(DWORD *)((char *)v4 + 66));
|
||||
*(DWORD *)((char *)v4 + 90) = timer_set(v18, (int)v4, (int)TPinballTable::LightShow_timeout);
|
||||
}
|
||||
goto LABEL_81;
|
||||
case 1018:
|
||||
if ( *(_DWORD *)((char *)this + 358) )
|
||||
timer_kill(*(_DWORD *)((char *)this + 358));
|
||||
if ( *(DWORD *)((char *)this + 358) )
|
||||
timer_kill(*(DWORD *)((char *)this + 358));
|
||||
v21 = _floor(a4);
|
||||
*(_DWORD *)((char *)v4 + 358) = timer_set(v21, (int)v4, (int)TPinballTable::replay_timer_callback);
|
||||
*(_DWORD *)((char *)v4 + 354) = 1;
|
||||
*(DWORD *)((char *)v4 + 358) = timer_set(v21, (int)v4, (int)TPinballTable::replay_timer_callback);
|
||||
*(DWORD *)((char *)v4 + 354) = 1;
|
||||
goto LABEL_81;
|
||||
case 1021:
|
||||
v22 = *(_DWORD *)((char *)this + 214);
|
||||
v22 = *(DWORD *)((char *)this + 214);
|
||||
if ( v22 > 1 )
|
||||
{
|
||||
v23 = *(_DWORD *)((char *)this + 218);
|
||||
v23 = *(DWORD *)((char *)this + 218);
|
||||
v39 = (v23 + 1) % v22;
|
||||
v24 = (int)v4 + 28 * v39;
|
||||
if ( *(_DWORD *)(v24 + 118) <= 0 )
|
||||
if ( *(DWORD *)(v24 + 118) <= 0 )
|
||||
goto LABEL_81;
|
||||
*(_DWORD *)((char *)v4 + 28 * v23 + 106) = *(_DWORD *)((char *)v4 + 82);
|
||||
*(_DWORD *)((char *)v4 + 28 * *(_DWORD *)((char *)v4 + 218) + 110) = *(_DWORD *)((char *)v4 + 86);
|
||||
*(_DWORD *)((char *)v4 + 28 * *(_DWORD *)((char *)v4 + 218) + 118) = *(_DWORD *)((char *)v4 + 326);
|
||||
*(_DWORD *)((char *)v4 + 28 * *(_DWORD *)((char *)v4 + 218) + 122) = *(_DWORD *)((char *)v4 + 334);
|
||||
*(_DWORD *)((char *)v4 + 28 * *(_DWORD *)((char *)v4 + 218) + 126) = *(_DWORD *)((char *)v4 + 342);
|
||||
*(_DWORD *)((char *)v4 + 28 * *(_DWORD *)((char *)v4 + 218) + 114) = *(_DWORD *)((char *)v4 + 314);
|
||||
*(_DWORD *)((char *)v4 + 82) = *(_DWORD *)(v24 + 106);
|
||||
v25 = *(_DWORD *)((char *)v4 + 82);
|
||||
*(_DWORD *)((char *)v4 + 86) = *(_DWORD *)(v24 + 110);
|
||||
*(_DWORD *)((char *)v4 + 326) = *(_DWORD *)(v24 + 118);
|
||||
*(_DWORD *)((char *)v4 + 334) = *(_DWORD *)(v24 + 122);
|
||||
*(_DWORD *)((char *)v4 + 342) = *(_DWORD *)(v24 + 126);
|
||||
*(_DWORD *)((char *)v4 + 314) = *(_DWORD *)(v24 + 114);
|
||||
v26 = *(_DWORD **)(v24 + 102);
|
||||
*(_DWORD *)((char *)v4 + 50) = v26;
|
||||
*(DWORD *)((char *)v4 + 28 * v23 + 106) = *(DWORD *)((char *)v4 + 82);
|
||||
*(DWORD *)((char *)v4 + 28 * *(DWORD *)((char *)v4 + 218) + 110) = *(DWORD *)((char *)v4 + 86);
|
||||
*(DWORD *)((char *)v4 + 28 * *(DWORD *)((char *)v4 + 218) + 118) = *(DWORD *)((char *)v4 + 326);
|
||||
*(DWORD *)((char *)v4 + 28 * *(DWORD *)((char *)v4 + 218) + 122) = *(DWORD *)((char *)v4 + 334);
|
||||
*(DWORD *)((char *)v4 + 28 * *(DWORD *)((char *)v4 + 218) + 126) = *(DWORD *)((char *)v4 + 342);
|
||||
*(DWORD *)((char *)v4 + 28 * *(DWORD *)((char *)v4 + 218) + 114) = *(DWORD *)((char *)v4 + 314);
|
||||
*(DWORD *)((char *)v4 + 82) = *(DWORD *)(v24 + 106);
|
||||
v25 = *(DWORD *)((char *)v4 + 82);
|
||||
*(DWORD *)((char *)v4 + 86) = *(DWORD *)(v24 + 110);
|
||||
*(DWORD *)((char *)v4 + 326) = *(DWORD *)(v24 + 118);
|
||||
*(DWORD *)((char *)v4 + 334) = *(DWORD *)(v24 + 122);
|
||||
*(DWORD *)((char *)v4 + 342) = *(DWORD *)(v24 + 126);
|
||||
*(DWORD *)((char *)v4 + 314) = *(DWORD *)(v24 + 114);
|
||||
v26 = *(DWORD **)(v24 + 102);
|
||||
*(DWORD *)((char *)v4 + 50) = v26;
|
||||
score_set(v26, v25);
|
||||
*(_DWORD *)(*(_DWORD *)((char *)v4 + 50) + 4) = 1;
|
||||
TPinballTable::ChangeBallCount(v4, 0, *(_DWORD *)((char *)v4 + 326));
|
||||
score_set(*(_DWORD **)((char *)v4 + 58), v39 + 1);
|
||||
*(DWORD *)(*(DWORD *)((char *)v4 + 50) + 4) = 1;
|
||||
TPinballTable::ChangeBallCount(v4, 0, *(DWORD *)((char *)v4 + 326));
|
||||
score_set(*(DWORD **)((char *)v4 + 58), v39 + 1);
|
||||
score_update(0, *(int **)((char *)v4 + 58));
|
||||
v27 = 0;
|
||||
if ( *(_DWORD *)(*(_DWORD *)((char *)v4 + 254) + 4) > 0 )
|
||||
if ( *(DWORD *)(*(DWORD *)((char *)v4 + 254) + 4) > 0 )
|
||||
{
|
||||
v42 = 8;
|
||||
do
|
||||
{
|
||||
v28 = (double)v39;
|
||||
(***(void (__stdcall ****)(signed int, _DWORD))(v42 + *(_DWORD *)((char *)v4 + 254)))(1020, LODWORD(v28));
|
||||
(***(void (****)(signed int, DWORD))(v42 + *(DWORD *)((char *)v4 + 254)))(1020, LODWORD(v28));
|
||||
v42 += 4;
|
||||
++v27;
|
||||
}
|
||||
while ( v27 < *(_DWORD *)(*(_DWORD *)((char *)v4 + 254) + 4) );
|
||||
while ( v27 < *(DWORD *)(*(DWORD *)((char *)v4 + 254) + 4) );
|
||||
}
|
||||
if ( v39 )
|
||||
{
|
||||
@@ -548,38 +548,38 @@ switch ( v39 )
|
||||
{
|
||||
case 1:
|
||||
v38 = -1.0;
|
||||
if ( *(_BYTE *)(*(_DWORD *)((char *)v4 + 230) + 5) )
|
||||
if ( *(_BYTE *)(*(DWORD *)((char *)v4 + 230) + 5) )
|
||||
v29 = get_rc_string(31, 0);
|
||||
else
|
||||
v29 = get_rc_string(27, 0);
|
||||
break;
|
||||
case 2:
|
||||
v38 = -1.0;
|
||||
if ( *(_BYTE *)(*(_DWORD *)((char *)v4 + 230) + 5) )
|
||||
if ( *(_BYTE *)(*(DWORD *)((char *)v4 + 230) + 5) )
|
||||
v29 = get_rc_string(32, 0);
|
||||
else
|
||||
v29 = get_rc_string(28, 0);
|
||||
break;
|
||||
case 3:
|
||||
v38 = -1.0;
|
||||
if ( *(_BYTE *)(*(_DWORD *)((char *)v4 + 230) + 5) )
|
||||
if ( *(_BYTE *)(*(DWORD *)((char *)v4 + 230) + 5) )
|
||||
v29 = get_rc_string(33, 0);
|
||||
else
|
||||
v29 = get_rc_string(29, 0);
|
||||
break;
|
||||
default:
|
||||
LABEL_59:
|
||||
*(_DWORD *)((char *)v4 + 318) = 0;
|
||||
*(_DWORD *)((char *)v4 + 310) = 0;
|
||||
*(_DWORD *)((char *)v4 + 322) = 0;
|
||||
*(_DWORD *)((char *)v4 + 218) = v39;
|
||||
*(DWORD *)((char *)v4 + 318) = 0;
|
||||
*(DWORD *)((char *)v4 + 310) = 0;
|
||||
*(DWORD *)((char *)v4 + 322) = 0;
|
||||
*(DWORD *)((char *)v4 + 218) = v39;
|
||||
goto LABEL_81;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
v38 = -1.0;
|
||||
if ( *(_BYTE *)(*(_DWORD *)((char *)v4 + 230) + 5) )
|
||||
if ( *(_BYTE *)(*(DWORD *)((char *)v4 + 230) + 5) )
|
||||
v29 = get_rc_string(30, 0);
|
||||
else
|
||||
v29 = get_rc_string(26, 0);
|
||||
@@ -587,7 +587,7 @@ v29 = get_rc_string(26, 0);
|
||||
TTextBox::Display(InfoTextBox, 0, v29, v38);
|
||||
goto LABEL_59;
|
||||
}
|
||||
if ( *(_BYTE *)(*(_DWORD *)((char *)this + 230) + 5) )
|
||||
if ( *(_BYTE *)(*(DWORD *)((char *)this + 230) + 5) )
|
||||
v30 = get_rc_string(30, 0);
|
||||
else
|
||||
v30 = get_rc_string(26, 0);
|
||||
@@ -596,52 +596,52 @@ LABEL_81:
|
||||
table_control_handler(a3);
|
||||
return 0;
|
||||
case 1022:
|
||||
loader_play_sound(*(_DWORD *)((char *)this + 70));
|
||||
loader_play_sound(*(DWORD *)((char *)this + 70));
|
||||
TTextBox::Clear(MissTextBox, a2);
|
||||
v36 = get_rc_string(34, 0);
|
||||
TTextBox::Display(InfoTextBox, a2, v36, -1.0);
|
||||
*(_DWORD *)((char *)v4 + 94) = timer_set(3.0, (int)v4, (int)TPinballTable::EndGame_timeout);
|
||||
*(DWORD *)((char *)v4 + 94) = timer_set(3.0, (int)v4, (int)TPinballTable::EndGame_timeout);
|
||||
goto LABEL_81;
|
||||
case 1024:
|
||||
v5 = *(_DWORD *)(*(_DWORD *)((char *)this + 254) + 4) - 1;
|
||||
v5 = *(DWORD *)(*(DWORD *)((char *)this + 254) + 4) - 1;
|
||||
if ( v5 >= 0 )
|
||||
{
|
||||
v6 = 4 * v5 + 8;
|
||||
v7 = *(_DWORD *)(*(_DWORD *)((char *)this + 254) + 4);
|
||||
v7 = *(DWORD *)(*(DWORD *)((char *)this + 254) + 4);
|
||||
do
|
||||
{
|
||||
(***(void (__stdcall ****)(signed int, _DWORD))(v6 + *(_DWORD *)((char *)v4 + 254)))(1024, 0.0);
|
||||
(***(void (****)(signed int, DWORD))(v6 + *(DWORD *)((char *)v4 + 254)))(1024, 0.0);
|
||||
v6 -= 4;
|
||||
--v7;
|
||||
}
|
||||
while ( v7 );
|
||||
}
|
||||
if ( *(_DWORD *)((char *)v4 + 358) )
|
||||
timer_kill(*(_DWORD *)((char *)v4 + 358));
|
||||
v8 = *(_DWORD *)((char *)v4 + 90);
|
||||
*(_DWORD *)((char *)v4 + 358) = 0;
|
||||
if ( *(DWORD *)((char *)v4 + 358) )
|
||||
timer_kill(*(DWORD *)((char *)v4 + 358));
|
||||
v8 = *(DWORD *)((char *)v4 + 90);
|
||||
*(DWORD *)((char *)v4 + 358) = 0;
|
||||
if ( v8 )
|
||||
{
|
||||
timer_kill(v8);
|
||||
(***(void (__stdcall ****)(signed int, _DWORD))((char *)v4 + 266))(34, 0.0);
|
||||
(***(void (****)(signed int, DWORD))((char *)v4 + 266))(34, 0.0);
|
||||
}
|
||||
*(_DWORD *)((char *)v4 + 90) = 0;
|
||||
*(_DWORD *)((char *)v4 + 294) = 0;
|
||||
*(_DWORD *)((char *)v4 + 298) = 0;
|
||||
*(_DWORD *)((char *)v4 + 302) = 0;
|
||||
*(_DWORD *)((char *)v4 + 306) = 10000;
|
||||
*(_DWORD *)((char *)v4 + 310) = 0;
|
||||
*(_DWORD *)((char *)v4 + 314) = 20000;
|
||||
*(_DWORD *)((char *)v4 + 318) = 0;
|
||||
*(_DWORD *)((char *)v4 + 322) = 0;
|
||||
*(_DWORD *)((char *)v4 + 334) = 0;
|
||||
*(_DWORD *)((char *)v4 + 338) = 0;
|
||||
*(_DWORD *)((char *)v4 + 342) = 0;
|
||||
*(_DWORD *)((char *)v4 + 346) = 0;
|
||||
*(_DWORD *)((char *)v4 + 350) = 0;
|
||||
*(_DWORD *)((char *)v4 + 354) = 0;
|
||||
*(_DWORD *)((char *)v4 + 358) = 0;
|
||||
*(_DWORD *)((char *)v4 + 370) = 0;
|
||||
*(DWORD *)((char *)v4 + 90) = 0;
|
||||
*(DWORD *)((char *)v4 + 294) = 0;
|
||||
*(DWORD *)((char *)v4 + 298) = 0;
|
||||
*(DWORD *)((char *)v4 + 302) = 0;
|
||||
*(DWORD *)((char *)v4 + 306) = 10000;
|
||||
*(DWORD *)((char *)v4 + 310) = 0;
|
||||
*(DWORD *)((char *)v4 + 314) = 20000;
|
||||
*(DWORD *)((char *)v4 + 318) = 0;
|
||||
*(DWORD *)((char *)v4 + 322) = 0;
|
||||
*(DWORD *)((char *)v4 + 334) = 0;
|
||||
*(DWORD *)((char *)v4 + 338) = 0;
|
||||
*(DWORD *)((char *)v4 + 342) = 0;
|
||||
*(DWORD *)((char *)v4 + 346) = 0;
|
||||
*(DWORD *)((char *)v4 + 350) = 0;
|
||||
*(DWORD *)((char *)v4 + 354) = 0;
|
||||
*(DWORD *)((char *)v4 + 358) = 0;
|
||||
*(DWORD *)((char *)v4 + 370) = 0;
|
||||
goto LABEL_81;
|
||||
default:
|
||||
goto LABEL_81;
|
||||
@@ -657,7 +657,7 @@ int i; // ecx
|
||||
signed int v5; // [esp+Ch] [ebp-4h]
|
||||
|
||||
v1 = this;
|
||||
*(_DWORD *)this = &TPinballTable::vftable;
|
||||
*(DWORD *)this = &TPinballTable::vftable;
|
||||
v2 = (int *)((char *)this + 102);
|
||||
v5 = 4;
|
||||
do
|
||||
@@ -671,25 +671,25 @@ v2 += 7;
|
||||
--v5;
|
||||
}
|
||||
while ( v5 );
|
||||
if ( *(_DWORD *)((char *)v1 + 58) )
|
||||
if ( *(DWORD *)((char *)v1 + 58) )
|
||||
{
|
||||
objlist_destroy(*(_DWORD *)((char *)v1 + 58));
|
||||
*(_DWORD *)((char *)v1 + 58) = 0;
|
||||
objlist_destroy(*(DWORD *)((char *)v1 + 58));
|
||||
*(DWORD *)((char *)v1 + 58) = 0;
|
||||
}
|
||||
if ( *(_DWORD *)((char *)v1 + 54) )
|
||||
if ( *(DWORD *)((char *)v1 + 54) )
|
||||
{
|
||||
objlist_destroy(*(_DWORD *)((char *)v1 + 54));
|
||||
*(_DWORD *)((char *)v1 + 54) = 0;
|
||||
objlist_destroy(*(DWORD *)((char *)v1 + 54));
|
||||
*(DWORD *)((char *)v1 + 54) = 0;
|
||||
}
|
||||
for ( i = *(_DWORD *)((char *)v1 + 266); ; i = *(_DWORD *)(*(_DWORD *)((char *)v1 + 254) + 8) )
|
||||
for ( i = *(DWORD *)((char *)v1 + 266); ; i = *(DWORD *)(*(DWORD *)((char *)v1 + 254) + 8) )
|
||||
{
|
||||
if ( i )
|
||||
(*(void (__stdcall **)(signed int))(*(_DWORD *)i + 16))(1);
|
||||
if ( !*(_DWORD *)(*(_DWORD *)((char *)v1 + 254) + 4) )
|
||||
(*(void (**)(signed int))(*(DWORD *)i + 16))(1);
|
||||
if ( !*(DWORD *)(*(DWORD *)((char *)v1 + 254) + 4) )
|
||||
break;
|
||||
}
|
||||
objlist_destroy(*(_DWORD *)((char *)v1 + 262));
|
||||
objlist_destroy(*(_DWORD *)((char *)v1 + 254));
|
||||
objlist_destroy(*(DWORD *)((char *)v1 + 262));
|
||||
objlist_destroy(*(DWORD *)((char *)v1 + 254));
|
||||
return TPinballComponent::~TPinballComponent(v1);
|
||||
}
|
||||
// 1002790: using guessed type void *TPinballTable::vftable;
|
||||
@@ -715,13 +715,13 @@ TBall *v3; // eax
|
||||
TTableLayer *v4; // eax
|
||||
TLightGroup *v5; // eax
|
||||
TLightGroup *v6; // eax
|
||||
_DWORD *v7; // eax
|
||||
DWORD *v7; // eax
|
||||
int v8; // ebx
|
||||
void **v9; // edi
|
||||
int v10; // eax
|
||||
__int16 *v11; // ebx
|
||||
__int16 v12; // ax
|
||||
signed __int16 *v13; // ebx
|
||||
int *v11; // ebx
|
||||
int v12; // ax
|
||||
signed int *v13; // ebx
|
||||
int v14; // edi
|
||||
TWall *v15; // eax
|
||||
TOneway *v16; // eax
|
||||
@@ -763,20 +763,20 @@ int i; // [esp+10h] [ebp-4h]
|
||||
v1 = 0;
|
||||
v2 = this;
|
||||
TPinballComponent::TPinballComponent(this, 0, -1, 0);
|
||||
*(_DWORD *)v2 = &TPinballTable::vftable;
|
||||
*(DWORD *)v2 = &TPinballTable::vftable;
|
||||
objlist_class::objlist_class((TPinballTable *)((char *)v2 + 250), 32, 16);
|
||||
objlist_class::objlist_class((TPinballTable *)((char *)v2 + 258), 3, 1);
|
||||
*(_DWORD *)((char *)v2 + 50) = 0;
|
||||
*(_DWORD *)((char *)v2 + 54) = 0;
|
||||
*(_DWORD *)((char *)v2 + 58) = 0;
|
||||
*(_DWORD *)((char *)v2 + 78) = 0;
|
||||
*(DWORD *)((char *)v2 + 50) = 0;
|
||||
*(DWORD *)((char *)v2 + 54) = 0;
|
||||
*(DWORD *)((char *)v2 + 58) = 0;
|
||||
*(DWORD *)((char *)v2 + 78) = 0;
|
||||
*((_BYTE *)v2 + 5) = 1;
|
||||
*(_DWORD *)((char *)v2 + 370) = 0;
|
||||
*(_DWORD *)((char *)v2 + 94) = 0;
|
||||
*(_DWORD *)((char *)v2 + 90) = 0;
|
||||
*(_DWORD *)((char *)v2 + 358) = 0;
|
||||
*(_DWORD *)((char *)v2 + 98) = 0;
|
||||
*(_DWORD *)((char *)v2 + 346) = 0;
|
||||
*(DWORD *)((char *)v2 + 370) = 0;
|
||||
*(DWORD *)((char *)v2 + 94) = 0;
|
||||
*(DWORD *)((char *)v2 + 90) = 0;
|
||||
*(DWORD *)((char *)v2 + 358) = 0;
|
||||
*(DWORD *)((char *)v2 + 98) = 0;
|
||||
*(DWORD *)((char *)v2 + 346) = 0;
|
||||
v3 = (TBall *)TPinballComponent::operator new(0x16Au);
|
||||
if ( v3 )
|
||||
v1 = TBall::TBall(v3, v2);
|
||||
@@ -791,10 +791,10 @@ if ( v5 )
|
||||
v6 = TLightGroup::TLightGroup(v5, v2, 0);
|
||||
else
|
||||
v6 = 0;
|
||||
*(_DWORD *)((char *)v2 + 266) = v6;
|
||||
*(DWORD *)((char *)v2 + 266) = v6;
|
||||
v7 = score_create("score1", render_background_bitmap);
|
||||
*(_DWORD *)((char *)v2 + 50) = v7;
|
||||
*(_DWORD *)((char *)v2 + 102) = v7;
|
||||
*(DWORD *)((char *)v2 + 50) = v7;
|
||||
*(DWORD *)((char *)v2 + 102) = v7;
|
||||
v8 = 1;
|
||||
v9 = (void **)((char *)v2 + 130);
|
||||
do
|
||||
@@ -803,12 +803,12 @@ do
|
||||
v9 += 7;
|
||||
}
|
||||
while ( v8 < 4 );
|
||||
*(_DWORD *)((char *)v2 + 218) = 0;
|
||||
*(_DWORD *)((char *)v2 + 330) = 3;
|
||||
*(_DWORD *)((char *)v2 + 54) = score_create("ballcount1", render_background_bitmap);
|
||||
*(_DWORD *)((char *)v2 + 58) = score_create("player_number1", render_background_bitmap);
|
||||
*(DWORD *)((char *)v2 + 218) = 0;
|
||||
*(DWORD *)((char *)v2 + 330) = 3;
|
||||
*(DWORD *)((char *)v2 + 54) = score_create("ballcount1", render_background_bitmap);
|
||||
*(DWORD *)((char *)v2 + 58) = score_create("player_number1", render_background_bitmap);
|
||||
v10 = loader_query_handle("table_objects");
|
||||
v11 = (__int16 *)loader_query_iattribute(v10, 1025, &v50);
|
||||
v11 = (int *)loader_query_iattribute(v10, 1025, &v50);
|
||||
if ( v50 > 0 )
|
||||
{
|
||||
for ( i = 0; i < v50 / 2; ++i )
|
||||
@@ -831,7 +831,7 @@ if ( v17 )
|
||||
v18 = TPlunger::TPlunger(v17, v2, v14);
|
||||
else
|
||||
v18 = 0;
|
||||
*(_DWORD *)((char *)v2 + 222) = v18;
|
||||
*(DWORD *)((char *)v2 + 222) = v18;
|
||||
break;
|
||||
case 1002:
|
||||
v19 = (TLight *)TPinballComponent::operator new(0xDEu);
|
||||
@@ -839,7 +839,7 @@ if ( v19 )
|
||||
v20 = TLight::TLight(v19, v2, v14);
|
||||
else
|
||||
v20 = 0;
|
||||
objlist_class::Add((objlist_class *)(*(_DWORD *)((char *)v2 + 266) + 42), (void *)v20);
|
||||
objlist_class::Add((objlist_class *)(*(DWORD *)((char *)v2 + 266) + 42), (void *)v20);
|
||||
break;
|
||||
case 1003:
|
||||
v23 = (TFlipper *)TPinballComponent::operator new(0x6Au);
|
||||
@@ -847,7 +847,7 @@ if ( v23 )
|
||||
v24 = TFlipper::TFlipper(v23, v2, v14);
|
||||
else
|
||||
v24 = 0;
|
||||
*(_DWORD *)((char *)v2 + 42) = v24;
|
||||
*(DWORD *)((char *)v2 + 42) = v24;
|
||||
break;
|
||||
case 1004:
|
||||
v25 = (TFlipper *)TPinballComponent::operator new(0x6Au);
|
||||
@@ -855,7 +855,7 @@ if ( v25 )
|
||||
v26 = TFlipper::TFlipper(v25, v2, v14);
|
||||
else
|
||||
v26 = 0;
|
||||
*(_DWORD *)((char *)v2 + 46) = v26;
|
||||
*(DWORD *)((char *)v2 + 46) = v26;
|
||||
break;
|
||||
case 1005:
|
||||
v27 = (TBumper *)TPinballComponent::operator new(0x96u);
|
||||
@@ -873,7 +873,7 @@ if ( v37 )
|
||||
v38 = TDrain::TDrain(v37, v2, v14);
|
||||
else
|
||||
v38 = 0;
|
||||
*(_DWORD *)((char *)v2 + 226) = v38;
|
||||
*(DWORD *)((char *)v2 + 226) = v38;
|
||||
break;
|
||||
case 1011:
|
||||
v30 = (TBlocker *)TPinballComponent::operator new(0x72u);
|
||||
|
||||
@@ -10,15 +10,15 @@
|
||||
/* 117 */
|
||||
struct TPinballTable;
|
||||
|
||||
void __stdcall TPinballTable::LightShow_timeout(int, void*); // idb
|
||||
void __stdcall TPinballTable::EndGame_timeout(int, void*); // idb
|
||||
void TPinballTable::LightShow_timeout(int, void*); // idb
|
||||
void TPinballTable::EndGame_timeout(int, void*); // idb
|
||||
int __thiscall TPinballTable::AddScore(TPinballTable* this, int); // idb
|
||||
// void __userpurge TPinballTable::ChangeBallCount(TPinballTable *this@<ecx>, int a2@<ebx>, int a3);
|
||||
void __stdcall TPinballTable::replay_timer_callback(int, void*); // idb
|
||||
// void TPinballTable::ChangeBallCount(TPinballTable *this, int a2, int a3);
|
||||
void TPinballTable::replay_timer_callback(int, void*); // idb
|
||||
void __thiscall TPinballTable::port_draw(TPinballTable* __hidden this); // idb
|
||||
void __stdcall TPinballTable::tilt_timeout(int, void*); // idb
|
||||
// void __userpurge TPinballTable::tilt(TPinballTable *this@<ecx>, int a2@<ebx>, float a3);
|
||||
// int __userpurge TPinballTable::Message@<eax>(TPinballTable *this@<ecx>, int a2@<ebx>, int a3, float a4);
|
||||
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::TPinballTable(TPinballTable* this);
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
#include "TPlunger.h"
|
||||
|
||||
//----- (010172F0) --------------------------------------------------------
|
||||
void __stdcall TPlunger::BallFeedTimer(int a1, void *a2)
|
||||
void TPlunger::BallFeedTimer(int a1, void *a2)
|
||||
{
|
||||
void (__stdcall **v2)(signed int, _DWORD); // eax
|
||||
void (**v2)(signed int, DWORD); // eax
|
||||
|
||||
v2 = *(void (__stdcall ***)(signed int, _DWORD))a2;
|
||||
*(_DWORD *)((char *)a2 + 78) = 0;
|
||||
v2 = *(void (***)(signed int, DWORD))a2;
|
||||
*(DWORD *)((char *)a2 + 78) = 0;
|
||||
(*v2)(1015, 0.0);
|
||||
}
|
||||
|
||||
//----- (01017314) --------------------------------------------------------
|
||||
void __stdcall TPlunger::PullbackTimer(int a1, void *a2)
|
||||
void TPlunger::PullbackTimer(int a1, void *a2)
|
||||
{
|
||||
char *v2; // esi
|
||||
double v3; // st7
|
||||
@@ -25,30 +25,30 @@ v3 = (double)*(signed int *)((char *)a2 + 90) + *(float *)((char *)a2 + 62);
|
||||
v6 = (double)*(signed int *)((char *)a2 + 86);
|
||||
if ( v3 <= v6 )
|
||||
{
|
||||
*(_DWORD *)(v2 + 78) = timer_set(*(float *)(v2 + 94), (int)v2, (int)TPlunger::PullbackTimer);
|
||||
*(DWORD *)(v2 + 78) = timer_set(*(float *)(v2 + 94), (int)v2, (int)TPlunger::PullbackTimer);
|
||||
}
|
||||
else
|
||||
{
|
||||
*(_DWORD *)(v2 + 78) = 0;
|
||||
*(DWORD *)(v2 + 78) = 0;
|
||||
*(float *)(v2 + 62) = v6;
|
||||
}
|
||||
v4 = 4
|
||||
* (unsigned __int64)(signed __int64)_floor(
|
||||
(double)(*(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v2 + 34) + 4) + 4) - 1)
|
||||
(double)(*(DWORD *)(*(DWORD *)(*(DWORD *)(v2 + 34) + 4) + 4) - 1)
|
||||
* (*(float *)(v2 + 62)
|
||||
/ (double)*(signed int *)(v2 + 86)))
|
||||
+ 8;
|
||||
v5 = *(_DWORD *)(v4 + *(_DWORD *)(*(_DWORD *)(v2 + 34) + 4));
|
||||
v5 = *(DWORD *)(v4 + *(DWORD *)(*(DWORD *)(v2 + 34) + 4));
|
||||
render_sprite_set(
|
||||
*(_DWORD **)(v2 + 26),
|
||||
*(_DWORD *)(v4 + *(_DWORD *)(*(_DWORD *)(v2 + 34) + 4)),
|
||||
*(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v2 + 38) + 4) + v4),
|
||||
*(_DWORD *)(v5 + 29) - *(_DWORD *)(*(_DWORD *)(v2 + 30) + 234),
|
||||
*(_DWORD *)(v5 + 33) - *(_DWORD *)(*(_DWORD *)(v2 + 30) + 238));
|
||||
*(DWORD **)(v2 + 26),
|
||||
*(DWORD *)(v4 + *(DWORD *)(*(DWORD *)(v2 + 34) + 4)),
|
||||
*(DWORD *)(*(DWORD *)(*(DWORD *)(v2 + 38) + 4) + v4),
|
||||
*(DWORD *)(v5 + 29) - *(DWORD *)(*(DWORD *)(v2 + 30) + 234),
|
||||
*(DWORD *)(v5 + 33) - *(DWORD *)(*(DWORD *)(v2 + 30) + 238));
|
||||
}
|
||||
|
||||
//----- (010173C8) --------------------------------------------------------
|
||||
void __stdcall TPlunger::PlungerReleasedTimer(int a1, void *a2)
|
||||
void TPlunger::PlungerReleasedTimer(int a1, void *a2)
|
||||
{
|
||||
*(float *)((char *)a2 + 66) = 1000000000.0;
|
||||
*(float *)((char *)a2 + 62) = 0.0;
|
||||
@@ -71,11 +71,11 @@ v3 = this;
|
||||
switch ( a2 )
|
||||
{
|
||||
case 1004:
|
||||
if ( !*(_DWORD *)((char *)this + 78) )
|
||||
if ( !*(DWORD *)((char *)this + 78) )
|
||||
{
|
||||
v7 = *(_DWORD *)((char *)this + 74);
|
||||
v7 = *(DWORD *)((char *)this + 74);
|
||||
*(float *)((char *)this + 62) = 0.0;
|
||||
*(_DWORD *)((char *)this + 66) = 1315859240;
|
||||
*(DWORD *)((char *)this + 66) = 1315859240;
|
||||
loader_play_sound(v7);
|
||||
TPlunger::PullbackTimer(0, (void *)v3);
|
||||
}
|
||||
@@ -85,24 +85,24 @@ case 1009:
|
||||
case 1010:
|
||||
goto LABEL_12;
|
||||
case 1015:
|
||||
v6 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)((char *)this + 30) + 254) + 8);
|
||||
(**(void (__thiscall ***)(_DWORD, signed int, _DWORD))v6)(
|
||||
*(_DWORD *)(*(_DWORD *)(*(_DWORD *)((char *)this + 30) + 254) + 8),
|
||||
v6 = *(DWORD *)(*(DWORD *)(*(DWORD *)((char *)this + 30) + 254) + 8);
|
||||
(**(void (__thiscall ***)(DWORD, signed int, DWORD))v6)(
|
||||
*(DWORD *)(*(DWORD *)(*(DWORD *)((char *)this + 30) + 254) + 8),
|
||||
1024,
|
||||
0.0);
|
||||
*(_DWORD *)(v6 + 42) = *(_DWORD *)(*(_DWORD *)((char *)v3 + 30) + 286);
|
||||
*(_DWORD *)(v6 + 46) = *(_DWORD *)(*(_DWORD *)((char *)v3 + 30) + 290);
|
||||
*(DWORD *)(v6 + 42) = *(DWORD *)(*(DWORD *)((char *)v3 + 30) + 286);
|
||||
*(DWORD *)(v6 + 46) = *(DWORD *)(*(DWORD *)((char *)v3 + 30) + 290);
|
||||
*(_BYTE *)(v6 + 5) = 1;
|
||||
*(_DWORD *)(*(_DWORD *)((char *)v3 + 30) + 78) = 0;
|
||||
*(DWORD *)(*(DWORD *)((char *)v3 + 30) + 78) = 0;
|
||||
pb_tilt_no_more(a2);
|
||||
control_handler(a2, v3);
|
||||
return 0;
|
||||
case 1016:
|
||||
if ( *(_DWORD *)((char *)this + 82) )
|
||||
timer_kill(*(_DWORD *)((char *)this + 82));
|
||||
if ( *(DWORD *)((char *)this + 82) )
|
||||
timer_kill(*(DWORD *)((char *)this + 82));
|
||||
v4 = timer_set(0.95999998, (int)v3, (int)TPlunger::BallFeedTimer);
|
||||
v5 = *(_DWORD *)((char *)v3 + 98);
|
||||
*(_DWORD *)((char *)v3 + 82) = v4;
|
||||
v5 = *(DWORD *)((char *)v3 + 98);
|
||||
*(DWORD *)((char *)v3 + 82) = v4;
|
||||
loader_play_sound(v5);
|
||||
control_handler(a2, v3);
|
||||
return 0;
|
||||
@@ -112,24 +112,24 @@ case 1017:
|
||||
v8 = 0.2;
|
||||
goto LABEL_17;
|
||||
case 1024:
|
||||
if ( *(_DWORD *)((char *)this + 82) )
|
||||
timer_kill(*(_DWORD *)((char *)this + 82));
|
||||
*(_DWORD *)((char *)v3 + 82) = 0;
|
||||
if ( *(DWORD *)((char *)this + 82) )
|
||||
timer_kill(*(DWORD *)((char *)this + 82));
|
||||
*(DWORD *)((char *)v3 + 82) = 0;
|
||||
LABEL_12:
|
||||
v9 = *(_DWORD *)((char *)v3 + 78);
|
||||
v9 = *(DWORD *)((char *)v3 + 78);
|
||||
*(float *)((char *)v3 + 66) = 0.0;
|
||||
if ( v9 )
|
||||
timer_kill(v9);
|
||||
*(_DWORD *)((char *)v3 + 78) = 0;
|
||||
*(DWORD *)((char *)v3 + 78) = 0;
|
||||
if ( a2 == 1005 )
|
||||
loader_play_sound(*(_DWORD *)((char *)v3 + 102));
|
||||
v10 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)((char *)v3 + 34) + 4) + 8);
|
||||
loader_play_sound(*(DWORD *)((char *)v3 + 102));
|
||||
v10 = *(DWORD *)(*(DWORD *)(*(DWORD *)((char *)v3 + 34) + 4) + 8);
|
||||
render_sprite_set(
|
||||
*(_DWORD **)((char *)v3 + 26),
|
||||
*(_DWORD *)(*(_DWORD *)(*(_DWORD *)((char *)v3 + 34) + 4) + 8),
|
||||
*(_DWORD *)(*(_DWORD *)(*(_DWORD *)((char *)v3 + 38) + 4) + 8),
|
||||
*(_DWORD *)(v10 + 29) - *(_DWORD *)(*(_DWORD *)((char *)v3 + 30) + 234),
|
||||
*(_DWORD *)(v10 + 33) - *(_DWORD *)(*(_DWORD *)((char *)v3 + 30) + 238));
|
||||
*(DWORD **)((char *)v3 + 26),
|
||||
*(DWORD *)(*(DWORD *)(*(DWORD *)((char *)v3 + 34) + 4) + 8),
|
||||
*(DWORD *)(*(DWORD *)(*(DWORD *)((char *)v3 + 38) + 4) + 8),
|
||||
*(DWORD *)(v10 + 29) - *(DWORD *)(*(DWORD *)((char *)v3 + 30) + 234),
|
||||
*(DWORD *)(v10 + 33) - *(DWORD *)(*(DWORD *)((char *)v3 + 30) + 238));
|
||||
v8 = *(float *)((char *)v3 + 94);
|
||||
LABEL_17:
|
||||
v11 = v8;
|
||||
@@ -148,8 +148,8 @@ TPlunger *v6; // esi
|
||||
float v7; // ST18_4
|
||||
|
||||
v6 = this;
|
||||
if ( *(_DWORD *)(*(_DWORD *)((char *)this + 30) + 370) )
|
||||
(**(void (__stdcall ***)(signed int, _DWORD))this)(1017, 0.0);
|
||||
if ( *(DWORD *)(*(DWORD *)((char *)this + 30) + 370) )
|
||||
(**(void (***)(signed int, DWORD))this)(1017, 0.0);
|
||||
v7 = (double)_rand() * 0.00003051850947599719 * *(float *)((char *)v6 + 62) * 0.1 + *(float *)((char *)v6 + 62);
|
||||
basic_collision(a2, a3, a4, *(float *)((char *)v6 + 54), *(float *)((char *)v6 + 58), *(float *)((char *)v6 + 66), v7);
|
||||
}
|
||||
@@ -161,7 +161,7 @@ TPlunger *v3; // esi
|
||||
int v4; // eax
|
||||
int v5; // eax
|
||||
signed __int64 v6; // rax
|
||||
_DWORD *v7; // eax
|
||||
DWORD *v7; // eax
|
||||
char v9; // [esp+8h] [ebp-48h]
|
||||
int v10; // [esp+38h] [ebp-18h]
|
||||
int v11; // [esp+40h] [ebp-10h]
|
||||
@@ -169,26 +169,26 @@ int v12; // [esp+44h] [ebp-Ch]
|
||||
|
||||
v3 = this;
|
||||
TCollisionComponent::TCollisionComponent(this, a2, a3, 1);
|
||||
*(_DWORD *)v3 = &TPlunger::vftable;
|
||||
*(DWORD *)v3 = &TPlunger::vftable;
|
||||
loader_query_visual(a3, 0, &v9);
|
||||
v4 = v11;
|
||||
*(float *)((char *)v3 + 62) = 0.0;
|
||||
*(_DWORD *)((char *)v3 + 82) = 0;
|
||||
*(_DWORD *)((char *)v3 + 78) = 0;
|
||||
*(_DWORD *)((char *)v3 + 98) = v4;
|
||||
*(_DWORD *)((char *)v3 + 102) = v12;
|
||||
*(_DWORD *)((char *)v3 + 74) = v10;
|
||||
v5 = *(_DWORD *)((char *)v3 + 34);
|
||||
*(_DWORD *)((char *)v3 + 66) = 1315859240;
|
||||
*(_DWORD *)((char *)v3 + 86) = 100;
|
||||
v6 = (signed __int64)(100.0 / ((double)*(signed int *)(*(_DWORD *)(v5 + 4) + 4) * 8.0));
|
||||
*(DWORD *)((char *)v3 + 82) = 0;
|
||||
*(DWORD *)((char *)v3 + 78) = 0;
|
||||
*(DWORD *)((char *)v3 + 98) = v4;
|
||||
*(DWORD *)((char *)v3 + 102) = v12;
|
||||
*(DWORD *)((char *)v3 + 74) = v10;
|
||||
v5 = *(DWORD *)((char *)v3 + 34);
|
||||
*(DWORD *)((char *)v3 + 66) = 1315859240;
|
||||
*(DWORD *)((char *)v3 + 86) = 100;
|
||||
v6 = (signed __int64)(100.0 / ((double)*(signed int *)(*(DWORD *)(v5 + 4) + 4) * 8.0));
|
||||
*(float *)((char *)v3 + 54) = 0.5;
|
||||
*(float *)((char *)v3 + 58) = 0.5;
|
||||
*(_DWORD *)((char *)v3 + 90) = v6;
|
||||
*(_DWORD *)((char *)v3 + 94) = 1020054733;
|
||||
v7 = (_DWORD *)loader_query_float_attribute(a3, 0, 601);
|
||||
*(_DWORD *)((char *)a2 + 286) = *v7;
|
||||
*(_DWORD *)((char *)a2 + 290) = v7[1];
|
||||
*(DWORD *)((char *)v3 + 90) = v6;
|
||||
*(DWORD *)((char *)v3 + 94) = 1020054733;
|
||||
v7 = (DWORD *)loader_query_float_attribute(a3, 0, 601);
|
||||
*(DWORD *)((char *)a2 + 286) = *v7;
|
||||
*(DWORD *)((char *)a2 + 290) = v7[1];
|
||||
return v3;
|
||||
}
|
||||
// 1002750: using guessed type void *TPlunger::vftable;
|
||||
@@ -10,9 +10,9 @@
|
||||
/* 118 */
|
||||
struct TPlunger;
|
||||
|
||||
void __stdcall TPlunger::BallFeedTimer(int, void*); // idb
|
||||
void __stdcall TPlunger::PullbackTimer(int, void*); // idb
|
||||
void __stdcall TPlunger::PlungerReleasedTimer(int, void*); // idb
|
||||
void TPlunger::BallFeedTimer(int, void*); // idb
|
||||
void TPlunger::PullbackTimer(int, void*); // idb
|
||||
void TPlunger::PlungerReleasedTimer(int, void*); // idb
|
||||
int __thiscall TPlunger::Message(TPlunger* this, int, float); // idb
|
||||
void __thiscall TPlunger::Collision(TPlunger* this, struct TBall*, struct vector_type*, struct vector_type*, float, struct TEdgeSegment*); // idb
|
||||
TPlunger* __thiscall TPlunger::TPlunger(TPlunger* this, struct TPinballTable* a2, int a3);
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
#include "TPopupTarget.h"
|
||||
|
||||
//----- (010160B3) --------------------------------------------------------
|
||||
void __stdcall TPopupTarget::TimerExpired(int a1, void *a2)
|
||||
void TPopupTarget::TimerExpired(int a1, void *a2)
|
||||
{
|
||||
int v2; // eax
|
||||
int v3; // esi
|
||||
|
||||
*(_DWORD *)((char *)a2 + 78) = 0;
|
||||
v2 = *(_DWORD *)((char *)a2 + 34);
|
||||
*(DWORD *)((char *)a2 + 78) = 0;
|
||||
v2 = *(DWORD *)((char *)a2 + 34);
|
||||
*((_BYTE *)a2 + 5) = 1;
|
||||
render_sprite_set_bitmap(*(_DWORD **)((char *)a2 + 26), *(_DWORD *)(*(_DWORD *)(v2 + 4) + 8));
|
||||
render_sprite_set_bitmap(*(DWORD **)((char *)a2 + 26), *(DWORD *)(*(DWORD *)(v2 + 4) + 8));
|
||||
if ( a1 )
|
||||
{
|
||||
v3 = *(_DWORD *)((char *)a2 + 70);
|
||||
v3 = *(DWORD *)((char *)a2 + 70);
|
||||
if ( v3 )
|
||||
loader_play_sound(v3);
|
||||
}
|
||||
@@ -24,7 +24,7 @@ int __thiscall TPopupTarget::Message(TPopupTarget *this, int a2, float a3)
|
||||
TPopupTarget *v3; // esi
|
||||
int v4; // eax
|
||||
int v5; // ecx
|
||||
_DWORD *v6; // eax
|
||||
DWORD *v6; // eax
|
||||
int v7; // eax
|
||||
__int64 v8; // ST04_8
|
||||
|
||||
@@ -34,37 +34,37 @@ switch ( a2 )
|
||||
case 49:
|
||||
v8 = *(unsigned int *)((char *)this + 26);
|
||||
*((_BYTE *)this + 5) = 0;
|
||||
render_sprite_set_bitmap((_DWORD *)v8, SHIDWORD(v8));
|
||||
render_sprite_set_bitmap((DWORD *)v8, SHIDWORD(v8));
|
||||
break;
|
||||
case 50:
|
||||
*(_DWORD *)((char *)this + 78) = timer_set(
|
||||
*(DWORD *)((char *)this + 78) = timer_set(
|
||||
*(float *)((char *)this + 82),
|
||||
(int)this,
|
||||
(int)TPopupTarget::TimerExpired);
|
||||
break;
|
||||
case 1020:
|
||||
*(_DWORD *)((char *)this + 4 * *(_DWORD *)(*(_DWORD *)((char *)this + 30) + 218) + 98) = *(_DWORD *)((char *)this + 6);
|
||||
v7 = *(_DWORD *)((char *)this + 4 * (unsigned __int64)(signed __int64)_floor(a3) + 98);
|
||||
*(_DWORD *)((char *)v3 + 6) = v7;
|
||||
*(DWORD *)((char *)this + 4 * *(DWORD *)(*(DWORD *)((char *)this + 30) + 218) + 98) = *(DWORD *)((char *)this + 6);
|
||||
v7 = *(DWORD *)((char *)this + 4 * (unsigned __int64)(signed __int64)_floor(a3) + 98);
|
||||
*(DWORD *)((char *)v3 + 6) = v7;
|
||||
TPopupTarget::Message(v3, 50 - (v7 != 0), 0.0);
|
||||
break;
|
||||
case 1024:
|
||||
v4 = *(_DWORD *)((char *)this + 30);
|
||||
*(_DWORD *)((char *)this + 6) = 0;
|
||||
v4 = *(DWORD *)((char *)this + 30);
|
||||
*(DWORD *)((char *)this + 6) = 0;
|
||||
v5 = 0;
|
||||
if ( *(_DWORD *)(v4 + 214) > 0 )
|
||||
if ( *(DWORD *)(v4 + 214) > 0 )
|
||||
{
|
||||
v6 = (_DWORD *)((char *)v3 + 98);
|
||||
v6 = (DWORD *)((char *)v3 + 98);
|
||||
do
|
||||
{
|
||||
*v6 = 0;
|
||||
++v5;
|
||||
++v6;
|
||||
}
|
||||
while ( v5 < *(_DWORD *)(*(_DWORD *)((char *)v3 + 30) + 214) );
|
||||
while ( v5 < *(DWORD *)(*(DWORD *)((char *)v3 + 30) + 214) );
|
||||
}
|
||||
if ( *(_DWORD *)((char *)v3 + 78) )
|
||||
timer_kill(*(_DWORD *)((char *)v3 + 78));
|
||||
if ( *(DWORD *)((char *)v3 + 78) )
|
||||
timer_kill(*(DWORD *)((char *)v3 + 78));
|
||||
TPopupTarget::TimerExpired(0, (void *)v3);
|
||||
break;
|
||||
}
|
||||
@@ -79,7 +79,7 @@ int result; // eax
|
||||
if ( a2 >= 3 )
|
||||
result = 0;
|
||||
else
|
||||
result = *(_DWORD *)((char *)this + 4 * a2 + 86);
|
||||
result = *(DWORD *)((char *)this + 4 * a2 + 86);
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -87,7 +87,7 @@ return result;
|
||||
void __thiscall TPopupTarget::put_scoring(TPopupTarget *this, int a2, int a3)
|
||||
{
|
||||
if ( a2 < 3 )
|
||||
*(_DWORD *)((char *)this + 4 * a2 + 86) = a3;
|
||||
*(DWORD *)((char *)this + 4 * a2 + 86) = a3;
|
||||
}
|
||||
|
||||
//----- (010181ED) --------------------------------------------------------
|
||||
@@ -96,7 +96,7 @@ void __thiscall TPopupTarget::Collision(TPopupTarget *this, struct TBall *a2, st
|
||||
TPopupTarget *v6; // esi
|
||||
|
||||
v6 = this;
|
||||
if ( *(_DWORD *)(*(_DWORD *)((char *)this + 30) + 370) )
|
||||
if ( *(DWORD *)(*(DWORD *)((char *)this + 30) + 370) )
|
||||
{
|
||||
basic_collision(a2, a3, a4, *(float *)((char *)this + 54), *(float *)((char *)this + 58), 1000000000.0, 0.0);
|
||||
}
|
||||
@@ -109,9 +109,9 @@ a4,
|
||||
*(float *)((char *)this + 66),
|
||||
*(float *)((char *)this + 62)) > *(float *)((char *)this + 66) )
|
||||
{
|
||||
if ( *(_DWORD *)((char *)v6 + 74) )
|
||||
loader_play_sound(*(_DWORD *)((char *)v6 + 74));
|
||||
(**(void (__thiscall ***)(TPopupTarget *, signed int, _DWORD))v6)(v6, 49, 0.0);
|
||||
if ( *(DWORD *)((char *)v6 + 74) )
|
||||
loader_play_sound(*(DWORD *)((char *)v6 + 74));
|
||||
(**(void (__thiscall ***)(TPopupTarget *, signed int, DWORD))v6)(v6, 49, 0.0);
|
||||
control_handler(63, v6);
|
||||
}
|
||||
}
|
||||
@@ -124,10 +124,10 @@ int v4; // eax
|
||||
|
||||
v3 = this;
|
||||
TCollisionComponent::TCollisionComponent(this, a2, a3, 1);
|
||||
*(_DWORD *)v3 = &TPopupTarget::vftable;
|
||||
v4 = *(_DWORD *)loader_query_float_attribute(a3, 0, 407);
|
||||
*(_DWORD *)((char *)v3 + 78) = 0;
|
||||
*(_DWORD *)((char *)v3 + 82) = v4;
|
||||
*(DWORD *)v3 = &TPopupTarget::vftable;
|
||||
v4 = *(DWORD *)loader_query_float_attribute(a3, 0, 407);
|
||||
*(DWORD *)((char *)v3 + 78) = 0;
|
||||
*(DWORD *)((char *)v3 + 82) = v4;
|
||||
return v3;
|
||||
}
|
||||
// 10025A4: using guessed type void *TPopupTarget::vftable;
|
||||
@@ -10,7 +10,7 @@
|
||||
/* 106 */
|
||||
struct TPopupTarget;
|
||||
|
||||
void __stdcall TPopupTarget::TimerExpired(int, void*); // idb
|
||||
void TPopupTarget::TimerExpired(int, void*); // idb
|
||||
int __thiscall TPopupTarget::Message(TPopupTarget* this, int, float); // idb
|
||||
int __thiscall TPopupTarget::get_scoring(TPopupTarget* this, int); // idb
|
||||
void __thiscall TPopupTarget::put_scoring(TPopupTarget* this, int, int); // idb
|
||||
|
||||
+73
-73
@@ -8,7 +8,7 @@ int result; // eax
|
||||
if ( a2 >= 4 )
|
||||
result = 0;
|
||||
else
|
||||
result = *(_DWORD *)((char *)this + 4 * a2 + 78);
|
||||
result = *(DWORD *)((char *)this + 4 * a2 + 78);
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@ return result;
|
||||
void __thiscall TRamp::put_scoring(TRamp *this, int a2, int a3)
|
||||
{
|
||||
if ( a2 < 4 )
|
||||
*(_DWORD *)((char *)this + 4 * a2 + 78) = a3;
|
||||
*(DWORD *)((char *)this + 4 * a2 + 78) = a3;
|
||||
}
|
||||
|
||||
//----- (01016C24) --------------------------------------------------------
|
||||
@@ -25,7 +25,7 @@ void __thiscall TRamp::Collision(TRamp *this, struct TBall *a2, struct vector_ty
|
||||
TRamp *v6; // edi
|
||||
double v7; // st7
|
||||
int v8; // eax
|
||||
_DWORD *v9; // eax
|
||||
DWORD *v9; // eax
|
||||
double v10; // st7
|
||||
double v11; // st6
|
||||
double v12; // st6
|
||||
@@ -34,48 +34,48 @@ double v13; // st7
|
||||
v6 = this;
|
||||
TBall::not_again(a2, a6);
|
||||
v7 = *(float *)((char *)a2 + 70) - a5;
|
||||
*(_DWORD *)((char *)a2 + 42) = *(_DWORD *)a3;
|
||||
v8 = *((_DWORD *)a3 + 1);
|
||||
*(DWORD *)((char *)a2 + 42) = *(DWORD *)a3;
|
||||
v8 = *((DWORD *)a3 + 1);
|
||||
*(float *)((char *)a2 + 70) = v7;
|
||||
*(_DWORD *)((char *)a2 + 46) = v8;
|
||||
v9 = *(_DWORD **)((char *)a6 + 13);
|
||||
*(DWORD *)((char *)a2 + 46) = v8;
|
||||
v9 = *(DWORD **)((char *)a6 + 13);
|
||||
if ( v9 )
|
||||
{
|
||||
*(_DWORD *)((char *)a2 + 150) = 1;
|
||||
*(_DWORD *)((char *)a2 + 138) = *v9;
|
||||
*(DWORD *)((char *)a2 + 150) = 1;
|
||||
*(DWORD *)((char *)a2 + 138) = *v9;
|
||||
v10 = *(float *)((char *)a2 + 138) * *(float *)((char *)a2 + 42);
|
||||
v11 = *(float *)((char *)a2 + 46);
|
||||
*(_DWORD *)((char *)a2 + 142) = v9[1];
|
||||
*(DWORD *)((char *)a2 + 142) = v9[1];
|
||||
v12 = v11 * *(float *)((char *)a2 + 142);
|
||||
*(_DWORD *)((char *)a2 + 146) = v9[2];
|
||||
*(_DWORD *)((char *)a2 + 94) = v9[11];
|
||||
*(_DWORD *)((char *)a2 + 98) = v9[12];
|
||||
*(DWORD *)((char *)a2 + 146) = v9[2];
|
||||
*(DWORD *)((char *)a2 + 94) = v9[11];
|
||||
*(DWORD *)((char *)a2 + 98) = v9[12];
|
||||
*(float *)((char *)a2 + 50) = v10 + v12 + *(float *)((char *)a2 + 154) + *(float *)((char *)a2 + 146);
|
||||
*(_DWORD *)((char *)a2 + 110) = *(_DWORD *)((char *)v6 + 106);
|
||||
*(DWORD *)((char *)a2 + 110) = *(DWORD *)((char *)v6 + 106);
|
||||
return;
|
||||
}
|
||||
if ( a6 == *(struct TEdgeSegment **)((char *)v6 + 134) )
|
||||
{
|
||||
if ( !*(_DWORD *)(*(_DWORD *)((char *)v6 + 30) + 370) )
|
||||
if ( !*(DWORD *)(*(DWORD *)((char *)v6 + 30) + 370) )
|
||||
{
|
||||
loader_play_sound(*(_DWORD *)((char *)v6 + 70));
|
||||
loader_play_sound(*(DWORD *)((char *)v6 + 70));
|
||||
control_handler(63, v6);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
*(_DWORD *)((char *)a2 + 150) = 0;
|
||||
*(DWORD *)((char *)a2 + 150) = 0;
|
||||
if ( a6 == *(struct TEdgeSegment **)((char *)v6 + 126) )
|
||||
{
|
||||
*(_DWORD *)((char *)a2 + 110) = *(_DWORD *)((char *)v6 + 138);
|
||||
if ( !*(_DWORD *)((char *)v6 + 110) )
|
||||
*(DWORD *)((char *)a2 + 110) = *(DWORD *)((char *)v6 + 138);
|
||||
if ( !*(DWORD *)((char *)v6 + 110) )
|
||||
return;
|
||||
v13 = *(float *)((char *)a2 + 154) + *(float *)((char *)v6 + 146);
|
||||
}
|
||||
else
|
||||
{
|
||||
*(_DWORD *)((char *)a2 + 110) = *(_DWORD *)((char *)v6 + 142);
|
||||
if ( !*(_DWORD *)((char *)v6 + 110) )
|
||||
*(DWORD *)((char *)a2 + 110) = *(DWORD *)((char *)v6 + 142);
|
||||
if ( !*(DWORD *)((char *)v6 + 110) )
|
||||
return;
|
||||
v13 = *(float *)((char *)a2 + 154) + *(float *)((char *)v6 + 150);
|
||||
}
|
||||
@@ -101,7 +101,7 @@ TRamp *__thiscall TRamp::TRamp(TRamp *this, struct TPinballTable *a2, void *a3)
|
||||
{
|
||||
void *v3; // ebx
|
||||
TRamp *v4; // esi
|
||||
_DWORD *v5; // eax
|
||||
DWORD *v5; // eax
|
||||
float *v6; // eax
|
||||
float *v7; // edi
|
||||
signed __int64 v8; // rax
|
||||
@@ -188,30 +188,30 @@ float v88; // [esp+A4h] [ebp-4h]
|
||||
v3 = a3;
|
||||
v4 = this;
|
||||
TCollisionComponent::TCollisionComponent(this, a2, (int)a3, 0);
|
||||
*(_DWORD *)v4 = &TRamp::vftable;
|
||||
*(_DWORD *)((char *)v4 + 6) = 0;
|
||||
*(DWORD *)v4 = &TRamp::vftable;
|
||||
*(DWORD *)((char *)v4 + 6) = 0;
|
||||
*((_BYTE *)v4 + 4) = 1;
|
||||
loader_query_visual((int)v3, 0, &v73);
|
||||
*(_DWORD *)((char *)v4 + 106) = v74;
|
||||
v5 = (_DWORD *)loader_query_float_attribute((int)v3, 0, 701);
|
||||
*(DWORD *)((char *)v4 + 106) = v74;
|
||||
v5 = (DWORD *)loader_query_float_attribute((int)v3, 0, 701);
|
||||
if ( v5 )
|
||||
*(_DWORD *)((char *)v4 + 118) = *v5;
|
||||
*(DWORD *)((char *)v4 + 118) = *v5;
|
||||
else
|
||||
*(_DWORD *)((char *)v4 + 118) = 1045220557;
|
||||
*(DWORD *)((char *)v4 + 118) = 1045220557;
|
||||
v6 = (float *)loader_query_float_attribute((int)v3, 0, 1305);
|
||||
if ( v6 )
|
||||
*(_DWORD *)((char *)v4 + 110) = (signed __int64)_floor(*v6);
|
||||
*(DWORD *)((char *)v4 + 110) = (signed __int64)_floor(*v6);
|
||||
else
|
||||
*(_DWORD *)((char *)v4 + 110) = 0;
|
||||
*(DWORD *)((char *)v4 + 110) = 0;
|
||||
v7 = (float *)loader_query_float_attribute((int)a3, 0, 1300);
|
||||
v8 = (signed __int64)_floor(*v7);
|
||||
v9 = a3;
|
||||
*(_DWORD *)((char *)v4 + 114) = v8;
|
||||
*(_DWORD *)((char *)v4 + 122) = v7 + 1;
|
||||
*(DWORD *)((char *)v4 + 114) = v8;
|
||||
*(DWORD *)((char *)v4 + 122) = v7 + 1;
|
||||
v10 = loader_query_float_attribute((int)v9, 0, 1303);
|
||||
v11 = _floor(*(float *)v10);
|
||||
v75 = *(_DWORD *)(v10 + 8);
|
||||
v76 = *(_DWORD *)(v10 + 12);
|
||||
v75 = *(DWORD *)(v10 + 8);
|
||||
v76 = *(DWORD *)(v10 + 12);
|
||||
v86 = *(float *)(v10 + 16);
|
||||
v87 = *(float *)(v10 + 20);
|
||||
v12 = (TLine *)operator new(0x55u);
|
||||
@@ -225,70 +225,70 @@ v4,
|
||||
(struct vector_type *)&v75);
|
||||
else
|
||||
v13 = 0;
|
||||
*(_DWORD *)((char *)v4 + 134) = v13;
|
||||
*(DWORD *)((char *)v4 + 134) = v13;
|
||||
objlist_class::Add((TRamp *)((char *)v4 + 42), (void *)v13);
|
||||
if ( v13 )
|
||||
{
|
||||
v14 = *(_DWORD *)v13;
|
||||
*(_DWORD *)((char *)v13 + 13) = 0;
|
||||
v14 = *(DWORD *)v13;
|
||||
*(DWORD *)((char *)v13 + 13) = 0;
|
||||
(*(void (__thiscall **)(TLine *))(v14 + 8))(v13);
|
||||
}
|
||||
v15 = loader_query_float_attribute((int)a3, 0, 1301);
|
||||
*(_DWORD *)((char *)v4 + 138) = (signed __int64)_floor(*(float *)v15);
|
||||
*(DWORD *)((char *)v4 + 138) = (signed __int64)_floor(*(float *)v15);
|
||||
v16 = _floor(*(float *)(v15 + 4));
|
||||
v17 = *(_DWORD *)((char *)v4 + 138);
|
||||
v17 = *(DWORD *)((char *)v4 + 138);
|
||||
v78 = (signed __int64)v16;
|
||||
v15 += 12;
|
||||
*(_DWORD *)((char *)v4 + 138) = 1 << v17;
|
||||
*(_DWORD *)((char *)v4 + 146) = *(_DWORD *)(v15 + 16);
|
||||
*(DWORD *)((char *)v4 + 138) = 1 << v17;
|
||||
*(DWORD *)((char *)v4 + 146) = *(DWORD *)(v15 + 16);
|
||||
find_closest_edge(
|
||||
*(struct ramp_plane_type **)((char *)v4 + 122),
|
||||
*(_DWORD *)((char *)v4 + 114),
|
||||
*(DWORD *)((char *)v4 + 114),
|
||||
(struct wall_point_type *)v15,
|
||||
&a2,
|
||||
&v80);
|
||||
v18 = (TLine *)operator new(0x55u);
|
||||
if ( v18 )
|
||||
v19 = TLine::TLine(v18, v4, (char *)v4 + 5, *(_DWORD *)((char *)v4 + 106), v80, a2);
|
||||
v19 = TLine::TLine(v18, v4, (char *)v4 + 5, *(DWORD *)((char *)v4 + 106), v80, a2);
|
||||
else
|
||||
v19 = 0;
|
||||
*(_DWORD *)((char *)v4 + 126) = v19;
|
||||
*(DWORD *)((char *)v4 + 126) = v19;
|
||||
objlist_class::Add((TRamp *)((char *)v4 + 42), (void *)v19);
|
||||
if ( v19 )
|
||||
{
|
||||
v20 = *(_DWORD *)v19;
|
||||
*(_DWORD *)((char *)v19 + 13) = 0;
|
||||
v20 = *(DWORD *)v19;
|
||||
*(DWORD *)((char *)v19 + 13) = 0;
|
||||
(*(void (__thiscall **)(TLine *))(v20 + 8))(v19);
|
||||
}
|
||||
v21 = loader_query_float_attribute((int)a3, 0, 1302);
|
||||
*(_DWORD *)((char *)v4 + 142) = (signed __int64)_floor(*(float *)v21);
|
||||
*(DWORD *)((char *)v4 + 142) = (signed __int64)_floor(*(float *)v21);
|
||||
v22 = _floor(*(float *)(v21 + 4));
|
||||
v23 = *(_DWORD *)((char *)v4 + 142);
|
||||
v23 = *(DWORD *)((char *)v4 + 142);
|
||||
v77 = (signed __int64)v22;
|
||||
v21 += 12;
|
||||
*(_DWORD *)((char *)v4 + 142) = 1 << v23;
|
||||
*(_DWORD *)((char *)v4 + 150) = *(_DWORD *)(v21 + 16);
|
||||
*(DWORD *)((char *)v4 + 142) = 1 << v23;
|
||||
*(DWORD *)((char *)v4 + 150) = *(DWORD *)(v21 + 16);
|
||||
find_closest_edge(
|
||||
*(struct ramp_plane_type **)((char *)v4 + 122),
|
||||
*(_DWORD *)((char *)v4 + 114),
|
||||
*(DWORD *)((char *)v4 + 114),
|
||||
(struct wall_point_type *)v21,
|
||||
&v81,
|
||||
&v84);
|
||||
v24 = (TLine *)operator new(0x55u);
|
||||
if ( v24 )
|
||||
v25 = TLine::TLine(v24, v4, (char *)v4 + 5, *(_DWORD *)((char *)v4 + 106), v84, v81);
|
||||
v25 = TLine::TLine(v24, v4, (char *)v4 + 5, *(DWORD *)((char *)v4 + 106), v84, v81);
|
||||
else
|
||||
v25 = 0;
|
||||
*(_DWORD *)((char *)v4 + 130) = v25;
|
||||
*(DWORD *)((char *)v4 + 130) = v25;
|
||||
objlist_class::Add((TRamp *)((char *)v4 + 42), (void *)v25);
|
||||
if ( v25 )
|
||||
{
|
||||
v26 = *(_DWORD *)v25;
|
||||
*(_DWORD *)((char *)v25 + 13) = 0;
|
||||
v26 = *(DWORD *)v25;
|
||||
*(DWORD *)((char *)v25 + 13) = 0;
|
||||
(*(void (__thiscall **)(TLine *))(v26 + 8))(v25);
|
||||
}
|
||||
v27 = *(_DWORD *)((char *)v4 + 114) == 0;
|
||||
v28 = *(_DWORD *)((char *)v4 + 114) < 0;
|
||||
v27 = *(DWORD *)((char *)v4 + 114) == 0;
|
||||
v28 = *(DWORD *)((char *)v4 + 114) < 0;
|
||||
v86 = 1000000000.0;
|
||||
v82 = 0;
|
||||
v85 = 1000000000.0;
|
||||
@@ -298,7 +298,7 @@ if ( !v28 && !v27 )
|
||||
{
|
||||
do
|
||||
{
|
||||
v29 = *(_DWORD *)((char *)v4 + 122);
|
||||
v29 = *(DWORD *)((char *)v4 + 122);
|
||||
v83 = 52 * v82;
|
||||
v30 = v29 + 52 * v82;
|
||||
v31 = v30 + 28;
|
||||
@@ -486,8 +486,8 @@ objlist_class::Add((TRamp *)((char *)v4 + 42), a3);
|
||||
if ( a3 )
|
||||
{
|
||||
v55 = a3;
|
||||
*(_DWORD *)((char *)a3 + 13) = v83 + *(_DWORD *)((char *)v4 + 122);
|
||||
(*(void (**)(void))(*(_DWORD *)v55 + 8))();
|
||||
*(DWORD *)((char *)a3 + 13) = v83 + *(DWORD *)((char *)v4 + 122);
|
||||
(*(void (**)(void))(*(DWORD *)v55 + 8))();
|
||||
}
|
||||
}
|
||||
if ( v79 != a2 || (struct vector_type *)v31 != v80 )
|
||||
@@ -520,8 +520,8 @@ objlist_class::Add((TRamp *)((char *)v4 + 42), a3);
|
||||
if ( a3 )
|
||||
{
|
||||
v58 = a3;
|
||||
*(_DWORD *)((char *)a3 + 13) = v83 + *(_DWORD *)((char *)v4 + 122);
|
||||
(*(void (**)(void))(*(_DWORD *)v58 + 8))();
|
||||
*(DWORD *)((char *)a3 + 13) = v83 + *(DWORD *)((char *)v4 + 122);
|
||||
(*(void (**)(void))(*(DWORD *)v58 + 8))();
|
||||
}
|
||||
}
|
||||
if ( (struct TPinballTable *)v31 != a2 || (struct vector_type *)v32 != v80 )
|
||||
@@ -562,31 +562,31 @@ v61 = 0;
|
||||
objlist_class::Add((TRamp *)((char *)v4 + 42), (void *)v61);
|
||||
if ( v61 )
|
||||
{
|
||||
*(_DWORD *)((char *)v61 + 13) = v83 + *(_DWORD *)((char *)v4 + 122);
|
||||
(*(void (__thiscall **)(TLine *))(*(_DWORD *)v61 + 8))(v61);
|
||||
*(DWORD *)((char *)v61 + 13) = v83 + *(DWORD *)((char *)v4 + 122);
|
||||
(*(void (__thiscall **)(TLine *))(*(DWORD *)v61 + 8))(v61);
|
||||
}
|
||||
}
|
||||
v62 = v83;
|
||||
*(float *)(v83 + *(_DWORD *)((char *)v4 + 122) + 44) = cos(*(float *)(v83 + *(_DWORD *)((char *)v4 + 122) + 40))
|
||||
* sin(*(float *)(v83 + *(_DWORD *)((char *)v4 + 122) + 36))
|
||||
* *(float *)(*(_DWORD *)((char *)v4 + 30) + 270);
|
||||
v63 = (float *)(v62 + *(_DWORD *)((char *)v4 + 122));
|
||||
v64 = *(_DWORD *)((char *)v4 + 30);
|
||||
*(float *)(v83 + *(DWORD *)((char *)v4 + 122) + 44) = cos(*(float *)(v83 + *(DWORD *)((char *)v4 + 122) + 40))
|
||||
* sin(*(float *)(v83 + *(DWORD *)((char *)v4 + 122) + 36))
|
||||
* *(float *)(*(DWORD *)((char *)v4 + 30) + 270);
|
||||
v63 = (float *)(v62 + *(DWORD *)((char *)v4 + 122));
|
||||
v64 = *(DWORD *)((char *)v4 + 30);
|
||||
v65 = sin(v63[10]);
|
||||
++v82;
|
||||
v63[12] = v65 * sin(v63[9]) * *(float *)(v64 + 270);
|
||||
}
|
||||
while ( v82 < *(_DWORD *)((char *)v4 + 114) );
|
||||
while ( v82 < *(DWORD *)((char *)v4 + 114) );
|
||||
}
|
||||
v66 = v87;
|
||||
v67 = v88;
|
||||
*(_DWORD *)((char *)v4 + 94) = (char *)v4 + 5;
|
||||
*(DWORD *)((char *)v4 + 94) = (char *)v4 + 5;
|
||||
v68 = (int)v74;
|
||||
v69 = v67;
|
||||
v70 = v85;
|
||||
*(_DWORD *)((char *)v4 + 102) = v4;
|
||||
*(DWORD *)((char *)v4 + 102) = v4;
|
||||
v71 = v70;
|
||||
*(_DWORD *)((char *)v4 + 98) = v68;
|
||||
*(DWORD *)((char *)v4 + 98) = v68;
|
||||
edges_insert_square(v86, v71, v69, v66, 0, (TRamp *)((char *)v4 + 94));
|
||||
return v4;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#include "TRollover.h"
|
||||
|
||||
//----- (0101644B) --------------------------------------------------------
|
||||
void __stdcall TRollover::TimerExpired(int a1, void *a2)
|
||||
void TRollover::TimerExpired(int a1, void *a2)
|
||||
{
|
||||
*((_BYTE *)a2 + 5) = 1;
|
||||
}
|
||||
@@ -13,11 +13,11 @@ int v3; // eax
|
||||
|
||||
if ( a2 == 1024 )
|
||||
{
|
||||
v3 = *(_DWORD *)((char *)this + 34);
|
||||
v3 = *(DWORD *)((char *)this + 34);
|
||||
*((_BYTE *)this + 5) = 1;
|
||||
*((_BYTE *)this + 78) = 0;
|
||||
if ( v3 )
|
||||
render_sprite_set_bitmap(*(_DWORD **)((char *)this + 26), *(_DWORD *)(*(_DWORD *)(v3 + 4) + 8));
|
||||
render_sprite_set_bitmap(*(DWORD **)((char *)this + 26), *(DWORD *)(*(DWORD *)(v3 + 4) + 8));
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -30,7 +30,7 @@ int result; // eax
|
||||
if ( a2 >= 2 )
|
||||
result = 0;
|
||||
else
|
||||
result = *(_DWORD *)((char *)this + 4 * a2 + 79);
|
||||
result = *(DWORD *)((char *)this + 4 * a2 + 79);
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -38,7 +38,7 @@ return result;
|
||||
void __thiscall TRollover::put_scoring(TRollover *this, int a2, int a3)
|
||||
{
|
||||
if ( a2 < 2 )
|
||||
*(_DWORD *)((char *)this + 4 * a2 + 79) = a3;
|
||||
*(DWORD *)((char *)this + 4 * a2 + 79) = a3;
|
||||
}
|
||||
|
||||
//----- (010182E4) --------------------------------------------------------
|
||||
@@ -74,11 +74,11 @@ bool v10; // cl
|
||||
v6 = this;
|
||||
*(float *)((char *)a2 + 42) = *(float *)a3;
|
||||
v7 = *(float *)((char *)a2 + 70);
|
||||
*(_DWORD *)((char *)a2 + 46) = *((_DWORD *)a3 + 1);
|
||||
*(DWORD *)((char *)a2 + 46) = *((DWORD *)a3 + 1);
|
||||
*(float *)((char *)a2 + 70) = v7 - a5;
|
||||
TBall::not_again(a2, a6);
|
||||
v8 = 0;
|
||||
if ( !*(_DWORD *)(*(_DWORD *)((char *)v6 + 30) + 370) )
|
||||
if ( !*(DWORD *)(*(DWORD *)((char *)v6 + 30) + 370) )
|
||||
{
|
||||
if ( *((_BYTE *)v6 + 78) )
|
||||
{
|
||||
@@ -87,17 +87,17 @@ timer_set(0.1, (int)v6, (int)TRollover::TimerExpired);
|
||||
}
|
||||
else
|
||||
{
|
||||
loader_play_sound(*(_DWORD *)((char *)v6 + 70));
|
||||
loader_play_sound(*(DWORD *)((char *)v6 + 70));
|
||||
control_handler(63, v6);
|
||||
}
|
||||
v9 = *(_DWORD *)((char *)v6 + 34);
|
||||
v9 = *(DWORD *)((char *)v6 + 34);
|
||||
v10 = *((_BYTE *)v6 + 78) == 0;
|
||||
*((_BYTE *)v6 + 78) = v10;
|
||||
if ( v9 )
|
||||
{
|
||||
if ( !v10 )
|
||||
v8 = *(_DWORD *)(*(_DWORD *)(v9 + 4) + 8);
|
||||
render_sprite_set_bitmap(*(_DWORD **)((char *)v6 + 26), v8);
|
||||
v8 = *(DWORD *)(*(DWORD *)(v9 + 4) + 8);
|
||||
render_sprite_set_bitmap(*(DWORD **)((char *)v6 + 26), v8);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -109,7 +109,7 @@ TRollover *v4; // esi
|
||||
|
||||
v4 = this;
|
||||
TCollisionComponent::TCollisionComponent(this, a2, a3, a4);
|
||||
*(_DWORD *)v4 = &TRollover::vftable;
|
||||
*(DWORD *)v4 = &TRollover::vftable;
|
||||
return v4;
|
||||
}
|
||||
// 1002614: using guessed type void *TRollover::vftable;
|
||||
@@ -122,11 +122,11 @@ int v4; // eax
|
||||
|
||||
v3 = this;
|
||||
TCollisionComponent::TCollisionComponent(this, a2, a3, 0);
|
||||
v4 = *(_DWORD *)((char *)v3 + 34);
|
||||
*(_DWORD *)v3 = &TRollover::vftable;
|
||||
v4 = *(DWORD *)((char *)v3 + 34);
|
||||
*(DWORD *)v3 = &TRollover::vftable;
|
||||
*((_BYTE *)v3 + 78) = 0;
|
||||
if ( v4 )
|
||||
render_sprite_set_bitmap(*(_DWORD **)((char *)v3 + 26), *(_DWORD *)(*(_DWORD *)(v4 + 4) + 8));
|
||||
render_sprite_set_bitmap(*(DWORD **)((char *)v3 + 26), *(DWORD *)(*(DWORD *)(v4 + 4) + 8));
|
||||
TRollover::build_walls(v3, a3);
|
||||
return v3;
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
/* 108 */
|
||||
struct TRollover;
|
||||
|
||||
void __stdcall TRollover::TimerExpired(int, void*); // idb
|
||||
void TRollover::TimerExpired(int, void*); // idb
|
||||
int __thiscall TRollover::Message(TRollover* this, int, float); // idb
|
||||
int __thiscall TRollover::get_scoring(TRollover* this, int); // idb
|
||||
void __thiscall TRollover::put_scoring(TRollover* this, int, int); // idb
|
||||
|
||||
+43
-43
@@ -1,24 +1,24 @@
|
||||
#include "TSink.h"
|
||||
|
||||
//----- (01017130) --------------------------------------------------------
|
||||
void __stdcall TSink::TimerExpired(int a1, void *a2)
|
||||
void TSink::TimerExpired(int a1, void *a2)
|
||||
{
|
||||
int v2; // eax
|
||||
|
||||
v2 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)((char *)a2 + 30) + 262) + 8);
|
||||
*(_DWORD *)(v2 + 106) = 0;
|
||||
v2 = *(DWORD *)(*(DWORD *)(*(DWORD *)((char *)a2 + 30) + 262) + 8);
|
||||
*(DWORD *)(v2 + 106) = 0;
|
||||
*(_BYTE *)(v2 + 5) = 1;
|
||||
*(_DWORD *)(v2 + 42) = *(_DWORD *)((char *)a2 + 86);
|
||||
*(_DWORD *)(v2 + 46) = *(_DWORD *)((char *)a2 + 90);
|
||||
*(DWORD *)(v2 + 42) = *(DWORD *)((char *)a2 + 86);
|
||||
*(DWORD *)(v2 + 46) = *(DWORD *)((char *)a2 + 90);
|
||||
throw_ball(
|
||||
(struct TBall *)v2,
|
||||
(struct vector_type *)((char *)a2 + 98),
|
||||
*(float *)((char *)a2 + 110),
|
||||
*(float *)((char *)a2 + 114),
|
||||
*(float *)((char *)a2 + 118));
|
||||
if ( *(_DWORD *)((char *)a2 + 126) )
|
||||
loader_play_sound(*(_DWORD *)((char *)a2 + 126));
|
||||
*(_DWORD *)((char *)a2 + 78) = 0;
|
||||
if ( *(DWORD *)((char *)a2 + 126) )
|
||||
loader_play_sound(*(DWORD *)((char *)a2 + 126));
|
||||
*(DWORD *)((char *)a2 + 78) = 0;
|
||||
}
|
||||
|
||||
//----- (01017197) --------------------------------------------------------
|
||||
@@ -27,7 +27,7 @@ int __thiscall TSink::Message(TSink *this, int a2, float a3)
|
||||
TSink *v3; // esi
|
||||
int v4; // eax
|
||||
int v5; // ecx
|
||||
_DWORD *v6; // eax
|
||||
DWORD *v6; // eax
|
||||
|
||||
v3 = this;
|
||||
switch ( a2 )
|
||||
@@ -35,29 +35,29 @@ switch ( a2 )
|
||||
case 56:
|
||||
if ( a3 < 0.0 )
|
||||
a3 = *(float *)((char *)this + 82);
|
||||
*(_DWORD *)((char *)this + 78) = timer_set(a3, (int)this, (int)TSink::TimerExpired);
|
||||
*(DWORD *)((char *)this + 78) = timer_set(a3, (int)this, (int)TSink::TimerExpired);
|
||||
break;
|
||||
case 1020:
|
||||
*(_DWORD *)((char *)this + 4 * *(_DWORD *)(*(_DWORD *)((char *)this + 30) + 218) + 142) = *(_DWORD *)((char *)this + 6);
|
||||
*(_DWORD *)((char *)this + 6) = *(_DWORD *)((char *)this + 4 * (unsigned __int64)(signed __int64)_floor(a3) + 142);
|
||||
*(DWORD *)((char *)this + 4 * *(DWORD *)(*(DWORD *)((char *)this + 30) + 218) + 142) = *(DWORD *)((char *)this + 6);
|
||||
*(DWORD *)((char *)this + 6) = *(DWORD *)((char *)this + 4 * (unsigned __int64)(signed __int64)_floor(a3) + 142);
|
||||
break;
|
||||
case 1024:
|
||||
if ( *(_DWORD *)((char *)this + 78) )
|
||||
timer_kill(*(_DWORD *)((char *)this + 78));
|
||||
v4 = *(_DWORD *)((char *)v3 + 30);
|
||||
*(_DWORD *)((char *)v3 + 78) = 0;
|
||||
*(_DWORD *)((char *)v3 + 6) = 0;
|
||||
if ( *(DWORD *)((char *)this + 78) )
|
||||
timer_kill(*(DWORD *)((char *)this + 78));
|
||||
v4 = *(DWORD *)((char *)v3 + 30);
|
||||
*(DWORD *)((char *)v3 + 78) = 0;
|
||||
*(DWORD *)((char *)v3 + 6) = 0;
|
||||
v5 = 0;
|
||||
if ( *(_DWORD *)(v4 + 214) > 0 )
|
||||
if ( *(DWORD *)(v4 + 214) > 0 )
|
||||
{
|
||||
v6 = (_DWORD *)((char *)v3 + 142);
|
||||
v6 = (DWORD *)((char *)v3 + 142);
|
||||
do
|
||||
{
|
||||
*v6 = 0;
|
||||
++v5;
|
||||
++v6;
|
||||
}
|
||||
while ( v5 < *(_DWORD *)(*(_DWORD *)((char *)v3 + 30) + 214) );
|
||||
while ( v5 < *(DWORD *)(*(DWORD *)((char *)v3 + 30) + 214) );
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -72,7 +72,7 @@ int result; // eax
|
||||
if ( a2 >= 3 )
|
||||
result = 0;
|
||||
else
|
||||
result = *(_DWORD *)((char *)this + 4 * a2 + 130);
|
||||
result = *(DWORD *)((char *)this + 4 * a2 + 130);
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -80,7 +80,7 @@ return result;
|
||||
void __thiscall TSink::put_scoring(TSink *this, int a2, int a3)
|
||||
{
|
||||
if ( a2 < 3 )
|
||||
*(_DWORD *)((char *)this + 4 * a2 + 130) = a3;
|
||||
*(DWORD *)((char *)this + 4 * a2 + 130) = a3;
|
||||
}
|
||||
|
||||
//----- (010184ED) --------------------------------------------------------
|
||||
@@ -88,21 +88,21 @@ void __thiscall TSink::Collision(TSink *this, struct TBall *a2, struct vector_ty
|
||||
{
|
||||
TSink *v6; // esi
|
||||
int v7; // eax
|
||||
_DWORD *v8; // ST14_4
|
||||
DWORD *v8; // ST14_4
|
||||
|
||||
v6 = this;
|
||||
v7 = *(_DWORD *)((char *)this + 30);
|
||||
*(_DWORD *)((char *)this + 78) = 0;
|
||||
if ( *(_DWORD *)(v7 + 370) )
|
||||
v7 = *(DWORD *)((char *)this + 30);
|
||||
*(DWORD *)((char *)this + 78) = 0;
|
||||
if ( *(DWORD *)(v7 + 370) )
|
||||
{
|
||||
basic_collision(a2, a3, a4, *(float *)((char *)this + 54), *(float *)((char *)this + 58), 1000000000.0, 0.0);
|
||||
}
|
||||
else
|
||||
{
|
||||
v8 = *(_DWORD **)((char *)a2 + 26);
|
||||
v8 = *(DWORD **)((char *)a2 + 26);
|
||||
*((_BYTE *)a2 + 5) = 0;
|
||||
render_sprite_set_bitmap(v8, 0);
|
||||
loader_play_sound(*(_DWORD *)((char *)v6 + 122));
|
||||
loader_play_sound(*(DWORD *)((char *)v6 + 122));
|
||||
control_handler(63, v6);
|
||||
}
|
||||
}
|
||||
@@ -114,7 +114,7 @@ TSink *v3; // ebx
|
||||
int v4; // eax
|
||||
int v5; // eax
|
||||
int v6; // eax
|
||||
_DWORD *v7; // eax
|
||||
DWORD *v7; // eax
|
||||
char v9; // [esp+Ch] [ebp-48h]
|
||||
int v10; // [esp+24h] [ebp-30h]
|
||||
float v11; // [esp+28h] [ebp-2Ch]
|
||||
@@ -127,25 +127,25 @@ int v17; // [esp+48h] [ebp-Ch]
|
||||
|
||||
v3 = this;
|
||||
TCollisionComponent::TCollisionComponent(this, a2, a3, 1);
|
||||
*(_DWORD *)v3 = &TSink::vftable;
|
||||
*(_DWORD *)((char *)v3 + 6) = 0;
|
||||
*(_DWORD *)((char *)v3 + 78) = 0;
|
||||
*(DWORD *)v3 = &TSink::vftable;
|
||||
*(DWORD *)((char *)v3 + 6) = 0;
|
||||
*(DWORD *)((char *)v3 + 78) = 0;
|
||||
loader_query_visual(a3, 0, &v9);
|
||||
v4 = v15;
|
||||
*(float *)((char *)v3 + 118) = v11 * 0.01;
|
||||
*(_DWORD *)((char *)v3 + 98) = v12;
|
||||
*(_DWORD *)((char *)v3 + 110) = v4;
|
||||
*(_DWORD *)((char *)v3 + 114) = v10;
|
||||
*(DWORD *)((char *)v3 + 98) = v12;
|
||||
*(DWORD *)((char *)v3 + 110) = v4;
|
||||
*(DWORD *)((char *)v3 + 114) = v10;
|
||||
v5 = v16;
|
||||
*(_DWORD *)((char *)v3 + 102) = v13;
|
||||
*(_DWORD *)((char *)v3 + 122) = v5;
|
||||
*(DWORD *)((char *)v3 + 102) = v13;
|
||||
*(DWORD *)((char *)v3 + 122) = v5;
|
||||
v6 = v17;
|
||||
*(_DWORD *)((char *)v3 + 106) = v14;
|
||||
*(_DWORD *)((char *)v3 + 126) = v6;
|
||||
v7 = (_DWORD *)loader_query_float_attribute(a3, 0, 601);
|
||||
*(_DWORD *)((char *)v3 + 86) = *v7;
|
||||
*(_DWORD *)((char *)v3 + 90) = v7[1];
|
||||
*(_DWORD *)((char *)v3 + 82) = *(_DWORD *)loader_query_float_attribute(a3, 0, 407);
|
||||
*(DWORD *)((char *)v3 + 106) = v14;
|
||||
*(DWORD *)((char *)v3 + 126) = v6;
|
||||
v7 = (DWORD *)loader_query_float_attribute(a3, 0, 601);
|
||||
*(DWORD *)((char *)v3 + 86) = *v7;
|
||||
*(DWORD *)((char *)v3 + 90) = v7[1];
|
||||
*(DWORD *)((char *)v3 + 82) = *(DWORD *)loader_query_float_attribute(a3, 0, 407);
|
||||
return v3;
|
||||
}
|
||||
// 1002704: using guessed type void *TSink::vftable;
|
||||
@@ -10,7 +10,7 @@
|
||||
/* 114 */
|
||||
struct TSink;
|
||||
|
||||
void __stdcall TSink::TimerExpired(int, void*); // idb
|
||||
void TSink::TimerExpired(int, void*); // idb
|
||||
int __thiscall TSink::Message(TSink* this, int, float); // idb
|
||||
int __thiscall TSink::get_scoring(TSink* this, int); // idb
|
||||
void __thiscall TSink::put_scoring(TSink* this, int, int); // idb
|
||||
|
||||
@@ -16,22 +16,22 @@ if ( a2 > 50 )
|
||||
{
|
||||
if ( a2 != 1024 )
|
||||
return 0;
|
||||
if ( *(_DWORD *)((char *)this + 82) )
|
||||
timer_kill(*(_DWORD *)((char *)this + 82));
|
||||
*(_DWORD *)((char *)v3 + 82) = 0;
|
||||
if ( *(DWORD *)((char *)this + 82) )
|
||||
timer_kill(*(DWORD *)((char *)this + 82));
|
||||
*(DWORD *)((char *)v3 + 82) = 0;
|
||||
v4 = a2 == 50;
|
||||
}
|
||||
*((_BYTE *)v3 + 5) = v4 || a2 == 1024;
|
||||
v5 = *(_DWORD *)((char *)v3 + 34);
|
||||
v5 = *(DWORD *)((char *)v3 + 34);
|
||||
if ( v5 )
|
||||
{
|
||||
v6 = 4 * (3 - *((char *)v3 + 5));
|
||||
render_sprite_set(
|
||||
*(_DWORD **)((char *)v3 + 26),
|
||||
*(_DWORD *)(v6 + *(_DWORD *)(v5 + 4)),
|
||||
*(_DWORD *)(*(_DWORD *)(*(_DWORD *)((char *)v3 + 38) + 4) + v6),
|
||||
*(_DWORD *)(*(_DWORD *)(v6 + *(_DWORD *)(v5 + 4)) + 29) - *(_DWORD *)(*(_DWORD *)((char *)v3 + 30) + 234),
|
||||
*(_DWORD *)(*(_DWORD *)(v6 + *(_DWORD *)(v5 + 4)) + 33) - *(_DWORD *)(*(_DWORD *)((char *)v3 + 30) + 238));
|
||||
*(DWORD **)((char *)v3 + 26),
|
||||
*(DWORD *)(v6 + *(DWORD *)(v5 + 4)),
|
||||
*(DWORD *)(*(DWORD *)(*(DWORD *)((char *)v3 + 38) + 4) + v6),
|
||||
*(DWORD *)(*(DWORD *)(v6 + *(DWORD *)(v5 + 4)) + 29) - *(DWORD *)(*(DWORD *)((char *)v3 + 30) + 234),
|
||||
*(DWORD *)(*(DWORD *)(v6 + *(DWORD *)(v5 + 4)) + 33) - *(DWORD *)(*(DWORD *)((char *)v3 + 30) + 238));
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
@@ -45,7 +45,7 @@ int result; // eax
|
||||
if ( a2 >= 1 )
|
||||
result = 0;
|
||||
else
|
||||
result = *(_DWORD *)((char *)this + 4 * a2 + 94);
|
||||
result = *(DWORD *)((char *)this + 4 * a2 + 94);
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -53,14 +53,14 @@ return result;
|
||||
void __thiscall TSoloTarget::put_scoring(TSoloTarget *this, int a2, int a3)
|
||||
{
|
||||
if ( a2 < 1 )
|
||||
*(_DWORD *)((char *)this + 4 * a2 + 94) = a3;
|
||||
*(DWORD *)((char *)this + 4 * a2 + 94) = a3;
|
||||
}
|
||||
|
||||
//----- (0101620B) --------------------------------------------------------
|
||||
void __stdcall TSoloTarget::TimerExpired(int a1, void *a2)
|
||||
void TSoloTarget::TimerExpired(int a1, void *a2)
|
||||
{
|
||||
(**(void (__thiscall ***)(void *, signed int, _DWORD))a2)(a2, 50, 0.0);
|
||||
*(_DWORD *)((char *)a2 + 82) = 0;
|
||||
(**(void (__thiscall ***)(void *, signed int, DWORD))a2)(a2, 50, 0.0);
|
||||
*(DWORD *)((char *)a2 + 82) = 0;
|
||||
}
|
||||
|
||||
//----- (01018295) --------------------------------------------------------
|
||||
@@ -71,8 +71,8 @@ TSoloTarget *v6; // esi
|
||||
v6 = this;
|
||||
if ( TCollisionComponent::DefaultCollision(this, a2, a3, a4) )
|
||||
{
|
||||
(**(void (__thiscall ***)(TSoloTarget *, signed int, _DWORD))v6)(v6, 49, 0.0);
|
||||
*(_DWORD *)((char *)v6 + 82) = timer_set(*(float *)((char *)v6 + 86), (int)v6, (int)TSoloTarget::TimerExpired);
|
||||
(**(void (__thiscall ***)(TSoloTarget *, signed int, DWORD))v6)(v6, 49, 0.0);
|
||||
*(DWORD *)((char *)v6 + 82) = timer_set(*(float *)((char *)v6 + 86), (int)v6, (int)TSoloTarget::TimerExpired);
|
||||
control_handler(63, v6);
|
||||
}
|
||||
}
|
||||
@@ -86,11 +86,11 @@ int v6; // [esp+40h] [ebp-10h]
|
||||
|
||||
v3 = this;
|
||||
TCollisionComponent::TCollisionComponent(this, a2, a3, 1);
|
||||
*(_DWORD *)((char *)v3 + 82) = 0;
|
||||
*(_DWORD *)v3 = &TSoloTarget::vftable;
|
||||
*(_DWORD *)((char *)v3 + 86) = 1036831949;
|
||||
*(DWORD *)((char *)v3 + 82) = 0;
|
||||
*(DWORD *)v3 = &TSoloTarget::vftable;
|
||||
*(DWORD *)((char *)v3 + 86) = 1036831949;
|
||||
loader_query_visual(a3, 0, &v5);
|
||||
*(_DWORD *)((char *)v3 + 90) = v6;
|
||||
*(DWORD *)((char *)v3 + 90) = v6;
|
||||
TSoloTarget::Message(v3, 50, 0.0);
|
||||
return v3;
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
/* 107 */
|
||||
struct TSoloTarget;
|
||||
|
||||
void __stdcall TSoloTarget::TimerExpired(int, void*); // idb
|
||||
void TSoloTarget::TimerExpired(int, void*); // idb
|
||||
int __thiscall TSoloTarget::Message(TSoloTarget* this, int, float); // idb
|
||||
int __thiscall TSoloTarget::get_scoring(TSoloTarget* this, int); // idb
|
||||
void __thiscall TSoloTarget::put_scoring(TSoloTarget* this, int, int); // idb
|
||||
|
||||
@@ -19,7 +19,7 @@ return v2;
|
||||
//----- (0101797E) --------------------------------------------------------
|
||||
double __thiscall TSound::Play(TSound *this)
|
||||
{
|
||||
return loader_play_sound(*(_DWORD *)((char *)this + 42));
|
||||
return loader_play_sound(*(DWORD *)((char *)this + 42));
|
||||
}
|
||||
|
||||
//----- (0101AA18) --------------------------------------------------------
|
||||
@@ -31,9 +31,9 @@ int v6; // [esp+3Ch] [ebp-10h]
|
||||
|
||||
v3 = this;
|
||||
TPinballComponent::TPinballComponent(this, a2, a3, 1);
|
||||
*(_DWORD *)v3 = &TSound::vftable;
|
||||
*(DWORD *)v3 = &TSound::vftable;
|
||||
loader_query_visual(a3, 0, &v5);
|
||||
*(_DWORD *)((char *)v3 + 42) = v6;
|
||||
*(DWORD *)((char *)v3 + 42) = v6;
|
||||
return v3;
|
||||
}
|
||||
// 10027A4: using guessed type void *TSound::vftable;
|
||||
|
||||
@@ -26,10 +26,10 @@ struct TPinballTable *v2; // edi
|
||||
TTableLayer *v3; // esi
|
||||
float *v4; // eax
|
||||
int v5; // eax
|
||||
_DWORD *v6; // eax
|
||||
DWORD *v6; // eax
|
||||
int v7; // eax
|
||||
_DWORD *v8; // eax
|
||||
_DWORD *v9; // eax
|
||||
DWORD *v8; // eax
|
||||
DWORD *v9; // eax
|
||||
float *v10; // ecx
|
||||
float *v11; // edi
|
||||
double v12; // st7
|
||||
@@ -57,7 +57,7 @@ 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]
|
||||
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]
|
||||
@@ -70,52 +70,52 @@ struct TPinballTable *v46; // [esp+88h] [ebp+8h]
|
||||
v2 = a2;
|
||||
v3 = this;
|
||||
TCollisionComponent::TCollisionComponent(this, a2, -1, 0);
|
||||
*(_DWORD *)v3 = &TTableLayer::vftable;
|
||||
*(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;
|
||||
*(DWORD *)((char *)v3 + 78) = v38;
|
||||
v40 = 0;
|
||||
v41 = 0;
|
||||
v42 = *(_DWORD *)(v5 + 12);
|
||||
v43 = *(_DWORD *)(v5 + 16);
|
||||
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);
|
||||
*(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];
|
||||
*(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;
|
||||
*(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);
|
||||
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);
|
||||
v8 = (DWORD *)loader_query_float_attribute((int)v45, 0, 701);
|
||||
if ( v8 )
|
||||
*(_DWORD *)((char *)v3 + 110) = *v8;
|
||||
*(DWORD *)((char *)v3 + 110) = *v8;
|
||||
else
|
||||
*(_DWORD *)((char *)v3 + 110) = 1045220557;
|
||||
*(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];
|
||||
*(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];
|
||||
*(DWORD *)((char *)v2 + 246) = v9[4];
|
||||
v44 = v31;
|
||||
*(_DWORD *)((char *)v3 + 66) = v33;
|
||||
*(_DWORD *)((char *)v3 + 62) = 1097859072;
|
||||
*(DWORD *)((char *)v3 + 66) = v33;
|
||||
*(DWORD *)((char *)v3 + 62) = 1097859072;
|
||||
v11 = v10;
|
||||
v46 = (struct TPinballTable *)v10;
|
||||
if ( v10[2] >= (double)v10[4] )
|
||||
@@ -205,7 +205,7 @@ 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);
|
||||
(*(void (__thiscall **)(TLine *))(*(DWORD *)v24 + 8))(v24);
|
||||
objlist_class::Add((TTableLayer *)((char *)v3 + 42), (void *)v24);
|
||||
}
|
||||
v46 = (struct TPinballTable *)((char *)v46 + 8);
|
||||
@@ -215,12 +215,12 @@ v11 = (float *)v46;
|
||||
}
|
||||
}
|
||||
v25 = *(float *)((char *)v3 + 90);
|
||||
*(_DWORD *)((char *)v3 + 118) = -1;
|
||||
*(DWORD *)((char *)v3 + 118) = -1;
|
||||
v26 = v25;
|
||||
v27 = *(float *)((char *)v3 + 94);
|
||||
*(_DWORD *)((char *)v3 + 114) = (char *)v3 + 5;
|
||||
*(DWORD *)((char *)v3 + 114) = (char *)v3 + 5;
|
||||
v28 = v27;
|
||||
*(_DWORD *)((char *)v3 + 122) = v3;
|
||||
*(DWORD *)((char *)v3 + 122) = v3;
|
||||
edges_insert_square(
|
||||
*(float *)((char *)v3 + 86),
|
||||
*(float *)((char *)v3 + 82),
|
||||
@@ -238,7 +238,7 @@ TZmapList *__thiscall TTableLayer::~TTableLayer(TTableLayer *this)
|
||||
TCollisionComponent *v1; // esi
|
||||
|
||||
v1 = this;
|
||||
*(_DWORD *)this = &TTableLayer::vftable;
|
||||
*(DWORD *)this = &TTableLayer::vftable;
|
||||
if ( edge_manager )
|
||||
TEdgeManager::destroy(edge_manager, 1);
|
||||
return TCollisionComponent::~TCollisionComponent(v1);
|
||||
|
||||
+116
-116
@@ -6,7 +6,7 @@ TTextBox *__thiscall TTextBox::TTextBox(TTextBox *this, struct TPinballTable *a2
|
||||
TTextBox *v3; // esi
|
||||
bool v4; // zf
|
||||
bool v5; // sf
|
||||
signed __int16 *v6; // eax
|
||||
signed int *v6; // eax
|
||||
int v7; // ecx
|
||||
int v8; // ecx
|
||||
|
||||
@@ -14,27 +14,27 @@ 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;
|
||||
*(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 __int16 *)loader_query_iattribute(a3, 1500, &a2);
|
||||
v6 = (signed int *)loader_query_iattribute(a3, 1500, &a2);
|
||||
v7 = *v6;
|
||||
++v6;
|
||||
*(_DWORD *)((char *)v3 + 42) = v7;
|
||||
*(DWORD *)((char *)v3 + 42) = v7;
|
||||
v8 = *v6;
|
||||
++v6;
|
||||
*(_DWORD *)((char *)v3 + 46) = v8;
|
||||
*(_DWORD *)((char *)v3 + 50) = *v6;
|
||||
*(_DWORD *)((char *)v3 + 54) = v6[1];
|
||||
*(DWORD *)((char *)v3 + 46) = v8;
|
||||
*(DWORD *)((char *)v3 + 50) = *v6;
|
||||
*(DWORD *)((char *)v3 + 54) = v6[1];
|
||||
}
|
||||
return v3;
|
||||
}
|
||||
@@ -42,73 +42,73 @@ return v3;
|
||||
// 10253C4: using guessed type struct score_msg_font_type *score_msg_fontp;
|
||||
|
||||
//----- (01014143) --------------------------------------------------------
|
||||
void __usercall TTextBox::Clear(TTextBox *this@<ecx>, int a2@<ebx>)
|
||||
void TTextBox::Clear(TTextBox *this, int a2)
|
||||
{
|
||||
TTextBox *v2; // esi
|
||||
_DWORD *v3; // edx
|
||||
DWORD *v3; // edx
|
||||
int v4; // eax
|
||||
TTextBoxMessage *v5; // ecx
|
||||
int v6; // edi
|
||||
|
||||
v2 = this;
|
||||
v3 = *(_DWORD **)((char *)this + 62);
|
||||
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),
|
||||
*(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));
|
||||
*(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),
|
||||
*(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);
|
||||
*(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;
|
||||
timer_kill(*(DWORD *)((char *)v2 + 58));
|
||||
*(DWORD *)((char *)v2 + 58) = 0;
|
||||
}
|
||||
while ( *(_DWORD *)((char *)v2 + 70) )
|
||||
while ( *(DWORD *)((char *)v2 + 70) )
|
||||
{
|
||||
v5 = *(TTextBoxMessage **)((char *)v2 + 70);
|
||||
v6 = *(_DWORD *)v5;
|
||||
v6 = *(DWORD *)v5;
|
||||
if ( v5 )
|
||||
TTextBoxMessage::destroy(v5, 1);
|
||||
*(_DWORD *)((char *)v2 + 70) = v6;
|
||||
*(DWORD *)((char *)v2 + 70) = v6;
|
||||
}
|
||||
}
|
||||
|
||||
//----- (010141E1) --------------------------------------------------------
|
||||
void __userpurge TTextBox::TimerExpired(int a1@<ebx>, int a2, TTextBox *a3)
|
||||
void TTextBox::TimerExpired(int a1, int a2, TTextBox *a3)
|
||||
{
|
||||
TTextBoxMessage *v3; // ecx
|
||||
int v4; // edi
|
||||
|
||||
v3 = *(TTextBoxMessage **)((char *)a3 + 70);
|
||||
*(_DWORD *)((char *)a3 + 58) = 0;
|
||||
*(DWORD *)((char *)a3 + 58) = 0;
|
||||
if ( v3 )
|
||||
{
|
||||
v4 = *(_DWORD *)v3;
|
||||
v4 = *(DWORD *)v3;
|
||||
TTextBoxMessage::destroy(v3, 1);
|
||||
*(_DWORD *)((char *)a3 + 70) = v4;
|
||||
*(DWORD *)((char *)a3 + 70) = v4;
|
||||
TTextBox::Draw(a3, a1);
|
||||
control_handler(60, a3);
|
||||
}
|
||||
@@ -123,23 +123,23 @@ TTextBoxMessage *v3; // ecx
|
||||
int v4; // edi
|
||||
|
||||
v1 = this;
|
||||
v2 = *(_DWORD *)((char *)this + 58);
|
||||
*(_DWORD *)this = &TTextBox::vftable;
|
||||
v2 = *(DWORD *)((char *)this + 58);
|
||||
*(DWORD *)this = &TTextBox::vftable;
|
||||
if ( v2 )
|
||||
{
|
||||
if ( v2 != -1 )
|
||||
timer_kill(v2);
|
||||
*(_DWORD *)((char *)v1 + 58) = 0;
|
||||
*(DWORD *)((char *)v1 + 58) = 0;
|
||||
}
|
||||
if ( *(_DWORD *)((char *)v1 + 70) )
|
||||
if ( *(DWORD *)((char *)v1 + 70) )
|
||||
{
|
||||
do
|
||||
{
|
||||
v3 = *(TTextBoxMessage **)((char *)v1 + 70);
|
||||
v4 = *(_DWORD *)v3;
|
||||
v4 = *(DWORD *)v3;
|
||||
if ( v3 )
|
||||
TTextBoxMessage::destroy(v3, 1);
|
||||
*(_DWORD *)((char *)v1 + 70) = v4;
|
||||
*(DWORD *)((char *)v1 + 70) = v4;
|
||||
}
|
||||
while ( v4 );
|
||||
}
|
||||
@@ -148,16 +148,16 @@ return TPinballComponent::~TPinballComponent(v1);
|
||||
// 10023B4: using guessed type void *TTextBox::vftable;
|
||||
|
||||
//----- (01014269) --------------------------------------------------------
|
||||
void __usercall TTextBox::Draw(TTextBox *this@<ecx>, int a2@<ebx>)
|
||||
void TTextBox::Draw(TTextBox *this, int a2)
|
||||
{
|
||||
TTextBox *v2; // esi
|
||||
_DWORD *v3; // edx
|
||||
DWORD *v3; // edx
|
||||
float *v4; // edi
|
||||
int v5; // ebx
|
||||
double v6; // st7
|
||||
int v7; // eax
|
||||
float v8; // ST14_4
|
||||
_DWORD *v9; // ecx
|
||||
DWORD *v9; // ecx
|
||||
_BYTE *v10; // ebx
|
||||
int v11; // edi
|
||||
int v12; // eax
|
||||
@@ -165,7 +165,7 @@ int v13; // eax
|
||||
char *v14; // edx
|
||||
char v15; // al
|
||||
int v16; // eax
|
||||
_DWORD *v17; // edi
|
||||
DWORD *v17; // edi
|
||||
int v18; // [esp-10h] [ebp-34h]
|
||||
int v19; // [esp-Ch] [ebp-30h]
|
||||
_BYTE *v20; // [esp+18h] [ebp-Ch]
|
||||
@@ -174,61 +174,61 @@ int i; // [esp+1Ch] [ebp-8h]
|
||||
_BYTE *v23; // [esp+20h] [ebp-4h]
|
||||
|
||||
v2 = this;
|
||||
v3 = *(_DWORD **)((char *)this + 62);
|
||||
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),
|
||||
*(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));
|
||||
*(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),
|
||||
*(DWORD *)((char *)this + 50),
|
||||
*(DWORD *)((char *)this + 54),
|
||||
*(DWORD *)((char *)this + 42),
|
||||
*(DWORD *)((char *)this + 46),
|
||||
0);
|
||||
while ( *(_DWORD *)((char *)v2 + 70) )
|
||||
while ( *(DWORD *)((char *)v2 + 70) )
|
||||
{
|
||||
v4 = *(float **)((char *)v2 + 70);
|
||||
if ( v4[2] == -1.0 )
|
||||
{
|
||||
v5 = *(_DWORD *)v4;
|
||||
if ( !*(_DWORD *)v4 )
|
||||
v5 = *(DWORD *)v4;
|
||||
if ( !*(DWORD *)v4 )
|
||||
{
|
||||
*(_DWORD *)((char *)v2 + 58) = -1;
|
||||
*(DWORD *)((char *)v2 + 58) = -1;
|
||||
LABEL_18:
|
||||
v9 = *(_DWORD **)((char *)v2 + 66);
|
||||
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));
|
||||
*(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),
|
||||
*(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] )
|
||||
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) )
|
||||
if ( !*v10 || i + v9[1] > *(DWORD *)((char *)v2 + 46) + *(DWORD *)((char *)v2 + 54) )
|
||||
break;
|
||||
v11 = 0;
|
||||
v20 = 0;
|
||||
@@ -241,8 +241,8 @@ break;
|
||||
v12 = v9[v16 + 2];
|
||||
if ( v12 )
|
||||
{
|
||||
v13 = *(_DWORD *)(v12 + 12) + *v9 + v11;
|
||||
if ( v13 > *(_DWORD *)((char *)v2 + 50) )
|
||||
v13 = *(DWORD *)(v12 + 12) + *v9 + v11;
|
||||
if ( v13 > *(DWORD *)((char *)v2 + 50) )
|
||||
{
|
||||
if ( v20 )
|
||||
v23 = v20;
|
||||
@@ -260,10 +260,10 @@ v14 = v23;
|
||||
}
|
||||
v15 = *v14;
|
||||
}
|
||||
v21 = *(_DWORD *)((char *)v2 + 42);
|
||||
v21 = *(DWORD *)((char *)v2 + 42);
|
||||
while ( v10 < v23 )
|
||||
{
|
||||
v17 = (_DWORD *)v9[(*v10++ & 0x7F) + 2];
|
||||
v17 = (DWORD *)v9[(*v10++ & 0x7F) + 2];
|
||||
if ( v17 )
|
||||
{
|
||||
v19 = v17[4];
|
||||
@@ -272,7 +272,7 @@ 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);
|
||||
v9 = *(DWORD **)((char *)v2 + 66);
|
||||
v21 += v17[3] + *v9;
|
||||
}
|
||||
}
|
||||
@@ -280,14 +280,14 @@ while ( (*v10 & 0x7F) == 32 )
|
||||
++v10;
|
||||
if ( (*v10 & 0x7F) == 10 )
|
||||
++v10;
|
||||
v9 = *(_DWORD **)((char *)v2 + 66);
|
||||
v9 = *(DWORD **)((char *)v2 + 66);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
v6 = TTextBoxMessage::TimeLeft((TTextBoxMessage *)*(_DWORD *)((char *)v2 + 70));
|
||||
v6 = TTextBoxMessage::TimeLeft((TTextBoxMessage *)*(DWORD *)((char *)v2 + 70));
|
||||
if ( v6 >= -2.0 )
|
||||
{
|
||||
if ( v6 >= 0.25 )
|
||||
@@ -299,27 +299,27 @@ else
|
||||
{
|
||||
v7 = timer_set(0.25, (int)v2, (int)TTextBox::TimerExpired);
|
||||
}
|
||||
*(_DWORD *)((char *)v2 + 58) = v7;
|
||||
*(DWORD *)((char *)v2 + 58) = v7;
|
||||
goto LABEL_18;
|
||||
}
|
||||
v5 = *(_DWORD *)v4;
|
||||
v5 = *(DWORD *)v4;
|
||||
}
|
||||
if ( v4 )
|
||||
TTextBoxMessage::destroy((TTextBoxMessage *)v4, 1);
|
||||
*(_DWORD *)((char *)v2 + 70) = v5;
|
||||
*(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));
|
||||
*(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 __userpurge TTextBox::Display(TTextBox *this@<ecx>, int a2@<ebx>, char *a3, float a4)
|
||||
void TTextBox::Display(TTextBox *this, int a2, char *a3, float a4)
|
||||
{
|
||||
TTextBox *v4; // esi
|
||||
const char **v5; // ecx
|
||||
@@ -333,10 +333,10 @@ bool v11; // zf
|
||||
v4 = this;
|
||||
if ( a3 )
|
||||
{
|
||||
if ( !*(_DWORD *)((char *)this + 70)
|
||||
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 )
|
||||
if ( *(DWORD *)((char *)v4 + 58) == -1 )
|
||||
TTextBox::Clear(v4, a2);
|
||||
v9 = (TTextBoxMessage *)operator new(0x10u);
|
||||
if ( v9 )
|
||||
@@ -345,14 +345,14 @@ else
|
||||
v10 = 0;
|
||||
if ( v10 )
|
||||
{
|
||||
if ( *((_DWORD *)v10 + 1) )
|
||||
if ( *((DWORD *)v10 + 1) )
|
||||
{
|
||||
if ( *(_DWORD *)((char *)v4 + 70) )
|
||||
**(_DWORD **)((char *)v4 + 74) = v10;
|
||||
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;
|
||||
*(DWORD *)((char *)v4 + 70) = v10;
|
||||
v11 = *(DWORD *)((char *)v4 + 58) == 0;
|
||||
*(DWORD *)((char *)v4 + 74) = v10;
|
||||
if ( v11 )
|
||||
TTextBox::Draw(v4, a2);
|
||||
}
|
||||
@@ -365,15 +365,15 @@ TTextBoxMessage::destroy(v10, 1);
|
||||
else
|
||||
{
|
||||
TTextBoxMessage::Refresh((TTextBoxMessage *)v5, a4);
|
||||
if ( *(_DWORD *)((char *)v4 + 74) == *(_DWORD *)((char *)v4 + 70) )
|
||||
if ( *(DWORD *)((char *)v4 + 74) == *(DWORD *)((char *)v4 + 70) )
|
||||
{
|
||||
v8 = *(_DWORD *)((char *)v4 + 58);
|
||||
v8 = *(DWORD *)((char *)v4 + 58);
|
||||
if ( v8 && v8 != -1 )
|
||||
timer_kill(*(_DWORD *)((char *)v4 + 58));
|
||||
timer_kill(*(DWORD *)((char *)v4 + 58));
|
||||
if ( a4 == -1.0 )
|
||||
*(_DWORD *)((char *)v4 + 58) = -1;
|
||||
*(DWORD *)((char *)v4 + 58) = -1;
|
||||
else
|
||||
*(_DWORD *)((char *)v4 + 58) = timer_set(a4, (int)v4, (int)TTextBox::TimerExpired);
|
||||
*(DWORD *)((char *)v4 + 58) = timer_set(a4, (int)v4, (int)TTextBox::TimerExpired);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -392,7 +392,7 @@ return v2;
|
||||
}
|
||||
|
||||
//----- (01019168) --------------------------------------------------------
|
||||
int __stdcall TTextBox::Message(int a2, float a3)
|
||||
int TTextBox::Message(int a2, float a3)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -11,13 +11,13 @@
|
||||
struct TTextBox;
|
||||
|
||||
TTextBox* __thiscall TTextBox::TTextBox(TTextBox* this, struct TPinballTable* a2, int a3);
|
||||
// void __usercall TTextBox::Clear(TTextBox *this@<ecx>, int a2@<ebx>);
|
||||
// void __userpurge TTextBox::TimerExpired(int a1@<ebx>, int a2, TTextBox *a3);
|
||||
// void TTextBox::Clear(TTextBox *this, int a2);
|
||||
// void TTextBox::TimerExpired(int a1, int a2, TTextBox *a3);
|
||||
TZmapList* __thiscall TTextBox::~TTextBox(TTextBox* this);
|
||||
// void __usercall TTextBox::Draw(TTextBox *this@<ecx>, int a2@<ebx>);
|
||||
// void __userpurge TTextBox::Display(TTextBox *this@<ecx>, int a2@<ebx>, char *a3, float a4);
|
||||
// void TTextBox::Draw(TTextBox *this, int a2);
|
||||
// void TTextBox::Display(TTextBox *this, int a2, char *a3, float a4);
|
||||
TTextBox* __thiscall TTextBox::destroy(TTextBox *this, char a2);
|
||||
int __stdcall TTextBox::Message(int a2, float a3);
|
||||
int TTextBox::Message(int a2, float a3);
|
||||
|
||||
void* TTextBox::vftable = &TTextBox::Message; // weak
|
||||
|
||||
|
||||
@@ -7,14 +7,14 @@ TTextBoxMessage *v3; // esi
|
||||
char *v4; // edx
|
||||
|
||||
v3 = this;
|
||||
*(_DWORD *)this = 0;
|
||||
*(DWORD *)this = 0;
|
||||
*((float *)this + 2) = a3;
|
||||
*((_DWORD *)this + 3) = time_ticks - (unsigned __int64)(signed __int64)(a3 * -1000.0);
|
||||
*((DWORD *)this + 3) = time_ticks - (unsigned __int64)(signed __int64)(a3 * -1000.0);
|
||||
if ( a2 )
|
||||
*((_DWORD *)this + 1) = memoryallocate(strlen(a2) + 1);
|
||||
*((DWORD *)this + 1) = memoryallocate(strlen(a2) + 1);
|
||||
else
|
||||
*((_DWORD *)this + 1) = 0;
|
||||
v4 = (char *)*((_DWORD *)v3 + 1);
|
||||
*((DWORD *)this + 1) = 0;
|
||||
v4 = (char *)*((DWORD *)v3 + 1);
|
||||
if ( v4 )
|
||||
strcpy(v4, a2);
|
||||
return v3;
|
||||
@@ -24,7 +24,7 @@ return v3;
|
||||
//----- (01013B60) --------------------------------------------------------
|
||||
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;
|
||||
|
||||
@@ -32,7 +32,7 @@ return (double)(*((_DWORD *)this + 3) - time_ticks) * 0.001;
|
||||
void __thiscall TTextBoxMessage::Refresh(TTextBoxMessage *this, float a2)
|
||||
{
|
||||
*((float *)this + 2) = a2;
|
||||
*((_DWORD *)this + 3) = time_ticks - (unsigned __int64)(signed __int64)(a2 * -1000.0);
|
||||
*((DWORD *)this + 3) = time_ticks - (unsigned __int64)(signed __int64)(a2 * -1000.0);
|
||||
}
|
||||
// 1024F84: using guessed type int time_ticks;
|
||||
|
||||
@@ -42,8 +42,8 @@ TTextBoxMessage *__thiscall TTextBoxMessage::destroy(TTextBoxMessage *this, char
|
||||
TTextBoxMessage *v2; // esi
|
||||
|
||||
v2 = this;
|
||||
if ( *((_DWORD *)this + 1) )
|
||||
memoryfree(*((_DWORD *)this + 1));
|
||||
if ( *((DWORD *)this + 1) )
|
||||
memoryfree(*((DWORD *)this + 1));
|
||||
if ( a2 & 1 )
|
||||
operator delete((void *)v2);
|
||||
return v2;
|
||||
|
||||
+10
-10
@@ -1,9 +1,9 @@
|
||||
#include "../../pinball.h"
|
||||
|
||||
//----- (0101798C) --------------------------------------------------------
|
||||
void __stdcall TTimer::TimerExpired(int a1, struct TPinballComponent *a2)
|
||||
void TTimer::TimerExpired(int a1, struct TPinballComponent *a2)
|
||||
{
|
||||
*(_DWORD *)((char *)a2 + 42) = 0;
|
||||
*(DWORD *)((char *)a2 + 42) = 0;
|
||||
control_handler(60, a2);
|
||||
}
|
||||
|
||||
@@ -15,16 +15,16 @@ TTimer *v3; // esi
|
||||
v3 = this;
|
||||
if ( a2 == 59 )
|
||||
{
|
||||
if ( *(_DWORD *)((char *)this + 42) )
|
||||
timer_kill(*(_DWORD *)((char *)this + 42));
|
||||
*(_DWORD *)((char *)v3 + 42) = timer_set(a3, (int)v3, (int)TTimer::TimerExpired);
|
||||
if ( *(DWORD *)((char *)this + 42) )
|
||||
timer_kill(*(DWORD *)((char *)this + 42));
|
||||
*(DWORD *)((char *)v3 + 42) = timer_set(a3, (int)v3, (int)TTimer::TimerExpired);
|
||||
}
|
||||
else if ( a2 == 1011 || a2 == 1022 || a2 == 1024 )
|
||||
{
|
||||
if ( *(_DWORD *)((char *)this + 42) )
|
||||
if ( *(DWORD *)((char *)this + 42) )
|
||||
{
|
||||
timer_kill(*(_DWORD *)((char *)this + 42));
|
||||
*(_DWORD *)((char *)v3 + 42) = 0;
|
||||
timer_kill(*(DWORD *)((char *)this + 42));
|
||||
*(DWORD *)((char *)v3 + 42) = 0;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
@@ -37,8 +37,8 @@ TTimer *v3; // esi
|
||||
|
||||
v3 = this;
|
||||
TPinballComponent::TPinballComponent(this, a2, a3, 1);
|
||||
*(_DWORD *)((char *)v3 + 42) = 0;
|
||||
*(_DWORD *)v3 = &TTimer::vftable;
|
||||
*(DWORD *)((char *)v3 + 42) = 0;
|
||||
*(DWORD *)v3 = &TTimer::vftable;
|
||||
return v3;
|
||||
}
|
||||
// 10027BC: using guessed type void *TTimer::vftable;
|
||||
@@ -10,7 +10,7 @@
|
||||
/* 129 */
|
||||
struct TTimer;
|
||||
|
||||
void __stdcall TTimer::TimerExpired(int, struct TPinballComponent*); // idb
|
||||
void TTimer::TimerExpired(int, struct TPinballComponent*); // idb
|
||||
int __thiscall TTimer::Message(TTimer* this, int, float); // idb
|
||||
TTimer* __thiscall TTimer::TTimer(TTimer* this, struct TPinballTable* a2, int a3);
|
||||
|
||||
|
||||
@@ -9,12 +9,12 @@ double v7; // st7
|
||||
v6 = this;
|
||||
*(float *)((char *)a2 + 42) = *(float *)a3;
|
||||
v7 = *(float *)((char *)a2 + 70);
|
||||
*(_DWORD *)((char *)a2 + 46) = *((_DWORD *)a3 + 1);
|
||||
*(DWORD *)((char *)a2 + 46) = *((DWORD *)a3 + 1);
|
||||
*(float *)((char *)a2 + 70) = v7 - a5;
|
||||
TBall::not_again(a2, a6);
|
||||
if ( !*(_DWORD *)(*(_DWORD *)((char *)v6 + 30) + 370) )
|
||||
if ( !*(DWORD *)(*(DWORD *)((char *)v6 + 30) + 370) )
|
||||
{
|
||||
loader_play_sound(*(_DWORD *)((char *)v6 + 70));
|
||||
loader_play_sound(*(DWORD *)((char *)v6 + 70));
|
||||
control_handler(63, v6);
|
||||
}
|
||||
}
|
||||
@@ -26,7 +26,7 @@ TTripwire *v3; // esi
|
||||
|
||||
v3 = this;
|
||||
TRollover::TRollover(this, a2, a3, 1);
|
||||
*(_DWORD *)v3 = &TTripwire::vftable;
|
||||
*(DWORD *)v3 = &TTripwire::vftable;
|
||||
return v3;
|
||||
}
|
||||
// 100264C: using guessed type void *TTripwire::vftable;
|
||||
+18
-18
@@ -1,11 +1,11 @@
|
||||
#include "TWall.h"
|
||||
|
||||
//----- (01015ACE) --------------------------------------------------------
|
||||
void __stdcall TWall::TimerExpired(int a1, void *a2)
|
||||
void TWall::TimerExpired(int a1, void *a2)
|
||||
{
|
||||
render_sprite_set_bitmap(*(_DWORD **)((char *)a2 + 26), 0);
|
||||
*(_DWORD *)((char *)a2 + 78) = 0;
|
||||
*(_DWORD *)((char *)a2 + 6) = 0;
|
||||
render_sprite_set_bitmap(*(DWORD **)((char *)a2 + 26), 0);
|
||||
*(DWORD *)((char *)a2 + 78) = 0;
|
||||
*(DWORD *)((char *)a2 + 6) = 0;
|
||||
}
|
||||
|
||||
//----- (01015AF3) --------------------------------------------------------
|
||||
@@ -14,10 +14,10 @@ int __thiscall TWall::Message(TWall *this, int a2, float a3)
|
||||
TWall *v3; // esi
|
||||
|
||||
v3 = this;
|
||||
if ( a2 == 1024 && *(_DWORD *)((char *)this + 78) )
|
||||
if ( a2 == 1024 && *(DWORD *)((char *)this + 78) )
|
||||
{
|
||||
timer_kill(*(_DWORD *)((char *)this + 78));
|
||||
TWall::TimerExpired(*(_DWORD *)((char *)v3 + 78), (void *)v3);
|
||||
timer_kill(*(DWORD *)((char *)this + 78));
|
||||
TWall::TimerExpired(*(DWORD *)((char *)v3 + 78), (void *)v3);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -30,7 +30,7 @@ int result; // eax
|
||||
if ( a2 >= 1 )
|
||||
result = 0;
|
||||
else
|
||||
result = *(_DWORD *)((char *)this + 4 * a2 + 86);
|
||||
result = *(DWORD *)((char *)this + 4 * a2 + 86);
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -38,7 +38,7 @@ return result;
|
||||
void __thiscall TWall::put_scoring(TWall *this, int a2, int a3)
|
||||
{
|
||||
if ( a2 < 1 )
|
||||
*(_DWORD *)((char *)this + 4 * a2 + 86) = a3;
|
||||
*(DWORD *)((char *)this + 4 * a2 + 86) = a3;
|
||||
}
|
||||
|
||||
//----- (01017FDE) --------------------------------------------------------
|
||||
@@ -49,10 +49,10 @@ TWall *v6; // esi
|
||||
v6 = this;
|
||||
if ( TCollisionComponent::DefaultCollision(this, a2, a3, a4) )
|
||||
{
|
||||
if ( *(_DWORD *)((char *)v6 + 82) )
|
||||
if ( *(DWORD *)((char *)v6 + 82) )
|
||||
{
|
||||
render_sprite_set_bitmap(*(_DWORD **)((char *)v6 + 26), *(_DWORD *)((char *)v6 + 82));
|
||||
*(_DWORD *)((char *)v6 + 78) = timer_set(0.1, (int)v6, (int)TWall::TimerExpired);
|
||||
render_sprite_set_bitmap(*(DWORD **)((char *)v6 + 26), *(DWORD *)((char *)v6 + 82));
|
||||
*(DWORD *)((char *)v6 + 78) = timer_set(0.1, (int)v6, (int)TWall::TimerExpired);
|
||||
}
|
||||
control_handler(63, v6);
|
||||
}
|
||||
@@ -62,19 +62,19 @@ control_handler(63, v6);
|
||||
TWall *__thiscall TWall::TWall(TWall *this, struct TPinballTable *a2, int a3)
|
||||
{
|
||||
TWall *v3; // esi
|
||||
_DWORD *v4; // eax
|
||||
DWORD *v4; // eax
|
||||
int v5; // eax
|
||||
|
||||
v3 = this;
|
||||
TCollisionComponent::TCollisionComponent(this, a2, a3, 1);
|
||||
v4 = *(_DWORD **)((char *)v3 + 26);
|
||||
*(_DWORD *)v3 = &TWall::vftable;
|
||||
v4 = *(DWORD **)((char *)v3 + 26);
|
||||
*(DWORD *)v3 = &TWall::vftable;
|
||||
if ( v4 )
|
||||
render_sprite_set_bitmap(v4, 0);
|
||||
v5 = *(_DWORD *)((char *)v3 + 34);
|
||||
v5 = *(DWORD *)((char *)v3 + 34);
|
||||
if ( v5 )
|
||||
*(_DWORD *)((char *)v3 + 82) = *(_DWORD *)(*(_DWORD *)(v5 + 4) + 8);
|
||||
*(_DWORD *)((char *)v3 + 78) = 0;
|
||||
*(DWORD *)((char *)v3 + 82) = *(DWORD *)(*(DWORD *)(v5 + 4) + 8);
|
||||
*(DWORD *)((char *)v3 + 78) = 0;
|
||||
return v3;
|
||||
}
|
||||
// 1002508: using guessed type void *TWall::vftable;
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
/* 102 */
|
||||
struct TWall;
|
||||
|
||||
void __stdcall TWall::TimerExpired(int, void*); // idb
|
||||
void TWall::TimerExpired(int, void*); // idb
|
||||
int __thiscall TWall::Message(TWall* this, int, float); // idb
|
||||
int __thiscall TWall::get_scoring(TWall* this, int); // idb
|
||||
void __thiscall TWall::put_scoring(TWall* this, int, int); // idb
|
||||
|
||||
@@ -15,7 +15,7 @@ TZmapList *__thiscall TZmapList::destroy(TZmapList *this, char a2)
|
||||
TZmapList *v2; // esi
|
||||
|
||||
v2 = this;
|
||||
objlist_destroy(*((_DWORD *)this + 1));
|
||||
objlist_destroy(*((DWORD *)this + 1));
|
||||
if ( a2 & 1 )
|
||||
operator delete((void *)v2);
|
||||
return v2;
|
||||
|
||||
+192
-192
@@ -10,7 +10,7 @@ TZmapList *__thiscall TLightGroup::~TLightGroup(TLightGroup *this)
|
||||
TLightGroup *v1; // esi
|
||||
|
||||
v1 = this;
|
||||
objlist_destroy(*(_DWORD *)((char *)this + 46));
|
||||
objlist_destroy(*(DWORD *)((char *)this + 46));
|
||||
return TPinballComponent::~TPinballComponent(v1);
|
||||
}
|
||||
|
||||
@@ -22,31 +22,31 @@ void __thiscall TLightGroup::Reset(TLightGroup *this)
|
||||
int v3; // eax
|
||||
|
||||
v1 = this;
|
||||
if ( *(_DWORD *)((char *)this + 70) )
|
||||
timer_kill(*(_DWORD *)((char *)this + 70));
|
||||
v2 = *(_DWORD *)((char *)v1 + 66);
|
||||
*(_DWORD *)((char *)v1 + 70) = 0;
|
||||
if ( *(DWORD *)((char *)this + 70) )
|
||||
timer_kill(*(DWORD *)((char *)this + 70));
|
||||
v2 = *(DWORD *)((char *)v1 + 66);
|
||||
*(DWORD *)((char *)v1 + 70) = 0;
|
||||
if ( v2 )
|
||||
timer_kill(v2);
|
||||
v3 = *(_DWORD *)((char *)v1 + 54);
|
||||
*(_DWORD *)((char *)v1 + 66) = 0;
|
||||
*(_DWORD *)((char *)v1 + 58) = 0;
|
||||
*(_DWORD *)((char *)v1 + 62) = 0;
|
||||
*(_DWORD *)((char *)v1 + 50) = v3;
|
||||
v3 = *(DWORD *)((char *)v1 + 54);
|
||||
*(DWORD *)((char *)v1 + 66) = 0;
|
||||
*(DWORD *)((char *)v1 + 58) = 0;
|
||||
*(DWORD *)((char *)v1 + 62) = 0;
|
||||
*(DWORD *)((char *)v1 + 50) = v3;
|
||||
}
|
||||
|
||||
//----- (0100A027) --------------------------------------------------------
|
||||
void __stdcall TLightGroup::TimerExpired(int a1, void *a2)
|
||||
void TLightGroup::TimerExpired(int a1, void *a2)
|
||||
{
|
||||
double v2; // st7
|
||||
void (__stdcall **v3)(_DWORD, _DWORD); // eax
|
||||
void (**v3)(DWORD, DWORD); // eax
|
||||
float v4; // ST04_4
|
||||
|
||||
v2 = *(float *)((char *)a2 + 50);
|
||||
v3 = *(void (__stdcall ***)(_DWORD, _DWORD))a2;
|
||||
*(_DWORD *)((char *)a2 + 70) = 0;
|
||||
v3 = *(void (***)(DWORD, DWORD))a2;
|
||||
*(DWORD *)((char *)a2 + 70) = 0;
|
||||
v4 = v2;
|
||||
(*v3)(*(_DWORD *)((char *)a2 + 58), LODWORD(v4));
|
||||
(*v3)(*(DWORD *)((char *)a2 + 58), LODWORD(v4));
|
||||
}
|
||||
|
||||
//----- (0100A04A) --------------------------------------------------------
|
||||
@@ -55,23 +55,23 @@ void __thiscall TLightGroup::reschedule_animation(TLightGroup *this, float a2)
|
||||
TLightGroup *v2; // esi
|
||||
|
||||
v2 = this;
|
||||
if ( *(_DWORD *)((char *)this + 70) )
|
||||
timer_kill(*(_DWORD *)((char *)this + 70));
|
||||
*(_DWORD *)((char *)v2 + 70) = 0;
|
||||
if ( *(DWORD *)((char *)this + 70) )
|
||||
timer_kill(*(DWORD *)((char *)this + 70));
|
||||
*(DWORD *)((char *)v2 + 70) = 0;
|
||||
if ( a2 > 0.0 )
|
||||
{
|
||||
*(float *)((char *)v2 + 50) = a2;
|
||||
LABEL_7:
|
||||
*(_DWORD *)((char *)v2 + 70) = timer_set(*(float *)((char *)v2 + 50), (int)v2, (int)TLightGroup::TimerExpired);
|
||||
*(DWORD *)((char *)v2 + 70) = timer_set(*(float *)((char *)v2 + 50), (int)v2, (int)TLightGroup::TimerExpired);
|
||||
return;
|
||||
}
|
||||
if ( a2 < 0.0 )
|
||||
{
|
||||
*(_DWORD *)((char *)v2 + 50) = *(_DWORD *)((char *)v2 + 54);
|
||||
*(DWORD *)((char *)v2 + 50) = *(DWORD *)((char *)v2 + 54);
|
||||
goto LABEL_7;
|
||||
}
|
||||
*(_DWORD *)((char *)v2 + 58) = 0;
|
||||
*(_DWORD *)((char *)v2 + 62) = 0;
|
||||
*(DWORD *)((char *)v2 + 58) = 0;
|
||||
*(DWORD *)((char *)v2 + 62) = 0;
|
||||
}
|
||||
|
||||
//----- (0100A0B4) --------------------------------------------------------
|
||||
@@ -82,13 +82,13 @@ int __thiscall TLightGroup::next_light_up(TLightGroup *this)
|
||||
int result; // eax
|
||||
int v4; // ecx
|
||||
|
||||
v1 = *(_DWORD *)((char *)this + 46);
|
||||
v2 = *(_DWORD *)(v1 + 4);
|
||||
v1 = *(DWORD *)((char *)this + 46);
|
||||
v2 = *(DWORD *)(v1 + 4);
|
||||
result = 0;
|
||||
if ( v2 <= 0 )
|
||||
return -1;
|
||||
v4 = v1 + 8;
|
||||
while ( *(_DWORD *)(*(_DWORD *)v4 + 78) )
|
||||
while ( *(DWORD *)(*(DWORD *)v4 + 78) )
|
||||
{
|
||||
++result;
|
||||
v4 += 4;
|
||||
@@ -105,12 +105,12 @@ int __thiscall TLightGroup::next_light_down(TLightGroup *this)
|
||||
int result; // eax
|
||||
int v3; // ecx
|
||||
|
||||
v1 = *(_DWORD *)((char *)this + 46);
|
||||
result = *(_DWORD *)(v1 + 4) - 1;
|
||||
v1 = *(DWORD *)((char *)this + 46);
|
||||
result = *(DWORD *)(v1 + 4) - 1;
|
||||
if ( result < 0 )
|
||||
return -1;
|
||||
v3 = v1 + 4 * result + 8;
|
||||
while ( !*(_DWORD *)(*(_DWORD *)v3 + 78) )
|
||||
while ( !*(DWORD *)(*(DWORD *)v3 + 78) )
|
||||
{
|
||||
--result;
|
||||
v3 -= 4;
|
||||
@@ -128,21 +128,21 @@ void __thiscall TLightGroup::start_animation(TLightGroup *this)
|
||||
int v3; // esi
|
||||
int v4; // ebx
|
||||
int v5; // ecx
|
||||
void (__stdcall **v6)(signed int, float); // eax
|
||||
void (**v6)(signed int, float); // eax
|
||||
float v7; // [esp+0h] [ebp-10h]
|
||||
|
||||
v1 = this;
|
||||
v2 = *(_DWORD *)(*(_DWORD *)((char *)this + 46) + 4) - 1;
|
||||
v2 = *(DWORD *)(*(DWORD *)((char *)this + 46) + 4) - 1;
|
||||
if ( v2 >= 0 )
|
||||
{
|
||||
v3 = 4 * v2 + 8;
|
||||
v4 = *(_DWORD *)(*(_DWORD *)((char *)this + 46) + 4);
|
||||
v4 = *(DWORD *)(*(DWORD *)((char *)this + 46) + 4);
|
||||
do
|
||||
{
|
||||
v5 = *(_DWORD *)(v3 + *(_DWORD *)((char *)v1 + 46));
|
||||
v6 = *(void (__stdcall ***)(signed int, float))v5;
|
||||
v5 = *(DWORD *)(v3 + *(DWORD *)((char *)v1 + 46));
|
||||
v6 = *(void (***)(signed int, float))v5;
|
||||
v7 = 0.0;
|
||||
if ( *(_DWORD *)(v5 + 78) )
|
||||
if ( *(DWORD *)(v5 + 78) )
|
||||
(*v6)(9, COERCE_FLOAT(LODWORD(v7)));
|
||||
else
|
||||
(*v6)(8, COERCE_FLOAT(LODWORD(v7)));
|
||||
@@ -154,9 +154,9 @@ void __thiscall TLightGroup::start_animation(TLightGroup *this)
|
||||
}
|
||||
|
||||
//----- (0100A149) --------------------------------------------------------
|
||||
void __stdcall TLightGroup::NotifyTimerExpired(int a1, void *a2)
|
||||
void TLightGroup::NotifyTimerExpired(int a1, void *a2)
|
||||
{
|
||||
*(_DWORD *)((char *)a2 + 66) = 0;
|
||||
*(DWORD *)((char *)a2 + 66) = 0;
|
||||
control_handler(61, (struct TPinballComponent *)a2);
|
||||
}
|
||||
|
||||
@@ -191,20 +191,20 @@ int v27; // ecx
|
||||
int j; // ebx
|
||||
double v29; // st7
|
||||
int v30; // eax
|
||||
void (__stdcall ***v31)(int, _DWORD); // ecx
|
||||
void (***v31)(int, DWORD); // ecx
|
||||
int v32; // eax
|
||||
int v33; // ecx
|
||||
signed int v34; // ebx
|
||||
float v35; // ST10_4
|
||||
int v36; // eax
|
||||
int v37; // eax
|
||||
void (__thiscall ***v38)(_DWORD, signed int, _DWORD); // edi
|
||||
void (__thiscall **v39)(_DWORD, signed int, _DWORD); // ST24_4
|
||||
void (__thiscall ***v38)(DWORD, signed int, DWORD); // edi
|
||||
void (__thiscall **v39)(DWORD, signed int, DWORD); // ST24_4
|
||||
float v40; // ST10_4
|
||||
int v41; // eax
|
||||
int v42; // eax
|
||||
void (__thiscall ***v43)(_DWORD, signed int, _DWORD); // edi
|
||||
void (__thiscall **v44)(_DWORD, signed int, _DWORD); // ebx
|
||||
void (__thiscall ***v43)(DWORD, signed int, DWORD); // edi
|
||||
void (__thiscall **v44)(DWORD, signed int, DWORD); // ebx
|
||||
float v45; // ST10_4
|
||||
int v46; // ecx
|
||||
int v47; // ebx
|
||||
@@ -241,7 +241,7 @@ int v77; // eax
|
||||
int v78; // eax
|
||||
int v79; // edi
|
||||
int v80; // ecx
|
||||
_DWORD *v81; // eax
|
||||
DWORD *v81; // eax
|
||||
char *v82; // eax
|
||||
char *v83; // eax
|
||||
int v84; // [esp+20h] [ebp-14h]
|
||||
@@ -275,16 +275,16 @@ if ( a2 != 1011 )
|
||||
{
|
||||
if ( a2 == 1020 )
|
||||
{
|
||||
v82 = (char *)this + 16 * *(_DWORD *)(*(_DWORD *)((char *)this + 30) + 218);
|
||||
*(_DWORD *)(v82 + 74) = *(_DWORD *)((char *)this + 6);
|
||||
*(_DWORD *)(v82 + 78) = *(_DWORD *)((char *)this + 58);
|
||||
*(_DWORD *)(v82 + 82) = *(_DWORD *)((char *)this + 50);
|
||||
(*(void (**)(void))(*(_DWORD *)this + 20))();
|
||||
v82 = (char *)this + 16 * *(DWORD *)(*(DWORD *)((char *)this + 30) + 218);
|
||||
*(DWORD *)(v82 + 74) = *(DWORD *)((char *)this + 6);
|
||||
*(DWORD *)(v82 + 78) = *(DWORD *)((char *)this + 58);
|
||||
*(DWORD *)(v82 + 82) = *(DWORD *)((char *)this + 50);
|
||||
(*(void (**)(void))(*(DWORD *)this + 20))();
|
||||
v83 = (char *)v4 + 16 * (unsigned __int64)(signed __int64)_floor(a3);
|
||||
*(_DWORD *)((char *)v4 + 6) = *(_DWORD *)(v83 + 74);
|
||||
*(_DWORD *)((char *)v4 + 58) = *(_DWORD *)(v83 + 78);
|
||||
v25 = *(_DWORD *)((char *)v4 + 6) == 0;
|
||||
*(_DWORD *)((char *)v4 + 50) = *(_DWORD *)(v83 + 82);
|
||||
*(DWORD *)((char *)v4 + 6) = *(DWORD *)(v83 + 74);
|
||||
*(DWORD *)((char *)v4 + 58) = *(DWORD *)(v83 + 78);
|
||||
v25 = *(DWORD *)((char *)v4 + 6) == 0;
|
||||
*(DWORD *)((char *)v4 + 50) = *(DWORD *)(v83 + 82);
|
||||
if ( !v25 )
|
||||
TLightGroup::TimerExpired(0, (void *)v4);
|
||||
}
|
||||
@@ -292,33 +292,33 @@ else if ( a2 != 1022 )
|
||||
{
|
||||
if ( a2 == 1024 )
|
||||
{
|
||||
(*(void (**)(void))(*(_DWORD *)this + 20))();
|
||||
(*(void (**)(void))(*(DWORD *)this + 20))();
|
||||
v80 = 0;
|
||||
if ( *(_DWORD *)(*(_DWORD *)((char *)v4 + 30) + 214) > 0 )
|
||||
if ( *(DWORD *)(*(DWORD *)((char *)v4 + 30) + 214) > 0 )
|
||||
{
|
||||
v81 = (_DWORD *)((char *)v4 + 78);
|
||||
v81 = (DWORD *)((char *)v4 + 78);
|
||||
do
|
||||
{
|
||||
*(v81 - 1) = *(_DWORD *)((char *)v4 + 6);
|
||||
*v81 = *(_DWORD *)((char *)v4 + 58);
|
||||
v81[1] = *(_DWORD *)((char *)v4 + 50);
|
||||
*(v81 - 1) = *(DWORD *)((char *)v4 + 6);
|
||||
*v81 = *(DWORD *)((char *)v4 + 58);
|
||||
v81[1] = *(DWORD *)((char *)v4 + 50);
|
||||
++v80;
|
||||
v81 += 4;
|
||||
}
|
||||
while ( v80 < *(_DWORD *)(*(_DWORD *)((char *)v4 + 30) + 214) );
|
||||
while ( v80 < *(DWORD *)(*(DWORD *)((char *)v4 + 30) + 214) );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
LABEL_145:
|
||||
v78 = *(_DWORD *)(*(_DWORD *)((char *)this + 46) + 4) - 1;
|
||||
v78 = *(DWORD *)(*(DWORD *)((char *)this + 46) + 4) - 1;
|
||||
if ( v78 >= 0 )
|
||||
{
|
||||
v79 = 4 * v78 + 8;
|
||||
v102 = *(_DWORD *)(*(_DWORD *)((char *)this + 46) + 4);
|
||||
v102 = *(DWORD *)(*(DWORD *)((char *)this + 46) + 4);
|
||||
do
|
||||
{
|
||||
(***(void (__stdcall ****)(int, _DWORD))(v79 + *(_DWORD *)((char *)v4 + 46)))(v3, LODWORD(a3));
|
||||
(***(void (****)(int, DWORD))(v79 + *(DWORD *)((char *)v4 + 46)))(v3, LODWORD(a3));
|
||||
v79 -= 4;
|
||||
--v102;
|
||||
}
|
||||
@@ -333,112 +333,112 @@ else if ( a2 < 1008 )
|
||||
switch ( a2 )
|
||||
{
|
||||
case 24:
|
||||
v10 = *(_DWORD *)((char *)this + 46);
|
||||
v11 = *(_DWORD *)(v10 + 4);
|
||||
v12 = *(_DWORD *)(v10 + 4 * v11 + 4);
|
||||
v10 = *(DWORD *)((char *)this + 46);
|
||||
v11 = *(DWORD *)(v10 + 4);
|
||||
v12 = *(DWORD *)(v10 + 4 * v11 + 4);
|
||||
v90 = v11;
|
||||
v95 = v12;
|
||||
if ( *(_DWORD *)(v12 + 82) || *(_DWORD *)(v12 + 90) || *(_DWORD *)(v12 + 86) )
|
||||
if ( *(DWORD *)(v12 + 82) || *(DWORD *)(v12 + 90) || *(DWORD *)(v12 + 86) )
|
||||
return 0;
|
||||
if ( *(_DWORD *)((char *)v4 + 58) )
|
||||
if ( *(DWORD *)((char *)v4 + 58) )
|
||||
{
|
||||
TLightGroup::Message(v4, 34, 0.0);
|
||||
v12 = v95;
|
||||
v11 = v90;
|
||||
}
|
||||
*(_DWORD *)((char *)v4 + 62) = 1;
|
||||
*(_DWORD *)((char *)v4 + 58) = v3;
|
||||
v89 = *(_DWORD *)(v12 + 6);
|
||||
v96 = *(_DWORD *)(v12 + 78);
|
||||
for ( i = v11 - 1; i > 0; *(_DWORD *)(v14 + 6) = *(_DWORD *)(v15 + 6) )
|
||||
*(DWORD *)((char *)v4 + 62) = 1;
|
||||
*(DWORD *)((char *)v4 + 58) = v3;
|
||||
v89 = *(DWORD *)(v12 + 6);
|
||||
v96 = *(DWORD *)(v12 + 78);
|
||||
for ( i = v11 - 1; i > 0; *(DWORD *)(v14 + 6) = *(DWORD *)(v15 + 6) )
|
||||
{
|
||||
v13 = *(_DWORD *)((char *)v4 + 46);
|
||||
v14 = *(_DWORD *)(4 * i + v13 + 8);
|
||||
v15 = *(_DWORD *)(4 * i + v13 + 4);
|
||||
(**(void (__thiscall ***)(int, bool, _DWORD))v14)(v14, *(_DWORD *)(v15 + 78) != 0, 0.0);
|
||||
v13 = *(DWORD *)((char *)v4 + 46);
|
||||
v14 = *(DWORD *)(4 * i + v13 + 8);
|
||||
v15 = *(DWORD *)(4 * i + v13 + 4);
|
||||
(**(void (__thiscall ***)(int, bool, DWORD))v14)(v14, *(DWORD *)(v15 + 78) != 0, 0.0);
|
||||
--i;
|
||||
}
|
||||
v16 = *(_DWORD *)(*(_DWORD *)((char *)v4 + 46) + 8);
|
||||
v16 = *(DWORD *)(*(DWORD *)((char *)v4 + 46) + 8);
|
||||
goto LABEL_19;
|
||||
case 25:
|
||||
v17 = *(_DWORD *)((char *)this + 46);
|
||||
v18 = *(_DWORD *)(v17 + 4);
|
||||
v19 = 4 * *(_DWORD *)(v17 + 4);
|
||||
v20 = *(_DWORD *)(v19 + v17 + 4);
|
||||
v17 = *(DWORD *)((char *)this + 46);
|
||||
v18 = *(DWORD *)(v17 + 4);
|
||||
v19 = 4 * *(DWORD *)(v17 + 4);
|
||||
v20 = *(DWORD *)(v19 + v17 + 4);
|
||||
v92 = v18;
|
||||
v84 = v19;
|
||||
if ( *(_DWORD *)(v20 + 82) || *(_DWORD *)(v20 + 90) || *(_DWORD *)(v20 + 86) )
|
||||
if ( *(DWORD *)(v20 + 82) || *(DWORD *)(v20 + 90) || *(DWORD *)(v20 + 86) )
|
||||
return 0;
|
||||
if ( *(_DWORD *)((char *)v4 + 58) )
|
||||
if ( *(DWORD *)((char *)v4 + 58) )
|
||||
{
|
||||
TLightGroup::Message(v4, 34, 0.0);
|
||||
v18 = v92;
|
||||
}
|
||||
v21 = *(_DWORD *)(*(_DWORD *)((char *)v4 + 46) + 8);
|
||||
*(_DWORD *)((char *)v4 + 62) = 1;
|
||||
*(_DWORD *)((char *)v4 + 58) = a2;
|
||||
v89 = *(_DWORD *)(v21 + 6);
|
||||
v96 = *(_DWORD *)(v21 + 78);
|
||||
v21 = *(DWORD *)(*(DWORD *)((char *)v4 + 46) + 8);
|
||||
*(DWORD *)((char *)v4 + 62) = 1;
|
||||
*(DWORD *)((char *)v4 + 58) = a2;
|
||||
v89 = *(DWORD *)(v21 + 6);
|
||||
v96 = *(DWORD *)(v21 + 78);
|
||||
if ( v18 - 1 > 0 )
|
||||
{
|
||||
v93 = 12;
|
||||
v85 = v18 - 1;
|
||||
do
|
||||
{
|
||||
v22 = *(_DWORD *)((char *)v4 + 46);
|
||||
v23 = *(_DWORD *)(v93 + v22 - 4);
|
||||
v24 = *(_DWORD *)(v93 + v22);
|
||||
(**(void (__thiscall ***)(int, bool, _DWORD))v23)(v23, *(_DWORD *)(v24 + 78) != 0, 0.0);
|
||||
v22 = *(DWORD *)((char *)v4 + 46);
|
||||
v23 = *(DWORD *)(v93 + v22 - 4);
|
||||
v24 = *(DWORD *)(v93 + v22);
|
||||
(**(void (__thiscall ***)(int, bool, DWORD))v23)(v23, *(DWORD *)(v24 + 78) != 0, 0.0);
|
||||
v93 += 4;
|
||||
v25 = v85-- == 1;
|
||||
*(_DWORD *)(v23 + 6) = *(_DWORD *)(v24 + 6);
|
||||
*(DWORD *)(v23 + 6) = *(DWORD *)(v24 + 6);
|
||||
}
|
||||
while ( !v25 );
|
||||
}
|
||||
v16 = *(_DWORD *)(v84 + *(_DWORD *)((char *)v4 + 46) + 4);
|
||||
v16 = *(DWORD *)(v84 + *(DWORD *)((char *)v4 + 46) + 4);
|
||||
LABEL_19:
|
||||
(**(void (__thiscall ***)(int, bool, _DWORD))v16)(v16, v96 != 0, 0.0);
|
||||
*(_DWORD *)(v16 + 6) = v89;
|
||||
(**(void (__thiscall ***)(int, bool, DWORD))v16)(v16, v96 != 0, 0.0);
|
||||
*(DWORD *)(v16 + 6) = v89;
|
||||
goto LABEL_20;
|
||||
case 26:
|
||||
if ( *(_DWORD *)((char *)this + 62) || !*(_DWORD *)((char *)this + 58) )
|
||||
if ( *(DWORD *)((char *)this + 62) || !*(DWORD *)((char *)this + 58) )
|
||||
TLightGroup::start_animation(this);
|
||||
v26 = *(_DWORD *)((char *)v4 + 46);
|
||||
*(_DWORD *)((char *)v4 + 58) = a2;
|
||||
*(_DWORD *)((char *)v4 + 62) = 0;
|
||||
v27 = *(_DWORD *)(v26 + 4);
|
||||
v97 = *(_DWORD *)(*(_DWORD *)(v26 + 4 * v27 + 4) + 90);
|
||||
v26 = *(DWORD *)((char *)v4 + 46);
|
||||
*(DWORD *)((char *)v4 + 58) = a2;
|
||||
*(DWORD *)((char *)v4 + 62) = 0;
|
||||
v27 = *(DWORD *)(v26 + 4);
|
||||
v97 = *(DWORD *)(*(DWORD *)(v26 + 4 * v27 + 4) + 90);
|
||||
for ( j = v27 - 1; ; --j )
|
||||
{
|
||||
v29 = 0.0;
|
||||
v30 = *(_DWORD *)((char *)v4 + 46);
|
||||
v30 = *(DWORD *)((char *)v4 + 46);
|
||||
if ( j <= 0 )
|
||||
break;
|
||||
(***(void (__thiscall ****)(_DWORD, int, _DWORD))(v30 + 4 * j + 8))(
|
||||
*(_DWORD *)(v30 + 4 * j + 8),
|
||||
(*(_DWORD *)(*(_DWORD *)(v30 + 4 * j + 4) + 90) != 0) + 8,
|
||||
(***(void (__thiscall ****)(DWORD, int, DWORD))(v30 + 4 * j + 8))(
|
||||
*(DWORD *)(v30 + 4 * j + 8),
|
||||
(*(DWORD *)(*(DWORD *)(v30 + 4 * j + 4) + 90) != 0) + 8,
|
||||
0.0);
|
||||
}
|
||||
v31 = *(void (__stdcall ****)(int, _DWORD))(v30 + 8);
|
||||
v31 = *(void (****)(int, DWORD))(v30 + 8);
|
||||
goto LABEL_44;
|
||||
case 27:
|
||||
if ( *(_DWORD *)((char *)this + 62) || !*(_DWORD *)((char *)this + 58) )
|
||||
if ( *(DWORD *)((char *)this + 62) || !*(DWORD *)((char *)this + 58) )
|
||||
TLightGroup::start_animation(this);
|
||||
v32 = *(_DWORD *)((char *)v4 + 46);
|
||||
*(_DWORD *)((char *)v4 + 58) = a2;
|
||||
*(_DWORD *)((char *)v4 + 62) = 0;
|
||||
v33 = *(_DWORD *)(v32 + 4);
|
||||
v97 = *(_DWORD *)(*(_DWORD *)(v32 + 8) + 90);
|
||||
v94 = *(_DWORD *)(v32 + 4);
|
||||
v32 = *(DWORD *)((char *)v4 + 46);
|
||||
*(DWORD *)((char *)v4 + 58) = a2;
|
||||
*(DWORD *)((char *)v4 + 62) = 0;
|
||||
v33 = *(DWORD *)(v32 + 4);
|
||||
v97 = *(DWORD *)(*(DWORD *)(v32 + 8) + 90);
|
||||
v94 = *(DWORD *)(v32 + 4);
|
||||
if ( v33 - 1 > 0 )
|
||||
{
|
||||
v34 = 12;
|
||||
v86 = v33 - 1;
|
||||
do
|
||||
{
|
||||
(***(void (__thiscall ****)(_DWORD, int, _DWORD))(v34 + *(_DWORD *)((char *)v4 + 46) - 4))(
|
||||
*(_DWORD *)(v34 + *(_DWORD *)((char *)v4 + 46) - 4),
|
||||
(*(_DWORD *)(*(_DWORD *)(v34 + *(_DWORD *)((char *)v4 + 46)) + 90) != 0) + 8,
|
||||
(***(void (__thiscall ****)(DWORD, int, DWORD))(v34 + *(DWORD *)((char *)v4 + 46) - 4))(
|
||||
*(DWORD *)(v34 + *(DWORD *)((char *)v4 + 46) - 4),
|
||||
(*(DWORD *)(*(DWORD *)(v34 + *(DWORD *)((char *)v4 + 46)) + 90) != 0) + 8,
|
||||
0.0);
|
||||
v34 += 4;
|
||||
--v86;
|
||||
@@ -446,18 +446,18 @@ v34 += 4;
|
||||
while ( v86 );
|
||||
}
|
||||
v29 = 0.0;
|
||||
v31 = *(void (__stdcall ****)(int, _DWORD))(*(_DWORD *)((char *)v4 + 46) + 4 * v94 + 4);
|
||||
v31 = *(void (****)(int, DWORD))(*(DWORD *)((char *)v4 + 46) + 4 * v94 + 4);
|
||||
LABEL_44:
|
||||
v35 = v29;
|
||||
(**v31)((v97 != 0) + 8, LODWORD(v35));
|
||||
goto LABEL_20;
|
||||
case 28:
|
||||
if ( *(_DWORD *)((char *)this + 62) || !*(_DWORD *)((char *)this + 58) )
|
||||
if ( *(DWORD *)((char *)this + 62) || !*(DWORD *)((char *)this + 58) )
|
||||
TLightGroup::start_animation(this);
|
||||
v36 = *(_DWORD *)((char *)v4 + 46);
|
||||
*(_DWORD *)((char *)v4 + 58) = a2;
|
||||
*(_DWORD *)((char *)v4 + 62) = 0;
|
||||
v37 = *(_DWORD *)(v36 + 4) - 1;
|
||||
v36 = *(DWORD *)((char *)v4 + 46);
|
||||
*(DWORD *)((char *)v4 + 58) = a2;
|
||||
*(DWORD *)((char *)v4 + 62) = 0;
|
||||
v37 = *(DWORD *)(v36 + 4) - 1;
|
||||
if ( v37 > 0 )
|
||||
{
|
||||
v98 = 8;
|
||||
@@ -466,7 +466,7 @@ do
|
||||
{
|
||||
if ( _rand() % 100 > 70 )
|
||||
{
|
||||
v38 = *(void (__thiscall ****)(_DWORD, signed int, _DWORD))(v98 + *(_DWORD *)((char *)v4 + 46));
|
||||
v38 = *(void (__thiscall ****)(DWORD, signed int, DWORD))(v98 + *(DWORD *)((char *)v4 + 46));
|
||||
v39 = *v38;
|
||||
v40 = (double)_rand() * 0.00003051850947599719 * a3 * 3.0 + 0.1;
|
||||
(*v39)(v38, 9, LODWORD(v40));
|
||||
@@ -478,19 +478,19 @@ while ( v87 );
|
||||
}
|
||||
goto LABEL_20;
|
||||
case 29:
|
||||
if ( *(_DWORD *)((char *)this + 62) || !*(_DWORD *)((char *)this + 58) )
|
||||
if ( *(DWORD *)((char *)this + 62) || !*(DWORD *)((char *)this + 58) )
|
||||
TLightGroup::start_animation(this);
|
||||
v41 = *(_DWORD *)((char *)v4 + 46);
|
||||
*(_DWORD *)((char *)v4 + 58) = a2;
|
||||
*(_DWORD *)((char *)v4 + 62) = 0;
|
||||
v42 = *(_DWORD *)(v41 + 4) - 1;
|
||||
v41 = *(DWORD *)((char *)v4 + 46);
|
||||
*(DWORD *)((char *)v4 + 58) = a2;
|
||||
*(DWORD *)((char *)v4 + 62) = 0;
|
||||
v42 = *(DWORD *)(v41 + 4) - 1;
|
||||
if ( v42 > 0 )
|
||||
{
|
||||
v99 = 8;
|
||||
v88 = v42;
|
||||
do
|
||||
{
|
||||
v43 = *(void (__thiscall ****)(_DWORD, signed int, _DWORD))(v99 + *(_DWORD *)((char *)v4 + 46));
|
||||
v43 = *(void (__thiscall ****)(DWORD, signed int, DWORD))(v99 + *(DWORD *)((char *)v4 + 46));
|
||||
v44 = *v43;
|
||||
v45 = (double)(_rand() % 100 > 70);
|
||||
(*v44)(v43, 18, LODWORD(v45));
|
||||
@@ -503,16 +503,16 @@ LABEL_20:
|
||||
TLightGroup::reschedule_animation(v4, a3);
|
||||
return 0;
|
||||
case 30:
|
||||
v46 = *(_DWORD *)((char *)this + 46);
|
||||
v46 = *(DWORD *)((char *)this + 46);
|
||||
v47 = 0;
|
||||
v48 = *(_DWORD *)(v46 + 4) - 1;
|
||||
v48 = *(DWORD *)(v46 + 4) - 1;
|
||||
if ( v48 < 0 )
|
||||
return 0;
|
||||
v49 = v46 + 4 * v48 + 8;
|
||||
v50 = v48 + 1;
|
||||
do
|
||||
{
|
||||
if ( !*(_DWORD *)(*(_DWORD *)v49 + 78) )
|
||||
if ( !*(DWORD *)(*(DWORD *)v49 + 78) )
|
||||
++v47;
|
||||
v49 -= 4;
|
||||
--v50;
|
||||
@@ -521,15 +521,15 @@ while ( v50 );
|
||||
if ( !v47 )
|
||||
return 0;
|
||||
v51 = _rand();
|
||||
v52 = *(_DWORD *)((char *)v4 + 46);
|
||||
v52 = *(DWORD *)((char *)v4 + 46);
|
||||
HIDWORD(v53) = v51 % v47;
|
||||
LODWORD(v53) = *(_DWORD *)(v52 + 4) - 1;
|
||||
LODWORD(v53) = *(DWORD *)(v52 + 4) - 1;
|
||||
if ( (signed int)v53 < 0 )
|
||||
goto LABEL_74;
|
||||
v103 = v52 + 4 * v53 + 8;
|
||||
while ( 1 )
|
||||
{
|
||||
if ( !*(_DWORD *)(*(_DWORD *)v103 + 78) )
|
||||
if ( !*(DWORD *)(*(DWORD *)v103 + 78) )
|
||||
{
|
||||
v54 = HIDWORD(v53)--;
|
||||
if ( !v54 )
|
||||
@@ -541,23 +541,23 @@ if ( (signed int)v53 < 0 )
|
||||
goto LABEL_74;
|
||||
}
|
||||
LABEL_73:
|
||||
(***(void (__fastcall ****)(_DWORD, _DWORD, signed int, _DWORD))(v52 + 4 * v53 + 8))(
|
||||
*(_DWORD *)(v52 + 4 * v53 + 8),
|
||||
(***(void (__fastcall ****)(DWORD, DWORD, signed int, DWORD))(v52 + 4 * v53 + 8))(
|
||||
*(DWORD *)(v52 + 4 * v53 + 8),
|
||||
HIDWORD(v53),
|
||||
1,
|
||||
0.0);
|
||||
goto LABEL_74;
|
||||
case 31:
|
||||
v55 = *(_DWORD *)((char *)this + 46);
|
||||
v55 = *(DWORD *)((char *)this + 46);
|
||||
v56 = 0;
|
||||
v57 = *(_DWORD *)(v55 + 4) - 1;
|
||||
v57 = *(DWORD *)(v55 + 4) - 1;
|
||||
if ( v57 < 0 )
|
||||
return 0;
|
||||
v58 = v55 + 4 * v57 + 8;
|
||||
v59 = v57 + 1;
|
||||
do
|
||||
{
|
||||
if ( *(_DWORD *)(*(_DWORD *)v58 + 78) )
|
||||
if ( *(DWORD *)(*(DWORD *)v58 + 78) )
|
||||
++v56;
|
||||
v58 -= 4;
|
||||
--v59;
|
||||
@@ -566,9 +566,9 @@ while ( v59 );
|
||||
if ( !v56 )
|
||||
return 0;
|
||||
v60 = _rand();
|
||||
v61 = *(_DWORD *)((char *)v4 + 46);
|
||||
v61 = *(DWORD *)((char *)v4 + 46);
|
||||
HIDWORD(v62) = v60 % v56;
|
||||
LODWORD(v62) = *(_DWORD *)(v61 + 4) - 1;
|
||||
LODWORD(v62) = *(DWORD *)(v61 + 4) - 1;
|
||||
if ( (signed int)v62 < 0 )
|
||||
goto LABEL_74;
|
||||
v104 = v61 + 4 * v62 + 8;
|
||||
@@ -577,50 +577,50 @@ case 32:
|
||||
v64 = TLightGroup::next_light_up(this);
|
||||
if ( v64 < 0 )
|
||||
return 0;
|
||||
(***(void (__stdcall ****)(signed int, _DWORD))(*(_DWORD *)((char *)v4 + 46) + 4 * v64 + 8))(1, 0.0);
|
||||
(***(void (****)(signed int, DWORD))(*(DWORD *)((char *)v4 + 46) + 4 * v64 + 8))(1, 0.0);
|
||||
goto LABEL_90;
|
||||
case 33:
|
||||
v66 = TLightGroup::next_light_down(this);
|
||||
if ( v66 < 0 )
|
||||
return 0;
|
||||
(***(void (__stdcall ****)(_DWORD, _DWORD))(*(_DWORD *)((char *)v4 + 46) + 4 * v66 + 8))(0, 0.0);
|
||||
(***(void (****)(DWORD, DWORD))(*(DWORD *)((char *)v4 + 46) + 4 * v66 + 8))(0, 0.0);
|
||||
LABEL_90:
|
||||
if ( *(_DWORD *)((char *)v4 + 58) )
|
||||
if ( *(DWORD *)((char *)v4 + 58) )
|
||||
TLightGroup::start_animation(v4);
|
||||
return 1;
|
||||
case 34:
|
||||
if ( *(_DWORD *)((char *)this + 70) )
|
||||
timer_kill(*(_DWORD *)((char *)this + 70));
|
||||
v68 = *(_DWORD *)((char *)v4 + 58);
|
||||
*(_DWORD *)((char *)v4 + 70) = 0;
|
||||
if ( *(DWORD *)((char *)this + 70) )
|
||||
timer_kill(*(DWORD *)((char *)this + 70));
|
||||
v68 = *(DWORD *)((char *)v4 + 58);
|
||||
*(DWORD *)((char *)v4 + 70) = 0;
|
||||
if ( v68 == 26 || v68 == 27 || v68 == 28 )
|
||||
TLightGroup::Message(v4, 14, 0.0);
|
||||
*(_DWORD *)((char *)v4 + 58) = 0;
|
||||
*(_DWORD *)((char *)v4 + 62) = 0;
|
||||
*(DWORD *)((char *)v4 + 58) = 0;
|
||||
*(DWORD *)((char *)v4 + 62) = 0;
|
||||
return 0;
|
||||
case 35:
|
||||
v53 = (signed __int64)_floor(a3);
|
||||
v52 = *(_DWORD *)((char *)v4 + 46);
|
||||
if ( (signed int)v53 < *(_DWORD *)(v52 + 4) && (signed int)v53 >= 0 )
|
||||
v52 = *(DWORD *)((char *)v4 + 46);
|
||||
if ( (signed int)v53 < *(DWORD *)(v52 + 4) && (signed int)v53 >= 0 )
|
||||
goto LABEL_73;
|
||||
return 0;
|
||||
case 36:
|
||||
v62 = (signed __int64)_floor(a3);
|
||||
v61 = *(_DWORD *)((char *)v4 + 46);
|
||||
if ( (signed int)v62 < *(_DWORD *)(v61 + 4) && (signed int)v62 >= 0 )
|
||||
v61 = *(DWORD *)((char *)v4 + 46);
|
||||
if ( (signed int)v62 < *(DWORD *)(v61 + 4) && (signed int)v62 >= 0 )
|
||||
goto LABEL_117;
|
||||
return 0;
|
||||
case 37:
|
||||
v5 = *(_DWORD *)((char *)this + 46);
|
||||
v5 = *(DWORD *)((char *)this + 46);
|
||||
result = 0;
|
||||
v7 = *(_DWORD *)(v5 + 4) - 1;
|
||||
v7 = *(DWORD *)(v5 + 4) - 1;
|
||||
if ( v7 >= 0 )
|
||||
{
|
||||
v8 = v5 + 4 * v7 + 8;
|
||||
v9 = *(_DWORD *)(v5 + 4);
|
||||
v9 = *(DWORD *)(v5 + 4);
|
||||
do
|
||||
{
|
||||
if ( *(_DWORD *)(*(_DWORD *)v8 + 78) )
|
||||
if ( *(DWORD *)(*(DWORD *)v8 + 78) )
|
||||
++result;
|
||||
v8 -= 4;
|
||||
--v9;
|
||||
@@ -629,47 +629,47 @@ while ( v9 );
|
||||
}
|
||||
return result;
|
||||
case 38:
|
||||
return *(_DWORD *)(*(_DWORD *)((char *)this + 46) + 4);
|
||||
return *(DWORD *)(*(DWORD *)((char *)this + 46) + 4);
|
||||
case 39:
|
||||
return *(_DWORD *)((char *)this + 58);
|
||||
return *(DWORD *)((char *)this + 58);
|
||||
case 40:
|
||||
return *(_DWORD *)((char *)this + 62);
|
||||
return *(DWORD *)((char *)this + 62);
|
||||
case 41:
|
||||
v65 = TLightGroup::next_light_up(this);
|
||||
if ( v65 < 0 )
|
||||
return 0;
|
||||
if ( *(_DWORD *)((char *)v4 + 58) || *(_DWORD *)((char *)v4 + 62) )
|
||||
if ( *(DWORD *)((char *)v4 + 58) || *(DWORD *)((char *)v4 + 62) )
|
||||
TLightGroup::Message(v4, 34, 0.0);
|
||||
(***(void (__stdcall ****)(signed int, _DWORD))(*(_DWORD *)((char *)v4 + 46) + 4 * v65 + 8))(15, LODWORD(a3));
|
||||
(***(void (****)(signed int, DWORD))(*(DWORD *)((char *)v4 + 46) + 4 * v65 + 8))(15, LODWORD(a3));
|
||||
return 1;
|
||||
case 42:
|
||||
v67 = TLightGroup::next_light_down(this);
|
||||
if ( v67 < 0 )
|
||||
return 0;
|
||||
if ( *(_DWORD *)((char *)v4 + 58) || *(_DWORD *)((char *)v4 + 62) )
|
||||
if ( *(DWORD *)((char *)v4 + 58) || *(DWORD *)((char *)v4 + 62) )
|
||||
TLightGroup::Message(v4, 34, 0.0);
|
||||
(***(void (__stdcall ****)(signed int, _DWORD))(*(_DWORD *)((char *)v4 + 46) + 4 * v67 + 8))(16, LODWORD(a3));
|
||||
(***(void (****)(signed int, DWORD))(*(DWORD *)((char *)v4 + 46) + 4 * v67 + 8))(16, LODWORD(a3));
|
||||
return 1;
|
||||
case 43:
|
||||
if ( *(_DWORD *)((char *)this + 66) )
|
||||
timer_kill(*(_DWORD *)((char *)this + 66));
|
||||
*(_DWORD *)((char *)v4 + 66) = 0;
|
||||
if ( *(DWORD *)((char *)this + 66) )
|
||||
timer_kill(*(DWORD *)((char *)this + 66));
|
||||
*(DWORD *)((char *)v4 + 66) = 0;
|
||||
if ( a3 > 0.0 )
|
||||
*(_DWORD *)((char *)v4 + 66) = timer_set(a3, (int)v4, (int)TLightGroup::NotifyTimerExpired);
|
||||
*(DWORD *)((char *)v4 + 66) = timer_set(a3, (int)v4, (int)TLightGroup::NotifyTimerExpired);
|
||||
return 0;
|
||||
case 44:
|
||||
v69 = *(_DWORD *)(*(_DWORD *)((char *)this + 46) + 4) - 1;
|
||||
v69 = *(DWORD *)(*(DWORD *)((char *)this + 46) + 4) - 1;
|
||||
if ( v69 >= 0 )
|
||||
{
|
||||
v70 = 4 * v69 + 8;
|
||||
v100 = *(_DWORD *)(*(_DWORD *)((char *)this + 46) + 4);
|
||||
v100 = *(DWORD *)(*(DWORD *)((char *)this + 46) + 4);
|
||||
do
|
||||
{
|
||||
v71 = *(_DWORD *)(v70 + *(_DWORD *)((char *)v4 + 46));
|
||||
if ( *(_DWORD *)(v71 + 78) )
|
||||
v71 = *(DWORD *)(v70 + *(DWORD *)((char *)v4 + 46));
|
||||
if ( *(DWORD *)(v71 + 78) )
|
||||
{
|
||||
(**(void (__stdcall ***)(_DWORD, _DWORD))v71)(0, 0.0);
|
||||
(***(void (__stdcall ****)(signed int, _DWORD))(v70 + *(_DWORD *)((char *)v4 + 46)))(16, LODWORD(a3));
|
||||
(**(void (***)(DWORD, DWORD))v71)(0, 0.0);
|
||||
(***(void (****)(signed int, DWORD))(v70 + *(DWORD *)((char *)v4 + 46)))(16, LODWORD(a3));
|
||||
}
|
||||
v70 -= 4;
|
||||
--v100;
|
||||
@@ -682,7 +682,7 @@ control_handler(a2, this);
|
||||
v72 = (signed __int64)_floor(a3);
|
||||
if ( (signed int)v72 >= 0 )
|
||||
{
|
||||
v73 = *(_DWORD *)(*(_DWORD *)((char *)v4 + 46) + 4);
|
||||
v73 = *(DWORD *)(*(DWORD *)((char *)v4 + 46) + 4);
|
||||
if ( (signed int)v72 <= v73 )
|
||||
{
|
||||
v74 = v73 - 1;
|
||||
@@ -693,8 +693,8 @@ v101 = v74 - v72;
|
||||
v74 = v72;
|
||||
do
|
||||
{
|
||||
(***(void (__fastcall ****)(_DWORD, _DWORD, signed int, _DWORD))(v105 + *(_DWORD *)((char *)v4 + 46)))(
|
||||
*(_DWORD *)(v105 + *(_DWORD *)((char *)v4 + 46)),
|
||||
(***(void (__fastcall ****)(DWORD, DWORD, signed int, DWORD))(v105 + *(DWORD *)((char *)v4 + 46)))(
|
||||
*(DWORD *)(v105 + *(DWORD *)((char *)v4 + 46)),
|
||||
HIDWORD(v72),
|
||||
20,
|
||||
0.0);
|
||||
@@ -709,8 +709,8 @@ v75 = 4 * v74 + 8;
|
||||
v76 = v74 + 1;
|
||||
do
|
||||
{
|
||||
(***(void (__fastcall ****)(_DWORD, _DWORD, signed int, _DWORD))(v75 + *(_DWORD *)((char *)v4 + 46)))(
|
||||
*(_DWORD *)(v75 + *(_DWORD *)((char *)v4 + 46)),
|
||||
(***(void (__fastcall ****)(DWORD, DWORD, signed int, DWORD))(v75 + *(DWORD *)((char *)v4 + 46)))(
|
||||
*(DWORD *)(v75 + *(DWORD *)((char *)v4 + 46)),
|
||||
HIDWORD(v72),
|
||||
19,
|
||||
0.0);
|
||||
@@ -725,14 +725,14 @@ return 0;
|
||||
case 46:
|
||||
v77 = TLightGroup::next_light_down(this);
|
||||
if ( v77 >= 0 )
|
||||
(***(void (__stdcall ****)(signed int, _DWORD))(*(_DWORD *)((char *)v4 + 46) + 4 * v77 + 8))(4, 0.0);
|
||||
(***(void (****)(signed int, DWORD))(*(DWORD *)((char *)v4 + 46) + 4 * v77 + 8))(4, 0.0);
|
||||
return 0;
|
||||
default:
|
||||
goto LABEL_145;
|
||||
}
|
||||
while ( 1 )
|
||||
{
|
||||
if ( *(_DWORD *)(*(_DWORD *)v104 + 78) )
|
||||
if ( *(DWORD *)(*(DWORD *)v104 + 78) )
|
||||
{
|
||||
v63 = HIDWORD(v62)--;
|
||||
if ( !v63 )
|
||||
@@ -744,13 +744,13 @@ if ( (signed int)v62 < 0 )
|
||||
goto LABEL_74;
|
||||
}
|
||||
LABEL_117:
|
||||
(***(void (__fastcall ****)(_DWORD, _DWORD, _DWORD, _DWORD))(v61 + 4 * v62 + 8))(
|
||||
*(_DWORD *)(v61 + 4 * v62 + 8),
|
||||
(***(void (__fastcall ****)(DWORD, DWORD, DWORD, DWORD))(v61 + 4 * v62 + 8))(
|
||||
*(DWORD *)(v61 + 4 * v62 + 8),
|
||||
HIDWORD(v62),
|
||||
0,
|
||||
0.0);
|
||||
LABEL_74:
|
||||
if ( *(_DWORD *)((char *)v4 + 58) )
|
||||
if ( *(DWORD *)((char *)v4 + 58) )
|
||||
TLightGroup::start_animation(v4);
|
||||
}
|
||||
return 0;
|
||||
@@ -760,22 +760,22 @@ return 0;
|
||||
TLightGroup *__thiscall TLightGroup::TLightGroup(TLightGroup *this, struct TPinballTable *a2, int a3)
|
||||
{
|
||||
TLightGroup *v3; // esi
|
||||
signed __int16 *v4; // ebx
|
||||
signed int *v4; // ebx
|
||||
struct TPinballComponent *v5; // eax
|
||||
int v7; // [esp+Ch] [ebp-4h]
|
||||
int i; // [esp+1Ch] [ebp+Ch]
|
||||
|
||||
v3 = this;
|
||||
TPinballComponent::TPinballComponent(this, a2, a3, 0);
|
||||
*(_DWORD *)v3 = &TLightGroup::vftable;
|
||||
*(DWORD *)v3 = &TLightGroup::vftable;
|
||||
objlist_class::objlist_class((TLightGroup *)((char *)v3 + 42), 4, 4);
|
||||
*(_DWORD *)((char *)v3 + 70) = 0;
|
||||
*(_DWORD *)((char *)v3 + 66) = 0;
|
||||
*(DWORD *)((char *)v3 + 70) = 0;
|
||||
*(DWORD *)((char *)v3 + 66) = 0;
|
||||
TLightGroup::Reset(v3);
|
||||
if ( a3 > 0 )
|
||||
{
|
||||
*(_DWORD *)((char *)v3 + 54) = *(_DWORD *)loader_query_float_attribute(a3, 0, 903);
|
||||
v4 = (signed __int16 *)loader_query_iattribute(a3, 1027, &v7);
|
||||
*(DWORD *)((char *)v3 + 54) = *(DWORD *)loader_query_float_attribute(a3, 0, 903);
|
||||
v4 = (signed int *)loader_query_iattribute(a3, 1027, &v7);
|
||||
for ( i = 0; i < v7; ++v4 )
|
||||
{
|
||||
v5 = TPinballTable::find_component(a2, *v4);
|
||||
|
||||
@@ -12,12 +12,12 @@ struct TLightGroup;
|
||||
|
||||
TZmapList* __thiscall TLightGroup::~TLightGroup(TLightGroup* this);
|
||||
void __thiscall TLightGroup::Reset(TLightGroup* __hidden this); // idb
|
||||
void __stdcall TLightGroup::TimerExpired(int, void*); // idb
|
||||
void TLightGroup::TimerExpired(int, void*); // idb
|
||||
void __thiscall TLightGroup::reschedule_animation(TLightGroup* this, float); // idb
|
||||
int __thiscall TLightGroup::next_light_up(TLightGroup* __hidden this); // idb
|
||||
int __thiscall TLightGroup::next_light_down(TLightGroup* __hidden this); // idb
|
||||
void __thiscall TLightGroup::start_animation(TLightGroup* __hidden this); // idb
|
||||
void __stdcall TLightGroup::NotifyTimerExpired(int, void*); // 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);
|
||||
|
||||
Reference in new issue
Block a user