mirror of
https://github.com/holub/mame
synced 2025-06-05 20:33:45 +03:00
next: mouse/nmi fixes [O. Galibert]
This commit is contained in:
parent
d277997f00
commit
2e61d01be8
@ -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 )
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user