Move stuff around to accomodate nukedopl update
This commit is contained in:
@@ -804,114 +804,10 @@ slot_calc_fb(slot_t *slot)
|
|||||||
slot->prout = slot->out;
|
slot->prout = slot->out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Channel
|
||||||
|
|
||||||
static void
|
static void
|
||||||
channel_setup_alg(chan_t *ch)
|
channel_setup_alg(chan_t *ch);
|
||||||
{
|
|
||||||
if (ch->chtype == ch_drum) {
|
|
||||||
if (ch->ch_num == 7 || ch->ch_num == 8) {
|
|
||||||
ch->slots[0]->mod = &ch->dev->zeromod;
|
|
||||||
ch->slots[1]->mod = &ch->dev->zeromod;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (ch->alg & 0x01) {
|
|
||||||
case 0x00:
|
|
||||||
ch->slots[0]->mod = &ch->slots[0]->fbmod;
|
|
||||||
ch->slots[1]->mod = &ch->slots[0]->out;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 0x01:
|
|
||||||
ch->slots[0]->mod = &ch->slots[0]->fbmod;
|
|
||||||
ch->slots[1]->mod = &ch->dev->zeromod;
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ch->alg & 0x08)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (ch->alg & 0x04) {
|
|
||||||
ch->pair->out[0] = &ch->dev->zeromod;
|
|
||||||
ch->pair->out[1] = &ch->dev->zeromod;
|
|
||||||
ch->pair->out[2] = &ch->dev->zeromod;
|
|
||||||
ch->pair->out[3] = &ch->dev->zeromod;
|
|
||||||
|
|
||||||
switch (ch->alg & 0x03) {
|
|
||||||
case 0x00:
|
|
||||||
ch->pair->slots[0]->mod = &ch->pair->slots[0]->fbmod;
|
|
||||||
ch->pair->slots[1]->mod = &ch->pair->slots[0]->out;
|
|
||||||
ch->slots[0]->mod = &ch->pair->slots[1]->out;
|
|
||||||
ch->slots[1]->mod = &ch->slots[0]->out;
|
|
||||||
ch->out[0] = &ch->slots[1]->out;
|
|
||||||
ch->out[1] = &ch->dev->zeromod;
|
|
||||||
ch->out[2] = &ch->dev->zeromod;
|
|
||||||
ch->out[3] = &ch->dev->zeromod;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 0x01:
|
|
||||||
ch->pair->slots[0]->mod = &ch->pair->slots[0]->fbmod;
|
|
||||||
ch->pair->slots[1]->mod = &ch->pair->slots[0]->out;
|
|
||||||
ch->slots[0]->mod = &ch->dev->zeromod;
|
|
||||||
ch->slots[1]->mod = &ch->slots[0]->out;
|
|
||||||
ch->out[0] = &ch->pair->slots[1]->out;
|
|
||||||
ch->out[1] = &ch->slots[1]->out;
|
|
||||||
ch->out[2] = &ch->dev->zeromod;
|
|
||||||
ch->out[3] = &ch->dev->zeromod;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 0x02:
|
|
||||||
ch->pair->slots[0]->mod = &ch->pair->slots[0]->fbmod;
|
|
||||||
ch->pair->slots[1]->mod = &ch->dev->zeromod;
|
|
||||||
ch->slots[0]->mod = &ch->pair->slots[1]->out;
|
|
||||||
ch->slots[1]->mod = &ch->slots[0]->out;
|
|
||||||
ch->out[0] = &ch->pair->slots[0]->out;
|
|
||||||
ch->out[1] = &ch->slots[1]->out;
|
|
||||||
ch->out[2] = &ch->dev->zeromod;
|
|
||||||
ch->out[3] = &ch->dev->zeromod;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 0x03:
|
|
||||||
ch->pair->slots[0]->mod = &ch->pair->slots[0]->fbmod;
|
|
||||||
ch->pair->slots[1]->mod = &ch->dev->zeromod;
|
|
||||||
ch->slots[0]->mod = &ch->pair->slots[1]->out;
|
|
||||||
ch->slots[1]->mod = &ch->dev->zeromod;
|
|
||||||
ch->out[0] = &ch->pair->slots[0]->out;
|
|
||||||
ch->out[1] = &ch->slots[0]->out;
|
|
||||||
ch->out[2] = &ch->slots[1]->out;
|
|
||||||
ch->out[3] = &ch->dev->zeromod;
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
} else
|
|
||||||
switch (ch->alg & 0x01) {
|
|
||||||
case 0x00:
|
|
||||||
ch->slots[0]->mod = &ch->slots[0]->fbmod;
|
|
||||||
ch->slots[1]->mod = &ch->slots[0]->out;
|
|
||||||
ch->out[0] = &ch->slots[1]->out;
|
|
||||||
ch->out[1] = &ch->dev->zeromod;
|
|
||||||
ch->out[2] = &ch->dev->zeromod;
|
|
||||||
ch->out[3] = &ch->dev->zeromod;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 0x01:
|
|
||||||
ch->slots[0]->mod = &ch->slots[0]->fbmod;
|
|
||||||
ch->slots[1]->mod = &ch->dev->zeromod;
|
|
||||||
ch->out[0] = &ch->slots[0]->out;
|
|
||||||
ch->out[1] = &ch->slots[1]->out;
|
|
||||||
ch->out[2] = &ch->dev->zeromod;
|
|
||||||
ch->out[3] = &ch->dev->zeromod;
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
channel_update_rhythm(nuked_t *dev, uint8_t data)
|
channel_update_rhythm(nuked_t *dev, uint8_t data)
|
||||||
@@ -1035,6 +931,115 @@ channel_write_b0(chan_t *ch, uint8_t data)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
channel_setup_alg(chan_t *ch)
|
||||||
|
{
|
||||||
|
if (ch->chtype == ch_drum) {
|
||||||
|
if (ch->ch_num == 7 || ch->ch_num == 8) {
|
||||||
|
ch->slots[0]->mod = &ch->dev->zeromod;
|
||||||
|
ch->slots[1]->mod = &ch->dev->zeromod;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (ch->alg & 0x01) {
|
||||||
|
case 0x00:
|
||||||
|
ch->slots[0]->mod = &ch->slots[0]->fbmod;
|
||||||
|
ch->slots[1]->mod = &ch->slots[0]->out;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 0x01:
|
||||||
|
ch->slots[0]->mod = &ch->slots[0]->fbmod;
|
||||||
|
ch->slots[1]->mod = &ch->dev->zeromod;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ch->alg & 0x08)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (ch->alg & 0x04) {
|
||||||
|
ch->pair->out[0] = &ch->dev->zeromod;
|
||||||
|
ch->pair->out[1] = &ch->dev->zeromod;
|
||||||
|
ch->pair->out[2] = &ch->dev->zeromod;
|
||||||
|
ch->pair->out[3] = &ch->dev->zeromod;
|
||||||
|
|
||||||
|
switch (ch->alg & 0x03) {
|
||||||
|
case 0x00:
|
||||||
|
ch->pair->slots[0]->mod = &ch->pair->slots[0]->fbmod;
|
||||||
|
ch->pair->slots[1]->mod = &ch->pair->slots[0]->out;
|
||||||
|
ch->slots[0]->mod = &ch->pair->slots[1]->out;
|
||||||
|
ch->slots[1]->mod = &ch->slots[0]->out;
|
||||||
|
ch->out[0] = &ch->slots[1]->out;
|
||||||
|
ch->out[1] = &ch->dev->zeromod;
|
||||||
|
ch->out[2] = &ch->dev->zeromod;
|
||||||
|
ch->out[3] = &ch->dev->zeromod;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 0x01:
|
||||||
|
ch->pair->slots[0]->mod = &ch->pair->slots[0]->fbmod;
|
||||||
|
ch->pair->slots[1]->mod = &ch->pair->slots[0]->out;
|
||||||
|
ch->slots[0]->mod = &ch->dev->zeromod;
|
||||||
|
ch->slots[1]->mod = &ch->slots[0]->out;
|
||||||
|
ch->out[0] = &ch->pair->slots[1]->out;
|
||||||
|
ch->out[1] = &ch->slots[1]->out;
|
||||||
|
ch->out[2] = &ch->dev->zeromod;
|
||||||
|
ch->out[3] = &ch->dev->zeromod;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 0x02:
|
||||||
|
ch->pair->slots[0]->mod = &ch->pair->slots[0]->fbmod;
|
||||||
|
ch->pair->slots[1]->mod = &ch->dev->zeromod;
|
||||||
|
ch->slots[0]->mod = &ch->pair->slots[1]->out;
|
||||||
|
ch->slots[1]->mod = &ch->slots[0]->out;
|
||||||
|
ch->out[0] = &ch->pair->slots[0]->out;
|
||||||
|
ch->out[1] = &ch->slots[1]->out;
|
||||||
|
ch->out[2] = &ch->dev->zeromod;
|
||||||
|
ch->out[3] = &ch->dev->zeromod;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 0x03:
|
||||||
|
ch->pair->slots[0]->mod = &ch->pair->slots[0]->fbmod;
|
||||||
|
ch->pair->slots[1]->mod = &ch->dev->zeromod;
|
||||||
|
ch->slots[0]->mod = &ch->pair->slots[1]->out;
|
||||||
|
ch->slots[1]->mod = &ch->dev->zeromod;
|
||||||
|
ch->out[0] = &ch->pair->slots[0]->out;
|
||||||
|
ch->out[1] = &ch->slots[0]->out;
|
||||||
|
ch->out[2] = &ch->slots[1]->out;
|
||||||
|
ch->out[3] = &ch->dev->zeromod;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} else
|
||||||
|
switch (ch->alg & 0x01) {
|
||||||
|
case 0x00:
|
||||||
|
ch->slots[0]->mod = &ch->slots[0]->fbmod;
|
||||||
|
ch->slots[1]->mod = &ch->slots[0]->out;
|
||||||
|
ch->out[0] = &ch->slots[1]->out;
|
||||||
|
ch->out[1] = &ch->dev->zeromod;
|
||||||
|
ch->out[2] = &ch->dev->zeromod;
|
||||||
|
ch->out[3] = &ch->dev->zeromod;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 0x01:
|
||||||
|
ch->slots[0]->mod = &ch->slots[0]->fbmod;
|
||||||
|
ch->slots[1]->mod = &ch->dev->zeromod;
|
||||||
|
ch->out[0] = &ch->slots[0]->out;
|
||||||
|
ch->out[1] = &ch->slots[1]->out;
|
||||||
|
ch->out[2] = &ch->dev->zeromod;
|
||||||
|
ch->out[3] = &ch->dev->zeromod;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
channel_write_c0(chan_t *ch, uint8_t data)
|
channel_write_c0(chan_t *ch, uint8_t data)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user