Previous 199869 Revisions Next

r39990 Monday 27th July, 2015 at 22:24:37 UTC by Angelo Salese
Merge SCSP
[/branches/saturn_cdblock/src/emu/sound]scsp.c

branches/saturn_cdblock/src/emu/sound/scsp.c
r248501r248502
3030*/
3131
3232#include "emu.h"
33#include "sound/cdda.h"
3334#include "scsp.h"
3435
3536
r248501r248502
281282{
282283   m_mcipd |= irq_type;
283284
285   //machine().scheduler().synchronize(); // force resync
286
284287   if(m_mcipd & m_mcieb)
285288      m_main_irq_cb(1);
286289   else
r248501r248502
695698         break;
696699      case 8:
697700      case 9:
698         /* Only MSLC could be written. */
699         m_udata.data[0x8/2] &= 0x7800;
701         /* Only MSLC could be written.  */
702         m_udata.data[0x8/2] &= 0xf800; /**< @todo Docs claims MSLC to be 0x7800, but Jikkyou Parodius doesn't agree. */
700703         break;
701704      case 0x12:
702705      case 0x13:
r248501r248502
10101013         v= *((unsigned short *) (m_DSP.EFREG+(addr-0xec0)/2));
10111014      else
10121015      {
1013         /*
1014         TODO: Kyuutenkai reads from 0xee0/0xee2, it's an undocumented "DSP internal buffer" register ...
1016         /**!
1017         @todo Kyuutenkai reads from 0xee0/0xee2, it's tied with EXTS register(s) also used for CD-Rom Player equalizer.
1018         This port is actually an external parallel port, directly connected from the CD Block device, hence code is a bit of an hack.
1019         Kyuutenkai code snippet for reference:
10151020         004A3A: 207C 0010 0EE0             movea.l #$100ee0, A0
10161021         004A40: 43EA 0090                  lea     ($90,A2), A1 ;A2=0x700
10171022         004A44: 6100 0254                  bsr     $4c9a
r248501r248502
10441049             004CB0: 4CDF 0002                  movem.l (A7)+, D1
10451050             004CB4: 4E75                       rts
10461051         */
1047         logerror("SCSP: Reading from unmapped register %08x\n",addr);
1052         logerror("SCSP: Reading from EXTS register %08x\n",addr);
10481053         if(addr == 0xee0)
1049            v= m_DSP.TEMP[0] >> 16;
1054            v =   space.machine().device<cdda_device>("cdda")->get_channel_volume(0);
10501055         if(addr == 0xee2)
1051            v= m_DSP.TEMP[0] & 0xffff;
1056            v = space.machine().device<cdda_device>("cdda")->get_channel_volume(1);
10521057      }
10531058   }
10541059   return v;


Previous 199869 Revisions Next


© 1997-2024 The MAME Team