Previous 199869 Revisions Next

r18673 Tuesday 23rd October, 2012 at 11:17:40 UTC by smf
changed 2 disc hack to use 1 drive [smf]
[src/mame/drivers]ksys573.c

trunk/src/mame/drivers/ksys573.c
r18672r18673
443443#include "sound/spu.h"
444444#include "sound/cdda.h"
445445#include "sound/mas3507d.h"
446#include "cdrom.h"
446447
447448#define VERBOSE_LEVEL ( 0 )
448449
r18672r18673
479480{
480481public:
481482   ksys573_state(const machine_config &mconfig, device_type type, const char *tag)
482      : psx_state(mconfig, type, tag) { }
483      : psx_state(mconfig, type, tag),
484        m_cr589(*this, ":cdrom") { }
483485
484486   int m_flash_bank;
485487   fujitsu_29f016a_device *m_flash_device[5][16];
r18672r18673
488490   UINT32 m_control;
489491
490492   emu_timer *m_atapi_timer;
491   scsihle_device *m_inserted_cdrom;
492   scsihle_device *m_available_cdroms[ 2 ];
493   required_device<scsihle_device> m_cr589;
494   cdrom_file *m_available_cdroms[ 2 ];
493495   int m_atapi_data_ptr;
494496   int m_atapi_data_len;
495497   int m_atapi_xferlen;
r18672r18673
710712   while( m_atapi_xferlen > 0 )
711713   {
712714      // get a sector from the SCSI device
713      m_inserted_cdrom->ReadData( sector_buffer, 2048 );
715      m_cr589->ReadData( sector_buffer, 2048 );
714716
715717      m_atapi_xferlen -= 2048;
716718
r18672r18673
776778         // get the data from the device
777779         if( m_atapi_xferlen > 0 )
778780         {
779            m_inserted_cdrom->ReadData( m_atapi_data, m_atapi_xferlen );
781            m_cr589->ReadData( m_atapi_data, m_atapi_xferlen );
780782            m_atapi_data_len = m_atapi_xferlen;
781783         }
782784
r18672r18673
905907         if (m_atapi_data_ptr == m_atapi_cdata_wait)
906908         {
907909            // send it to the device
908            m_inserted_cdrom->WriteData( atapi_data, m_atapi_cdata_wait );
910            m_cr589->WriteData( atapi_data, m_atapi_cdata_wait );
909911
910912            // assert IRQ
911913            psx_irq_set(machine(), 0x400);
r18672r18673
926928         m_atapi_data_len = 0;
927929
928930         // send it to the SCSI device
929         m_inserted_cdrom->SetCommand( m_atapi_data, 12 );
930         m_inserted_cdrom->ExecCommand( &m_atapi_xferlen );
931         m_inserted_cdrom->GetPhase( &phase );
931         m_cr589->SetCommand( m_atapi_data, 12 );
932         m_cr589->ExecCommand( &m_atapi_xferlen );
933         m_cr589->GetPhase( &phase );
932934
933935         if (m_atapi_xferlen != -1)
934936         {
r18672r18673
11341136   state->m_atapi_timer = machine.scheduler().timer_alloc(timer_expired_delegate(FUNC(ksys573_state::atapi_xfer_end),state));
11351137   state->m_atapi_timer->adjust(attotime::never);
11361138
1137   state->m_available_cdroms[ 0 ] = machine.device<scsihle_device>( ":cdrom0" );
1138   if( get_disk_handle( machine, ":cdrom1" ) != NULL )
1139   {
1140      state->m_available_cdroms[ 1 ] = machine.device<scsihle_device>( ":cdrom1" );
1141   }
1142   else
1143   {
1144      state->m_available_cdroms[ 1 ] = NULL;
1145   }
1139   state->m_available_cdroms[ 0 ] = cdrom_open( get_disk_handle( machine, ":cdrom0" ) );
1140   state->m_available_cdroms[ 1 ] = cdrom_open( get_disk_handle( machine, ":cdrom1" ) );
11461141
11471142   state->save_item( NAME(state->m_atapi_regs) );
11481143   state->save_item( NAME(state->m_atapi_data) );
r18672r18673
13521347   state->save_item( NAME(state->m_control) );
13531348}
13541349
1355static void *atapi_get_device(running_machine &machine)
1356{
1357   ksys573_state *state = machine.driver_data<ksys573_state>();
1358   void *ret;
1359   state->m_inserted_cdrom->GetDevice( &ret );
1360   return ret;
1361}
1362
13631350static void update_mode( running_machine &machine )
13641351{
13651352   ksys573_state *state = machine.driver_data<ksys573_state>();
13661353   int cart = state->ioport("CART")->read();
13671354   int cd = state->ioport( "CD" )->read();
1368   scsihle_device *new_cdrom;
1355   cdrom_file *new_cdrom;
13691356
13701357   if( state->machine().device<device_secure_serial_flash>("game_eeprom") )
13711358   {
r18672r18673
13851372      new_cdrom = state->m_available_cdroms[ 0 ];
13861373   }
13871374
1388   if( state->m_inserted_cdrom != new_cdrom )
1375   void *current_cdrom;
1376   state->m_cr589->GetDevice( &current_cdrom );
1377
1378   if( current_cdrom != new_cdrom )
13891379   {
1390      state->m_inserted_cdrom = new_cdrom;
1391      cdda_set_cdrom(machine.device("cdda"), atapi_get_device(machine));
1380      current_cdrom = new_cdrom;
1381
1382      state->m_cr589->SetDevice( new_cdrom );
1383      cdda_set_cdrom(machine.device("cdda"), new_cdrom);
13921384   }
13931385}
13941386
r18672r18673
30513043
30523044   MCFG_MACHINE_RESET_OVERRIDE(ksys573_state, konami573 )
30533045
3054   // multiple cd's are handled by switching drives instead of discs.
3055   MCFG_DEVICE_ADD("cdrom0", CR589, 0)
3056   MCFG_DEVICE_ADD("cdrom1", CR589, 0)
3046   MCFG_DEVICE_ADD("cdrom", CR589, 0)
30573047
30583048   // onboard flash
30593049   MCFG_FUJITSU_29F016A_ADD("onboard.0")
r18672r18673
38273817   DISK_IMAGE_READONLY( "845jaa02", 0, BAD_DUMP SHA1(37ca16be25bee39a5692dee2fa5f0fa0addfaaca) )
38283818
38293819   DISK_REGION( "cdrom1" )
3830   DISK_IMAGE_READONLY( "845jaa01", 1, NO_DUMP ) // if this even exists
3820   DISK_IMAGE_READONLY( "845jaa01", 0, NO_DUMP ) // if this even exists
38313821ROM_END
38323822
38333823ROM_START( ddrjb )
r18672r18673
38573847   DISK_IMAGE_READONLY( "845jab02", 0, BAD_DUMP SHA1(7bdcef37bf376c23153dfd1580de5666cc681335) )
38583848
38593849   DISK_REGION( "cdrom1" )
3860   DISK_IMAGE_READONLY( "845jab01", 1, NO_DUMP ) // if this even exists
3850   DISK_IMAGE_READONLY( "845jab01", 0, NO_DUMP ) // if this even exists
38613851ROM_END
38623852
38633853ROM_START( ddra )
r18672r18673
38903880   DISK_IMAGE_READONLY( "896jaa01", 0, BAD_DUMP SHA1(f802a0e2ba0147eb71c54d92af409c3010a5715f) )
38913881
38923882   DISK_REGION( "cdrom1" )
3893   DISK_IMAGE_READONLY( "895jaa02", 1, BAD_DUMP SHA1(cfe3a6f3ed62ba388b07045e29e22472d17dcfe4) )
3883   DISK_IMAGE_READONLY( "895jaa02", 0, BAD_DUMP SHA1(cfe3a6f3ed62ba388b07045e29e22472d17dcfe4) )
38943884ROM_END
38953885
38963886ROM_START( ddr2mc2 )
r18672r18673
39033893   DISK_IMAGE_READONLY( "984jaa01", 0, BAD_DUMP SHA1(5505c28be27bfa9648060fd799bcf0c2c5f608ed) )
39043894
39053895   DISK_REGION( "cdrom1" )
3906   DISK_IMAGE_READONLY( "895jaa02", 1, BAD_DUMP SHA1(cfe3a6f3ed62ba388b07045e29e22472d17dcfe4) )
3896   DISK_IMAGE_READONLY( "895jaa02", 0, BAD_DUMP SHA1(cfe3a6f3ed62ba388b07045e29e22472d17dcfe4) )
39073897ROM_END
39083898
39093899ROM_START( ddr2ml )
r18672r18673
41854175   DISK_IMAGE_READONLY( "892jaa01", 0, BAD_DUMP SHA1(46ace0feef48a2a6643c3cb4ac9164ba0beeea94) )
41864176
41874177   DISK_REGION( "cdrom1" )
4188   DISK_IMAGE_READONLY( "895jaa02", 1, BAD_DUMP SHA1(cfe3a6f3ed62ba388b07045e29e22472d17dcfe4) )
4178   DISK_IMAGE_READONLY( "895jaa02", 0, BAD_DUMP SHA1(cfe3a6f3ed62ba388b07045e29e22472d17dcfe4) )
41894179ROM_END
41904180
41914181ROM_START( ddrs2k )
r18672r18673
43024292   DISK_IMAGE_READONLY( "881jad01", 0, BAD_DUMP SHA1(7d9d47bef636dbaa8d578f34ea9489e349d3d6df) ) // upgrade or bootleg?
43034293
43044294   DISK_REGION( "cdrom1" )
4305   DISK_IMAGE_READONLY( "881jaa02", 1, NO_DUMP )
4295   DISK_IMAGE_READONLY( "881jaa02", 0, NO_DUMP )
43064296ROM_END
43074297
43084298ROM_START( drmn2m )
r18672r18673
43454335   DISK_IMAGE_READONLY( "912jab02", 0, BAD_DUMP SHA1(19dfae94b63468d3e16d3cc4a3eeae60d5dff1d7) )
43464336
43474337   DISK_REGION( "cdrom1" )
4348   DISK_IMAGE_READONLY( "912za01",  1, BAD_DUMP SHA1(033a310006efe164cc6a8276de42a5d555f9fea9) )
4338   DISK_IMAGE_READONLY( "912za01",  0, BAD_DUMP SHA1(033a310006efe164cc6a8276de42a5d555f9fea9) )
43494339ROM_END
43504340
43514341ROM_START( drmn3m )
r18672r18673
49244914   DISK_IMAGE_READONLY( "949jac01", 0, BAD_DUMP SHA1(ff017dd5c0ecbdb8935d0d4656a45e9fab10ef82) )
49254915
49264916   DISK_REGION( "cdrom1" )
4927   DISK_IMAGE_READONLY( "949jab02", 1, BAD_DUMP SHA1(ad629c9bafbdc4bf6c679918a5fae2bcfdb39332) )
4917   DISK_IMAGE_READONLY( "949jab02", 0, BAD_DUMP SHA1(ad629c9bafbdc4bf6c679918a5fae2bcfdb39332) )
49284918ROM_END
49294919
49304920ROM_START( gtfrk3ma )
r18672r18673
50995089   DISK_IMAGE_READONLY( "d10jab01", 0, BAD_DUMP SHA1(c84858b412f0798a65cf3059c743501f32ad7280) )
51005090
51015091   DISK_REGION( "cdrom1" )
5102   DISK_IMAGE_READONLY( "d10jaa02", 1, BAD_DUMP SHA1(d4e4460ca3edc1b365af593757557c6cf5b7b3ec) )
5092   DISK_IMAGE_READONLY( "d10jaa02", 0, BAD_DUMP SHA1(d4e4460ca3edc1b365af593757557c6cf5b7b3ec) )
51035093ROM_END
51045094
51055095ROM_START( gtfrk10ma )

Previous 199869 Revisions Next


© 1997-2024 The MAME Team