---
title: "How Michael Abrash doubled Quake framerate"
url: https://daily.dev/posts/how-michael-abrash-doubled-quake-framerate-c46xqofo3
source_url: https://fabiensanglard.net/quake_asm_optimizations/index.html
type: article
source: "Fabien Sanglard"
published: 2026-02-15T09:24:07.253Z
updated: 2026-03-30T02:18:58.384Z
tags: ["assembly", "compiler-optimization", "game-development", "performance"]
reading_time: 14
upvotes: 0
comments: 0
language: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# How Michael Abrash doubled Quake framerate

**[Fabien Sanglard](https://daily.dev/sources/fabiensanglard)** · 14 min read · 0 upvotes · 0 comments

## Summary

Michael Abrash's hand-crafted x86 assembly optimizations doubled Quake's framerate from 22.7fps to 42.2fps on a Pentium MMX 233MHz. The biggest gains came from D_DrawSpans8 (wall rendering), R_DrawSurfaceBlock8 (lightmap baking), and polyset functions (model drawing). Key techniques included loop unrolling, self-modifying code, overlapping FPU and integer pipeline execution, hiding FDIV latency by issuing divisions early, and leveraging free FXCH instructions on Pentium to use FPU registers efficiently. The optimizations exploited Pentium-specific architectural features like dual U/V pipelines and pipelined floating-point operations.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://fabiensanglard.net/quake_asm_optimizations/index.html>

## Similar posts on daily.dev

- [Building a Quake PC: Benchmarking Quake](https://daily.dev/posts/building-a-quake-pc-benchmarking-quake-yztv1mdgi) · Fabien Sanglard · 0 upvotes · 0 comments
- [Building a Quake PC: VQuake](https://daily.dev/posts/building-a-quake-pc-vquake-tplkqovxw) · Fabien Sanglard · 0 upvotes · 0 comments
- [My DIY FPGA board can run Quake II \(part 4\)](https://daily.dev/posts/my-diy-fpga-board-can-run-quake-ii-part-4--5v06ytzpr) · Hacker News · 2 upvotes · 0 comments
- [Performance Improvements For Open-Source 80386](https://daily.dev/posts/performance-improvements-for-open-source-80386-kirqzql3r) · Hackaday · 0 upvotes · 0 comments
- [Why WinQuake exists and how it works](https://daily.dev/posts/why-winquake-exists-and-how-it-works-05rkd25tg) · Fabien Sanglard · 0 upvotes · 0 comments

---

Tags: [#assembly](https://daily.dev/tags/assembly), [#compiler-optimization](https://daily.dev/tags/compiler-optimization), [#game-development](https://daily.dev/tags/game-development), [#performance](https://daily.dev/tags/performance)

[View this post on daily.dev](https://daily.dev/posts/how-michael-abrash-doubled-quake-framerate-c46xqofo3)
