Mercurial > mm7
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; |