m68k_pulse_reset();
while (42) {
if (mouse_hook_enabled) {
- if (get_mouse_status(&mouse_dx, &mouse_dy, &mouse_buttons)) {
- //printf("Maus: %d (%.2X), %d (%.2X), B:%.2X\n", mouse_dx, mouse_dx, mouse_dy, mouse_dy, mouse_buttons);
- }
+ get_mouse_status(&mouse_dx, &mouse_dy, &mouse_buttons);
}
if (cpu_emulation_running)
unsigned int m68k_read_memory_8(unsigned int address) {
PLATFORM_CHECK_READ(OP_TYPE_BYTE);
- address &=0xFFFFFF;
- return read8((uint32_t)address);
+ if (mouse_hook_enabled) {
+ if (address == CIAAPRA) {
+ unsigned char result = (unsigned int)read8((uint32_t)address);
+ if (mouse_buttons & 0x01) {
+ //mouse_buttons -= 1;
+ return (unsigned int)(result ^ 0x40);
+ }
+ else
+ return (unsigned int)result;
+ }
+ }
+
+ address &=0xFFFFFF;
+ return read8((uint32_t)address);
}
unsigned int m68k_read_memory_16(unsigned int address) {
if (address == JOY0DAT) {
// Forward mouse valueses to Amyga.
unsigned short result = (mouse_dy << 8) | (mouse_dx);
- mouse_dx = mouse_dy = 0;
return (unsigned int)result;
}
- if (address == CIAAPRA) {
+ /*if (address == CIAAPRA) {
unsigned short result = (unsigned int)read16((uint32_t)address);
if (mouse_buttons & 0x01) {
- mouse_buttons -= 1;
return (unsigned int)(result | 0x40);
}
else
return (unsigned int)result;
- }
+ }*/
if (address == POTGOR) {
unsigned short result = (unsigned int)read16((uint32_t)address);
if (mouse_buttons & 0x02) {
- mouse_buttons -= 2;
- return (unsigned int)(result | 0x2);
+ return (unsigned int)(result ^ (0x2 << 9));
}
else
- return (unsigned int)result;
+ return (unsigned int)(result & 0xFFFD);
}
}
-
address &=0xFFFFFF;
return (unsigned int)read16((uint32_t)address);
}
#include <termios.h>
#include <unistd.h>
+#include <stdint.h>
#include <linux/input.h>
static int lshift = 0, rshift = 0, lctrl = 0, rctrl = 0, lalt = 0, altgr = 0;
return 0;
}
+uint16_t mouse_x = 0, mouse_y = 0, mouse_b = 0;
+
int get_mouse_status(char *x, char *y, char *b) {
struct input_event ie;
if (read(mouse_fd, &ie, sizeof(struct input_event)) != -1) {
*b = ((char *)&ie)[0];
- *x = ((char *)&ie)[1];
- *y = ((char *)&ie)[2];
+ mouse_x += ((char *)&ie)[1];
+ *x = mouse_x;
+ mouse_y += (-((char *)&ie)[2]);
+ *y = mouse_y; //-((char *)&ie)[2];
return 1;
}