# SDL: Simulate NTSC timings for Windows desktop display modes

**URL:** <https://discourse.libsdl.org/t/sdl-simulate-ntsc-timings-for-windows-desktop-display-modes/41530>\
**Category:** SDL Commits\
**Created:** [January 3, 2023, 2:36pm UTC](https://discourse.libsdl.org/t/sdl-simulate-ntsc-timings-for-windows-desktop-display-modes/41530 "2023-01-03T14:36:15Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![SDLPushPostBot](https://discourse.libsdl.org/user_avatar/discourse.libsdl.org/sdlpushpostbot/32/4370_2.png) [@SDLPushPostBot](https://discourse.libsdl.org/u/SDLPushPostBot)\
**Post date:** [January 3, 2023, 2:36pm UTC](https://discourse.libsdl.org/t/sdl-simulate-ntsc-timings-for-windows-desktop-display-modes/41530/1 "2023-01-03T14:36:15Z")

</div>

> <https://github.com/libsdl-org/SDL/commit/72f0056961b0df4b6c6a09aa7f0092644a1af823>

```diff
From 72f0056961b0df4b6c6a09aa7f0092644a1af823 Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Mon, 2 Jan 2023 16:24:15 -0800
Subject: [PATCH] Simulate NTSC timings for Windows desktop display modes

---
 src/video/windows/SDL_windowsmodes.c | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/src/video/windows/SDL_windowsmodes.c b/src/video/windows/SDL_windowsmodes.c
index 27771533bb18..2f6a18b2d98c 100644
--- a/src/video/windows/SDL_windowsmodes.c
+++ b/src/video/windows/SDL_windowsmodes.c
@@ -159,6 +159,19 @@ static SDL_DisplayOrientation WIN_GetDisplayOrientation(DEVMODE *mode)
     }
 }
 
+static float WIN_GetRefreshRate(DEVMODE *mode)
+{
+ /* We're not currently using DXGI to query display modes, so fake NTSC timings */
+ switch (mode->dmDisplayFrequency) {
+ case 119:
+ case 59:
+ case 29:
+ return ((100 * (mode->dmDisplayFrequency + 1) * 1000) / 1001) / 100.0f;
+ default:
+ return (float)mode->dmDisplayFrequency;
+ }
+}
+
 static SDL_bool WIN_GetDisplayMode(_THIS, LPCWSTR deviceName, DWORD index, SDL_DisplayMode *mode, SDL_DisplayOrientation *orientation)
 {
     SDL_DisplayModeData *data;
@@ -181,7 +194,7 @@ static SDL_bool WIN_GetDisplayMode(_THIS, LPCWSTR deviceName, DWORD index, SDL_D
     mode->format = SDL_PIXELFORMAT_UNKNOWN;
     mode->w = data->DeviceMode.dmPelsWidth;
     mode->h = data->DeviceMode.dmPelsHeight;
- mode->refresh_rate = (float)data->DeviceMode.dmDisplayFrequency;
+ mode->refresh_rate = WIN_GetRefreshRate(&data->DeviceMode);
 
     /* Fill in the mode information */
     WIN_UpdateDisplayMode(_this, deviceName, index, mode);

```
