mirror of
https://github.com/xemu-project/xemu.git
synced 2024-11-23 19:49:43 +00:00
audio: GUSword is uint16_t
Signed-off-by: Juan Quintela <quintela@redhat.com> Message-id: 20170425223739.6703-19-quintela@redhat.com Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
parent
1c742f2b8e
commit
4bf7792aae
@ -31,7 +31,7 @@
|
||||
#include "gusemu.h"
|
||||
|
||||
#define GUSregb(position) (* (gusptr+(position)))
|
||||
#define GUSregw(position) (*(GUSword *) (gusptr+(position)))
|
||||
#define GUSregw(position) (*(uint16_t *) (gusptr+(position)))
|
||||
#define GUSregd(position) (*(GUSdword *)(gusptr+(position)))
|
||||
|
||||
/* size given in bytes */
|
||||
@ -173,7 +173,7 @@ unsigned int gus_read(GUSEmuState * state, int port, int size)
|
||||
value_read = value_read >> 8;
|
||||
value_read &= 0xff;
|
||||
}
|
||||
return (GUSword) value_read;
|
||||
return (uint16_t) value_read;
|
||||
/* case 0x306: */ /* Mixer/Version info */
|
||||
/* return 0xff; */ /* Pre 3.6 boards, ICS mixer NOT present */
|
||||
case 0x307: /* DRAMaccess */
|
||||
@ -318,15 +318,15 @@ void gus_write(GUSEmuState * state, int port, int size, unsigned int data)
|
||||
case 0x304:
|
||||
case 0x305:
|
||||
{
|
||||
GUSword writedata = (GUSword) data;
|
||||
GUSword readmask = 0x0000;
|
||||
uint16_t writedata = (uint16_t) data;
|
||||
uint16_t readmask = 0x0000;
|
||||
if (size == 1)
|
||||
{
|
||||
readmask = 0xff00;
|
||||
writedata &= 0xff;
|
||||
if ((port & 0xff0f) == 0x305)
|
||||
{
|
||||
writedata = (GUSword) (writedata << 8);
|
||||
writedata = (uint16_t) (writedata << 8);
|
||||
readmask = 0x00ff;
|
||||
}
|
||||
}
|
||||
@ -353,7 +353,7 @@ void gus_write(GUSEmuState * state, int port, int size, unsigned int data)
|
||||
break; /* reset flag active? */
|
||||
offset = 2 * (GUSregb(FunkSelReg3x3) & 0x0f);
|
||||
offset += (GUSregb(VoiceSelReg3x2) & 0x1f) << 5; /* = Voice*32 + Funktion*2 */
|
||||
GUSregw(offset) = (GUSword) ((GUSregw(offset) & readmask) | writedata);
|
||||
GUSregw(offset) = (uint16_t) ((GUSregw(offset) & readmask) | writedata);
|
||||
}
|
||||
break;
|
||||
/* voice unspecific functions */
|
||||
@ -521,7 +521,7 @@ void gus_dma_transferdata(GUSEmuState * state, char *dma_addr, unsigned int coun
|
||||
destaddr = (char *) state->himemaddr + offset; /* wavetable RAM address */
|
||||
}
|
||||
|
||||
GUSregw(GUS42DMAStart) += (GUSword) (count >> 4); /* ToDo: add 16bit GUS page limit? */
|
||||
GUSregw(GUS42DMAStart) += (uint16_t) (count >> 4); /* ToDo: add 16bit GUS page limit? */
|
||||
GUSregb(GUS50DMAHigh) = (uint8_t) ((count + GUSregb(GUS50DMAHigh)) & 0xf); /* ToDo: add 16bit GUS page limit? */
|
||||
|
||||
if (GUSregb(GUS41DMACtrl) & 0x02) /* direction, 0 := sysram->gusram */
|
||||
|
@ -27,10 +27,10 @@
|
||||
#include "gustate.h"
|
||||
|
||||
#define GUSregb(position) (* (gusptr+(position)))
|
||||
#define GUSregw(position) (*(GUSword *) (gusptr+(position)))
|
||||
#define GUSregw(position) (*(uint16_t *) (gusptr+(position)))
|
||||
#define GUSregd(position) (*(GUSdword *)(gusptr+(position)))
|
||||
|
||||
#define GUSvoice(position) (*(GUSword *)(voiceptr+(position)))
|
||||
#define GUSvoice(position) (*(uint16_t *)(voiceptr+(position)))
|
||||
|
||||
/* samples are always 16bit stereo (4 bytes each, first right then left interleaved) */
|
||||
void gus_mixvoices(GUSEmuState * state, unsigned int playback_freq, unsigned int numsamples,
|
||||
@ -39,14 +39,14 @@ void gus_mixvoices(GUSEmuState * state, unsigned int playback_freq, unsigned int
|
||||
/* note that byte registers are stored in the upper half of each voice register! */
|
||||
uint8_t *gusptr;
|
||||
int Voice;
|
||||
GUSword *voiceptr;
|
||||
uint16_t *voiceptr;
|
||||
|
||||
unsigned int count;
|
||||
for (count = 0; count < numsamples * 2; count++)
|
||||
*(bufferpos + count) = 0; /* clear */
|
||||
|
||||
gusptr = state->gusdatapos;
|
||||
voiceptr = (GUSword *) gusptr;
|
||||
voiceptr = (uint16_t *) gusptr;
|
||||
if (!(GUSregb(GUS4cReset) & 0x01)) /* reset flag active? */
|
||||
return;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user