Previous 199869 Revisions Next

r26481 Monday 2nd December, 2013 at 16:06:45 UTC by smf
Added a work round so that CR589 firmware updating works again, either from the separate CD's or as part of the game install (for example DDR MAX). [smf]
[src/emu/machine]cr589.c

trunk/src/emu/machine/cr589.c
r26480r26481
4545{
4646   switch( command[ 0 ] )
4747   {
48      case 0x3b: // WRITE BUFFER
49         bufferOffset = ( command[ 3 ] << 16 ) | ( command[ 4 ] << 8 ) | command[ 5 ];
50         m_phase = SCSI_PHASE_DATAOUT;
51         m_status_code = SCSI_STATUS_CODE_GOOD;
52         m_transfer_length = ( command[ 6 ] << 16 ) | ( command[ 7 ] << 8 ) | command[ 8 ];
53         break;
48   case T10SPC_CMD_INQUIRY:
49      logerror("T10MMC: INQUIRY\n");
50      m_phase = SCSI_PHASE_DATAIN;
51      m_status_code = SCSI_STATUS_CODE_GOOD;
52      m_transfer_length = SCSILengthFromUINT8( &command[ 4 ] );
53      break;
5454
55      case 0x3c: // READ BUFFER
56         bufferOffset = ( command[ 3 ] << 16 ) | ( command[ 4 ] << 8 ) | command[ 5 ];
57         m_phase = SCSI_PHASE_DATAIN;
58         m_status_code = SCSI_STATUS_CODE_GOOD;
59         m_transfer_length = ( command[ 6 ] << 16 ) | ( command[ 7 ] << 8 ) | command[ 8 ];
60         break;
55   case 0x3b: // WRITE BUFFER
56      bufferOffset = ( command[ 3 ] << 16 ) | ( command[ 4 ] << 8 ) | command[ 5 ];
57      m_phase = SCSI_PHASE_DATAOUT;
58      m_status_code = SCSI_STATUS_CODE_GOOD;
59      m_transfer_length = ( command[ 6 ] << 16 ) | ( command[ 7 ] << 8 ) | command[ 8 ];
60      break;
6161
62      case 0xcc: // FIRMWARE DOWNLOAD ENABLE
63         m_phase = SCSI_PHASE_DATAOUT;
64         m_status_code = SCSI_STATUS_CODE_GOOD;
65         m_transfer_length = SCSILengthFromUINT16( &command[7] );
66         break;
62   case 0x3c: // READ BUFFER
63      bufferOffset = ( command[ 3 ] << 16 ) | ( command[ 4 ] << 8 ) | command[ 5 ];
64      m_phase = SCSI_PHASE_DATAIN;
65      m_status_code = SCSI_STATUS_CODE_GOOD;
66      m_transfer_length = ( command[ 6 ] << 16 ) | ( command[ 7 ] << 8 ) | command[ 8 ];
67      break;
6768
68      default:
69         t10mmc::ExecCommand();
69   case 0xcc: // FIRMWARE DOWNLOAD ENABLE
70      m_phase = SCSI_PHASE_DATAOUT;
71      m_status_code = SCSI_STATUS_CODE_GOOD;
72      m_transfer_length = SCSILengthFromUINT16( &command[7] );
73      break;
74
75   default:
76      t10mmc::ExecCommand();
77      break;
7078   }
7179}
7280
r26480r26481
7482{
7583   switch( command[ 0 ] )
7684   {
77      case 0x12: // INQUIRY
78         t10mmc::ReadData( data, dataLength );
85   case T10SPC_CMD_INQUIRY:
86      memset(data, 0, dataLength);
7987
80         if( download )
81         {
82            memcpy( &data[ 8 ], download_identity, 28 );
83         }
84         else
85         {
86            memcpy( &data[ 8 ], &buffer[ identity_offset ], 28 );
87         }
88         break;
88      t10mmc::ReadData( data, dataLength );
8989
90      case 0x3c: // READ BUFFER
91         memcpy( data, &buffer[ bufferOffset ], dataLength );
92         bufferOffset += dataLength;
93         break;
90      if( download )
91      {
92         memcpy( &data[ 8 ], download_identity, 28 );
93      }
94      else
95      {
96         memcpy( &data[ 8 ], &buffer[ identity_offset ], 28 );
97      }
98      break;
9499
95      default:
96         t10mmc::ReadData( data, dataLength );
97         break;
100   case 0x3c: // READ BUFFER
101      memcpy( data, &buffer[ bufferOffset ], dataLength );
102      bufferOffset += dataLength;
103      break;
104
105   default:
106      t10mmc::ReadData( data, dataLength );
107      break;
98108   }
99109}
100110

Previous 199869 Revisions Next


© 1997-2024 The MAME Team