This commit is contained in:
Christian Semmler 2024-01-03 21:50:59 -05:00
parent 50541075eb
commit 29facdf35f
2 changed files with 68 additions and 12 deletions

View File

@ -473,8 +473,9 @@ MxS32 MxDeviceEnumerate::ProcessDeviceBytes(MxS32 p_deviceNum, GUID& p_guid)
return -1; return -1;
GUID4 compareGuid; GUID4 compareGuid;
MxDeviceEnumerateElement& elem = *it; MxDeviceEnumerateElement& deviceEnumerate = *it;
for (list<MxDevice>::iterator it2 = elem.m_devices.begin(); it2 != elem.m_devices.end(); it2++) { for (list<MxDevice>::iterator it2 = deviceEnumerate.m_devices.begin(); it2 != deviceEnumerate.m_devices.end();
it2++) {
memcpy(&compareGuid, (*it2).m_guid, sizeof(GUID4)); memcpy(&compareGuid, (*it2).m_guid, sizeof(GUID4));
if (compareGuid.m_data1 == deviceGuid.m_data1 && compareGuid.m_data2 == deviceGuid.m_data2 && if (compareGuid.m_data1 == deviceGuid.m_data1 && compareGuid.m_data2 == deviceGuid.m_data2 &&
@ -521,10 +522,51 @@ MxResult MxDeviceEnumerate::GetDevice(
return FAILURE; return FAILURE;
} }
// STUB: LEGO1 0x1009d0d0 // FUNCTION: LEGO1 0x1009d0d0
MxResult MxDeviceEnumerate::FUN_1009d0d0() MxS32 MxDeviceEnumerate::FUN_1009d0d0()
{ {
return FAILURE; if (!m_initialized)
return -1;
if (m_list.empty())
return -1;
MxS32 i = 0;
MxS32 j = 0;
MxS32 k = -1;
MxU32 und = FUN_1009d1a0();
for (list<MxDeviceEnumerateElement>::iterator it = m_list.begin();; it++) {
if (it == m_list.end())
return k;
for (list<MxDevice>::iterator it2 = (*it).m_devices.begin(); it2 != (*it).m_devices.end(); it2++) {
if ((*it2).m_HWDesc.dcmColorModel)
return j;
if ((und && (*it2).m_HELDesc.dcmColorModel == D3DCOLOR_RGB && i == 0) ||
(*it2).m_HELDesc.dcmColorModel == D3DCOLOR_MONO && i == 0 && k < 0)
k = j;
j++;
}
i++;
}
return -1;
}
// STUB: LEGO1 0x1009d1a0
undefined4 MxDeviceEnumerate::FUN_1009d1a0()
{
return 1;
}
// STUB: LEGO1 0x1009d1e0
undefined4 MxDeviceEnumerate::FUN_1009d1e0()
{
return 1;
} }
// FUNCTION: LEGO1 0x1009d210 // FUNCTION: LEGO1 0x1009d210
@ -534,21 +576,22 @@ MxResult MxDeviceEnumerate::FUN_1009d210()
return FAILURE; return FAILURE;
for (list<MxDeviceEnumerateElement>::iterator it = m_list.begin(); it != m_list.end();) { for (list<MxDeviceEnumerateElement>::iterator it = m_list.begin(); it != m_list.end();) {
MxDeviceEnumerateElement& elem = *it; MxDeviceEnumerateElement& deviceEnumerate = *it;
if (!FUN_1009d370(elem)) if (!FUN_1009d370(deviceEnumerate))
m_list.erase(it++); m_list.erase(it++);
else { else {
for (list<MxDevice>::iterator it2 = elem.m_devices.begin(); it2 != elem.m_devices.end();) { for (list<MxDevice>::iterator it2 = deviceEnumerate.m_devices.begin();
it2 != deviceEnumerate.m_devices.end();) {
MxDevice& device = *it2; MxDevice& device = *it2;
if (!FUN_1009d3d0(device)) if (!FUN_1009d3d0(device))
elem.m_devices.erase(it2++); deviceEnumerate.m_devices.erase(it2++);
else else
it2++; it2++;
} }
if (elem.m_devices.empty()) if (deviceEnumerate.m_devices.empty())
m_list.erase(it++); m_list.erase(it++);
else else
it++; it++;
@ -573,8 +616,19 @@ MxBool MxDeviceEnumerate::FUN_1009d370(MxDeviceEnumerateElement& p_deviceEnumera
return FALSE; return FALSE;
} }
// STUB: LEGO1 0x1009d3d0 // FUNCTION: LEGO1 0x1009d3d0
MxBool MxDeviceEnumerate::FUN_1009d3d0(MxDevice& p_device) MxBool MxDeviceEnumerate::FUN_1009d3d0(MxDevice& p_device)
{ {
if (m_list.size() <= 0)
return FALSE;
if (p_device.m_HWDesc.dcmColorModel)
return p_device.m_HWDesc.dwDeviceZBufferBitDepth & DDBD_16 && p_device.m_HWDesc.dpcTriCaps.dwTextureCaps & 1;
for (list<MxDevice>::iterator it = m_list.front().m_devices.begin(); it != m_list.front().m_devices.end(); it++) {
if ((&*it) == &p_device)
return TRUE;
}
return FALSE; return FALSE;
} }

View File

@ -181,7 +181,7 @@ class MxDeviceEnumerate {
MxS32 ParseDeviceName(const char* p_deviceId); MxS32 ParseDeviceName(const char* p_deviceId);
MxS32 ProcessDeviceBytes(MxS32 p_deviceNum, GUID& p_guid); MxS32 ProcessDeviceBytes(MxS32 p_deviceNum, GUID& p_guid);
MxResult GetDevice(MxS32 p_deviceNum, MxDeviceEnumerateElement*& p_deviceEnumerate, MxDevice*& p_device); MxResult GetDevice(MxS32 p_deviceNum, MxDeviceEnumerateElement*& p_deviceEnumerate, MxDevice*& p_device);
MxResult FUN_1009d0d0(); MxS32 FUN_1009d0d0();
MxResult FUN_1009d210(); MxResult FUN_1009d210();
MxBool FUN_1009d370(MxDeviceEnumerateElement& p_deviceEnumerate); MxBool FUN_1009d370(MxDeviceEnumerateElement& p_deviceEnumerate);
MxBool FUN_1009d3d0(MxDevice& p_device); MxBool FUN_1009d3d0(MxDevice& p_device);
@ -198,6 +198,8 @@ class MxDeviceEnumerate {
LPD3DDEVICEDESC p_HELDesc, LPD3DDEVICEDESC p_HELDesc,
LPVOID p_context LPVOID p_context
); );
static undefined4 FUN_1009d1a0();
static undefined4 FUN_1009d1e0();
private: private:
list<MxDeviceEnumerateElement> m_list; // 0x04 list<MxDeviceEnumerateElement> m_list; // 0x04