- case 0x20: /* 0x20-0x2f Mode */\r
- switch( addr )\r
- {\r
- case 0x24: { // timer A High 8\r
- int TAnew = (ST_TA & 0x03)|(((int)v)<<2);\r
- if(ST_TA != TAnew) {\r
- // we should reset ticker only if new value is written. Outrun requires this.\r
- ST_TA = TAnew;\r
- ST_TAC = (1024-TAnew)*18;\r
- ST_TAT = 0;\r
- }\r
- return 0;\r
- }\r
- case 0x25: { // timer A Low 2\r
- int TAnew = (ST_TA & 0x3fc)|(v&3);\r
- if(ST_TA != TAnew) {\r
- ST_TA = TAnew;\r
- ST_TAC = (1024-TAnew)*18;\r
- ST_TAT = 0;\r
- }\r
- return 0;\r
- }\r
- case 0x26: // timer B\r
- if(ST_TB != v) {\r
- ST_TB = v;\r
- ST_TBC = (256-v)<<4;\r
- ST_TBC *= 18;\r
- ST_TBT = 0;\r
- }\r
- return 0;\r
- case 0x27: /* mode, timer control */\r
- set_timers( v );\r
- break; // other side needs ST.mode for 3slot mode\r
- case 0x2a: /* DAC data (YM2612) */\r
- dacout = ((int)v - 0x80) << 6; /* level unknown (notaz: 8 seems to be too much) */\r
- return 0;\r
- case 0x2b: /* DAC Sel (YM2612) */\r
- /* b7 = dac enable */\r
- dacen = v & 0x80;\r
- break; // other side has to know this\r
- default:\r
- break;\r
+ int mid = Pico.m.pal ? 68 : 93;\r
+ if (scanline > mid) {\r
+ //printf("%05i:%03i: rapid ym\n", Pico.m.frame_count, 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, scanline, addr, v, upd);\r