Difference between revisions of "Smooth Quake"

From QWiki
Line 1: Line 1:
This page contains solutions and tips for various tearing, lagging, jerky and sucky Quake configurations.
+
This page contains solutions and tips for various tearing, lagging, jerky and sucky Quake configurations.<br>
 +
'''Some of the tunings are for advanced users only. Do not change anything unless you know what you are doing.'''
  
'''2021 edit and tldr''': A high refresh rate monitor is recommended (+120hz). A good mouse, running on at least 500hz is also recommended. If you're using nQuake, all the recommended settings are preset - although you can increase the maximum frames per second from the 308 default to as high as 1001 or more.  
+
== Hardware ==
Continue reading if you continue to feel you need more info about getting your Quake smoother.
+
===Monitor===
 
+
Ideally, an IPS panel with at least 240Hz minimum is recommended. But any 144hz or more screen will work great!<br>
==Hardware and drivers==
+
'''Why IPS?''' TN has bad colors and viewing angles, VA has slow response time and OLED has higher input lag.<br>
===Display===
+
The pixels response time must stay inside de refresh cycle (1000/Hz) to avoid blur and take full advantage of the monitor's Hz.<br>
A good display for Quake has high refresh rate (Hz).  
+
'''Example''': the refresh cycle of a 240hz monitor is 1000/240='''4.16m'''s, if the pixel response time is above that, its going to generate blur.<br>
 +
You can read about the pixel response time for your monitor [https://www.rtings.com/monitor/tests/motion/motion-blur-and-response-time here]. Sort the column by rise/fall time.<br>
 +
<br>
 +
Some monitors have a fast enough response time but at the cost of ghosting. Take this into account.<br>
 +
[https://www.testufo.com/ghosting#background=004040&separation=160&pps=1080&graphics=bbufo.png&pursuit=1 UFO Test] shows how your monitor responds so you can select a proper overdrive setting.<br>
 
<br>
 
<br>
If you have an LCD display with a high [http://en.wikipedia.org/wiki/Input_lag input lag], you should consider other options for ultimate smoothness. Maybe you have an old CRT monitor you could resurrect for Quake use or simply buy a high hz LCD. See [[TFT]] for some tips if you're using a TFT/LCD monitor or you are thinking of buying one.
+
''Example products'': Asus VG279QM [https://www.aperturegrille.com/reviews/ASUSVG279QM/ Aperture Grille's review].<br><br>
 
+
On CRT displays you can lower resolution to get higher refresh rates. Your video card drivers probably have a custom refresh rate feature. If not, you can use an external program like Powerstrip or Refresh Lock.
On CRT displays you can lower resolution to acheive higher refresh rates. Your video card drivers probably have a custom refresh rate feature. If not, you can use an external program like [http://entechtaiwan.net/util/ps.shtm Powerstrip] or Refresh Lock.
 
  
 
===Mouse===
 
===Mouse===
2021 edit: most gaming mouses nowadays work natively at 1000hz. In this case, you don't need to do anything. End edit.<br>
+
Any modern mouse should be ok.<br>
 
+
Most mouse companies add smoothing after a certain DPI level ([https://community.xim.tech/index.php?topic=84035.msg795898#msg795898 more info]) but a few brands have smoothing disabled for all DPI ranges.<br>
USB polling rate should be raised to 500Hz or 1000Hz from the default 125Hz. Some mouse drivers have this option, otherwise use [http://www.ngohq.com/news/15043-how-to-increase-usb-sample-rate-in-windows-vista-7-a.html HIDUSBF]. [http://www.youtube.com/watch?v=VxhAKJ-Dyes Video guide]
+
Smoothing is bad!<br>
 +
You should only use '''native DPI values''' to avoid interpolation. 1000Hz and DPI of 800 minimum is recommended.<br>
 +
A good sensor should not have problems such as smoothing, angle snapping, jitter and DPI deviation.<br>
 +
''Example products'': Pixart 3389 sensor (1600 DPI no smoothing added).<br>
 +
[https://www.youtube.com/watch?v=6AoRfv9W110 Battle(non)sense DPI analysis].<br>
 +
<br>
 +
Note: with 1000Hz+ mouse and keyboard you should use [https://forums.blurbusters.com/viewtopic.php?f=10&t=7618 separate dedicated usb chips] or a PCIe USB card.<br>
  
===CPU spikes===
+
===Keyboard===
If you feel like the game runs smooth for a while but you recognize small disturbing semi-periodic interrupts, those can be caused by background applications. Start by opening Task Manager (ctrl+alt+del) and checking whethe some other processes are consuming the CPU time. <br />
+
1000Hz minimum is ideal simply because it has lower input lag than regular 125hz keyboards. [https://www.youtube.com/watch?v=UmS_t3YYy8s Explanation].<br>
You can also reduce the number of processes that run on the startup process of your OS.
+
''Example products'': EVGA Z20 and Corsair K70 Rapidfire/Champion models are fast but expensive.<br>
  
If that doesn't help you, use following tools:
+
== Configuration ==
 +
===BIOS===
 +
Do not change anything unless you know what you are doing!<br>
 +
Suggestions:
 +
* Spread Spectrum ; Memory Scrambler: '''Disable'''
 +
* Extreme Memory Profile (XMP): '''Enable'''
  
* [http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx Process Explorer] - Contains CPU Usage graph where you can track for CPU spikes and display what process is causing them. If it's the "System" process, check for wrongly uninstalled/conflicting firewalls or buggy drivers.
 
* [http://technet.microsoft.com/en-us/sysinternals/bb896642.aspx FileMon] - Simple tool to show you which Windows applications are accessing your hard-drive
 
* In Windows 7, you can use Resource Monitor: enter "resmon" in start menu search box.
 
  
===Other issues===
+
===Windows===
* ''Threaded optimization'' can cause unstable frame rate if you have multicore CPU and NVIDIA video card; You can turn it off in video card driver settings.
+
Suggestions:
 +
* Start > Settings > Privacy > '''Background apps''' > Disable all but "Windows Security"
 +
* Control Panel > Mouse > '''Pointer Options''' > Untick 'Enhance pointer precision' and leave pointer speed at 6th notch.
 +
* Control Panel > Power Options > High performance > Change plan settings > Change advanced settings > PCI Express > '''ASPM: disable'''
 +
<big></big>
 +
* [https://forums.guru3d.com/threads/windows-line-based-vs-message-signaled-based-interrupts-msi-tool.378044/ MSI Interrupt Mode Utility]: Change supported devices to MSI. A negative value means it's working. Do not enable devices if the supported modes field doesn't include MSI. Interrupt priority should be undefined for all. Windows sets SATA to high and some ethernet drivers too.
  
==ezQuake settings==
 
These settings only work on [[ezQuake]] client.
 
  
===Independent physics===
+
===NVIDIA===
If you're using nQuake, you can ignore this section.
+
Suggestions:
 +
* NVCP: create a new profile for ezquake and disable "Threaded Optimization"
 +
* [https://github.com/Orbmu2k/nvidiaProfileInspector/releases NvidiaProfileInspector]: change the following value in section "Other" > '''Maximum Frames Allowed''' = 1
  
Independent physics separates frame rate from physics rate allowing frame rates above 77.
 
* ''cl_independentphysics 1''
 
* ''cl_physfps 77'' equals the setting on almost all servers.
 
* ''cl_nolerp 0'' (default) set to 1 to disable linear interpolation of objects in the game (not recommended).
 
* ''cl_nopred 0'' (default) prediction for your character is enabled.
 
* ''cl_earlypackets 1'' lowers net latency and reduces "warpiness" [http://www.quakeworld.nu/news/482/]. If you get jerky rockets, consider turning this off and use ''show net'' (requires new hud enabled), then cl_delay_packet 0-10 until your min/avg/max ping is equal and dev preferrably is 0.00ms.
 
  
===FPS limit fine-tuning===
+
===AMD/ATI===
'''Don't set ''cl_maxfps'' to 0.''' Define a limit, based on the power of your pc. The more the better, but you want a stable value, so you got to figure that number out. The number you choose must be related on your monitor's refresh rate. ''cl_maxfps'' can be equal, double, triple, 10 times the value of refreshrate. This usually delivers good results. Just don't set it too high, you want stable fps. Typical values on modern computers are 1001, 960... which should be more than enough to have a smooth playing experience.
+
''(to be added...)''
  
Especially with LCD devices be aware if your FPS limit (cl_maxfps) is a multiplication of your display refresh frequency.
+
== ezQuake ==
 +
===ezQuake launch===
 +
You can change '''Windows power plan''' to High Performance while playing and restore its value back to Balanced when finished.<br>
 +
Open command line and type ''powercfg -l'' to see their GUID. They should match the ones below.<br>
 +
Devices interrupts go to '''cpu0''' by default. Excluding it for ezQuake will improve fps and stabilize frametime. [https://bitsum.com/tools/cpu-affinity-calculator/ Cpu affinity calculator] shows you what hexadecimal value you need to set in the cmdline after the ''/affinity'' (replace the word ''<HexVal>'' with the value you got from the calculator).
 +
Open notepad and place these 3 lines (without the comment), change game path, and save as '''.bat''' extension.
 +
<br>
 +
<small>''powercfg -s 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c (#high performance power profile)<br>
 +
start "" /wait /affinity'' <HexVal> "<your Quake path and executable ex.: D:\QW\ezquake>" ''-mem 1024<br>
 +
powercfg -s 381b4222-f694-41f0-9685-ff5bb260df2e (#balanced power profile)''<br></small>
 +
<br>
 +
<br>
 +
'''''-mem 1024''''' or ''-mem 512'' is rrecommended because ezQuake usually uses windows pagefile (virtual memory stored in your storage media), creating a hard page fault event, which can affect frametime, depending on the computer's background activity. Setting a higher mem value such as the ones recommended will prevent ezQuake making that many pagefile calls.
  
Setting ''cl_maxfps'' to a value that is *below* your systems limit also lends cpu time to other processes. This alleviates problems with mouse responsiveness (mouse driver) and CPU spiking (other programs).
+
===ezQuake settings===
 +
Suggestions:
 +
''cl_maxfps 1001''         (is the minimum recommended and there is no need for more)<br>
 +
''cl_newlerp 0.1''        (smooths projectiles movement)<br>
 +
''gl_simpleitems 1''      (different look and big fps boost)<br>
 +
''r_particles_count 1024'' (is enough unless you use tons of effects)<br>
 +
''r_farclip 8192''        (is enough for long distances)<br>
 +
<br>
 +
'''Tools to check performance:'''<br>
 +
* ''timedemo''<br>
 +
* ''hud_frametime''<br>
 +
* ''hud_frametime_max_reset_interval'' 2<br>
 +
* ''hud_performance_average'' 0<br>
 +
* ''hud_fps''<br>
 +
* ''hud_net''<br>
 +
* ''hud_ping''<br>
 +
* ''hud_speed''<br>
  
 
===Vsync fine-tuning===
 
===Vsync fine-tuning===
Line 59: Line 98:
 
===Mouse===
 
===Mouse===
 
Use ''in_raw 1'' (default) for Raw mouse input. This should provide the cleanest mouse input data, as opposed to what SDL input provides with ''in_raw 0'', which might suffer from Windows's built-in  acceleration curves and other limitations.
 
Use ''in_raw 1'' (default) for Raw mouse input. This should provide the cleanest mouse input data, as opposed to what SDL input provides with ''in_raw 0'', which might suffer from Windows's built-in  acceleration curves and other limitations.
 +
 +
== Issues ==
 +
===Network: lag spikes===
 +
* '''Proxy''': server browser automatically finds proxies. It can connect to a server using more than one.<br>Follow these steps to know if one of them or the one it's using is the culprit.<br>console > hud_net_show 1. If "dev" (deviation) is 1ms+, type cl_proxyaddr and write IPs down.<br>Server Browser > select a server > press 'enter'<br>
 +
In the help shortcut keys box, "Route" indicates how many proxies were found. Press 'n'. This will connect directly bypassing proxies.<br>If deviation improves then some proxy causes issues.<br>With the IPs you wrote, set cl_proxyaddr with just one until you find wich one is bad. Sb_ignoreproxy can exclude it from future updates.
 +
 +
* '''Network Throttling''': enabled reduces latency in ethernet driver but if you don't exclude cpu0 from ezQuake this will cause alot of deviation.<br>If you have high deviation to any server, disable this to see if connection improves:<br>Winkey+R > regedit > HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile > NetworkThrottlingIndex = ffffffff (Hex value to disable).<br>If there is no improvement, enable it again ([10-70] range in decimal. default 10).
 +
 +
* '''Interrupt Moderation''': if you feel lag even with low ping, disable in ethernet properties.<br>
 +
 +
 +
===Network: packet loss===
 +
* Console > '''setinfo dupe 1''' (set it in ''cl_onload'' for permanent use).<br>Note: connection to a proxy could also be the cause of packet loss.<br>
 +
 +
 +
===Performance: unstable FPS===
 +
If you feel like the game runs smooth for a while but you recognize small disturbing semi-periodic interrupts, those can be caused by background applications. Start by opening Task Manager (ctrl+alt+del) and checking whethe some other processes are consuming the CPU time. <br />
 +
You can also reduce the number of processes that run on the startup process of your OS.
 +
 +
If that doesn't help you, use following tools:
 +
 +
* [http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx Process Explorer] - Contains CPU Usage graph where you can track for CPU spikes and display what process is causing them. If it's the "System" process, check for wrongly uninstalled/conflicting firewalls or buggy drivers.
 +
* [http://technet.microsoft.com/en-us/sysinternals/bb896642.aspx FileMon] - Simple tool to show you which Windows applications are accessing your hard-drive
 +
* In Windows 7, you can use Resource Monitor: enter "resmon" in start menu search box.
 +
 +
Here's some other things you can do:
 +
* Uninstall or disable any RGB software (monitor; mouse; keyboard). It causes issues with the system.
 +
* Threaded Optimization: enable if you can't keep steady fps with your ezQuake config. Was recommended to disable as a just in case.
 +
* NVCP > ezQuake profile > Power management mode > prefer maximum performance (sets gpu at max frequency).<br>If the GPU jumps frequency often it will cause stutters (leads to a small fps drop). You can check this using [https://www.msi.com/Landing/afterburner/graphics-cards MSI Afterburner].<br>If the GPU jumps to boost frequency and down to max frequency often you can lock the gpu at boost frequency.<br>Type gtx or rtx depending on wich GPU you have in the search below (CTRL+F).<br>Winkey+R > regedit > HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class > CTRL+F > gtx (or) rtx > New DWORD > DisableDynamicPstate = 1
 +
 +
== Advanced Windows Settings ==
 +
===Interrupt affinity===
 +
[https://www.techpowerup.com/download/microsoft-interrupt-affinity-tool/ Interrupt affinity]<br>
 +
You can set devices interrupts to a specific cpu. Mouse readings could improve if you isolate it. Usually the least used cpus are the last ones. With Hyper-Threading you need to assign physical cpus rather than logical ones. USB devices can't bet set individually.<br>In device manager select your mouse then view devices by connection and the branch goes up to XHCI. Select XHCI in the affinity tool.
  
 
==Other OS==
 
==Other OS==

Revision as of 10:21, 1 July 2023

This page contains solutions and tips for various tearing, lagging, jerky and sucky Quake configurations.
Some of the tunings are for advanced users only. Do not change anything unless you know what you are doing.

Hardware

Monitor

Ideally, an IPS panel with at least 240Hz minimum is recommended. But any 144hz or more screen will work great!
Why IPS? TN has bad colors and viewing angles, VA has slow response time and OLED has higher input lag.
The pixels response time must stay inside de refresh cycle (1000/Hz) to avoid blur and take full advantage of the monitor's Hz.
Example: the refresh cycle of a 240hz monitor is 1000/240=4.16ms, if the pixel response time is above that, its going to generate blur.
You can read about the pixel response time for your monitor here. Sort the column by rise/fall time.

Some monitors have a fast enough response time but at the cost of ghosting. Take this into account.
UFO Test shows how your monitor responds so you can select a proper overdrive setting.

Example products: Asus VG279QM Aperture Grille's review.

On CRT displays you can lower resolution to get higher refresh rates. Your video card drivers probably have a custom refresh rate feature. If not, you can use an external program like Powerstrip or Refresh Lock.

Mouse

Any modern mouse should be ok.
Most mouse companies add smoothing after a certain DPI level (more info) but a few brands have smoothing disabled for all DPI ranges.
Smoothing is bad!
You should only use native DPI values to avoid interpolation. 1000Hz and DPI of 800 minimum is recommended.
A good sensor should not have problems such as smoothing, angle snapping, jitter and DPI deviation.
Example products: Pixart 3389 sensor (1600 DPI no smoothing added).
Battle(non)sense DPI analysis.

Note: with 1000Hz+ mouse and keyboard you should use separate dedicated usb chips or a PCIe USB card.

Keyboard

1000Hz minimum is ideal simply because it has lower input lag than regular 125hz keyboards. Explanation.
Example products: EVGA Z20 and Corsair K70 Rapidfire/Champion models are fast but expensive.

Configuration

BIOS

Do not change anything unless you know what you are doing!
Suggestions:

  • Spread Spectrum ; Memory Scrambler: Disable
  • Extreme Memory Profile (XMP): Enable


Windows

Suggestions:

  • Start > Settings > Privacy > Background apps > Disable all but "Windows Security"
  • Control Panel > Mouse > Pointer Options > Untick 'Enhance pointer precision' and leave pointer speed at 6th notch.
  • Control Panel > Power Options > High performance > Change plan settings > Change advanced settings > PCI Express > ASPM: disable

  • MSI Interrupt Mode Utility: Change supported devices to MSI. A negative value means it's working. Do not enable devices if the supported modes field doesn't include MSI. Interrupt priority should be undefined for all. Windows sets SATA to high and some ethernet drivers too.


NVIDIA

Suggestions:

  • NVCP: create a new profile for ezquake and disable "Threaded Optimization"
  • NvidiaProfileInspector: change the following value in section "Other" > Maximum Frames Allowed = 1


AMD/ATI

(to be added...)

ezQuake

ezQuake launch

You can change Windows power plan to High Performance while playing and restore its value back to Balanced when finished.
Open command line and type powercfg -l to see their GUID. They should match the ones below.
Devices interrupts go to cpu0 by default. Excluding it for ezQuake will improve fps and stabilize frametime. Cpu affinity calculator shows you what hexadecimal value you need to set in the cmdline after the /affinity (replace the word <HexVal> with the value you got from the calculator). Open notepad and place these 3 lines (without the comment), change game path, and save as .bat extension.
powercfg -s 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c (#high performance power profile)
start "" /wait /affinity <HexVal> "<your Quake path and executable ex.: D:\QW\ezquake>" -mem 1024
powercfg -s 381b4222-f694-41f0-9685-ff5bb260df2e (#balanced power profile)


-mem 1024 or -mem 512 is rrecommended because ezQuake usually uses windows pagefile (virtual memory stored in your storage media), creating a hard page fault event, which can affect frametime, depending on the computer's background activity. Setting a higher mem value such as the ones recommended will prevent ezQuake making that many pagefile calls.

ezQuake settings

Suggestions: cl_maxfps 1001 (is the minimum recommended and there is no need for more)
cl_newlerp 0.1 (smooths projectiles movement)
gl_simpleitems 1 (different look and big fps boost)
r_particles_count 1024 (is enough unless you use tons of effects)
r_farclip 8192 (is enough for long distances)

Tools to check performance:

  • timedemo
  • hud_frametime
  • hud_frametime_max_reset_interval 2
  • hud_performance_average 0
  • hud_fps
  • hud_net
  • hud_ping
  • hud_speed

Vsync fine-tuning

While vertical synchronization introduces image lag and forces one to use lower FPS rates than possible with unlimited FPS, on some configurations when fine-tuned it gives much smoother gameplay than when turned off.

To toggle vsync on, type vid_vsync 1 and cl_maxfps 0 in the console. Now you need to determine what is your video lag and FPS. Type show vidlag and show fps; You should use new hud (scr_newhud 1) to have these counters visible. The goal is to have stable FPS equal to your display frequency (60 / 75 / 120 / 150 ...) while having the video lag as low as possible.

Start with setting cl_vsync_lag_fix 1. Your video lag might decrease now, but also FPS may decrease. This is where cl_vsync_lag_tweak comes into play. You have to find the lowest value of the _tweak variable that gives you stable FPS equal to the display frequency. Such a value will decrease the video lag as much as possible without breaking FPS stability. For example tweak set to 0 will decrease video lag to almost 0 ms, but most probably will shut down your FPS rate. And tweak 20 typically won't reduce video lag at all, even if your FPS is super-stable. So find some good value in between.

Mouse

Use in_raw 1 (default) for Raw mouse input. This should provide the cleanest mouse input data, as opposed to what SDL input provides with in_raw 0, which might suffer from Windows's built-in acceleration curves and other limitations.

Issues

Network: lag spikes

  • Proxy: server browser automatically finds proxies. It can connect to a server using more than one.
    Follow these steps to know if one of them or the one it's using is the culprit.
    console > hud_net_show 1. If "dev" (deviation) is 1ms+, type cl_proxyaddr and write IPs down.
    Server Browser > select a server > press 'enter'

In the help shortcut keys box, "Route" indicates how many proxies were found. Press 'n'. This will connect directly bypassing proxies.
If deviation improves then some proxy causes issues.
With the IPs you wrote, set cl_proxyaddr with just one until you find wich one is bad. Sb_ignoreproxy can exclude it from future updates.

  • Network Throttling: enabled reduces latency in ethernet driver but if you don't exclude cpu0 from ezQuake this will cause alot of deviation.
    If you have high deviation to any server, disable this to see if connection improves:
    Winkey+R > regedit > HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile > NetworkThrottlingIndex = ffffffff (Hex value to disable).
    If there is no improvement, enable it again ([10-70] range in decimal. default 10).
  • Interrupt Moderation: if you feel lag even with low ping, disable in ethernet properties.


Network: packet loss

  • Console > setinfo dupe 1 (set it in cl_onload for permanent use).
    Note: connection to a proxy could also be the cause of packet loss.


Performance: unstable FPS

If you feel like the game runs smooth for a while but you recognize small disturbing semi-periodic interrupts, those can be caused by background applications. Start by opening Task Manager (ctrl+alt+del) and checking whethe some other processes are consuming the CPU time.
You can also reduce the number of processes that run on the startup process of your OS.

If that doesn't help you, use following tools:

  • Process Explorer - Contains CPU Usage graph where you can track for CPU spikes and display what process is causing them. If it's the "System" process, check for wrongly uninstalled/conflicting firewalls or buggy drivers.
  • FileMon - Simple tool to show you which Windows applications are accessing your hard-drive
  • In Windows 7, you can use Resource Monitor: enter "resmon" in start menu search box.

Here's some other things you can do:

  • Uninstall or disable any RGB software (monitor; mouse; keyboard). It causes issues with the system.
  • Threaded Optimization: enable if you can't keep steady fps with your ezQuake config. Was recommended to disable as a just in case.
  • NVCP > ezQuake profile > Power management mode > prefer maximum performance (sets gpu at max frequency).
    If the GPU jumps frequency often it will cause stutters (leads to a small fps drop). You can check this using MSI Afterburner.
    If the GPU jumps to boost frequency and down to max frequency often you can lock the gpu at boost frequency.
    Type gtx or rtx depending on wich GPU you have in the search below (CTRL+F).
    Winkey+R > regedit > HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class > CTRL+F > gtx (or) rtx > New DWORD > DisableDynamicPstate = 1

Advanced Windows Settings

Interrupt affinity

Interrupt affinity
You can set devices interrupts to a specific cpu. Mouse readings could improve if you isolate it. Usually the least used cpus are the last ones. With Hyper-Threading you need to assign physical cpus rather than logical ones. USB devices can't bet set individually.
In device manager select your mouse then view devices by connection and the branch goes up to XHCI. Select XHCI in the affinity tool.

Other OS

Linux

See Smooth Quake in Linux

Mac

ezQuake is in general the recomended client, but you can also try fuh if everything fails :P Binary version of Fuhquake > http://dreamolers.binaryriot.org/fuhquake/

Finding help

Advanced Configuration forum in QuakeWorld.nu is a good place to start. Use search.

Older Smooth Quake