Previous 199869 Revisions Next

r40024 Tuesday 28th July, 2015 at 21:49:43 UTC by Angelo Salese
Banging my head over this ...
[/branches/saturn_cdblock/src/emu/machine]segacdblock.c segacdblock.h
[/branches/saturn_cdblock/src/mess/drivers]saturn.c

branches/saturn_cdblock/src/emu/machine/segacdblock.c
r248535r248536
215215   res = -1;
216216   if(xfertype == CDDMA_INPROGRESS)
217217   {
218      //if(m_ext_drdy == false)
219      //   return res;
220
218221      //printf("%d %d %d %d\n",xfersect,xfersectnum,xferoffs,m_dma_size);
219222      if (xfersect < xfersectnum)
220223      {
221224         // get next longword
222         if(transpart->blocks[xfersectpos+xfersect] == (blockT *)NULL)
223         {
224            cd_drdy_cb(false);
225            return res;
226         }
225         //if(transpart->blocks[xfersectpos+xfersect] == (blockT *)NULL)
227226         
228227         res = (transpart->blocks[xfersectpos+xfersect]->data[xferoffs + 0]<<24) |
229228              (transpart->blocks[xfersectpos+xfersect]->data[xferoffs + 1]<<16) |
r248535r248536
787786
788787void segacdblock_device::cd_cmd_end_transfer()
789788{
790   m_TransferActive = false;
791   m_cd_state &= ~CD_STAT_TRANS;
792
793789   if(m_dma_size != 0)
794790   {
795791      m_dr[0] = m_cd_state | ((m_dma_size >> 17) & 0xff);
796792      m_dr[1] = (m_dma_size>>1) & 0xffff;
793
794      m_TransferActive = false;
795      m_cd_state &= ~CD_STAT_TRANS;
797796   }
798797   else
799798   {
r248535r248536
804803   m_dr[2] = 0;
805804   m_dr[3] = 0;
806805   
807   if(DeleteSectorMode == true)
806   if(DeleteSectorMode == true && m_dma_size != 0)
808807   {
808      m_dma_size = 0;
809
809810      if (transpart->size > 0)
810811      {
811812         INT32 i;
r248535r248536
857858   else
858859      set_flag(EHST);
859860   
860   m_dma_size = 0;
861861   set_flag(CMOK);
862862}
863863
r248535r248536
19151915            printf("FAD %08x %08x %04x %d\n",m_FAD,m_FADEnd,m_hirq,p_ok);
19161916
19171917         set_flag(CSCT);
1918         cd_drdy_cb(true);
1918           
1919         printf("%d %d X\n",xfersect,xfersectnum);
19191920
19201921         if(p_ok)
19211922         {
19221923            m_FAD ++;
19231924            m_FADEnd --;
1924            set_flag(SCDQ);
1925           
1926            if (xfersect < xfersectnum)
1927            {
1928               m_ext_drdy = false;
1929               cd_drdy_cb(false);
1930            }
1931            else
1932            {
1933               m_ext_drdy = true;
1934               cd_drdy_cb(true);
1935               set_flag(SCDQ);
1936            }
19251937
19261938            if(m_FADEnd <= 0)
19271939            {
branches/saturn_cdblock/src/emu/machine/segacdblock.h
r248535r248536
282282   bool m_TempPause;
283283   bool m_TOCPhase;
284284   //bool m_BufferFull;
285   bool m_ext_drdy;
285286   
286287   void debug_cd_return_garbage_data();
287288};
branches/saturn_cdblock/src/mess/drivers/saturn.c
r248535r248536
103103{
104104   m_cd_drdy_line = state;
105105   
106   if(state == true)
106/*   if(state == true)
107107   {
108108      m_maincpu->sh2_notify_dma_data_available();
109109      m_slave->sh2_notify_dma_data_available();
110   }
110   }*/
111111}
112112
113113SH2_DMA_FIFO_DATA_AVAILABLE_CB(sat_console_state::cdblock_data_available_callback)
114114{
115115   if(src == 0x05818000)
116116   {
117      if(m_cd_drdy_line == false)
118         debugger_break(machine());
117119      return m_cd_drdy_line;
118120   }
119121   else if((src & 0x07f00000) == 0x05800000)


Previous 199869 Revisions Next


© 1997-2024 The MAME Team