mirror of
https://gitlab.com/drummyfish/anarch.git
synced 2024-11-25 10:22:23 -05:00
Continue music
This commit is contained in:
parent
2a58188ee0
commit
22b18f1d90
@ -179,13 +179,9 @@ void emscripten_set_main_loop(em_callback_func func, int fps, int simulate_infin
|
|||||||
uint8_t audioBuff[SFG_SFX_SAMPLE_COUNT];
|
uint8_t audioBuff[SFG_SFX_SAMPLE_COUNT];
|
||||||
uint16_t audioPos = 0;
|
uint16_t audioPos = 0;
|
||||||
|
|
||||||
static inline uint8_t addSamples(uint8_t sample1, uint8_t sample2)
|
static inline uint8_t mixSamples(uint8_t sample1, uint8_t sample2)
|
||||||
{
|
{
|
||||||
int16_t mixed = sample1;
|
return (((uint16_t) sample1) + ((uint16_t) sample2)) / 2;
|
||||||
mixed -= 127;
|
|
||||||
mixed += sample2;
|
|
||||||
mixed = (mixed > 0) ? ((mixed < 255) ? mixed : 255) : 0;
|
|
||||||
return mixed;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t musicOn = 1;
|
uint8_t musicOn = 1;
|
||||||
@ -195,7 +191,7 @@ void audioFillCallback(void *userdata, uint8_t *s, int l)
|
|||||||
for (int i = 0; i < l; ++i)
|
for (int i = 0; i < l; ++i)
|
||||||
{
|
{
|
||||||
s[i] = musicOn ?
|
s[i] = musicOn ?
|
||||||
addSamples(audioBuff[audioPos],SFG_getNextMusicSample()) :
|
mixSamples(audioBuff[audioPos],SFG_getNextMusicSample() / 2) :
|
||||||
audioBuff[audioPos];
|
audioBuff[audioPos];
|
||||||
|
|
||||||
audioBuff[audioPos] = 127;
|
audioBuff[audioPos] = 127;
|
||||||
@ -217,7 +213,7 @@ void SFG_playSound(uint8_t soundIndex, uint8_t volume)
|
|||||||
for (int i = 0; i < SFG_SFX_SAMPLE_COUNT; ++i)
|
for (int i = 0; i < SFG_SFX_SAMPLE_COUNT; ++i)
|
||||||
{
|
{
|
||||||
audioBuff[pos] =
|
audioBuff[pos] =
|
||||||
addSamples(audioBuff[pos],SFG_GET_SFX_SAMPLE(soundIndex,i) * volumeStep);
|
mixSamples(audioBuff[pos],SFG_GET_SFX_SAMPLE(soundIndex,i) * volumeStep);
|
||||||
|
|
||||||
pos = (pos < SFG_SFX_SAMPLE_COUNT - 1) ? (pos + 1) : 0;
|
pos = (pos < SFG_SFX_SAMPLE_COUNT - 1) ? (pos + 1) : 0;
|
||||||
}
|
}
|
||||||
|
34
sounds.h
34
sounds.h
@ -37,13 +37,10 @@
|
|||||||
|
|
||||||
struct
|
struct
|
||||||
{ // all should be initialized to 0
|
{ // all should be initialized to 0
|
||||||
// TODO: leave only those needed here
|
|
||||||
uint8_t track;
|
uint8_t track;
|
||||||
uint32_t t;
|
uint32_t t;
|
||||||
uint32_t t2;
|
uint32_t t2;
|
||||||
uint32_t n3t;
|
uint32_t n11t;
|
||||||
uint32_t n5t;
|
|
||||||
uint32_t n7t;
|
|
||||||
} SFG_MusicState;
|
} SFG_MusicState;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -56,28 +53,28 @@ uint8_t SFG_getNextMusicSample()
|
|||||||
{
|
{
|
||||||
SFG_MusicState.track++;
|
SFG_MusicState.track++;
|
||||||
|
|
||||||
if (SFG_MusicState.track >= 4)
|
if (SFG_MusicState.track >= 5)
|
||||||
SFG_MusicState.track = 0;
|
SFG_MusicState.track = 0;
|
||||||
|
|
||||||
SFG_MusicState.t = 0;
|
SFG_MusicState.t = 0;
|
||||||
SFG_MusicState.t2 = 0;
|
SFG_MusicState.t2 = 0;
|
||||||
SFG_MusicState.n3t = 0;
|
SFG_MusicState.n11t = 0;
|
||||||
SFG_MusicState.n5t = 0;
|
|
||||||
SFG_MusicState.n7t = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t result;
|
uint8_t result;
|
||||||
|
|
||||||
#define t SFG_MusicState.t
|
#define t SFG_MusicState.t
|
||||||
#define t2 SFG_MusicState.t2
|
#define t2 SFG_MusicState.t2
|
||||||
#define n3t SFG_MusicState.n3t
|
#define n11t SFG_MusicState.n11t
|
||||||
|
|
||||||
switch (SFG_MusicState.track) // individual music tracks
|
switch (SFG_MusicState.track) // individual music tracks
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
{
|
{
|
||||||
uint32_t a = ((t >> 7) | (t >> 9) | (~t << 1) | t);
|
uint32_t a = ((t >> 7) | (t >> 9) | (~t << 1) | t);
|
||||||
result = ((t) & 65536 ? (a & (((t * t) >> 16) & 0x09)) : ~a);
|
result = ((t) & 65536 ? (a & (((t2) >> 16) & 0x09)) : ~a);
|
||||||
|
|
||||||
|
t2 += t;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -105,6 +102,17 @@ uint8_t SFG_getNextMusicSample()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case 4:
|
||||||
|
{
|
||||||
|
result =
|
||||||
|
((0x47 >> (t >> 9)) & (t >> t)) | (0x57 >> (t >> 7)) |
|
||||||
|
(0x06 >> (t >> (((n11t) >> 14) & 0x0e)));
|
||||||
|
|
||||||
|
n11t += 11;
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
result = 127;
|
result = 127;
|
||||||
break;
|
break;
|
||||||
@ -112,13 +120,9 @@ uint8_t SFG_getNextMusicSample()
|
|||||||
|
|
||||||
#undef t
|
#undef t
|
||||||
#undef t2
|
#undef t2
|
||||||
#undef n3t
|
#undef n11t
|
||||||
|
|
||||||
SFG_MusicState.t += 1;
|
SFG_MusicState.t += 1;
|
||||||
SFG_MusicState.t2 += SFG_MusicState.t;
|
|
||||||
SFG_MusicState.n3t += 3;
|
|
||||||
SFG_MusicState.n5t += 5;
|
|
||||||
SFG_MusicState.n7t += 7;
|
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user