If your game is using 50% CPU (I assume you're using dual core, so this will be 100% of one core) then your game is most likely sucking up as much processing power as it wants. It'll only use less if you use
Sleep in the loop, which pauses the application for a specified amount of time (a few milliseconds should not be noticeable to the user) and thus gives the processor a break. Alternately, try using dbSetDisplayMode and specifying the VSync flag, as I believe this pauses the application while waiting to render the next frame - instead of using an intensive loop to constantly check if a certain amount of time has elapsed.
I really hate games that use maximum CPU, as sometimes I play some really old games like this that don't require very good hardware, yet my processor gets stressed out (no doubt due to
busy waiting) causing the fan to speed up and be louder. This annoys me because the game probably only really requires about 1% of that processing power.