mirror of
https://github.com/holub/mame
synced 2025-06-15 17:07:05 +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)
|
void next_state::vblank_w(screen_device &screen, bool vblank_state)
|
||||||
{
|
{
|
||||||
|
#if 1
|
||||||
if(screen_color)
|
if(screen_color)
|
||||||
irq_set(13, vblank_state);
|
irq_set(13, vblank_state);
|
||||||
else
|
else
|
||||||
irq_set(5, vblank_state);
|
irq_set(5, vblank_state);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static ADDRESS_MAP_START( next_mem, AS_PROGRAM, 32, next_state )
|
static ADDRESS_MAP_START( next_mem, AS_PROGRAM, 32, next_state )
|
||||||
|
@ -60,6 +60,7 @@ void nextkbd_device::device_reset()
|
|||||||
fifo_size = 0;
|
fifo_size = 0;
|
||||||
memset(fifo, 0, sizeof(fifo));
|
memset(fifo, 0, sizeof(fifo));
|
||||||
modifiers_state = 0;
|
modifiers_state = 0;
|
||||||
|
nmi_active = false;
|
||||||
poll_timer->adjust(attotime::from_hz(200), 0, attotime::from_hz(200));
|
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 deltax = -(cur_mousex - prev_mousex);
|
||||||
INT32 deltay = -(cur_mousey - prev_mousey);
|
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_mousex = cur_mousex;
|
||||||
prev_mousey = cur_mousey;
|
prev_mousey = cur_mousey;
|
||||||
prev_mousebtn = cur_mousebtn;
|
prev_mousebtn = cur_mousebtn;
|
||||||
@ -199,11 +209,6 @@ WRITE8_MEMBER( nextkbd_device::ctrl_kms_w )
|
|||||||
UINT8 diff = old ^ ctrl_kms;
|
UINT8 diff = old ^ ctrl_kms;
|
||||||
|
|
||||||
logerror("%s: ctrl_kms_w %02x | %02x (%08x)\n", tag(), ctrl_kms, diff, (unsigned int)space.device().safe_pc());
|
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 )
|
WRITE8_MEMBER( nextkbd_device::ctrl_dma_w )
|
||||||
@ -248,8 +253,11 @@ INPUT_CHANGED_MEMBER( nextkbd_device::update )
|
|||||||
if(!newval)
|
if(!newval)
|
||||||
val |= D_KBD_KEYDOWN;
|
val |= D_KBD_KEYDOWN;
|
||||||
if(val == 0x8826 || val == 0x884a) {
|
if(val == 0x8826 || val == 0x884a) {
|
||||||
ctrl_kms &= ~C_KBD_NMI;
|
nmi_active = true;
|
||||||
int_nmi_cb(true);
|
int_nmi_cb(true);
|
||||||
|
} else if(nmi_active) {
|
||||||
|
nmi_active = false;
|
||||||
|
int_nmi_cb(false);
|
||||||
}
|
}
|
||||||
fifo_push(val | D_MASTER | km_address);
|
fifo_push(val | D_MASTER | km_address);
|
||||||
send();
|
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_BIT(0xfffffffe, IP_ACTIVE_HIGH, IPT_UNUSED) PORT_CHANGED_MEMBER(DEVICE_SELF, nextkbd_device, update, 4)
|
||||||
|
|
||||||
PORT_START("mousex")
|
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_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_START("mousebtn")
|
||||||
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
|
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
|
||||||
|
Loading…
Reference in New Issue
Block a user