Permalink
Browse files

break up lead update so lead data is only fetched once

  • Loading branch information...
1 parent fab67dc commit 3504f5d8268e5e2ac9596a9468e6699a350e8fc2 @dop3j0e committed Aug 11, 2012
Showing with 8 additions and 4 deletions.
  1. +8 −4 win/main.cpp
View
@@ -102,15 +102,19 @@ static unsigned char voice_lead(unsigned long i, int voice_nr)
boosts &= ~(1 << voice_nr);
if (0 == (i & 0x1FF))
leadtimer--;
+
if (0 == leadtimer)
- {
leadptr++;
- leadtimer = leadtimes[leaddata[(leadseq[leadptr >> 4] << 4) | (leadptr & 0xF)] >> 5];
+
+ uint8_t data = leaddata[(leadseq[leadptr >> 4] << 4) | (leadptr & 0xF)];
+
+ if (0 == leadtimer)
+ {
+ leadtimer = leadtimes[data >> 5];
boosts |= 1 << voice_nr;
}
-
- uint8_t melody = leaddata[(leadseq[leadptr >> 4] << 4) | (leadptr & 0xF)] & 0x1F;
+ uint8_t melody = data & 0x1F;
lead_osc += notes[melody];
uint8_t sample = ((lead_osc >> 6) & 0x7F) + ((lead_osc >> 6) & 0x3F);
return (0 == melody) ? 0 : ((boosts & (1 << voice_nr)) ? sample : THREEQUARTERS(sample));

0 comments on commit 3504f5d

Please sign in to comment.