mirror of
https://github.com/holub/mame
synced 2025-04-26 10:13:37 +03:00
added armadillo trackball
This commit is contained in:
parent
5952ee950c
commit
561c7ea8d1
@ -2938,7 +2938,14 @@ void namcos22_state::machine_reset()
|
|||||||
InitDSP(machine());
|
InitDSP(machine());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void namcos22_state::machine_start()
|
||||||
|
{
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
||||||
static MACHINE_CONFIG_START( namcos22s, namcos22_state )
|
static MACHINE_CONFIG_START( namcos22s, namcos22_state )
|
||||||
|
|
||||||
|
/* basic machine hardware */
|
||||||
MCFG_CPU_ADD("maincpu", M68EC020,SS22_MASTER_CLOCK/2)
|
MCFG_CPU_ADD("maincpu", M68EC020,SS22_MASTER_CLOCK/2)
|
||||||
MCFG_CPU_PROGRAM_MAP(namcos22s_am)
|
MCFG_CPU_PROGRAM_MAP(namcos22s_am)
|
||||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", namcos22_state, namcos22s_interrupt)
|
MCFG_CPU_VBLANK_INT_DRIVER("screen", namcos22_state, namcos22s_interrupt)
|
||||||
@ -2965,6 +2972,8 @@ static MACHINE_CONFIG_START( namcos22s, namcos22_state )
|
|||||||
// MCFG_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
|
// MCFG_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
|
||||||
|
|
||||||
MCFG_NVRAM_HANDLER(namcos22)
|
MCFG_NVRAM_HANDLER(namcos22)
|
||||||
|
|
||||||
|
/* video hardware */
|
||||||
MCFG_SCREEN_ADD("screen", RASTER)
|
MCFG_SCREEN_ADD("screen", RASTER)
|
||||||
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
|
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
|
||||||
MCFG_SCREEN_UPDATE_DRIVER(namcos22_state, screen_update_namcos22s)
|
MCFG_SCREEN_UPDATE_DRIVER(namcos22_state, screen_update_namcos22s)
|
||||||
@ -2986,10 +2995,66 @@ MACHINE_CONFIG_END
|
|||||||
|
|
||||||
static MACHINE_CONFIG_DERIVED( timecris, namcos22s )
|
static MACHINE_CONFIG_DERIVED( timecris, namcos22s )
|
||||||
|
|
||||||
|
/* basic machine hardware */
|
||||||
MCFG_CPU_MODIFY("maincpu")
|
MCFG_CPU_MODIFY("maincpu")
|
||||||
MCFG_CPU_PROGRAM_MAP(timecris_am)
|
MCFG_CPU_PROGRAM_MAP(timecris_am)
|
||||||
MACHINE_CONFIG_END
|
MACHINE_CONFIG_END
|
||||||
|
|
||||||
|
|
||||||
|
TIMER_CALLBACK_MEMBER(namcos22_state::adillor_trackball_interrupt)
|
||||||
|
{
|
||||||
|
generic_pulse_irq_line(m_mcu, param ? M37710_LINE_TIMERA2TICK : M37710_LINE_TIMERA3TICK, 1);
|
||||||
|
m_ar_tb_interrupt[param]->adjust(m_ar_tb_reload[param], param);
|
||||||
|
}
|
||||||
|
|
||||||
|
TIMER_DEVICE_CALLBACK_MEMBER(namcos22_state::adillor_trackball_update)
|
||||||
|
{
|
||||||
|
// arbitrary timer for reading trackball
|
||||||
|
for (int axis = 0; axis < 2; axis++)
|
||||||
|
{
|
||||||
|
UINT16 ipt = ioport(axis ? "TRACKY" : "TRACKX")->read();
|
||||||
|
if (ipt > 0 && ipt < 0x8000)
|
||||||
|
{
|
||||||
|
// optical trackball, tied to mcu A2/A3 timer (speed determines frequency)
|
||||||
|
// note that it is rotated by 45 degrees, so instead of axes like (+), they are like (x)
|
||||||
|
// (not yet tested on a real trackball, values below still need to be tweaked)
|
||||||
|
const int cap = 256;
|
||||||
|
const int maxspeed = 500;
|
||||||
|
const int sensitivity = 50;
|
||||||
|
|
||||||
|
if (ipt > cap) ipt = cap;
|
||||||
|
ipt = cap - ipt;
|
||||||
|
|
||||||
|
attotime freq = attotime::from_usec(maxspeed + sensitivity * ipt);
|
||||||
|
m_ar_tb_reload[axis] = freq;
|
||||||
|
m_ar_tb_interrupt[axis]->adjust(min(freq, m_ar_tb_interrupt[axis]->remaining()), axis);
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// backwards or not moving
|
||||||
|
m_ar_tb_reload[axis] = attotime::never;
|
||||||
|
m_ar_tb_interrupt[axis]->adjust(attotime::never, axis);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
MACHINE_START_MEMBER(namcos22_state,adillor)
|
||||||
|
{
|
||||||
|
machine_start();
|
||||||
|
|
||||||
|
for (int axis = 0; axis < 2; axis++)
|
||||||
|
m_ar_tb_interrupt[axis] = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(namcos22_state::adillor_trackball_interrupt),this));
|
||||||
|
}
|
||||||
|
|
||||||
|
static MACHINE_CONFIG_DERIVED( adillor, namcos22s )
|
||||||
|
|
||||||
|
/* basic machine hardware */
|
||||||
|
MCFG_TIMER_DRIVER_ADD_PERIODIC("ar_tb_upd", namcos22_state, adillor_trackball_update, attotime::from_msec(20))
|
||||||
|
|
||||||
|
MCFG_MACHINE_START_OVERRIDE(namcos22_state,adillor)
|
||||||
|
MACHINE_CONFIG_END
|
||||||
|
|
||||||
/*********************************************************************************/
|
/*********************************************************************************/
|
||||||
|
|
||||||
/* Namco System 22 */
|
/* Namco System 22 */
|
||||||
@ -3197,6 +3262,8 @@ ADDRESS_MAP_END
|
|||||||
|
|
||||||
|
|
||||||
static MACHINE_CONFIG_START( namcos22, namcos22_state )
|
static MACHINE_CONFIG_START( namcos22, namcos22_state )
|
||||||
|
|
||||||
|
/* basic machine hardware */
|
||||||
MCFG_CPU_ADD("maincpu", M68020,SS22_MASTER_CLOCK/2) /* 25 MHz? */
|
MCFG_CPU_ADD("maincpu", M68020,SS22_MASTER_CLOCK/2) /* 25 MHz? */
|
||||||
MCFG_CPU_PROGRAM_MAP(namcos22_am)
|
MCFG_CPU_PROGRAM_MAP(namcos22_am)
|
||||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", namcos22_state, namcos22_interrupt)
|
MCFG_CPU_VBLANK_INT_DRIVER("screen", namcos22_state, namcos22_interrupt)
|
||||||
@ -3220,6 +3287,8 @@ static MACHINE_CONFIG_START( namcos22, namcos22_state )
|
|||||||
// MCFG_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
|
// MCFG_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
|
||||||
|
|
||||||
MCFG_NVRAM_HANDLER(namcos22)
|
MCFG_NVRAM_HANDLER(namcos22)
|
||||||
|
|
||||||
|
/* video hardware */
|
||||||
MCFG_SCREEN_ADD("screen", RASTER)
|
MCFG_SCREEN_ADD("screen", RASTER)
|
||||||
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
|
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
|
||||||
MCFG_SCREEN_UPDATE_DRIVER(namcos22_state, screen_update_namcos22)
|
MCFG_SCREEN_UPDATE_DRIVER(namcos22_state, screen_update_namcos22)
|
||||||
@ -5111,6 +5180,12 @@ static INPUT_PORTS_START( adillor )
|
|||||||
PORT_START("MCUP5B")
|
PORT_START("MCUP5B")
|
||||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 )
|
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 )
|
||||||
PORT_BIT( 0xfe, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
PORT_BIT( 0xfe, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||||
|
|
||||||
|
PORT_START("TRACKX")
|
||||||
|
PORT_BIT( 0xffff, 0x0000, IPT_TRACKBALL_X ) PORT_SENSITIVITY(100) PORT_KEYDELTA(200) PORT_RESET
|
||||||
|
|
||||||
|
PORT_START("TRACKY")
|
||||||
|
PORT_BIT( 0xffff, 0x0000, IPT_TRACKBALL_Y ) PORT_SENSITIVITY(100) PORT_KEYDELTA(200) PORT_RESET PORT_REVERSE
|
||||||
INPUT_PORTS_END /* Armadillo Racing */
|
INPUT_PORTS_END /* Armadillo Racing */
|
||||||
|
|
||||||
static INPUT_PORTS_START( propcycl )
|
static INPUT_PORTS_START( propcycl )
|
||||||
@ -5801,4 +5876,4 @@ GAME( 1996, tokyowar, 0, namcos22s, tokyowar, namcos22_state, tokyowar,
|
|||||||
GAME( 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
|
GAME( 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
|
||||||
GAME( 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
|
GAME( 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
|
||||||
GAME( 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
|
GAME( 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
|
||||||
GAME( 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
|
GAME( 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
|
||||||
|
@ -76,7 +76,8 @@ public:
|
|||||||
optional_shared_ptr<UINT32> m_czram;
|
optional_shared_ptr<UINT32> m_czram;
|
||||||
|
|
||||||
int m_mbEnableDspIrqs;
|
int m_mbEnableDspIrqs;
|
||||||
|
attotime m_ar_tb_reload[2];
|
||||||
|
emu_timer *m_ar_tb_interrupt[2];
|
||||||
UINT16 m_mMasterBIOZ;
|
UINT16 m_mMasterBIOZ;
|
||||||
UINT32 *m_mpPointRAM;
|
UINT32 *m_mpPointRAM;
|
||||||
UINT32 m_old_coin_state;
|
UINT32 m_old_coin_state;
|
||||||
@ -254,6 +255,8 @@ public:
|
|||||||
DECLARE_DRIVER_INIT(alpinesa);
|
DECLARE_DRIVER_INIT(alpinesa);
|
||||||
TILE_GET_INFO_MEMBER(TextTilemapGetInfo);
|
TILE_GET_INFO_MEMBER(TextTilemapGetInfo);
|
||||||
virtual void machine_reset();
|
virtual void machine_reset();
|
||||||
|
virtual void machine_start();
|
||||||
|
DECLARE_MACHINE_START(adillor);
|
||||||
DECLARE_VIDEO_START(namcos22s);
|
DECLARE_VIDEO_START(namcos22s);
|
||||||
DECLARE_VIDEO_START(namcos22);
|
DECLARE_VIDEO_START(namcos22);
|
||||||
DECLARE_VIDEO_START(common);
|
DECLARE_VIDEO_START(common);
|
||||||
@ -261,6 +264,8 @@ public:
|
|||||||
UINT32 screen_update_namcos22(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
|
UINT32 screen_update_namcos22(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
|
||||||
INTERRUPT_GEN_MEMBER(namcos22s_interrupt);
|
INTERRUPT_GEN_MEMBER(namcos22s_interrupt);
|
||||||
INTERRUPT_GEN_MEMBER(namcos22_interrupt);
|
INTERRUPT_GEN_MEMBER(namcos22_interrupt);
|
||||||
|
TIMER_DEVICE_CALLBACK_MEMBER(adillor_trackball_update);
|
||||||
|
TIMER_CALLBACK_MEMBER(adillor_trackball_interrupt);
|
||||||
TIMER_CALLBACK_MEMBER(alpine_steplock_callback);
|
TIMER_CALLBACK_MEMBER(alpine_steplock_callback);
|
||||||
TIMER_DEVICE_CALLBACK_MEMBER(dsp_master_serial_irq);
|
TIMER_DEVICE_CALLBACK_MEMBER(dsp_master_serial_irq);
|
||||||
TIMER_DEVICE_CALLBACK_MEMBER(dsp_slave_serial_irq);
|
TIMER_DEVICE_CALLBACK_MEMBER(dsp_slave_serial_irq);
|
||||||
|
Loading…
Reference in New Issue
Block a user