November 24, 2025
earthquake engine indicator
I was working on a bug in the Chocolate Quake netcode. This issue was an edge case where starting two clients on the same machine resulted in the second one zombifying the first one. When the bug occurred there was no disconnection but the client could not proceed. Instead the screen will show an “indicator” looking like an unplugged Ethernet cable in the upper left corner.

As I dug into the code, I discovered there were more of these. is located inside pak0.pak and nested in gfx.wad There are turtle, disk, ram and net files. I couldn’t find anything about these “indicators” so I documented them here.
Tortoise
![]()
Tortoise The indicator appears on the screen when the framerate drops below 10 fps. It is unlikely that it was designed not for players but for the people at id Software during development. Programmers could see where the engine was not fast enough. More importantly, map designers can see if there are too many polygons in specific areas of their map.
Tortoise Indicator can be enabled/disabled with command showturtle 1/0The code is all in the function SCR_DrawTurtle, where host_frametime The time taken to generate the last frame is in seconds.
There is a scr_showturtle in the Quake 2 source code but it does nothing.
The icon actually depicts a tortoise and not a turtle. Tortoise swims in water while tortoise walks on land.
to hit
![]()
Quake does not render polygons using textures and lightmaps directly. Instead it combines these two into one “surface” which is then fed to the rasterizer. Surfaces are not deleted after being used but rather cached because the next frame is likely to need the same surface again.
to hit The indicator is here to warn when the engine runs out of cache surfaces that were generated and cached on the same frame. This means that the geometry of the map forces the engine to work beyond its surface cache capacity. Under this condition, the renderer enters a catastrophic “death spiral” where it spits out surfaces that will be needed later in the frame. Needless to say, the framerate suffers a lot.
This was probably a feature created for map designers to warn them about scenes going beyond the amount of surface cache memory provisioned by Quake. See D_SCAlloc to learn more about where thrashing is detected.
Disc
![]()
Disc Indicator Wraps HDD Access Sys_FileReadIt is unlikely that it was used by the developers to diagnose anything as its screen space overlaps with the TURTLE indicator, This is just to give players feedback that the game is loading,
because when the icon is hidden Sys_FileRead returns, it’s normal to see it flicker on the screen (and it even looks a little nicer). The code for this pointer is in SCR_DrawRam.
Net
![]()
Net The indicator is displayed when a client has not received any packets from the server in the last 300 ms. The purpose of this was probably to help players determine how bad their ping was.
The code for this indicator is in SCR_DrawNet.
all together
Below, a terrible user experience where frames caused the engine to destroy its surface cache, the framerate dropped below 10fps, and the engine last received packets from the server more than 300ms ago.
<a href