summaryrefslogtreecommitdiff
path: root/plugins/dumb/dumb-kode54/src/it/itrender.c
diff options
context:
space:
mode:
authorGravatar Alexey Yakovenko <wakeroid@gmail.com>2010-05-27 22:51:35 +0200
committerGravatar Alexey Yakovenko <wakeroid@gmail.com>2010-05-27 22:51:35 +0200
commit4810f9a0af507bb405e6a3c58decfa9c9980b2ff (patch)
tree75ac9c06345b23528e6771bb1bae697ff5c29c1c /plugins/dumb/dumb-kode54/src/it/itrender.c
parentad71971955594ada4a0b14d176a192d050c9ee36 (diff)
merged parts of DUMB-0.9.3
Diffstat (limited to 'plugins/dumb/dumb-kode54/src/it/itrender.c')
-rw-r--r--plugins/dumb/dumb-kode54/src/it/itrender.c27
1 files changed, 25 insertions, 2 deletions
diff --git a/plugins/dumb/dumb-kode54/src/it/itrender.c b/plugins/dumb/dumb-kode54/src/it/itrender.c
index 5dd8e4ef..d1ffc559 100644
--- a/plugins/dumb/dumb-kode54/src/it/itrender.c
+++ b/plugins/dumb/dumb-kode54/src/it/itrender.c
@@ -500,7 +500,6 @@ static void it_reset_filter_state(IT_FILTER_STATE *state)
* output starting at dst[pos]. The pos parameter is required for getting
* click removal right.
*/
-
static void it_filter(DUMB_CLICK_REMOVER *cr, IT_FILTER_STATE *state, sample_t *dst, long pos, sample_t *src, long size, int step, int sampfreq, int cutoff, int resonance)
{
sample_t currsample = state->currsample;
@@ -732,7 +731,6 @@ static void reset_tick_counts(DUMB_IT_SIGRENDERER *sigrenderer)
}
-
static void reset_channel_effects(IT_CHANNEL *channel)
{
channel->volslide = 0;
@@ -1058,6 +1056,24 @@ static void update_effects(DUMB_IT_SIGRENDERER *sigrenderer)
}
}
+ if (channel->panslide && !IT_IS_SURROUND(channel->pan)) {
+ if (sigrenderer->sigdata->flags & IT_WAS_AN_XM) {
+ if (channel->panslide == -128)
+ channel->truepan = 32;
+ else
+ channel->truepan = MID(32, channel->truepan + channel->panslide*64, 32+255*64);
+ } else {
+ channel->pan += channel->panslide;
+ if (channel->pan > 64) {
+ if (channel->panslide >= 0)
+ channel->pan = 64;
+ else
+ channel->pan = 0;
+ }
+ channel->truepan = channel->pan << IT_ENVELOPE_SHIFT;
+ }
+ }
+
if (channel->channelvolslide) {
channel->channelvolume += channel->channelvolslide;
if (channel->channelvolume > 64) {
@@ -1685,6 +1701,12 @@ static void get_default_volpan(DUMB_IT_SIGDATA *sigdata, IT_CHANNEL *channel)
return;
}
+ if (sigdata->flags & IT_WAS_AN_XM) {
+ if (!(sigdata->flags & IT_WAS_A_MOD))
+ channel->truepan = 32 + sigdata->sample[channel->sample-1].default_pan*64;
+ return;
+ }
+
{
int pan = sigdata->sample[channel->sample-1].default_pan;
if (pan >= 128 && pan <= 192) {
@@ -5540,3 +5562,4 @@ int dumb_it_scan_for_playable_orders(DUMB_IT_SIGDATA *sigdata, dumb_scan_callbac
return 0;
}
+