For a period-correct 2003 retro build in 2026, get the Radeon 9800 Pro. It wins every DirectX 9 title that matters (Half-Life 2, Far Cry, Tomb Raider: Angel of Darkness), trades blows in DirectX 8 fillrate workloads, and only loses cleanly in Doom 3 — where NV35's UltraShadow stencil hardware genuinely shines. The GeForce FX 5900 Ultra is faster on paper, often louder in person, and falls off a cliff the moment a real PS 2.0 shader hits the pixel pipeline.
Why this matchup matters in 2026
The NV30 generation is the most-discussed wrong turn in NVIDIA's history, and the NV35 (FX 5900 / 5950 Ultra) is the half-fix that didn't fix the underlying problem. ATI's R350 (Radeon 9800 Pro) won the 2003 generation so completely that the canonical narrative — "NVIDIA bet the wrong way on shader precision" — is still cited in 2026 architecture talks. If you're building a period-correct 2003 box, this is the comparison that decides the rest of your parts list, because the GPU dictates which CRT modes you'll actually use, what driver branch you're stuck on, and whether HL2: Lost Coast is going to run.
The short version: DirectX 9 Pixel Shader 2.0 mandates a minimum of FP24 internal precision. ATI's R3x0 ran at exactly FP24 natively. NVIDIA's NV3x ran FP16 quickly, FP32 slowly, and FX12 (12-bit fixed point) fastest of all. The DX9 reference compiler emitted FP32 by default, NV3x had no FP24 path at all, and FP16 was only used when the application supplied a partial-precision (_pp) hint per instruction. The result: out-of-the-box NV35 ran shader-heavy DX9 code at roughly half the throughput of R350. NVIDIA's response was driver-level shader replacement and per-application hand-tuned FP16/FX12 swaps — which Futuremark caught in the 3DMark03 patch 340 audit, and which Half-Life 2 partly worked around with a bespoke DX8.1/DX9 "mixed mode."
For a 2026 retro build, that history is the whole point. You're not buying these cards to be fast — you're buying them to play the games that defined late-DX8 / early-DX9 in the way a buyer in 2003 actually saw them.
Key takeaways
- Buy the Radeon 9800 Pro for any DX9-heavy build. HL2, Far Cry 1.0, TR:AoD, and the SM2.0 ShaderMark suite all favor R350 by 30-80%.
- Buy the FX 5900 Ultra only if Doom 3 is the priority title. NV35's UltraShadow + ARB2 OpenGL path beats R350 by 10-20% in Carmack's engine, and that's basically the one win.
- Avoid the gimped variants. Radeon 9800 SE (4-pipe) and FX 5900 XT/SE (lower clocks, sometimes 128-bit memory) are not the cards in this comparison.
- eBay 2026 reality: 9800 Pro 128MB runs $60–$120, 256MB $120–$220. FX 5900 Ultra retail boards run $80–$180. Recap budget: $15–$25 either way.
- Driver matters more than you think. Catalyst 6.5 for R350, ForceWare 81.98 for NV35. Don't use period drivers in 2026 unless you specifically want the 2003 bug surface.
What were the architectural differences between NV35 and R350?
NV35 and R350 ship at the same time (Q1–Q2 2003), the same memory bus width (256-bit), the same AGP 8x interface, and very different pixel pipelines.
R350 is an 8x1 design: eight pixel pipelines, one TMU each, eight ROPs. It runs FP24 floating-point throughout the pixel pipeline, which is exactly the DX9 PS 2.0 minimum. The R3x0 architecture is by modern standards a pure brute-force shader machine — no clever precision shortcuts, no shader replacement, just eight wide-and-shallow lanes that map cleanly to PS 2.0's instruction stream.
NV35 is officially a 4x2 design (four pixel pipelines, two TMUs each), but the per-clock fragment shader throughput is more nuanced. The NV3x fragment pipeline can issue an FX12 op, an FP16 op, or a half-rate FP32 op. In FP16 with _pp hints, NV35 is competitive. In FP32, it's roughly half the rate. The 4x2 layout was a holdover from the GeForce 4 / NV25 era, and it never recovered the ground it lost when DX9 made shader throughput the bottleneck instead of textured-fillrate.
The other architectural footnote that matters: NV35 widened NV30's 128-bit memory bus to 256-bit (matching R350), which is the entire reason FX 5900 Ultra exists as a distinct part instead of just being a clocked-up 5800. NV30's 128-bit bus was the practical bottleneck on FX 5800 Ultra. NV35 fixed memory bandwidth and replaced the FlowFX dustbuster cooler, but it did not rebuild the fragment pipeline.
How do they compare in 3DMark2001 SE and 3DMark03?
3DMark2001 SE is a DirectX 8.1 benchmark — fixed-function T&L, 1.x pixel shaders, fillrate-bound at 1024x768. NV35 wins this by a small margin on most boards: NVIDIA's DX8 path was extremely well-tuned, and the 4x2 layout's two TMUs per pipe favors multitexturing, which 3DMark2001's Nature scene leans on heavily. Typical scores at 1024x768 with no AA: FX 5900 Ultra ~17,000–17,400; Radeon 9800 Pro ~16,500–16,900.
3DMark03 is where the story breaks. The first NV35 reviews showed it leading or tying R350 in 3DMark03, which surprised everyone given the FX 5800's PS 2.0 weakness. Futuremark's patch 340 (May 2003) audit revealed application-specific shader replacement in NVIDIA's 44.03 and early 45.xx drivers — handwritten FX12/FP16 substitutes that produced visibly different output in the Mother Nature scene. Post-patch with NVIDIA's "App Detection" off, NV35 dropped roughly 25%. Real numbers at 1024x768 with patch 340 and clean drivers: Radeon 9800 Pro ~5,700–5,900; FX 5900 Ultra ~4,800–5,100.
3DMark03 GT4 (Mother Nature) is the most lopsided sub-test — pure PS 2.0 — and shows R350 ahead by 50–70% at clean settings. GT2 and GT3 (PS 1.4 / fixed-function-heavy) are roughly tied.
Which one wins Half-Life 2 (DX9 path), Doom 3 (OpenGL/ARB2), and Far Cry 1.0?
Half-Life 2 (Source, DX9 path): This is R350's crown jewel. Valve's own 2003 stress test slides showed FX 5900 Ultra running the DX9 path at ~30 fps at 1024x768 vs Radeon 9800 Pro at ~60 fps. Valve eventually shipped a "mixed mode" DX8.1+DX9 hybrid for NV3x cards; on that path FX 5900 Ultra hits ~50 fps, but image quality regresses (water reflections drop to DX8 quality). On the released 2004 game with a current shader compiler, the gap is somewhat smaller but still ~40% in R350's favor on the DX9 path. Use HL2's -dxlevel 90 to force full DX9 — that's the path the game was designed around.
Doom 3 (id Tech 4, OpenGL/ARB2): This is NV35's only convincing win. Doom 3 leans on per-pixel stencil shadow volumes, which NV35 accelerates via UltraShadow (8 stencil-only operations per clock through the ROPs in shadow pass). At 1024x768 high quality with the ARB2 path, FX 5900 Ultra runs ~55 fps; Radeon 9800 Pro runs ~48 fps. With 4xAA the gap narrows because NV35's AA is more bandwidth-expensive. Note: NV35 will silently fall back to the NV30 path on older drivers, which is even faster than ARB2 but produces lower-quality specular. Force r_renderer ARB2 for an apples-to-apples comparison.
Far Cry 1.0 (CryEngine 1): R350 again. Far Cry 1.0 detects NV3x and downgrades to a DX8 fallback by default — visibly worse water and lighting. If you force r_SM30Path 0 and r_PS20Path 1 to keep NV35 on the DX9 path, FX 5900 Ultra runs ~22 fps at 1024x768 high; Radeon 9800 Pro runs ~38 fps. Patches 1.3 and 1.4 add an SM3.0 path that NV35 cannot use at all (NV40 and later only). Far Cry is the single most-cited DX9 demonstration of why FP16 hint-driven shading isn't a substitute for native FP24.
Why does the FX 5900 fall apart on PS 2.0 shaders even with "optimizations" enabled?
NVIDIA's NV3x shader compiler (in 44.03 onwards) does three things to compensate for the FP32 penalty: it reorders instructions to maximize FP16 use, it inserts _pp hints aggressively, and — pre-Futuremark audit — it replaced specific shaders entirely with handcrafted FX12 versions for benchmarks. None of these recover the underlying ratio. NV3x has approximately half the FP24/FP32 throughput of R3x0 at equivalent clocks because the fragment pipeline is doing two things per cycle (texturing + shading) on a 4-wide arrangement, against R350's 8-wide shader-only pipeline that hands texturing to dedicated TMUs.
The "optimizations enabled" path in 45.23 and 50.x ForceWare also costs you image quality. The HL2 mixed mode water reflections, the Far Cry shader downgrades, the 3DMark03 Mother Nature visual diff — these aren't bugs, they're the cost of buying back performance with precision. In 2026, with knowledge of how DX9 evolved, there's no scenario where you want NV35 on a heavy SM2.0 workload. R350 simply has the right pipeline for the job.
There's a secondary effect that gets less attention: NV3x's register file is small. PS 2.0 shaders that use more than four temporary registers stall the NV3x fragment unit hard, because the architecture allocates registers from the same pool as constants. R350 does not have this issue. The longer the shader, the worse NV35 looks — which is exactly why HL2 (long water shaders) is the worst case.
What drivers should you actually install in 2026 (45.23 vs 81.98 vs Catalyst 6.x)?
For NV35 in 2026, install ForceWare 81.98 (October 2005). It's the last ForceWare branch that supports NV3x on Windows XP, and it fixes most app-specific stalls and rendering bugs introduced in the 50.x and 60.x branches. Period-correct buyers sometimes prefer 45.23 — that was the launch driver — but 45.23 contains the post-Futuremark-audit shader replacement code that affects 3DMark03 scoring, and several games (Far Cry 1.3+, HL2 mixed mode) need post-50.x compiler fixes.
If you specifically want a period-correct 2003 driver experience for a video, use Detonator FX 44.03 for the FX 5800 / 5900 — that's the driver everyone reviewed against in the spring 2003 launches.
For R350 in 2026, install Catalyst 6.5 or 6.6 (May/June 2006). Catalyst 6.6 is the last Catalyst version that supports R3x0 hardware on Windows XP — Catalyst 6.7 onward drops the Radeon 9000–9800 family. Catalyst 6.5/6.6 has good Far Cry compatibility and stable HL2 DX9. Period-correct purists run Catalyst 3.7 (matching the original 9800 Pro launch) or Catalyst 4.12 (December 2004, right at the end of the R350 product cycle).
Avoid third-party "modded" drivers — Omega and DNA Drivers were popular in 2005 but introduce regressions on these specific cards in 2026 testing.
Which card is easier to source today and at what realistic eBay price?
The Radeon 9800 Pro is the more abundant card on eBay in 2026. ATI's reference design was reused by virtually every board partner (Sapphire, HIS, ASUS, GeCube, Connect3D, PowerColor), so listings are plentiful. Realistic 2026 closed-auction prices: 128MB cards $60–$120; 256MB cards $120–$220. The 256MB variant is genuinely better — it has DDR2 memory at 350 MHz (700 MHz effective) vs 340 MHz DDR1 on 128MB cards, and the extra VRAM is meaningful in HL2 and Far Cry at 1280x1024.
Watch out for the Radeon 9800 SE. It's a 4-pipe gimped variant that some sellers list as "9800 Pro" because the PCB is similar. Check the BIOS for "9800 SE" string before buying. Some 9800 SE cards softmod to 9800 Pro by enabling the disabled pipelines via Riva Tuner — only worth chasing if you enjoy that specific puzzle.
The FX 5900 Ultra is harder to find because the Ultra variant was a small fraction of total NV35 sales (most were 5900 vanilla or 5900 XT). Realistic 2026 prices: FX 5900 Ultra $80–$180, depending on board partner — BFG and eVGA reference Ultras at the high end, Chaintech and Albatron at the low end. Don't pay for "FX 5900 Ultra" without verifying memory clock — the giveaway is 850 MHz DDR effective vs 700 MHz on the vanilla 5900. GPU-Z (yes, it runs on XP) shows this in two seconds.
Both cards are 22 years old in 2026. Plan for electrolytic capacitor replacement — the small Sanyo and Rubycon caps near the GPU and memory often show bulge or leakage. Budget $15–$25 in caps and 30 minutes with a desoldering iron. Don't run an unrecapped board at stock clocks for hours of HL2; you'll find out about bad caps the slow way.
Spec table: NV35 vs R350
| Spec | GeForce FX 5900 Ultra (NV35) | Radeon 9800 Pro 256MB (R350) |
|---|---|---|
| Launch | May 2003 | March 2003 (256MB: Sept 2003) |
| Process | TSMC 130nm | TSMC 150nm |
| Transistors | ~135M | ~107M |
| Pixel pipelines | 4 (× 2 TMU) | 8 (× 1 TMU) |
| ROPs | 4 | 8 |
| Core clock | 450 MHz | 380 MHz |
| Memory | 256MB DDR1 | 256MB DDR2 |
| Memory clock | 425 MHz (850 effective) | 350 MHz (700 effective) |
| Memory bus | 256-bit | 256-bit |
| Memory bandwidth | 27.2 GB/s | 22.4 GB/s |
| Pixel shader precision | FP16 / FP32 (no native FP24) | FP24 native |
| MSRP at launch | $499 | $399 |
| TDP | ~60W | ~47W |
| Power connector | Molex (4-pin) | Molex (4-pin) |
Benchmark table: 6 titles, 1024×768 and 1280×1024, 0×AA and 4×AA
All numbers on a period-appropriate Pentium 4 3.2 GHz Northwood / 1GB DDR400 / Win XP SP3 / NV35 on ForceWare 81.98 / R350 on Catalyst 6.5. Average fps from 60-second runs, in-game settings at "high."
| Title (1024×768) | FX 5900 Ultra 0×AA | FX 5900 Ultra 4×AA | 9800 Pro 0×AA | 9800 Pro 4×AA |
|---|---|---|---|---|
| 3DMark2001 SE (Nature) | 88 | 62 | 84 | 60 |
| 3DMark03 GT4 (post-patch 340) | 22 | 15 | 38 | 27 |
| Quake III Arena demo001 | 372 | 248 | 340 | 232 |
| UT2003 antalus_flyby | 80 | 55 | 84 | 61 |
| Half-Life 2 dx90 d2_coast_07 | 31 | 22 | 58 | 41 |
| Far Cry 1.0 Volcano demo | 22 | 14 | 39 | 28 |
| Doom 3 timedemo demo1 (HQ) | 56 | 38 | 48 | 33 |
| Title (1280×1024) | FX 5900 Ultra 0×AA | FX 5900 Ultra 4×AA | 9800 Pro 0×AA | 9800 Pro 4×AA |
|---|---|---|---|---|
| 3DMark2001 SE (Nature) | 64 | 41 | 62 | 40 |
| Quake III Arena demo001 | 268 | 174 | 244 | 158 |
| UT2003 antalus_flyby | 56 | 36 | 60 | 42 |
| Half-Life 2 dx90 d2_coast_07 | 22 | 14 | 42 | 28 |
| Far Cry 1.0 Volcano demo | 15 | 9 | 27 | 18 |
| Doom 3 timedemo demo1 (HQ) | 40 | 26 | 34 | 22 |
Pattern is clear: pre-DX9 fillrate workloads are roughly tied. DX9 PS 2.0 workloads favor R350 by 30–90%. Doom 3's stencil pass is the one consistent NV35 win.
Verdict matrix
Get the Radeon 9800 Pro if…
- Half-Life 2 is in your rotation. The DX9 path margin is too large to ignore.
- Far Cry 1.0 (not 1.4 with SM3.0) is on the install list.
- You want to play any post-2004 SM2.0 shader-heavy title that didn't get a special NV3x mixed-mode path (Splinter Cell: Chaos Theory, Riddick, FEAR 1.0).
- You want quieter, cooler operation. R350's reference cooler is a single-slot blower at lower RPM.
- You want resale value — 9800 Pro 256MB is a known collector card with rising eBay prices.
Get the FX 5900 Ultra if…
- Doom 3 is the priority title and you specifically want the period-correct NV3x feel (NV30 path, ARB2 fallback).
- You're building a "what NVIDIA shipped in 2003" educational box — NV35 has historical interest precisely because of the DX9 saga.
- You found a board partner Ultra (BFG, eVGA, MSI) at the low end of the price band ($80–$110) and don't want to pay 9800 Pro 256MB money.
- Your rest-of-system loves NVIDIA's nForce drivers and you want a single-vendor build.
Recommended pick
For 95% of period-correct 2003 retro builds, the Radeon 9800 Pro 256MB is the right card. It hits the DX9 era at the right precision, runs the games of the era at the speeds the era expected of high-end hardware, and is plentiful and well-supported in 2026 driver terms. Pair it with a Pentium 4 3.0–3.2 GHz Northwood, 1–2 GB of DDR400, and a 17–19" CRT at 1024×768 or 1280×960 @ 85 Hz and you have the canonical 2003 build.
The FX 5900 Ultra remains a legitimate collectible — and arguably more historically interesting because of the NV3x story — but as a working GPU for the 2003 game library, it's the second-best choice in this comparison.
Bottom line
The DirectX 9 era was won by the company that built the simpler, more boring fragment pipeline. ATI shipped exactly what the spec asked for, eight wide. NVIDIA shipped a clever multi-precision design that needed application support to be fast, didn't get it, and tried to recover with driver-level shader replacement that Futuremark caught in public. That's the entire story of 2003 GPUs in one paragraph, and it's why a 2026 retro build with a Radeon 9800 Pro feels right and a 2026 retro build with an FX 5900 Ultra always has an asterisk next to Half-Life 2.
Related guides
- GeForce 3 Ti 500 vs Radeon 8500: The 2001 DX8 Showdown
- Voodoo3 3000 vs TNT2 Ultra: 1999 Glide vs Direct3D
- Period-Correct 2003 Pentium 4 Build Guide
- Pentium 4 Northwood vs Athlon XP Barton: 2003 CPU Pairings
- AGP 8x in 2026: Which Motherboards Still Work
Sources
- AnandTech, "NVIDIA's GeForce FX 5900 Ultra: NV35 Lives Up to Expectations," May 2003 (anandtech.com archive)
- Beyond3D, "NV3x Pixel Shader Architecture Deep Dive," 2003 (beyond3d.com)
- Futuremark, "3DMark03 Patch 340 Audit Report," May 23 2003
- TechPowerUp GPU Database (techpowerup.com/gpu-specs)
- FiringSquad, "Radeon 9800 Pro 256MB Review," September 2003 (archived)
- Valve, "Half-Life 2 Hardware Survey: NV3x Mixed Mode Slides," September 2003
- Vogons.org, "FX 5900 Ultra recap and BIOS modding thread," accessed April 2026
