next: mouse/nmi fixes [O. Galibert]

This commit is contained in:
Olivier Galibert 2014-04-20 11:12:38 +00:00
parent d277997f00
commit 2e61d01be8
2 changed files with 18 additions and 8 deletions

View File

@ -868,10 +868,12 @@ void next_state::machine_reset()
void next_state::vblank_w(screen_device &screen, bool vblank_state)
{
#if 1
if(screen_color)
irq_set(13, vblank_state);
else
irq_set(5, vblank_state);
#endif
}
static ADDRESS_MAP_START( next_mem, AS_PROGRAM, 32, next_state )

View File

@ -60,6 +60,7 @@ void nextkbd_device::device_reset()
fifo_size = 0;
memset(fifo, 0, sizeof(fifo));
modifiers_state = 0;
nmi_active = false;
poll_timer->adjust(attotime::from_hz(200), 0, attotime::from_hz(200));
}
@ -88,6 +89,15 @@ void nextkbd_device::update_mouse(bool force_update)
INT32 deltax = -(cur_mousex - prev_mousex);
INT32 deltay = -(cur_mousey - prev_mousey);
if(deltax >= 128)
deltax -= 256;
if(deltax < -128)
deltax += 256;
if(deltay >= 128)
deltay -= 256;
if(deltay < -128)
deltay += 256;
prev_mousex = cur_mousex;
prev_mousey = cur_mousey;
prev_mousebtn = cur_mousebtn;
@ -199,11 +209,6 @@ WRITE8_MEMBER( nextkbd_device::ctrl_kms_w )
UINT8 diff = old ^ ctrl_kms;
logerror("%s: ctrl_kms_w %02x | %02x (%08x)\n", tag(), ctrl_kms, diff, (unsigned int)space.device().safe_pc());
if((data & C_KBD_NMI) && (ctrl_kms & C_KBD_NMI)) {
ctrl_kms &= ~C_KBD_NMI;
int_nmi_cb(false);
}
}
WRITE8_MEMBER( nextkbd_device::ctrl_dma_w )
@ -248,8 +253,11 @@ INPUT_CHANGED_MEMBER( nextkbd_device::update )
if(!newval)
val |= D_KBD_KEYDOWN;
if(val == 0x8826 || val == 0x884a) {
ctrl_kms &= ~C_KBD_NMI;
nmi_active = true;
int_nmi_cb(true);
} else if(nmi_active) {
nmi_active = false;
int_nmi_cb(false);
}
fifo_push(val | D_MASTER | km_address);
send();
@ -426,10 +434,10 @@ static INPUT_PORTS_START(nextkbd_keymap)
PORT_BIT(0xfffffffe, IP_ACTIVE_HIGH, IPT_UNUSED) PORT_CHANGED_MEMBER(DEVICE_SELF, nextkbd_device, update, 4)
PORT_START("mousex")
PORT_BIT( 0x007f, 0, IPT_MOUSE_X ) PORT_SENSITIVITY(100) PORT_KEYDELTA(5) PORT_PLAYER(1)
PORT_BIT( 0x00ff, 0, IPT_MOUSE_X ) PORT_SENSITIVITY(100) PORT_KEYDELTA(5) PORT_PLAYER(1)
PORT_START("mousey")
PORT_BIT( 0x007f, 0, IPT_MOUSE_Y ) PORT_SENSITIVITY(100) PORT_KEYDELTA(5) PORT_PLAYER(1)
PORT_BIT( 0x00ff, 0, IPT_MOUSE_Y ) PORT_SENSITIVITY(100) PORT_KEYDELTA(5) PORT_PLAYER(1)
PORT_START("mousebtn")
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)