trunk/src/emu/sound/nes_apu.c
| r29529 | r29530 | |
| 108 | 108 | m_samps_per_sync(0), |
| 109 | 109 | m_buffer_size(0), |
| 110 | 110 | m_real_rate(0), |
| 111 | | m_stream(NULL) |
| 111 | m_stream(NULL), |
| 112 | m_cpu_tag("") |
| 112 | 113 | { |
| 113 | 114 | for (int i = 0; i < NOISE_LONG; i++) |
| 114 | 115 | { |
| r29529 | r29530 | |
| 132 | 133 | } |
| 133 | 134 | |
| 134 | 135 | //------------------------------------------------- |
| 135 | | // device_config_complete - perform any |
| 136 | | // operations now that the configuration is |
| 137 | | // complete |
| 138 | | //------------------------------------------------- |
| 139 | | |
| 140 | | void nesapu_device::device_config_complete() |
| 141 | | { |
| 142 | | // inherit a copy of the static data |
| 143 | | const nesapu_interface *intf = reinterpret_cast<const nesapu_interface *>(static_config()); |
| 144 | | if (intf != NULL) |
| 145 | | *static_cast<nesapu_interface *>(this) = *intf; |
| 146 | | |
| 147 | | // or initialize to defaults if none provided |
| 148 | | else |
| 149 | | { |
| 150 | | m_cpu_tag = ""; |
| 151 | | } |
| 152 | | } |
| 153 | | |
| 154 | | //------------------------------------------------- |
| 155 | 136 | // device_start - device-specific startup |
| 156 | 137 | //------------------------------------------------- |
| 157 | 138 | |
| 158 | 139 | void nesapu_device::device_start() |
| 159 | 140 | { |
| 160 | 141 | int rate = clock() / 4; |
| 161 | | int i; |
| 162 | 142 | |
| 163 | 143 | /* Initialize global variables */ |
| 164 | 144 | m_samps_per_sync = rate / ATTOSECONDS_TO_HZ(machine().first_screen()->frame_period().attoseconds); |
| r29529 | r29530 | |
| 180 | 160 | m_stream = machine().sound().stream_alloc(*this, 0, 1, rate, this); |
| 181 | 161 | |
| 182 | 162 | /* register for save */ |
| 183 | | for (i = 0; i < 2; i++) |
| 163 | for (int i = 0; i < 2; i++) |
| 184 | 164 | { |
| 185 | 165 | save_item(NAME(m_APU.squ[i].regs), i); |
| 186 | 166 | save_item(NAME(m_APU.squ[i].vbl_length), i); |
trunk/src/emu/sound/nes_apu.h
| r29529 | r29530 | |
| 41 | 41 | #define SYNCS_MAX1 0x20 |
| 42 | 42 | #define SYNCS_MAX2 0x80 |
| 43 | 43 | |
| 44 | | struct nesapu_interface |
| 45 | | { |
| 46 | | const char *m_cpu_tag; /* CPU tag */ |
| 47 | | }; |
| 48 | | |
| 49 | 44 | class nesapu_device : public device_t, |
| 50 | | public device_sound_interface, |
| 51 | | public nesapu_interface |
| 45 | public device_sound_interface |
| 52 | 46 | { |
| 53 | 47 | public: |
| 54 | 48 | nesapu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); |
| 55 | 49 | ~nesapu_device() {} |
| 50 | |
| 51 | static void set_cpu_tag(device_t &device, const char *tag) { downcast<nesapu_device &>(device).m_cpu_tag = tag; } |
| 56 | 52 | |
| 57 | 53 | DECLARE_READ8_MEMBER( read ); |
| 58 | 54 | DECLARE_WRITE8_MEMBER( write ); |
| 59 | 55 | |
| 60 | 56 | protected: |
| 61 | 57 | // device-level overrides |
| 62 | | virtual void device_config_complete(); |
| 63 | 58 | virtual void device_start(); |
| 64 | 59 | |
| 65 | 60 | // sound stream update overrides |
| r29529 | r29530 | |
| 78 | 73 | uint32 m_sync_times2[SYNCS_MAX2]; /* Samples per sync table */ |
| 79 | 74 | sound_stream *m_stream; |
| 80 | 75 | |
| 76 | const char *m_cpu_tag; |
| 77 | |
| 81 | 78 | void create_syncs(unsigned long sps); |
| 82 | 79 | int8 apu_square(square_t *chan); |
| 83 | 80 | int8 apu_triangle(triangle_t *chan); |
| r29529 | r29530 | |
| 90 | 87 | |
| 91 | 88 | extern const device_type NES_APU; |
| 92 | 89 | |
| 90 | #define MCFG_NES_APU_CPU(_tag) \ |
| 91 | nesapu_device::set_cpu_tag(*device, _tag); |
| 93 | 92 | |
| 93 | |
| 94 | 94 | #endif /* __NES_APU_H__ */ |
trunk/src/mess/drivers/nes.c
| r29529 | r29530 | |
| 640 | 640 | INPUT_PORTS_END |
| 641 | 641 | |
| 642 | 642 | |
| 643 | | static const nesapu_interface nes_apu_interface = |
| 644 | | { |
| 645 | | "maincpu" |
| 646 | | }; |
| 647 | | |
| 648 | | |
| 649 | 643 | void nes_state::ppu_nmi(int *ppu_regs) |
| 650 | 644 | { |
| 651 | 645 | m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); |
| r29529 | r29530 | |
| 693 | 687 | MCFG_SCREEN_UPDATE_DRIVER(nes_state, screen_update_nes) |
| 694 | 688 | MCFG_SCREEN_PALETTE("palette") |
| 695 | 689 | |
| 696 | | |
| 697 | 690 | MCFG_PALETTE_ADD("palette", 4*16*8) |
| 698 | 691 | MCFG_PALETTE_INIT_OWNER(nes_state, nes) |
| 699 | 692 | |
| r29529 | r29530 | |
| 704 | 697 | /* sound hardware */ |
| 705 | 698 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 706 | 699 | MCFG_SOUND_ADD("nessound", NES_APU, NTSC_CLOCK) |
| 707 | | MCFG_SOUND_CONFIG(nes_apu_interface) |
| 700 | MCFG_NES_APU_CPU("maincpu") |
| 708 | 701 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.90) |
| 709 | 702 | |
| 710 | 703 | MCFG_NES_CARTRIDGE_ADD("nes_slot", nes_cart, NULL) |
| r29529 | r29530 | |
| 735 | 728 | |
| 736 | 729 | /* sound hardware */ |
| 737 | 730 | MCFG_SOUND_REPLACE("nessound", NES_APU, PAL_CLOCK) |
| 738 | | MCFG_SOUND_CONFIG(nes_apu_interface) |
| 731 | MCFG_NES_APU_CPU("maincpu") |
| 739 | 732 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.90) |
| 740 | 733 | MACHINE_CONFIG_END |
| 741 | 734 | |
| r29529 | r29530 | |
| 757 | 750 | |
| 758 | 751 | /* sound hardware */ |
| 759 | 752 | MCFG_SOUND_REPLACE("nessound", NES_APU, 26601712/15) /* 26.601712MHz / 15 == 1.77344746666... MHz */ |
| 760 | | MCFG_SOUND_CONFIG(nes_apu_interface) |
| 753 | MCFG_NES_APU_CPU("maincpu") |
| 761 | 754 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.90) |
| 762 | 755 | MACHINE_CONFIG_END |
| 763 | 756 | |
trunk/src/mame/drivers/cham24.c
| r29529 | r29530 | |
| 272 | 272 | PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2) |
| 273 | 273 | INPUT_PORTS_END |
| 274 | 274 | |
| 275 | | static const nesapu_interface cham24_interface_1 = |
| 276 | | { |
| 277 | | "maincpu" |
| 278 | | }; |
| 279 | | |
| 280 | 275 | void cham24_state::machine_reset() |
| 281 | 276 | { |
| 282 | 277 | } |
| r29529 | r29530 | |
| 361 | 356 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 362 | 357 | |
| 363 | 358 | MCFG_SOUND_ADD("nesapu", NES_APU, N2A03_DEFAULTCLOCK) |
| 364 | | MCFG_SOUND_CONFIG(cham24_interface_1) |
| 359 | MCFG_NES_APU_CPU("maincpu") |
| 365 | 360 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 366 | 361 | |
| 367 | 362 | MCFG_DAC_ADD("dac") |
trunk/src/mame/drivers/famibox.c
| r29529 | r29530 | |
| 511 | 511 | |
| 512 | 512 | *******************************************************/ |
| 513 | 513 | |
| 514 | | static const nesapu_interface famibox_interface_1 = |
| 515 | | { |
| 516 | | "maincpu" |
| 517 | | }; |
| 518 | | |
| 519 | 514 | PALETTE_INIT_MEMBER(famibox_state, famibox) |
| 520 | 515 | { |
| 521 | 516 | m_ppu->init_palette(palette, 0); |
| r29529 | r29530 | |
| 574 | 569 | MCFG_CPU_ADD("maincpu", N2A03, N2A03_DEFAULTCLOCK) |
| 575 | 570 | MCFG_CPU_PROGRAM_MAP(famibox_map) |
| 576 | 571 | |
| 577 | | |
| 578 | 572 | /* video hardware */ |
| 579 | 573 | MCFG_SCREEN_ADD("screen", RASTER) |
| 580 | 574 | MCFG_SCREEN_REFRESH_RATE(60) |
| r29529 | r29530 | |
| 595 | 589 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 596 | 590 | |
| 597 | 591 | MCFG_SOUND_ADD("nesapu", NES_APU, N2A03_DEFAULTCLOCK) |
| 598 | | MCFG_SOUND_CONFIG(famibox_interface_1) |
| 592 | MCFG_NES_APU_CPU("maincpu") |
| 599 | 593 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 600 | 594 | |
| 601 | 595 | MCFG_DAC_ADD("dac") |
trunk/src/mame/drivers/playch10.c
| r29529 | r29530 | |
| 660 | 660 | device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE); |
| 661 | 661 | } |
| 662 | 662 | |
| 663 | | static const nesapu_interface nes_config = |
| 664 | | { |
| 665 | | "cart" |
| 666 | | }; |
| 667 | | |
| 668 | 663 | static MACHINE_CONFIG_START( playch10, playch10_state ) |
| 669 | 664 | // basic machine hardware |
| 670 | 665 | MCFG_CPU_ADD("maincpu", Z80, 8000000/2) // 4 MHz |
| r29529 | r29530 | |
| 705 | 700 | // sound hardware |
| 706 | 701 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 707 | 702 | MCFG_SOUND_ADD("nesapu", NES_APU, N2A03_DEFAULTCLOCK) |
| 708 | | MCFG_SOUND_CONFIG(nes_config) |
| 703 | MCFG_NES_APU_CPU("cart") |
| 709 | 704 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 710 | 705 | |
| 711 | 706 | MCFG_DAC_ADD("dac") |
trunk/src/mame/drivers/vsnes.c
| r29529 | r29530 | |
| 1696 | 1696 | PORT_DIPSETTING( 0xc0, "RP2C04-0004" ) |
| 1697 | 1697 | INPUT_PORTS_END |
| 1698 | 1698 | |
| 1699 | | static const nesapu_interface nes_interface_1 = |
| 1700 | | { |
| 1701 | | "maincpu" |
| 1702 | | }; |
| 1703 | | |
| 1704 | | static const nesapu_interface nes_interface_2 = |
| 1705 | | { |
| 1706 | | "sub" |
| 1707 | | }; |
| 1708 | | |
| 1709 | 1699 | static MACHINE_CONFIG_START( vsnes, vsnes_state ) |
| 1710 | 1700 | |
| 1711 | 1701 | /* basic machine hardware */ |
| r29529 | r29530 | |
| 1737 | 1727 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 1738 | 1728 | |
| 1739 | 1729 | MCFG_SOUND_ADD("nesapu1", NES_APU, N2A03_DEFAULTCLOCK) |
| 1740 | | MCFG_SOUND_CONFIG(nes_interface_1) |
| 1730 | MCFG_NES_APU_CPU("maincpu") |
| 1741 | 1731 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 1742 | 1732 | |
| 1743 | 1733 | MCFG_DAC_ADD("dac1") |
| r29529 | r29530 | |
| 1829 | 1819 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 1830 | 1820 | |
| 1831 | 1821 | MCFG_SOUND_ADD("nesapu1", NES_APU, N2A03_DEFAULTCLOCK) |
| 1832 | | MCFG_SOUND_CONFIG(nes_interface_1) |
| 1822 | MCFG_NES_APU_CPU("maincpu") |
| 1833 | 1823 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 1834 | 1824 | |
| 1835 | 1825 | MCFG_SOUND_ADD("nesapu2", NES_APU, N2A03_DEFAULTCLOCK) |
| 1836 | | MCFG_SOUND_CONFIG(nes_interface_2) |
| 1826 | MCFG_NES_APU_CPU("sub") |
| 1837 | 1827 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 1838 | 1828 | |
| 1839 | 1829 | MCFG_DAC_ADD("dac1") |
| r29529 | r29530 | |
| 1879 | 1869 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 1880 | 1870 | |
| 1881 | 1871 | MCFG_SOUND_ADD("nesapu1", NES_APU, N2A03_DEFAULTCLOCK) |
| 1882 | | MCFG_SOUND_CONFIG(nes_interface_1) |
| 1872 | MCFG_NES_APU_CPU("maincpu") |
| 1883 | 1873 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 1884 | 1874 | |
| 1885 | 1875 | MCFG_DAC_ADD("dac1") |
trunk/src/mame/drivers/punchout.c
| r29529 | r29530 | |
| 911 | 911 | GFXDECODE_END |
| 912 | 912 | |
| 913 | 913 | |
| 914 | | |
| 915 | | static const nesapu_interface nes_config = |
| 916 | | { |
| 917 | | "audiocpu" |
| 918 | | }; |
| 919 | | |
| 920 | 914 | void punchout_state::machine_reset() |
| 921 | 915 | { |
| 922 | 916 | m_rp5c01_mode_sel = 0; |
| r29529 | r29530 | |
| 971 | 965 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 972 | 966 | |
| 973 | 967 | MCFG_SOUND_ADD("nesapu", NES_APU, N2A03_DEFAULTCLOCK) |
| 974 | | MCFG_SOUND_CONFIG(nes_config) |
| 968 | MCFG_NES_APU_CPU("audiocpu") |
| 975 | 969 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 976 | 970 | |
| 977 | 971 | MCFG_SOUND_ADD("vlm", VLM5030, 3580000) |
trunk/src/mame/drivers/multigam.c
| r29529 | r29530 | |
| 1140 | 1140 | |
| 1141 | 1141 | *******************************************************/ |
| 1142 | 1142 | |
| 1143 | | static const nesapu_interface multigam_interface_1 = |
| 1144 | | { |
| 1145 | | "maincpu" |
| 1146 | | }; |
| 1147 | | |
| 1148 | 1143 | PALETTE_INIT_MEMBER(multigam_state, multigam) |
| 1149 | 1144 | { |
| 1150 | 1145 | m_ppu->init_palette(palette, 0); |
| r29529 | r29530 | |
| 1262 | 1257 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 1263 | 1258 | |
| 1264 | 1259 | MCFG_SOUND_ADD("nesapu", NES_APU, N2A03_DEFAULTCLOCK) |
| 1265 | | MCFG_SOUND_CONFIG(multigam_interface_1) |
| 1260 | MCFG_NES_APU_CPU("maincpu") |
| 1266 | 1261 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 1267 | 1262 | |
| 1268 | 1263 | MCFG_DAC_ADD("dac") |
trunk/src/mame/audio/dkong.c
| r29529 | r29530 | |
| 1334 | 1334 | * |
| 1335 | 1335 | *************************************/ |
| 1336 | 1336 | |
| 1337 | | static const nesapu_interface nes_interface_1 = { "n2a03a" }; |
| 1338 | | static const nesapu_interface nes_interface_2 = { "n2a03b" }; |
| 1339 | | |
| 1340 | 1337 | const tms5110_interface tms_interface = { |
| 1341 | 1338 | NULL, |
| 1342 | 1339 | NULL, |
| r29529 | r29530 | |
| 1469 | 1466 | |
| 1470 | 1467 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 1471 | 1468 | MCFG_SOUND_ADD("nesapu1", NES_APU, N2A03_DEFAULTCLOCK) |
| 1472 | | MCFG_SOUND_CONFIG(nes_interface_1) |
| 1469 | MCFG_NES_APU_CPU("n2a03a") |
| 1473 | 1470 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 1474 | 1471 | |
| 1475 | 1472 | MCFG_SOUND_ADD("nesapu2", NES_APU, N2A03_DEFAULTCLOCK) |
| 1476 | | MCFG_SOUND_CONFIG(nes_interface_2) |
| 1473 | MCFG_NES_APU_CPU("n2a03b") |
| 1477 | 1474 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 1478 | 1475 | |
| 1479 | 1476 | MACHINE_CONFIG_END |