- elprintf(EL_UIO, "r8 : %06x, %02x @%06x", a&0xffffff, (u8)d, SekPc);
+ if ((a&0xffffe0)==0x800000) // Pico I/O
+ {
+ switch (a & 0x1f)
+ {
+ case 0x01: d = PicoPicohw.r1; break;
+ case 0x03:
+ d = PicoPad[0]&0x1f; // d-pad
+ d |= (PicoPad[0]&0x20) << 2; // pen push -> C
+ d = ~d;
+ break;
+
+ case 0x05: d = (PicoPicohw.pen_pos[0] >> 8); break; // what is MS bit for? Games read it..
+ case 0x07: d = PicoPicohw.pen_pos[0] & 0xff; break;
+ case 0x09: d = (PicoPicohw.pen_pos[1] >> 8); break;
+ case 0x0b: d = PicoPicohw.pen_pos[1] & 0xff; break;
+ case 0x0d: d = (1 << (PicoPicohw.page & 7)) - 1; break;
+ case 0x12: d = PicoPicohw.fifo_bytes == 0 ? 0x80 : 0; break; // guess
+ default:
+ elprintf(EL_UIO, "r8 : %06x, %02x @%06x", a&0xffffff, (u8)d, SekPc);
+ break;
+ }
+ }
+
+ //elprintf(EL_UIO, "r8 : %06x, %02x @%06x", a&0xffffff, (u8)d, SekPc);