├── .gitignore
├── assets
├── 00-cables-and-inputs
│ ├── 001-input-keyboard-click-remapping.png
│ ├── 002-input-mouse-click-remapping.png
│ ├── 003-input-mouse-move.png
│ ├── 004-input-move-vs.-click.png
│ ├── 005-all-input-types.png
│ ├── 006-cable-extension.png
│ ├── 007-.png
│ ├── 007-response-time-median-vs.-num-samples.png
│ ├── data.json
│ └── properties.json
└── 01-nvidia-reflex
│ ├── 001-baseline.png
│ ├── 002-different-locations.png
│ ├── 003-different-sessions.png
│ ├── 004-gpu-overclock.png
│ ├── 005-gsync.png
│ ├── 006-gsync-split-fps-range.png
│ ├── 007-reduce-buffering.png
│ ├── 008-nvidia-reflex-cpu-limited.png
│ ├── 009-nvidia-reflex-cpu-limited-boost.png
│ ├── 010-nvidia-reflex-cpu-limited-no-gpu-oc-boost.png
│ ├── 011-cpu-limited-boost-vs-oc.png
│ ├── 012-gpu-limited.png
│ ├── 013-gpu-limited-nvidia-reflex-enabled.png
│ ├── 014-gpu-limited-nvidia-reflex.png
│ ├── 015-gpu-limited-nvidia-reflex-no-oc.png
│ ├── 016-gpu-limited-nvidia-reflex-boost-vs-oc.png
│ ├── 017-gpu-limited-reduce-buffering-off-nvidia-reflex.png
│ ├── 018-gpu-limited-nvidia-reflex-enabled-reduce-buffering.png
│ ├── 019-low-latency-mode-reflex-enabled.png
│ ├── 020-nvidia-reflex-cpu-limited-measurement-2.png
│ ├── 021-nvidia-reflex-gpu-limited-measurement-2.png
│ ├── 022-reflex-mis-prediction.png
│ ├── backpressure.png
│ ├── backpressure.psd
│ ├── buffering.png
│ ├── buffering.psd
│ ├── data.json
│ ├── diytest.png
│ ├── diytest.psd
│ └── properties.json
├── code
├── ResponseTimeTester
│ ├── ResponseTimeTester.atsln
│ ├── ResponseTimeTester.atsuo
│ └── ResponseTimeTester
│ │ ├── ResponseTimeTester.cproj
│ │ ├── boardtest.c
│ │ ├── boardtest.h
│ │ ├── io
│ │ ├── adc.c
│ │ ├── adc.h
│ │ ├── buttons.c
│ │ ├── buttons.h
│ │ ├── uart.c
│ │ └── uart.h
│ │ ├── main.c
│ │ ├── pinconfig.c
│ │ ├── pinconfig.h
│ │ ├── sample.c
│ │ └── sample.h
└── matlab
│ ├── LagData.m
│ ├── colors
│ ├── kb_bcg.m
│ ├── kb_bgry.m
│ ├── kb_bgy_dark.m
│ ├── kb_bgy_light.m
│ ├── kb_bmrygcw.m
│ ├── kb_bw.m
│ ├── kb_mbcgy.m
│ ├── kb_mry_dark.m
│ ├── kb_mry_light.m
│ ├── kb_mrygc.m
│ └── qual_seq.m
│ ├── main_lag.m
│ ├── main_lag_00.m
│ ├── main_lag_01.m
│ ├── main_lag_init.m
│ └── util
│ ├── addLabel.m
│ ├── consecutive.m
│ ├── filenameify.m
│ ├── geometricBracket.m
│ ├── legendColorItem.m
│ ├── limit.m
│ ├── map.m
│ ├── natsort.m
│ ├── rescale.m
│ ├── saveFig.m
│ ├── saveOpenFigs.m
│ └── withinPrctiles.m
├── inputUtils
├── OWFPSChanger.d
├── f7remap.d
├── interception
│ ├── cport
│ │ ├── interception.dll
│ │ ├── interception.lib
│ │ ├── interceptiond.d
│ │ └── remap_interception.d
│ └── interceptiond.d
└── mousemeasure.d
└── text
├── 01-variation.md
└── 02-reflex.md
/.gitignore:
--------------------------------------------------------------------------------
1 |
2 | code/ResponseTimeTester/ResponseTimeTester/Debug/*
--------------------------------------------------------------------------------
/assets/00-cables-and-inputs/001-input-keyboard-click-remapping.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klasbo/GamePerfTesting/777ea38c222865829057b8c7d09902439b428ebc/assets/00-cables-and-inputs/001-input-keyboard-click-remapping.png
--------------------------------------------------------------------------------
/assets/00-cables-and-inputs/002-input-mouse-click-remapping.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klasbo/GamePerfTesting/777ea38c222865829057b8c7d09902439b428ebc/assets/00-cables-and-inputs/002-input-mouse-click-remapping.png
--------------------------------------------------------------------------------
/assets/00-cables-and-inputs/003-input-mouse-move.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klasbo/GamePerfTesting/777ea38c222865829057b8c7d09902439b428ebc/assets/00-cables-and-inputs/003-input-mouse-move.png
--------------------------------------------------------------------------------
/assets/00-cables-and-inputs/004-input-move-vs.-click.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klasbo/GamePerfTesting/777ea38c222865829057b8c7d09902439b428ebc/assets/00-cables-and-inputs/004-input-move-vs.-click.png
--------------------------------------------------------------------------------
/assets/00-cables-and-inputs/005-all-input-types.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klasbo/GamePerfTesting/777ea38c222865829057b8c7d09902439b428ebc/assets/00-cables-and-inputs/005-all-input-types.png
--------------------------------------------------------------------------------
/assets/00-cables-and-inputs/006-cable-extension.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klasbo/GamePerfTesting/777ea38c222865829057b8c7d09902439b428ebc/assets/00-cables-and-inputs/006-cable-extension.png
--------------------------------------------------------------------------------
/assets/00-cables-and-inputs/007-.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klasbo/GamePerfTesting/777ea38c222865829057b8c7d09902439b428ebc/assets/00-cables-and-inputs/007-.png
--------------------------------------------------------------------------------
/assets/00-cables-and-inputs/007-response-time-median-vs.-num-samples.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klasbo/GamePerfTesting/777ea38c222865829057b8c7d09902439b428ebc/assets/00-cables-and-inputs/007-response-time-median-vs.-num-samples.png
--------------------------------------------------------------------------------
/assets/00-cables-and-inputs/properties.json:
--------------------------------------------------------------------------------
1 | [
2 | "game settings",
3 | ["Game", "Overwatch", []],
4 | ["Patch", "", []],
5 | ["Render scale", "100%", "^\\d+%$"],
6 | ["Reduce buffering", "On", ["On", "Off"]],
7 | ["Nvidia reflex", "Disabled", ["Disabled", "Enabled", "Enabled + Boost"]],
8 | ["VSync", "Off", ["On", "Off"]],
9 | ["Triple buffering", "Off", ["On", "Off"]],
10 | ["Resolution", "2560x1440", "^\\d+x\\d+$"],
11 | ["Engine FPS limit", "400", "^\\d+$"],
12 | ["Engine tick rate", "62.5 Hz", "^\\d+\\.?\\d* Hz$"],
13 | ["In-game location", "", []],
14 |
15 | "Compare to max (uncapped) fps",
16 | ["Software FPS limit", "Game", ["Game", "RTSS", "None"]],
17 | ["Hardware FPS limit", "None", ["CPU", "GPU", "VSync", "None"]],
18 | ["Hardware max FPS", "-1", "^-1$|^\\d+$"],
19 |
20 | "input device settings",
21 | ["Input device", "Mouse", ["Mouse", "Keyboard"]],
22 | ["Input device polling rate", "1000 Hz", "^\\d+ Hz$"],
23 | ["Input from hardware", "(undefined)", ["(undefined)", "Mouse move", "Mouse click", "Key click"]],
24 | ["Input remapping", "None", ["None", "Interception", "Winuser", "iCUE 3.21", "iCUE 2.24"]],
25 | ["Input to game", "None", ["None", "Mouse move", "Mouse click", "Key click"]],
26 |
27 | "display settings",
28 | ["Display", "AG271QG", ["AG271QG", "PG279"]],
29 | ["Refresh rate", "165 Hz", "^\\d+ Hz$"],
30 | ["GSync", "Off", ["On", "Off"]],
31 | ["Scaling mode", "Display", ["Display", "GPU", "Integer", "None"]],
32 |
33 | "control panel settings",
34 | ["Max pre-rendered frames", "Application defined", "^Application defined$|^\\d$"],
35 | ["Low latency mode", "Off", ["On", "Off", "Ultra"]],
36 | ["GPU power mode", "Prefer maximum performance",["Optimal power", "Adaptive", "Prefer maximum performance"]],
37 | ["Windows power mode", "High performance", ["High performance", "Balanced"]],
38 | ["Scheduler priority", "8 (Normal)", ["4 (Idle)", "8 (Normal)", "13 (High)", "24 (Realtime)"]],
39 |
40 | "disturbances",
41 | ["Disturbance", "None", ["None", "OBS"]],
42 | ["OBS setting", "Off", ["off", "x264", "NVENC", "x264 overloaded"]],
43 | ["OBS scheduler priority", "8 (Normal)", ["4 (Idle)", "8 (Normal)", "13 (High)", "24 (Realtime)"]],
44 |
45 | "photodiode settings",
46 | ["Input frequency", "None", "^None|$^\\d+\\.?\\d* Hz$"],
47 | ["Sensor screen location", "Middle", ["Top", "Middle", "Bottom"]],
48 |
49 | "system settings",
50 | ["PC", "Desktop", ["Desktop", "Laptop"]],
51 | ["Operating system", "Windows 7", ["Windows 7", "Windows 10"]],
52 | ["Microcode", "0x22", ["0x22", "0x24"]],
53 | ["Meltdown protection", "Disabled", ["Enabled", "Disabled"]],
54 | ["Spectre protection", "Disabled", ["Enabled", "Disabled"]],
55 | ["QPC Clock source", "TSC", ["TSC", "HPET", "APIC"]],
56 |
57 | "hardware settings",
58 | ["GPU", "GTX 1080", []],
59 | ["GPU Core clock", "2025 MHz", "^Auto$|^\\d+ MHz$"],
60 | ["GPU Memory clock", "5300 MHz", "^Auto$|^\\d+ MHz$"],
61 | ["CPU", "i7-5820K", []],
62 | ["CPU Cores", "6", "^\\d+$"],
63 | ["CPU Threads", "12", "^\\d+$"],
64 | ["CPU Clock speed", "4.4 GHz", "^\\d+\\.?\\d* GHz$"],
65 | ["Memory Channels", "Quad", ["Single", "Dual", "Triple", "Quad"]],
66 | ["Memory Frequency", "1333 MHz", "^\\d+ MHz$"],
67 | ["Memory Timings", "13-13-13-30-2T", "^(\\d+-)[4]\\dT$"],
68 |
69 | "post-search settings",
70 | ["FPS selection", "all", []],
71 |
72 | "other",
73 | ["15m extended cables", "(undefined)", ["(undefined)", "None", "USB", "DP", "USB + DP"]],
74 | ["misc", "", []]
75 | ]
--------------------------------------------------------------------------------
/assets/01-nvidia-reflex/001-baseline.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klasbo/GamePerfTesting/777ea38c222865829057b8c7d09902439b428ebc/assets/01-nvidia-reflex/001-baseline.png
--------------------------------------------------------------------------------
/assets/01-nvidia-reflex/002-different-locations.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klasbo/GamePerfTesting/777ea38c222865829057b8c7d09902439b428ebc/assets/01-nvidia-reflex/002-different-locations.png
--------------------------------------------------------------------------------
/assets/01-nvidia-reflex/003-different-sessions.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klasbo/GamePerfTesting/777ea38c222865829057b8c7d09902439b428ebc/assets/01-nvidia-reflex/003-different-sessions.png
--------------------------------------------------------------------------------
/assets/01-nvidia-reflex/004-gpu-overclock.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klasbo/GamePerfTesting/777ea38c222865829057b8c7d09902439b428ebc/assets/01-nvidia-reflex/004-gpu-overclock.png
--------------------------------------------------------------------------------
/assets/01-nvidia-reflex/005-gsync.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klasbo/GamePerfTesting/777ea38c222865829057b8c7d09902439b428ebc/assets/01-nvidia-reflex/005-gsync.png
--------------------------------------------------------------------------------
/assets/01-nvidia-reflex/006-gsync-split-fps-range.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klasbo/GamePerfTesting/777ea38c222865829057b8c7d09902439b428ebc/assets/01-nvidia-reflex/006-gsync-split-fps-range.png
--------------------------------------------------------------------------------
/assets/01-nvidia-reflex/007-reduce-buffering.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klasbo/GamePerfTesting/777ea38c222865829057b8c7d09902439b428ebc/assets/01-nvidia-reflex/007-reduce-buffering.png
--------------------------------------------------------------------------------
/assets/01-nvidia-reflex/008-nvidia-reflex-cpu-limited.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klasbo/GamePerfTesting/777ea38c222865829057b8c7d09902439b428ebc/assets/01-nvidia-reflex/008-nvidia-reflex-cpu-limited.png
--------------------------------------------------------------------------------
/assets/01-nvidia-reflex/009-nvidia-reflex-cpu-limited-boost.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klasbo/GamePerfTesting/777ea38c222865829057b8c7d09902439b428ebc/assets/01-nvidia-reflex/009-nvidia-reflex-cpu-limited-boost.png
--------------------------------------------------------------------------------
/assets/01-nvidia-reflex/010-nvidia-reflex-cpu-limited-no-gpu-oc-boost.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klasbo/GamePerfTesting/777ea38c222865829057b8c7d09902439b428ebc/assets/01-nvidia-reflex/010-nvidia-reflex-cpu-limited-no-gpu-oc-boost.png
--------------------------------------------------------------------------------
/assets/01-nvidia-reflex/011-cpu-limited-boost-vs-oc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klasbo/GamePerfTesting/777ea38c222865829057b8c7d09902439b428ebc/assets/01-nvidia-reflex/011-cpu-limited-boost-vs-oc.png
--------------------------------------------------------------------------------
/assets/01-nvidia-reflex/012-gpu-limited.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klasbo/GamePerfTesting/777ea38c222865829057b8c7d09902439b428ebc/assets/01-nvidia-reflex/012-gpu-limited.png
--------------------------------------------------------------------------------
/assets/01-nvidia-reflex/013-gpu-limited-nvidia-reflex-enabled.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klasbo/GamePerfTesting/777ea38c222865829057b8c7d09902439b428ebc/assets/01-nvidia-reflex/013-gpu-limited-nvidia-reflex-enabled.png
--------------------------------------------------------------------------------
/assets/01-nvidia-reflex/014-gpu-limited-nvidia-reflex.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klasbo/GamePerfTesting/777ea38c222865829057b8c7d09902439b428ebc/assets/01-nvidia-reflex/014-gpu-limited-nvidia-reflex.png
--------------------------------------------------------------------------------
/assets/01-nvidia-reflex/015-gpu-limited-nvidia-reflex-no-oc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klasbo/GamePerfTesting/777ea38c222865829057b8c7d09902439b428ebc/assets/01-nvidia-reflex/015-gpu-limited-nvidia-reflex-no-oc.png
--------------------------------------------------------------------------------
/assets/01-nvidia-reflex/016-gpu-limited-nvidia-reflex-boost-vs-oc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klasbo/GamePerfTesting/777ea38c222865829057b8c7d09902439b428ebc/assets/01-nvidia-reflex/016-gpu-limited-nvidia-reflex-boost-vs-oc.png
--------------------------------------------------------------------------------
/assets/01-nvidia-reflex/017-gpu-limited-reduce-buffering-off-nvidia-reflex.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klasbo/GamePerfTesting/777ea38c222865829057b8c7d09902439b428ebc/assets/01-nvidia-reflex/017-gpu-limited-reduce-buffering-off-nvidia-reflex.png
--------------------------------------------------------------------------------
/assets/01-nvidia-reflex/018-gpu-limited-nvidia-reflex-enabled-reduce-buffering.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klasbo/GamePerfTesting/777ea38c222865829057b8c7d09902439b428ebc/assets/01-nvidia-reflex/018-gpu-limited-nvidia-reflex-enabled-reduce-buffering.png
--------------------------------------------------------------------------------
/assets/01-nvidia-reflex/019-low-latency-mode-reflex-enabled.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klasbo/GamePerfTesting/777ea38c222865829057b8c7d09902439b428ebc/assets/01-nvidia-reflex/019-low-latency-mode-reflex-enabled.png
--------------------------------------------------------------------------------
/assets/01-nvidia-reflex/020-nvidia-reflex-cpu-limited-measurement-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klasbo/GamePerfTesting/777ea38c222865829057b8c7d09902439b428ebc/assets/01-nvidia-reflex/020-nvidia-reflex-cpu-limited-measurement-2.png
--------------------------------------------------------------------------------
/assets/01-nvidia-reflex/021-nvidia-reflex-gpu-limited-measurement-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klasbo/GamePerfTesting/777ea38c222865829057b8c7d09902439b428ebc/assets/01-nvidia-reflex/021-nvidia-reflex-gpu-limited-measurement-2.png
--------------------------------------------------------------------------------
/assets/01-nvidia-reflex/022-reflex-mis-prediction.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klasbo/GamePerfTesting/777ea38c222865829057b8c7d09902439b428ebc/assets/01-nvidia-reflex/022-reflex-mis-prediction.png
--------------------------------------------------------------------------------
/assets/01-nvidia-reflex/backpressure.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klasbo/GamePerfTesting/777ea38c222865829057b8c7d09902439b428ebc/assets/01-nvidia-reflex/backpressure.png
--------------------------------------------------------------------------------
/assets/01-nvidia-reflex/backpressure.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klasbo/GamePerfTesting/777ea38c222865829057b8c7d09902439b428ebc/assets/01-nvidia-reflex/backpressure.psd
--------------------------------------------------------------------------------
/assets/01-nvidia-reflex/buffering.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klasbo/GamePerfTesting/777ea38c222865829057b8c7d09902439b428ebc/assets/01-nvidia-reflex/buffering.png
--------------------------------------------------------------------------------
/assets/01-nvidia-reflex/buffering.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klasbo/GamePerfTesting/777ea38c222865829057b8c7d09902439b428ebc/assets/01-nvidia-reflex/buffering.psd
--------------------------------------------------------------------------------
/assets/01-nvidia-reflex/diytest.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klasbo/GamePerfTesting/777ea38c222865829057b8c7d09902439b428ebc/assets/01-nvidia-reflex/diytest.png
--------------------------------------------------------------------------------
/assets/01-nvidia-reflex/diytest.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klasbo/GamePerfTesting/777ea38c222865829057b8c7d09902439b428ebc/assets/01-nvidia-reflex/diytest.psd
--------------------------------------------------------------------------------
/assets/01-nvidia-reflex/properties.json:
--------------------------------------------------------------------------------
1 | [
2 | "game settings",
3 | ["Game", "Overwatch", []],
4 | ["Patch", "1.59.0.0", []],
5 | ["Render scale", "100%", "^\\d+%$"],
6 | ["Reduce buffering", "On", ["On", "Off"]],
7 | ["Nvidia reflex", "Disabled", ["Disabled", "Enabled", "Enabled + Boost"]],
8 | ["VSync", "Off", ["On", "Off"]],
9 | ["Triple buffering", "Off", ["On", "Off"]],
10 | ["Resolution", "2560x1440", "^\\d+x\\d+$"],
11 | ["Engine FPS limit", "400", "^\\d+$"],
12 | ["Engine tick rate", "62.5 Hz", "^\\d+\\.?\\d* Hz$"],
13 | ["In-game location", "", []],
14 |
15 | "Compare to max (uncapped) fps",
16 | ["Software FPS limit", "Game", ["Game", "RTSS", "None"]],
17 | ["Hardware FPS limit", "None", ["CPU", "GPU", "VSync", "None"]],
18 | ["Hardware max FPS", "-1", "^-1$|^\\d+$"],
19 |
20 | "input device settings",
21 | ["Input device", "Mouse", ["Mouse", "Keyboard"]],
22 | ["Input device polling rate", "1000 Hz", "^\\d+ Hz$"],
23 | ["Input from hardware", "Mouse click", ["(undefined)", "Mouse move", "Mouse click", "Key click"]],
24 | ["Input remapping", "Interception", ["None", "Interception", "Winuser", "iCUE 3.21", "iCUE 2.24"]],
25 | ["Input to game", "Mouse move", ["None", "Mouse move", "Mouse click", "Key click"]],
26 |
27 | "display settings",
28 | ["Display", "AG271QG", ["AG271QG", "PG279"]],
29 | ["Refresh rate", "165 Hz", "^\\d+ Hz$"],
30 | ["GSync", "On", ["On", "Off"]],
31 | ["Scaling mode", "Display", ["Display", "GPU", "Integer", "None"]],
32 |
33 | "control panel settings",
34 | ["Max pre-rendered frames", "Application defined", "^Application defined$|^\\d$"],
35 | ["Low latency mode", "Off", ["On", "Off", "Ultra"]],
36 | ["GPU power mode", "Prefer maximum performance",["Optimal power", "Adaptive", "Prefer maximum performance"]],
37 | ["Windows power mode", "High performance", ["High performance", "Balanced"]],
38 | ["Scheduler priority", "8 (Normal)", ["4 (Idle)", "8 (Normal)", "13 (High)", "24 (Realtime)"]],
39 |
40 | "disturbances",
41 | ["Disturbance", "None", ["None", "OBS"]],
42 | ["OBS setting", "Off", ["off", "x264", "NVENC", "x264 overloaded"]],
43 | ["OBS scheduler priority", "8 (Normal)", ["4 (Idle)", "8 (Normal)", "13 (High)", "24 (Realtime)"]],
44 |
45 | "photodiode settings",
46 | ["Input frequency", "None", "^None|$^\\d+\\.?\\d* Hz$"],
47 | ["Sensor screen location", "Middle", ["Top", "Middle", "Bottom"]],
48 |
49 | "system settings",
50 | ["PC", "Desktop", ["Desktop", "Laptop"]],
51 | ["Operating system", "Windows 7", ["Windows 7", "Windows 10"]],
52 | ["Microcode", "0x22", ["0x22", "0x24"]],
53 | ["Meltdown protection", "Disabled", ["Enabled", "Disabled"]],
54 | ["Spectre protection", "Disabled", ["Enabled", "Disabled"]],
55 | ["QPC Clock source", "TSC", ["TSC", "HPET", "APIC"]],
56 |
57 | "hardware settings",
58 | ["GPU", "GTX 1080", []],
59 | ["GPU Core clock", "2025 MHz", "^Auto$|^\\d+ MHz$"],
60 | ["GPU Memory clock", "5300 MHz", "^Auto$|^\\d+ MHz$"],
61 | ["CPU", "i7-5820K", []],
62 | ["CPU Cores", "6", "^\\d+$"],
63 | ["CPU Threads", "12", "^\\d+$"],
64 | ["CPU Clock speed", "4.4 GHz", "^\\d+\\.?\\d* GHz$"],
65 | ["Memory Channels", "Quad", ["Single", "Dual", "Triple", "Quad"]],
66 | ["Memory Frequency", "1333 MHz", "^\\d+ MHz$"],
67 | ["Memory Timings", "13-13-13-30-2T", "^(\\d+-)[4]\\dT$"],
68 |
69 | "post-search settings",
70 | ["FPS selection", "all", []],
71 |
72 | "other",
73 | ["15m extended cables", "USB + DP", ["(undefined)", "None", "USB", "DP", "USB + DP"]],
74 | ["misc", "", []]
75 | ]
--------------------------------------------------------------------------------
/code/ResponseTimeTester/ResponseTimeTester.atsln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 11.00
3 | # Atmel Studio Solution File, Format Version 11.00
4 | Project("{54F91283-7BC4-4236-8FF9-10F437C3AD48}") = "ResponseTimeTester", "ResponseTimeTester\ResponseTimeTester.cproj", "{A64FC18C-5777-4FAB-B7FC-02C8D17CEC21}"
5 | EndProject
6 | Global
7 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
8 | Debug|AVR = Debug|AVR
9 | Release|AVR = Release|AVR
10 | EndGlobalSection
11 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
12 | {A64FC18C-5777-4FAB-B7FC-02C8D17CEC21}.Debug|AVR.ActiveCfg = Debug|AVR
13 | {A64FC18C-5777-4FAB-B7FC-02C8D17CEC21}.Debug|AVR.Build.0 = Debug|AVR
14 | {A64FC18C-5777-4FAB-B7FC-02C8D17CEC21}.Release|AVR.ActiveCfg = Release|AVR
15 | {A64FC18C-5777-4FAB-B7FC-02C8D17CEC21}.Release|AVR.Build.0 = Release|AVR
16 | EndGlobalSection
17 | GlobalSection(SolutionProperties) = preSolution
18 | HideSolutionNode = FALSE
19 | EndGlobalSection
20 | EndGlobal
21 |
--------------------------------------------------------------------------------
/code/ResponseTimeTester/ResponseTimeTester.atsuo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klasbo/GamePerfTesting/777ea38c222865829057b8c7d09902439b428ebc/code/ResponseTimeTester/ResponseTimeTester.atsuo
--------------------------------------------------------------------------------
/code/ResponseTimeTester/ResponseTimeTester/ResponseTimeTester.cproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 2.0
5 | 6.2
6 | com.Atmel.AVRGCC8.C
7 | {a64fc18c-5777-4fab-b7fc-02c8d17cec21}
8 | AT90USB1287
9 | none
10 | Executable
11 | C
12 | $(MSBuildProjectName)
13 | .elf
14 | $(MSBuildProjectDirectory)\$(Configuration)
15 | ResponseTimeTester
16 | ResponseTimeTester
17 | ResponseTimeTester
18 | Native
19 | true
20 | false
21 | true
22 | true
23 | 0x20000000
24 |
25 | true
26 | exception_table
27 | 2
28 | 0
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 | com.atmel.avrdbg.tool.atmelice
42 |
43 |
44 |
45 | 200000
46 |
47 | JTAG
48 |
49 | com.atmel.avrdbg.tool.atmelice
50 | J41800001443
51 | Atmel-ICE
52 |
53 | JTAG
54 |
55 |
56 |
57 |
58 | True
59 | True
60 | True
61 | True
62 | True
63 | False
64 | True
65 | True
66 |
67 |
68 | NDEBUG
69 |
70 |
71 | Optimize for size (-Os)
72 | True
73 | True
74 | True
75 |
76 |
77 | libm
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 | True
87 | True
88 | True
89 | True
90 | True
91 | False
92 | True
93 | True
94 |
95 |
96 | DEBUG
97 | F_CPU=16000000
98 | UART_BAUD=57600
99 |
100 |
101 | Optimize for size (-Os)
102 | True
103 | True
104 | Default (-g2)
105 | True
106 | True
107 | True
108 |
109 |
110 | libm
111 |
112 |
113 | -lprintf_flt
114 | Default (-Wa,-g)
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 | compile
124 |
125 |
126 | compile
127 |
128 |
129 | compile
130 |
131 |
132 | compile
133 |
134 |
135 | compile
136 |
137 |
138 | compile
139 |
140 |
141 | compile
142 |
143 |
144 | compile
145 |
146 |
147 | compile
148 |
149 |
150 | compile
151 |
152 |
153 | compile
154 |
155 |
156 | compile
157 |
158 |
159 | compile
160 |
161 |
162 |
163 |
--------------------------------------------------------------------------------
/code/ResponseTimeTester/ResponseTimeTester/boardtest.c:
--------------------------------------------------------------------------------
1 | #include "boardtest.h"
2 |
3 | #include
4 | #include
5 |
6 | #include "io/uart.h"
7 | #include "io/buttons.h"
8 | #include "io/adc.h"
9 |
10 | #include "pinconfig.h"
11 |
12 | void doTestADCChans(){
13 | led_set(0, 1);
14 | adc_init_single();
15 | TCCR3B = 1;
16 | while(1){
17 | _delay_ms(50);
18 | uart_printf("\n");
19 | for(uint8_t chan = 0; chan <= 2; chan++){
20 | uint8_t thresh = (chan == 0) ? keyboardThresh : diodeThresh;
21 | TCNT3 = 0;
22 | uint8_t v = adc_read_single(chan);
23 | uint8_t t = TCNT3;
24 | uart_printf("%d %3d %3d %s: ", chan, t, v, (v > thresh) ? "#" : "-");
25 | for(uint8_t i = 1; i < v/4; i++){
26 | uart_printf("#");
27 | }
28 | uart_printf("\n");
29 | }
30 | if(switch_read(2)){
31 | diodeThresh *= 2;
32 | if(diodeThresh == 0){ diodeThresh = 1; }
33 | uart_printf("diode threshold: %d\n", diodeThresh);
34 | while(switch_read(2)){}
35 | }
36 | if(switch_read(1)){
37 | keyboardThresh *= 2;
38 | if(keyboardThresh == 0){ keyboardThresh = 1; }
39 | uart_printf("keyboard threshold: %d\n", keyboardThresh);
40 | while(switch_read(1)){}
41 | }
42 | if(switch_read(0)){
43 | while(switch_read(0)){}
44 | led_set(0, 0);
45 | return;
46 | }
47 | }
48 | }
49 |
50 | void doTestMouseButton(uint8_t btn){
51 | led_set(0, 1);
52 | uint8_t prettyBtn = (btn == MOUSE4) ? 4 : 5;
53 | uart_printf(
54 | "Mouse button test:\n"
55 | " 2: Mouse%d down\n"
56 | " 1: Mouse%d up\n"
57 | " 0: return\n", prettyBtn, prettyBtn);
58 | while(1){
59 | switch(switch_wait()){
60 | case 3:
61 | break;
62 | case 2:
63 | DDRD |= (1 << btn);
64 | break;
65 | case 1:
66 | DDRD &= ~(1 << btn);
67 | break;
68 | case 0:
69 | led_set(0, 0);
70 | return;
71 | }
72 | }
73 | }
74 |
75 | void doBoardTestMode(){
76 | while(1){
77 | uart_printf(
78 | "Test mode:\n"
79 | " 3: Read ADC channels\n"
80 | " 2: Mouse5\n"
81 | " 1: Mouse4\n"
82 | " 0: return\n");
83 | switch(switch_wait()){
84 | case 3:
85 | doTestADCChans();
86 | break;
87 | case 2:
88 | doTestMouseButton(MOUSE5);
89 | break;
90 | case 1:
91 | doTestMouseButton(MOUSE4);
92 | break;
93 | case 0:
94 | return;
95 | }
96 | }
97 | }
--------------------------------------------------------------------------------
/code/ResponseTimeTester/ResponseTimeTester/boardtest.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | #include
4 |
5 | void doBoardTestMode();
6 |
7 | void doTestADCChans();
8 | void doTestMouseButton(uint8_t btn);
--------------------------------------------------------------------------------
/code/ResponseTimeTester/ResponseTimeTester/io/adc.c:
--------------------------------------------------------------------------------
1 | #include "adc.h"
2 |
3 | // ADCFreq = CPUFreq / 2^prescalerbits
4 | // prescaler bits range: [1..7]
5 | // eg: 16MHz / 2^5 = 16MHz/32 = 500KHz
6 | #define ADCPrescalerBits 7
7 |
8 | #ifndef ADHSM
9 | #define ADHSM 7
10 | #endif
11 |
12 | void adc_init_freerun(uint8_t channelSelection){
13 | ADCSRA = (1<
4 |
5 | void adc_init_freerun(uint8_t channelSelection);
6 | uint8_t adc_read_freerun(void);
7 | void adc_init_single(void);
8 | uint8_t adc_read_single(uint8_t channelSelection);
--------------------------------------------------------------------------------
/code/ResponseTimeTester/ResponseTimeTester/io/buttons.c:
--------------------------------------------------------------------------------
1 |
2 | #include "buttons.h"
3 | #include "uart.h"
4 |
5 | #include
6 | #include
7 | #include
8 | #include
9 |
10 |
11 | __attribute__((constructor)) void buttons_init(void){
12 | DDRB = (1< 3){
18 | return 0;
19 | }
20 |
21 | return !( PINB & (1 << (switch_id*2 + 1)) );
22 | }
23 |
24 | void led_set(uint8_t led_id, uint8_t value){
25 | if(led_id > 3){
26 | return;
27 | }
28 |
29 | if(value){
30 | PORTB &= ~(1 << (led_id*2));
31 | } else {
32 | PORTB |= (1 << (led_id*2));
33 | }
34 | }
35 |
36 |
37 | //ISR(PCINT0_vect){
38 | // sleep_disable();
39 | //}
40 |
41 |
42 | uint8_t switch_wait(){
43 |
44 | //PCICR = 1;
45 | //PCMSK0 = 0xaa;
46 | //sei();
47 | //_delay_ms(1);
48 |
49 | while(1){
50 | //set_sleep_mode(SLEEP_MODE_PWR_DOWN);
51 | //sleep_enable();
52 | //sleep_cpu();
53 |
54 | for(uint8_t i = 0; i < 4; i++){
55 | if(switch_read(i)){
56 | _delay_ms(5);
57 | while(switch_read(i)){}
58 | _delay_ms(5);
59 | //cli();
60 | return i;
61 | }
62 | }
63 | }
64 | }
--------------------------------------------------------------------------------
/code/ResponseTimeTester/ResponseTimeTester/io/buttons.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | #include
4 |
5 | uint8_t switch_read(uint8_t switch_id);
6 | void led_set(uint8_t led_id, uint8_t value);
7 | uint8_t switch_wait();
--------------------------------------------------------------------------------
/code/ResponseTimeTester/ResponseTimeTester/io/uart.c:
--------------------------------------------------------------------------------
1 | #include "uart.h"
2 |
3 | #include
4 | #include
5 |
6 | #define ubrr (F_CPU/16/UART_BAUD - 1)
7 |
8 | static FILE uart_stdout = FDEV_SETUP_STREAM((int(*)(char, struct __file *))uart_putchar, NULL, _FDEV_SETUP_WRITE);
9 |
10 | void uart_init(void){
11 | UBRR1 = (unsigned long)(ubrr);
12 |
13 | UCSR1B |= (1<
2 | #include
3 | #include
4 | #include
5 |
6 | #include "io/uart.h"
7 | #include "io/buttons.h"
8 | #include "io/adc.h"
9 |
10 | #include "pinconfig.h"
11 | #include "sample.h"
12 | #include "boardtest.h"
13 |
14 |
15 |
16 |
17 |
18 | EEMEM uint32_t seed;
19 | uint32_t unpredictableSeed(void){
20 | uint32_t i;
21 | eeprom_read_block(&i, &seed, sizeof(seed));
22 | i = rand_r(&i);
23 | eeprom_write_block(&i, &seed, sizeof(seed));
24 | return i;
25 | }
26 |
27 |
28 |
29 |
30 | int main(void){
31 | uart_init();
32 | uart_printf("\nstarted\n");
33 | srand(unpredictableSeed());
34 |
35 | uint16_t fpsRange[19] = {400, 346, 300, 260, 225, 195, 169, 146, 128, 110, 95, 82, 71, 62, 53, 46, 40, 35, 30};
36 | uint8_t fpsRangeStart = 0;
37 | uint8_t fpsRangeEnd = 12;
38 |
39 | while(1){
40 | uart_printf(
41 | "Main:\n"
42 | " 3: Auto input\n"
43 | " 2: Auto input fps range\n"
44 | " 1: Manual input\n"
45 | " 0: Board test mode\n");
46 | switch(switch_wait()){
47 | case 3:{
48 | AutoSampleSettings s = doMakeAutoSampleSettings();
49 | led_set(3, 1);
50 | doSampleAuto(&s);
51 | led_set(3, 0);
52 | break;
53 | }
54 | case 2:{
55 | AutoSampleSettings s = doMakeAutoSampleSettings();
56 | doMakeFPSRange(fpsRange, sizeof(fpsRange)/sizeof(fpsRange[0]), &fpsRangeStart, &fpsRangeEnd);
57 |
58 | led_set(2, 1);
59 | doSampleFPSRangeAuto(s, &fpsRange[fpsRangeStart], fpsRangeEnd-fpsRangeStart);
60 | led_set(2, 0);
61 | break;
62 | }
63 | case 1:{
64 | ManualSampleSettings s = doMakeManualSampleSettings();
65 | doMakeFPSRange(fpsRange, sizeof(fpsRange)/sizeof(fpsRange[0]), &fpsRangeStart, &fpsRangeEnd);
66 |
67 | led_set(1, 1);
68 | doSampleFPSRangeManual(s, &fpsRange[fpsRangeStart], fpsRangeEnd-fpsRangeStart);
69 | led_set(1, 0);
70 | break;
71 | }
72 | case 0:
73 | doBoardTestMode();
74 | break;
75 | }
76 | }
77 | while(1){}
78 | }
79 |
80 |
--------------------------------------------------------------------------------
/code/ResponseTimeTester/ResponseTimeTester/pinconfig.c:
--------------------------------------------------------------------------------
1 | #include "pinconfig.h"
2 |
3 | void pin_init(uint8_t button, BtnIO io){
4 | switch(io){
5 | case B_write:
6 | PORTD &= ~(1<