comparison Render.cpp @ 2410:2d3c3d1dff0c

added RenderStruct.h
author Ritor1
date Tue, 15 Jul 2014 15:44:45 +0600
parents 2fe8feb3dcd1
children e2d352b3a0a5
comparison
equal deleted inserted replaced
2409:b29880e9ee79 2410:2d3c3d1dff0c
1331 { 1331 {
1332 //IDirectDraw4 *v8; // eax@12 1332 //IDirectDraw4 *v8; // eax@12
1333 //IDirectDraw4 *v9; // eax@16 1333 //IDirectDraw4 *v9; // eax@16
1334 //IDirectDraw4 *v10; // eax@20 1334 //IDirectDraw4 *v10; // eax@20
1335 //IDirectDraw4 *v13; // eax@35 1335 //IDirectDraw4 *v13; // eax@35
1336 const char *v23; // [sp-4h] [bp-DCh]@9 1336 //const char *v23; // [sp-4h] [bp-DCh]@9
1337 const char *v24; // [sp-4h] [bp-DCh]@13 1337 //const char *v24; // [sp-4h] [bp-DCh]@13
1338 const char *v25; // [sp-4h] [bp-DCh]@19 1338 //const char *v25; // [sp-4h] [bp-DCh]@19
1339 DWORD v26; // [sp-4h] [bp-DCh]@30 1339 DWORD v26; // [sp-4h] [bp-DCh]@30
1340 DDSCAPS2 v27; // [sp+Ch] [bp-CCh]@37 1340 DDSCAPS2 v27; // [sp+Ch] [bp-CCh]@37
1341 DDSURFACEDESC2 ddsd2; // [sp+1Ch] [bp-BCh]@11 1341 DDSURFACEDESC2 ddsd2; // [sp+1Ch] [bp-BCh]@11
1342 D3DVIEWPORT2 d3dvp2; // [sp+98h] [bp-40h]@28 1342 D3DVIEWPORT2 d3dvp2; // [sp+98h] [bp-40h]@28
1343 IDirectDrawClipper *v30; // [sp+C4h] [bp-14h]@18 1343 IDirectDrawClipper *v30; // [sp+C4h] [bp-14h]@18
1368 1368
1369 if (bWindowed && !pAvailableDevices[uDeviceID].pDirectDrawGUID) 1369 if (bWindowed && !pAvailableDevices[uDeviceID].pDirectDrawGUID)
1370 { 1370 {
1371 if (FAILED(pHost->SetCooperativeLevel(hWnd, DDSCL_MULTITHREADED | DDSCL_NORMAL))) 1371 if (FAILED(pHost->SetCooperativeLevel(hWnd, DDSCL_MULTITHREADED | DDSCL_NORMAL)))
1372 { 1372 {
1373 v23 = "Init - Failed to set cooperative level.\n"; 1373 sprintf(pErrorMessage, "Init - Failed to set cooperative level.\n");
1374 sprintf(pErrorMessage, v23);
1375 LABEL_65:
1376 if (pHost) 1374 if (pHost)
1377 { 1375 {
1378 pHost->Release(); 1376 pHost->Release();
1379 pHost = 0; 1377 pHost = 0;
1380 } 1378 }
1388 { 1386 {
1389 ddsd2.dwSize = sizeof(DDSURFACEDESC2); 1387 ddsd2.dwSize = sizeof(DDSURFACEDESC2);
1390 pHost->GetDisplayMode(&ddsd2); 1388 pHost->GetDisplayMode(&ddsd2);
1391 if ( FORCE_16_BITS && ddsd2.ddpfPixelFormat.dwRGBBitCount != 16 ) 1389 if ( FORCE_16_BITS && ddsd2.ddpfPixelFormat.dwRGBBitCount != 16 )
1392 { 1390 {
1393 v24 = "Init - Desktop isn't in 16 bit mode.\n"; 1391 sprintf(pErrorMessage, "Init - Desktop isn't in 16 bit mode.\n");
1394 goto LABEL_14; 1392 if (pFrontBuffer)
1393 {
1394 pFrontBuffer->Release();
1395 pFrontBuffer = 0;
1396 }
1397 if (pHost)
1398 {
1399 pHost->Release();
1400 pHost = 0;
1401 }
1402 return 0;
1395 } 1403 }
1396 1404
1397 ddsd2.dwFlags = DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT; 1405 ddsd2.dwFlags = DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT;
1398 ddsd2.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN | DDSCAPS_3DDEVICE; 1406 ddsd2.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN | DDSCAPS_3DDEVICE;
1399 ddsd2.dwWidth = game_width; 1407 ddsd2.dwWidth = game_width;
1400 ddsd2.dwHeight = game_height; 1408 ddsd2.dwHeight = game_height;
1401 if (pHost->CreateSurface(&ddsd2, &pBackBuffer, 0) ) 1409 if (pHost->CreateSurface(&ddsd2, &pBackBuffer, 0) )
1402 { 1410 {
1403 v24 = "Init - Failed to create back buffer.\n"; 1411 sprintf(pErrorMessage, "Init - Failed to create back buffer.\n");
1404 LABEL_14:
1405 sprintf(pErrorMessage, v24);
1406 if (pFrontBuffer) 1412 if (pFrontBuffer)
1407 { 1413 {
1408 pFrontBuffer->Release(); 1414 pFrontBuffer->Release();
1409 pFrontBuffer = 0; 1415 pFrontBuffer = 0;
1410 } 1416 }
1411 goto LABEL_65; 1417 if (pHost)
1418 {
1419 pHost->Release();
1420 pHost = 0;
1421 }
1422 return 0;
1412 } 1423 }
1413 if ( pHost->CreateClipper(0, &v30, 0) ) 1424 if ( pHost->CreateClipper(0, &v30, 0) )
1414 { 1425 {
1415 v25 = "Init - Failed to create clipper.\n"; 1426 sprintf(pErrorMessage, "Init - Failed to create clipper.\n");
1416 goto LABEL_45; 1427 if (pBackBuffer)
1428 {
1429 pBackBuffer->Release();
1430 pBackBuffer = 0;
1431 }
1432 if (pFrontBuffer)
1433 {
1434 pFrontBuffer->Release();
1435 pFrontBuffer= 0;
1436 }
1437 if (pHost)
1438 {
1439 pHost->Release();
1440 pHost = 0;
1441 }
1442 return 0;
1417 } 1443 }
1418 v30->SetHWnd(0, hWnd); 1444 v30->SetHWnd(0, hWnd);
1419 pFrontBuffer->SetClipper(v30); 1445 pFrontBuffer->SetClipper(v30);
1420 1446
1421 v30->Release(); 1447 v30->Release();
1429 ddsd2.dwHeight = game_height; 1455 ddsd2.dwHeight = game_height;
1430 1456
1431 if ( pDirect3D->EnumZBufferFormats(*pAvailableDevices[uDeviceID].pGUID, 1457 if ( pDirect3D->EnumZBufferFormats(*pAvailableDevices[uDeviceID].pGUID,
1432 (HRESULT (__stdcall *)(DDPIXELFORMAT *, void *))D3DZBufferFormatEnumerator, 1458 (HRESULT (__stdcall *)(DDPIXELFORMAT *, void *))D3DZBufferFormatEnumerator,
1433 &ddsd2.ddpfPixelFormat) ) 1459 &ddsd2.ddpfPixelFormat) )
1434 goto LABEL_21; 1460 {
1461 sprintf(pErrorMessage, "Init - Failed to enumerate Z buffer formats.\n");
1462 if (pBackBuffer)
1463 {
1464 pBackBuffer->Release();
1465 pBackBuffer = 0;
1466 }
1467 if (pFrontBuffer)
1468 {
1469 pFrontBuffer->Release();
1470 pFrontBuffer= 0;
1471 }
1472 if (pHost)
1473 {
1474 pHost->Release();
1475 pHost = 0;
1476 }
1477 return 0;
1478 }
1435 if ( uDeviceID == 2 || uDeviceID == 3 ) 1479 if ( uDeviceID == 2 || uDeviceID == 3 )
1436 ddsd2.ddsCaps.dwCaps |= DDSCAPS_SYSTEMMEMORY; 1480 ddsd2.ddsCaps.dwCaps |= DDSCAPS_SYSTEMMEMORY;
1437 1481
1438 if ( !pHost->CreateSurface(&ddsd2, &pZBuffer, 0) ) 1482 if ( !pHost->CreateSurface(&ddsd2, &pZBuffer, 0) )
1439 { 1483 {
1440 if ( !pBackBuffer->AddAttachedSurface(pZBuffer) ) 1484 if ( !pBackBuffer->AddAttachedSurface(pZBuffer) )
1441 { 1485 {
1442 if ( !pDirect3D->CreateDevice(*pAvailableDevices[uDeviceID].pGUID, 1486 if ( !pDirect3D->CreateDevice(*pAvailableDevices[uDeviceID].pGUID, pBackBuffer, &pDevice, 0) )
1443 pBackBuffer,
1444 &pDevice,
1445 0) )
1446 { 1487 {
1447 memset(&d3dvp2, 0, sizeof(D3DVIEWPORT2)); 1488 memset(&d3dvp2, 0, sizeof(D3DVIEWPORT2));
1448 d3dvp2.dvClipWidth = 2.0; 1489 d3dvp2.dvClipWidth = 2.0;
1449 d3dvp2.dvClipY = 1.0; 1490 d3dvp2.dvClipY = 1.0;
1450 d3dvp2.dvClipHeight = 2.0; 1491 d3dvp2.dvClipHeight = 2.0;
1451 d3dvp2.dvMaxZ = 1.0; 1492 d3dvp2.dvMaxZ = 1.0;
1452 d3dvp2.dvMinZ = 0.0; 1493 d3dvp2.dvMinZ = 0.0;
1453 goto LABEL_54; 1494 goto LABEL_54;
1454 } 1495 }
1455 LABEL_51:
1456 sprintf(pErrorMessage, "Init - Failed to create D3D device.\n"); 1496 sprintf(pErrorMessage, "Init - Failed to create D3D device.\n");
1457 if (pDirect3D) 1497 if (pDirect3D)
1458 { 1498 {
1459 pDirect3D->Release(); 1499 pDirect3D->Release();
1460 pDirect3D = 0; 1500 pDirect3D = 0;
1461 } 1501 }
1462 goto LABEL_59; 1502 if (pZBuffer)
1503 {
1504 pZBuffer->Release();
1505 pZBuffer = 0;
1506 }
1507 if (pBackBuffer)
1508 {
1509 pBackBuffer->Release();
1510 pBackBuffer = 0;
1511 }
1512 if (pFrontBuffer)
1513 {
1514 pFrontBuffer->Release();
1515 pFrontBuffer= 0;
1516 }
1517 if (pHost)
1518 {
1519 pHost->Release();
1520 pHost = 0;
1521 }
1522 return 0;
1463 } 1523 }
1464 LABEL_48:
1465 sprintf(pErrorMessage, "Init - Failed to attach z-buffer to back buffer.\n"); 1524 sprintf(pErrorMessage, "Init - Failed to attach z-buffer to back buffer.\n");
1466 if (pZBuffer) 1525 if (pZBuffer)
1467 { 1526 {
1468 pZBuffer->Release(); 1527 pZBuffer->Release();
1469 pZBuffer = 0; 1528 pZBuffer = 0;
1470 } 1529 }
1471 goto LABEL_61; 1530 if (pBackBuffer)
1472 } 1531 {
1473 goto LABEL_44; 1532 pBackBuffer->Release();
1474 } 1533 pBackBuffer = 0;
1475 LABEL_36: 1534 }
1476 v23 = "Init - Failed to create front buffer.\n"; 1535 if (pFrontBuffer)
1477 sprintf(pErrorMessage, v23); 1536 {
1478 goto LABEL_65; 1537 pFrontBuffer->Release();
1538 pFrontBuffer= 0;
1539 }
1540 if (pHost)
1541 {
1542 pHost->Release();
1543 pHost = 0;
1544 }
1545 return 0;
1546 }
1547 sprintf(pErrorMessage, "Init - Failed to create z-buffer.\n");
1548 if (pBackBuffer)
1549 {
1550 pBackBuffer->Release();
1551 pBackBuffer = 0;
1552 }
1553 if (pFrontBuffer)
1554 {
1555 pFrontBuffer->Release();
1556 pFrontBuffer= 0;
1557 }
1558 if (pHost)
1559 {
1560 pHost->Release();
1561 pHost = 0;
1562 }
1563 return 0;
1564 }
1565 sprintf(pErrorMessage, "Init - Failed to create front buffer.\n");
1566 if (pHost)
1567 {
1568 pHost->Release();
1569 pHost = 0;
1570 }
1571 return 0;
1479 } 1572 }
1480 if ( uDeviceID == 1 ) 1573 if ( uDeviceID == 1 )
1481 v26 = 1045; 1574 v26 = 1045;
1482 else 1575 else
1483 v26 = 1041; 1576 v26 = 1041;
1484 if (pHost->SetCooperativeLevel(hWnd, v26) ) 1577 if (pHost->SetCooperativeLevel(hWnd, v26) )
1485 { 1578 {
1486 v23 = "Init - Failed to set cooperative level.\n"; 1579 sprintf(pErrorMessage, "Init - Failed to set cooperative level.\n");
1487 sprintf(pErrorMessage, v23); 1580 if (pHost)
1488 goto LABEL_65; 1581 {
1582 pHost->Release();
1583 pHost = 0;
1584 }
1585 return 0;
1489 } 1586 }
1490 if (pHost->SetDisplayMode(window->GetWidth(), window->GetHeight(), 16, 0, 0) ) 1587 if (pHost->SetDisplayMode(window->GetWidth(), window->GetHeight(), 16, 0, 0) )
1491 { 1588 {
1492 v23 = "Init - Failed to set display mode.\n"; 1589 sprintf(pErrorMessage, "Init - Failed to set display mode.\n");
1493 sprintf(pErrorMessage, v23); 1590 if (pHost)
1494 goto LABEL_65; 1591 {
1592 pHost->Release();
1593 pHost = 0;
1594 }
1595 return 0;
1495 } 1596 }
1496 1597
1497 memset(&ddsd2, 0, sizeof(DDSURFACEDESC2)); 1598 memset(&ddsd2, 0, sizeof(DDSURFACEDESC2));
1498 ddsd2.dwSize = sizeof(DDSURFACEDESC2); 1599 ddsd2.dwSize = sizeof(DDSURFACEDESC2);
1499 ddsd2.dwFlags = DDSD_CAPS | DDSD_BACKBUFFERCOUNT; 1600 ddsd2.dwFlags = DDSD_CAPS | DDSD_BACKBUFFERCOUNT;
1500 ddsd2.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE | DDSCAPS_3DDEVICE | DDSCAPS_FLIP | DDSCAPS_COMPLEX; 1601 ddsd2.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE | DDSCAPS_3DDEVICE | DDSCAPS_FLIP | DDSCAPS_COMPLEX;
1501 ddsd2.dwBackBufferCount = 1; 1602 ddsd2.dwBackBufferCount = 1;
1502 if ( pHost->CreateSurface(&ddsd2, &pFrontBuffer, 0) ) 1603 if ( pHost->CreateSurface(&ddsd2, &pFrontBuffer, 0) )
1503 goto LABEL_36; 1604 {
1605 sprintf(pErrorMessage, "Init - Failed to create front buffer.\n");
1606 if (pHost)
1607 {
1608 pHost->Release();
1609 pHost = 0;
1610 }
1611 return 0;
1612 }
1504 //a3a = &pBackBuffer; 1613 //a3a = &pBackBuffer;
1505 //v14 = *v34; 1614 //v14 = *v34;
1506 memset(&v27, 0, sizeof(DDSCAPS2)); 1615 memset(&v27, 0, sizeof(DDSCAPS2));
1507 v27.dwCaps = DDSCAPS_BACKBUFFER; 1616 v27.dwCaps = DDSCAPS_BACKBUFFER;
1508 //v33 = (IDirect3DDevice3 **)v14->GetAttachedSurface(&v27, &pBackBuffer); 1617 //v33 = (IDirect3DDevice3 **)v14->GetAttachedSurface(&v27, &pBackBuffer);
1509 //hWnda = &pDirect3D; 1618 //hWnda = &pDirect3D;
1510 pHost->QueryInterface(IID_IDirect3D3, (LPVOID *)&pDirect3D); 1619 pHost->QueryInterface(IID_IDirect3D3, (LPVOID *)&pDirect3D);
1511 if (FAILED(pFrontBuffer->GetAttachedSurface(&v27, &pBackBuffer))) 1620 if (FAILED(pFrontBuffer->GetAttachedSurface(&v27, &pBackBuffer)))
1512 { 1621 {
1513 v25 = "Init - Failed to get D3D interface.\n"; 1622 sprintf(pErrorMessage, "Init - Failed to get D3D interface.\n");
1514 goto LABEL_45; 1623 if (pBackBuffer)
1624 {
1625 pBackBuffer->Release();
1626 pBackBuffer = 0;
1627 }
1628 if (pFrontBuffer)
1629 {
1630 pFrontBuffer->Release();
1631 pFrontBuffer= 0;
1632 }
1633 if (pHost)
1634 {
1635 pHost->Release();
1636 pHost = 0;
1637 }
1638 return 0;
1515 } 1639 }
1516 1640
1517 ddsd2.dwFlags = DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT | DDSD_PIXELFORMAT; 1641 ddsd2.dwFlags = DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT | DDSD_PIXELFORMAT;
1518 ddsd2.ddsCaps.dwCaps = DDSCAPS_ZBUFFER; 1642 ddsd2.ddsCaps.dwCaps = DDSCAPS_ZBUFFER;
1519 ddsd2.dwWidth = 640; 1643 ddsd2.dwWidth = 640;
1520 ddsd2.dwHeight = 480; 1644 ddsd2.dwHeight = 480;
1521 if ( pDirect3D->EnumZBufferFormats(*pAvailableDevices[uDeviceID].pGUID, 1645 if ( pDirect3D->EnumZBufferFormats(*pAvailableDevices[uDeviceID].pGUID,
1522 (HRESULT (__stdcall *)(DDPIXELFORMAT *, void *))D3DZBufferFormatEnumerator, 1646 (HRESULT (__stdcall *)(DDPIXELFORMAT *, void *))D3DZBufferFormatEnumerator,
1523 &ddsd2.ddpfPixelFormat) ) 1647 &ddsd2.ddpfPixelFormat) )
1524 { 1648 {
1525 LABEL_21: 1649 sprintf(pErrorMessage, "Init - Failed to enumerate Z buffer formats.\n");
1526 v25 = "Init - Failed to enumerate Z buffer formats.\n"; 1650 if (pBackBuffer)
1527 goto LABEL_45; 1651 {
1652 pBackBuffer->Release();
1653 pBackBuffer = 0;
1654 }
1655 if (pFrontBuffer)
1656 {
1657 pFrontBuffer->Release();
1658 pFrontBuffer= 0;
1659 }
1660 if (pHost)
1661 {
1662 pHost->Release();
1663 pHost = 0;
1664 }
1665 return 0;
1528 } 1666 }
1529 if ( uDeviceID == 2 || uDeviceID == 3 ) 1667 if ( uDeviceID == 2 || uDeviceID == 3 )
1530 BYTE1(ddsd2.ddsCaps.dwCaps) |= 8u; 1668 BYTE1(ddsd2.ddsCaps.dwCaps) |= 8u;
1531 //uDeviceIDa = &pZBuffer; 1669 //uDeviceIDa = &pZBuffer;
1532 if (pHost->CreateSurface(&ddsd2, &pZBuffer, 0) ) 1670 if (pHost->CreateSurface(&ddsd2, &pZBuffer, 0) )
1533 { 1671 {
1534 LABEL_44: 1672 sprintf(pErrorMessage, "Init - Failed to create z-buffer.\n");
1535 v25 = "Init - Failed to create z-buffer.\n";
1536 LABEL_45:
1537 sprintf(pErrorMessage, v25);
1538 if (pBackBuffer) 1673 if (pBackBuffer)
1539 { 1674 {
1540 pBackBuffer->Release(); 1675 pBackBuffer->Release();
1541 pBackBuffer = 0; 1676 pBackBuffer = 0;
1542 } 1677 }
1543 LABEL_63:
1544 //v19 = &pFrontBuffer;
1545 if (pFrontBuffer) 1678 if (pFrontBuffer)
1546 { 1679 {
1547 pFrontBuffer->Release(); 1680 pFrontBuffer->Release();
1548 pFrontBuffer= 0; 1681 pFrontBuffer= 0;
1549 } 1682 }
1550 goto LABEL_65; 1683 if (pHost)
1684 {
1685 pHost->Release();
1686 pHost = 0;
1687 }
1688 return 0;
1551 } 1689 }
1552 if (pBackBuffer->AddAttachedSurface(pZBuffer)) 1690 if (pBackBuffer->AddAttachedSurface(pZBuffer))
1553 goto LABEL_48; 1691 {
1692 sprintf(pErrorMessage, "Init - Failed to attach z-buffer to back buffer.\n");
1693 if (pZBuffer)
1694 {
1695 pZBuffer->Release();
1696 pZBuffer = 0;
1697 }
1698 if (pBackBuffer)
1699 {
1700 pBackBuffer->Release();
1701 pBackBuffer = 0;
1702 }
1703 if (pFrontBuffer)
1704 {
1705 pFrontBuffer->Release();
1706 pFrontBuffer= 0;
1707 }
1708 if (pHost)
1709 {
1710 pHost->Release();
1711 pHost = 0;
1712 }
1713 return 0;
1714 }
1554 //v33 = &pDevice; 1715 //v33 = &pDevice;
1555 if (pDirect3D->CreateDevice(*pAvailableDevices[uDeviceID].pGUID, 1716 if (pDirect3D->CreateDevice(*pAvailableDevices[uDeviceID].pGUID, pBackBuffer, &pDevice, 0) )
1556 pBackBuffer, 1717 {
1557 &pDevice, 1718 sprintf(pErrorMessage, "Init - Failed to create D3D device.\n");
1558 0) ) 1719 if (pDirect3D)
1559 goto LABEL_51; 1720 {
1721 pDirect3D->Release();
1722 pDirect3D = 0;
1723 }
1724 if (pZBuffer)
1725 {
1726 pZBuffer->Release();
1727 pZBuffer = 0;
1728 }
1729 if (pBackBuffer)
1730 {
1731 pBackBuffer->Release();
1732 pBackBuffer = 0;
1733 }
1734 if (pFrontBuffer)
1735 {
1736 pFrontBuffer->Release();
1737 pFrontBuffer= 0;
1738 }
1739 if (pHost)
1740 {
1741 pHost->Release();
1742 pHost = 0;
1743 }
1744 return 0;
1745 }
1560 memset(&d3dvp2, 0, sizeof(D3DVIEWPORT2)); 1746 memset(&d3dvp2, 0, sizeof(D3DVIEWPORT2));
1561 d3dvp2.dvClipWidth = 2.0; 1747 d3dvp2.dvClipWidth = 2.0;
1562 d3dvp2.dvClipY = 1.0; 1748 d3dvp2.dvClipY = 1.0;
1563 d3dvp2.dvClipHeight = 2.0; 1749 d3dvp2.dvClipHeight = 2.0;
1564 d3dvp2.dvMaxZ = 1.0; 1750 d3dvp2.dvMaxZ = 1.0;
1582 if (pDirect3D) 1768 if (pDirect3D)
1583 { 1769 {
1584 pDirect3D->Release(); 1770 pDirect3D->Release();
1585 pDirect3D = 0; 1771 pDirect3D = 0;
1586 } 1772 }
1587 LABEL_59:
1588 if (pZBuffer) 1773 if (pZBuffer)
1589 { 1774 {
1590 pZBuffer->Release(); 1775 pZBuffer->Release();
1591 pZBuffer = 0; 1776 pZBuffer = 0;
1592 } 1777 }
1593 LABEL_61:
1594 if (pBackBuffer) 1778 if (pBackBuffer)
1595 { 1779 {
1596 pBackBuffer->Release(); 1780 pBackBuffer->Release();
1597 pBackBuffer = 0; 1781 pBackBuffer = 0;
1598 } 1782 }
1599 goto LABEL_63; 1783 if (pFrontBuffer)
1784 {
1785 pFrontBuffer->Release();
1786 pFrontBuffer= 0;
1787 }
1788 if (pHost)
1789 {
1790 pHost->Release();
1791 pHost = 0;
1792 }
1793 return 0;
1600 } 1794 }
1601 1795
1602 pDevice->AddViewport(pViewport); 1796 pDevice->AddViewport(pViewport);
1603 pViewport->SetViewport2(&d3dvp2); 1797 pViewport->SetViewport2(&d3dvp2);
1604 pDevice->SetCurrentViewport(pViewport); 1798 pDevice->SetCurrentViewport(pViewport);
2767 } 2961 }
2768 2962
2769 //----- (0049FD3A) -------------------------------------------------------- 2963 //----- (0049FD3A) --------------------------------------------------------
2770 void Render::_49FD3A_fullscreen() 2964 void Render::_49FD3A_fullscreen()
2771 { 2965 {
2772 Render *v2; // esi@1 2966 //Render *v2; // esi@1
2773 IDirectDrawSurface4 *v3; // eax@6 2967 //IDirectDrawSurface4 *v3; // eax@6
2774 IDirectDrawSurface4 *v4; // ST0C_4@6 2968 //IDirectDrawSurface4 *v4; // ST0C_4@6
2775 RECT v5; // [sp+8h] [bp-10h]@6 2969 RECT v5; // [sp+8h] [bp-10h]@6
2776 2970
2777 Render* a1 = this; 2971 //Render* a1 = this;
2778 v2 = a1; 2972 //v2 = this;
2779 if ( a1->pRenderD3D ) 2973 if ( this->pRenderD3D )
2780 { 2974 {
2781 if (pFrontBuffer4->IsLost() == DDERR_SURFACELOST) 2975 if (pFrontBuffer4->IsLost() == DDERR_SURFACELOST)
2782 pFrontBuffer4->Restore(); 2976 pFrontBuffer4->Restore();
2783 if (pBackBuffer4->IsLost() == DDERR_SURFACELOST) 2977 if (pBackBuffer4->IsLost() == DDERR_SURFACELOST)
2784 pBackBuffer4->Restore(); 2978 pBackBuffer4->Restore();
2785 v3 = v2->pBackBuffer4; 2979 //v3 = this->pBackBuffer4;
2786 v4 = v2->pFrontBuffer4; 2980 //v4 = this->pFrontBuffer4;
2787 v5.top = 0; 2981 v5.top = 0;
2788 v5.bottom = window->GetHeight(); 2982 v5.bottom = window->GetHeight();
2789 v5.left = 0; 2983 v5.left = 0;
2790 v5.right = window->GetWidth(); 2984 v5.right = window->GetWidth();
2791 v3->BltFast(0, 0, v4, &v5, 16u); 2985 this->pBackBuffer4->BltFast(0, 0, this->pFrontBuffer4, &v5, 16);
2792 } 2986 }
2793 } 2987 }
2794 2988
2795 //----- (0049FDBF) -------------------------------------------------------- 2989 //----- (0049FDBF) --------------------------------------------------------
2796 void Render::CreateZBuffer() 2990 void Render::CreateZBuffer()
2803 } 2997 }
2804 2998
2805 //----- (0049FE05) -------------------------------------------------------- 2999 //----- (0049FE05) --------------------------------------------------------
2806 void Render::Release() 3000 void Render::Release()
2807 { 3001 {
2808 Render *v1; // esi@1 3002 //Render *v1; // esi@1
2809 //RenderD3D *v2; // ecx@1 3003 //RenderD3D *v2; // ecx@1
2810 //char v3; // zf@4 3004 //char v3; // zf@4
2811 //void *v4; // ebx@6 3005 //void *v4; // ebx@6
2812 // IDirectDraw *v5; // eax@10 3006 // IDirectDraw *v5; // eax@10
2813 // IDirectDrawSurface2 *v6; // eax@11 3007 // IDirectDrawSurface2 *v6; // eax@11
2820 // IDirectDrawSurface4 *v13; // eax@24 3014 // IDirectDrawSurface4 *v13; // eax@24
2821 // IDirectDraw4 *v14; // eax@26 3015 // IDirectDraw4 *v14; // eax@26
2822 // unsigned __int16 **v15; // ebx@28 3016 // unsigned __int16 **v15; // ebx@28
2823 // void **v16; // esi@29 3017 // void **v16; // esi@29
2824 3018
2825 v1 = this; 3019 // v1 = this;
2826 if (pRenderD3D) 3020 if (pRenderD3D)
2827 { 3021 {
2828 if ( v1->using_software_screen_buffer ) 3022 if ( this->using_software_screen_buffer )
2829 { 3023 {
2830 pRenderD3D->ClearTarget(true, 0, false, 1.0); 3024 pRenderD3D->ClearTarget(true, 0, false, 1.0);
2831 pRenderD3D->Present(0); 3025 pRenderD3D->Present(0);
2832 pRenderD3D->ClearTarget(true, 0, false, 1.0); 3026 pRenderD3D->ClearTarget(true, 0, false, 1.0);
2833 } 3027 }
2834 //v1->pColorKeySurface4 = 0; 3028 //this->pColorKeySurface4 = 0;
2835 v1->pBackBuffer4 = nullptr; 3029 this->pBackBuffer4 = nullptr;
2836 v1->pFrontBuffer4 = nullptr; 3030 this->pFrontBuffer4 = nullptr;
2837 v1->pDirectDraw4 = nullptr; 3031 this->pDirectDraw4 = nullptr;
2838 delete [] v1->pTargetSurface_unaligned; 3032 delete [] this->pTargetSurface_unaligned;
2839 v1->pTargetSurface = nullptr; 3033 this->pTargetSurface = nullptr;
2840 v1->pTargetSurface_unaligned = nullptr; 3034 this->pTargetSurface_unaligned = nullptr;
2841 if (pRenderD3D) 3035 if (pRenderD3D)
2842 { 3036 {
2843 pRenderD3D->Release(); 3037 pRenderD3D->Release();
2844 delete pRenderD3D; 3038 delete pRenderD3D;
2845 } 3039 }
2848 else 3042 else
2849 ;//__debugbreak(); // no sr 3043 ;//__debugbreak(); // no sr
2850 /*{ 3044 /*{
2851 if ( bWinNT4_0 == 1 ) 3045 if ( bWinNT4_0 == 1 )
2852 { 3046 {
2853 v5 = (IDirectDraw *)v1->pDirectDraw2; 3047 v5 = (IDirectDraw *)this->pDirectDraw2;
2854 if ( !v5 ) 3048 if ( !v5 )
2855 return; 3049 return;
2856 v5->SetCooperativeLevel(v1->hWnd, 8u); 3050 v5->SetCooperativeLevel(this->hWnd, 8u);
2857 v1->pDirectDraw2->FlipToGDISurface(); 3051 this->pDirectDraw2->FlipToGDISurface();
2858 v6 = v1->pSomeSurface2; 3052 v6 = this->pSomeSurface2;
2859 if ( v6 ) 3053 if ( v6 )
2860 { 3054 {
2861 v6->Release(); 3055 v6->Release();
2862 v1->pSomeSurface2 = 0; 3056 this->pSomeSurface2 = 0;
2863 } 3057 }
2864 v7 = v1->pBackBuffer2; 3058 v7 = this->pBackBuffer2;
2865 if ( v7 ) 3059 if ( v7 )
2866 { 3060 {
2867 v7->Release(); 3061 v7->Release();
2868 v1->pBackBuffer2 = 0; 3062 this->pBackBuffer2 = 0;
2869 } 3063 }
2870 v8 = v1->pFrontBuffer2; 3064 v8 = this->pFrontBuffer2;
2871 if ( v8 ) 3065 if ( v8 )
2872 { 3066 {
2873 v8->Release(); 3067 v8->Release();
2874 v1->pFrontBuffer2 = 0; 3068 this->pFrontBuffer2 = 0;
2875 } 3069 }
2876 v9 = v1->pDirectDraw2; 3070 v9 = this->pDirectDraw2;
2877 if ( v9 ) 3071 if ( v9 )
2878 { 3072 {
2879 v9->Release(); 3073 v9->Release();
2880 v1->pDirectDraw2 = 0; 3074 this->pDirectDraw2 = 0;
2881 } 3075 }
2882 } 3076 }
2883 else 3077 else
2884 { 3078 {
2885 v10 = v1->pDirectDraw4; 3079 v10 = this->pDirectDraw4;
2886 if ( !v10 ) 3080 if ( !v10 )
2887 return; 3081 return;
2888 v10->SetCooperativeLevel(v1->hWnd, 1032u); 3082 v10->SetCooperativeLevel(this->hWnd, 1032u);
2889 v1->pDirectDraw4->FlipToGDISurface(); 3083 this->pDirectDraw4->FlipToGDISurface();
2890 v11 = v1->pColorKeySurface4; 3084 v11 = this->pColorKeySurface4;
2891 if ( v11 ) 3085 if ( v11 )
2892 { 3086 {
2893 v11->Release(); 3087 v11->Release();
2894 v1->pColorKeySurface4 = 0; 3088 this->pColorKeySurface4 = 0;
2895 } 3089 }
2896 v12 = v1->pBackBuffer4; 3090 v12 = this->pBackBuffer4;
2897 if ( v12 ) 3091 if ( v12 )
2898 { 3092 {
2899 v12->Release(); 3093 v12->Release();
2900 v1->pBackBuffer4 = 0; 3094 this->pBackBuffer4 = 0;
2901 } 3095 }
2902 v13 = v1->pFrontBuffer4; 3096 v13 = this->pFrontBuffer4;
2903 if ( v13 ) 3097 if ( v13 )
2904 { 3098 {
2905 v13->Release(); 3099 v13->Release();
2906 v1->pFrontBuffer4 = 0; 3100 this->pFrontBuffer4 = 0;
2907 } 3101 }
2908 v14 = v1->pDirectDraw4; 3102 v14 = this->pDirectDraw4;
2909 if ( v14 ) 3103 if ( v14 )
2910 { 3104 {
2911 v14->Release(); 3105 v14->Release();
2912 v1->pDirectDraw4 = 0; 3106 this->pDirectDraw4 = 0;
2913 } 3107 }
2914 } 3108 }
2915 v15 = &v1->pTargetSurface; 3109 v15 = &this->pTargetSurface;
2916 if ( v1->pTargetSurface ) 3110 if ( this->pTargetSurface )
2917 { 3111 {
2918 v16 = (void **)&v1->ptr_400E8; 3112 v16 = (void **)&this->ptr_400E8;
2919 free(*v16); 3113 free(*v16);
2920 *v15 = 0; 3114 *v15 = 0;
2921 *v16 = 0; 3115 *v16 = 0;
2922 } 3116 }
2923 }*/ 3117 }*/
2924 } 3118 }
2925
2926
2927
2928 3119
2929 void Present32(unsigned __int32 *src, unsigned int src_pitch, 3120 void Present32(unsigned __int32 *src, unsigned int src_pitch,
2930 unsigned __int32 *dst, unsigned int dst_pitch) 3121 unsigned __int32 *dst, unsigned int dst_pitch)
2931 { 3122 {
2932 for (uint y = 0; y < 8; ++y) 3123 for (uint y = 0; y < 8; ++y)
3134 { 3325 {
3135 //Render *v2; // esi@1 3326 //Render *v2; // esi@1
3136 //HWND v3; // ebx@1 3327 //HWND v3; // ebx@1
3137 //void *v4; // eax@2 3328 //void *v4; // eax@2
3138 //RenderD3D *v5; // eax@3 3329 //RenderD3D *v5; // eax@3
3139 unsigned int v6; // edx@5 3330 //unsigned int v6; // edx@5
3140 RenderD3D__DevInfo *v7; // ecx@5 3331 RenderD3D__DevInfo *v7; // ecx@5
3141 bool v8; // eax@6 3332 bool v8; // eax@6
3142 RenderD3D *v9; // ecx@13 3333 //RenderD3D *v9; // ecx@13
3143 unsigned int v10; // eax@13 3334 unsigned int v10; // eax@13
3144 RenderD3D *v11; // eax@25 3335 //RenderD3D *v11; // eax@25
3145 // HRESULT v12; // eax@25 3336 // HRESULT v12; // eax@25
3146 int v13; // ecx@25 3337 int v13; // ecx@25
3147 int v14; // eax@27 3338 int v14; // eax@27
3148 signed int v15; // ebx@31 3339 signed int v15; // ebx@31
3149 //bool v16; // eax@35 3340 //bool v16; // eax@35
3155 int v23; // ecx@42 3346 int v23; // ecx@42
3156 D3DDEVICEDESC refCaps; // [sp+Ch] [bp-300h]@25 3347 D3DDEVICEDESC refCaps; // [sp+Ch] [bp-300h]@25
3157 DDSURFACEDESC2 pDesc; // [sp+108h] [bp-204h]@40 3348 DDSURFACEDESC2 pDesc; // [sp+108h] [bp-204h]@40
3158 D3DDEVICEDESC halCaps; // [sp+184h] [bp-188h]@25 3349 D3DDEVICEDESC halCaps; // [sp+184h] [bp-188h]@25
3159 // DDSURFACEDESC2 ddsd2; // [sp+280h] [bp-8Ch]@38 3350 // DDSURFACEDESC2 ddsd2; // [sp+280h] [bp-8Ch]@38
3160 void *v28; // [sp+2FCh] [bp-10h]@2 3351 //void *v28; // [sp+2FCh] [bp-10h]@2
3161 int v29; // [sp+308h] [bp-4h]@2 3352 int v29; // [sp+308h] [bp-4h]@2
3162 3353
3163 __debugbreak(); // Nomad 3354 __debugbreak(); // Nomad
3164 3355
3165 //v2 = this; 3356 //v2 = this;
3183 v15 = 1; 3374 v15 = 1;
3184 } 3375 }
3185 else 3376 else
3186 {*/ 3377 {*/
3187 pRenderD3D = new RenderD3D; 3378 pRenderD3D = new RenderD3D;
3188 v28 = pRenderD3D; 3379 //v28 = pRenderD3D;
3189 v6 = uDesiredDirect3DDevice; 3380 //v6 = uDesiredDirect3DDevice;
3190 v29 = -1; 3381 v29 = -1;
3191 v7 = pRenderD3D->pAvailableDevices; 3382 v7 = pRenderD3D->pAvailableDevices;
3192 if ( v7[v6].bIsDeviceCompatible ) 3383 if ( pRenderD3D->pAvailableDevices[uDesiredDirect3DDevice].bIsDeviceCompatible )
3193 { 3384 v8 = pRenderD3D->CreateDevice(uDesiredDirect3DDevice, /*0*/true, window);
3194 v8 = pRenderD3D->CreateDevice(v6, /*0*/true, window);
3195 }
3196 else 3385 else
3197 { 3386 {
3198 if ( v7[1].bIsDeviceCompatible ) 3387 if ( v7[1].bIsDeviceCompatible )
3199 {
3200 v8 = pRenderD3D->CreateDevice(1, /*0*/true, window); 3388 v8 = pRenderD3D->CreateDevice(1, /*0*/true, window);
3201 }
3202 else 3389 else
3203 { 3390 {
3204 if ( !v7->bIsDeviceCompatible ) 3391 if ( !v7->bIsDeviceCompatible )
3205 Error("There aren't any D3D devices to create."); 3392 Error("There aren't any D3D devices to create.");
3206 3393
3208 } 3395 }
3209 } 3396 }
3210 if ( !v8 ) 3397 if ( !v8 )
3211 Error("D3Drend->Init failed."); 3398 Error("D3Drend->Init failed.");
3212 3399
3213 v9 = pRenderD3D; 3400 //v9 = pRenderD3D;
3214 pBackBuffer4 = v9->pBackBuffer; 3401 pBackBuffer4 = pRenderD3D->pBackBuffer;
3215 pFrontBuffer4 = v9->pFrontBuffer; 3402 pFrontBuffer4 = pRenderD3D->pFrontBuffer;
3216 pDirectDraw4 = v9->pHost; 3403 pDirectDraw4 = pRenderD3D->pHost;
3217 v10 = pRenderD3D->GetDeviceCaps(); 3404 v10 = pRenderD3D->GetDeviceCaps();
3218 if ( v10 & 1 ) 3405 if ( v10 & 1 )
3219 { 3406 {
3220 if ( pRenderD3D ) 3407 if ( pRenderD3D )
3221 { 3408 {
3258 //LOBYTE(field_10365C) = ~(unsigned __int8)(v10 >> 6) & 1; 3445 //LOBYTE(field_10365C) = ~(unsigned __int8)(v10 >> 6) & 1;
3259 bRequiredTextureStagesAvailable = CheckTextureStages(); 3446 bRequiredTextureStagesAvailable = CheckTextureStages();
3260 memset(&halCaps, 0, 0xFCu); 3447 memset(&halCaps, 0, 0xFCu);
3261 halCaps.dwSize = 252; 3448 halCaps.dwSize = 252;
3262 memset(&refCaps, 0, 0xFCu); 3449 memset(&refCaps, 0, 0xFCu);
3263 v11 = pRenderD3D; 3450 //v11 = pRenderD3D;
3264 refCaps.dwSize = 252; 3451 refCaps.dwSize = 252;
3265 ErrD3D(v11->pDevice->GetCaps(&halCaps, &refCaps)); 3452 ErrD3D(pRenderD3D->pDevice->GetCaps(&halCaps, &refCaps));
3266 v13 = halCaps.dwMinTextureWidth; 3453 v13 = halCaps.dwMinTextureWidth;
3267 if ( (unsigned int)halCaps.dwMinTextureWidth >= halCaps.dwMinTextureHeight ) 3454 if ( (unsigned int)halCaps.dwMinTextureWidth >= halCaps.dwMinTextureHeight )
3268 v13 = halCaps.dwMinTextureHeight; 3455 v13 = halCaps.dwMinTextureHeight;
3269 v14 = halCaps.dwMaxTextureWidth; 3456 v14 = halCaps.dwMaxTextureWidth;
3270 uMinDeviceTextureDim = v13; 3457 uMinDeviceTextureDim = v13;
3340 pTargetSurface = (unsigned __int32 *)((char *)v22 + 2 * v23); 3527 pTargetSurface = (unsigned __int32 *)((char *)v22 + 2 * v23);
3341 } 3528 }
3342 using_software_screen_buffer = v15; 3529 using_software_screen_buffer = v15;
3343 //} 3530 //}
3344 bWindowMode = 0; 3531 bWindowMode = 0;
3345 pParty->uFlags |= 2u; 3532 pParty->uFlags |= 2;
3346 pViewport->SetFOV(flt_6BE3A0 * 65536.0f); 3533 pViewport->SetFOV(flt_6BE3A0 * 65536.0f);
3347 return v15 != 0; 3534 return v15 != 0;
3348 } 3535 }
3349 3536
3350 //----- (004A05F3) -------------------------------------------------------- 3537 //----- (004A05F3) --------------------------------------------------------
3993 } 4180 }
3994 4181
3995 //----- (004A121C) -------------------------------------------------------- 4182 //----- (004A121C) --------------------------------------------------------
3996 void Render::CreateFrontBuffer() 4183 void Render::CreateFrontBuffer()
3997 { 4184 {
3998 Render *v1; // esi@1 4185 //Render *v1; // esi@1
3999 IDirectDraw *pDD; // eax@3 4186 IDirectDraw *pDD; // eax@3
4000 IDirectDrawSurface **pOutSurf; // esi@3 4187 IDirectDrawSurface **pOutSurf; // esi@3
4001 struct _DDSURFACEDESC *v4; // edx@3 4188 struct _DDSURFACEDESC *v4; // edx@3
4002 //// HRESULT v5; // eax@5 4189 //// HRESULT v5; // eax@5
4003 int v6; // [sp-8h] [bp-8Ch]@3 4190 int v6; // [sp-8h] [bp-8Ch]@3
4004 unsigned int v7; // [sp-4h] [bp-88h]@3 4191 unsigned int v7; // [sp-4h] [bp-88h]@3
4005 DDSURFACEDESC2 a2; // [sp+4h] [bp-80h]@3 4192 DDSURFACEDESC2 a2; // [sp+4h] [bp-80h]@3
4006 4193
4007 v1 = this; 4194 //v1 = this;
4008 //if (pVersion->pVersionInfo.dwPlatformId != VER_PLATFORM_WIN32_NT || 4195 //if (pVersion->pVersionInfo.dwPlatformId != VER_PLATFORM_WIN32_NT ||
4009 //pVersion->pVersionInfo.dwMajorVersion != 4 ) 4196 //pVersion->pVersionInfo.dwMajorVersion != 4 )
4010 { 4197 {
4011 memset(&a2, 0, 0x7Cu); 4198 memset(&a2, 0, 0x7Cu);
4012 pDD = (IDirectDraw *)v1->pDirectDraw4; 4199 pDD = (IDirectDraw *)this->pDirectDraw4;
4013 a2.dwSize = 124; 4200 a2.dwSize = 124;
4014 a2.dwFlags = 1; 4201 a2.dwFlags = 1;
4015 v7 = 0; 4202 v7 = 0;
4016 a2.ddsCaps.dwCaps = 512; 4203 a2.ddsCaps.dwCaps = 512;
4017 v6 = 2357; 4204 v6 = 2357;
4018 pOutSurf = (IDirectDrawSurface **)&v1->pFrontBuffer4; 4205 pOutSurf = (IDirectDrawSurface **)&this->pFrontBuffer4;
4019 v4 = (struct _DDSURFACEDESC *)&a2; 4206 v4 = (struct _DDSURFACEDESC *)&a2;
4020 } 4207 }
4021 /*else 4208 /*else
4022 { 4209 {
4023 memset(&a2.lPitch, 0, 0x6Cu); // DDSURFACEDESC here 4210 memset(&a2.lPitch, 0, 0x6Cu); // DDSURFACEDESC here
4034 } 4221 }
4035 4222
4036 //----- (004A12CD) -------------------------------------------------------- 4223 //----- (004A12CD) --------------------------------------------------------
4037 void Render::CreateBackBuffer() 4224 void Render::CreateBackBuffer()
4038 { 4225 {
4039 Render *v1; // esi@1 4226 //Render *v1; // esi@1
4040 IDirectDraw *v2; // eax@3 4227 IDirectDraw *v2; // eax@3
4041 IDirectDrawSurface **ppBackBuffer; // esi@3 4228 IDirectDrawSurface **ppBackBuffer; // esi@3
4042 struct _DDSURFACEDESC *v4; // edx@3 4229 struct _DDSURFACEDESC *v4; // edx@3
4043 // HRESULT v5; // eax@5 4230 // HRESULT v5; // eax@5
4044 int v6; // [sp-8h] [bp-8Ch]@3 4231 int v6; // [sp-8h] [bp-8Ch]@3
4045 unsigned int v7; // [sp-4h] [bp-88h]@3 4232 unsigned int v7; // [sp-4h] [bp-88h]@3
4046 DDSURFACEDESC2 a2; // [sp+4h] [bp-80h]@3 4233 DDSURFACEDESC2 a2; // [sp+4h] [bp-80h]@3
4047 4234
4048 v1 = this; 4235 //v1 = this;
4049 //if (pVersion->pVersionInfo.dwPlatformId != VER_PLATFORM_WIN32_NT || 4236 //if (pVersion->pVersionInfo.dwPlatformId != VER_PLATFORM_WIN32_NT ||
4050 // pVersion->pVersionInfo.dwMajorVersion != 4 ) 4237 // pVersion->pVersionInfo.dwMajorVersion != 4 )
4051 { 4238 {
4052 memset(&a2, 0, 0x7Cu); 4239 memset(&a2, 0, 0x7Cu);
4053 v2 = (IDirectDraw *)v1->pDirectDraw4; 4240 v2 = (IDirectDraw *)this->pDirectDraw4;
4054 a2.dwSize = 124; 4241 a2.dwSize = 124;
4055 a2.dwFlags = 7; 4242 a2.dwFlags = 7;
4056 v7 = 0; 4243 v7 = 0;
4057 a2.ddsCaps.dwCaps = 2112; 4244 a2.ddsCaps.dwCaps = 2112;
4058 a2.dwWidth = window->GetWidth(); 4245 a2.dwWidth = window->GetWidth();
4059 a2.dwHeight = window->GetHeight(); 4246 a2.dwHeight = window->GetHeight();
4060 v6 = 2387; 4247 v6 = 2387;
4061 ppBackBuffer = (IDirectDrawSurface **)&v1->pBackBuffer4; 4248 ppBackBuffer = (IDirectDrawSurface **)&this->pBackBuffer4;
4062 v4 = (struct _DDSURFACEDESC *)&a2; 4249 v4 = (struct _DDSURFACEDESC *)&a2;
4063 } 4250 }
4064 /*else 4251 /*else
4065 { 4252 {
4066 memset(&a2.lPitch, 0, 0x6Cu); 4253 memset(&a2.lPitch, 0, 0x6Cu);
4079 } 4266 }
4080 4267
4081 //----- (004A139A) -------------------------------------------------------- 4268 //----- (004A139A) --------------------------------------------------------
4082 void Render::CreateDirectDrawPrimarySurface() 4269 void Render::CreateDirectDrawPrimarySurface()
4083 { 4270 {
4084 Render *v1; // esi@1 4271 //Render *v1; // esi@1
4085 //int v2; // ebx@3 4272 //int v2; // ebx@3
4086 // IDirectDraw2 *v3; // eax@3 4273 // IDirectDraw2 *v3; // eax@3
4087 // HRESULT v4; // eax@3 4274 // HRESULT v4; // eax@3
4088 IDirectDrawSurface *pFrontBuffer; // eax@3 4275 IDirectDrawSurface *pFrontBuffer; // eax@3
4089 DDSCAPS2 *v6; // edx@3 4276 DDSCAPS2 *v6; // edx@3
4098 // unsigned int v15; // [sp+8h] [bp-98h]@0 4285 // unsigned int v15; // [sp+8h] [bp-98h]@0
4099 DDSURFACEDESC2 ddsd2; // [sp+Ch] [bp-94h]@3 4286 DDSURFACEDESC2 ddsd2; // [sp+Ch] [bp-94h]@3
4100 DDSCAPS2 v17; // [sp+88h] [bp-18h]@4 4287 DDSCAPS2 v17; // [sp+88h] [bp-18h]@4
4101 // int a4; // [sp+98h] [bp-8h]@3 4288 // int a4; // [sp+98h] [bp-8h]@3
4102 4289
4103 v1 = this; 4290 //v1 = this;
4104 //if (pVersion->pVersionInfo.dwPlatformId != VER_PLATFORM_WIN32_NT || 4291 //if (pVersion->pVersionInfo.dwPlatformId != VER_PLATFORM_WIN32_NT ||
4105 //pVersion->pVersionInfo.dwMajorVersion != 4 ) 4292 //pVersion->pVersionInfo.dwMajorVersion != 4 )
4106 { 4293 {
4107 //v2 = 0; 4294 //v2 = 0;
4108 //this->field_4004C = 1; 4295 //this->field_4004C = 1;
4109 memset(&ddsd2, 0, 0x7Cu); 4296 memset(&ddsd2, 0, 0x7Cu);
4110 v7 = v1->pDirectDraw4; 4297 v7 = this->pDirectDraw4;
4111 ddsd2.dwBackBufferCount = 1; 4298 ddsd2.dwBackBufferCount = 1;
4112 ddsd2.dwSize = 0x7Cu; 4299 ddsd2.dwSize = 0x7Cu;
4113 ddsd2.dwFlags = DDSD_CAPS | DDSD_BACKBUFFERCOUNT; 4300 ddsd2.dwFlags = DDSD_CAPS | DDSD_BACKBUFFERCOUNT;
4114 ddsd2.ddsCaps.dwCaps = DDSCAPS_COMPLEX | DDSCAPS_FLIP | DDSCAPS_3DDEVICE | DDSCAPS_PRIMARYSURFACE; 4301 ddsd2.ddsCaps.dwCaps = DDSCAPS_COMPLEX | DDSCAPS_FLIP | DDSCAPS_3DDEVICE | DDSCAPS_PRIMARYSURFACE;
4115 ErrD3D(v7->CreateSurface( 4302 ErrD3D(v7->CreateSurface(&ddsd2, &pFrontBuffer4, 0));
4116 &ddsd2, 4303 pFrontBuffer = (IDirectDrawSurface *)this->pFrontBuffer4;
4117 &pFrontBuffer4, 4304 ppBackBuffer = (IDirectDrawSurface **)&this->pBackBuffer4;
4118 0));
4119 pFrontBuffer = (IDirectDrawSurface *)v1->pFrontBuffer4;
4120 ppBackBuffer = (IDirectDrawSurface **)&v1->pBackBuffer4;
4121 } 4305 }
4122 /*else 4306 /*else
4123 { 4307 {
4124 v2 = 0; 4308 v2 = 0;
4125 this->field_4004C = 1; 4309 this->field_4004C = 1;