+ //if (a == 0x800010) dump(d);
+ if (a == 0x800010)
+ {
+ PicoPicohw.fifo_bytes += 2;
+
+ if (PicoPicohw.xpcm_ptr < PicoPicohw.xpcm_buffer + XPCM_BUFFER_SIZE) {
+ *PicoPicohw.xpcm_ptr++ = d >> 8;
+ *PicoPicohw.xpcm_ptr++ = d;
+ }
+ else if (PicoPicohw.xpcm_ptr == PicoPicohw.xpcm_buffer + XPCM_BUFFER_SIZE) {
+ elprintf(EL_ANOMALY|EL_PICOHW, "xpcm_buffer overflow!");
+ PicoPicohw.xpcm_ptr++;
+ }
+ }
+ else if (a == 0x800012) {
+ int r12_old = PicoPicohw.r12;
+ PicoPicohw.r12 = d;
+ if (r12_old != d)
+ PicoReratePico();
+ }
+ else
+ elprintf(EL_UIO, "w16: %06x, %04x", a&0xffffff, d);