mirror of
https://github.com/holub/mame
synced 2025-07-06 02:18:09 +03:00
(simplify slot->bits)
This commit is contained in:
parent
3b23aa9e97
commit
869fe20d5e
@ -244,7 +244,8 @@ static UINT32 ymf278_compute_decay_env_vol_step(YMF278BSlot *slot, int val)
|
|||||||
|
|
||||||
if (rate < 4)
|
if (rate < 4)
|
||||||
res = 0;
|
res = 0;
|
||||||
else res = (256U<<23) / ymf278_compute_decay_rate(rate);
|
else
|
||||||
|
res = (256U<<23) / ymf278_compute_decay_rate(rate);
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
@ -370,16 +371,18 @@ static STREAM_UPDATE( ymf278b_pcm_update )
|
|||||||
{
|
{
|
||||||
slot->stepptr = slot->stepptr - slot->endaddr + slot->loopaddr;
|
slot->stepptr = slot->stepptr - slot->endaddr + slot->loopaddr;
|
||||||
if (slot->stepptr >= slot->endaddr)
|
if (slot->stepptr >= slot->endaddr)
|
||||||
slot->stepptr = slot->loopaddr;
|
slot->stepptr = slot->loopaddr; // loop overflow
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (slot->bits)
|
switch (slot->bits)
|
||||||
{
|
{
|
||||||
case 8:
|
// 8 bit
|
||||||
|
case 0:
|
||||||
sample = ymf278b_read_memory(chip, slot->startaddr + (slot->stepptr>>16))<<8;
|
sample = ymf278b_read_memory(chip, slot->startaddr + (slot->stepptr>>16))<<8;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 12:
|
// 12 bit
|
||||||
|
case 1:
|
||||||
if (slot->stepptr & 1)
|
if (slot->stepptr & 1)
|
||||||
sample = ymf278b_read_memory(chip, slot->startaddr + (slot->stepptr>>17)*3+2)<<8 |
|
sample = ymf278b_read_memory(chip, slot->startaddr + (slot->stepptr>>17)*3+2)<<8 |
|
||||||
(ymf278b_read_memory(chip, slot->startaddr + (slot->stepptr>>17)*3+1) << 4 & 0xf0);
|
(ymf278b_read_memory(chip, slot->startaddr + (slot->stepptr>>17)*3+1) << 4 & 0xf0);
|
||||||
@ -388,10 +391,16 @@ static STREAM_UPDATE( ymf278b_pcm_update )
|
|||||||
(ymf278b_read_memory(chip, slot->startaddr + (slot->stepptr>>17)*3+1) & 0xf0);
|
(ymf278b_read_memory(chip, slot->startaddr + (slot->stepptr>>17)*3+1) & 0xf0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 16:
|
// 16 bit
|
||||||
|
case 2:
|
||||||
sample = ymf278b_read_memory(chip, slot->startaddr + ((slot->stepptr>>16)*2))<<8 |
|
sample = ymf278b_read_memory(chip, slot->startaddr + ((slot->stepptr>>16)*2))<<8 |
|
||||||
ymf278b_read_memory(chip, slot->startaddr + ((slot->stepptr>>16)*2)+1);
|
ymf278b_read_memory(chip, slot->startaddr + ((slot->stepptr>>16)*2)+1);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
// ?? bit, effect is unknown, datasheet says it's prohibited
|
||||||
|
case 3:
|
||||||
|
sample = 0;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
*mixp++ += (sample * chip->volume[slot->TL+chip->pan_left [slot->pan]+(slot->env_vol>>23)])>>17;
|
*mixp++ += (sample * chip->volume[slot->TL+chip->pan_left [slot->pan]+(slot->env_vol>>23)])>>17;
|
||||||
@ -595,22 +604,7 @@ static void ymf278b_C_w(YMF278BChip *chip, UINT8 reg, UINT8 data, int init)
|
|||||||
for (i = 0; i < 12; i++)
|
for (i = 0; i < 12; i++)
|
||||||
p[i] = ymf278b_read_memory(chip, offset+i);
|
p[i] = ymf278b_read_memory(chip, offset+i);
|
||||||
|
|
||||||
switch (p[0]&0xc0)
|
slot->bits = (p[0]&0xc0)>>6;
|
||||||
{
|
|
||||||
case 0:
|
|
||||||
slot->bits = 8;
|
|
||||||
break;
|
|
||||||
case 0x40:
|
|
||||||
slot->bits = 12;
|
|
||||||
break;
|
|
||||||
case 0x80:
|
|
||||||
slot->bits = 16;
|
|
||||||
break;
|
|
||||||
case 0xc0:
|
|
||||||
// prohibited, effect unknown
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
slot->startaddr = (p[2] | (p[1]<<8) | ((p[0]&0x3f)<<16));
|
slot->startaddr = (p[2] | (p[1]<<8) | ((p[0]&0x3f)<<16));
|
||||||
slot->loopaddr = (p[4]<<16) | (p[3]<<24);
|
slot->loopaddr = (p[4]<<16) | (p[3]<<24);
|
||||||
slot->endaddr = (p[6]<<16) | (p[5]<<24);
|
slot->endaddr = (p[6]<<16) | (p[5]<<24);
|
||||||
|
Loading…
Reference in New Issue
Block a user