trunk/src/mame/drivers/firebeat.c
| r18062 | r18063 | |
| 186 | 186 | UINT32 screen_update_firebeat_0(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 187 | 187 | UINT32 screen_update_firebeat_1(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 188 | 188 | INTERRUPT_GEN_MEMBER(firebeat_interrupt); |
| 189 | DECLARE_READ32_MEMBER(gcu0_r); |
| 190 | DECLARE_WRITE32_MEMBER(gcu0_w); |
| 191 | DECLARE_READ32_MEMBER(gcu1_r); |
| 192 | DECLARE_WRITE32_MEMBER(gcu1_w); |
| 193 | DECLARE_READ32_MEMBER(input_r); |
| 194 | DECLARE_READ32_MEMBER(sensor_r ); |
| 195 | DECLARE_READ32_MEMBER(flashram_r); |
| 196 | DECLARE_WRITE32_MEMBER(flashram_w); |
| 197 | DECLARE_READ32_MEMBER(soundflash_r); |
| 198 | DECLARE_WRITE32_MEMBER(soundflash_w); |
| 199 | DECLARE_READ32_MEMBER(atapi_command_r); |
| 200 | DECLARE_WRITE32_MEMBER(atapi_command_w); |
| 201 | DECLARE_READ32_MEMBER(atapi_control_r); |
| 202 | DECLARE_WRITE32_MEMBER(atapi_control_w); |
| 203 | DECLARE_READ32_MEMBER(comm_uart_r); |
| 204 | DECLARE_WRITE32_MEMBER(comm_uart_w); |
| 205 | DECLARE_READ32_MEMBER(cabinet_r); |
| 206 | DECLARE_READ32_MEMBER(keyboard_wheel_r); |
| 207 | DECLARE_READ32_MEMBER(midi_uart_r); |
| 208 | DECLARE_WRITE32_MEMBER(midi_uart_w); |
| 209 | DECLARE_READ32_MEMBER(extend_board_irq_r); |
| 210 | DECLARE_WRITE32_MEMBER(extend_board_irq_w); |
| 211 | DECLARE_WRITE32_MEMBER(lamp_output_w); |
| 212 | DECLARE_WRITE32_MEMBER(lamp_output_kbm_w); |
| 213 | DECLARE_WRITE32_MEMBER(lamp_output_ppp_w); |
| 214 | DECLARE_WRITE32_MEMBER(lamp_output2_w); |
| 215 | DECLARE_WRITE32_MEMBER(lamp_output2_ppp_w); |
| 216 | DECLARE_WRITE32_MEMBER(lamp_output3_w); |
| 217 | DECLARE_WRITE32_MEMBER(lamp_output3_ppp_w); |
| 218 | DECLARE_READ32_MEMBER(ppc_spu_share_r); |
| 219 | DECLARE_WRITE32_MEMBER(ppc_spu_share_w); |
| 220 | DECLARE_READ16_MEMBER(spu_unk_r); |
| 189 | 221 | }; |
| 190 | 222 | |
| 191 | 223 | |
| r18062 | r18063 | |
| 708 | 740 | } |
| 709 | 741 | } |
| 710 | 742 | |
| 711 | | static READ32_HANDLER(gcu0_r) |
| 743 | READ32_MEMBER(firebeat_state::gcu0_r) |
| 712 | 744 | { |
| 713 | 745 | return GCU_r(space.machine(), 0, offset, mem_mask); |
| 714 | 746 | } |
| 715 | 747 | |
| 716 | | static WRITE32_HANDLER(gcu0_w) |
| 748 | WRITE32_MEMBER(firebeat_state::gcu0_w) |
| 717 | 749 | { |
| 718 | 750 | GCU_w(space.machine(), 0, offset, data, mem_mask); |
| 719 | 751 | } |
| 720 | 752 | |
| 721 | | static READ32_HANDLER(gcu1_r) |
| 753 | READ32_MEMBER(firebeat_state::gcu1_r) |
| 722 | 754 | { |
| 723 | 755 | return GCU_r(space.machine(), 1, offset, mem_mask); |
| 724 | 756 | } |
| 725 | 757 | |
| 726 | | static WRITE32_HANDLER(gcu1_w) |
| 758 | WRITE32_MEMBER(firebeat_state::gcu1_w) |
| 727 | 759 | { |
| 728 | 760 | GCU_w(space.machine(), 1, offset, data, mem_mask); |
| 729 | 761 | } |
| 730 | 762 | |
| 731 | 763 | /*****************************************************************************/ |
| 732 | 764 | |
| 733 | | static READ32_HANDLER(input_r) |
| 765 | READ32_MEMBER(firebeat_state::input_r) |
| 734 | 766 | { |
| 735 | 767 | UINT32 r = 0; |
| 736 | 768 | |
| r18062 | r18063 | |
| 750 | 782 | return r; |
| 751 | 783 | } |
| 752 | 784 | |
| 753 | | static READ32_HANDLER( sensor_r ) |
| 785 | READ32_MEMBER(firebeat_state::sensor_r ) |
| 754 | 786 | { |
| 755 | 787 | if (offset == 0) |
| 756 | 788 | { |
| r18062 | r18063 | |
| 762 | 794 | } |
| 763 | 795 | } |
| 764 | 796 | |
| 765 | | static READ32_HANDLER(flashram_r) |
| 797 | READ32_MEMBER(firebeat_state::flashram_r) |
| 766 | 798 | { |
| 767 | | firebeat_state *state = space.machine().driver_data<firebeat_state>(); |
| 768 | 799 | UINT32 r = 0; |
| 769 | 800 | if (ACCESSING_BITS_24_31) |
| 770 | 801 | { |
| 771 | | r |= (state->m_flash[0]->read((offset*4)+0) & 0xff) << 24; |
| 802 | r |= (m_flash[0]->read((offset*4)+0) & 0xff) << 24; |
| 772 | 803 | } |
| 773 | 804 | if (ACCESSING_BITS_16_23) |
| 774 | 805 | { |
| 775 | | r |= (state->m_flash[0]->read((offset*4)+1) & 0xff) << 16; |
| 806 | r |= (m_flash[0]->read((offset*4)+1) & 0xff) << 16; |
| 776 | 807 | } |
| 777 | 808 | if (ACCESSING_BITS_8_15) |
| 778 | 809 | { |
| 779 | | r |= (state->m_flash[0]->read((offset*4)+2) & 0xff) << 8; |
| 810 | r |= (m_flash[0]->read((offset*4)+2) & 0xff) << 8; |
| 780 | 811 | } |
| 781 | 812 | if (ACCESSING_BITS_0_7) |
| 782 | 813 | { |
| 783 | | r |= (state->m_flash[0]->read((offset*4)+3) & 0xff) << 0; |
| 814 | r |= (m_flash[0]->read((offset*4)+3) & 0xff) << 0; |
| 784 | 815 | } |
| 785 | 816 | return r; |
| 786 | 817 | } |
| 787 | 818 | |
| 788 | | static WRITE32_HANDLER(flashram_w) |
| 819 | WRITE32_MEMBER(firebeat_state::flashram_w) |
| 789 | 820 | { |
| 790 | | firebeat_state *state = space.machine().driver_data<firebeat_state>(); |
| 791 | 821 | if (ACCESSING_BITS_24_31) |
| 792 | 822 | { |
| 793 | | state->m_flash[0]->write((offset*4)+0, (data >> 24) & 0xff); |
| 823 | m_flash[0]->write((offset*4)+0, (data >> 24) & 0xff); |
| 794 | 824 | } |
| 795 | 825 | if (ACCESSING_BITS_16_23) |
| 796 | 826 | { |
| 797 | | state->m_flash[0]->write((offset*4)+1, (data >> 16) & 0xff); |
| 827 | m_flash[0]->write((offset*4)+1, (data >> 16) & 0xff); |
| 798 | 828 | } |
| 799 | 829 | if (ACCESSING_BITS_8_15) |
| 800 | 830 | { |
| 801 | | state->m_flash[0]->write((offset*4)+2, (data >> 8) & 0xff); |
| 831 | m_flash[0]->write((offset*4)+2, (data >> 8) & 0xff); |
| 802 | 832 | } |
| 803 | 833 | if (ACCESSING_BITS_0_7) |
| 804 | 834 | { |
| 805 | | state->m_flash[0]->write((offset*4)+3, (data >> 0) & 0xff); |
| 835 | m_flash[0]->write((offset*4)+3, (data >> 0) & 0xff); |
| 806 | 836 | } |
| 807 | 837 | } |
| 808 | 838 | |
| 809 | | static READ32_HANDLER(soundflash_r) |
| 839 | READ32_MEMBER(firebeat_state::soundflash_r) |
| 810 | 840 | { |
| 811 | | firebeat_state *state = space.machine().driver_data<firebeat_state>(); |
| 812 | 841 | UINT32 r = 0; |
| 813 | 842 | fujitsu_29f016a_device *chip; |
| 814 | 843 | if (offset >= 0 && offset < 0x200000/4) |
| 815 | 844 | { |
| 816 | | chip = state->m_flash[1]; |
| 845 | chip = m_flash[1]; |
| 817 | 846 | } |
| 818 | 847 | else |
| 819 | 848 | { |
| 820 | | chip = state->m_flash[2]; |
| 849 | chip = m_flash[2]; |
| 821 | 850 | } |
| 822 | 851 | |
| 823 | 852 | offset &= 0x7ffff; |
| r18062 | r18063 | |
| 841 | 870 | return r; |
| 842 | 871 | } |
| 843 | 872 | |
| 844 | | static WRITE32_HANDLER(soundflash_w) |
| 873 | WRITE32_MEMBER(firebeat_state::soundflash_w) |
| 845 | 874 | { |
| 846 | | firebeat_state *state = space.machine().driver_data<firebeat_state>(); |
| 847 | 875 | fujitsu_29f016a_device *chip; |
| 848 | 876 | if (offset >= 0 && offset < 0x200000/4) |
| 849 | 877 | { |
| 850 | | chip = state->m_flash[1]; |
| 878 | chip = m_flash[1]; |
| 851 | 879 | } |
| 852 | 880 | else |
| 853 | 881 | { |
| 854 | | chip = state->m_flash[2]; |
| 882 | chip = m_flash[2]; |
| 855 | 883 | } |
| 856 | 884 | |
| 857 | 885 | offset &= 0x7ffff; |
| r18062 | r18063 | |
| 1217 | 1245 | |
| 1218 | 1246 | |
| 1219 | 1247 | |
| 1220 | | static READ32_HANDLER( atapi_command_r ) |
| 1248 | READ32_MEMBER(firebeat_state::atapi_command_r ) |
| 1221 | 1249 | { |
| 1222 | 1250 | UINT16 r; |
| 1223 | 1251 | // printf("atapi_command_r: %08X, %08X\n", offset, mem_mask); |
| r18062 | r18063 | |
| 1233 | 1261 | } |
| 1234 | 1262 | } |
| 1235 | 1263 | |
| 1236 | | static WRITE32_HANDLER( atapi_command_w ) |
| 1264 | WRITE32_MEMBER(firebeat_state::atapi_command_w ) |
| 1237 | 1265 | { |
| 1238 | 1266 | // printf("atapi_command_w: %08X, %08X, %08X\n", data, offset, mem_mask); |
| 1239 | 1267 | |
| r18062 | r18063 | |
| 1248 | 1276 | } |
| 1249 | 1277 | |
| 1250 | 1278 | |
| 1251 | | static READ32_HANDLER( atapi_control_r ) |
| 1279 | READ32_MEMBER(firebeat_state::atapi_control_r ) |
| 1252 | 1280 | { |
| 1253 | 1281 | UINT16 r; |
| 1254 | 1282 | // printf("atapi_control_r: %08X, %08X\n", offset, mem_mask); |
| r18062 | r18063 | |
| 1265 | 1293 | } |
| 1266 | 1294 | } |
| 1267 | 1295 | |
| 1268 | | static WRITE32_HANDLER( atapi_control_w ) |
| 1296 | WRITE32_MEMBER(firebeat_state::atapi_control_w ) |
| 1269 | 1297 | { |
| 1270 | 1298 | if (ACCESSING_BITS_16_31) |
| 1271 | 1299 | { |
| r18062 | r18063 | |
| 1280 | 1308 | |
| 1281 | 1309 | /*****************************************************************************/ |
| 1282 | 1310 | |
| 1283 | | static READ32_HANDLER( comm_uart_r ) |
| 1311 | READ32_MEMBER(firebeat_state::comm_uart_r ) |
| 1284 | 1312 | { |
| 1285 | 1313 | UINT32 r = 0; |
| 1286 | 1314 | |
| r18062 | r18063 | |
| 1304 | 1332 | return r; |
| 1305 | 1333 | } |
| 1306 | 1334 | |
| 1307 | | static WRITE32_HANDLER( comm_uart_w ) |
| 1335 | WRITE32_MEMBER(firebeat_state::comm_uart_w ) |
| 1308 | 1336 | { |
| 1309 | 1337 | if (ACCESSING_BITS_24_31) |
| 1310 | 1338 | { |
| r18062 | r18063 | |
| 1336 | 1364 | static const int kbm_cab_data[2] = { 0x2, 0x8 }; |
| 1337 | 1365 | static const int ppd_cab_data[2] = { 0x1, 0x9 }; |
| 1338 | 1366 | |
| 1339 | | static READ32_HANDLER( cabinet_r ) |
| 1367 | READ32_MEMBER(firebeat_state::cabinet_r ) |
| 1340 | 1368 | { |
| 1341 | | firebeat_state *state = space.machine().driver_data<firebeat_state>(); |
| 1342 | 1369 | UINT32 r = 0; |
| 1343 | 1370 | |
| 1344 | 1371 | // printf("cabinet_r: %08X, %08X\n", offset, mem_mask); |
| r18062 | r18063 | |
| 1347 | 1374 | { |
| 1348 | 1375 | case 0: |
| 1349 | 1376 | { |
| 1350 | | r = state->m_cur_cab_data[state->m_cab_data_ptr & 1] << 28; |
| 1351 | | state->m_cab_data_ptr++; |
| 1377 | r = m_cur_cab_data[m_cab_data_ptr & 1] << 28; |
| 1378 | m_cab_data_ptr++; |
| 1352 | 1379 | return r; |
| 1353 | 1380 | } |
| 1354 | 1381 | case 2: return 0x00000000; |
| r18062 | r18063 | |
| 1360 | 1387 | |
| 1361 | 1388 | /*****************************************************************************/ |
| 1362 | 1389 | |
| 1363 | | static READ32_HANDLER( keyboard_wheel_r ) |
| 1390 | READ32_MEMBER(firebeat_state::keyboard_wheel_r ) |
| 1364 | 1391 | { |
| 1365 | 1392 | if (offset == 0) // Keyboard Wheel (P1) |
| 1366 | 1393 | { |
| r18062 | r18063 | |
| 1374 | 1401 | return 0; |
| 1375 | 1402 | } |
| 1376 | 1403 | |
| 1377 | | static READ32_HANDLER( midi_uart_r ) |
| 1404 | READ32_MEMBER(firebeat_state::midi_uart_r ) |
| 1378 | 1405 | { |
| 1379 | 1406 | UINT32 r = 0; |
| 1380 | 1407 | |
| r18062 | r18063 | |
| 1386 | 1413 | return r; |
| 1387 | 1414 | } |
| 1388 | 1415 | |
| 1389 | | static WRITE32_HANDLER( midi_uart_w ) |
| 1416 | WRITE32_MEMBER(firebeat_state::midi_uart_w ) |
| 1390 | 1417 | { |
| 1391 | 1418 | if (ACCESSING_BITS_24_31) |
| 1392 | 1419 | { |
| r18062 | r18063 | |
| 1501 | 1528 | // 0x10: ? |
| 1502 | 1529 | // 0x20: ? |
| 1503 | 1530 | |
| 1504 | | static READ32_HANDLER( extend_board_irq_r) |
| 1531 | READ32_MEMBER(firebeat_state::extend_board_irq_r) |
| 1505 | 1532 | { |
| 1506 | | firebeat_state *state = space.machine().driver_data<firebeat_state>(); |
| 1507 | 1533 | UINT32 r = 0; |
| 1508 | 1534 | |
| 1509 | 1535 | if (ACCESSING_BITS_24_31) |
| 1510 | 1536 | { |
| 1511 | | r |= (~state->m_extend_board_irq_active) << 24; |
| 1537 | r |= (~m_extend_board_irq_active) << 24; |
| 1512 | 1538 | } |
| 1513 | 1539 | |
| 1514 | 1540 | return r; |
| 1515 | 1541 | } |
| 1516 | 1542 | |
| 1517 | | static WRITE32_HANDLER( extend_board_irq_w ) |
| 1543 | WRITE32_MEMBER(firebeat_state::extend_board_irq_w ) |
| 1518 | 1544 | { |
| 1519 | | firebeat_state *state = space.machine().driver_data<firebeat_state>(); |
| 1520 | 1545 | // printf("extend_board_irq_w: %08X, %08X, %08X\n", data, offset, mem_mask); |
| 1521 | 1546 | |
| 1522 | 1547 | if (ACCESSING_BITS_24_31) |
| 1523 | 1548 | { |
| 1524 | | state->m_extend_board_irq_active &= ~((data >> 24) & 0xff); |
| 1549 | m_extend_board_irq_active &= ~((data >> 24) & 0xff); |
| 1525 | 1550 | |
| 1526 | | state->m_extend_board_irq_enable = (data >> 24) & 0xff; |
| 1551 | m_extend_board_irq_enable = (data >> 24) & 0xff; |
| 1527 | 1552 | } |
| 1528 | 1553 | } |
| 1529 | 1554 | |
| 1530 | 1555 | /*****************************************************************************/ |
| 1531 | 1556 | |
| 1532 | | static WRITE32_HANDLER( lamp_output_w ) |
| 1557 | WRITE32_MEMBER(firebeat_state::lamp_output_w ) |
| 1533 | 1558 | { |
| 1534 | 1559 | // -------- -------- -------- xxxxxxxx Status LEDs (active low) |
| 1535 | 1560 | if (ACCESSING_BITS_0_7) |
| r18062 | r18063 | |
| 1547 | 1572 | // printf("lamp_output_w: %08X, %08X, %08X\n", data, offset, mem_mask); |
| 1548 | 1573 | } |
| 1549 | 1574 | |
| 1550 | | static WRITE32_HANDLER( lamp_output_kbm_w ) |
| 1575 | WRITE32_MEMBER(firebeat_state::lamp_output_kbm_w ) |
| 1551 | 1576 | { |
| 1552 | 1577 | lamp_output_w(space, offset, data, mem_mask); |
| 1553 | 1578 | |
| r18062 | r18063 | |
| 1566 | 1591 | } |
| 1567 | 1592 | } |
| 1568 | 1593 | |
| 1569 | | static WRITE32_HANDLER( lamp_output_ppp_w ) |
| 1594 | WRITE32_MEMBER(firebeat_state::lamp_output_ppp_w ) |
| 1570 | 1595 | { |
| 1571 | 1596 | lamp_output_w(space, offset, data, mem_mask); |
| 1572 | 1597 | |
| r18062 | r18063 | |
| 1608 | 1633 | } |
| 1609 | 1634 | } |
| 1610 | 1635 | |
| 1611 | | static WRITE32_HANDLER( lamp_output2_w ) |
| 1636 | WRITE32_MEMBER(firebeat_state::lamp_output2_w ) |
| 1612 | 1637 | { |
| 1613 | 1638 | // printf("lamp_output2_w: %08X, %08X, %08X\n", data, offset, mem_mask); |
| 1614 | 1639 | } |
| 1615 | 1640 | |
| 1616 | | static WRITE32_HANDLER( lamp_output2_ppp_w ) |
| 1641 | WRITE32_MEMBER(firebeat_state::lamp_output2_ppp_w ) |
| 1617 | 1642 | { |
| 1618 | 1643 | lamp_output2_w(space, offset, data, mem_mask); |
| 1619 | 1644 | |
| r18062 | r18063 | |
| 1642 | 1667 | } |
| 1643 | 1668 | } |
| 1644 | 1669 | |
| 1645 | | static WRITE32_HANDLER( lamp_output3_w ) |
| 1670 | WRITE32_MEMBER(firebeat_state::lamp_output3_w ) |
| 1646 | 1671 | { |
| 1647 | 1672 | // printf("lamp_output3_w: %08X, %08X, %08X\n", data, offset, mem_mask); |
| 1648 | 1673 | } |
| 1649 | 1674 | |
| 1650 | | static WRITE32_HANDLER( lamp_output3_ppp_w ) |
| 1675 | WRITE32_MEMBER(firebeat_state::lamp_output3_ppp_w ) |
| 1651 | 1676 | { |
| 1652 | 1677 | lamp_output3_w(space, offset, data, mem_mask); |
| 1653 | 1678 | |
| r18062 | r18063 | |
| 1668 | 1693 | /*****************************************************************************/ |
| 1669 | 1694 | |
| 1670 | 1695 | |
| 1671 | | static READ32_HANDLER(ppc_spu_share_r) |
| 1696 | READ32_MEMBER(firebeat_state::ppc_spu_share_r) |
| 1672 | 1697 | { |
| 1673 | | firebeat_state *state = space.machine().driver_data<firebeat_state>(); |
| 1674 | 1698 | UINT32 r = 0; |
| 1675 | 1699 | |
| 1676 | 1700 | if (ACCESSING_BITS_24_31) |
| 1677 | 1701 | { |
| 1678 | | r |= state->m_spu_shared_ram[(offset * 4) + 0] << 24; |
| 1702 | r |= m_spu_shared_ram[(offset * 4) + 0] << 24; |
| 1679 | 1703 | } |
| 1680 | 1704 | if (ACCESSING_BITS_16_23) |
| 1681 | 1705 | { |
| 1682 | | r |= state->m_spu_shared_ram[(offset * 4) + 1] << 16; |
| 1706 | r |= m_spu_shared_ram[(offset * 4) + 1] << 16; |
| 1683 | 1707 | } |
| 1684 | 1708 | if (ACCESSING_BITS_8_15) |
| 1685 | 1709 | { |
| 1686 | | r |= state->m_spu_shared_ram[(offset * 4) + 2] << 8; |
| 1710 | r |= m_spu_shared_ram[(offset * 4) + 2] << 8; |
| 1687 | 1711 | } |
| 1688 | 1712 | if (ACCESSING_BITS_0_7) |
| 1689 | 1713 | { |
| 1690 | | r |= state->m_spu_shared_ram[(offset * 4) + 3] << 0; |
| 1714 | r |= m_spu_shared_ram[(offset * 4) + 3] << 0; |
| 1691 | 1715 | } |
| 1692 | 1716 | |
| 1693 | 1717 | return r; |
| 1694 | 1718 | } |
| 1695 | 1719 | |
| 1696 | | static WRITE32_HANDLER(ppc_spu_share_w) |
| 1720 | WRITE32_MEMBER(firebeat_state::ppc_spu_share_w) |
| 1697 | 1721 | { |
| 1698 | | firebeat_state *state = space.machine().driver_data<firebeat_state>(); |
| 1699 | 1722 | if (ACCESSING_BITS_24_31) |
| 1700 | 1723 | { |
| 1701 | | state->m_spu_shared_ram[(offset * 4) + 0] = (data >> 24) & 0xff; |
| 1724 | m_spu_shared_ram[(offset * 4) + 0] = (data >> 24) & 0xff; |
| 1702 | 1725 | } |
| 1703 | 1726 | if (ACCESSING_BITS_16_23) |
| 1704 | 1727 | { |
| 1705 | | state->m_spu_shared_ram[(offset * 4) + 1] = (data >> 16) & 0xff; |
| 1728 | m_spu_shared_ram[(offset * 4) + 1] = (data >> 16) & 0xff; |
| 1706 | 1729 | } |
| 1707 | 1730 | if (ACCESSING_BITS_8_15) |
| 1708 | 1731 | { |
| 1709 | | state->m_spu_shared_ram[(offset * 4) + 2] = (data >> 8) & 0xff; |
| 1732 | m_spu_shared_ram[(offset * 4) + 2] = (data >> 8) & 0xff; |
| 1710 | 1733 | } |
| 1711 | 1734 | if (ACCESSING_BITS_0_7) |
| 1712 | 1735 | { |
| 1713 | | state->m_spu_shared_ram[(offset * 4) + 3] = (data >> 0) & 0xff; |
| 1736 | m_spu_shared_ram[(offset * 4) + 3] = (data >> 0) & 0xff; |
| 1714 | 1737 | } |
| 1715 | 1738 | } |
| 1716 | 1739 | |
| 1717 | 1740 | #ifdef UNUSED_FUNCTION |
| 1718 | | static READ16_HANDLER(m68k_spu_share_r) |
| 1741 | READ16_MEMBER(firebeat_state::m68k_spu_share_r) |
| 1719 | 1742 | { |
| 1720 | | firebeat_state *state = space.machine().driver_data<firebeat_state>(); |
| 1721 | | return state->m_spu_shared_ram[offset] << 8; |
| 1743 | return m_spu_shared_ram[offset] << 8; |
| 1722 | 1744 | } |
| 1723 | 1745 | |
| 1724 | | static WRITE16_HANDLER(m68k_spu_share_w) |
| 1746 | WRITE16_MEMBER(firebeat_state::m68k_spu_share_w) |
| 1725 | 1747 | { |
| 1726 | | firebeat_state *state = space.machine().driver_data<firebeat_state>(); |
| 1727 | | state->m_spu_shared_ram[offset] = (data >> 8) & 0xff; |
| 1748 | m_spu_shared_ram[offset] = (data >> 8) & 0xff; |
| 1728 | 1749 | } |
| 1729 | 1750 | #endif |
| 1730 | 1751 | |
| 1731 | | static READ16_HANDLER(spu_unk_r) |
| 1752 | READ16_MEMBER(firebeat_state::spu_unk_r) |
| 1732 | 1753 | { |
| 1733 | 1754 | return 0xffff; |
| 1734 | 1755 | } |
| r18062 | r18063 | |
| 1750 | 1771 | |
| 1751 | 1772 | static ADDRESS_MAP_START( firebeat_map, AS_PROGRAM, 32, firebeat_state ) |
| 1752 | 1773 | AM_RANGE(0x00000000, 0x01ffffff) AM_RAM AM_SHARE("work_ram") |
| 1753 | | AM_RANGE(0x70000000, 0x70000fff) AM_READWRITE_LEGACY(midi_uart_r, midi_uart_w) |
| 1754 | | AM_RANGE(0x70006000, 0x70006003) AM_WRITE_LEGACY(extend_board_irq_w) |
| 1755 | | AM_RANGE(0x70008000, 0x7000800f) AM_READ_LEGACY(keyboard_wheel_r) |
| 1756 | | AM_RANGE(0x7000a000, 0x7000a003) AM_READ_LEGACY(extend_board_irq_r) |
| 1757 | | AM_RANGE(0x74000000, 0x740003ff) AM_READWRITE_LEGACY(ppc_spu_share_r, ppc_spu_share_w) // SPU shared RAM |
| 1758 | | AM_RANGE(0x7d000200, 0x7d00021f) AM_READ_LEGACY(cabinet_r) |
| 1759 | | AM_RANGE(0x7d000340, 0x7d000347) AM_READ_LEGACY(sensor_r) |
| 1774 | AM_RANGE(0x70000000, 0x70000fff) AM_READWRITE(midi_uart_r, midi_uart_w) |
| 1775 | AM_RANGE(0x70006000, 0x70006003) AM_WRITE(extend_board_irq_w) |
| 1776 | AM_RANGE(0x70008000, 0x7000800f) AM_READ(keyboard_wheel_r) |
| 1777 | AM_RANGE(0x7000a000, 0x7000a003) AM_READ(extend_board_irq_r) |
| 1778 | AM_RANGE(0x74000000, 0x740003ff) AM_READWRITE(ppc_spu_share_r, ppc_spu_share_w) // SPU shared RAM |
| 1779 | AM_RANGE(0x7d000200, 0x7d00021f) AM_READ(cabinet_r) |
| 1780 | AM_RANGE(0x7d000340, 0x7d000347) AM_READ(sensor_r) |
| 1760 | 1781 | AM_RANGE(0x7d000400, 0x7d000403) AM_DEVREADWRITE8_LEGACY("ymz", ymz280b_r, ymz280b_w, 0xffff0000) |
| 1761 | | AM_RANGE(0x7d000800, 0x7d000803) AM_READ_LEGACY(input_r) |
| 1762 | | AM_RANGE(0x7d400000, 0x7d5fffff) AM_READWRITE_LEGACY(flashram_r, flashram_w) |
| 1763 | | AM_RANGE(0x7d800000, 0x7dbfffff) AM_READWRITE_LEGACY(soundflash_r, soundflash_w) |
| 1764 | | AM_RANGE(0x7dc00000, 0x7dc0000f) AM_READWRITE_LEGACY(comm_uart_r, comm_uart_w) |
| 1782 | AM_RANGE(0x7d000800, 0x7d000803) AM_READ(input_r) |
| 1783 | AM_RANGE(0x7d400000, 0x7d5fffff) AM_READWRITE(flashram_r, flashram_w) |
| 1784 | AM_RANGE(0x7d800000, 0x7dbfffff) AM_READWRITE(soundflash_r, soundflash_w) |
| 1785 | AM_RANGE(0x7dc00000, 0x7dc0000f) AM_READWRITE(comm_uart_r, comm_uart_w) |
| 1765 | 1786 | AM_RANGE(0x7e000000, 0x7e00003f) AM_DEVREADWRITE8("rtc", rtc65271_device, rtc_r, rtc_w, 0xffffffff) |
| 1766 | 1787 | AM_RANGE(0x7e000100, 0x7e00013f) AM_DEVREADWRITE8("rtc", rtc65271_device, xram_r, xram_w, 0xffffffff) |
| 1767 | | AM_RANGE(0x7e800000, 0x7e8000ff) AM_READWRITE_LEGACY(gcu0_r, gcu0_w) |
| 1768 | | AM_RANGE(0x7e800100, 0x7e8001ff) AM_READWRITE_LEGACY(gcu1_r, gcu1_w) |
| 1769 | | AM_RANGE(0x7fe00000, 0x7fe0000f) AM_READWRITE_LEGACY(atapi_command_r, atapi_command_w) |
| 1770 | | AM_RANGE(0x7fe80000, 0x7fe8000f) AM_READWRITE_LEGACY(atapi_control_r, atapi_control_w) |
| 1788 | AM_RANGE(0x7e800000, 0x7e8000ff) AM_READWRITE(gcu0_r, gcu0_w) |
| 1789 | AM_RANGE(0x7e800100, 0x7e8001ff) AM_READWRITE(gcu1_r, gcu1_w) |
| 1790 | AM_RANGE(0x7fe00000, 0x7fe0000f) AM_READWRITE(atapi_command_r, atapi_command_w) |
| 1791 | AM_RANGE(0x7fe80000, 0x7fe8000f) AM_READWRITE(atapi_control_r, atapi_control_w) |
| 1771 | 1792 | AM_RANGE(0x7ff80000, 0x7fffffff) AM_ROM AM_REGION("user1", 0) /* System BIOS */ |
| 1772 | 1793 | ADDRESS_MAP_END |
| 1773 | 1794 | |
| 1774 | 1795 | static ADDRESS_MAP_START( spu_map, AS_PROGRAM, 16, firebeat_state ) |
| 1775 | 1796 | AM_RANGE(0x000000, 0x07ffff) AM_ROM |
| 1776 | 1797 | AM_RANGE(0x100000, 0x13ffff) AM_RAM |
| 1777 | | AM_RANGE(0x340000, 0x34000f) AM_READ_LEGACY(spu_unk_r) |
| 1798 | AM_RANGE(0x340000, 0x34000f) AM_READ(spu_unk_r) |
| 1778 | 1799 | ADDRESS_MAP_END |
| 1779 | 1800 | |
| 1780 | 1801 | /*****************************************************************************/ |
| r18062 | r18063 | |
| 2214 | 2235 | |
| 2215 | 2236 | /*****************************************************************************/ |
| 2216 | 2237 | |
| 2217 | | static void init_lights(running_machine &machine, write32_space_func out1, const char *out1name, write32_space_func out2, const char *out2name, write32_space_func out3, const char *out3name) |
| 2238 | static void init_lights(running_machine &machine, write32_delegate out1, write32_delegate out2, write32_delegate out3) |
| 2218 | 2239 | { |
| 2219 | | if(!out1) out1 = lamp_output_w, out1name = "lamp_output_w"; |
| 2220 | | if(!out2) out2 = lamp_output2_w, out2name = "lamp_output2_w"; |
| 2221 | | if(!out3) out3 = lamp_output3_w, out3name = "lamp_output3_w"; |
| 2240 | firebeat_state *state = machine.driver_data<firebeat_state>(); |
| 2241 | if(out1.isnull()) out1 = write32_delegate(FUNC(firebeat_state::lamp_output_w),state); |
| 2242 | if(out2.isnull()) out2 = write32_delegate(FUNC(firebeat_state::lamp_output2_w),state); |
| 2243 | if(out3.isnull()) out3 = write32_delegate(FUNC(firebeat_state::lamp_output3_w),state); |
| 2222 | 2244 | |
| 2223 | | machine.device("maincpu")->memory().space(AS_PROGRAM).install_legacy_write_handler(0x7d000804, 0x7d000807, out1, out1name); |
| 2224 | | machine.device("maincpu")->memory().space(AS_PROGRAM).install_legacy_write_handler(0x7d000320, 0x7d000323, out2, out2name); |
| 2225 | | machine.device("maincpu")->memory().space(AS_PROGRAM).install_legacy_write_handler(0x7d000324, 0x7d000327, out3, out3name); |
| 2245 | machine.device("maincpu")->memory().space(AS_PROGRAM).install_write_handler(0x7d000804, 0x7d000807, out1); |
| 2246 | machine.device("maincpu")->memory().space(AS_PROGRAM).install_write_handler(0x7d000320, 0x7d000323, out2); |
| 2247 | machine.device("maincpu")->memory().space(AS_PROGRAM).install_write_handler(0x7d000324, 0x7d000327, out3); |
| 2226 | 2248 | } |
| 2227 | 2249 | |
| 2228 | 2250 | static void init_firebeat(running_machine &machine) |
| r18062 | r18063 | |
| 2244 | 2266 | |
| 2245 | 2267 | set_ibutton(state, rom); |
| 2246 | 2268 | |
| 2247 | | init_lights(machine, FUNC_NULL, FUNC_NULL, FUNC_NULL); |
| 2269 | init_lights(machine, write32_delegate(), write32_delegate(), write32_delegate()); |
| 2248 | 2270 | } |
| 2249 | 2271 | |
| 2250 | 2272 | DRIVER_INIT_MEMBER(firebeat_state,ppp) |
| 2251 | 2273 | { |
| 2252 | 2274 | init_firebeat(machine()); |
| 2253 | | init_lights(machine(), FUNC(lamp_output_ppp_w), FUNC(lamp_output2_ppp_w), FUNC(lamp_output3_ppp_w)); |
| 2275 | init_lights(machine(), write32_delegate(FUNC(firebeat_state::lamp_output_ppp_w),this), write32_delegate(FUNC(firebeat_state::lamp_output2_ppp_w),this), write32_delegate(FUNC(firebeat_state::lamp_output3_ppp_w),this)); |
| 2254 | 2276 | } |
| 2255 | 2277 | |
| 2256 | 2278 | DRIVER_INIT_MEMBER(firebeat_state,ppd) |
| 2257 | 2279 | { |
| 2258 | 2280 | init_firebeat(machine()); |
| 2259 | | init_lights(machine(), FUNC(lamp_output_ppp_w), FUNC(lamp_output2_ppp_w), FUNC(lamp_output3_ppp_w)); |
| 2281 | init_lights(machine(), write32_delegate(FUNC(firebeat_state::lamp_output_ppp_w),this), write32_delegate(FUNC(firebeat_state::lamp_output2_ppp_w),this), write32_delegate(FUNC(firebeat_state::lamp_output3_ppp_w),this)); |
| 2260 | 2282 | |
| 2261 | 2283 | m_cur_cab_data = ppd_cab_data; |
| 2262 | 2284 | } |
| r18062 | r18063 | |
| 2272 | 2294 | DRIVER_INIT_MEMBER(firebeat_state,kbm) |
| 2273 | 2295 | { |
| 2274 | 2296 | init_firebeat(machine()); |
| 2275 | | init_lights(machine(), FUNC(lamp_output_kbm_w), FUNC_NULL, FUNC_NULL); |
| 2297 | init_lights(machine(), write32_delegate(FUNC(firebeat_state::lamp_output_kbm_w),this), write32_delegate(), write32_delegate()); |
| 2276 | 2298 | |
| 2277 | 2299 | init_keyboard(machine()); |
| 2278 | 2300 | |