Previous 199869 Revisions Next

r19839 Wednesday 26th December, 2012 at 17:56:51 UTC by hap
added armadillo trackball
[src/mame/drivers]namcos22.c
[src/mame/includes]namcos22.h

trunk/src/mame/includes/namcos22.h
r19838r19839
7676   optional_shared_ptr<UINT32> m_czram;
7777
7878   int m_mbEnableDspIrqs;
79
79   attotime m_ar_tb_reload[2];
80   emu_timer *m_ar_tb_interrupt[2];
8081   UINT16 m_mMasterBIOZ;
8182   UINT32 *m_mpPointRAM;
8283   UINT32 m_old_coin_state;
r19838r19839
254255   DECLARE_DRIVER_INIT(alpinesa);
255256   TILE_GET_INFO_MEMBER(TextTilemapGetInfo);
256257   virtual void machine_reset();
258   virtual void machine_start();
259   DECLARE_MACHINE_START(adillor);
257260   DECLARE_VIDEO_START(namcos22s);
258261   DECLARE_VIDEO_START(namcos22);
259262   DECLARE_VIDEO_START(common);
r19838r19839
261264   UINT32 screen_update_namcos22(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
262265   INTERRUPT_GEN_MEMBER(namcos22s_interrupt);
263266   INTERRUPT_GEN_MEMBER(namcos22_interrupt);
267   TIMER_DEVICE_CALLBACK_MEMBER(adillor_trackball_update);
268   TIMER_CALLBACK_MEMBER(adillor_trackball_interrupt);
264269   TIMER_CALLBACK_MEMBER(alpine_steplock_callback);
265270   TIMER_DEVICE_CALLBACK_MEMBER(dsp_master_serial_irq);
266271   TIMER_DEVICE_CALLBACK_MEMBER(dsp_slave_serial_irq);
trunk/src/mame/drivers/namcos22.c
r19838r19839
29382938   InitDSP(machine());
29392939}
29402940
2941void namcos22_state::machine_start()
2942{
2943   ;
2944}
2945
29412946static MACHINE_CONFIG_START( namcos22s, namcos22_state )
2947
2948   /* basic machine hardware */
29422949   MCFG_CPU_ADD("maincpu", M68EC020,SS22_MASTER_CLOCK/2)
29432950   MCFG_CPU_PROGRAM_MAP(namcos22s_am)
29442951   MCFG_CPU_VBLANK_INT_DRIVER("screen", namcos22_state,  namcos22s_interrupt)
r19838r19839
29652972//  MCFG_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
29662973
29672974   MCFG_NVRAM_HANDLER(namcos22)
2975
2976   /* video hardware */
29682977   MCFG_SCREEN_ADD("screen", RASTER)
29692978   MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
29702979   MCFG_SCREEN_UPDATE_DRIVER(namcos22_state, screen_update_namcos22s)
r19838r19839
29862995
29872996static MACHINE_CONFIG_DERIVED( timecris, namcos22s )
29882997
2998   /* basic machine hardware */
29892999   MCFG_CPU_MODIFY("maincpu")
29903000   MCFG_CPU_PROGRAM_MAP(timecris_am)
29913001MACHINE_CONFIG_END
29923002
3003
3004TIMER_CALLBACK_MEMBER(namcos22_state::adillor_trackball_interrupt)
3005{
3006   generic_pulse_irq_line(m_mcu, param ? M37710_LINE_TIMERA2TICK : M37710_LINE_TIMERA3TICK, 1);
3007   m_ar_tb_interrupt[param]->adjust(m_ar_tb_reload[param], param);
3008}
3009
3010TIMER_DEVICE_CALLBACK_MEMBER(namcos22_state::adillor_trackball_update)
3011{
3012   // arbitrary timer for reading trackball
3013   for (int axis = 0; axis < 2; axis++)
3014   {
3015      UINT16 ipt = ioport(axis ? "TRACKY" : "TRACKX")->read();
3016      if (ipt > 0 && ipt < 0x8000)
3017      {
3018         // optical trackball, tied to mcu A2/A3 timer (speed determines frequency)
3019         // note that it is rotated by 45 degrees, so instead of axes like (+), they are like (x)
3020         // (not yet tested on a real trackball, values below still need to be tweaked)
3021         const int cap = 256;
3022         const int maxspeed = 500;
3023         const int sensitivity = 50;
3024         
3025         if (ipt > cap) ipt = cap;
3026         ipt = cap - ipt;
3027
3028         attotime freq = attotime::from_usec(maxspeed + sensitivity * ipt);
3029         m_ar_tb_reload[axis] = freq;
3030         m_ar_tb_interrupt[axis]->adjust(min(freq, m_ar_tb_interrupt[axis]->remaining()), axis);
3031         
3032      }
3033      else
3034      {
3035         // backwards or not moving
3036         m_ar_tb_reload[axis] = attotime::never;
3037         m_ar_tb_interrupt[axis]->adjust(attotime::never, axis);
3038      }
3039   }
3040}
3041
3042MACHINE_START_MEMBER(namcos22_state,adillor)
3043{
3044   machine_start();
3045
3046   for (int axis = 0; axis < 2; axis++)
3047      m_ar_tb_interrupt[axis] = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(namcos22_state::adillor_trackball_interrupt),this));
3048}
3049
3050static MACHINE_CONFIG_DERIVED( adillor, namcos22s )
3051
3052   /* basic machine hardware */
3053   MCFG_TIMER_DRIVER_ADD_PERIODIC("ar_tb_upd", namcos22_state, adillor_trackball_update, attotime::from_msec(20))
3054   
3055   MCFG_MACHINE_START_OVERRIDE(namcos22_state,adillor)
3056MACHINE_CONFIG_END
3057
29933058/*********************************************************************************/
29943059
29953060/* Namco System 22 */
r19838r19839
31973262
31983263
31993264static MACHINE_CONFIG_START( namcos22, namcos22_state )
3265
3266   /* basic machine hardware */
32003267   MCFG_CPU_ADD("maincpu", M68020,SS22_MASTER_CLOCK/2) /* 25 MHz? */
32013268   MCFG_CPU_PROGRAM_MAP(namcos22_am)
32023269   MCFG_CPU_VBLANK_INT_DRIVER("screen", namcos22_state,  namcos22_interrupt)
r19838r19839
32203287//  MCFG_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
32213288
32223289   MCFG_NVRAM_HANDLER(namcos22)
3290
3291   /* video hardware */
32233292   MCFG_SCREEN_ADD("screen", RASTER)
32243293   MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
32253294   MCFG_SCREEN_UPDATE_DRIVER(namcos22_state, screen_update_namcos22)
r19838r19839
51115180   PORT_START("MCUP5B")
51125181   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 )
51135182   PORT_BIT( 0xfe, IP_ACTIVE_LOW, IPT_UNKNOWN )
5183
5184   PORT_START("TRACKX")
5185    PORT_BIT( 0xffff, 0x0000, IPT_TRACKBALL_X ) PORT_SENSITIVITY(100) PORT_KEYDELTA(200) PORT_RESET
5186
5187   PORT_START("TRACKY")
5188    PORT_BIT( 0xffff, 0x0000, IPT_TRACKBALL_Y ) PORT_SENSITIVITY(100) PORT_KEYDELTA(200) PORT_RESET PORT_REVERSE
51145189INPUT_PORTS_END /* Armadillo Racing */
51155190
51165191static INPUT_PORTS_START( propcycl )
r19838r19839
58015876GAME( 1996, aquajet,  0,         namcos22s, aquajet,   namcos22_state, aquajet,  ROT0, "Namco", "Aqua Jet (Rev. AJ2 Ver.B)"              , GAME_IMPERFECT_SOUND|GAME_IMPERFECT_GRAPHICS ) // 96/09/20 14:28:30
58025877GAME( 1996, alpinr2b, 0,         namcos22s, alpiner,   namcos22_state, alpiner2, ROT0, "Namco", "Alpine Racer 2 (Rev. ARS2 Ver.B)"       , GAME_IMPERFECT_SOUND|GAME_IMPERFECT_GRAPHICS ) // 97/01/10 17:10:59
58035878GAME( 1996, alpinr2a, alpinr2b,  namcos22s, alpiner,   namcos22_state, alpiner2, ROT0, "Namco", "Alpine Racer 2 (Rev. ARS2 Ver.A)"       , GAME_IMPERFECT_SOUND|GAME_IMPERFECT_GRAPHICS ) // 96/12/06 13:45:05
5804GAME( 1996, adillor,  0,         namcos22s, adillor,   namcos22_state, adillor,  ROT0, "Namco", "Armadillo Racing (Rev. AM1 Ver.A)"      , GAME_IMPERFECT_SOUND|GAME_IMPERFECT_GRAPHICS|GAME_NOT_WORKING ) // 97/04/07 19:19:41. needs trackball hookup
5879GAME( 1996, adillor,  0,         adillor,   adillor,   namcos22_state, adillor,  ROT0, "Namco", "Armadillo Racing (Rev. AM1 Ver.A)"      , GAME_IMPERFECT_SOUND|GAME_IMPERFECT_GRAPHICS ) // 97/04/07 19:19:41

Previous 199869 Revisions Next


© 1997-2024 The MAME Team