Move stuff around to accomodate nukedopl update

This commit is contained in:
Jasmine Iwanek
2024-07-08 19:43:25 -04:00
parent 4f020f9a83
commit 24b39c9c8f

View File

@@ -804,114 +804,10 @@ slot_calc_fb(slot_t *slot)
slot->prout = slot->out;
}
// Channel
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;
}
}
channel_setup_alg(chan_t *ch);
static void
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
channel_write_c0(chan_t *ch, uint8_t data)
{