Previous 199869 Revisions Next

r22719 Thursday 9th May, 2013 at 10:17:47 UTC by smf
Changed handlers to 16 bit as that is the size of the external bus and created memory maps instead of installing handlers in init (nw)
[src/mame/drivers]konamigq.c konamigv.c

trunk/src/mame/drivers/konamigv.c
r22718r22719
137137   konamigv_state(const machine_config &mconfig, device_type type, const char *tag)
138138      : driver_device(mconfig, type, tag),
139139      m_am53cf96(*this, "scsi:am53cf96"),
140      m_maincpu(*this, "maincpu"),
141      m_eeprom(*this, "eeprom") { }
140      m_maincpu(*this, "maincpu")
141   {
142   }
142143
143144   required_device<am53cf96_device> m_am53cf96;
144145
145146   UINT32 m_flash_address;
146147
147148   UINT16 m_trackball_prev[ 2 ];
148   UINT32 m_trackball_data[ 2 ];
149   UINT16 m_trackball_data[ 2 ];
149150   UINT16 m_btc_trackball_prev[ 4 ];
150   UINT32 m_btc_trackball_data[ 4 ];
151   UINT16 m_btc_trackball_data[ 4 ];
151152
152153   fujitsu_29f016a_device *m_flash8[4];
153   sharp_lh28f400_device *m_flash16[4];
154   sharp_lh28f400_device *m_flash16[1];
154155
155156   UINT8 m_sector_buffer[ 4096 ];
156   DECLARE_WRITE32_MEMBER(mb89371_w);
157   DECLARE_READ32_MEMBER(mb89371_r);
158   DECLARE_READ32_MEMBER(flash_r);
159   DECLARE_WRITE32_MEMBER(flash_w);
160   DECLARE_READ32_MEMBER(trackball_r);
161   DECLARE_READ32_MEMBER(unknown_r);
162   DECLARE_READ32_MEMBER(btcflash_r);
163   DECLARE_WRITE32_MEMBER(btcflash_w);
164   DECLARE_READ32_MEMBER(btc_trackball_r);
165   DECLARE_WRITE32_MEMBER(btc_trackball_w);
166   DECLARE_READ32_MEMBER(tokimeki_serial_r);
167   DECLARE_WRITE32_MEMBER(tokimeki_serial_w);
168   DECLARE_WRITE32_MEMBER(kdeadeye_0_w);
169   DECLARE_WRITE32_MEMBER(eeprom_w);
157   DECLARE_WRITE16_MEMBER(mb89371_w);
158   DECLARE_READ16_MEMBER(mb89371_r);
159   DECLARE_READ16_MEMBER(flash_r);
160   DECLARE_WRITE16_MEMBER(flash_w);
161   DECLARE_READ16_MEMBER(trackball_r);
162   DECLARE_READ16_MEMBER(unknown_r);
163   DECLARE_READ16_MEMBER(btcflash_r);
164   DECLARE_WRITE16_MEMBER(btcflash_w);
165   DECLARE_READ16_MEMBER(btc_trackball_r);
166   DECLARE_WRITE16_MEMBER(btc_trackball_w);
167   DECLARE_READ16_MEMBER(tokimeki_serial_r);
168   DECLARE_WRITE16_MEMBER(tokimeki_serial_w);
170169   DECLARE_DRIVER_INIT(simpbowl);
171170   DECLARE_DRIVER_INIT(tokimosh);
172171   DECLARE_DRIVER_INIT(kdeadeye);
r22718r22719
176175   void scsi_dma_read( UINT32 *p_n_psxram, UINT32 n_address, INT32 n_size );
177176   void scsi_dma_write( UINT32 *p_n_psxram, UINT32 n_address, INT32 n_size );
178177   required_device<cpu_device> m_maincpu;
179   required_device<eeprom_device> m_eeprom;
180178};
181179
182/* EEPROM handlers */
183
184WRITE32_MEMBER(konamigv_state::eeprom_w)
180WRITE16_MEMBER(konamigv_state::mb89371_w)
185181{
186   m_eeprom->write_bit((data&0x01) ? 1 : 0);
187   m_eeprom->set_clock_line((data&0x04) ? ASSERT_LINE : CLEAR_LINE);
188   m_eeprom->set_cs_line((data&0x02) ? CLEAR_LINE : ASSERT_LINE);
189182}
190183
191WRITE32_MEMBER(konamigv_state::mb89371_w)
184READ16_MEMBER(konamigv_state::mb89371_r)
192185{
186   return 0xffff;
193187}
194188
195READ32_MEMBER(konamigv_state::mb89371_r)
196{
197   return 0xffffffff;
198}
199
200189static ADDRESS_MAP_START( konamigv_map, AS_PROGRAM, 32, konamigv_state )
201190   AM_RANGE(0x1f000000, 0x1f00001f) AM_DEVREADWRITE8("scsi:am53cf96", am53cf96_device, read, write, 0x00ff00ff)
202191   AM_RANGE(0x1f100000, 0x1f100003) AM_READ_PORT("P1")
203192   AM_RANGE(0x1f100004, 0x1f100007) AM_READ_PORT("P2")
204193   AM_RANGE(0x1f100008, 0x1f10000b) AM_READ_PORT("P3_P4")
205   AM_RANGE(0x1f180000, 0x1f180003) AM_WRITE(eeprom_w)
206   AM_RANGE(0x1f680000, 0x1f68001f) AM_READWRITE(mb89371_r, mb89371_w)
194   AM_RANGE(0x1f180000, 0x1f180003) AM_WRITE_PORT("EEPROMOUT")
195   AM_RANGE(0x1f680000, 0x1f68001f) AM_READWRITE16(mb89371_r, mb89371_w, 0xffffffff)
207196   AM_RANGE(0x1f780000, 0x1f780003) AM_WRITENOP /* watchdog? */
208197ADDRESS_MAP_END
209198
199static ADDRESS_MAP_START( simpbowl_map, AS_PROGRAM, 32, konamigv_state )
200   AM_IMPORT_FROM( konamigv_map )
201
202   AM_RANGE(0x1f680080, 0x1f68008f) AM_READWRITE16(flash_r, flash_w, 0xffffffff)
203   AM_RANGE(0x1f6800c0, 0x1f6800c7) AM_READ16(trackball_r, 0xffffffff)
204   AM_RANGE(0x1f6800c8, 0x1f6800cb) AM_READ16(unknown_r, 0x0000ffff) /* ?? */
205ADDRESS_MAP_END
206
207static ADDRESS_MAP_START( btchamp_map, AS_PROGRAM, 32, konamigv_state )
208   AM_IMPORT_FROM( konamigv_map )
209
210   AM_RANGE(0x1f380000, 0x1f3fffff) AM_READWRITE16(btcflash_r, btcflash_w, 0xffffffff)
211   AM_RANGE(0x1f680080, 0x1f680087) AM_READ16(btc_trackball_r, 0xffffffff)
212   AM_RANGE(0x1f680088, 0x1f68008b) AM_WRITE16(btc_trackball_w, 0xffffffff)
213   AM_RANGE(0x1f6800e0, 0x1f6800e3) AM_WRITENOP
214ADDRESS_MAP_END
215
216static ADDRESS_MAP_START( kdeadeye_map, AS_PROGRAM, 32, konamigv_state )
217   AM_IMPORT_FROM( konamigv_map )
218
219   AM_RANGE(0x1f380000, 0x1f3fffff) AM_READWRITE16(btcflash_r, btcflash_w, 0xffffffff)
220   AM_RANGE(0x1f680080, 0x1f680083) AM_READ_PORT("GUNX1")
221   AM_RANGE(0x1f680090, 0x1f680093) AM_READ_PORT("GUNY1")
222   AM_RANGE(0x1f6800a0, 0x1f6800a3) AM_READ_PORT("GUNX2")
223   AM_RANGE(0x1f6800b0, 0x1f6800b3) AM_READ_PORT("GUNY2")
224   AM_RANGE(0x1f6800c0, 0x1f6800c3) AM_READ_PORT("BUTTONS")
225   AM_RANGE(0x1f6800e0, 0x1f6800e3) AM_WRITENOP
226ADDRESS_MAP_END
227
228static ADDRESS_MAP_START( tokimosh_map, AS_PROGRAM, 32, konamigv_state )
229   AM_IMPORT_FROM( konamigv_map )
230
231   AM_RANGE(0x1f680080, 0x1f680083) AM_READ16(tokimeki_serial_r, 0x0000ffff)
232   AM_RANGE(0x1f680090, 0x1f680093) AM_WRITE16(tokimeki_serial_w, 0x0000ffff)
233ADDRESS_MAP_END
234
210235/* SCSI */
211236
212237void konamigv_state::scsi_dma_read( UINT32 *p_n_psxram, UINT32 n_address, INT32 n_size )
r22718r22719
394419   PORT_BIT( 0x00004000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(4)
395420   PORT_BIT( 0x00008000, IP_ACTIVE_LOW, IPT_START4 )
396421   PORT_BIT( 0xffff0000, IP_ACTIVE_LOW, IPT_UNKNOWN )
422
423   PORT_START("EEPROMOUT")
424   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_device, write_bit)
425   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_device, set_cs_line)
426   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_device, set_clock_line)
397427INPUT_PORTS_END
398428
399429/* Simpsons Bowling */
400430
401READ32_MEMBER(konamigv_state::flash_r)
431READ16_MEMBER(konamigv_state::flash_r)
402432{
403   int reg = offset*2;
404   //int shift = 0;
405
406   if (mem_mask == 0xffff0000)
433   if (offset == 4)   // set odd address
407434   {
408      reg++;
409      //shift = 16;
410   }
411
412   if (reg == 4)   // set odd address
413   {
414435      m_flash_address |= 1;
415436   }
416437
417   if (reg == 0)
438   if (offset == 0)
418439   {
419440      int chip = (m_flash_address >= 0x200000) ? 2 : 0;
420      int ret;
421441
422      ret = m_flash8[chip]->read(m_flash_address & 0x1fffff) & 0xff;
423      ret |= m_flash8[chip+1]->read(m_flash_address & 0x1fffff)<<8;
442      int ret = ( m_flash8[chip]->read(m_flash_address & 0x1fffff) & 0xff ) |
443         ( m_flash8[chip+1]->read(m_flash_address & 0x1fffff) << 8 );
444
424445      m_flash_address++;
425446
426447      return ret;
427448   }
449
428450   return 0;
429451}
430452
431WRITE32_MEMBER(konamigv_state::flash_w)
453WRITE16_MEMBER(konamigv_state::flash_w)
432454{
433   int reg = offset*2;
434455   int chip;
435456
436   if (mem_mask == 0xffff0000)
457   switch (offset)
437458   {
438      reg++;
439      data>>= 16;
440   }
441
442   switch (reg)
443   {
444459      case 0:
445460         chip = (m_flash_address >= 0x200000) ? 2 : 0;
446461         m_flash8[chip]->write(m_flash_address & 0x1fffff, data&0xff);
r22718r22719
451466         m_flash_address = 0;
452467         m_flash_address |= (data<<1);
453468         break;
469
454470      case 2:
455471         m_flash_address &= 0xff00ff;
456472         m_flash_address |= (data<<8);
457473         break;
474
458475      case 3:
459476         m_flash_address &= 0x00ffff;
460477         m_flash_address |= (data<<15);
r22718r22719
462479   }
463480}
464481
465READ32_MEMBER(konamigv_state::trackball_r)
482READ16_MEMBER(konamigv_state::trackball_r)
466483{
467   if( offset == 0 && mem_mask == 0x0000ffff )
484   if( offset == 0 )
468485   {
469      int axis;
470      UINT16 diff;
471      UINT16 value;
472486      static const char *const axisnames[] = { "TRACK0_X", "TRACK0_Y" };
473487
474      for( axis = 0; axis < 2; axis++ )
488      for( int axis = 0; axis < 2; axis++ )
475489      {
476         value = ioport(axisnames[axis])->read();
477         diff = value - m_trackball_prev[ axis ];
490         UINT16 value = ioport(axisnames[axis])->read();
491         m_trackball_data[ axis ] = value - m_trackball_prev[ axis ];
478492         m_trackball_prev[ axis ] = value;
479         m_trackball_data[ axis ] = ( ( diff & 0xf00 ) << 16 ) | ( ( diff & 0xff ) << 8 );
480493      }
481494   }
482   return m_trackball_data[ offset ];
495
496   if( ( offset & 1 ) == 0 )
497   {
498      return m_trackball_data[ offset >> 1 ] << 8;
499   }
500
501   return m_trackball_data[ offset >> 1 ] & 0xf00;
483502}
484503
485READ32_MEMBER(konamigv_state::unknown_r)
504READ16_MEMBER(konamigv_state::unknown_r)
486505{
487   return 0xffffffff;
506   return 0xffff;
488507}
489508
490509DRIVER_INIT_MEMBER(konamigv_state,simpbowl)
r22718r22719
494513   m_flash8[2] = machine().device<fujitsu_29f016a_device>("flash2");
495514   m_flash8[3] = machine().device<fujitsu_29f016a_device>("flash3");
496515
497   m_maincpu->space(AS_PROGRAM).install_readwrite_handler( 0x1f680080, 0x1f68008f, read32_delegate(FUNC(konamigv_state::flash_r),this), write32_delegate(FUNC(konamigv_state::flash_w),this) );
498   m_maincpu->space(AS_PROGRAM).install_read_handler     ( 0x1f6800c0, 0x1f6800c7, read32_delegate(FUNC(konamigv_state::trackball_r),this));
499   m_maincpu->space(AS_PROGRAM).install_read_handler     ( 0x1f6800c8, 0x1f6800cb, read32_delegate(FUNC(konamigv_state::unknown_r),this)); /* ?? */
500
501516   DRIVER_INIT_CALL(konamigv);
502517}
503518
504519static MACHINE_CONFIG_DERIVED( simpbowl, konamigv )
520   MCFG_CPU_MODIFY( "maincpu" )
521   MCFG_CPU_PROGRAM_MAP( simpbowl_map )
522
505523   MCFG_FUJITSU_29F016A_ADD("flash0")
506524   MCFG_FUJITSU_29F016A_ADD("flash1")
507525   MCFG_FUJITSU_29F016A_ADD("flash2")
r22718r22719
521539
522540/* Beat the Champ */
523541
524READ32_MEMBER(konamigv_state::btcflash_r)
542READ16_MEMBER(konamigv_state::btcflash_r)
525543{
526   if (mem_mask == 0x0000ffff)
527   {
528      return m_flash16[0]->read(offset*2);
529   }
530   else if (mem_mask == 0xffff0000)
531   {
532      return m_flash16[0]->read((offset*2)+1)<<16;
533   }
534
535   return 0;
544   return m_flash16[0]->read(offset);
536545}
537546
538WRITE32_MEMBER(konamigv_state::btcflash_w)
547WRITE16_MEMBER(konamigv_state::btcflash_w)
539548{
540   if (mem_mask == 0x0000ffff)
541   {
542      m_flash16[0]->write(offset*2, data&0xffff);
543   }
544   else if (mem_mask == 0xffff0000)
545   {
546      m_flash16[0]->write((offset*2)+1, (data>>16)&0xffff);
547   }
549   m_flash16[0]->write(offset, data);
548550}
549551
550READ32_MEMBER(konamigv_state::btc_trackball_r)
552READ16_MEMBER(konamigv_state::btc_trackball_r)
551553{
552554//  mame_printf_debug( "r %08x %08x %08x\n", space.device().safe_pc(), offset, mem_mask );
553555
554   if( offset == 1 && mem_mask == 0xffff0000 )
556   if( offset == 3 )
555557   {
556      int axis;
557      UINT16 diff;
558      UINT16 value;
559558      static const char *const axisnames[] = { "TRACK0_X", "TRACK0_Y", "TRACK1_X", "TRACK1_Y" };
560559
561      for( axis = 0; axis < 4; axis++ )
560      for( int axis = 0; axis < 4; axis++ )
562561      {
563         value = ioport(axisnames[axis])->read();
564         diff = value - m_btc_trackball_prev[ axis ];
562         UINT16 value = ioport(axisnames[axis])->read();
563         m_btc_trackball_data[ axis ] = value - m_btc_trackball_prev[ axis ];
565564         m_btc_trackball_prev[ axis ] = value;
566         m_btc_trackball_data[ axis ] = ( ( diff & 0xf00 ) << 16 ) | ( ( diff & 0xff ) << 8 );
567565      }
568566   }
569567
570   return m_btc_trackball_data[ offset ] | ( m_btc_trackball_data[ offset + 2 ] >> 8 );
568   if( ( offset & 1 ) == 0 )
569   {
570      return ( m_btc_trackball_data[ offset >> 1 ] << 8 ) | ( m_btc_trackball_data[ ( offset >> 1 ) + 2 ] & 0xff );
571   }
572
573   return ( m_btc_trackball_data[ offset >> 1 ] & 0xf00 ) | ( m_btc_trackball_data[ ( offset >> 1 ) + 2 ] >> 8 );
571574}
572575
573WRITE32_MEMBER(konamigv_state::btc_trackball_w)
576WRITE16_MEMBER(konamigv_state::btc_trackball_w)
574577{
575578//  mame_printf_debug( "w %08x %08x %08x %08x\n", space.device().safe_pc(), offset, data, mem_mask );
576579}
r22718r22719
579582{
580583   m_flash16[0] = machine().device<sharp_lh28f400_device>("flash");
581584
582   m_maincpu->space(AS_PROGRAM).install_readwrite_handler( 0x1f680080, 0x1f68008f, read32_delegate(FUNC(konamigv_state::btc_trackball_r),this), write32_delegate(FUNC(konamigv_state::btc_trackball_w),this));
583   m_maincpu->space(AS_PROGRAM).nop_write                  ( 0x1f6800e0, 0x1f6800e3);
584   m_maincpu->space(AS_PROGRAM).install_readwrite_handler( 0x1f380000, 0x1f3fffff, read32_delegate(FUNC(konamigv_state::btcflash_r),this), write32_delegate(FUNC(konamigv_state::btcflash_w),this) );
585
586585   DRIVER_INIT_CALL(konamigv);
587586}
588587
589588static MACHINE_CONFIG_DERIVED( btchamp, konamigv )
589   MCFG_CPU_MODIFY( "maincpu" )
590   MCFG_CPU_PROGRAM_MAP( btchamp_map )
591
590592   MCFG_SHARP_LH28F400_ADD("flash")
591593MACHINE_CONFIG_END
592594
r22718r22719
608610
609611/* Tokimeki Memorial games - have a mouse and printer and who knows what else */
610612
611READ32_MEMBER(konamigv_state::tokimeki_serial_r)
613READ16_MEMBER(konamigv_state::tokimeki_serial_r)
612614{
613615   // bits checked: 0x80 and 0x20 for periodic status (800b6968 and 800b69e0 in tokimosh)
614616   // 0x08 for reading the serial device (8005e624)
615617
616   return 0xffffffff;
618   return 0xffff;
617619}
618620
619WRITE32_MEMBER(konamigv_state::tokimeki_serial_w)
621WRITE16_MEMBER(konamigv_state::tokimeki_serial_w)
620622{
621623   /*
622624       serial EEPROM-like device here: when mem_mask == 0x000000ff only,
r22718r22719
634636
635637DRIVER_INIT_MEMBER(konamigv_state,tokimosh)
636638{
637   m_maincpu->space(AS_PROGRAM).install_read_handler ( 0x1f680080, 0x1f680083, read32_delegate(FUNC(konamigv_state::tokimeki_serial_r),this));
638   m_maincpu->space(AS_PROGRAM).install_write_handler( 0x1f680090, 0x1f680093, write32_delegate(FUNC(konamigv_state::tokimeki_serial_w),this));
639
640639   DRIVER_INIT_CALL(konamigv);
641640}
642641
642static MACHINE_CONFIG_DERIVED( tokimosh, konamigv )
643   MCFG_CPU_MODIFY( "maincpu" )
644   MCFG_CPU_PROGRAM_MAP( tokimosh_map )
645MACHINE_CONFIG_END
646
643647/*
644648Dead Eye
645649
r22718r22719
650654    A01
651655*/
652656
653WRITE32_MEMBER(konamigv_state::kdeadeye_0_w)
654{
655}
656
657657DRIVER_INIT_MEMBER(konamigv_state,kdeadeye)
658658{
659659   m_flash16[0] = machine().device<sharp_lh28f400_device>("flash");
660660
661   m_maincpu->space(AS_PROGRAM).install_read_port  ( 0x1f680080, 0x1f680083, "GUNX1" );
662   m_maincpu->space(AS_PROGRAM).install_read_port  ( 0x1f680090, 0x1f680093, "GUNY1" );
663   m_maincpu->space(AS_PROGRAM).install_read_port  ( 0x1f6800a0, 0x1f6800a3, "GUNX2" );
664   m_maincpu->space(AS_PROGRAM).install_read_port  ( 0x1f6800b0, 0x1f6800b3, "GUNY2" );
665   m_maincpu->space(AS_PROGRAM).install_read_port  ( 0x1f6800c0, 0x1f6800c3, "BUTTONS" );
666   m_maincpu->space(AS_PROGRAM).install_write_handler    ( 0x1f6800e0, 0x1f6800e3, write32_delegate(FUNC(konamigv_state::kdeadeye_0_w),this) );
667   m_maincpu->space(AS_PROGRAM).install_readwrite_handler( 0x1f380000, 0x1f3fffff, read32_delegate(FUNC(konamigv_state::btcflash_r),this), write32_delegate(FUNC(konamigv_state::btcflash_w),this));
668
669661   DRIVER_INIT_CALL(konamigv);
670662}
671663
672664static MACHINE_CONFIG_DERIVED( kdeadeye, konamigv )
665   MCFG_CPU_MODIFY( "maincpu" )
666   MCFG_CPU_PROGRAM_MAP( kdeadeye_map )
667
673668   MCFG_SHARP_LH28F400_ADD("flash")
674669MACHINE_CONFIG_END
675670
r22718r22719
852847GAME( 1996, hyperath, konamigv, konamigv, konamigv, konamigv_state, konamigv, ROT0, "Konami", "Hyper Athlete (GV021 Japan 1.00)", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS )
853848GAME( 1996, lacrazyc, konamigv, konamigv, konamigv, konamigv_state, konamigv, ROT0, "Konami", "Let's Attack Crazy Cross (GV027 Asia 1.10)", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS )
854849GAME( 1996, susume,   lacrazyc, konamigv, konamigv, konamigv_state, konamigv, ROT0, "Konami", "Susume! Taisen Puzzle-Dama (GV027 Japan 1.20)", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS )
855GAME( 1996, btchamp,  konamigv, btchamp,  btchamp, konamigv_state, btchamp,  ROT0, "Konami", "Beat the Champ (GV053 UAA01)", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS )
850GAME( 1996, btchamp,  konamigv, btchamp,  btchamp, konamigv_state, btchamp,  ROT0, "Konami", "Beat the Champ (GV053 UAA01)", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS )
856851GAME( 1996, kdeadeye, konamigv, kdeadeye, kdeadeye, konamigv_state, kdeadeye, ROT0, "Konami", "Dead Eye (GV054 UAA01)", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS )
857852GAME( 1997, weddingr, konamigv, konamigv, konamigv, konamigv_state, konamigv, ROT0, "Konami", "Wedding Rhapsody (GX624 JAA)", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS )
858GAME( 1997, tokimosh, konamigv, konamigv, konamigv, konamigv_state, tokimosh, ROT0, "Konami", "Tokimeki Memorial Oshiete Your Heart (GE755 JAA)", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS | GAME_NOT_WORKING )
859GAME( 1997, tokimosp, konamigv, konamigv, konamigv, konamigv_state, tokimosh, ROT0, "Konami", "Tokimeki Memorial Oshiete Your Heart Seal version PLUS (GE756 JAB)", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS | GAME_NOT_WORKING )
853GAME( 1997, tokimosh, konamigv, tokimosh, konamigv, konamigv_state, tokimosh, ROT0, "Konami", "Tokimeki Memorial Oshiete Your Heart (GE755 JAA)", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS | GAME_NOT_WORKING )
854GAME( 1997, tokimosp, konamigv, tokimosh, konamigv, konamigv_state, tokimosh, ROT0, "Konami", "Tokimeki Memorial Oshiete Your Heart Seal version PLUS (GE756 JAB)", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS | GAME_NOT_WORKING )
860855GAME( 1998, nagano98, konamigv, konamigv, konamigv, konamigv_state, konamigv, ROT0, "Konami", "Nagano Winter Olympics '98 (GX720 EAA)", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE)
861856GAME( 1998, naganoj,  nagano98, konamigv, konamigv, konamigv_state, konamigv, ROT0, "Konami", "Hyper Olympic in Nagano (GX720 JAA)", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE)
862857GAME( 2000, simpbowl, konamigv, simpbowl, simpbowl, konamigv_state, simpbowl, ROT0, "Konami", "Simpsons Bowling (GQ829 UAA)", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE)
trunk/src/mame/drivers/konamigq.c
r22718r22719
6262      : driver_device(mconfig, type, tag),
6363      m_am53cf96(*this, "scsi:am53cf96"),
6464      m_maincpu(*this, "maincpu"),
65      m_soundcpu(*this, "soundcpu") { }
65      m_soundcpu(*this, "soundcpu")
66   {
67   }
6668
6769   required_device<am53cf96_device> m_am53cf96;
6870
r22718r22719
7072   UINT8 m_sndtor3k[ 16 ];
7173   UINT8 *m_p_n_pcmram;
7274   UINT8 m_sector_buffer[ 512 ];
73   DECLARE_WRITE32_MEMBER(soundr3k_w);
74   DECLARE_READ32_MEMBER(soundr3k_r);
75   DECLARE_WRITE32_MEMBER(mb89371_w);
76   DECLARE_READ32_MEMBER(mb89371_r);
77   DECLARE_WRITE32_MEMBER(eeprom_w);
78   DECLARE_WRITE32_MEMBER(pcmram_w);
79   DECLARE_READ32_MEMBER(pcmram_r);
75   DECLARE_WRITE16_MEMBER(soundr3k_w);
76   DECLARE_READ16_MEMBER(soundr3k_r);
77   DECLARE_WRITE16_MEMBER(mb89371_w);
78   DECLARE_READ16_MEMBER(mb89371_r);
79   DECLARE_WRITE16_MEMBER(eeprom_w);
80   DECLARE_WRITE16_MEMBER(pcmram_w);
81   DECLARE_READ16_MEMBER(pcmram_r);
8082   DECLARE_READ16_MEMBER(sndcomm68k_r);
8183   DECLARE_WRITE16_MEMBER(sndcomm68k_w);
8284   DECLARE_READ16_MEMBER(tms57002_data_word_r);
r22718r22719
9496
9597/* Sound */
9698
97WRITE32_MEMBER(konamigq_state::soundr3k_w)
99WRITE16_MEMBER(konamigq_state::soundr3k_w)
98100{
99   if( ACCESSING_BITS_16_31 )
101   m_sndto000[ offset ] = data;
102   if( offset == 7 )
100103   {
101      m_sndto000[ ( offset << 1 ) + 1 ] = data >> 16;
102      if( offset == 3 )
103      {
104         m_soundcpu->set_input_line(1, HOLD_LINE );
105      }
104      m_soundcpu->set_input_line(1, HOLD_LINE );
106105   }
107   if( ACCESSING_BITS_0_15 )
108   {
109      m_sndto000[ offset << 1 ] = data;
110   }
111106}
112107
113READ32_MEMBER(konamigq_state::soundr3k_r)
108READ16_MEMBER(konamigq_state::soundr3k_r)
114109{
115   UINT32 data;
116
117   data = ( m_sndtor3k[ ( offset << 1 ) + 1 ] << 16 ) | m_sndtor3k[ offset << 1 ];
118
119110   /* hack to help the main program start up */
120   if( offset == 1 )
111   if( offset == 2 || offset == 3 )
121112   {
122      data = 0;
113      return 0;
123114   }
124115
125   return data;
116   return m_sndtor3k[ offset ];
126117}
127118
128119/* UART */
129120
130WRITE32_MEMBER(konamigq_state::mb89371_w)
121WRITE16_MEMBER(konamigq_state::mb89371_w)
131122{
132123}
133124
134READ32_MEMBER(konamigq_state::mb89371_r)
125READ16_MEMBER(konamigq_state::mb89371_r)
135126{
136   return 0xffffffff;
127   return 0xffff;
137128}
138129
139130/* EEPROM */
r22718r22719
150141   0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
151142};
152143
153WRITE32_MEMBER(konamigq_state::eeprom_w)
144WRITE16_MEMBER(konamigq_state::eeprom_w)
154145{
155146   ioport("EEPROMOUT")->write(data & 0x07, 0xff);
156147   m_soundcpu->set_input_line(INPUT_LINE_RESET, ( data & 0x40 ) ? CLEAR_LINE : ASSERT_LINE );
r22718r22719
159150
160151/* PCM RAM */
161152
162WRITE32_MEMBER(konamigq_state::pcmram_w)
153WRITE16_MEMBER(konamigq_state::pcmram_w)
163154{
164   if( ACCESSING_BITS_0_7 )
165   {
166      m_p_n_pcmram[ offset << 1 ] = data;
167   }
168   if( ACCESSING_BITS_16_23 )
169   {
170      m_p_n_pcmram[ ( offset << 1 ) + 1 ] = data >> 16;
171   }
155   m_p_n_pcmram[ offset ] = data;
172156}
173157
174READ32_MEMBER(konamigq_state::pcmram_r)
158READ16_MEMBER(konamigq_state::pcmram_r)
175159{
176   return ( m_p_n_pcmram[ ( offset << 1 ) + 1 ] << 16 ) | m_p_n_pcmram[ offset << 1 ];
160   return m_p_n_pcmram[ offset ];
177161}
178162
179163/* Video */
180164
181165static ADDRESS_MAP_START( konamigq_map, AS_PROGRAM, 32, konamigq_state )
182166   AM_RANGE(0x1f000000, 0x1f00001f) AM_DEVREADWRITE8("scsi:am53cf96", am53cf96_device, read, write, 0x00ff00ff)
183   AM_RANGE(0x1f100000, 0x1f10000f) AM_WRITE(soundr3k_w)
184   AM_RANGE(0x1f100010, 0x1f10001f) AM_READ(soundr3k_r)
185   AM_RANGE(0x1f180000, 0x1f180003) AM_WRITE(eeprom_w)
167   AM_RANGE(0x1f100000, 0x1f10000f) AM_WRITE16(soundr3k_w, 0xffffffff)
168   AM_RANGE(0x1f100010, 0x1f10001f) AM_READ16(soundr3k_r, 0xffffffff)
169   AM_RANGE(0x1f180000, 0x1f180003) AM_WRITE16(eeprom_w, 0x0000ffff)
186170   AM_RANGE(0x1f198000, 0x1f198003) AM_WRITENOP            /* cabinet lamps? */
187171   AM_RANGE(0x1f1a0000, 0x1f1a0003) AM_WRITENOP            /* indicates gun trigger */
188172   AM_RANGE(0x1f200000, 0x1f200003) AM_READ_PORT("GUNX1")
r22718r22719
194178   AM_RANGE(0x1f230000, 0x1f230003) AM_READ_PORT("P1_P2")
195179   AM_RANGE(0x1f230004, 0x1f230007) AM_READ_PORT("P3_SERVICE")
196180   AM_RANGE(0x1f238000, 0x1f238003) AM_READ_PORT("DSW")
197   AM_RANGE(0x1f300000, 0x1f5fffff) AM_READWRITE(pcmram_r, pcmram_w)
198   AM_RANGE(0x1f680000, 0x1f68001f) AM_READWRITE(mb89371_r, mb89371_w)
181   AM_RANGE(0x1f300000, 0x1f5fffff) AM_READWRITE16(pcmram_r, pcmram_w, 0xffffffff)
182   AM_RANGE(0x1f680000, 0x1f68001f) AM_READWRITE16(mb89371_r, mb89371_w, 0xffffffff)
199183   AM_RANGE(0x1f780000, 0x1f780003) AM_WRITENOP /* watchdog? */
200184ADDRESS_MAP_END
201185

Previous 199869 Revisions Next


© 1997-2024 The MAME Team