FX-series cards have severe problems with higher precision Direct3D shaders, so this is a combination Halo and FX videocard problem.
Most other games will use lesser precision shaders when running on FX-class hardware. In all actuality, the FX series cards should not have included higher precision shader support as they severely lack the horsepower to use them. This causes games that "blindly" query the maximum capabilities to perform poorly. I don't believe Halo has a way to force lower precision shaders.
You may be able to use DirectX Tweaker to force FP16 shader but unsure how predictable this may work. It's worth a shot though and should help improve Halo performance tremendously if it works. FX-series cards perform GREAT with FP16 shaders, it's just the FP32 that kills them to sub-teen framerates best case scenario.
You can try DirectX Tweaker at:
http://www.softpedia.com/get/Tweak/System-Tweak/DirectX-Tweaker.shtml
Run the DirectX Control.exe... and try the following:
1) Right click on the Programs area and select "New"
2) On the right pane, call it Halo and use the Browse to hunt down the executable.
3) On the bottom right, click the checkbox for "Caps Changer"
4) Try setting the Vertex Shader tab's "Max Version" to 1.1
5) Try setting the Pixel Shader tab's "Max Version" to 1.1
This should force Halo to use DX7.0/8.0 level shaders with lower precision.. you can likely tweak the device capabilities more to go higher/lower with a little study/work. It's a nice tool to have until you can afford to get rid of that FX card and go with a newer 3d card.
Good luck!