mirror of
https://github.com/RetroDECK/Supermodel.git
synced 2025-02-16 17:35:39 +00:00
Increase MIDI FIFO buffer size for SCSP; should prevent FIFO overflows
Also use similar macro for DSB FIFO buffer
This commit is contained in:
parent
e93c5d710f
commit
0c47ac831a
|
@ -376,7 +376,7 @@ UINT8 CDSB1::IORead8(UINT32 addr)
|
||||||
if (fifoIdxR != fifoIdxW) // if these are equal, nothing has been written yet (don't advance)
|
if (fifoIdxR != fifoIdxW) // if these are equal, nothing has been written yet (don't advance)
|
||||||
{
|
{
|
||||||
fifoIdxR++;
|
fifoIdxR++;
|
||||||
fifoIdxR &= 127;
|
fifoIdxR &= FIFO_STACK_SIZE_MASK;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fifoIdxR == fifoIdxW) // FIFO empty?
|
if (fifoIdxR == fifoIdxW) // FIFO empty?
|
||||||
|
@ -415,7 +415,7 @@ void CDSB1::SendCommand(UINT8 data)
|
||||||
* over the course of a frame at once.
|
* over the course of a frame at once.
|
||||||
*/
|
*/
|
||||||
fifo[fifoIdxW++] = data;
|
fifo[fifoIdxW++] = data;
|
||||||
fifoIdxW &= 127;
|
fifoIdxW &= FIFO_STACK_SIZE_MASK;
|
||||||
//printf("Write FIFO: %02X\n", data);
|
//printf("Write FIFO: %02X\n", data);
|
||||||
|
|
||||||
// Have we caught up to the read pointer?
|
// Have we caught up to the read pointer?
|
||||||
|
@ -983,7 +983,7 @@ void CDSB2::SendCommand(UINT8 data)
|
||||||
* over the course of a frame at once.
|
* over the course of a frame at once.
|
||||||
*/
|
*/
|
||||||
fifo[fifoIdxW++] = data;
|
fifo[fifoIdxW++] = data;
|
||||||
fifoIdxW &= 255;
|
fifoIdxW &= FIFO_STACK_SIZE_MASK;
|
||||||
//printf("Write FIFO: %02X\n", data);
|
//printf("Write FIFO: %02X\n", data);
|
||||||
|
|
||||||
// Have we caught up to the read pointer?
|
// Have we caught up to the read pointer?
|
||||||
|
@ -1013,7 +1013,7 @@ void CDSB2::RunFrame(INT16 *audioL, INT16 *audioR)
|
||||||
{
|
{
|
||||||
cmdLatch = fifo[fifoIdxR]; // retrieve next command byte
|
cmdLatch = fifo[fifoIdxR]; // retrieve next command byte
|
||||||
fifoIdxR++;
|
fifoIdxR++;
|
||||||
fifoIdxR &= 255;
|
fifoIdxR &= FIFO_STACK_SIZE_MASK;
|
||||||
|
|
||||||
M68KSetIRQ(1); // indicate pending command
|
M68KSetIRQ(1); // indicate pending command
|
||||||
//printf("68K INT fired\n");
|
//printf("68K INT fired\n");
|
||||||
|
|
|
@ -38,6 +38,8 @@
|
||||||
#include "CPU/Z80/Z80.h"
|
#include "CPU/Z80/Z80.h"
|
||||||
#include "Util/NewConfig.h"
|
#include "Util/NewConfig.h"
|
||||||
|
|
||||||
|
#define FIFO_STACK_SIZE 0x100
|
||||||
|
#define FIFO_STACK_SIZE_MASK (FIFO_STACK_SIZE - 1)
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
Resampling
|
Resampling
|
||||||
|
@ -213,7 +215,7 @@ private:
|
||||||
UINT8 *ram; // Z80 RAM
|
UINT8 *ram; // Z80 RAM
|
||||||
|
|
||||||
// Command FIFO
|
// Command FIFO
|
||||||
UINT8 fifo[128];
|
UINT8 fifo[FIFO_STACK_SIZE];
|
||||||
int fifoIdxR; // read position
|
int fifoIdxR; // read position
|
||||||
int fifoIdxW; // write position
|
int fifoIdxW; // write position
|
||||||
|
|
||||||
|
@ -301,7 +303,7 @@ private:
|
||||||
UINT8 *ram; // 68K RAM
|
UINT8 *ram; // 68K RAM
|
||||||
|
|
||||||
// Command FIFO
|
// Command FIFO
|
||||||
UINT8 fifo[256];
|
UINT8 fifo[FIFO_STACK_SIZE];
|
||||||
int fifoIdxR; // read position
|
int fifoIdxR; // read position
|
||||||
int fifoIdxW; // write position
|
int fifoIdxW; // write position
|
||||||
|
|
||||||
|
|
|
@ -134,7 +134,7 @@ static DWORD IrqMidi;
|
||||||
unsigned short MCIEB;
|
unsigned short MCIEB;
|
||||||
unsigned short MCIPD;
|
unsigned short MCIPD;
|
||||||
|
|
||||||
#define MIDI_STACK_SIZE 128
|
#define MIDI_STACK_SIZE 0x100
|
||||||
#define MIDI_STACK_SIZE_MASK (MIDI_STACK_SIZE-1)
|
#define MIDI_STACK_SIZE_MASK (MIDI_STACK_SIZE-1)
|
||||||
|
|
||||||
static BYTE MidiOutStack[16];
|
static BYTE MidiOutStack[16];
|
||||||
|
|
Loading…
Reference in a new issue