summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--io.c10
-rw-r--r--menu.s685
2 files changed, 8 insertions, 7 deletions
diff --git a/io.c b/io.c
index bc2b0ce..cab81fb 100644
--- a/io.c
+++ b/io.c
@@ -1229,7 +1229,7 @@ uint8_t io_data_read(io_port * port, uint32_t current_cycle)
//it would be unfortunate if our event handler updated cur_x or cur_y in the middle
//of the mouse poll sequence, so we save the delta here
port->device.mouse.delta_x = port->device.mouse.cur_x - port->device.mouse.last_read_x;
- port->device.mouse.delta_y = port->device.mouse.cur_y - port->device.mouse.last_read_y;
+ port->device.mouse.delta_y = port->device.mouse.last_read_y - port->device.mouse.cur_y;
if (port->device.mouse.delta_y > 255 || port->device.mouse.delta_y < -255) {
input |= 8;
}
@@ -1247,16 +1247,16 @@ uint8_t io_data_read(io_port * port, uint32_t current_cycle)
input = port->input[0];
break;
case 5:
- input = abs(port->device.mouse.delta_x) >> 4 & 0xF;
+ input = port->device.mouse.delta_x >> 4 & 0xF;
break;
case 6:
- input = abs(port->device.mouse.delta_x) & 0xF;
+ input = port->device.mouse.delta_x & 0xF;
break;
case 7:
- input = abs(port->device.mouse.delta_y) >> 4 & 0xF;
+ input = port->device.mouse.delta_y >> 4 & 0xF;
break;
case 8:
- input = abs(port->device.mouse.delta_y) & 0xF;
+ input = port->device.mouse.delta_y & 0xF;
//need to figure out when this actually happens
port->device.mouse.last_read_x = port->device.mouse.cur_x;
port->device.mouse.last_read_y = port->device.mouse.cur_y;
diff --git a/menu.s68 b/menu.s68
index c9f8e59..1a30874 100644
--- a/menu.s68
+++ b/menu.s68
@@ -364,6 +364,7 @@ handle_mouse:
move.b #1, mouse_shown.w
.skip_show_check
+ neg.w d1
move.l mouse_sprite.w, a2
add.w d1, (a2)
add.w d0, mouse_x.w
@@ -505,11 +506,11 @@ loop:
btst #4, d3
beq xpos
- neg.w d0
+ or.w #$FF00, d0
xpos
btst #5, d3
beq ypos
- neg.w d1
+ or.w #$FF00, d1
ypos
;set port config back to normal controller mode
move.b #$40, (PAD1_CTRL-PAD1_DATA, a2)