Mercurial > mm7
changeset 731:de482c901171
Moved unused CPU detection stuff to a separate file.
author | Nomad |
---|---|
date | Fri, 22 Mar 2013 11:18:51 +0200 |
parents | 79ad0526166c |
children | 93287fb98441 |
files | VideoPlayer.cpp mm7_2.cpp mm7_4.cpp mm7_5.cpp mm7_data.h |
diffstat | 5 files changed, 24 insertions(+), 512 deletions(-) [+] |
line wrap: on
line diff
--- a/VideoPlayer.cpp Fri Mar 22 10:52:19 2013 +0200 +++ b/VideoPlayer.cpp Fri Mar 22 11:18:51 2013 +0200 @@ -1063,6 +1063,7 @@ { if ( (unsigned int)uCPUSpeed < 165 ) { + Log::Warning(L"Smacker seems to use lower resolution because it thinks CPU is slow"); v10 = SmackCheckSurfaceFromat() | 2; } else
--- a/mm7_2.cpp Fri Mar 22 10:52:19 2013 +0200 +++ b/mm7_2.cpp Fri Mar 22 11:18:51 2013 +0200 @@ -9750,26 +9750,29 @@ dword_6BE364_game_settings_1 |= 0x4000; - if ( uTurnSpeed ) - { switch ( uTurnSpeed ) { - case 1u: + case 0: // undefined turn option + __debugbreak(); // really shouldn't use this mode + uTurnSpeed = (unsigned int)uCPUSpeed < 199 ? 128 : 64; // adjust turn speed to estimated fps + break; + + case 1u: // 16x + Log::Warning(L"x16 Turn Speed"); // really shouldn't use this mode uTurnSpeed = 128; - break; - case 2u: + break; + + case 2u: // 32x + Log::Warning(L"x32 Turn Speed"); // really shouldn't use this mode uTurnSpeed = 64; - break; - case 3u: + break; + + case 3u: // smooth uTurnSpeed = 0; - break; - } - } - else - { - uTurnSpeed = (unsigned int)uCPUSpeed < 0xC7 ? 128 : 64; // adjust turn speed to estimated fps - } - initing=false; //ADDED Gloval + break; + } + + initing = false; //ADDED Gloval return true; } @@ -10064,12 +10067,13 @@ stru_51076C.registry_debug_flags = ReadWindowsRegistryInt("debug flags", 0); - v8 = sub_4AC1C9(0, (Vec4_int_ *)a2); + /*v8 = _4AC1C9_get_cpu_speed(0, (Vec4_int_ *)a2); Rect.left = *(int *)v8; Rect.top = *(int *)(v8 + 4); Rect.right = *(int *)(v8 + 8); Rect.bottom = *(int *)(v8 + 12); - uCPUSpeed = Rect.bottom; + uCPUSpeed = Rect.bottom;*/ + uCPUSpeed = 2048; // about 2GHz if (MM7_Initialize())
--- a/mm7_4.cpp Fri Mar 22 10:52:19 2013 +0200 +++ b/mm7_4.cpp Fri Mar 22 11:18:51 2013 +0200 @@ -2575,6 +2575,7 @@ float v26; // [sp+50h] [bp-8h]@3 float v27; // [sp+54h] [bp-4h]@3 + __debugbreak(); v22 = 0; v1 = this->pMemBlocks[1]->pAlignedBlock; v2 = this->pMemBlocks[6]->pAlignedBlock; @@ -5455,327 +5456,6 @@ -//----- (004AC1C9) -------------------------------------------------------- -int __thiscall sub_4AC1C9(unsigned int _this, Vec4_int_ *a2) -{ - unsigned int v2; // esi@1 - __int16 v3; // di@1 - signed int v4; // ebx@1 - int v5; // ecx@3 - Vec4_int_ *v6; // eax@10 - Vec4_int_ *v7; // esi@14 - int result; // eax@16 - char *v9; // esi@16 - Vec4_int_ a1; // [sp+Ch] [bp-34h]@10 - Vec4_int_ v11; // [sp+1Ch] [bp-24h]@14 - Vec4_int_ Dst; // [sp+2Ch] [bp-14h]@1 - int v13; // [sp+3Ch] [bp-4h]@1 - - v2 = _this; - v3 = sub_4382BC(_this); - v13 = sub_4383ED(); - v4 = 0; - memset(&Dst, 0, 0x10u); - if ( v3 < 0 ) - goto LABEL_19; - if ( (signed int)v2 > 0 ) - { - if ( (signed int)v2 > 150 ) - { - v5 = (int)a2; - } - else - { - v5 = 4000 * v2; - v4 = 1; - } - } - else - { - v5 = 4000 * dword_4F031C[(unsigned __int16)v3]; - } - if ( v13 & 0x10 && !v4 ) - { - if ( v2 ) - v6 = sub_4AC4FD_get_cpu_clocks_rdtsc(v5, &a1); - else - v6 = sub_4AC33A_get_cpu_clocks_QPC(v5, &a1); - goto LABEL_14; - } - if ( (unsigned __int16)v3 < 3u ) - { -LABEL_19: - v7 = &Dst; - goto LABEL_16; - } - v6 = sub_4AC277(v5, &a1); -LABEL_14: - v11.x = v6->x; - v11.y = v6->y; - v11.z = v6->z; - v11.w = v6->w; - v7 = &v11; -LABEL_16: - result = (int)a2; - a2->x = v7->x; - v9 = (char *)&v7->y; - a2->y = *(int *)v9; - v9 += 4; - a2->z = *(int *)v9; - a2->w = *((int *)v9 + 1); - return result; -} -// 4F031C: using guessed type int dword_4F031C[]; - -//----- (004AC277) -------------------------------------------------------- -Vec4_int_ *__thiscall sub_4AC277(unsigned int _this, Vec4_int_ *a2) -{ - __debugbreak(); - return 0; - /*signed int v2; // esi@1 - signed __int16 v4; // bx@3 - int v10; // esi@8 - int v11; // eax@10 - Vec4_int_ *result; // eax@13 - Vec4_int_ Dst; // [sp+8h] [bp-30h]@1 - LARGE_INTEGER Frequency; // [sp+18h] [bp-20h]@1 - LARGE_INTEGER PerformanceCount; // [sp+20h] [bp-18h]@3 - LARGE_INTEGER v16; // [sp+28h] [bp-10h]@5 - int v17; // [sp+30h] [bp-8h]@1 - int v18; // [sp+34h] [bp-4h]@2 - - v17 = _this; - v2 = -1; - memset(&Dst, 0, 0x10u); - if ( QueryPerformanceFrequency(&Frequency) ) - { - v18 = 10; - do - { - QueryPerformanceCounter(&PerformanceCount); - _EAX = -2147483648; - v4 = 4000; - do - { - __asm { bsf ecx, eax } - --v4; - } - while ( v4 ); - QueryPerformanceCounter(&v16); - if ( (signed int)v16.s.LowPart - (signed int)PerformanceCount.s.LowPart < (unsigned int)v2 ) - v2 = v16.s.LowPart - PerformanceCount.s.LowPart; - --v18; - } - while ( v18 ); - v10 = 100000 * v2 / (Frequency.s.LowPart / 0xA); - if ( v10 % Frequency.s.LowPart > Frequency.s.LowPart >> 1 ) - ++v10; - v11 = v17 / (unsigned int)v10; - Dst.z = v17 / (unsigned int)v10; - if ( v17 % (unsigned int)v10 > (unsigned int)v10 >> 1 ) - ++v11; - Dst.x = v17; - Dst.y = v10; - Dst.w = v11; - } - result = a2; - a2->x = Dst.x; - a2->y = Dst.y; - a2->z = Dst.z; - a2->w = Dst.w; - return result;*/ -} - -//----- (004AC33A) -------------------------------------------------------- -Vec4_int_ *__thiscall sub_4AC33A_get_cpu_clocks_QPC(int _this, Vec4_int_ *a1) -{ - __debugbreak(); - return 0; - /*int v2; // esi@1 - int v3; // ebx@1 - unsigned __int64 v4; // qax@4 - unsigned __int64 v5; // qax@7 - DWORD v6; // edi@7 - DWORD v7; // eax@7 - unsigned int v8; // ecx@10 - unsigned __int64 v9; // qax@10 - unsigned int v10; // edi@10 - int v11; // eax@14 - unsigned int v12; // ecx@19 - Vec4_int_ *result; // eax@24 - int Dst; // [sp+Ch] [bp-4Ch]@1 - int v15; // [sp+10h] [bp-48h]@23 - int v16; // [sp+14h] [bp-44h]@21 - int v17; // [sp+18h] [bp-40h]@21 - LARGE_INTEGER Frequency; // [sp+1Ch] [bp-3Ch]@1 - LARGE_INTEGER PerformanceCount; // [sp+24h] [bp-34h]@2 - LARGE_INTEGER v20; // [sp+2Ch] [bp-2Ch]@2 - int v21; // [sp+34h] [bp-24h]@2 - int v22; // [sp+38h] [bp-20h]@2 - int v23; // [sp+3Ch] [bp-1Ch]@4 - int v24; // [sp+40h] [bp-18h]@7 - int nPriority; // [sp+44h] [bp-14h]@2 - unsigned int v26; // [sp+48h] [bp-10h]@1 - unsigned int v27; // [sp+4Ch] [bp-Ch]@1 - HANDLE hThread; // [sp+50h] [bp-8h]@1 - int v29; // [sp+54h] [bp-4h]@1 - - v2 = 0; - v3 = 0; - v29 = 0; - v27 = 0; - v26 = 0; - hThread = GetCurrentThread(); - memset(&Dst, 0, 0x10u); - if ( QueryPerformanceFrequency(&Frequency) ) - { - do - { - ++v29; - v22 = v2; - v21 = v3; - QueryPerformanceCounter(&PerformanceCount); - v20 = PerformanceCount; - nPriority = GetThreadPriority(hThread); - if ( nPriority != 2147483647 ) - SetThreadPriority(hThread, 15); - while ( v20.s.LowPart - PerformanceCount.s.LowPart < 0x32 ) - { - QueryPerformanceCounter(&v20); - v4 = __rdtsc(); - v23 = v4; - } - PerformanceCount = v20; - do - { - QueryPerformanceCounter(&v20); - v5 = __rdtsc(); - v24 = v5; - v6 = v20.s.LowPart; - v7 = PerformanceCount.s.LowPart; - } - while ( v20.s.LowPart - PerformanceCount.s.LowPart < 0x3E8 ); - if ( nPriority != 2147483647 ) - { - SetThreadPriority(hThread, nPriority); - v7 = PerformanceCount.s.LowPart; - v6 = v20.s.LowPart; - } - v8 = v24 - v23; - v27 += v24 - v23; - v9 = (100000 * v6 - 100000 * v7) / (Frequency.s.LowPart / 0xA); - v10 = v9; - v26 += v9; - if ( v9 % Frequency.s.LowPart > Frequency.s.LowPart >> 1 ) - v10 = v9 + 1; - v3 = v8 / v10; - if ( v8 % v10 > v10 >> 1 ) - v3 = v8 / v10 + 1; - v2 = v21; - v11 = v3 + v22 + v21; - } - while ( v29 < 3 - || v29 < 20 - && ((unsigned int)(3 * v3 - v11) > 3 || (unsigned int)(3 * v21 - v11) > 3 || (unsigned int)(3 * v22 - v11) > 3) ); - v12 = 10 * v27 / v26; - if ( 100 * v27 / v26 - 10 * v12 >= 6 ) - ++v12; - v16 = v27 / v26; - v17 = v27 / v26; - if ( v12 - 10 * v27 / v26 >= 6 ) - v17 = v27 / v26 + 1; - v15 = v26; - Dst = v27; - } - result = a1; - a1->x = Dst; - a1->y = v15; - a1->z = v16; - a1->w = v17; - return result;*/ -} - -//----- (004AC4FD) -------------------------------------------------------- -Vec4_int_ *__thiscall sub_4AC4FD_get_cpu_clocks_rdtsc(int _this, Vec4_int_ *a1) -{ - __debugbreak(); - return 0; - /*int v2; // eax@1 - int v3; // eax@4 - bool v4; // eax@5 - unsigned __int64 v5; // kr00_8@8 - int v6; // edi@9 - int v7; // eax@9 - bool v8; // eax@10 - unsigned __int64 v9; // kr08_8@13 - unsigned int v10; // eax@15 - Vec4_int_ *result; // eax@17 - int Dst; // [sp+Ch] [bp-2Ch]@1 - int v13; // [sp+10h] [bp-28h]@17 - int v14; // [sp+14h] [bp-24h]@15 - int v15; // [sp+18h] [bp-20h]@17 - unsigned int v16; // [sp+1Ch] [bp-1Ch]@8 - unsigned int v17; // [sp+20h] [bp-18h]@8 - unsigned int v18; // [sp+24h] [bp-14h]@13 - int nPriority; // [sp+28h] [bp-10h]@1 - __int64 v20; // [sp+2Ch] [bp-Ch]@1 - int v21; // [sp+34h] [bp-4h]@3 - - HIDWORD(v20) = GetCurrentThread(); - memset(&Dst, 0, 0x10u); - v2 = GetThreadPriority(HIDWORD(v20)); - nPriority = v2; - if ( v2 != 0x7FFFFFFF ) - SetThreadPriority(HIDWORD(v20), v2 + 1); - __outbyte(0x70u, 0); - v21 = __inbyte(0x71u); - do - { - __outbyte(0x70u, 0); - LODWORD(v20) = __inbyte(0x71u); - v3 = v20 - v21; - if ( (signed int)v20 >= v21 ) - v4 = v3 > 0; - else - v4 = v3 + 10; - } - while ( !v4 ); - v5 = __rdtsc(); - v16 = HIDWORD(v5); - v17 = v5; - do - { - __outbyte(0x70u, 0); - v21 = __inbyte(0x71u); - v6 = v21; - v7 = v21 - v20; - if ( v21 >= (signed int)v20 ) - v8 = v7 > 0; - else - v8 = v7 + 10; - } - while ( !v8 ); - v9 = __rdtsc(); - v18 = HIDWORD(v9); - v21 = v9; - if ( nPriority != 0x7FFFFFFF ) - SetThreadPriority(HIDWORD(v20), nPriority); - nPriority = v21; - *(__int64 *)((char *)&v20 + 4) = __PAIR__(v18, v21) - __PAIR__(v16, v17); - Dst = HIDWORD(v20); - v10 = HIDWORD(v20) / 0xF4240; - v14 = HIDWORD(v20) / 0xF4240; - if ( HIDWORD(v20) / 0x186A0 - 10 * HIDWORD(v20) / 0xF4240 >= 6 ) - ++v10; - v15 = v10; - result = a1; - v13 = 1000000 * v6 - 1000000 * v20; - a1->x = Dst; - a1->y = v13; - a1->z = v14; - a1->w = v15; - return result;*/ -}
--- a/mm7_5.cpp Fri Mar 22 10:52:19 2013 +0200 +++ b/mm7_5.cpp Fri Mar 22 11:18:51 2013 +0200 @@ -4018,173 +4018,6 @@ -//----- (004382BC) -------------------------------------------------------- -__int16 __thiscall sub_4382BC(int _this) -{ - LOG_DECOMPILATION_WARNING(); - return 0; - /*__int16 result; // ax@4 - __int16 v14; // sp@11 - int v15; // [sp-4h] [bp-Ch]@0 - signed __int16 v16; // [sp+4h] [bp-4h]@1 - __int16 v17; // [sp+4h] [bp-4h]@8 - __int16 v18; // [sp+4h] [bp-4h]@11 - - v16 = 1; - __asm { pushf } - if ( v15 == (v15 ^ 0x200000) ) - v16 = 0; - if ( v16 ) - { - result = sub_43847A(); - } - else - { - //UNDEF(_ZF); - //UNDEF(_SF); - //UNDEF(_OF); - _CF = 0; - if ( !_ZF ) - _CF = 1; - __asm { pushfw } - bProcessorIsNotIntel = (BYTE2(v15) & 1 ^ 1) & 1; - _CF = 0; - _OF = 0; - _ZF = 0; - _SF = 1; - __asm { pushfw } - v17 = 2; - if ( (HIWORD(v15) | 0xF000) & 0xF000 ) - v17 = -1; - __asm { popfw } - result = v17; - if ( v17 != 2 ) - { - _CF = 0; - _OF = 0; - _ZF = v14 == 0; - _SF = v14 < 0; - __asm { pushf } - v18 = 3; - if ( v15 != (v15 ^ 0x40000) ) - v18 = -1; - __asm { popf } - result = v18; - if ( v18 != 3 ) - result = 4; - } - } - if ( bProcessorIsNotIntel ) - HIBYTE(result) |= 0x80u; - return result;*/ -} - -//----- (004383ED) -------------------------------------------------------- -int __cdecl sub_4383ED() -{ - LOG_DECOMPILATION_WARNING(); - return 0; - /*signed int v9; // eax@4 - int v16; // [sp-4h] [bp-38h]@0 - int v17[3]; // [sp+Ch] [bp-28h]@1 - char v18; // [sp+18h] [bp-1Ch]@1 - char v19; // [sp+19h] [bp-1Bh]@1 - int v20[4]; // [sp+1Ch] [bp-18h]@1 - int v21; // [sp+2Ch] [bp-8h]@1 - int v22; // [sp+30h] [bp-4h]@1 - - v17[0] = *(int *)"------------"; - v17[1] = *(int *)"--------"; - v17[2] = *(int *)"----"; - v18 = asc_4E4938[12]; - v19 = 0; - v22 = 0; - v20[0] = *(int *)"GenuineIntel"; - v20[1] = *(int *)"ineIntel"; - v20[2] = *(int *)"ntel"; - LOBYTE(v20[3]) = aGenuineintel[12]; - _CF = 0; - _OF = 0; - _ZF = 0; - _SF = 0; - v21 = 1; - __asm { pushf } - if ( v16 == (v16 ^ 0x200000) ) - v21 = 0; - if ( (short)v21 ) - { - _EAX = 0; - __asm { cpuid } - v17[0] = _EBX; - v17[1] = _EDX; - v17[2] = _ECX; - v9 = 0; - do - { - if ( *((char *)v17 + v9) != *((char *)v20 + v9) ) - bProcessorIsNotIntel = 1; - ++v9; - } - while ( v9 < 12 ); - if ( v9 >= 1 ) - { - _EAX = 1; - __asm { cpuid } - v22 = _EDX; - } - } - return v22;*/ -} - -//----- (0043847A) -------------------------------------------------------- -__int16 __cdecl sub_43847A() -{ - __debugbreak(); - return 0; - /*signed int v5; // eax@1 - char v12[12]; // [sp+Ch] [bp-28h]@1 - char v13; // [sp+18h] [bp-1Ch]@1 - char v14; // [sp+19h] [bp-1Bh]@1 - int v15[4]; // [sp+1Ch] [bp-18h]@1 - int v16; // [sp+2Eh] [bp-6h]@1 - char v17; // [sp+32h] [bp-2h]@6 - char v18; // [sp+33h] [bp-1h]@1 - - *(int *)v12 = *(int *)"------------"; - *(int *)&v12[4] = *(int *)"--------"; - *(int *)&v12[8] = *(int *)"----"; - v13 = asc_4E4938[12]; - v14 = 0; - v18 = 0; - v15[0] = *(int *)"GenuineIntel"; - v15[1] = *(int *)"ineIntel"; - v15[2] = *(int *)"ntel"; - v16 = 65535; - LOBYTE(v15[3]) = aGenuineintel[12]; - _EAX = 0; - __asm { cpuid } - *(int *)v12 = _EBX; - *(int *)&v12[4] = _EDX; - *(int *)&v12[8] = _ECX; - v5 = 0; - do - { - if ( v12[v5] != *((char *)v15 + v5) ) - bProcessorIsNotIntel = 1; - ++v5; - } - while ( v5 < 12 ); - if ( v5 >= 1 ) - { - _EAX = 1; - __asm { cpuid } - v18 = _EAX & 0xF; - LOBYTE(_EAX) = (unsigned __int8)(_EAX & 0xF0) >> 4; - v17 = _EAX; - LOWORD(v16) = ((_EAX & 0xF00u) >> 8) & 0xF; - } - return v16;*/ -}
--- a/mm7_data.h Fri Mar 22 10:52:19 2013 +0200 +++ b/mm7_data.h Fri Mar 22 11:18:51 2013 +0200 @@ -1952,9 +1952,6 @@ void __cdecl nullsub_4(); // idb void __cdecl nullsub_5(); // idb void __cdecl nullsub_6(); // idb -__int16 __thiscall sub_4382BC(int _this); -int __cdecl sub_4383ED(); -__int16 __cdecl sub_43847A(); void __cdecl _438F8F_area_of_effect__damage_evaluate(); void __fastcall DamagePlayerFromMonster(unsigned int uObjID, int a2, struct Vec3_int_ *pPos, unsigned int a4); void __fastcall sub_43A97E(unsigned int uLayingItemID, signed int a2); // idb @@ -2270,10 +2267,7 @@ int __fastcall GetSoundStrengthByDistanceFromParty(int a1, int a2, int a3); struct _DIG_DRIVER *Audio_GetFirstHardwareDigitalDriver(void); void __cdecl PlayLevelMusic(); -int __thiscall sub_4AC1C9(unsigned int _this, Vec4_int_ *a2); -struct Vec4_int_ *__thiscall sub_4AC277(unsigned int _this, Vec4_int_ *a2); -struct Vec4_int_ *__thiscall sub_4AC33A_get_cpu_clocks_QPC(int _this, Vec4_int_ *a1); -struct Vec4_int_ *__thiscall sub_4AC4FD_get_cpu_clocks_rdtsc(int _this, Vec4_int_ *a1); +struct Vec4_int_ *__thiscall _4AC277_get_cpu_speed_sub3(unsigned int _this, Vec4_int_ *a2); int __fastcall sub_4AD504(signed int uFaceID); void __fastcall sub_4ADD1D(int uFaceID); int __fastcall sub_4AE1E7(int a1, int a2, int a3);