trunk/src/emu/sound/spu.c
| r20353 | r20354 | |
| 2538 | 2538 | if (! cdda_buffer->get_bytes_in()) |
| 2539 | 2539 | cdda_playing=false; |
| 2540 | 2540 | |
| 2541 | | if (n>0) printf("cdda buffer underflow (n=%d cdda_in=%d spf=%d)\n",n,cdda_buffer->get_bytes_in(),cdda_spf); |
| 2541 | // if (n>0) printf("cdda buffer underflow (n=%d cdda_in=%d spf=%d)\n",n,cdda_buffer->get_bytes_in(),cdda_spf); |
| 2542 | 2542 | } |
| 2543 | 2543 | } |
| 2544 | 2544 | |
| r20353 | r20354 | |
| 3063 | 3063 | signed short *dp=(signed short *)cdda_buffer->add_sector(sector); |
| 3064 | 3064 | memcpy(dp,cdda,cdda_sector_size); |
| 3065 | 3065 | |
| 3066 | // data coming in in MAME is big endian as stored on the CD |
| 3067 | unsigned char *flip = (unsigned char *)dp; |
| 3068 | for (int i = 0; i < cdda_sector_size; i+= 2) |
| 3069 | { |
| 3070 | unsigned char temp = flip[i]; |
| 3071 | flip[i] = flip[i+1]; |
| 3072 | flip[i+1] = temp; |
| 3073 | } |
| 3074 | |
| 3066 | 3075 | return true; |
| 3067 | 3076 | } |
| 3068 | 3077 | |
trunk/src/mess/machine/psxcd.c
| r20353 | r20354 | |
| 1251 | 1251 | // |
| 1252 | 1252 | // |
| 1253 | 1253 | |
| 1254 | | bool psxcd_device::play_cdda_sector(const unsigned int sector, |
| 1255 | | unsigned char *rawsec) |
| 1254 | bool psxcd_device::play_cdda_sector(const unsigned int sector, unsigned char *rawsec) |
| 1256 | 1255 | { |
| 1257 | | bool isdata=true; |
| 1258 | | |
| 1259 | | if (rawsec[0]!=0) |
| 1260 | | { |
| 1261 | | isdata=false; |
| 1262 | | } else |
| 1263 | | { |
| 1264 | | for (int i=0; i<10; i++) |
| 1265 | | if (rawsec[i+1]!=0xff) |
| 1266 | | { |
| 1267 | | isdata=false; |
| 1268 | | break; |
| 1269 | | } |
| 1270 | | } |
| 1271 | | |
| 1272 | | if (! isdata) |
| 1273 | | { |
| 1274 | | return machine().device<spu_device>("spu")->play_cdda(sector,rawsec); |
| 1275 | | } else |
| 1276 | | { |
| 1277 | | return true; |
| 1278 | | } |
| 1256 | return machine().device<spu_device>("spu")->play_cdda(sector,rawsec); |
| 1279 | 1257 | } |
| 1280 | 1258 | |
| 1281 | 1259 | // |
| r20353 | r20354 | |
| 1385 | 1363 | ev->t=next_sector_t - machine().device<cpu_device>("maincpu")->total_cycles(); |
| 1386 | 1364 | ev->type=event_play_sector; |
| 1387 | 1365 | |
| 1388 | | next_sector_t+=cyc; |
| 1366 | next_sector_t+=cyc>>1; |
| 1389 | 1367 | |
| 1390 | 1368 | next_read_event=ev; |
| 1391 | 1369 | add_system_event(ev); |
| r20353 | r20354 | |
| 1523 | 1501 | ev->t=next_sector_t - machine().device<cpu_device>("maincpu")->total_cycles(); |
| 1524 | 1502 | ev->type=event_play_sector; |
| 1525 | 1503 | |
| 1526 | | next_sector_t+=cyc; |
| 1504 | next_sector_t+=cyc>>1; |
| 1527 | 1505 | |
| 1528 | 1506 | next_read_event=ev; |
| 1529 | 1507 | add_system_event(ev); |
| r20353 | r20354 | |
| 1678 | 1656 | |
| 1679 | 1657 | // ev->t is in maincpu clock cycles |
| 1680 | 1658 | UINT32 hz = m_sysclock / ev->t; |
| 1681 | | // printf("add_system_event: event type %d for %d hz (using timer %d)\n", ev->type, hz, tnum); |
| 1659 | // printf("add_system_event: event type %d for %d hz (using timer %d)\n", ev->type, hz, tnum); |
| 1682 | 1660 | timer->adjust(attotime::from_hz(hz), tnum, attotime::never); |
| 1683 | 1661 | |
| 1684 | 1662 | // back-reference the timer from the event |