branches/saturn_cdblock/src/emu/machine/segacdblock.c
| r248537 | r248538 | |
| 700 | 700 | |
| 701 | 701 | void segacdblock_device::cd_standard_return(bool isPeri) |
| 702 | 702 | { |
| 703 | | m_dr[0] = (isPeri == true ? CD_STAT_PERI : 0) | m_cd_state | ((m_playtype == true) ? 0x80 : 0); |
| 703 | m_dr[0] = (isPeri == true ? CD_STAT_PERI : 0); |
| 704 | m_dr[0]|= (m_TransferActive == true) ? CD_STAT_TRANS : 0; |
| 705 | m_dr[0]|= ((m_playtype == true) ? 0x80 : 0); |
| 706 | m_dr[0]|= m_cd_state; |
| 704 | 707 | m_dr[1] = (m_CurrentTrack == 0xff) ? 0xffff : ((sega_cdrom_get_adr_control(cdrom, m_CurrentTrack)<<8) | (cdrom_get_track(cdrom, m_FAD-150)+1)); |
| 705 | 708 | m_dr[2] = 0x0100 | ((m_FAD >> 16) & 0xff); |
| 706 | 709 | m_dr[3] = m_FAD & 0xffff; |
| r248537 | r248538 | |
| 792 | 795 | m_dr[1] = (m_dma_size>>1) & 0xffff; |
| 793 | 796 | |
| 794 | 797 | m_TransferActive = false; |
| 795 | | m_cd_state &= ~CD_STAT_TRANS; |
| 796 | 798 | } |
| 797 | 799 | else |
| 798 | 800 | { |
| r248537 | r248538 | |
| 1281 | 1283 | transpart = &partitions[bufnum]; |
| 1282 | 1284 | |
| 1283 | 1285 | m_TransferActive = true; |
| 1284 | | cd_standard_return(false); // cheap hack |
| 1286 | cd_standard_return(false); |
| 1285 | 1287 | |
| 1286 | | m_dr[0] = CD_STAT_TRANS | m_cd_state; |
| 1287 | 1288 | xferoffs = 0; |
| 1288 | 1289 | xfersect = 0; |
| 1289 | 1290 | m_dma_size = 0; |
| r248537 | r248538 | |
| 1314 | 1315 | } |
| 1315 | 1316 | // @todo reject states |
| 1316 | 1317 | m_TransferActive = false; |
| 1317 | | cd_standard_return(false); // cheap hack |
| 1318 | cd_standard_return(false); |
| 1318 | 1319 | |
| 1319 | | m_dr[0] = m_cd_state; |
| 1320 | | |
| 1321 | 1320 | cd_getsectoroffsetnum(bufnum, §ofs, §num); |
| 1322 | 1321 | for (INT32 i = xfersectpos; i < xfersectpos+xfersectnum; i++) |
| 1323 | 1322 | { |
| r248537 | r248538 | |
| 1389 | 1388 | if (fileid == 0xffffff) // special |
| 1390 | 1389 | return; // @todo intentional |
| 1391 | 1390 | |
| 1392 | | m_dr[0] = m_cd_state; |
| 1391 | cd_standard_return(false); // cheap hack |
| 1393 | 1392 | m_dr[1] = 6; |
| 1394 | 1393 | m_dr[2] = 0; |
| 1395 | 1394 | m_dr[3] = 0; |
| r248537 | r248538 | |
| 1851 | 1850 | // m_cd_state = CD_STAT_PAUSE; |
| 1852 | 1851 | //else |
| 1853 | 1852 | |
| 1854 | | if(m_TransferActive == true) |
| 1855 | | m_cd_state|= CD_STAT_TRANS; |
| 1856 | | |
| 1857 | 1853 | cd_standard_return(true); |
| 1858 | 1854 | set_flag(SCDQ); |
| 1859 | 1855 | } |