Previous 199869 Revisions Next

r19322 Wednesday 5th December, 2012 at 03:10:39 UTC by David Haywood
get rid of even more redundant code (nw)
[src/mame/machine]megacdcd.c

trunk/src/mame/machine/megacdcd.c
r19321r19322
3333   nNeoCDIRQVector = 0;
3434}
3535
36enum CDEmuStatusValue { idle = 0, reading, playing, paused, seeking, fastforward, fastreverse };
37CDEmuStatusValue CDEmuStatus;
3638
39static inline CDEmuStatusValue CDEmuGetStatus()
40{
41//   printf("CDEmuGetStatus\n");
42   return CDEmuStatus;
43}
44
45
3746void lc89510_temp_device::set_CDC_Do_DMA(device_t &device,segacd_dma_delegate new_segacd_dma_callback)
3847{
3948   lc89510_temp_device &dev = downcast<lc89510_temp_device &>(device);
r19321r19322
164173   CDD_STATUS = 0x0000;
165174   SET_CDD_DATA_MODE
166175   cdda_stop_audio( m_cdda ); //stop any pending CD-DA
176
177   //neocd
178   NeoCDAssyStatus = 0x0E;
179   bNeoCDLoadSector = false;
180
181
167182}
168183
169184
r19321r19322
325340   if(!(CURRENT_TRACK_IS_DATA))
326341      cdda_start_audio( m_cdda, SCD_CURLBA, end_msf - SCD_CURLBA );
327342   SET_CDC_READ
343
344   // neocd
345   CDEmuStatus = seeking;
346   NeoCDAssyStatus = 1;
347   bNeoCDLoadSector = true;
348
328349}
329350
330351
r19321r19322
353374   //segacd.current_frame = cdda_get_audio_lba( machine.device( "cdda" ) );
354375   //if(!(CURRENT_TRACK_IS_DATA))
355376   cdda_pause_audio( m_cdda, 1 );
377
378
379   NeoCDAssyStatus = 4;
380   bNeoCDLoadSector = false;
381
382
356383}
357384
358385void lc89510_temp_device::CDD_Resume(running_machine &machine)
r19321r19322
367394   SET_CDC_READ
368395   //if(!(CURRENT_TRACK_IS_DATA))
369396   cdda_pause_audio( m_cdda, 0 );
397
398   NeoCDAssyStatus = 1;
399   bNeoCDLoadSector = true;
370400}
371401
372402
r19321r19322
411441{
412442   CLEAR_CDD_RESULT
413443   CDD_STATUS = SCD_STATUS;
444
445
446   NeoCDAssyStatus = 9;
447   bNeoCDLoadSector = false;
414448}
415449
416450
r19321r19322
454488   CDC_REG0 = CDC_REG1 = SCD_STATUS_CDC = CDD_DONE = 0;
455489}
456490
457void lc89510_temp_device::CDC_End_Transfer(running_machine& machine)
458{
459   STOP_CDC_DMA
460   CDC_REG0 |= 0x8000;
461   CDC_REG0 &= ~0x4000;
462   LC8951RegistersR[REG_R_IFSTAT] |= 0x08;
463491
464   if (LC8951RegistersW[REG_W_IFCTRL] & 0x40)
465   {
466      LC8951RegistersR[REG_R_IFSTAT] &= ~0x40;
467      CHECK_SCD_LV5_INTERRUPT
468   }
469}
470
471
472492void lc89510_temp_device::CDC_Do_DMA(running_machine& machine, int rate)
473493{
474494   UINT32 length;
r19321r19322
717737   "Handle TOC",         // 2
718738   "Play",               // 3
719739   "Seek",               // 4
720   "<undefined>",         // 5
740   "<undefined> (5)",         // 5
721741   "Pause",            // 6
722742   "Resume",            // 7
723743   "FF",               // 8
724744   "RWD",               // 9
725745   "INIT",               // A
726   "<undefined>",         // B
746   "<undefined> (b)",         // B
727747   "Close Tray",         // C
728748   "Open Tray",         // D
729   "<undefined>",         // E
730   "<undefined>"         // F
749   "<undefined> (e)",         // E
750   "<undefined> (f)"         // F
731751};
732752
733753void lc89510_temp_device::CDD_Import(running_machine& machine)
r19321r19322
10151035/* Neo CD */
10161036
10171037
1018enum CDEmuStatusValue { idle = 0, reading, playing, paused, seeking, fastforward, fastreverse };
1019CDEmuStatusValue CDEmuStatus;
10201038
1021static inline CDEmuStatusValue CDEmuGetStatus()
1022{
1023//   printf("CDEmuGetStatus\n");
1024   return CDEmuStatus;
1025}
10261039
10271040
1028static void CDEmuStartRead()
1029{
1030   printf("CDEmuStartRead\n");
1031   CDEmuStatus = seeking;
1032}
10331041
1034static void CDEmuPause()
1035{
1036   printf("CDEmuPause\n");
1037   CDEmuStatus = paused;
1038}
10391042
1040static INT32 CDEmuStop()
1041{
1042   printf("CDEmuStop\n");
1043   return 1;
1044}
1045
1046static INT32 CDEmuPlay(UINT8 M, UINT8 S, UINT8 F)
1047{
1048   printf("CDEmuPlay\n");
1049   return 1;
1050}
1051
10521043INT32 lc89510_temp_device::CDEmuLoadSector(INT32 LBA, char* pBuffer)
10531044{
10541045//   printf("CDEmuLoadSector %d\n", LBA);
r19321r19322
10851076
10861077void lc89510_temp_device::NeoCDProcessCommand()
10871078{
1088   memset(CDD_RX,  0, sizeof(CDD_RX));
1089
1090   if (CDD_TX[0]) {
1091      CDD_RX[1] = 15;
1092   }
1093
1094   switch (CDD_TX[0]) {
1095      case CMD_STATUS: // CDD_GetStatus();
1096         break;
1097      case CMD_STOPALL: // CDD_Stop(machine);
1098//                              //bprintf(PRINT_ERROR, _T("    CD comms received command %i\n"), CDD_TX[0]);
1099         CDEmuStop();
1100
1101         NeoCDAssyStatus = 0x0E;
1102         bNeoCDLoadSector = false;
1103         break;
1104      case CMD_GETTOC: // CDD_Handle_TOC_Commands();
1105//                              //bprintf(PRINT_ERROR, _T("    CD comms received command %i\n"), CDD_TX[0]);
1106   
1107         CDD_Handle_TOC_Commands();
1108         CDD_Export();
1109         break;
1110
1111
1112      case CMD_READ: { // CDD_Play(machine);
1113
1114         if (LC8951RegistersW[REG_W_CTRL0] & 4) {
1115
1116            if (CDEmuGetStatus() == playing) {
1117               //bprintf(PRINT_ERROR, _T("*** Switching CD mode to CD-ROM while in audio mode!(PC: 0x%06X)\n"), SekGetPC(-1));
1118            }
1119
1120            SCD_CURLBA  = CDD_TX[2] * (10 * CD_FRAMES_MINUTE);
1121            SCD_CURLBA += CDD_TX[3] * ( 1 * CD_FRAMES_MINUTE);
1122            SCD_CURLBA += CDD_TX[4] * (10 * CD_FRAMES_SECOND);
1123            SCD_CURLBA += CDD_TX[5] * ( 1 * CD_FRAMES_SECOND);
1124            SCD_CURLBA += CDD_TX[6] * (10                   );
1125            SCD_CURLBA += CDD_TX[7] * ( 1                   );
1126
1127            SCD_CURLBA -= CD_FRAMES_PREGAP;
1128
1129            CDEmuStartRead();
1130//              LC8951RegistersR[REG_R_IFSTAT] |= 0x20;
1131         } else {
1132
1133            if (CDEmuGetStatus() == reading) {
1134               //bprintf(PRINT_ERROR, _T("*** Switching CD mode to audio while in CD-ROM mode!(PC: 0x%06X)\n"), SekGetPC(-1));
1135            }
1136
1137            CDEmuPlay((CDD_TX[2] * 10) + CDD_TX[3], (CDD_TX[4] * 10) + CDD_TX[5], (CDD_TX[6] * 10) + CDD_TX[7]);
1138         }
1139
1140         NeoCDAssyStatus = 1;
1141         bNeoCDLoadSector = true;
1142
1143         break;
1144      }
1145      case CMD_SEEK: // CDD_Seek();   
1146//          //bprintf(PRINT_ERROR, _T("    CD comms received command %i\n"), CDD_TX[0]);
1147         CDEmuPause();
1148         break;
1149      case 5:
1150//          //bprintf(PRINT_ERROR, _T("    CD comms received command %i\n"), CDD_TX[0]);
1151//          NeoCDAssyStatus = 9;
1152//          bNeoCDLoadSector = false;
1153         break;
1154
1155      case CMD_STOP: // CDD_Pause(machine);
1156//          //bprintf(PRINT_ERROR, _T("    CD comms received command %i\n"), CDD_TX[0]);
1157         NeoCDAssyStatus = 4;
1158         bNeoCDLoadSector = false;
1159         break;
1160      case CMD_RESUME: //    CDD_Resume(machine);
1161//          //bprintf(PRINT_ERROR, _T("    CD comms received command %i\n"), CDD_TX[0]);
1162         NeoCDAssyStatus = 1;
1163         bNeoCDLoadSector = true;
1164         break;
1165         
1166      case CMD_FF: // CDD_FF(machine);   
1167      case CMD_RW: // CDD_RW(machine);   
1168      case CMD_INIT: // CDD_Init();     
1169      case 11:
1170      case CMD_CLOSE: // CDD_Close();   
1171      case CMD_OPEN: // CDD_Open();     
1172      case 14:
1173      case 15:
1174//          //bprintf(PRINT_ERROR, _T("    CD comms received command %i\n"), CDD_TX[0]);
1175         NeoCDAssyStatus = 9;
1176         bNeoCDLoadSector = false;
1177         break;
1178   }
1079   CDD_Import(machine());
1080   CDD_Export();
11791081}
11801082
11811083void lc89510_temp_device::NeoCDCommsControl(UINT8 clock, UINT8 send)
r19321r19322
13161218}
13171219
13181220
1221void lc89510_temp_device::CDC_End_Transfer(running_machine& machine)
1222{
1223   STOP_CDC_DMA
1224   CDC_REG0 |= 0x8000;
1225   CDC_REG0 &= ~0x4000;
1226   LC8951RegistersR[REG_R_IFSTAT] |= 0x08;
13191227
1228   if (LC8951RegistersW[REG_W_IFCTRL] & 0x40)
1229   {
1230      LC8951RegistersR[REG_R_IFSTAT] &= ~0x40;
1231      CHECK_SCD_LV5_INTERRUPT
1232   }
1233}
13201234
13211235
13221236
1237
1238
13231239/*
13241240 *  CD-ROM / DMA control
13251241 *

Previous 199869 Revisions Next


© 1997-2024 The MAME Team