Max Payne 2 is a DX8.1 game although it requires the DX9 runtime (why is that, btw?). Was DX9 (hardware and API) made known to your Remedy partners when concept for this game started? If yes, why go with DX8.1? Too far down the development path already? Didn't envisage the quick take-up of DX9 hardware?
The project started as a content-only project, and we didn?t originally plan on taking the technology nearly as far as we took it in the end. Max2 requires the DX9 runtime, since it would be almost double effort doing the quality assurance on both DX8.1 and DX9.
The reason why we did not move over to using DX9 API calls was that we had a well-tested DirectX8 engine (Max Payne 1, 3DMark2001) that we could trust to run with pretty much everything (You can run Max2 on a Voodoo5 5500 if you want).
Changing to DX9 APIs would again have introduced a lot of QA and testing work, and as it wasn?t essential for the game nor would have increased its quality or graphical looks, it wasn?t done.