Diff for /np2/sound/cs4231g.c between versions 1.1.1.1 and 1.6

version 1.1.1.1, 2003/10/16 17:58:08 version 1.6, 2004/01/23 15:05:05
Line 1 Line 1
 #include        "compiler.h"  #include        "compiler.h"
 #include        "memory.h"  #include        "cpucore.h"
 #include        "pccore.h"  #include        "pccore.h"
 #include        "iocore.h"  #include        "iocore.h"
 #include        "sound.h"  #include        "sound.h"
 #include        "fmboard.h"  #include        "fmboard.h"
   
   
   extern  CS4231CFG       cs4231cfg;
   
   
 // ---- 補完くらいしようよ…  // ---- 補完くらいしようよ…
   
 BYTE cs4231_nodecode(void) {  REG8 cs4231_nodecode(DMACH dmach) {
   
           (void)dmach;
         return(0);          return(0);
 }  }
   
 static BYTE cs4231_pcm8s(void) {  static REG8 cs4231_pcm8s(DMACH dmach) {
   
         SINT32  leng;          SINT32  leng;
         UINT    indatas;          UINT    indatas;
Line 21  static BYTE cs4231_pcm8s(void) { Line 25  static BYTE cs4231_pcm8s(void) {
         UINT32  ctime;          UINT32  ctime;
         UINT    wpos;          UINT    wpos;
   
         leng = dmac.dmach[0].leng.w;          leng = dmach->leng.w;
         if ((leng >= 2) && (cs4231.bufsize < CS4231_BUFFERS)) {          if ((leng >= 2) && (cs4231.bufsize < CS4231_BUFFERS)) {
                 indatas = cs4231.bufsize;                  indatas = cs4231.bufsize;
                 ctime = cs4231.curtime;                  ctime = cs4231.curtime;
                 wpos = cs4231.writepos;                  wpos = cs4231.writepos;
                 addr = dmac.dmach[0].adrs.d;                  addr = dmach->adrs.d;
                 do {                  do {
                         while(ctime < cs4231.step) {                          while(ctime < cs4231.step) {
                                 ctime += opna_rate;                                  ctime += cs4231cfg.rate;
                                 leng -= 2;                                  leng -= 2;
                                 if (leng < 0) {                                  if (leng < 0) {
                                         leng = 0;                                          leng = 0;
                                         goto p8s_stop;                                          goto p8s_stop;
                                 }                                  }
                                 cs4231.pcmdata[0] = (i286_memoryread(addr+0) ^ 0x80) << 8;                                  cs4231.pcmdata[0] = (i286_memoryread(addr + 0) ^ 0x80) << 8;
                                 cs4231.pcmdata[1] = (i286_memoryread(addr+1) ^ 0x80) << 8;                                  cs4231.pcmdata[1] = (i286_memoryread(addr + 1) ^ 0x80) << 8;
                                 addr += 2;                                  addr += 2;
                         }                          }
                         ctime -= cs4231.step;                          ctime -= cs4231.step;
Line 46  static BYTE cs4231_pcm8s(void) { Line 50  static BYTE cs4231_pcm8s(void) {
                 } while(indatas < CS4231_BUFFERS);                  } while(indatas < CS4231_BUFFERS);
   
 p8s_stop:  p8s_stop:
                 dmac.dmach[0].leng.w = leng;                  dmach->leng.w = leng;
                 dmac.dmach[0].adrs.d = addr;                  dmach->adrs.d = addr;
                 cs4231.bufsize = indatas;                  cs4231.bufsize = indatas;
                 cs4231.curtime = ctime;                  cs4231.curtime = ctime;
                 cs4231.writepos = wpos;                  cs4231.writepos = wpos;
Line 55  p8s_stop: Line 59  p8s_stop:
         return((leng < 2)?1:0);          return((leng < 2)?1:0);
 }  }
   
 static BYTE cs4231_pcm8m(void) {  static REG8 cs4231_pcm8m(DMACH dmach) {
   
         SINT32  leng;          SINT32  leng;
         UINT    indatas;          UINT    indatas;
Line 64  static BYTE cs4231_pcm8m(void) { Line 68  static BYTE cs4231_pcm8m(void) {
         UINT    wpos;          UINT    wpos;
         SINT16  pcmdata;          SINT16  pcmdata;
   
         leng = dmac.dmach[0].leng.w;          leng = dmach->leng.w;
         if ((leng > 0) && (cs4231.bufsize < CS4231_BUFFERS)) {          if ((leng > 0) && (cs4231.bufsize < CS4231_BUFFERS)) {
                 indatas = cs4231.bufsize;                  indatas = cs4231.bufsize;
                 ctime = cs4231.curtime;                  ctime = cs4231.curtime;
                 wpos = cs4231.writepos;                  wpos = cs4231.writepos;
                 addr = dmac.dmach[0].adrs.d;                  addr = dmach->adrs.d;
                 do {                  do {
                         while(ctime < cs4231.step) {                          while(ctime < cs4231.step) {
                                 ctime += opna_rate;                                  ctime += cs4231cfg.rate;
                                 leng -= 1;                                  leng -= 1;
                                 if (leng < 0) {                                  if (leng < 0) {
                                         leng = 0;                                          leng = 0;
Line 90  static BYTE cs4231_pcm8m(void) { Line 94  static BYTE cs4231_pcm8m(void) {
                 } while(indatas < CS4231_BUFFERS);                  } while(indatas < CS4231_BUFFERS);
   
 p8m_stop:  p8m_stop:
                 dmac.dmach[0].leng.w = leng;                  dmach->leng.w = leng;
                 dmac.dmach[0].adrs.d = addr;                  dmach->adrs.d = addr;
                 cs4231.bufsize = indatas;                  cs4231.bufsize = indatas;
                 cs4231.curtime = ctime;                  cs4231.curtime = ctime;
                 cs4231.writepos = wpos;                  cs4231.writepos = wpos;
Line 99  p8m_stop: Line 103  p8m_stop:
         return((leng == 0)?1:0);          return((leng == 0)?1:0);
 }  }
   
 static BYTE cs4231_pcm16s(void) {  static REG8 cs4231_pcm16s(DMACH dmach) {
   
         SINT32  leng;          SINT32  leng;
         UINT    indatas;          UINT    indatas;
Line 108  static BYTE cs4231_pcm16s(void) { Line 112  static BYTE cs4231_pcm16s(void) {
         UINT    wpos;          UINT    wpos;
         UINT16  samp;          UINT16  samp;
   
         leng = dmac.dmach[0].leng.w;          leng = dmach->leng.w;
         if ((leng >= 4) && (cs4231.bufsize < CS4231_BUFFERS)) {          if ((leng >= 4) && (cs4231.bufsize < CS4231_BUFFERS)) {
                 indatas = cs4231.bufsize;                  indatas = cs4231.bufsize;
                 ctime = cs4231.curtime;                  ctime = cs4231.curtime;
                 wpos = cs4231.writepos;                  wpos = cs4231.writepos;
                 addr = dmac.dmach[0].adrs.d;                  addr = dmach->adrs.d;
 // TRACEOUT(("addr: %x", addr));  // TRACEOUT(("addr: %x", addr));
                 do {                  do {
                         while(ctime < cs4231.step) {                          while(ctime < cs4231.step) {
                                 ctime += opna_rate;                                  ctime += cs4231cfg.rate;
                                 leng -= 4;                                  leng -= 4;
                                 if (leng < 0) {                                  if (leng < 0) {
                                         leng = 0;                                          leng = 0;
Line 136  static BYTE cs4231_pcm16s(void) { Line 140  static BYTE cs4231_pcm16s(void) {
                 } while(indatas < CS4231_BUFFERS);                  } while(indatas < CS4231_BUFFERS);
   
 p16s_stop:  p16s_stop:
                 dmac.dmach[0].leng.w = leng;                  dmach->leng.w = leng;
                 dmac.dmach[0].adrs.d = addr;                  dmach->adrs.d = addr;
                 cs4231.bufsize = indatas;                  cs4231.bufsize = indatas;
                 cs4231.curtime = ctime;                  cs4231.curtime = ctime;
                 cs4231.writepos = wpos;                  cs4231.writepos = wpos;
Line 145  p16s_stop: Line 149  p16s_stop:
         return((leng < 4)?1:0);          return((leng < 4)?1:0);
 }  }
   
 static BYTE cs4231_pcm16m(void) {  static REG8 cs4231_pcm16m(DMACH dmach) {
   
         SINT32  leng;          SINT32  leng;
         UINT    indatas;          UINT    indatas;
Line 154  static BYTE cs4231_pcm16m(void) { Line 158  static BYTE cs4231_pcm16m(void) {
         UINT    wpos;          UINT    wpos;
         UINT16  samp;          UINT16  samp;
   
         leng = dmac.dmach[0].leng.w;          leng = dmach->leng.w;
         if ((leng >= 2) && (cs4231.bufsize < CS4231_BUFFERS)) {          if ((leng >= 2) && (cs4231.bufsize < CS4231_BUFFERS)) {
                 indatas = cs4231.bufsize;                  indatas = cs4231.bufsize;
                 ctime = cs4231.curtime;                  ctime = cs4231.curtime;
                 wpos = cs4231.writepos;                  wpos = cs4231.writepos;
                 addr = dmac.dmach[0].adrs.d;                  addr = dmach->adrs.d;
                 do {                  do {
                         while(ctime < cs4231.step) {                          while(ctime < cs4231.step) {
                                 ctime += opna_rate;                                  ctime += cs4231cfg.rate;
                                 leng -= 2;                                  leng -= 2;
                                 if (leng < 0) {                                  if (leng < 0) {
                                         leng = 0;                                          leng = 0;
Line 181  static BYTE cs4231_pcm16m(void) { Line 185  static BYTE cs4231_pcm16m(void) {
                 } while(indatas < CS4231_BUFFERS);                  } while(indatas < CS4231_BUFFERS);
   
 p16m_stop:  p16m_stop:
                 dmac.dmach[0].leng.w = leng;                  dmach->leng.w = leng;
                 dmac.dmach[0].adrs.d = addr;                  dmach->adrs.d = addr;
                 cs4231.bufsize = indatas;                  cs4231.bufsize = indatas;
                 cs4231.curtime = ctime;                  cs4231.curtime = ctime;
                 cs4231.writepos = wpos;                  cs4231.writepos = wpos;

Removed from v.1.1.1.1  
changed lines
  Added in v.1.6


RetroPC.NET-CVS <cvs@retropc.net>