Previous 199869 Revisions Next

r29328 Saturday 5th April, 2014 at 18:59:03 UTC by hap
small cleanup
[src/mame/drivers]namcos12.c

trunk/src/mame/drivers/namcos12.c
r29327r29328
10531053public:
10541054   namcos12_state(const machine_config &mconfig, device_type type, const char *tag)
10551055      : driver_device(mconfig, type, tag),
1056      m_rtc(*this, "rtc"),
1057      m_settings(*this, "namco_settings"),
1058      m_sharedram(*this, "sharedram"),
10591056      m_maincpu(*this, "maincpu"),
10601057      m_ram(*this, "maincpu:ram"),
10611058      m_sub(*this, "sub"),
1062      m_adc(*this, "sub:adc")
1063   {
1064   }
1059      m_adc(*this, "sub:adc"),
1060      m_rtc(*this, "rtc"),
1061      m_settings(*this, "namco_settings"),
1062      m_sharedram(*this, "sharedram")
1063   { }
10651064
1065   required_device<psxcpu_device> m_maincpu;
1066   required_device<ram_device> m_ram;
1067   required_device<h83002_device> m_sub;
1068   required_device<h8_adc_device> m_adc;
10661069   required_device<rtc4543_device> m_rtc;
10671070   required_device<namco_settings_device> m_settings;
10681071   required_shared_ptr<UINT16> m_sharedram;
1072
10691073   UINT16 m_n_bankoffset;
1070
10711074   UINT32 m_n_dmaoffset;
10721075   UINT32 m_n_tektagdmaoffset;
10731076   int m_has_tektagt_dma;
10741077
10751078   int m_ttt_cnt;
10761079   UINT32 m_ttt_val[2];
1077
10781080   int m_s12_porta;
10791081   int m_s12_lastpB;
1082
10801083   DECLARE_WRITE16_MEMBER(sharedram_w);
10811084   DECLARE_READ16_MEMBER(sharedram_r);
10821085   DECLARE_WRITE16_MEMBER(bankoffset_w);
r29327r29328
10961099   DECLARE_WRITE16_MEMBER(s12_mcu_portB_w);
10971100   DECLARE_READ16_MEMBER(s12_mcu_gun_h_r);
10981101   DECLARE_READ16_MEMBER(s12_mcu_gun_v_r);
1102
10991103   DECLARE_DRIVER_INIT(namcos12);
11001104   DECLARE_DRIVER_INIT(ptblank2);
1101   DECLARE_MACHINE_RESET(namcos12);
11021105   inline void ATTR_PRINTF(3,4) verboselog( int n_level, const char *s_fmt, ... );
11031106   void namcos12_rom_read( UINT32 *p_n_psxram, UINT32 n_address, INT32 n_size );
11041107   void namcos12_sub_irq( screen_device &screen, bool vblank_state );
1105   required_device<psxcpu_device> m_maincpu;
1106   required_device<ram_device> m_ram;
1107   required_device<h83002_device> m_sub;
1108   required_device<h8_adc_device> m_adc;
1108
1109protected:
1110   virtual void machine_reset();
11091111};
11101112
11111113inline void ATTR_PRINTF(3,4) namcos12_state::verboselog( int n_level, const char *s_fmt, ... )
r29327r29328
12621264
12631265WRITE16_MEMBER(namcos12_state::system11gun_w)
12641266{
1265   switch( offset )
1267   switch (offset)
12661268   {
12671269   case 0:
12681270      /* blowback 1 */
r29327r29328
12891291{
12901292   UINT16 data = 0;
12911293
1292   switch( offset )
1294   switch (offset)
12931295   {
12941296   case 0:
12951297      data = ioport("LIGHT0_X")->read();
r29327r29328
13001302      break;
13011303
13021304   case 3:
1303         data = ioport("LIGHT0_Y")->read() + 1;
1305      data = ioport("LIGHT0_Y")->read() + 1;
13041306      break;
13051307
13061308   case 4:
r29327r29328
13231325{
13241326   // Second dma offset or protection ref values write
13251327
1326   switch(offset)
1328   switch (offset)
13271329   {
13281330   case 0:
13291331      m_n_tektagdmaoffset = data;
r29327r29328
13421344
13431345READ16_MEMBER(namcos12_state::tektagt_protection_1_r)
13441346{
1345   switch(offset)
1347   switch (offset)
13461348   {
13471349   case 0:
13481350      // Reads are either ignored or bit 15 is tested for a busy flag
13491351      return 0x8000;
1352   case 1:
1353      break;
13501354   }
13511355
13521356   return 0;
r29327r29328
13541358
13551359WRITE16_MEMBER(namcos12_state::tektagt_protection_2_w)
13561360{
1357   switch( offset )
1361   switch (offset)
13581362   {
13591363   case 0:
13601364      // Writes are 0 or rand(), only used as a "start prot value write" trigger
13611365      m_ttt_cnt = 0;
1366      break;
1367   case 1:
1368      break;
13621369   }
13631370}
13641371
r29327r29328
14031410   return 0;
14041411}
14051412
1406MACHINE_RESET_MEMBER(namcos12_state,namcos12)
1413void namcos12_state::machine_reset()
14071414{
14081415   address_space &space = m_maincpu->space(AS_PROGRAM);
14091416   bankoffset_w(space,0,0,0xffff);
r29327r29328
14891496   m_settings->ce_w((m_s12_lastpB & 0x20) && !(m_s12_porta & 1));
14901497}
14911498
1499static ADDRESS_MAP_START( s12h8iomap, AS_IO, 16, namcos12_state )
1500   AM_RANGE(h8_device::PORT_7, h8_device::PORT_7) AM_READ_PORT("DSW")
1501   AM_RANGE(h8_device::PORT_8, h8_device::PORT_8) AM_READ(s12_mcu_p8_r ) AM_WRITENOP
1502   AM_RANGE(h8_device::PORT_A, h8_device::PORT_A) AM_READWRITE(s12_mcu_pa_r, s12_mcu_pa_w )
1503   AM_RANGE(h8_device::PORT_B, h8_device::PORT_B) AM_READWRITE(s12_mcu_portB_r, s12_mcu_portB_w )
1504   AM_RANGE(h8_device::ADC_0, h8_device::ADC_0) AM_NOP
1505   AM_RANGE(h8_device::ADC_1, h8_device::ADC_1) AM_NOP
1506   AM_RANGE(h8_device::ADC_2, h8_device::ADC_2) AM_NOP
1507   AM_RANGE(h8_device::ADC_3, h8_device::ADC_3) AM_NOP
1508ADDRESS_MAP_END
1509
1510
14921511/* Golgo 13 lightgun inputs
14931512 *
14941513 * Note: The H8/3002's ADC is 10 bits wide, but
r29327r29328
14981517
14991518READ16_MEMBER(namcos12_state::s12_mcu_gun_h_r)
15001519{
1501   ioport_port *port = ioport("LIGHT0_X");
1502   if( port != NULL )
1503      return port->read() << 2;
1504
1505   // if game has no lightgun ports, return 0
1506   return 0;
1520   return ioport("LIGHT0_X")->read() << 2;
15071521}
15081522
15091523READ16_MEMBER(namcos12_state::s12_mcu_gun_v_r)
15101524{
1511   ioport_port *port = ioport("LIGHT0_Y");
1512   if( port != NULL )
1513      return port->read() << 2;
1514
1515   // if game has no lightgun ports, return 0
1516   return 0;
1525   return ioport("LIGHT0_Y")->read() << 2;
15171526}
15181527
1519static ADDRESS_MAP_START( s12h8iomap, AS_IO, 16, namcos12_state )
1520   AM_RANGE(h8_device::PORT_7, h8_device::PORT_7) AM_READ_PORT("DSW")
1521   AM_RANGE(h8_device::PORT_8, h8_device::PORT_8) AM_READ(s12_mcu_p8_r ) AM_WRITENOP
1522   AM_RANGE(h8_device::PORT_A, h8_device::PORT_A) AM_READWRITE(s12_mcu_pa_r, s12_mcu_pa_w )
1523   AM_RANGE(h8_device::PORT_B, h8_device::PORT_B) AM_READWRITE(s12_mcu_portB_r, s12_mcu_portB_w )
1524   AM_RANGE(h8_device::ADC_0, h8_device::ADC_0) AM_NOP
1525   AM_RANGE(h8_device::ADC_1, h8_device::ADC_1) AM_READ(s12_mcu_gun_h_r )  // golgo 13 gun X-axis
1526   AM_RANGE(h8_device::ADC_2, h8_device::ADC_2) AM_READ(s12_mcu_gun_v_r )  // golgo 13 gun Y-axis
1527   AM_RANGE(h8_device::ADC_3, h8_device::ADC_3) AM_NOP
1528static ADDRESS_MAP_START( golgo13_h8iomap, AS_IO, 16, namcos12_state )
1529   AM_RANGE(h8_device::ADC_1, h8_device::ADC_1) AM_READ(s12_mcu_gun_h_r )
1530   AM_RANGE(h8_device::ADC_2, h8_device::ADC_2) AM_READ(s12_mcu_gun_v_r )
1531
1532   AM_IMPORT_FROM( s12h8iomap )
15281533ADDRESS_MAP_END
15291534
1535
15301536DRIVER_INIT_MEMBER(namcos12_state,namcos12)
15311537{
15321538   membank("bank1")->configure_entries(0, memregion( "user2" )->bytes() / 0x200000, memregion( "user2" )->base(), 0x200000 );
r29327r29328
15521558}
15531559
15541560static MACHINE_CONFIG_START( coh700, namcos12_state )
1561
15551562   /* basic machine hardware */
1556   MCFG_CPU_ADD( "maincpu", CXD8661R, XTAL_100MHz )
1563   MCFG_CPU_ADD("maincpu", CXD8661R, XTAL_100MHz)
15571564   MCFG_CPU_PROGRAM_MAP( namcos12_map)
15581565
15591566   MCFG_RAM_MODIFY("maincpu:ram")
r29327r29328
15611568
15621569   MCFG_PSX_DMA_CHANNEL_READ( "maincpu", 5, psx_dma_read_delegate( FUNC( namcos12_state::namcos12_rom_read ), (namcos12_state *) owner ) )
15631570
1564   MCFG_CPU_ADD("sub", H83002, 16737350 )
1571   MCFG_CPU_ADD("sub", H83002, 16737350)
15651572   MCFG_CPU_PROGRAM_MAP(s12h8rwmap)
15661573   MCFG_CPU_IO_MAP(s12h8iomap)
15671574
1568   MCFG_MACHINE_RESET_OVERRIDE(namcos12_state, namcos12)
1569
15701575   MCFG_NAMCO_SETTINGS_ADD("namco_settings")
15711576
15721577   MCFG_RTC4543_ADD("rtc", XTAL_32_768kHz)
r29327r29328
15891594   /* sound hardware */
15901595   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
15911596
1592   MCFG_C352_ADD("c352", 16737350*1.5 ) // measured at 29.168MHz, but that's too highpitched
1597   MCFG_C352_ADD("c352", 16737350*1.5) // measured at 29.168MHz, but that's too highpitched
15931598   MCFG_SOUND_ROUTE(0, "rspeaker", 1.00)
15941599   MCFG_SOUND_ROUTE(1, "lspeaker", 1.00)
15951600   MCFG_SOUND_ROUTE(2, "rspeaker", 1.00)
r29327r29328
15971602MACHINE_CONFIG_END
15981603
15991604static MACHINE_CONFIG_DERIVED( ptblank2, coh700 )
1600   MCFG_CPU_MODIFY( "maincpu" )
1605
1606   /* basic machine hardware */
1607   MCFG_CPU_MODIFY("maincpu")
16011608   MCFG_CPU_PROGRAM_MAP( ptblank2_map )
16021609MACHINE_CONFIG_END
16031610
16041611static MACHINE_CONFIG_DERIVED( tektagt, coh700 )
1605   MCFG_CPU_MODIFY( "maincpu" )
1612
1613   /* basic machine hardware */
1614   MCFG_CPU_MODIFY("maincpu")
16061615   MCFG_CPU_PROGRAM_MAP( tektagt_map )
16071616MACHINE_CONFIG_END
16081617
1618static MACHINE_CONFIG_DERIVED( golgo13, coh700 )
16091619
1620   /* basic machine hardware */
1621   MCFG_CPU_MODIFY("sub")
1622   MCFG_CPU_IO_MAP(golgo13_h8iomap)
1623MACHINE_CONFIG_END
1624
1625
16101626static INPUT_PORTS_START( namcos12 )
16111627   PORT_START("DSW")
16121628   PORT_DIPNAME( 0x0080, 0x0080, DEF_STR(Service_Mode) ) PORT_DIPLOCATION( "DIP SW2:1" )
r29327r29328
28352851GAME( 1999, kaiunqz,   0,        coh700,   namcos12, namcos12_state, namcos12, ROT0, "Namco",           "Kaiun Quiz (Japan, KW1/VER.A)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* KC050 */
28362852GAME( 1999, pacappsp,  0,        coh700,   namcos12, namcos12_state, namcos12, ROT0, "Produce / Namco", "Paca Paca Passion Special (Japan, PSP1/VER.A)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) /* KC052 */
28372853GAME( 1999, aquarush,  0,        coh700,   namcos12, namcos12_state, namcos12, ROT0, "Namco",           "Aqua Rush (Japan, AQ1/VER.A1)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) /* KC053 */
2838GAME( 1999, golgo13,   0,        coh700,   golgo13,  namcos12_state, namcos12, ROT0, "Eighting / Raizing / Namco", "Golgo 13 (Japan, GLG1/VER.A)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) /* KC054 */
2839GAME( 1999, g13knd,    0,        coh700,   golgo13,  namcos12_state, namcos12, ROT0, "Eighting / Raizing / Namco", "Golgo 13 Kiseki no Dandou (Japan, GLS1/VER.A)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) /* KC059 */
2854GAME( 1999, golgo13,   0,        golgo13,  golgo13,  namcos12_state, namcos12, ROT0, "Eighting / Raizing / Namco", "Golgo 13 (Japan, GLG1/VER.A)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) /* KC054 */
2855GAME( 1999, g13knd,    0,        golgo13,  golgo13,  namcos12_state, namcos12, ROT0, "Eighting / Raizing / Namco", "Golgo 13 Kiseki no Dandou (Japan, GLS1/VER.A)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) /* KC059 */
28402856GAME( 2000, sws2000,   0,        coh700,   namcos12, namcos12_state, namcos12, ROT0, "Namco",           "Super World Stadium 2000 (Japan, SS01/VER.A)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* KC055 */
28412857GAME( 2000, truckk,    0,        coh700,   namcos12, namcos12_state, namcos12, ROT0, "Metro / Namco",   "Truck Kyosokyoku (Japan, TKK2/VER.A)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* KC056 */
28422858GAME( 2000, kartduel,  0,        coh700,   namcos12, namcos12_state, namcos12, ROT0, "Namco",           "Kart Duel (Japan, KTD1/VER.A)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* KC057 */

Previous 199869 Revisions Next


© 1997-2024 The MAME Team