Files
Cesarus85--mjolnir-vr/libs/d3d8/mpdac.cpp
T

47 lines
1.2 KiB
C++

/* January target/PDB reconstruction. Hardware writes are not executed here. */
#include <conio.h>
#include "hardware_internal.h"
#pragma intrinsic(_inp)
#pragma code_seg("D3D")
namespace D3D
{
void CMiniport::DacProgramGammaRamp(
D3DGAMMARAMP *ramp)
{
volatile BYTE *registers = (volatile BYTE *)m_RegisterBase;
registers[0x6813c8] = 0;
for (DWORD i = 0; i < 256; ++i)
{
registers[0x6813c9] = ramp->red[i];
registers[0x6813c9] = ramp->green[i];
registers[0x6813c9] = ramp->blue[i];
}
return;
}
}
namespace D3D
{
void CMiniport::DacProgramVideoStart(
DWORD offset)
{
DWORD oddField = ((DWORD)_inp(0x80c0) & 0x20UL) >> 5;
volatile DWORD *registers = (volatile DWORD *)m_RegisterBase;
DWORD mode = m_DisplayMode & 0xc0000000UL;
if (mode == 0x40000000UL) oddField = !oddField;
if (!m_FirstFlip)
{
if ((m_CurrentAvInfo & 0x01000000) && mode != 0x80000000UL && oddField)
{
offset -= m_SurfacePitch / 2;
}
else if (mode == 0x80000000UL && (m_CurrentAvInfo & 0x00200000) && oddField)
{
offset += m_SurfacePitch;
}
registers[0x600800 / sizeof(DWORD)] = offset;
}
return;
}
}