src/mess/machine/pce.c
| r9118 | r9119 | |
| 14 | 14 | ---x ---- bram signal |
| 15 | 15 | ---- x--- ADPCM 2 |
| 16 | 16 | ---- -x-- ADPCM 1 |
| 17 | | ---- --x- CDDA volume |
| 17 | ---- --x- CDDA left/right speaker select |
| 18 | 18 | |
| 19 | CD Interface Register 0x05 - CD-DA Volume low 8-bit port |
| 20 | |
| 21 | CD Interface Register 0x06 - CD-DA Volume high 8-bit port |
| 22 | |
| 19 | 23 | CD Interface Register 0x07 - BRAM unlock / CD status |
| 20 | 24 | x--- ---- Enables BRAM |
| 21 | 25 | |
| 22 | 26 | CD Interface Register 0x0c - ADPCM status |
| 23 | | x--- ---- ? |
| 27 | x--- ---- ADPCM is reading data |
| 24 | 28 | ---- x--- ADPCM playback (0) stopped (1) currently playing |
| 25 | | ---- -x-- CD -> DMA transfer busy flag |
| 29 | ---- -x-- pending ADPCM data write |
| 26 | 30 | ---- ---x ADPCM playback (1) stopped (0) currently playing |
| 27 | 31 | |
| 28 | 32 | CD Interface Register 0x0d - ADPCM address control |
| r9118 | r9119 | |
| 1228 | 1232 | |
| 1229 | 1233 | logerror("%04X: write to CD interface offset %02X, data %02X\n", cpu_get_pc(space->cpu), offset, data ); |
| 1230 | 1234 | |
| 1231 | | switch( offset ) |
| 1235 | switch( offset & 0xf ) |
| 1232 | 1236 | { |
| 1233 | 1237 | case 0x00: /* CDC status */ |
| 1234 | 1238 | /* select device (which bits??) */ |
| r9118 | r9119 | |
| 1407 | 1411 | |
| 1408 | 1412 | pce_cd_update(space->machine); |
| 1409 | 1413 | |
| 1410 | | if(offset & 0x200 && pce_sys3_card) // emulate Arcade Card |
| 1414 | if(offset & 0x200 && pce_sys3_card) // Arcade Card handling |
| 1411 | 1415 | return pce_cd_acard_r(space,offset); |
| 1412 | 1416 | |
| 1413 | 1417 | logerror("%04X: read from CD interface offset %02X\n", cpu_get_pc(space->cpu), offset ); |
| 1414 | 1418 | |
| 1415 | | switch( offset ) |
| 1419 | if((offset & 0xc0) == 0xc0 && pce_sys3_card) //System 3 Card header handling |
| 1416 | 1420 | { |
| 1421 | switch(offset & 0xcf) |
| 1422 | { |
| 1423 | case 0xc1: return 0xaa; |
| 1424 | case 0xc2: return 0x55; |
| 1425 | case 0xc3: return 0x00; |
| 1426 | case 0xc5: return 0xaa; |
| 1427 | case 0xc6: return 0x55; |
| 1428 | case 0xc7: return 0x03; |
| 1429 | } |
| 1430 | } |
| 1431 | |
| 1432 | switch( offset & 0xf ) |
| 1433 | { |
| 1417 | 1434 | case 0x00: /* CDC status */ |
| 1418 | 1435 | data &= 0x07; |
| 1419 | 1436 | data |= pce_cd.scsi_BSY ? 0x80 : 0; |
| r9118 | r9119 | |
| 1459 | 1476 | case 0x0E: /* ADPCM playback rate */ |
| 1460 | 1477 | case 0x0F: /* ADPCM and CD audio fade timer */ |
| 1461 | 1478 | return 0; |
| 1462 | | case 0xC1: |
| 1463 | | data = pce_sys3_card ? 0xAA : 0xFF; |
| 1464 | | break; |
| 1465 | | case 0xC2: |
| 1466 | | data = pce_sys3_card ? 0x55 : 0xFF; |
| 1467 | | break; |
| 1468 | | case 0xC5: |
| 1469 | | data = pce_sys3_card ? 0x55 : 0xFF; |
| 1470 | | break; |
| 1471 | | case 0xC6: |
| 1472 | | data = pce_sys3_card ? 0xAA : 0xFF; |
| 1473 | | break; |
| 1474 | 1479 | default: |
| 1475 | 1480 | data = 0xFF; |
| 1476 | 1481 | break; |