changeset 2406:33659ef7fbac

Слияние
author Ritor1
date Fri, 04 Jul 2014 23:18:36 +0600
parents c4d286e4bb80 (current diff) eba7123e4a2d (diff)
children 378e5732ba38
files MediaPlayer.cpp MediaPlayer.h
diffstat 26 files changed, 179 insertions(+), 210 deletions(-) [+]
line wrap: on
line diff
--- a/Arcomage.cpp	Fri Jul 04 23:17:24 2014 +0600
+++ b/Arcomage.cpp	Fri Jul 04 23:18:36 2014 +0600
@@ -1109,7 +1109,7 @@
   pArcomageGame->pSprites.Release();
   pArcomageGame->bGameInProgress = false;
   viewparams->bRedrawGameUI = true;
-  if ( pMovie )
+  if ( pMovie_Track )
     pVideoPlayer->_4BF5B2();
   for( int i = 0; i < 12; ++i )
     pSoundList->UnloadSound(am_sounds[i], 1);
--- a/Build/Visual Studio 2010/World of Might and Magic.vcxproj	Fri Jul 04 23:17:24 2014 +0600
+++ b/Build/Visual Studio 2010/World of Might and Magic.vcxproj	Fri Jul 04 23:18:36 2014 +0600
@@ -468,7 +468,6 @@
     <ClInclude Include="..\..\stru123.h" />
     <ClInclude Include="..\..\stru159.h" />
     <ClInclude Include="..\..\stru160.h" />
-    <ClInclude Include="..\..\stru176.h" />
     <ClInclude Include="..\..\stru298.h" />
     <ClInclude Include="..\..\stru314.h" />
     <ClInclude Include="..\..\stru367.h" />
--- a/Build/Visual Studio 2010/World of Might and Magic.vcxproj.filters	Fri Jul 04 23:17:24 2014 +0600
+++ b/Build/Visual Studio 2010/World of Might and Magic.vcxproj.filters	Fri Jul 04 23:18:36 2014 +0600
@@ -66,7 +66,6 @@
     <ClInclude Include="..\..\stru123.h" />
     <ClInclude Include="..\..\stru159.h" />
     <ClInclude Include="..\..\stru160.h" />
-    <ClInclude Include="..\..\stru176.h" />
     <ClInclude Include="..\..\stru298.h" />
     <ClInclude Include="..\..\stru314.h" />
     <ClInclude Include="..\..\stru367.h" />
--- a/GUIWindow.cpp	Fri Jul 04 23:17:24 2014 +0600
+++ b/GUIWindow.cpp	Fri Jul 04 23:18:36 2014 +0600
@@ -1870,8 +1870,8 @@
         if ( ptr_507BD0->receives_keyboard_input_2 == WINDOW_INPUT_IN_PROGRESS)
         {
           ptr_507BD0->DrawMessageBox(0);
-          ptr_507BD0->DrawText(pFontCreate, 30, 40, v27, (const char *)pKeyActionMap->pPressedKeysBuffer, 0, 0, 0);
-          v31 = pFontCreate->GetLineWidth((const char *)pKeyActionMap->pPressedKeysBuffer);
+          ptr_507BD0->DrawText(pFontCreate, 30, 40, v27, pKeyActionMap->pPressedKeysBuffer, 0, 0, 0);
+          v31 = pFontCreate->GetLineWidth(pKeyActionMap->pPressedKeysBuffer);
           ptr_507BD0->DrawFlashingInputCursor(v31 + 30, 40, pFontCreate);
           continue;
         }
@@ -1897,7 +1897,7 @@
       {
         pWindow->DrawMessageBox(0);
         pWindow->DrawText(pFontLucida, 10, 20, 0, "Making item number", 0, 0, 0);
-        pWindow->DrawText(pFontLucida, 10, 40, 0, (const char *)pKeyActionMap->pPressedKeysBuffer, 0, 0, 0);
+        pWindow->DrawText(pFontLucida, 10, 40, 0, pKeyActionMap->pPressedKeysBuffer, 0, 0, 0);
         if ( !pKeyActionMap->field_204 )
         {
           ItemGen2.Reset();
@@ -1905,7 +1905,7 @@
           pEventTimer->Resume();
           pCurrentScreen = 0;
           viewparams->bRedrawGameUI = true;
-          v26 = atoi((const char *)pKeyActionMap->pPressedKeysBuffer);
+          v26 = atoi(pKeyActionMap->pPressedKeysBuffer);
           if ( v26 > 0 )
           {
             if ( v26 < 800 )
@@ -2088,7 +2088,7 @@
       {
         pWindow->DrawMessageBox(0);
         pWindow->DrawText(pFontLucida, 10, 20, 0, "Making item number", 0, 0, 0);
-        pWindow->DrawText(pFontLucida, 10, 40, 0, (const char *)pKeyActionMap->pPressedKeysBuffer, 0, 0, 0);
+        pWindow->DrawText(pFontLucida, 10, 40, 0, pKeyActionMap->pPressedKeysBuffer, 0, 0, 0);
         if ( !pKeyActionMap->field_204 )
         {
           ItemGen2.Reset();
@@ -2096,7 +2096,7 @@
           pEventTimer->Resume();
           pCurrentScreen = SCREEN_GAME;
           viewparams->bRedrawGameUI = 1;
-          v39 = atoi((const char *)pKeyActionMap->pPressedKeysBuffer);
+          v39 = atoi(pKeyActionMap->pPressedKeysBuffer);
           if ( v39 > 0 )
           {
             if ( v39 < 800 )
--- a/Game.cpp	Fri Jul 04 23:17:24 2014 +0600
+++ b/Game.cpp	Fri Jul 04 23:18:36 2014 +0600
@@ -96,7 +96,7 @@
   pIndoorCameraD3D->CreateWorldMatrixAndSomeStuff();
   pIndoorCameraD3D->_4374E8_ProllyBuildFrustrum();
 
-  if ( pMovie )
+  if ( pMovie_Track )
   {
     /*if ( !pRenderer->pRenderD3D )
     {
@@ -166,7 +166,7 @@
     GameUI_Footer_2();
     viewparams->bRedrawGameUI = false;
   }
-  if (!pMovie)//!pVideoPlayer->pSmackerMovie)
+  if (!pMovie_Track)//!pVideoPlayer->pSmackerMovie)
   {
     GameUI_DrawMinimap(488, 16, 625, 133, viewparams->uMinimapZoom, true);//redraw = pParty->uFlags & 2);
     if (v4)
@@ -190,7 +190,7 @@
   GameUI_DrawCharacterSelectionFrame();
   if ( _44100D_should_alter_right_panel() )
     GameUI_DrawRightPanel();
-  if ( !pMovie )
+  if ( !pMovie_Track )
   {
     pStru6Instance->DrawPlayerBuffAnims();
     pOtherOverlayList->DrawTurnBasedIcon(v4);
@@ -425,7 +425,7 @@
             pNPCStats->pNewNPCData[i].uFlags &= 0xFFFFFF7Fu;
         }
         pVideoPlayer->PlayDeathMovie();
-        if ( pMovie )
+        if ( pMovie_Track )
           pVideoPlayer->Unload();
         SaveGame(0, 0);
         ++pParty->uNumDeaths;
@@ -1513,9 +1513,9 @@
           else
           {
             pKeyActionMap->EnterText(0, 19, pGUIWindow_CurrentMenu);
-            if ( strcmp((const char *)&pSavegameHeader[uLoadGameUI_SelectedSlot], pGlobalTXT_LocalizationStrings[72]) )// "Empty"
-              strcpy((char *)pKeyActionMap->pPressedKeysBuffer, (const char *)&pSavegameHeader[uLoadGameUI_SelectedSlot]);
-            pKeyActionMap->uNumKeysPressed = strlen((const char *)pKeyActionMap->pPressedKeysBuffer);
+            if ( strcmp(pSavegameHeader[uLoadGameUI_SelectedSlot].pName, pGlobalTXT_LocalizationStrings[72]) )// "Empty"
+              strcpy(pKeyActionMap->pPressedKeysBuffer, pSavegameHeader[uLoadGameUI_SelectedSlot].pName);
+            pKeyActionMap->uNumKeysPressed = strlen(pKeyActionMap->pPressedKeysBuffer);
           }
           continue;
         case UIMSG_LoadGame:
@@ -1530,7 +1530,7 @@
           if ( pGUIWindow_CurrentMenu->receives_keyboard_input_2 == WINDOW_INPUT_IN_PROGRESS)
           {
             pKeyActionMap->SetWindowInputStatus(WINDOW_INPUT_NONE);
-            strcpy((char *)&pSavegameHeader[uLoadGameUI_SelectedSlot], (const char *)pKeyActionMap->pPressedKeysBuffer);
+            strcpy((char *)&pSavegameHeader[uLoadGameUI_SelectedSlot], pKeyActionMap->pPressedKeysBuffer);
           }
           DoSavegame(uLoadGameUI_SelectedSlot);
           stru_506E40.Release();
@@ -3068,7 +3068,7 @@
               continue;
             for ( thisg = 0; thisg < (signed int)pGames_LOD->uNumSubDirs / 2; ++thisg )
             {
-              if ( !_stricmp((const char *)pGames_LOD->pSubIndices[thisg].pFilename, pCurrentMapName) )
+              if ( !_stricmp(pGames_LOD->pSubIndices[thisg].pFilename, pCurrentMapName) )
                 pPlayer9->pInstalledBeacons[uMessageParam].SaveFileID = thisg;
             }
           }
@@ -3269,7 +3269,7 @@
         case UIMSG_DD:
 			__debugbreak();
           sprintf(pTmpBuf.data(), "%s", pKeyActionMap->pPressedKeysBuffer);
-          memcpy(&v216, txt_file_frametable_parser((const char *)pKeyActionMap->pPressedKeysBuffer, &v218), sizeof(v216));
+          memcpy(&v216, txt_file_frametable_parser(pKeyActionMap->pPressedKeysBuffer, &v218), sizeof(v216));
           if ( v216.uPropCount == 1 )
           {
             pNPCData4 = (NPCData *)((signed int)pGames_LOD->uNumSubDirs / 2);
@@ -3284,7 +3284,7 @@
               thish = 0;
               do
               {
-                if ( !_stricmp((const char *)&pGames_LOD->pSubIndices[thish], Str2) )
+                if ( !_stricmp(pGames_LOD->pSubIndices[thish].pFilename, Str2) )
                   break;
                 ++thish;
                 pNPCData3 = (NPCData *)((char *)pNPCData3 + 1);
@@ -3292,7 +3292,7 @@
               while ( (signed int)pNPCData3 < (signed int)pNPCData4 );
               if ( (signed int)pNPCData3 < (signed int)pNPCData4 )
               {
-                strcpy(pCurrentMapName, (const char *)&pGames_LOD->pSubIndices[(int)pNPCData3]);
+                strcpy(pCurrentMapName, pGames_LOD->pSubIndices[(int)pNPCData3].pFilename);
                 dword_6BE364_game_settings_1 |= GAME_SETTINGS_0001;
                 uGameState = GAME_STATE_CHANGE_LOCATION;
                 OnMapLeave();
@@ -4431,8 +4431,8 @@
           {
             //typing in the line
               pKeyActionMap->EnterText(0, 19, pGUIWindow_CurrentMenu);
-              strcpy((char *)pKeyActionMap->pPressedKeysBuffer, pSavegameHeader[uLoadGameUI_SelectedSlot].pName);
-              pKeyActionMap->uNumKeysPressed = strlen((const char *)pKeyActionMap->pPressedKeysBuffer);
+              strcpy(pKeyActionMap->pPressedKeysBuffer, pSavegameHeader[uLoadGameUI_SelectedSlot].pName);
+              pKeyActionMap->uNumKeysPressed = strlen(pKeyActionMap->pPressedKeysBuffer);
           }
           break;
         case UIMSG_SaveLoadBtn:
--- a/Indoor.cpp	Fri Jul 04 23:17:24 2014 +0600
+++ b/Indoor.cpp	Fri Jul 04 23:18:36 2014 +0600
@@ -3817,7 +3817,7 @@
   {
     for (uint i = 0; i < pSector->uNumNonBSPFaces; ++i)
       //Log::Warning(L"Non-BSP face: %X", v3->pFaceIDs[v2]);
-      pBspRenderer->AddFaceToRenderList_d3d(node_id, pSector->pFaceIDs[i]);
+      pBspRenderer->AddFaceToRenderList_d3d(node_id, pSector->pFaceIDs[i]);//\recursion
   }
   /*else
   {
@@ -4139,7 +4139,7 @@
                                 this->viewing_angle_from_north_south, this->field_8_party_dir_z);
 }
 //----- (00407A1C) --------------------------------------------------------
-bool __fastcall sub_407A1C(int x, int z, int y, Vec3_int_ v)
+bool __fastcall sub_407A1C(int x, int y, int z, Vec3_int_ v)
 {
   unsigned int v4; // esi@1
   int dist_y; // edi@2
@@ -4152,18 +4152,15 @@
   int v18; // ST38_4@25
   int v19; // eax@25
   char v20; // zf@25
-  int v21; // ebx@25
+  signed int v21; // ebx@25
   signed int v23; // edi@26
   int v24; // ST34_4@30
-  Vec3_int_ v27; // ST08_12@37
-  Vec3_int_ v28; // ST08_12@37
   signed int v32; // ecx@37
   int v33; // eax@37
   int v35; // eax@39
   ODMFace *odm_face; // esi@54
-  int v40; // ebx@60
+  signed int v40; // ebx@60
   signed int v42; // edi@61
-  Vec3_int_ v45; // ST08_12@73
   signed int v49; // ecx@73
   int v50; // eax@73
   int v51; // edx@75
@@ -4174,32 +4171,24 @@
   int v63; // ST34_4@98
   int v64; // ST30_4@98
   int v65; // eax@98
-  int v66; // ebx@98
+  signed int v66; // ebx@98
   signed int v68; // edi@99
   int v69; // ST2C_4@103
-  Vec3_int_ v72; // ST08_12@111
   signed int v77; // ecx@111
   int v78; // eax@111
   int v79; // edx@113
   int v80; // ecx@113
   int v81; // eax@113
   int v87; // ecx@128
-  int v91; // ebx@136
+  signed int v91; // ebx@136
   signed int v93; // edi@137
   Vec3_int_ v97; // [sp-18h] [bp-94h]@1
-  int v98; // [sp-Ch] [bp-88h]@88
-  int v99; // [sp-Ch] [bp-88h]@126
-  int v100; // [sp-8h] [bp-84h]@88
-  int v101; // [sp-8h] [bp-84h]@126
-  int v102; // [sp-4h] [bp-80h]@88
-  int v103; // [sp-4h] [bp-80h]@126
   int v107; // [sp+10h] [bp-6Ch]@98
   int v108; // [sp+10h] [bp-6Ch]@104
   int v109; // [sp+18h] [bp-64h]@25
   int v110; // [sp+18h] [bp-64h]@31
   signed int v113; // [sp+20h] [bp-5Ch]@1
   signed int v114; // [sp+24h] [bp-58h]@1
-  unsigned int a4_8; // [sp+30h] [bp-4Ch]@1
   int v119; // [sp+34h] [bp-48h]@75
   int v120; // [sp+34h] [bp-48h]@113
   int v121; // [sp+38h] [bp-44h]@4
@@ -4257,20 +4246,19 @@
 
   //__debugbreak();    
 
-  v4 = stru_5C6E00->Atan2(v.x - x, v.y - z);
+  v4 = stru_5C6E00->Atan2(v.x - x, v.y - y);
+
+  v113 = 0;
   v114 = 0;
-  v97.z = y;
+
+  v97.z = z;
   v97.x = x;
-  v97.y = z;
-  v113 = 0;
-  a4_8 = stru_5C6E00->Atan2(v.x - x, v.y - z);
+  v97.y = y;
+
   if ( uCurrentlyLoadedLevelType == LEVEL_Indoor)
   {
     Vec3_int_::Rotate(32, stru_5C6E00->uIntegerHalfPi + v4, 0, v97, &sX, &sY, &sZ);
-    v45.z = v.z;
-    v45.x = v.x;
-    v45.y = v.y;
-    Vec3_int_::Rotate(32, stru_5C6E00->uIntegerHalfPi + v4, 0, v45, &outx, &outy, &outz);
+    Vec3_int_::Rotate(32, stru_5C6E00->uIntegerHalfPi + v4, 0, v, &outx, &outy, &outz);
     dist_y = outy - sY;
     dist_z = outz - sZ;
 	dist_x = outx - sX;
@@ -4296,17 +4284,12 @@
     {
       if ( a5b )
       {
-        v102 = sZ;
-        v100 = sY;
-        v98 = sX;
+		v59 = pIndoor->GetSector(sX, sY, sZ);
       }
       else
       {
-        v102 = outz;
-        v100 = outy;
-        v98 = outx;
+		v59 = pIndoor->GetSector(outx, outy, outz);
       }
-      v59 = pIndoor->GetSector(v98, v100, v102);
       //v60 = pIndoor->pSectors;
       //v61 = 116 * v59;
       //i = 116 * v59;
@@ -4318,14 +4301,14 @@
         v63 = fixpoint_mul(v143, face->pFacePlane_old.vNormal.x);
         v64 = fixpoint_mul(v53, face->pFacePlane_old.vNormal.z);
         v65 = fixpoint_mul(v52, face->pFacePlane_old.vNormal.y);
-        v20 = v63 + v64 + v65;
+        v20 = v63 + v64 + v65 == 0;
         v66 = v63 + v64 + v65;
         v107 = v63 + v64 + v65;
         if ( face->Portal()
           || v119 > face->pBounding.x2 || v123 < face->pBounding.x1
           || v127 > face->pBounding.y2 || v131 < face->pBounding.y1
           || v135 > face->pBounding.z2 || v139 < face->pBounding.z1
-          || !v20 )
+          || v20 )
           continue;
         v68 = -(face->pFacePlane_old.dist + sX * face->pFacePlane_old.vNormal.x
                                           + sY * face->pFacePlane_old.vNormal.y
@@ -4369,11 +4352,8 @@
       }
     }
     
-	v72.z = y;
-    v72.x = x;
-    v72.y = z;
-    Vec3_int_::Rotate(32, a4_8 - stru_5C6E00->uIntegerHalfPi, 0, v72, &sX, &sY, &sZ);
-    Vec3_int_::Rotate(32, a4_8 - stru_5C6E00->uIntegerHalfPi, 0, v, &outx, &outy, &outz);
+    Vec3_int_::Rotate(32, v4 - stru_5C6E00->uIntegerHalfPi, 0, v97, &sX, &sY, &sZ);
+    Vec3_int_::Rotate(32, v4 - stru_5C6E00->uIntegerHalfPi, 0, v, &outx, &outy, &outz);
 	dist_y = outy - sY;
 	dist_z = outz - sZ;
 	dist_x = outx - sX;
@@ -4401,41 +4381,27 @@
         return !v114 || !v113;
       if ( a5c )
       {
-        v103 = sZ;
-        v101 = sY;
-        v99 = sX;
+		v87 = pIndoor->GetSector(sX, sY, sZ);
       }
       else
       {
-        v103 = outz;
-        v101 = outy;
-        v99 = outx;
+		v87 = pIndoor->GetSector(outx, outy, outz);
       }
-      v87 = pIndoor->GetSector(v99, v101, v103);
-      //v88 = pIndoor->pSectors;
-      //v89 = 116 * v87;
-      
-      //v112 = v89;
-      //if ( *(__int16 *)((char *)&pIndoor->pSectors->uNumWalls + v89)
-         //+ 2 * *(__int16 *)((char *)&pIndoor->pSectors->uNumFloors + v89) > 0 )
-   //{
-    //while ( 1 )
     for ( v162 = 0; v162 < pIndoor->pSectors[v87].uNumFaces; v162++)
     {
       face = &pIndoor->pFaces[pIndoor->pSectors[v87].pFaceIDs[v162]];
       yb = fixpoint_mul(v144, face->pFacePlane_old.vNormal.x);
       v_4b = fixpoint_mul(v80, face->pFacePlane_old.vNormal.y);
       vf = fixpoint_mul(v81, face->pFacePlane_old.vNormal.z);
-      v20 = yb + vf + v_4b;
+      v20 = yb + vf + v_4b == 0;
       v91 = yb + vf + v_4b;
       vc = yb + vf + v_4b;
       if ( face->Portal()
         || v120 > face->pBounding.x2 || v124 < face->pBounding.x1
         || v128 > face->pBounding.y2 || v132 < face->pBounding.y1
         || v136 > face->pBounding.z2 || v140 < face->pBounding.z1
-        || !v20 )
+        || v20 )
         continue;
-      //v92 = sZ * face->pFacePlane_old.vNormal.z;
       v93 = -(face->pFacePlane_old.dist + sX * face->pFacePlane_old.vNormal.x
                                         + sY * face->pFacePlane_old.vNormal.y
                                         + sZ * face->pFacePlane_old.vNormal.z);
@@ -4458,10 +4424,6 @@
                                              + sZ * face->pFacePlane_old.vNormal.z)) >> 14;
       if ( v_4c <= abs(v91) )
       {
-        //LODWORD(v94) = v93 << 16;
-        //HIDWORD(v94) = v93 >> 16;
-        //v95 = v94 / vc;
-        //vd = v94 / vc;
         vd = fixpoint_div(v93, vc);
         if ( vd >= 0 )
         {
@@ -4513,13 +4475,13 @@
           v17 = fixpoint_mul(v125, odm_face->pFacePlane.vNormal.x);
           v18 = fixpoint_mul(v121, odm_face->pFacePlane.vNormal.y);
           v19 = fixpoint_mul(v12, odm_face->pFacePlane.vNormal.z);
-          v20 = v17 + v18 + v19;
+          v20 = v17 + v18 + v19 == 0;
           v21 = v17 + v18 + v19;
           v109 = v17 + v18 + v19;
           if ( v149 > odm_face->pBoundingBox.x2 || v145 < odm_face->pBoundingBox.x1
             || v141 > odm_face->pBoundingBox.y2 || v137 < odm_face->pBoundingBox.y1
             || v133 > odm_face->pBoundingBox.z2 || v129 < odm_face->pBoundingBox.z1
-            || !v20 )
+            || v20 )
             continue;
           v23 = -(odm_face->pFacePlane.dist + sX * odm_face->pFacePlane.vNormal.x
                                             + sY * odm_face->pFacePlane.vNormal.y
@@ -4543,10 +4505,6 @@
                                                 + sZ * odm_face->pFacePlane.vNormal.z)) >> 14;
           if ( v24 <= abs(v21) )
           {
-            //LODWORD(v25) = v23 << 16;
-            //HIDWORD(v25) = v23 >> 16;
-            //v26 = v25 / v109;
-            //v110 = v25 / v109;
             v110 = fixpoint_div(v23, v109);
             if ( v110 >= 0 )
             {
@@ -4565,14 +4523,8 @@
       }
     }
     
-	v27.z = y;
-    v27.x = x;
-    v27.y = z;
-    Vec3_int_::Rotate(32, a4_8 - stru_5C6E00->uIntegerHalfPi, 0, v27, &sX, &sY, &sZ);
-    v28.z = v.z;
-    v28.x = v.x;
-    v28.y = v.y;
-    Vec3_int_::Rotate(32, a4_8 - stru_5C6E00->uIntegerHalfPi, 0, v28, &outx, &outy, &outz);
+    Vec3_int_::Rotate(32, v4 - stru_5C6E00->uIntegerHalfPi, 0, v97, &sX, &sY, &sZ);
+    Vec3_int_::Rotate(32, v4 - stru_5C6E00->uIntegerHalfPi, 0, v, &outx, &outy, &outz);
 	dist_y = outy - sY;
 	dist_z = outz - sZ;
 	dist_x = outx - sX;
--- a/Keyboard.h	Fri Jul 04 23:17:24 2014 +0600
+++ b/Keyboard.h	Fri Jul 04 23:18:36 2014 +0600
@@ -67,7 +67,7 @@
   unsigned int pVirtualKeyCodesMapping[30];
   KeyToggleType pToggleTypes[30];
   int max_input_string_len;
-  unsigned __int8 pPressedKeysBuffer[257];
+  __int8 pPressedKeysBuffer[257];
   unsigned __int8 uNumKeysPressed;
   char field_202;
   char field_203;
--- a/LOD.cpp	Fri Jul 04 23:17:24 2014 +0600
+++ b/LOD.cpp	Fri Jul 04 23:18:36 2014 +0600
@@ -1862,7 +1862,7 @@
           v9 = v4;
           do
           {
-            result = _stricmp((const char *)pContainerName, (const char *)&v10->pSubIndices[v9]);
+            result = _stricmp(pContainerName, v10->pSubIndices[v9].pFilename);
             if ( !result )
               goto LABEL_21;
             ++v7;
@@ -1886,7 +1886,7 @@
   v8 = v4;
   while ( 1 )
   {
-    result = _stricmp((const char *)pContainerName, (const char *)&v10->pSubIndices[v8]);
+    result = _stricmp(pContainerName, v10->pSubIndices[v8].pFilename);
     if ( !result )
       break;
     ++v7;
@@ -1919,7 +1919,7 @@
   }
   else
   {
-    while ( _stricmp((const char *)pContainer, (const char *)&this_dup->pSubIndices[i]) )
+    while ( _stricmp(pContainer, this_dup->pSubIndices[i].pFilename) )
     {
       ++i_dup;
       ++i;
--- a/MediaPlayer.cpp	Fri Jul 04 23:17:24 2014 +0600
+++ b/MediaPlayer.cpp	Fri Jul 04 23:18:36 2014 +0600
@@ -20,13 +20,15 @@
 #include "stuff.h"
 #include "OpenALSoundProvider.h"
 
+#include "Log.h"
+
 #include "MediaPlayer.h"
 #include "Log.h"
 using namespace Media;
 
 Media::MPlayer *pMediaPlayer;
-Media::IMovie *pMovie;
-Media::ITrack *pTrack;
+Media::IMovie *pMovie_Track;
+Media::ITrack *pAudio_Track;
 Movie *movie;
 
 int mSourceID;
@@ -190,8 +192,9 @@
     if (dec_ctx)
     {
 	  // Close the codec
-      //   
+      //  
       avcodec_close(dec_ctx);
+	  Log::Warning(L"close decoder context file\n");
       dec_ctx = nullptr;
     }
   }
@@ -203,10 +206,9 @@
   AVCodecContext  *dec_ctx;
 };
 
-struct AVAudioStream: public AVStreamWrapper
+struct AVAudioStream: public AVStreamWrapper// AVAudioStreem    AVStreemWrapper
 {
-  inline AVAudioStream():
-    AVStreamWrapper()
+  inline AVAudioStream():AVStreamWrapper()
   {
     this->bytes_per_sample = 0;
     this->bytes_per_second = 0;
@@ -218,8 +220,7 @@
 
 struct AVVideoStream: public AVStreamWrapper
 {
-  inline AVVideoStream():
-    AVStreamWrapper()
+  inline AVVideoStream(): AVStreamWrapper()
   {
     this->frames_per_second = 0.0;
   }
@@ -655,10 +656,10 @@
   return true;
 }
 
-class Track: public Media::ITrack
+class Track: public Media::ITrack//    Media::ITrack
 {
   public:
-    inline Track()
+    inline Track()//   
     {
       this->format_ctx = nullptr;
       this->audio_num_samples = 0;
@@ -674,8 +675,9 @@
       audio.Release();
       if (format_ctx)
       {
-        //   
+        //   
         av_close_input_file(format_ctx);
+		Log::Warning(L"close audio format context file\n");
         format_ctx = nullptr;
       }
     }
@@ -760,10 +762,10 @@
     OpenALSoundProvider::TrackBuffer *device_buffer;
 };
 
-class Movie: public Media::IMovie
+class Movie: public Media::IMovie//    Media::IMovie
 {
   public:
-    inline Movie()
+    inline Movie()//   
     {
       this->movie_filename[0] = 0;
       this->width = 0;
@@ -780,9 +782,9 @@
       memset(last_resampled_frame_linesize, 0, sizeof(last_resampled_frame_linesize));
 
       decoding_packet = nullptr;
-		ioBuffer = nullptr;
-		format_ctx = nullptr;
-		avioContext = nullptr;
+	  ioBuffer = nullptr;
+	  format_ctx = nullptr;
+	  avioContext = nullptr;
     }
  
     inline void Release()
@@ -800,6 +802,7 @@
 		// Close the video file
         //   ( )
         av_close_input_file(format_ctx);
+		Log::Warning(L"close video format context file\n");
         format_ctx = nullptr;
 	  }
 	  if(avioContext)
@@ -882,7 +885,6 @@
           decoding_frame = avcodec_alloc_frame();
 
           audio_data_in_device = provider->CreateStreamingTrack16(audio.dec_ctx->channels, audio.dec_ctx->sample_rate, 2);
-
           return true;
         }
         fprintf(stderr, "ffmpeg: Unable to find stream info\n");
@@ -1038,21 +1040,25 @@
 
 ITrack *MPlayer::LoadTrack(const wchar_t *filename) // mp3
 {
-  auto track = new Track;
-  if (!track->LoadAudio(filename))
+  auto audio_track = new Track;
+  Log::Warning(L"allocation dynamic memory for audio_track\n");
+  if (!audio_track->LoadAudio(filename))
   {
-    delete track;
-    track = nullptr;
+    delete audio_track;
+	Log::Warning(L"delete dynamic memory for audio_track\n");
+    audio_track = nullptr;
   }
-  return track;
+  return audio_track;
 }
 
 IMovie *MPlayer::LoadMovie(const wchar_t *filename, int width, int height, int cache_ms)	// 
 {
   movie = new Movie;
+  Log::Warning(L"allocation dynamic memory for movie\n");
   if (!movie->Load(filename, width, height, cache_ms))
   {
     delete movie;
+	Log::Warning(L"delete dynamic memory for movie\n");
     movie = nullptr;
   }
   return movie;
@@ -1061,11 +1067,13 @@
 IMovie *MPlayer::LoadMovieFromLOD(HANDLE h, int readFunction(void*, uint8_t*, int), int64_t seekFunction(void*, int64_t, int), int width, int height)
 {
 	movie = new Movie;
+	Log::Warning(L"allocation dynamic memory for movie\n");
 	if (movie)
 	{
 		if (movie->LoadFromLOD(h, readFunction, seekFunction, width, height))
-			return movie;
+		  return movie;
 		delete movie;
+		Log::Warning(L"delete dynamic memory for movie\n");
 	}
 	return nullptr;
 }
@@ -1102,30 +1110,37 @@
   if (!provider)
   {
     provider = new OpenALSoundProvider;
+	Log::Warning(L"allocation dynamic memory for provider\n");
     provider->Initialize();
   }
 }
 
 MPlayer::~MPlayer()
 {
+	delete provider;
+	Log::Warning(L"delete dynamic memory for provider\n");
 }
 
 void PlayAudio(const wchar_t * pFilename)
 {
-  pTrack = pMediaPlayer->LoadTrack(pFilename);
-  pTrack->Play();
+  pAudio_Track = pMediaPlayer->LoadTrack(pFilename);
+  pAudio_Track->Play();
+  delete pAudio_Track;
+  Log::Warning(L"delete dynamic memory for pAudio_Track\n");
+  pAudio_Track = nullptr;
 }
 
 void PlayMovie(const wchar_t * pFilename)
 {
-  Media::IMovie *track = pMediaPlayer->LoadMovie(pFilename, 640, 480, 0);
-  track->Play();
+  Media::IMovie *Movie_track = pMediaPlayer->LoadMovie(pFilename, 640, 480, 0);
+  Movie_track->Play();
 }
 
 void MovieRelease()
 {
   movie->Release();
   delete movie;
+  Log::Warning(L"delete dynamic memory for movie\n");
   movie = nullptr;
 }
 
--- a/MediaPlayer.h	Fri Jul 04 23:17:24 2014 +0600
+++ b/MediaPlayer.h	Fri Jul 04 23:18:36 2014 +0600
@@ -1,25 +1,25 @@
 #pragma once
 
-namespace Media	//  Media
+namespace Media
 {
-  class ITrack //  
+  class ITrack
   {
     public:
-      virtual void Play(bool loop = false) = 0;
+		virtual void Play(bool loop = false) = 0;
   };
 
-  class IMovie //  
+  class IMovie
+  {
+    public: 
+		virtual void Play() = 0;
+        virtual void GetNextFrame(double dt, void *target_surface) = 0;
+  };
+
+  class MPlayer
   {
     public:
-      virtual void Play() = 0;
-      virtual void GetNextFrame(double dt, void *target_surface) = 0;
-  };
-
-  class MPlayer //   
-  {
-    public:
-               MPlayer();//  
-      virtual ~MPlayer();//
+               MPlayer();
+      virtual ~MPlayer();
 
       ITrack *LoadTrack(const wchar_t *name);
       IMovie *LoadMovie(const wchar_t *name, int width, int height, int cache_ms);
@@ -28,8 +28,8 @@
 };
 
 extern Media::MPlayer *pMediaPlayer;
-extern Media::IMovie *pMovie;
-extern Media::ITrack *pTrack;
+extern Media::IMovie *pMovie_Track;
+extern Media::ITrack *pAudio_Track;
 extern class Movie *movie;
 
 extern bool end_current_file;
--- a/OSWindow.cpp	Fri Jul 04 23:17:24 2014 +0600
+++ b/OSWindow.cpp	Fri Jul 04 23:18:36 2014 +0600
@@ -316,14 +316,14 @@
               pMiscTimer->Resume();
 
             viewparams->bRedrawGameUI = true;
-            if ( pMovie)//pVideoPlayer->pSmackerMovie )
+            if ( pMovie_Track)//pVideoPlayer->pSmackerMovie )
             {
               pRenderer->RestoreFrontBuffer();
               pRenderer->RestoreBackBuffer();
               //pVideoPlayer->_4BF5B2();
             }
           }
-          if ( pAudioPlayer->hAILRedbook && !bGameoverLoop && !pMovie)//!pVideoPlayer->pSmackerMovie )
+          if ( pAudioPlayer->hAILRedbook && !bGameoverLoop && !pMovie_Track)//!pVideoPlayer->pSmackerMovie )
             AIL_redbook_resume(pAudioPlayer->hAILRedbook);
         }
       }
@@ -332,7 +332,7 @@
         if (!(dword_6BE364_game_settings_1 & GAME_SETTINGS_APP_INACTIVE))
         {
           dword_4E98BC_bApplicationActive = 0;
-          if ( pMovie//(pVideoPlayer->pSmackerMovie || pVideoPlayer->pBinkMovie) 
+          if ( pMovie_Track//(pVideoPlayer->pSmackerMovie || pVideoPlayer->pBinkMovie) 
 			  && pVideoPlayer->bPlayingMovie )
             pVideoPlayer->bStopBeforeSchedule = 1;
 
--- a/Outdoor.cpp	Fri Jul 04 23:17:24 2014 +0600
+++ b/Outdoor.cpp	Fri Jul 04 23:18:36 2014 +0600
@@ -271,7 +271,7 @@
 }
 
 //----- (00488F5C) --------------------------------------------------------
-bool OutdoorLocation::Initialize(const char *pFilename, int File, size_t uRespawnInterval, int thisa)
+bool OutdoorLocation::Initialize(const char *pFilename, int File, size_t uRespawnInterval, int *thisa)
 {
   OutdoorLocation *v5; // esi@1
   bool result; // eax@2
@@ -1070,7 +1070,7 @@
 }
 
 //----- (0047D0A6) --------------------------------------------------------
-bool OutdoorLocation::Load(const char *pFilename, ODMFace *File, size_t pNumItems, int thisa)// 
+bool OutdoorLocation::Load(const char *pFilename, ODMFace *File, size_t pNumItems, int *thisa)// 
 {
   //OutdoorLocation *pOutdoorLocation; // esi@1
   /*bool result; // eax@9
@@ -1945,7 +1945,7 @@
     if (Str2 == 0)
       ++ddm.uNumRespawns;
     v108 = 0;
-    *(int *)thisa = 1;
+    *thisa = 1;
     v39 = pGames_LOD->FindContainer(Str, 0);
     fread(&header, 0x10, 1u, v39);
     //pFilename = (char *)header.uCompressedSize;
@@ -1971,7 +1971,7 @@
     goto LABEL_120;
 
   }
-  *(int *)thisa = 0;
+  *thisa = 0;
 LABEL_120:
   //v108 = (int)".odm";
   //v83 = strlen(pContainer);
@@ -1984,7 +1984,7 @@
 
   pGameLoadingUI_ProgressBar->Progress();
 
-  if ( *(int *)thisa )
+  if ( *thisa )
   {
     memcpy(uFullyRevealedCellOnMap, Dst, 0x3C8u);
     memcpy(uPartiallyRevealedCellOnMap, Src, 0x3C8u);
--- a/Outdoor.h	Fri Jul 04 23:17:24 2014 +0600
+++ b/Outdoor.h	Fri Jul 04 23:18:36 2014 +0600
@@ -138,7 +138,7 @@
   void PrepareActorsDrawList();
   void CreateDebugLocation();
   void Release();
-  bool Load(const char *pFilename, ODMFace *File, size_t a4, int thisa);
+  bool Load(const char *pFilename, ODMFace *File, size_t a4, int *thisa);
   int GetTileIdByTileMapId(signed int a2);
   unsigned int DoGetTileTexture(signed int uX, signed int uZ);
   int _47ED83(signed int a2, signed int a3);
@@ -158,7 +158,7 @@
   int GetSomeOtherTileInfo(int sX, int sY);
   unsigned int GetTileTexture(int sX, int sZ);
   int GetHeightOnTerrain(int sX, int sZ);
-  bool Initialize(const char *pFilename, int File, size_t uRespawnInterval, int thisa);
+  bool Initialize(const char *pFilename, int File, size_t uRespawnInterval, int *thisa);
   //bool Release2();
   bool GetTravelDestination(signed int sPartyX, signed int sPartyZ, char *pOut, signed int a5);
   void MessWithLUN();
--- a/Render.cpp	Fri Jul 04 23:17:24 2014 +0600
+++ b/Render.cpp	Fri Jul 04 23:18:36 2014 +0600
@@ -9001,7 +9001,7 @@
     && pCurrentScreen != SCREEN_CHANGE_LOCATION )
   {
 	  if (pCurrentScreen == SCREEN_INPUT_BLV)
-		  return pMovie;//pSmackerMovie != 0;
+		  return pMovie_Track;//pSmackerMovie != 0;
     if ( pCurrentScreen != SCREEN_BRANCHLESS_NPC_DIALOG )
       return true;
   }
--- a/SaveLoad.cpp	Fri Jul 04 23:17:24 2014 +0600
+++ b/SaveLoad.cpp	Fri Jul 04 23:18:36 2014 +0600
@@ -569,7 +569,7 @@
   FILE *file; // eax@7
   void *pSave; // [sp+170h] [bp-8h]@3
 
-  if ( pMovie )
+  if ( pMovie_Track )
     pVideoPlayer->Unload();
   pSave = malloc(1000000);
   pNew_LOD->CloseWriteFile();
--- a/UI/Books/UINotesBooks.cpp	Fri Jul 04 23:17:24 2014 +0600
+++ b/UI/Books/UINotesBooks.cpp	Fri Jul 04 23:18:36 2014 +0600
@@ -405,7 +405,7 @@
     journal_window.uFrameZ = game_viewport_z;
     journal_window.uFrameW = game_viewport_w;
     if ( pStorylineText->StoreLine[achieved_awards[books_primary_item_per_page]].pPageTitle )
-      journal_window.DrawTitleText(pBook2Font, 0, 22, ui_book_journal_title_color, (const char *)pStorylineText->StoreLine[achieved_awards[books_primary_item_per_page]].pPageTitle, 3);
+      journal_window.DrawTitleText(pBook2Font, 0, 22, ui_book_journal_title_color, pStorylineText->StoreLine[achieved_awards[books_primary_item_per_page]].pPageTitle, 3);
   }
 
   //for other text
@@ -441,7 +441,7 @@
     pDialogueString = BuildDialogueString(pStorylineText->StoreLine[ achieved_awards[books_primary_item_per_page]].pText, uActiveCharacter - 1,
                                           0, 0, 0, &pParty->PartyTimes.HistoryEventTimes[index]);
     pStringOnPage = pAutonoteFont->GetPageTop(pDialogueString, &journal_window, 1, (unsigned __int8)Journal_limitation_factor[books_primary_item_per_page]);
-    journal_window.DrawText(pAutonoteFont, 1, 0, ui_book_journal_text_color, (const char *)pStringOnPage, 0,
+    journal_window.DrawText(pAutonoteFont, 1, 0, ui_book_journal_text_color, pStringOnPage, 0,
                             journal_window.uFrameY + journal_window.uFrameHeight, ui_book_journal_text_shadow);
     ++num_achieved_awards;
   }
--- a/UI/UIHouses.cpp	Fri Jul 04 23:17:24 2014 +0600
+++ b/UI/UIHouses.cpp	Fri Jul 04 23:18:36 2014 +0600
@@ -1721,14 +1721,14 @@
       {
         sprintfex(pTmpBuf.data(), "%s\n%s", pGlobalTXT_LocalizationStrings[606], pGlobalTXT_LocalizationStrings[112]); // "Pay"   "How Much?"
         townHall_window.DrawTitleText(pFontArrus, 0, 146, Color16(0xFFu, 0xFFu, 0x9Bu), pTmpBuf.data(), 3);
-        townHall_window.DrawTitleText(pFontArrus, 0, 186, Color16(0xFFu, 0xFFu, 0xFFu), (const char *)pKeyActionMap->pPressedKeysBuffer, 3);
-        townHall_window.DrawFlashingInputCursor(pFontArrus->GetLineWidth((const char *)pKeyActionMap->pPressedKeysBuffer) / 2 + 80, 185, pFontArrus);
+        townHall_window.DrawTitleText(pFontArrus, 0, 186, Color16(0xFFu, 0xFFu, 0xFFu), pKeyActionMap->pPressedKeysBuffer, 3);
+        townHall_window.DrawFlashingInputCursor(pFontArrus->GetLineWidth(pKeyActionMap->pPressedKeysBuffer) / 2 + 80, 185, pFontArrus);
         return;
       }
       if ( window_SpeakInHouse->receives_keyboard_input_2 == WINDOW_INPUT_CONFIRMED)
       {
-        v1 = atoi((const char *)pKeyActionMap->pPressedKeysBuffer);
-        v2 = atoi((const char *)pKeyActionMap->pPressedKeysBuffer);
+        v1 = atoi(pKeyActionMap->pPressedKeysBuffer);
+        v2 = atoi(pKeyActionMap->pPressedKeysBuffer);
         if ( v1 <= 0 )
         {
           pMessageQueue_50CBD0->AddMessage(UIMSG_Escape, 1, 0);
@@ -1795,13 +1795,13 @@
       {
         sprintf(pTmpBuf.data(), "%s\n%s", pGlobalTXT_LocalizationStrings[60], pGlobalTXT_LocalizationStrings[112]);//"" "?"
         bank_window.DrawTitleText(pFontArrus, 0, 146, Color16(0xFFu, 0xFFu, 0x9Bu), pTmpBuf.data(), 3);
-        bank_window.DrawTitleText(pFontArrus, 0, 186, Color16(0xFFu, 0xFFu, 0xFFu), (const char *)pKeyActionMap->pPressedKeysBuffer, 3);
-        bank_window.DrawFlashingInputCursor(pFontArrus->GetLineWidth((const char *)pKeyActionMap->pPressedKeysBuffer) / 2 + 80, 185, pFontArrus);
+        bank_window.DrawTitleText(pFontArrus, 0, 186, Color16(0xFFu, 0xFFu, 0xFFu), pKeyActionMap->pPressedKeysBuffer, 3);
+        bank_window.DrawFlashingInputCursor(pFontArrus->GetLineWidth(pKeyActionMap->pPressedKeysBuffer) / 2 + 80, 185, pFontArrus);
         return;
       }
       if ( window_SpeakInHouse->receives_keyboard_input_2 == WINDOW_INPUT_CONFIRMED)
       {
-        entered_sum = atoi((const char *)pKeyActionMap->pPressedKeysBuffer);
+        entered_sum = atoi(pKeyActionMap->pPressedKeysBuffer);
         takes_sum = entered_sum;
         if ( !entered_sum )
         {
@@ -1837,14 +1837,14 @@
       {
         sprintfex(pTmpBuf.data(), "%s\n%s", pGlobalTXT_LocalizationStrings[244], pGlobalTXT_LocalizationStrings[112]);//"" "?"
         bank_window.DrawTitleText(pFontArrus, 0, 146, Color16(0xFFu, 0xFFu, 0x9Bu), pTmpBuf.data(), 3);
-        bank_window.DrawTitleText(pFontArrus, 0, 186, Color16(0xFFu, 0xFFu, 0xFFu), (const char *)pKeyActionMap->pPressedKeysBuffer, 3);
-        bank_window.DrawFlashingInputCursor(pFontArrus->GetLineWidth((const char *)pKeyActionMap->pPressedKeysBuffer) / 2 + 80, 185, pFontArrus);
+        bank_window.DrawTitleText(pFontArrus, 0, 186, Color16(0xFFu, 0xFFu, 0xFFu), pKeyActionMap->pPressedKeysBuffer, 3);
+        bank_window.DrawFlashingInputCursor(pFontArrus->GetLineWidth(pKeyActionMap->pPressedKeysBuffer) / 2 + 80, 185, pFontArrus);
         return;
       }
       if ( window_SpeakInHouse->receives_keyboard_input_2 == WINDOW_INPUT_CONFIRMED)
       {
         window_SpeakInHouse->receives_keyboard_input_2 = WINDOW_INPUT_NONE;
-        entered_sum = atoi((const char *)pKeyActionMap->pPressedKeysBuffer);
+        entered_sum = atoi(pKeyActionMap->pPressedKeysBuffer);
         takes_sum = entered_sum;
         if ( entered_sum )
         {
@@ -2183,14 +2183,14 @@
         {
           pButton = pDialogueWindow->GetControl(pItemNum);
           pButton->uY = all_text_height + v54;
-          pTextHeight = pFontArrus->CalcTextHeight((const char *)pShopOptions[pNumString], &dialog_window, 0, 0);
+          pTextHeight = pFontArrus->CalcTextHeight(pShopOptions[pNumString], &dialog_window, 0, 0);
           pButton->uHeight = pTextHeight;
           v54 = pButton->uY + pTextHeight - 1;
           pButton->uW = v54;
           pColorText = Color16(0xFFu, 0xFFu, 0x9Bu);
           if ( pDialogueWindow->pCurrentPosActiveItem != pItemNum )
             pColorText = Color16(0xFFu, 0xFFu, 0xFFu);
-          dialog_window.DrawTitleText(pFontArrus, 0, pButton->uY, pColorText, (const char *)pShopOptions[pNumString], 3);
+          dialog_window.DrawTitleText(pFontArrus, 0, pButton->uY, pColorText, pShopOptions[pNumString], 3);
           ++pNumString;
         }
       }
--- a/UI/UIPartyCreation.cpp	Fri Jul 04 23:17:24 2014 +0600
+++ b/UI/UIPartyCreation.cpp	Fri Jul 04 23:18:36 2014 +0600
@@ -154,19 +154,19 @@
       switch ( pGUIWindow_CurrentMenu->receives_keyboard_input_2 )
       {
         case WINDOW_INPUT_IN_PROGRESS://press name panel
-          v17 = pGUIWindow_CurrentMenu->DrawTextInRect(pFontCreate, 159 * (int)pGUIWindow_CurrentMenu->ptr_1C + 18, 124, 0, (const char *)pKeyActionMap->pPressedKeysBuffer, 120, 1);
+          v17 = pGUIWindow_CurrentMenu->DrawTextInRect(pFontCreate, 159 * (int)pGUIWindow_CurrentMenu->ptr_1C + 18, 124, 0, pKeyActionMap->pPressedKeysBuffer, 120, 1);
           pGUIWindow_CurrentMenu->DrawFlashingInputCursor(159 * (unsigned int)pGUIWindow_CurrentMenu->ptr_1C + v17 + 20, 124, pFontCreate);
           break;
         case WINDOW_INPUT_CONFIRMED: // press enter
           pGUIWindow_CurrentMenu->receives_keyboard_input_2 = WINDOW_INPUT_NONE;
           v126 = 0;
-          for ( int i = 0; i < strlen((const char *)pKeyActionMap->pPressedKeysBuffer); ++i )//edit name
+          for ( int i = 0; i < strlen(pKeyActionMap->pPressedKeysBuffer); ++i )//edit name
           {
             if ( pKeyActionMap->pPressedKeysBuffer[i] == ' ' )
               ++v126;
           }
-          if ( strlen((const char *)pKeyActionMap->pPressedKeysBuffer) && v126 != strlen((const char *)pKeyActionMap->pPressedKeysBuffer) )
-            strcpy(pParty->pPlayers[i].pName, (const char *)pKeyActionMap->pPressedKeysBuffer);
+          if ( strlen(pKeyActionMap->pPressedKeysBuffer) && v126 != strlen(pKeyActionMap->pPressedKeysBuffer) )
+            strcpy(pParty->pPlayers[i].pName, pKeyActionMap->pPressedKeysBuffer);
           pGUIWindow_CurrentMenu->DrawTextInRect(pFontCreate, pIntervalX, 124, 0, pParty->pPlayers[i].pName, 130, 0);
           pParty->pPlayers[i].field_1988[27] = 1;
           break;
--- a/UI/UISaveLoad.cpp	Fri Jul 04 23:17:24 2014 +0600
+++ b/UI/UISaveLoad.cpp	Fri Jul 04 23:18:36 2014 +0600
@@ -95,7 +95,7 @@
   if ( pGUIWindow_CurrentMenu->receives_keyboard_input_2 == WINDOW_INPUT_CONFIRMED)
   {
     pGUIWindow_CurrentMenu->receives_keyboard_input_2 = WINDOW_INPUT_NONE;
-    strcpy((char *)&pSavegameHeader + 100 * uLoadGameUI_SelectedSlot, (const char *)pKeyActionMap->pPressedKeysBuffer);
+    strcpy((char *)&pSavegameHeader + 100 * uLoadGameUI_SelectedSlot, pKeyActionMap->pPressedKeysBuffer);
     pMessageQueue_50CBD0->AddMessage(UIMSG_SaveGame, 0, 0);
   }
   else
@@ -108,7 +108,7 @@
     pGUIWindow_CurrentMenu->DrawText(pFontSmallnum, pFontSmallnum->AlignText_Center(186, pGlobalTXT_LocalizationStrings[135]) + 25,
         220, 0, pGlobalTXT_LocalizationStrings[135], 0, 0, 0);//
     pGUIWindow_CurrentMenu->DrawTextInRect(pFontSmallnum, pFontSmallnum->AlignText_Center(186,
-        (const char *)pSavegameHeader.data() + 100 * uLoadGameUI_SelectedSlot) + 25, 0x106, 0, pSavegameHeader[uLoadGameUI_SelectedSlot].pName, 185, 0);
+		pSavegameHeader[uLoadGameUI_SelectedSlot].pName) + 25, 0x106, 0, pSavegameHeader[uLoadGameUI_SelectedSlot].pName, 185, 0);
     pGUIWindow_CurrentMenu->DrawText(pFontSmallnum, pFontSmallnum->AlignText_Center(186, pGlobalTXT_LocalizationStrings[165]) + 25,
         304, 0, pGlobalTXT_LocalizationStrings[165], 0, 0, 0);//", "
   }
--- a/UI/UIShops.cpp	Fri Jul 04 23:17:24 2014 +0600
+++ b/UI/UIShops.cpp	Fri Jul 04 23:18:36 2014 +0600
@@ -61,13 +61,13 @@
         {
           pButton = pDialogueWindow->GetControl(i);
           pButton->uY = v103 + v19;
-          pButton->uHeight = pFontArrus->CalcTextHeight((const char *)pShopOptions[pNumString], &dialog_window, 0, 0);
-          v19 = pButton->uY + pFontArrus->CalcTextHeight((const char *)pShopOptions[pNumString], &dialog_window, 0, 0) - 1;
+          pButton->uHeight = pFontArrus->CalcTextHeight(pShopOptions[pNumString], &dialog_window, 0, 0);
+          v19 = pButton->uY + pFontArrus->CalcTextHeight(pShopOptions[pNumString], &dialog_window, 0, 0) - 1;
           pButton->uW = v19;
           pColorText = Color16(0xE1u, 0xCDu, 0x23u);
           if ( pDialogueWindow->pCurrentPosActiveItem != i )
             pColorText = Color16(0xFFu, 0xFFu, 0xFFu);
-          dialog_window.DrawTitleText(pFontArrus, 0, pButton->uY, pColorText, (const char *)pShopOptions[pNumString], 3);
+          dialog_window.DrawTitleText(pFontArrus, 0, pButton->uY, pColorText, pShopOptions[pNumString], 3);
           ++pNumString;
         }
       }
@@ -263,13 +263,13 @@
       {
         pButton = pDialogueWindow->GetControl(i);
         pButton->uY = v103 + v19;
-        pButton->uHeight = pFontArrus->CalcTextHeight((const char *)pShopOptions[pNumString], &dialog_window, 0, 0);
-        v19 = pButton->uY + pFontArrus->CalcTextHeight((const char *)pShopOptions[pNumString], &dialog_window, 0, 0) - 1;
+        pButton->uHeight = pFontArrus->CalcTextHeight(pShopOptions[pNumString], &dialog_window, 0, 0);
+        v19 = pButton->uY + pFontArrus->CalcTextHeight(pShopOptions[pNumString], &dialog_window, 0, 0) - 1;
         pButton->uW = v19;
         pColorText = Color16(0xE1u, 0xCDu, 0x23u);
         if ( pDialogueWindow->pCurrentPosActiveItem != i )
           pColorText = Color16(0xFFu, 0xFFu, 0xFFu);
-        dialog_window.DrawTitleText(pFontArrus, 0, pButton->uY, pColorText, (const char *)pShopOptions[pNumString], 3);
+        dialog_window.DrawTitleText(pFontArrus, 0, pButton->uY, pColorText, pShopOptions[pNumString], 3);
         ++pNumString;
         }
       break;
@@ -733,13 +733,13 @@
         {
           pButton = pDialogueWindow->GetControl(i);
           pButton->uY = v18 + v105;
-          pButton->uHeight = pFontArrus->CalcTextHeight((const char *)pShopOptions[pNumString], &dialog_window, 0, 0);
-          v105 = pButton->uY + pFontArrus->CalcTextHeight((const char *)pShopOptions[pNumString], &dialog_window, 0, 0) - 1;
+          pButton->uHeight = pFontArrus->CalcTextHeight(pShopOptions[pNumString], &dialog_window, 0, 0);
+          v105 = pButton->uY + pFontArrus->CalcTextHeight(pShopOptions[pNumString], &dialog_window, 0, 0) - 1;
           pButton->uW = v105;
           pColorText = Color16(0xE1u, 0xCDu, 0x23u);
           if ( pDialogueWindow->pCurrentPosActiveItem != i )
             pColorText = Color16(0xFFu, 0xFFu, 0xFFu);
-          dialog_window.DrawTitleText(pFontArrus, 0, pButton->uY, pColorText, (const char *)pShopOptions[pNumString], 3);
+          dialog_window.DrawTitleText(pFontArrus, 0, pButton->uY, pColorText, pShopOptions[pNumString], 3);
           ++pNumString;
         }
       }
@@ -982,13 +982,13 @@
       {
         pButton = pDialogueWindow->GetControl(i);
         pButton->uY = v18 + v105;
-        pButton->uHeight = pFontArrus->CalcTextHeight((const char *)pShopOptions[pNumString], &dialog_window, 0, 0);
-        v105 = pButton->uY + pFontArrus->CalcTextHeight((const char *)pShopOptions[pNumString], &dialog_window, 0, 0) - 1;
+        pButton->uHeight = pFontArrus->CalcTextHeight(pShopOptions[pNumString], &dialog_window, 0, 0);
+        v105 = pButton->uY + pFontArrus->CalcTextHeight(pShopOptions[pNumString], &dialog_window, 0, 0) - 1;
         pButton->uW = v105;
         pColorText = Color16(0xE1u, 0xCDu, 0x23u);
         if ( pDialogueWindow->pCurrentPosActiveItem != i )
           pColorText = Color16(0xFFu, 0xFFu, 0xFFu);
-        dialog_window.DrawTitleText(pFontArrus, 0, pButton->uY, pColorText, (const char *)pShopOptions[pNumString], 3);
+        dialog_window.DrawTitleText(pFontArrus, 0, pButton->uY, pColorText, pShopOptions[pNumString], 3);
         ++pNumString;
       }
       return;
--- a/UI/UITransition.cpp	Fri Jul 04 23:17:24 2014 +0600
+++ b/UI/UITransition.cpp	Fri Jul 04 23:18:36 2014 +0600
@@ -178,7 +178,7 @@
   pRenderer->DrawTextureIndexed(556, 451, pIcons_LOD->GetTexture(uTextureID_x_x_u));
   pRenderer->DrawTextureIndexed(476, 451, pIcons_LOD->GetTexture(uTextureID_x_ok_u));
   map_id = pMapStats->GetMapInfo(pCurrentMapName);
-  if ( (pMovie || v9) && *dword_591164_teleport_map_name != ' ' )
+  if ( (pMovie_Track || v9) && *dword_591164_teleport_map_name != ' ' )
     map_id = pMapStats->GetMapInfo(dword_591164_teleport_map_name);
   transition_window.uFrameX = 493;
   transition_window.uFrameWidth = 126;
--- a/UI/UiGame.cpp	Fri Jul 04 23:17:24 2014 +0600
+++ b/UI/UiGame.cpp	Fri Jul 04 23:18:36 2014 +0600
@@ -660,7 +660,7 @@
     if ( pGUIWindow2->receives_keyboard_input_2 == WINDOW_INPUT_CONFIRMED)
     {
       pGUIWindow2->receives_keyboard_input_2 = WINDOW_INPUT_NONE;
-      strcpy(GameUI_Footer_TimedString.data(), (const char *)pKeyActionMap->pPressedKeysBuffer);
+      strcpy(GameUI_Footer_TimedString.data(), pKeyActionMap->pPressedKeysBuffer);
       sub_4452BB();
       return;
     }
--- a/VideoPlayer.cpp	Fri Jul 04 23:17:24 2014 +0600
+++ b/VideoPlayer.cpp	Fri Jul 04 23:18:36 2014 +0600
@@ -144,7 +144,7 @@
 
       auto image = new char[client_width * client_height * 4];
 
-      pMovie->GetNextFrame(dt, image);	//  
+      pMovie_Track->GetNextFrame(dt, image);	//  
 
       if (end_current_file)//   ?
         break;
@@ -254,13 +254,14 @@
     AIL_redbook_resume(pAudioPlayer->hAILRedbook);
   pEventTimer->Resume();
 
-	delete pMovie;
-	pMovie = nullptr;
+  delete pMovie_Track;
+  Log::Warning(L"delete dynamic memory for pMovie_Track\n");
+  pMovie_Track = nullptr;
 }
 
 void VideoPlayer::_inlined_in_463149()
 {
-	if (pMovie)
+	if (pMovie_Track)
 	{
 		pRenderer->BeginScene();
 		pMouse->DrawCursorToTarget();
@@ -282,8 +283,9 @@
 	MovieRelease();
 
     SetFilePointer(hVidFile, uOffset, nullptr, FILE_BEGIN);
-    pMovie = nullptr;
-    pMovie = pMediaPlayer->LoadMovieFromLOD(hVidFile, &readFunction, &seekFunction, width, height);
+    pMovie_Track = nullptr;
+	Log::Warning(L"reload pMovie_Track");
+    pMovie_Track = pMediaPlayer->LoadMovieFromLOD(hVidFile, &readFunction, &seekFunction, width, height);
 	end_current_file = false;
   }
   //else 
@@ -296,7 +298,7 @@
 
       auto image = new char[current_movie_width * current_movie_height * 4];
 
-      pMovie->GetNextFrame(dt, image);
+      pMovie_Track->GetNextFrame(dt, image);
 
     int image_array[460 * 344];//game_viewport_width * game_viewport_height
     if (image)
@@ -347,7 +349,7 @@
 //----- (004BF3F9) --------------------------------------------------------
 bool VideoPlayer::AnyMovieLoaded()
 {
-	return pMovie;// pSmackerMovie || pBinkMovie;
+	return pMovie_Track;// pSmackerMovie || pBinkMovie;
 }
 
 //----- (004BF411) --------------------------------------------------------
@@ -395,7 +397,7 @@
     }
   }*/
   pMouse->_469E24();
-  if ( window_SpeakInHouse && window_SpeakInHouse->ptr_1C == (void *)165 && !pMovie)//!this->pSmackerMovie )
+  if ( window_SpeakInHouse && window_SpeakInHouse->ptr_1C == (void *)165 && !pMovie_Track)//!this->pSmackerMovie )
   {
     bGameoverLoop = true;
     HouseDialogPressCloseBtn();
@@ -449,7 +451,8 @@
   bStopBeforeSchedule = false;
   pResetflag = 0;
   pMediaPlayer = new Media::MPlayer;// 
-  pMovie = nullptr;
+  Log::Warning(L"allocation dynamic memory for pMediaPlayer\n");
+  pMovie_Track = nullptr;
   //pBinkMovie = nullptr;
 }
 
@@ -529,6 +532,6 @@
       client_height = rc_client.bottom - rc_client.top;
 
 
-  pMovie = pMediaPlayer->LoadMovieFromLOD(hVidFile, &readFunction, &seekFunction, client_width, client_height);
+  pMovie_Track = pMediaPlayer->LoadMovieFromLOD(hVidFile, &readFunction, &seekFunction, client_width, client_height);
 
 }
--- a/mm7_2.cpp	Fri Jul 04 23:17:24 2014 +0600
+++ b/mm7_2.cpp	Fri Jul 04 23:18:36 2014 +0600
@@ -2361,7 +2361,7 @@
 {
   sCurrentMenuID = uMenu;
 
-  Log::Warning(L"CurrentMenu = %s", MENU_STATE_to_string(uMenu));
+  Log::Warning(L"CurrentMenu = %s \n", MENU_STATE_to_string(uMenu));
 }
 
 //----- (00466CA0) --------------------------------------------------------
--- a/mm7_3.cpp	Fri Jul 04 23:17:24 2014 +0600
+++ b/mm7_3.cpp	Fri Jul 04 23:18:36 2014 +0600
@@ -2650,13 +2650,14 @@
   const char *pFilename; // [sp+84h] [bp-Ch]@1
   //unsigned int v12; // [sp+88h] [bp-8h]@12
   //int v13; // [sp+8Ch] [bp-4h]@11
+  int v;
 
   pFilename = pLevelFilename;
   //thisa->AllocSoftwareDrawBuffers();
   pODMRenderParams->Initialize();
   pWeather->bRenderSnow = false;
   pRenderer->ClearZBuffer(0, 479);
-  thisa = (ODMRenderParams *)1;
+  //thisa = (ODMRenderParams *)1;
   GetAlertStatus();
   if ( _A750D8_player_speech_timer )
     _A750D8_player_speech_timer = 0;
@@ -2668,14 +2669,14 @@
     v3 = v4->uRespawnIntervalDays;
   }
   else
-    v4 = (MapInfo *)thisa;
+    v4 = (MapInfo *)1;
   day_attrib &= ~DAY_ATTRIB_FOG;
   dword_6BE13C_uCurrentlyLoadedLocationID = v2;
   pOutdoor->Initialize(
     pFilename,
     (unsigned int)(signed __int64)((double)(signed __int64)pParty->uTimePlayed * 0.234375) / 0x3C / 0x3C / 0x18 + 1,
     v3,
-    (int)&thisa);
+    &v);
   if ( !(dword_6BE364_game_settings_1 & GAME_SETTINGS_2000) )
   {
     Actor::InitializeActors();
@@ -2684,8 +2685,8 @@
   dword_6BE364_game_settings_1 &= ~GAME_SETTINGS_2000;
   //v5 = 0;
   if ( !v2 )
-    thisa = 0;
-  if ( thisa == (ODMRenderParams *)1 )
+    v = 0;
+  if ( v == 1 )
   {
     //v13 = 0;
     for (uint i = 0; i < pOutdoor->uNumSpawnPoints; ++i)
--- a/mm7_5.cpp	Fri Jul 04 23:17:24 2014 +0600
+++ b/mm7_5.cpp	Fri Jul 04 23:18:36 2014 +0600
@@ -114,7 +114,7 @@
           v15 = pActors[target_id].vPosition.y - AttackerInfo.pYs[attacker_id];
           a1 = pActors[target_id].vPosition.x - AttackerInfo.pXs[attacker_id];
           v44 = pActors[target_id].vPosition.z;
-          v19 = AttackerInfo.pYs[attacker_id] + pActors[target_id].uActorRadius;
+          v19 = AttackerInfo.field_324[attacker_id] + pActors[target_id].uActorRadius;
           v48 = v15;
           if ( a1 * a1 + v15 * v15 + (pActors[target_id].vPosition.z + (pActors[target_id].uActorHeight >> 1) - AttackerInfo.pZs[attacker_id])
            * (pActors[target_id].vPosition.z + (pActors[target_id].uActorHeight >> 1) - AttackerInfo.pZs[attacker_id]) < (unsigned int)(v19 * v19) )
@@ -167,7 +167,7 @@
             v48 = pActors[actorID].vPosition.y - AttackerInfo.pYs[attacker_id];
             v44 = pActors[actorID].vPosition.z;
             v32 = (pActors[actorID].uActorHeight / 2) - AttackerInfo.pZs[attacker_id];
-            v33 = pActors[actorID].uActorRadius + AttackerInfo.pYs[attacker_id];
+            v33 = pActors[actorID].uActorRadius + AttackerInfo.field_324[attacker_id];
             if ( a1 * a1 + v48 * v48 + (v31 + v32) * (v31 + v32) < (unsigned int)(v33 * v33) )
             {
               attacker_coord.x = AttackerInfo.pXs[attacker_id];