- /* queue this write for 940 */\r
- if (writebuff_ptr < 2047) {\r
- if (shared_ctl->writebuffsel == 1) {\r
- shared_ctl->writebuff0[writebuff_ptr++] = (a<<8)|v;\r
- } else {\r
- shared_ctl->writebuff1[writebuff_ptr++] = (a<<8)|v;\r
+ UINT16 *writebuff = shared_ctl->writebuffsel ? shared_ctl->writebuff0 : shared_ctl->writebuff1;\r
+\r
+ /* detect rapid ym updates */\r
+ if (upd && !(writebuff_ptr & 0x80000000) && Pico.m.scanline < 224) {\r
+ int mid = Pico.m.pal ? 68 : 93;\r
+ if (Pico.m.scanline > mid) {\r
+ //printf("%05i:%03i: rapid ym\n", Pico.m.frame_count, Pico.m.scanline);\r
+ writebuff[writebuff_ptr++ & 0xffff] = 0xfffe;\r
+ writebuff_ptr |= 0x80000000;\r
+ //printf("%05i:%03i: ym w ([%02x] %02x, upd=%i)\n", Pico.m.frame_count, Pico.m.scanline, addr, v, upd);\r