X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=Pico%2FPico%2FMemory.c;h=5760324f7364d1409f2dac423f18e5d379584542;hb=ef4eb506de324df73bcda06f027a20349c69d05f;hp=22166918e7ca9519cd28716b1f268fd4ead96d90;hpb=1e6b5e39f45341524d90a4c71776e92a6d2d6fe5;p=picodrive.git diff --git a/Pico/Pico/Memory.c b/Pico/Pico/Memory.c index 2216691..5760324 100644 --- a/Pico/Pico/Memory.c +++ b/Pico/Pico/Memory.c @@ -143,8 +143,20 @@ static void PicoWritePico16(u32 a,u16 d) if ((a&0xfffff0)==0xc00000) { PicoVideoWrite(a,(u16)d); return; } // VDP // if (a == 0x800010) dump(d); - if (a == 0x800010) PicoPicohw.fifo_bytes += 2; - if (a == 0x800012) PicoPicohw.r12 = 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, "xpcm_buffer overflow!"); + PicoPicohw.xpcm_ptr++; + } + } + else if (a == 0x800012) PicoPicohw.r12 = d; elprintf(EL_UIO, "w16: %06x, %04x", a&0xffffff, d); }