trunk/src/devices/machine/timekpr.cpp
| r252878 | r252879 | |
| 120 | 120 | //------------------------------------------------- |
| 121 | 121 | |
| 122 | 122 | timekeeper_device::timekeeper_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source) |
| 123 | | : device_t(mconfig, type, name, tag, owner, clock, shortname, source), |
| 124 | | device_nvram_interface(mconfig, *this) |
| 125 | | , m_default_data(NULL) |
| 123 | : device_t(mconfig, type, name, tag, owner, clock, shortname, source) |
| 124 | , device_nvram_interface(mconfig, *this) |
| 125 | , m_default_data(*this, DEVICE_SELF) |
| 126 | 126 | { |
| 127 | 127 | } |
| 128 | 128 | |
| r252878 | r252879 | |
| 231 | 231 | m_century = make_bcd( systime.local_time.year / 100 ); |
| 232 | 232 | m_data.resize( m_size ); |
| 233 | 233 | |
| 234 | | if (region()) |
| 234 | if (m_default_data) |
| 235 | 235 | { |
| 236 | | m_default_data = region()->base(); |
| 237 | | if (m_default_data) |
| 238 | | { |
| 239 | | assert( region()->bytes() == m_size ); |
| 240 | | } |
| 236 | assert(m_default_data.bytes() == m_size); |
| 241 | 237 | } |
| 242 | 238 | |
| 243 | 239 | save_item( NAME(m_control) ); |
trunk/src/devices/sound/c140.cpp
| r252878 | r252879 | |
| 95 | 95 | , m_mixer_buffer_left(nullptr), |
| 96 | 96 | , m_mixer_buffer_right(nullptr), |
| 97 | 97 | , m_baserate(0), |
| 98 | | , m_rom_region(*this, this->tag()) |
| 98 | , m_rom_region(*this, DEVICE_SELF) |
| 99 | 99 | , m_pRom(nullptr) |
| 100 | 100 | { |
| 101 | 101 | memset(m_REG, 0, sizeof(UINT8)*0x200); |
| r252878 | r252879 | |
| 109 | 109 | |
| 110 | 110 | void c140_device::device_start() |
| 111 | 111 | { |
| 112 | | m_sample_rate=m_baserate=clock(); |
| 112 | m_sample_rate = m_baserate = clock(); |
| 113 | 113 | |
| 114 | 114 | m_stream = stream_alloc(0, 2, m_sample_rate); |
| 115 | 115 | |
| 116 | | if (m_rom_region) |
| 116 | if (m_rom_ptr != NULL) |
| 117 | 117 | { |
| 118 | | m_pRom = (INT8 *)m_rom_region->base(); |
| 118 | printf("asdf\n"); |
| 119 | m_pRom = m_rom_ptr; |
| 119 | 120 | } |
| 120 | 121 | |
| 121 | 122 | /* make decompress pcm table */ //2000.06.26 CAB |
| 123 | INT32 segbase = 0; |
| 124 | for(int i = 0; i < 8; i++) |
| 122 | 125 | { |
| 123 | | int i; |
| 124 | | INT32 segbase=0; |
| 125 | | for(i=0;i<8;i++) |
| 126 | | { |
| 127 | | m_pcmtbl[i]=segbase; //segment base value |
| 128 | | segbase += 16<<i; |
| 129 | | } |
| 126 | m_pcmtbl[i]=segbase; //segment base value |
| 127 | segbase += 16<<i; |
| 130 | 128 | } |
| 131 | 129 | |
| 132 | 130 | memset(m_REG,0,sizeof(m_REG)); |
| 131 | |
| 132 | for(int i = 0; i < C140_MAX_VOICE; i++) |
| 133 | 133 | { |
| 134 | | int i; |
| 135 | | for(i=0;i<C140_MAX_VOICE;i++) init_voice( &m_voi[i] ); |
| 134 | init_voice(&m_voi[i]); |
| 136 | 135 | } |
| 137 | 136 | |
| 138 | 137 | /* allocate a pair of buffers to mix into - 1 second's worth should be more than enough */ |
trunk/src/devices/sound/namco.cpp
| r252878 | r252879 | |
| 38 | 38 | namco_audio_device::namco_audio_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source) |
| 39 | 39 | : device_t(mconfig, type, name, tag, owner, clock, shortname, __FILE__), |
| 40 | 40 | , device_sound_interface(mconfig, *this) |
| 41 | | , m_wave_region(*this, this->tag()) |
| 41 | , m_wave_ptr(*this, DEVICE_SELF) |
| 42 | 42 | , m_last_channel(nullptr) |
| 43 | 43 | , m_soundregs(nullptr) |
| 44 | 44 | , m_wavedata(nullptr) |
| r252878 | r252879 | |
| 96 | 96 | logerror("Namco: freq fractional bits = %d: internal freq = %d, output freq = %d\n", m_f_fracbits, m_namco_clock, m_sample_rate); |
| 97 | 97 | |
| 98 | 98 | /* build the waveform table */ |
| 99 | | build_decoded_waveform(m_wave_region != NULL ? m_wave_region->base() : NULL); |
| 99 | build_decoded_waveform(m_wave_ptr); |
| 100 | 100 | |
| 101 | 101 | /* get stream channels */ |
| 102 | 102 | if (m_stereo) |
| r252878 | r252879 | |
| 110 | 110 | /* register with the save state system */ |
| 111 | 111 | save_pointer(NAME(m_soundregs), 0x400); |
| 112 | 112 | |
| 113 | | if (m_wave_region == nullptr) |
| 113 | if (m_wave_ptr == nullptr) |
| 114 | 114 | save_pointer(NAME(m_wavedata), 0x400); |
| 115 | 115 | |
| 116 | 116 | save_item(NAME(m_voices)); |
trunk/src/devices/sound/scsp.h
| r252878 | r252879 | |
| 45 | 45 | |
| 46 | 46 | struct SCSP_LFO_t |
| 47 | 47 | { |
| 48 | | unsigned short phase; |
| 48 | UINT16 phase; |
| 49 | 49 | UINT32 phase_step; |
| 50 | 50 | int *table; |
| 51 | 51 | int *scale; |
| r252878 | r252879 | |
| 69 | 69 | SCSP_LFO_t PLFO; //Phase LFO |
| 70 | 70 | SCSP_LFO_t ALFO; //Amplitude LFO |
| 71 | 71 | int slot; |
| 72 | | signed short Prev; //Previous sample (for interpolation) |
| 72 | INT16 Prev; //Previous sample (for interpolation) |
| 73 | 73 | }; |
| 74 | 74 | |
| 75 | 75 | |
| r252878 | r252879 | |
| 113 | 113 | } m_udata; |
| 114 | 114 | |
| 115 | 115 | SCSP_SLOT m_Slots[32]; |
| 116 | | signed short m_RINGBUF[128]; |
| 117 | | unsigned char m_BUFPTR; |
| 116 | INT16 m_RINGBUF[128]; |
| 117 | UINT8 m_BUFPTR; |
| 118 | 118 | #if FM_DELAY |
| 119 | | signed short m_DELAYBUF[FM_DELAY]; |
| 120 | | unsigned char m_DELAYPTR; |
| 119 | INT16 m_DELAYBUF[FM_DELAY]; |
| 120 | UINT8 m_DELAYPTR; |
| 121 | 121 | #endif |
| 122 | | unsigned char *m_SCSPRAM; |
| 122 | UINT8 *m_SCSPRAM; |
| 123 | 123 | UINT32 m_SCSPRAM_LENGTH; |
| 124 | 124 | char m_Master; |
| 125 | 125 | sound_stream * m_stream; |
| r252878 | r252879 | |
| 168 | 168 | |
| 169 | 169 | int m_length; |
| 170 | 170 | |
| 171 | | signed short *m_RBUFDST; //this points to where the sample will be stored in the RingBuf |
| 171 | INT16 *m_RBUFDST; //this points to where the sample will be stored in the RingBuf |
| 172 | 172 | |
| 173 | 173 | //LFO |
| 174 | 174 | int m_PLFO_TRI[256], m_PLFO_SQR[256], m_PLFO_SAW[256], m_PLFO_NOI[256]; |
| r252878 | r252879 | |
| 177 | 177 | int m_ASCALES[8][256]; |
| 178 | 178 | |
| 179 | 179 | void exec_dma(address_space &space); /*state DMA transfer function*/ |
| 180 | | unsigned char DecodeSCI(unsigned char irq); |
| 180 | UINT8 DecodeSCI(UINT8 irq); |
| 181 | 181 | void CheckPendingIRQ(); |
| 182 | 182 | void MainCheckPendingIRQ(UINT16 irq_type); |
| 183 | 183 | void ResetInterrupts(); |
| r252878 | r252879 | |
| 192 | 192 | UINT32 Step(SCSP_SLOT *slot); |
| 193 | 193 | void Compute_LFO(SCSP_SLOT *slot); |
| 194 | 194 | void StartSlot(SCSP_SLOT *slot); |
| 195 | | void StopSlot(SCSP_SLOT *slot,int keyoff); |
| 195 | void StopSlot(SCSP_SLOT *slot, int keyoff); |
| 196 | 196 | void init(); |
| 197 | | void UpdateSlotReg(int s,int r); |
| 197 | void UpdateSlotReg(int s, int r); |
| 198 | 198 | void UpdateReg(address_space &space, int reg); |
| 199 | | void UpdateSlotRegR(int slot,int reg); |
| 199 | void UpdateSlotRegR(int slot, int reg); |
| 200 | 200 | void UpdateRegR(address_space &space, int reg); |
| 201 | | void w16(address_space &space,unsigned int addr,unsigned short val); |
| 202 | | unsigned short r16(address_space &space, unsigned int addr); |
| 201 | void w16(address_space &space, UINT32 addr, UINT16 val); |
| 202 | UINT16 r16(address_space &space, UINT32 addr); |
| 203 | 203 | inline INT32 UpdateSlot(SCSP_SLOT *slot); |
| 204 | 204 | void DoMasterSamples(int nsamples); |
| 205 | 205 | |
| 206 | 206 | //LFO |
| 207 | 207 | void LFO_Init(); |
| 208 | | signed int PLFO_Step(SCSP_LFO_t *LFO); |
| 209 | | signed int ALFO_Step(SCSP_LFO_t *LFO); |
| 210 | | void LFO_ComputeStep(SCSP_LFO_t *LFO,UINT32 LFOF,UINT32 LFOWS,UINT32 LFOS,int ALFO); |
| 208 | INT32 PLFO_Step(SCSP_LFO_t *LFO); |
| 209 | INT32 ALFO_Step(SCSP_LFO_t *LFO); |
| 210 | void LFO_ComputeStep(SCSP_LFO_t *LFO, UINT32 LFOF, UINT32 LFOWS, UINT32 LFOS, int ALFO); |
| 211 | 211 | }; |
| 212 | 212 | |
| 213 | 213 | extern const device_type SCSP; |
trunk/src/devices/sound/tms5110.cpp
| r252878 | r252879 | |
| 1049 | 1049 | |
| 1050 | 1050 | void tms5110_device::device_start() |
| 1051 | 1051 | { |
| 1052 | | m_table = NULL; |
| 1053 | | if (m_table_region != NULL) |
| 1054 | | { |
| 1055 | | m_table = m_table_region->base(); |
| 1056 | | } |
| 1057 | | |
| 1058 | 1052 | set_variant(TMS5110_IS_TMS5110A); |
| 1059 | 1053 | |
| 1060 | 1054 | /* resolve lines */ |
| r252878 | r252879 | |
| 1537 | 1531 | tms5110_device::tms5110_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) |
| 1538 | 1532 | : device_t(mconfig, TMS5110, "TMS5110", tag, owner, clock, "tms5110", __FILE__), |
| 1539 | 1533 | , device_sound_interface(mconfig, *this) |
| 1540 | | , m_table_region(*this, this->tag()) |
| 1534 | , m_table(*this, DEVICE_SELF) |
| 1541 | 1535 | , m_m0_cb(*this) |
| 1542 | 1536 | , m_m1_cb(*this) |
| 1543 | 1537 | , m_addr_cb(*this) |
| r252878 | r252879 | |
| 1549 | 1543 | tms5110_device::tms5110_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source) |
| 1550 | 1544 | : device_t(mconfig, type, name, tag, owner, clock, shortname, source) |
| 1551 | 1545 | , device_sound_interface(mconfig, *this) |
| 1552 | | , m_table_region(*this, this->tag()) |
| 1546 | , m_table(*this, DEVICE_SELF) |
| 1553 | 1547 | , m_m0_cb(*this) |
| 1554 | 1548 | , m_m1_cb(*this) |
| 1555 | 1549 | , m_addr_cb(*this) |
trunk/src/devices/sound/upd7759.cpp
| r252878 | r252879 | |
| 171 | 171 | , m_adpcm_state(0) |
| 172 | 172 | , m_adpcm_data(0) |
| 173 | 173 | , m_sample(0) |
| 174 | | , m_rom_region(*this, this->tag()) |
| 174 | , m_rom_region(*this, DEVICE_SELF) |
| 175 | 175 | , m_rom(nullptr) |
| 176 | 176 | , m_rombase(nullptr) |
| 177 | 177 | , m_romoffset(0) |
| r252878 | r252879 | |
| 232 | 232 | |
| 233 | 233 | /* compute the ROM base or allocate a timer */ |
| 234 | 234 | m_romoffset = 0; |
| 235 | | if (m_rom_region != nullptr) |
| 235 | m_rom = m_rombase; |
| 236 | if (m_rombase != nullptr) |
| 236 | 237 | { |
| 237 | | m_rom = m_rombase = m_rom_region->base(); |
| 238 | | |
| 239 | | UINT32 romsize = m_rom_region->bytes(); |
| 238 | UINT32 romsize = m_rombase.bytes(); |
| 240 | 239 | if (romsize >= 0x20000) |
| 241 | 240 | { |
| 242 | 241 | m_rommask = 0x1ffff; |
| r252878 | r252879 | |
| 314 | 313 | |
| 315 | 314 | /* compute the ROM base or allocate a timer */ |
| 316 | 315 | m_romoffset = 0; |
| 317 | | if (m_rom_region != nullptr) |
| 316 | m_rom = m_rombase; |
| 317 | if (m_rombase != nullptr) |
| 318 | 318 | { |
| 319 | | m_rom = m_rombase = m_rom_region->base(); |
| 320 | | |
| 321 | | UINT32 romsize = region()->bytes(); |
| 319 | UINT32 romsize = m_rombase.bytes(); |
| 322 | 320 | if (romsize >= 0x20000) |
| 323 | 321 | { |
| 324 | 322 | m_rommask = 0x1ffff; |
| r252878 | r252879 | |
| 735 | 733 | void upd775x_device::postload() |
| 736 | 734 | { |
| 737 | 735 | if (m_rombase) |
| 736 | { |
| 738 | 737 | m_rom = m_rombase + m_romoffset; |
| 738 | } |
| 739 | 739 | } |
| 740 | 740 | |
| 741 | 741 | /************************************************************ |
trunk/src/devices/sound/ymf271.cpp
| r252878 | r252879 | |
| 1706 | 1706 | m_timA = timer_alloc(0); |
| 1707 | 1707 | m_timB = timer_alloc(1); |
| 1708 | 1708 | |
| 1709 | | if (m_mem_region != NULL) |
| 1710 | | { |
| 1711 | | m_mem_base = m_mem_region->base(); |
| 1712 | | m_mem_size = m_mem_region->bytes(); |
| 1713 | | } |
| 1709 | m_mem_size = m_mem_base.bytes(); |
| 1710 | |
| 1714 | 1711 | m_irq_handler.resolve(); |
| 1715 | 1712 | |
| 1716 | 1713 | m_ext_read_handler.resolve(); |
| r252878 | r252879 | |
| 1760 | 1757 | , m_ext_address(0) |
| 1761 | 1758 | , m_ext_rw(0) |
| 1762 | 1759 | , m_ext_readlatch(0) |
| 1763 | | , m_mem_base(NULL) |
| 1760 | , m_mem_base(*this, DEVICE_SELF) |
| 1764 | 1761 | , m_mem_size(0) |
| 1765 | | , m_irq_handler(*this) |
| 1766 | | , m_ext_read_handler(*this) |
| 1767 | | , m_ext_write_handler(*this) |
| 1768 | | , m_mem_region(*this, this->tag()) |
| 1769 | 1762 | , m_clock(0) |
| 1770 | 1763 | , m_timA(nullptr) |
| 1771 | 1764 | , m_timB(nullptr) |
| 1772 | 1765 | , m_stream(nullptr) |
| 1773 | 1766 | , m_mix_buffer(nullptr) |
| 1767 | , m_irq_handler(*this) |
| 1768 | , m_ext_read_handler(*this) |
| 1769 | , m_ext_write_handler(*this) |
| 1774 | 1770 | { |
| 1775 | 1771 | memset(m_slots, 0, sizeof(m_slots)); |
| 1776 | 1772 | memset(m_groups, 0, sizeof(m_groups)); |
trunk/src/mame/video/sega16sp.cpp
| r252878 | r252879 | |
| 826 | 826 | |
| 827 | 827 | sega_sys16b_sprite_device::sega_sys16b_sprite_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) |
| 828 | 828 | : sega_16bit_sprite_device(mconfig, SEGA_SYS16B_SPRITES, "Sega System 16B Sprites", tag, owner, "sega_16bit_sprite", __FILE__) |
| 829 | | , m_sprite_region(*this, this->tag()) |
| 829 | , m_sprite_region_ptr(*this, DEVICE_SELF) |
| 830 | 830 | { |
| 831 | 831 | set_local_origin(184, 0x00, -184, 0); |
| 832 | 832 | } |
| r252878 | r252879 | |
| 869 | 869 | // |
| 870 | 870 | |
| 871 | 871 | // if the game does not have sprites, don't try to draw anything |
| 872 | | if (m_sprite_region == NULL) |
| 872 | if (m_sprite_region_ptr == NULL) |
| 873 | 873 | { |
| 874 | 874 | return; |
| 875 | 875 | } |
| 876 | 876 | |
| 877 | 877 | // render the sprites in order |
| 878 | | const UINT16 *spritebase = reinterpret_cast<const UINT16 *>(m_sprite_region->base()); |
| 879 | | UINT8 numbanks = m_sprite_region->bytes() / 0x20000; |
| 878 | const UINT16 *spritebase = m_sprite_region_ptr; |
| 879 | UINT8 numbanks = m_sprite_region_ptr.bytes() / 0x20000; |
| 880 | 880 | UINT16 *ramend = spriteram() + spriteram_elements(); |
| 881 | 881 | for (UINT16 *data = spriteram(); data < ramend; data += 8) |
| 882 | 882 | { |