Previous 199869 Revisions Next

r18701 Thursday 25th October, 2012 at 13:37:21 UTC by hap
improve timecris/timecrs2 gun accuracy
[src/mame/drivers]namcos22.c namcos23.c

trunk/src/mame/drivers/namcos22.c
r18700r18701
24342434
24352435READ32_MEMBER(namcos22_state::namcos22_gun_r)
24362436{
2437   int xpos = ioport("LIGHTX")->read_safe(0) * 640 / 0xff;
2438   int ypos = ioport("LIGHTY")->read_safe(0) * 240 / 0xff + 0x10;
2437   UINT16 xpos = ioport("LIGHTX")->read();
2438   UINT16 ypos = ioport("LIGHTY")->read();
2439
24392440   switch( offset )
24402441   {
2441   case 0: /* 430000 */
2442      return xpos<<16;
2442      case 0: /* 430000 */
2443         return xpos<<16;
24432444
2444   case 1: /* 430004 */
2445   case 2: /* 430008 */
2446      return ypos<<16;
2445      case 1: /* 430004 */
2446      case 2: /* 430008 */
2447         return ypos<<16;
24472448
2448   case 3:
2449   default:
2450      return 0;
2449      default:
2450         return 0;
24512451   }
2452} /* namcos22_gun_r */
2452}
24532453
24542454WRITE32_MEMBER(namcos22_state::namcos22_cpuleds_w)
24552455{
r18700r18701
24582458   if (ACCESSING_BITS_0_15) data &= 0xff;
24592459   else data = (data>>16) & 0xff;
24602460
2461   output_set_lamp_value(0, data>>7 & 1);
2462   output_set_lamp_value(1, data>>6 & 1);
2463   output_set_lamp_value(2, data>>5 & 1);
2464   output_set_lamp_value(3, data>>4 & 1);
2465   output_set_lamp_value(4, data>>3 & 1);
2466   output_set_lamp_value(5, data>>2 & 1);
2467   output_set_lamp_value(6, data>>1 & 1);
2468   output_set_lamp_value(7, data>>0 & 1);
2461   for (int i = 0; i < 8; i++)
2462      output_set_lamp_value(i, (~data<<i & 0x80) ? 0 : 1);
24692463}
24702464
24712465READ32_MEMBER(namcos22_state::alpinesa_prot_r)
r18700r18701
24772471{
24782472   switch( data )
24792473   {
2480   case 0:
2481      m_mAlpineSurferProtData = 0;
2482      break;
2483   case 1:
2484      m_mAlpineSurferProtData = 1;
2485      break;
2486   case 3:
2487      m_mAlpineSurferProtData = 2;
2488      break;
2489   default:
2490      break;
2474      case 0:
2475         m_mAlpineSurferProtData = 0;
2476         break;
2477      case 1:
2478         m_mAlpineSurferProtData = 1;
2479         break;
2480      case 3:
2481         m_mAlpineSurferProtData = 2;
2482         break;
2483      default:
2484         break;
24912485   }
24922486} /* alpinesa_prot_w */
24932487
r18700r18701
25172511   AM_RANGE(0x400000, 0x40001f) AM_READWRITE(namcos22_keycus_r, namcos22_keycus_w)
25182512   AM_RANGE(0x410000, 0x413fff) AM_RAM /* C139 SCI buffer */
25192513   AM_RANGE(0x420000, 0x42000f) AM_READ(namcos22_C139_SCI_r) AM_WRITEONLY /* C139 SCI registers */
2520   AM_RANGE(0x430000, 0x43000f) AM_READ(namcos22_gun_r)
25212514   AM_RANGE(0x430000, 0x430003) AM_WRITE(namcos22_cpuleds_w)
25222515   AM_RANGE(0x440000, 0x440003) AM_READ(namcos22_dipswitch_r)
25232516   AM_RANGE(0x450008, 0x45000b) AM_READWRITE(namcos22_portbit_r, namcos22_portbit_w)
r18700r18701
25412534   AM_RANGE(0xe00000, 0xe3ffff) AM_RAM /* workram */
25422535ADDRESS_MAP_END
25432536
2537static ADDRESS_MAP_START( timecris_am, AS_PROGRAM, 32, namcos22_state )
2538   AM_RANGE(0x430000, 0x43000f) AM_READ(namcos22_gun_r)
2539   AM_IMPORT_FROM( namcos22s_am )
2540ADDRESS_MAP_END
2541
25442542READ16_MEMBER(namcos22_state::s22mcu_shared_r)
25452543{
25462544   UINT16 *share16 = (UINT16 *)m_shareram.target();
r18700r18701
29812979   MCFG_SOUND_ROUTE(3, "lspeaker", 1.00)
29822980MACHINE_CONFIG_END
29832981
2982
2983static MACHINE_CONFIG_DERIVED( timecris, namcos22s )
2984
2985   MCFG_CPU_MODIFY("maincpu")
2986   MCFG_CPU_PROGRAM_MAP(timecris_am)
2987MACHINE_CONFIG_END
2988
29842989/*********************************************************************************/
29852990
29862991/* Namco System 22 */
r18700r18701
44844489   ROM_REGION( 0x1000000, "c352", 0 ) // Samples
44854490   ROM_LOAD( "ts1wavea.2l", 0x000000, 0x400000, CRC(d1123301) SHA1(4bf1fd746fef4e6befa63c61a761971d729e1573) )
44864491   ROM_LOAD( "ts1waveb.1l", 0x800000, 0x200000, CRC(bf4d7272) SHA1(c7c7b3620e7b3176644b6784ee36e679c9e31cc1) )
4487
4488   ROM_REGION( 0x4000, "nvram", 0 ) // default eeprom
4489   ROM_LOAD( "timecris_defaults.nv", 0x0000, 0x4000, CRC(02eeea95) SHA1(0c3c20c9dc7c1e1d5affb99e305e671b32f8e29b) )
44904492ROM_END
44914493
44924494ROM_START( timecrisa )
r18700r18701
45404542   ROM_REGION( 0x1000000, "c352", 0 ) // Samples
45414543   ROM_LOAD( "ts1wavea.2l", 0x000000, 0x400000, CRC(d1123301) SHA1(4bf1fd746fef4e6befa63c61a761971d729e1573) )
45424544   ROM_LOAD( "ts1waveb.1l", 0x800000, 0x200000, CRC(bf4d7272) SHA1(c7c7b3620e7b3176644b6784ee36e679c9e31cc1) )
4543
4544   ROM_REGION( 0x4000, "nvram", 0 ) // default eeprom
4545   ROM_LOAD( "timecris_defaults.nv", 0x0000, 0x4000, CRC(02eeea95) SHA1(0c3c20c9dc7c1e1d5affb99e305e671b32f8e29b) )
45464545ROM_END
45474546
45484547ROM_START( tokyowar )
r18700r18701
50805079   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
50815080   PORT_SERVICE( 0x80, IP_ACTIVE_LOW )
50825081
5083   PORT_START( "LIGHTX" )
5084   PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_X ) PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_SENSITIVITY(48) PORT_KEYDELTA(4)
5085   PORT_START( "LIGHTY" )
5086   PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_Y ) PORT_CROSSHAIR(Y, 1.0, 0.0, 0) PORT_SENSITIVITY(64) PORT_KEYDELTA(4)
5082   PORT_START( "LIGHTX" ) // tuned for CRT
5083   PORT_BIT( 0xfff, 0x80, IPT_LIGHTGUN_X ) PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_MINMAX(68, 68+626) PORT_SENSITIVITY(48) PORT_KEYDELTA(10)
5084   PORT_START( "LIGHTY" ) // tuned for CRT - can't shoot below the statusbar?
5085   PORT_BIT( 0xfff, 0x80, IPT_LIGHTGUN_Y ) PORT_CROSSHAIR(Y, 1.0, 0.0, 0) PORT_MINMAX(43, 43+241) PORT_SENSITIVITY(64) PORT_KEYDELTA(4)
50875086
50885087   PORT_START("MCUP5A")
50895088   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
r18700r18701
56705669GAME( 1995, airco22b, 0,         namcos22s, airco22, namcos22_state,  airco22,  ROT0, "Namco", "Air Combat 22 (Rev. ACS1 Ver.B, Japan)"    , GAME_IMPERFECT_SOUND|GAME_IMPERFECT_GRAPHICS|GAME_NOT_WORKING ) // boots but missing sprite clear DMA?
56715670GAME( 1995, cybrcycc, 0,         namcos22s, cybrcycc, namcos22_state, cybrcyc,  ROT0, "Namco", "Cyber Cycles (Rev. CB2 Ver.C)"             , GAME_IMPERFECT_SOUND|GAME_IMPERFECT_GRAPHICS ) // 95/04/04
56725671GAME( 1995, dirtdash, 0,         namcos22s, dirtdash, namcos22_state, dirtdash, ROT0, "Namco", "Dirt Dash (Rev. DT2)"                      , GAME_IMPERFECT_SOUND|GAME_IMPERFECT_GRAPHICS ) // 95/12/20 20:01:56
5673GAME( 1995, timecris, 0,         namcos22s, timecris, namcos22_state, timecris, ROT0, "Namco", "Time Crisis (Rev. TS2 Ver.B)"              , GAME_IMPERFECT_SOUND|GAME_IMPERFECT_GRAPHICS ) // 96/04/02 18:48:00
5674GAME( 1995, timecrisa,timecris,  namcos22s, timecris, namcos22_state, timecris, ROT0, "Namco", "Time Crisis (Rev. TS2 Ver.A)"              , GAME_IMPERFECT_SOUND|GAME_IMPERFECT_GRAPHICS ) // 96/01/08 18:56:09
5672GAME( 1995, timecris, 0,         timecris,  timecris, namcos22_state, timecris, ROT0, "Namco", "Time Crisis (Rev. TS2 Ver.B)"              , GAME_IMPERFECT_SOUND|GAME_IMPERFECT_GRAPHICS ) // 96/04/02 18:48:00
5673GAME( 1995, timecrisa,timecris,  timecris,  timecris, namcos22_state, timecris, ROT0, "Namco", "Time Crisis (Rev. TS2 Ver.A)"              , GAME_IMPERFECT_SOUND|GAME_IMPERFECT_GRAPHICS ) // 96/01/08 18:56:09
56755674GAME( 1996, propcycl, 0,         namcos22s, propcycl, namcos22_state, propcycl, ROT0, "Namco", "Prop Cycle (Rev. PR2 Ver.A)"               , GAME_IMPERFECT_SOUND|GAME_IMPERFECT_GRAPHICS ) // 96/06/18 21:22:13
56765675GAME( 1996, alpinesa, 0,         namcos22s, alpiner, namcos22_state,  alpinesa, ROT0, "Namco", "Alpine Surfer (Rev. AF2 Ver.A)"            , GAME_IMPERFECT_SOUND|GAME_IMPERFECT_GRAPHICS|GAME_NOT_WORKING ) // 96/07/01 15:19:23. major gfx problems, slave dsp?
56775676GAME( 1996, tokyowar, 0,         namcos22s, tokyowar, namcos22_state, tokyowar, ROT0, "Namco", "Tokyo Wars (Rev. TW2 Ver.A)"               , GAME_IMPERFECT_SOUND|GAME_IMPERFECT_GRAPHICS|GAME_NOT_WORKING ) // 96/09/03 14:08:47. near-invincible tanks, maybe related to timecris helicopter bug?
trunk/src/mame/drivers/namcos23.c
r18700r18701
17821782         {
17831783            m_ctl_led = data & 0xff;
17841784            for (int i = 0; i < 8; i++)
1785               output_set_lamp_value(i, m_ctl_led>>i & 1);
1785               output_set_lamp_value(i, (~data<<i & 0x80) ? 0 : 1);
17861786         }
17871787         break;
17881788
r18700r18701
29982998static INPUT_PORTS_START( timecrs2 )
29992999   PORT_INCLUDE( s23 )
30003000
3001   PORT_START("LIGHTX")
3002   PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_X ) PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_SENSITIVITY(48) PORT_KEYDELTA(4)
3003   PORT_START("LIGHTY")
3004   PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_Y ) PORT_CROSSHAIR(Y, 1.0, 0.0, 0) PORT_SENSITIVITY(64) PORT_KEYDELTA(4)
3001   PORT_START("LIGHTX") // tuned for CRT
3002   PORT_BIT( 0xfff, 91+733/2, IPT_LIGHTGUN_X ) PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_MINMAX(91, 91+733) PORT_SENSITIVITY(48) PORT_KEYDELTA(12)
3003   PORT_START("LIGHTY") // tuned for CRT - can't shoot below the statusbar?
3004   PORT_BIT( 0xfff, 38+247/2, IPT_LIGHTGUN_Y ) PORT_CROSSHAIR(Y, 1.0, 0.0, 0) PORT_MINMAX(38, 38+247) PORT_SENSITIVITY(64) PORT_KEYDELTA(4)
30053005INPUT_PORTS_END
30063006
30073007static INPUT_PORTS_START( ss23 )
r18700r18701
31463146READ8_MEMBER(namcos23_state::s23_iob_p6_r)
31473147{
31483148   // d4 is service button
3149   UINT8 sb = ioport("SERVICE")->read() & 1;
3149   UINT8 sb = (ioport("SERVICE")->read() & 1) << 4;
31503150   // other bits: unknown
31513151
3152   return sb<<4;
3152   return sb | 0;
31533153}
31543154
31553155WRITE8_MEMBER(namcos23_state::s23_iob_p6_w)
r18700r18701
31593159
31603160READ8_MEMBER(namcos23_state::s23_gun_r)
31613161{
3162   UINT16 xpos = ioport("LIGHTX")->read_safe(0) * 640 / 0xff + 0x80;
3163   UINT16 ypos = ioport("LIGHTY")->read_safe(0) * 240 / 0xff + 0x20;
3162   UINT16 xpos = ioport("LIGHTX")->read();
3163   UINT16 ypos = ioport("LIGHTY")->read();
31643164
3165   // note: will need angle adjustments for accurate aiming at screen sides
31663165   switch(offset)
31673166   {
31683167      case 0: return xpos&0xff;

Previous 199869 Revisions Next


© 1997-2024 The MAME Team