mirror of
https://github.com/holub/mame
synced 2025-05-23 06:08:48 +03:00
Fixed random lfsr generation in pokey.c. This fixes MT00501 while tempest is still starting up. [Couriersud]
This commit is contained in:
parent
d211dd4ec3
commit
94a28f7834
@ -89,7 +89,7 @@
|
||||
#define VERBOSE_SOUND 0
|
||||
#define VERBOSE_TIMER 0
|
||||
#define VERBOSE_POLY 0
|
||||
#define VERBOSE_RAND 0
|
||||
#define VERBOSE_RAND 1
|
||||
|
||||
#define LOG(x) do { if (VERBOSE) logerror x; } while (0)
|
||||
|
||||
@ -419,6 +419,46 @@ static void poly_init(UINT8 *poly, int size, int left, int right, int add)
|
||||
}
|
||||
|
||||
static void rand_init(UINT8 *rng, int size, int left, int right, int add)
|
||||
{
|
||||
int mask = (1 << size) - 1;
|
||||
int i;
|
||||
UINT32 lfsr = 0;
|
||||
|
||||
LOG_RAND(("rand %d\n", size));
|
||||
|
||||
if (size == 17)
|
||||
{
|
||||
for( i = 0; i < mask; i++ )
|
||||
{
|
||||
/* calculate next bit @ 7 */
|
||||
int in8 = !((lfsr >> 8) & 1) ^ ((lfsr >> 13) & 1);
|
||||
int in = (lfsr & 1);
|
||||
lfsr = lfsr >> 1;
|
||||
lfsr = (lfsr & 0xff7f) | (in8 << 7);
|
||||
lfsr = (in << 16) | lfsr;
|
||||
*rng = (lfsr >> 8) & 0xff; /* use bits 0..7 */
|
||||
LOG_RAND(("%05x: %02x\n", lfsr, *rng));
|
||||
rng++;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for( i = 0; i < mask; i++ )
|
||||
{
|
||||
/* calculate next bit */
|
||||
int in = !((lfsr >> 0) & 1) ^ ((lfsr >> 5) & 1);
|
||||
lfsr = lfsr >> 1;
|
||||
lfsr = (in << 8) | lfsr;
|
||||
*rng = lfsr & 0xff; /* use bits 0..7 */
|
||||
LOG_RAND(("%05x: %02x\n", lfsr, *rng));
|
||||
rng++;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#if 0
|
||||
static void rand_init_old(UINT8 *rng, int size, int left, int right, int add)
|
||||
{
|
||||
int mask = (1 << size) - 1;
|
||||
int i, x = 0;
|
||||
@ -436,7 +476,7 @@ static void rand_init(UINT8 *rng, int size, int left, int right, int add)
|
||||
x = ((x << left) + (x >> right) + add) & mask;
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
static void register_for_save(pokey_state *chip, device_t *device)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user