delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1997/01/28/19:09:50

To: djgpp AT delorie DOT com
Subject: Re: Allegro game timing.
Message-ID: <19970128.160056.2063.7.chambersb@juno.com>
References: <Pine DOT SUN DOT 3 DOT 95 DOT 970128162301 DOT 26911C-100000 AT ernie DOT eecs DOT uic DOT edu>
From: chambersb AT juno DOT com (Benjamin D Chambers)
Date: Tue, 28 Jan 1997 19:00:00 EST

On Tue, 28 Jan 1997 16:30:08 -0600 (CST) Andrew Deren
<aderen AT eecs DOT uic DOT edu> writes:
>Can anyone help me with setting up timers in Allegro so that my game
>events respond to the timer. So far I was using an old method I used 
>with
>BC++:
>
>.
>.
>rest(10);
>my_timer++;
>//i want some event to occur every 6th irritation
>if (my_timer % 6 == 0) {do some stuff;}
>//other stuff every 11th
>if (my_timer % 11 == 0) {some other stuff;}
Here's the problem.  Don't use mod - it's a divide, taking a different
part of the result.  And since you're using different values to mod by,
there's no way to save on the computations.  Instead, try keeping a
running tally for each task, and resetting it to zero when appropriate. 
Believe me, multiple mods being removed will increase the speed by an
incredible amount.  For instance, use
if (timer_1==0) {do some stuff; timer_1=6;}
if (timer_2==0) {do some other stuff; timer_2=11;}

And have them all being decremented in your interrupt.

...Chambers

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019