diff --git a/xbox/native-bios/App.cpp b/xbox/native-bios/App.cpp index d47f675b6a..e3c7e44be0 100644 --- a/xbox/native-bios/App.cpp +++ b/xbox/native-bios/App.cpp @@ -348,7 +348,7 @@ public: }; m_sound->get_rate = [this]() { return static_cast(m_sampleRate); }; m_api = std::make_unique(Api{{1920, 1080, 1}, {}, {}, {}, *m_graphics, *m_sound, {}}); - m_api->system.version = "1.0.0.29"; + m_api->system.version = "1.0.0.30"; m_api->telemetry = [](std::string_view line) { std::string safe(line); for (auto& character : safe) if (character == '\n' || character == '\r') character = ' '; @@ -499,6 +499,9 @@ private: ComPtr adapter; ComPtr factory; Check(m_device.As(&dxgiDevice)); + const auto latencyResult = dxgiDevice->SetMaximumFrameLatency(1); + LogTelemetry("AC_NATIVE_FRAME_LATENCY max=1 status=" + + std::to_string(static_cast(latencyResult))); Check(dxgiDevice->GetAdapter(&adapter)); Check(adapter->GetParent(IID_PPV_ARGS(&factory))); @@ -517,13 +520,6 @@ private: desc.AlphaMode = DXGI_ALPHA_MODE_IGNORE; Check(factory->CreateSwapChainForCoreWindow( m_device.Get(), reinterpret_cast(m_window), &desc, nullptr, &m_swapChain)); - ComPtr latencySwapChain; - if (SUCCEEDED(m_swapChain.As(&latencySwapChain))) { - const auto latencyResult = latencySwapChain->SetMaximumFrameLatency(1); - LogTelemetry("AC_NATIVE_FRAME_LATENCY max=1 status=" + - std::to_string(static_cast(latencyResult))); - } - Check(m_swapChain->GetBuffer(0, IID_PPV_ARGS(&m_backBuffer))); D3D11_TEXTURE2D_DESC backBufferDesc{}; m_backBuffer->GetDesc(&backBufferDesc); @@ -1580,7 +1576,7 @@ private: if (!m_networkClockRequestInFlight.compare_exchange_strong(expected, true)) return; const auto sentAt = SystemUnixMs(); auto client = ref new HttpClient(); - client->DefaultRequestHeaders->UserAgent->ParseAdd("AC-Native-BIOS/1.0.0.29 Xbox ClockSync"); + client->DefaultRequestHeaders->UserAgent->ParseAdd("AC-Native-BIOS/1.0.0.30 Xbox ClockSync"); create_task(client->GetStringAsync( ref new Uri(L"https://aesthetic.computer/api/clock"))) .then([this, client, sentAt](task completed) { @@ -1687,7 +1683,7 @@ private: if (!m_acRequestInFlight.compare_exchange_strong(expected, true)) return; auto client = ref new HttpClient(); - client->DefaultRequestHeaders->UserAgent->ParseAdd("AC-Native-BIOS/1.0.0.29 Xbox"); + client->DefaultRequestHeaders->UserAgent->ParseAdd("AC-Native-BIOS/1.0.0.30 Xbox"); std::vector> requests; requests.push_back(create_task(client->GetStringAsync( ref new Uri(L"https://aesthetic.computer/api/mood/moods-of-the-day")))); diff --git a/xbox/native-bios/Package.appxmanifest b/xbox/native-bios/Package.appxmanifest index ecfe37f692..f6a8f86476 100644 --- a/xbox/native-bios/Package.appxmanifest +++ b/xbox/native-bios/Package.appxmanifest @@ -5,7 +5,7 @@ IgnorableNamespaces="uap mp"> + Version="1.0.0.30" /> diff --git a/xbox/native-bios/README.md b/xbox/native-bios/README.md index 72e1899da5..f4aef1aac1 100644 --- a/xbox/native-bios/README.md +++ b/xbox/native-bios/README.md @@ -61,7 +61,7 @@ The bridge reads CoreMIDI, prints the live event stream, and sends one compact UDP datagram per musical event. The Xbox HUD changes from `NETWORK-LISTENING :51337` to `NETWORK: REFACE YC` after the first packet. -Revision 29 also caps the DXGI frame queue at one and records controller-edge +Revision 30 caps the DXGI device frame queue at one and records controller-edge to-present latency as `AC_NATIVE_INPUT_LATENCY`. OSKIEWAR emits OSC addresses under `/oskiewar/*` on UDP `51338`; `ac-m4l/AC-OSKIEWAR.amxd.json` turns combat events into notes and player position / round clock into CC20–24. diff --git a/xbox/native-bios/pch.h b/xbox/native-bios/pch.h index 26412edd38..50961f2673 100644 --- a/xbox/native-bios/pch.h +++ b/xbox/native-bios/pch.h @@ -10,7 +10,6 @@ #include #include #include -#include #include #include #include