I think everyone agrees that this issue needed to be addressed a little better before they released the pc version...Oh well..
I have a fairly high-end system and out of the box halo played like crap for me. My brother-in-law has a mid-range system with a cheaper nvidia card and it played like a dream for him...go figure..
ANYWAYS, here is what worked for my system..hopefully it will save you some time..give it a try.
My system:
WinXP Pro
Lots of Harddrives
Nvidia GF4 4400 (latest drivers from Nvidia)
Asus A7N8X-Deluxe (+ latest n-force drivers)
Onboard sound
blah, blah, blah...
Bottom line is to add some qualifiers to your shortcut (as zomar suggested)
..besides the refresh fix listed above it helps if you specify the pixelshaders that you want the game to use. I found for my nvidia card PS1.4 work the best (I have included a listing of all the options at the end of the post)
I have EVERYTHING set to HIGH, and I am using sound Hardware acceleration (YES)...
BUT TURN OFF EAX.
I run at 1024x768 and I am specifying a Refresh rate of 85. (my monitor's actual refresh rate is set much higher)
in game set the FRAMERATE= VSYNC
Once again all ingame settings are set to either YES or HIGH except for EAX which is OFF. (Antialiasing is turned off in the Nvidia control panel, but the "controlled by application" works also)
To get this to work on my machine add the following to the last part of the shortcut (as outlined above):
-vidmode 1024,768,85 -use14
So that your shortcut will be:
"H:\Games\Halo\halo.exe" -vidmode 1024,768,85 -use14
(your drive/folders may be different)
if you want to try the PixelShaders 1.1 then simply change to -use11.
Hope this helps some of you out with this very frustrating problem.
Here is a list of the Commands you can append:
To add the command line:
"C:\Program Files\Microsoft Games\Halo\halo.exe" -vidmode 1024,768,85 -use14
Other commands you can tack on (straight from the Readme.rtf)
-nosound
Disables all sound.
-novideo
Disables video playback.
-nojoystick
Disables joystick/gamepads.
-nogamma
Disables adjustment of gamma.
-useff
Forces the game to run as a fixed function card.
-use11
Forces the game to run as a shader 1.1 card.
-use20
Forces the game to run as a shader 2.0 card.
-safemode
Disables as much as possible from the game.
-window
Runs the game in a window.
-width640
Forces the game to run at 640x480.
-vidmode w,h,r
Forces the game to run at width, height, refresh rate.
-adapter x
Forces the game to run fullscreen on a multimon adaptor.
-port x
Server port address used when hosting games.
-cport x
Client port address used when joining games.
-ip x.x.x.x
Server IP address used when you have multiple IP addresses.
-screenshot
Enables the "Print Screen" key to generate screenshots
-timedemo
Runs four movies and writes out timedemo.txt.
-console
Enables the debugging console.