This means you are considering to adapt your beautiful game to EnterMice movement?, the honour to make the first game that use a mouse in the EP history....?
But wait, I already know your actual answer....
Meanwhile, let me try to convince you.....
This is a MSX mouse routine(Boxsoft, Entermice, all are the same), that only reads X increment and two buttons. It must be called at least every 1/50 sec or more to work. It takes almost half the time of the entire MSX routine, only two cycles of lectures on the B6h port, and is used also to read the Joystick 1 at the same time:
MSX:
ld hl, X_REL ;first byte, X displacement since last lecture
ld b,3 ;long delay
di
call READ_8BIT
ei
; Y movement not used here
xor a
out (0B5h), a ; row 0
in a, (0B6h)
and 7 ;bits 2, 1 and 0
xor 7
srl a ; here the status of J column is on carry
rl c ; J column is saved in c
srl a
rl b ; K column is saved in b
Inc hl
ld (hl), a ; L column is the right SECBUTT_STATUS
inc hl
ld a,b
ld (hl), a ; K column is the Left MAINBUTT_STATUS
inc hl
ld a,c
ld (hl), a ; Joy 1 movement and fire is now on JOY1_STATUS(000RLDUF)
ret
WAIT:
nop
nop
nop
dec b
jr nz, WAIT
ret
;
READ_8BIT: ld a,2 ;RTS low
out (0B7h), a
call WAIT_READ_4BIT ; read four higher bits
xor a ;RTS high
out (0B7h), a
ld b, 2 ;short delay
ld c,0; c is reset as we only need to read joy 1 on the second nibble
WAIT_READ_4BIT:call WAIT ;leaves B=0
READ_4BIT:
ld d, b ;d=0
ld b, 4
READ_LOOP:
ld a, b
out (0B5h), a
in a, (0B6h)
rra
ccf ; we need joy 1 port complemented
rl c ;data is read from L column
rra
rl d ;data is read from K column
djnz READ_LOOP
ld a, d
rld
ret
X_REL: db 0
SECBUTT_STATUS: db 0
MAINBUTT_STATUS; db 0
JOY1_STATUS: db 0
Still not tested. Once returned you can limit the increments to make the game more hard, like with the joystick.