diff options
Diffstat (limited to 'src/emu')
| -rw-r--r-- | src/emu/cpu/i386/i386.c | 2 | ||||
| -rw-r--r-- | src/emu/cpu/lr35902/lr35902.c | 2 | ||||
| -rw-r--r-- | src/emu/cpu/m6502/ill02.h | 2 | ||||
| -rw-r--r-- | src/emu/cpu/m68000/m68kcpu.c | 6 | ||||
| -rw-r--r-- | src/emu/cpu/powerpc/ppcdrc.c | 4 | ||||
| -rw-r--r-- | src/emu/device.h | 4 | ||||
| -rw-r--r-- | src/emu/imagedev/flopdrv.c | 4 | ||||
| -rw-r--r-- | src/emu/imagedev/flopdrv.h | 8 | ||||
| -rw-r--r-- | src/emu/machine/ins8250.c | 16 | ||||
| -rw-r--r-- | src/emu/machine/nscsi_hd.c | 2 | ||||
| -rw-r--r-- | src/emu/save.h | 2 | ||||
| -rw-r--r-- | src/emu/sound/k054539.c | 16 | ||||
| -rw-r--r-- | src/emu/sound/k054539.h | 20 | ||||
| -rw-r--r-- | src/emu/sound/votrax.c | 382 | ||||
| -rw-r--r-- | src/emu/sound/votrax.h | 34 | ||||
| -rw-r--r-- | src/emu/video/bufsprite.h | 8 |
16 files changed, 256 insertions, 256 deletions
diff --git a/src/emu/cpu/i386/i386.c b/src/emu/cpu/i386/i386.c index c187d4f3cb1..c8e3b51ae51 100644 --- a/src/emu/cpu/i386/i386.c +++ b/src/emu/cpu/i386/i386.c @@ -406,7 +406,7 @@ static int i386_limit_check(i386_state *cpustate, int seg, UINT32 offset) if((cpustate->sreg[seg].flags & 0x0018) == 0x0010 && cpustate->sreg[seg].flags & 0x0004) // if expand-down data segment { // compare if greater then 0xffffffff when we're passed the access size - if((offset <= cpustate->sreg[seg].limit) || ((cpustate->sreg[seg].d)?0:(offset > 0xffff))) + if((offset <= cpustate->sreg[seg].limit) || ((cpustate->sreg[seg].d)?0:(offset > 0xffff))) { logerror("Limit check at 0x%08x failed. Segment %04x, limit %08x, offset %08x (expand-down)\n",cpustate->pc,cpustate->sreg[seg].selector,cpustate->sreg[seg].limit,offset); return 1; diff --git a/src/emu/cpu/lr35902/lr35902.c b/src/emu/cpu/lr35902/lr35902.c index 04b182de438..bce0d609671 100644 --- a/src/emu/cpu/lr35902/lr35902.c +++ b/src/emu/cpu/lr35902/lr35902.c @@ -157,7 +157,7 @@ void lr35902_cpu_device::device_start() state_add(STATE_GENPC, "curpc", m_PC).callimport().callexport().formatstr("%8s").noshow(); state_add(STATE_GENFLAGS, "GENFLAGS", m_F).mask(0xf0).formatstr("%8s").noshow(); - + m_icountptr = &m_icount; } diff --git a/src/emu/cpu/m6502/ill02.h b/src/emu/cpu/m6502/ill02.h index b47a161f07d..fa21452c444 100644 --- a/src/emu/cpu/m6502/ill02.h +++ b/src/emu/cpu/m6502/ill02.h @@ -175,7 +175,7 @@ /* 6510 ******************************************************** * OAL load accumulator and index X ***************************************************************/ -#define OAL_6510 \ +#define OAL_6510 \ A = X = (UINT8)((A|0xee)&tmp); \ SET_NZ(A) diff --git a/src/emu/cpu/m68000/m68kcpu.c b/src/emu/cpu/m68000/m68kcpu.c index cac4f1e45ef..18b6ab54e7c 100644 --- a/src/emu/cpu/m68000/m68kcpu.c +++ b/src/emu/cpu/m68000/m68kcpu.c @@ -1911,7 +1911,7 @@ CPU_GET_INFO( m68000 ) static CPU_INIT( m68301 ) { -// m68ki_cpu_core *m68k = get_safe_token(device); +// m68ki_cpu_core *m68k = get_safe_token(device); CPU_INIT_CALL(m68000); @@ -1941,8 +1941,8 @@ static CPU_INIT( m68307 ) CPU_INIT_CALL(m68000); /* basic CS logic, timers, mbus, serial logic - set via remappable register - */ + set via remappable register + */ new(&m68k->memory) m68k_memory_interface; m68k->memory.init16_68307(*m68k->program); diff --git a/src/emu/cpu/powerpc/ppcdrc.c b/src/emu/cpu/powerpc/ppcdrc.c index 3620f4f45d6..5768cce5302 100644 --- a/src/emu/cpu/powerpc/ppcdrc.c +++ b/src/emu/cpu/powerpc/ppcdrc.c @@ -2270,9 +2270,9 @@ static void generate_compute_flags(powerpc_state *ppc, drcuml_block *block, cons if (xermask & XER_OV) { UML_ROLAND(block, I0, I0, 31, 1); // roland i0,i0,31,0x0001 - UML_OR(block, XERSO32, XERSO32, I0); // or [xerso],i0 + UML_OR(block, XERSO32, XERSO32, I0); // or [xerso],i0 UML_AND(block, CR32(0), CR32(0), 0xfffffffe); // and [cr0], [cr0], 0xfffffffe (clear SO copy in CR32) - UML_OR(block, CR32(0), I1, XERSO32); // or [cr0],i1,[xerso] + UML_OR(block, CR32(0), I1, XERSO32); // or [cr0],i1,[xerso] } else { diff --git a/src/emu/device.h b/src/emu/device.h index 3decd2e6cf5..b45a21aecdf 100644 --- a/src/emu/device.h +++ b/src/emu/device.h @@ -365,7 +365,7 @@ protected: optional_shared_ptr(device_t &base, const char *tag) : auto_finder_type<_PointerType *, false>(base, tag), m_bytes(0) { } virtual void findit(device_t &base) { this->set_target(reinterpret_cast<_PointerType *>(this->find_shared_ptr(base, this->m_tag, m_bytes))); } UINT32 bytes() const { return m_bytes; } - + private: // internal state size_t m_bytes; @@ -379,7 +379,7 @@ protected: required_shared_ptr(device_t &base, const char *tag) : auto_finder_type<_PointerType *, true>(base, tag), m_bytes(0) { } virtual void findit(device_t &base) { this->set_target(reinterpret_cast<_PointerType *>(this->find_shared_ptr(base, this->m_tag, m_bytes))); } UINT32 bytes() const { return m_bytes; } - + private: // internal state size_t m_bytes; diff --git a/src/emu/imagedev/flopdrv.c b/src/emu/imagedev/flopdrv.c index 8ef5b40eb2b..d73cd441df8 100644 --- a/src/emu/imagedev/flopdrv.c +++ b/src/emu/imagedev/flopdrv.c @@ -963,8 +963,8 @@ void legacy_floppy_image_device::device_config_complete() cnt++; } image_specify_extension( m_extension_list, 256, floppy_options[i].extensions ); - } - + } + // set brief and instance name update_names(); } diff --git a/src/emu/imagedev/flopdrv.h b/src/emu/imagedev/flopdrv.h index 00150fa4288..8f113b711f6 100644 --- a/src/emu/imagedev/flopdrv.h +++ b/src/emu/imagedev/flopdrv.h @@ -191,7 +191,7 @@ public: ~legacy_floppy_image_device(); virtual bool call_load(); - virtual bool call_softlist_load(char *swlist, char *swname, rom_entry *start_entry) { return load_software(swlist, swname, start_entry); } + virtual bool call_softlist_load(char *swlist, char *swname, rom_entry *start_entry) { return load_software(swlist, swname, start_entry); } virtual bool call_create(int format_type, option_resolution *format_options); virtual void call_unload(); virtual void call_display_info(); @@ -206,14 +206,14 @@ public: virtual const char *image_interface() const; virtual const char *file_extensions() const { return m_extension_list; } virtual const option_guide *create_option_guide() const { return floppy_option_guide; } - + // access to legacy token - void *token() const { assert(m_token != NULL); return m_token; } + void *token() const { assert(m_token != NULL); return m_token; } protected: // device overrides virtual void device_config_complete(); virtual void device_start(); - + void *m_token; char m_extension_list[256]; }; diff --git a/src/emu/machine/ins8250.c b/src/emu/machine/ins8250.c index 9e69a11c154..6b6d07fb369 100644 --- a/src/emu/machine/ins8250.c +++ b/src/emu/machine/ins8250.c @@ -21,7 +21,7 @@ the BIOS dependent on the flaws being present, so subsequent parts like the The original 8250 pulses the interrupt line if a higher priority interrupt is cleared but a lower priority one is still active. It also clears the tsre bit -for a moment before loading the tsr from the thr. These may be the bugs the +for a moment before loading the tsr from the thr. These may be the bugs the PC and XT depend on as the 8250A and up fix them. INS8250-B @@ -140,7 +140,7 @@ void ins8250_uart_device::update_interrupt() { m_regs.iir |=0x04; if ((m_int_pending & COM_INT_PENDING_CHAR_TIMEOUT) == 0x11) - m_regs.iir |= 0x08; + m_regs.iir |= 0x08; } else if (m_regs.ier & m_int_pending & COM_INT_PENDING_TRANSMITTER_HOLDING_REGISTER_EMPTY) m_regs.iir |=0x02; @@ -390,16 +390,16 @@ void ns16550_device::rcv_complete() { if(!(m_regs.fcr & 1)) return ins8250_uart_device::rcv_complete(); - + receive_register_extract(); - + if(m_rnum == 16) { m_regs.lsr |= 0x02; //overrun trigger_int(COM_INT_PENDING_RECEIVER_LINE_STATUS); return; } - + m_regs.lsr |= 0x01; m_rfifo[m_rhead] = get_received_char(); ++m_rhead &= 0x0f; @@ -568,7 +568,7 @@ UINT8 ns16550_device::pop_rx() { UINT8 data = m_rfifo[m_rtail]; clear_int(COM_INT_PENDING_CHAR_TIMEOUT & ~1); // don't clear bit 1 yet - + if(m_rnum) { ++m_rtail &= 0x0f; @@ -576,13 +576,13 @@ UINT8 ns16550_device::pop_rx() } else data = 0; - + if(m_rnum < m_rintlvl) clear_int(COM_INT_PENDING_RECEIVED_DATA_AVAILABLE); if(m_rnum) set_timer(); - else + else { m_timeout->adjust(attotime::never); m_regs.lsr &= ~1; diff --git a/src/emu/machine/nscsi_hd.c b/src/emu/machine/nscsi_hd.c index 911c68edf0a..4138cc96127 100644 --- a/src/emu/machine/nscsi_hd.c +++ b/src/emu/machine/nscsi_hd.c @@ -161,7 +161,7 @@ void nscsi_harddisk_device::scsi_command() scsi_cmdbuf[pos++] = 0x00; // Meh scsi_cmdbuf[pos++] = 0x00; // Double meh break; - + case 0x03: { // Format parameters page scsi_cmdbuf[pos++] = 0x83; // PS, page id scsi_cmdbuf[pos++] = 0x16; // Page length diff --git a/src/emu/save.h b/src/emu/save.h index 95c619464f6..17131178ae4 100644 --- a/src/emu/save.h +++ b/src/emu/save.h @@ -307,7 +307,7 @@ inline void save_manager::save_item(const char *module, const char *tag, int ind //------------------------------------------------- -// save_item - specialized save_item for +// save_item - specialized save_item for // dynamic_arrays //------------------------------------------------- diff --git a/src/emu/sound/k054539.c b/src/emu/sound/k054539.c index eac3b10d314..25bad3fc9c9 100644 --- a/src/emu/sound/k054539.c +++ b/src/emu/sound/k054539.c @@ -123,7 +123,7 @@ void k054539_device::sound_stream_update(sound_stream &stream, stream_sample_t * else lval = rval = 0; rbase[reverb_pos] = 0; - + for(int ch=0; ch<8; ch++) if(regs[0x22c] & (1<<ch)) { unsigned char *base1 = regs + 0x20*ch; @@ -165,7 +165,7 @@ void k054539_device::sound_stream_update(sound_stream &stream, stream_sample_t * rdelta = (rdelta + reverb_pos) & 0x3fff; int cur_pos = (base1[0x0c] | (base1[0x0d] << 8) | (base1[0x0e] << 16)) & rom_mask; - + int fdelta, pdelta; if(base2[0] & 0x20) { delta = -delta; @@ -281,12 +281,12 @@ void k054539_device::sound_stream_update(sound_stream &stream, stream_sample_t * lval += cur_val * lvol; rval += cur_val * rvol; rbase[(rdelta + reverb_pos) & 0x1fff] += INT16(cur_val*rbvol); - + chan->pos = cur_pos; chan->pfrac = cur_pfrac; chan->pval = cur_pval; chan->val = cur_val; - + if(regupdate()) { base1[0x0c] = cur_pos & 0xff; base1[0x0d] = cur_pos>> 8 & 0xff; @@ -349,11 +349,11 @@ WRITE8_MEMBER(k054539_device::write) int voice, reg; /* The K054539 has behavior like many other wavetable chips including - the Ensoniq 550x and Gravis GF-1: if a voice is active, writing - to it's current position is silently ignored. + the Ensoniq 550x and Gravis GF-1: if a voice is active, writing + to it's current position is silently ignored. - Dadandaan depends on this or the vocals go wrong. - */ + Dadandaan depends on this or the vocals go wrong. + */ if (offset < 8*0x20) { voice = offset / 0x20; diff --git a/src/emu/sound/k054539.h b/src/emu/sound/k054539.h index 898fea4413b..f49ab6d0098 100644 --- a/src/emu/sound/k054539.h +++ b/src/emu/sound/k054539.h @@ -55,16 +55,16 @@ public: void init_flags(int flags); /* - Note that the eight PCM channels of a K054539 do not have separate - volume controls. Considering the global attenuation equation may not - be entirely accurate, k054539_set_gain() provides means to control - channel gain. It can be called anywhere but preferrably from - DRIVER_INIT(). - - Parameters: - channel : 0 - 7 - gain : 0.0=silent, 1.0=no gain, 2.0=twice as loud, etc. - */ + Note that the eight PCM channels of a K054539 do not have separate + volume controls. Considering the global attenuation equation may not + be entirely accurate, k054539_set_gain() provides means to control + channel gain. It can be called anywhere but preferrably from + DRIVER_INIT(). + + Parameters: + channel : 0 - 7 + gain : 0.0=silent, 1.0=no gain, 2.0=twice as loud, etc. + */ void set_gain(int channel, double gain); protected: diff --git a/src/emu/sound/votrax.c b/src/emu/sound/votrax.c index b25ad8ef8ae..83e06859da1 100644 --- a/src/emu/sound/votrax.c +++ b/src/emu/sound/votrax.c @@ -95,21 +95,21 @@ const char *const votrax_sc01_device::s_phoneme_table[64] = // it is only an approximation const double votrax_sc01_device::s_glottal_wave[16] = { - 0, - 16.0/22.0, - -22.0/22.0, - -17.0/22.0, - -15.0/22.0, - -10.0/22.0, - -7.0/22.0, + 0, + 16.0/22.0, + -22.0/22.0, + -17.0/22.0, + -15.0/22.0, + -10.0/22.0, + -7.0/22.0, -4.0/22.0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, 0 }; @@ -161,14 +161,14 @@ WRITE8_MEMBER( votrax_sc01_device::write ) // only 6 bits matter m_phoneme = data & 0x3f; const UINT8 *rom = m_rom + (m_phoneme << 3); -mame_printf_debug("%s: STROBE %s (F1=%X F2=%X FC=%X F3=%X F2Q=%X VA=%X FA=%X CL=%X CLD=%X VD=%X PAC=%X PH=%02X)\n", +mame_printf_debug("%s: STROBE %s (F1=%X F2=%X FC=%X F3=%X F2Q=%X VA=%X FA=%X CL=%X CLD=%X VD=%X PAC=%X PH=%02X)\n", machine().time().as_string(3), s_phoneme_table[m_phoneme], rom[0] >> 4, rom[1] >> 4, rom[2] >> 4, rom[3] >> 4, rom[4] >> 4, rom[5] >> 4, rom[6] >> 4, rom[3] & 0xf, rom[4] & 0xf, rom[5] & 0xf, rom[6] & 0xf, rom[7]); - + // the STROBE signal resets the phoneme counter m_counter_84 = 0xf; - + // not in the schematics, but necessary to fully reset the request latch m_latch_92 = 0; @@ -179,8 +179,8 @@ mame_printf_debug("%s: STROBE %s (F1=%X F2=%X FC=%X F3=%X F2Q=%X VA=%X FA=%X CL= //------------------------------------------------- -// inflection_w - handle a write to the -// inflection bits +// inflection_w - handle a write to the +// inflection bits //------------------------------------------------- WRITE8_MEMBER( votrax_sc01_device::inflection_w ) @@ -189,7 +189,7 @@ WRITE8_MEMBER( votrax_sc01_device::inflection_w ) data &= 3; if (m_inflection == data) return; - + // append an inflection marker m_stream->update(); m_inflection = data; @@ -202,83 +202,83 @@ WRITE8_MEMBER( votrax_sc01_device::inflection_w ) //************************************************************************** //------------------------------------------------- -// update_subphoneme_clock_period - re-compute the -// period of the sub-phoneme clock, as a multiple +// update_subphoneme_clock_period - re-compute the +// period of the sub-phoneme clock, as a multiple // of the master clock //------------------------------------------------- void votrax_sc01_device::update_subphoneme_clock_period() { assert(m_latch_80 < 128); - + /* - The sub-phoneme timing circuit is based off the switching capacitor - technique described in the Votrax patent. Replacing the capacitor - ladder with [Rx] representing the effective resistance, the circuit - becomes essentially a pair of op-amps: - - VM - | i1 - [R1] - | Vc - +----------------------+ - | +---|C1|---+ | - [R2] | | | |\ - |Vb i2 | |\ | +--++\ - +--[Rx]--+----+-\ | | > - | | >--+-----+-/ - [R3] +----++/ Vc |/ - |i3 | |/ - +--------+ Va - | - [R4] - | - 0 - - We have two op-amps, the left used as a standard amplifier, the right - one as a comparator. The circuit triggers when the two inputs of the - right op-amp are equal. - - The left part of the circuit (before C1) is simply a current injector. - It's all made of resistors, there's no modulated input, so everything - is going to be constant. If you don't know about op-amps used as - amplifiers, you just need to know that it forces its two inputs to - have the same voltage while not sending or providing any current - through there (only though its output in fact). - - In the schema, the injected current is i2. Basic equations apply: - Va = R4.i3 - Vb = Va + R3.i3 - Vb = Va + Rx.i2 - Vc = Vb + R2.i1 - VM = Vc + R1.i1 - i1 = i2 + i3 - - And the tipping happens when the voltage on the right of C1 reaches - Vc, so: - Vc = Va + i2.T/C1 - - (i2 being a constant, the integration is kinda easy) - - Some maths later: - R3.i3 = Rx.i2 -> i3 = Rx/R3.i2 - i1 = (1+Rx/R3).i2 - Va + (Rx + R2 + R2.Rx/R3).i2 = Va + T/C1.i2 - T = C1*(Rx*(1+R2/R3) + R2) - - Which isn't, interestingly though not surprisingly, dependant on Vm, - R1 or R4. And you have to round it to the next multiple of - 0.2ms+0.1ms due to the clocking on p2 and its offset to p1 (charging - only happens on p1 active), and add one p1/p2 cycle (0.2ms) for the - discharge. - - So now you have your base clock, which you have to multiply by 16 to - get the phoneme length. - - r2 = 9e3 - r3 = 1e3 - c1 = 1000e-12 - rx = 1/(5KHz * cx) + The sub-phoneme timing circuit is based off the switching capacitor + technique described in the Votrax patent. Replacing the capacitor + ladder with [Rx] representing the effective resistance, the circuit + becomes essentially a pair of op-amps: + + VM + | i1 + [R1] + | Vc + +----------------------+ + | +---|C1|---+ | + [R2] | | | |\ + |Vb i2 | |\ | +--++\ + +--[Rx]--+----+-\ | | > + | | >--+-----+-/ + [R3] +----++/ Vc |/ + |i3 | |/ + +--------+ Va + | + [R4] + | + 0 + + We have two op-amps, the left used as a standard amplifier, the right + one as a comparator. The circuit triggers when the two inputs of the + right op-amp are equal. + + The left part of the circuit (before C1) is simply a current injector. + It's all made of resistors, there's no modulated input, so everything + is going to be constant. If you don't know about op-amps used as + amplifiers, you just need to know that it forces its two inputs to + have the same voltage while not sending or providing any current + through there (only though its output in fact). + + In the schema, the injected current is i2. Basic equations apply: + Va = R4.i3 + Vb = Va + R3.i3 + Vb = Va + Rx.i2 + Vc = Vb + R2.i1 + VM = Vc + R1.i1 + i1 = i2 + i3 + + And the tipping happens when the voltage on the right of C1 reaches + Vc, so: + Vc = Va + i2.T/C1 + + (i2 being a constant, the integration is kinda easy) + + Some maths later: + R3.i3 = Rx.i2 -> i3 = Rx/R3.i2 + i1 = (1+Rx/R3).i2 + Va + (Rx + R2 + R2.Rx/R3).i2 = Va + T/C1.i2 + T = C1*(Rx*(1+R2/R3) + R2) + + Which isn't, interestingly though not surprisingly, dependant on Vm, + R1 or R4. And you have to round it to the next multiple of + 0.2ms+0.1ms due to the clocking on p2 and its offset to p1 (charging + only happens on p1 active), and add one p1/p2 cycle (0.2ms) for the + discharge. + + So now you have your base clock, which you have to multiply by 16 to + get the phoneme length. + + r2 = 9e3 + r3 = 1e3 + c1 = 1000e-12 + rx = 1/(5KHz * cx) */ // determine total capacitance @@ -290,7 +290,7 @@ void votrax_sc01_device::update_subphoneme_clock_period() if ((m_latch_80 & 0x10) != 0) cx += 86e-12; if ((m_latch_80 & 0x20) != 0) cx += 173e-12; if ((m_latch_80 & 0x40) != 0) cx += 345e-12; - + // apply the equation above to determine charging time // note that the 5kHz listed above for P1 is for a nominal master // clock frequency of 1.28MHz, meaning it is master clock / 128 @@ -298,7 +298,7 @@ void votrax_sc01_device::update_subphoneme_clock_period() double p1_frequency = double(m_master_clock_freq) / double(1 << (P_CLOCK_BIT + 2)); double rx = 1.0 / (p1_frequency * cx); double period = 1000e-12 * (rx * (1.0 + 9e3 / 1e3) + 9e3); - + // convert to master clock cycles and round up m_subphoneme_period = UINT32(ceil(period * double(m_master_clock_freq))); } @@ -489,9 +489,9 @@ void votrax_sc01_device::filter_s_to_z(const double *k, double fs, double *a, do double fpeak = sqrt(fabs(k[0]*k[1]-k[2]))/(2*M_PI*k[2]); double zc = 2*M_PI*fpeak/tan(M_PI*fpeak/fs); - double m0 = zc*k[0]; - double m1 = zc*k[1]; - double m2 = zc*zc*k[2]; + double m0 = zc*k[0]; + double m1 = zc*k[1]; + double m2 = zc*zc*k[2]; a[0] = 1+m0; a[1] = 3+m0; @@ -578,7 +578,7 @@ if (LOG_TIMING | LOG_LOWPARAM | LOG_GLOTTAL | LOG_TRANSITION) // update master clock m_master_clock ^= 1; - + // on the falling edge of the master clock, advance the 10-bit counter at 34 UINT8 old_latch_72 = m_latch_72; if (m_master_clock == 0) @@ -590,41 +590,41 @@ if (LOG_TIMING | LOG_LOWPARAM | LOG_GLOTTAL | LOG_TRANSITION) } // derive beta 1 clock: - // set if m_latch_70.0 == 1 - // reset if m_latch_70.0 == 0 -// UINT8 old_beta1 = m_beta1; + // set if m_latch_70.0 == 1 + // reset if m_latch_70.0 == 0 +// UINT8 old_beta1 = m_beta1; m_beta1 = BIT(m_latch_70, 0); // derive p2 clock: - // set if (m_counter_34.P_CLOCK_BIT & clock) == 1 - // reset if (m_counter_34.P_CLOCK_BIT == 0) + // set if (m_counter_34.P_CLOCK_BIT & clock) == 1 + // reset if (m_counter_34.P_CLOCK_BIT == 0) UINT8 old_p2 = m_p2; if (BIT(m_counter_34, P_CLOCK_BIT) & m_master_clock) m_p2 = 1; else if (!BIT(m_counter_34, P_CLOCK_BIT)) m_p2 = 0; - + // derive p1 clock: - // set if (!m_counter_34.P_CLOCK_BIT & clock) == 1 - // reset if (m_counter_34.P_CLOCK_BIT == 1) -// UINT8 old_p1 = m_p1; + // set if (!m_counter_34.P_CLOCK_BIT & clock) == 1 + // reset if (m_counter_34.P_CLOCK_BIT == 1) +// UINT8 old_p1 = m_p1; if (BIT(~m_counter_34, P_CLOCK_BIT) & m_master_clock) m_p1 = 1; else if (BIT(m_counter_34, P_CLOCK_BIT)) m_p1 = 0; - + // derive phi2 clock: - // set if (m_counter_34.PHI_CLOCK_BIT & clock) == 1 - // reset if (m_counter_34.PHI_CLOCK_BIT == 0) + // set if (m_counter_34.PHI_CLOCK_BIT & clock) == 1 + // reset if (m_counter_34.PHI_CLOCK_BIT == 0) UINT8 old_phi2 = m_phi2; if (BIT(m_counter_34, PHI_CLOCK_BIT) & m_master_clock) m_phi2 = 1; else if (!BIT(m_counter_34, PHI_CLOCK_BIT)) m_phi2 = 0; - + // derive phi1 clock: - // set if (!m_counter_34.PHI_CLOCK_BIT & clock) == 1 - // reset if (m_counter_34.PHI_CLOCK_BIT == 1) + // set if (!m_counter_34.PHI_CLOCK_BIT & clock) == 1 + // reset if (m_counter_34.PHI_CLOCK_BIT == 1) UINT8 old_phi1 = m_phi1; if (BIT(~m_counter_34, PHI_CLOCK_BIT) & m_master_clock) m_phi1 = 1; @@ -632,31 +632,31 @@ if (LOG_TIMING | LOG_LOWPARAM | LOG_GLOTTAL | LOG_TRANSITION) m_phi1 = 0; // derive alternate phi2 clock: - // set if (m_counter_34.PHI_CLOCK_BIT & clock) == 1 - // reset if (m_counter_34.PHI_CLOCK_BIT == 0) + // set if (m_counter_34.PHI_CLOCK_BIT & clock) == 1 + // reset if (m_counter_34.PHI_CLOCK_BIT == 0) UINT8 old_phi2_20 = m_phi2_20; if (BIT(m_counter_34, PHI_CLOCK_BIT + 2) & m_master_clock) m_phi2_20 = 1; else if (!BIT(m_counter_34, PHI_CLOCK_BIT + 2)) m_phi2_20 = 0; - + // derive alternate phi1 clock: - // set if (!m_counter_34.PHI_CLOCK_BIT & clock) == 1 - // reset if (m_counter_34.PHI_CLOCK_BIT == 1) -// UINT8 old_phi1_20 = m_phi1_20; + // set if (!m_counter_34.PHI_CLOCK_BIT & clock) == 1 + // reset if (m_counter_34.PHI_CLOCK_BIT == 1) +// UINT8 old_phi1_20 = m_phi1_20; if (BIT(~m_counter_34, PHI_CLOCK_BIT + 2) & m_master_clock) m_phi1_20 = 1; else if (BIT(m_counter_34, PHI_CLOCK_BIT + 2)) m_phi1_20 = 0; // determine rising edges of each clock of interest -// UINT8 beta1_rising = (old_beta1 ^ m_beta1) & m_beta1; +// UINT8 beta1_rising = (old_beta1 ^ m_beta1) & m_beta1; UINT8 p2_rising = (old_p2 ^ m_p2) & m_p2; -// UINT8 p1_rising = (old_p1 ^ m_p1) & m_p1; +// UINT8 p1_rising = (old_p1 ^ m_p1) & m_p1; UINT8 phi2_rising = (old_phi2 ^ m_phi2) & m_phi2; UINT8 phi1_rising = (old_phi1 ^ m_phi1) & m_phi1; UINT8 phi2_20_rising = (old_phi2_20 ^ m_phi2_20) & m_phi2_20; -// UINT8 phi1_20_rising = (old_phi1_20 ^ m_phi1_20) & m_phi1_20; +// UINT8 phi1_20_rising = (old_phi1_20 ^ m_phi1_20) & m_phi1_20; UINT8 a0_rising = BIT((old_latch_72 ^ m_latch_72) & m_latch_72, 0); UINT8 a2_rising = BIT((old_latch_72 ^ m_latch_72) & m_latch_72, 2); UINT8 _125k_rising = BIT((old_latch_72 ^ m_latch_72) & m_latch_72, 3); @@ -673,7 +673,7 @@ if (LOG_TIMING | LOG_LOWPARAM | LOG_GLOTTAL | LOG_TRANSITION) UINT8 old_clock_88 = m_clock_88; m_clock_88 = !m_latch_42; //!(m_latch_42 | m_phi1); -- figure 7 seems to be wrong here UINT8 clock_88_rising = (old_clock_88 ^ m_clock_88) & m_clock_88; - + // the A/R line holds the counter in reset except during phoneme processing, // when it is clocked on the rising edge of the subphoneme timer clock if (m_internal_request != CLEAR_LINE) @@ -683,11 +683,11 @@ if (LOG_TIMING | LOG_LOWPARAM | LOG_GLOTTAL | LOG_TRANSITION) m_counter_84 = (m_counter_84 - 1) & 0x0f; mame_printf_debug("counter=%d\n", m_counter_84); } - + // clock the zero count latch if (p2_rising) m_latch_92 = ((m_counter_84 == 0) | (m_latch_92 << 1)) & 3; - + // once both bits are set, the request line goes high if (m_latch_92 == 3) { @@ -708,15 +708,15 @@ mame_printf_debug("counter=%d\n", m_counter_84); UINT8 romdata = m_rom[(m_phoneme << 3) | ((m_counter_34 >> 4) & 7)]; // update the ROM data; ROM format is (upper nibble/lower nibble) - // +00 = F1 parameter / 0 - // +01 = F2 parameter / 0 - // +02 = FC parameter / 0 - // +03 = F3 parameter / CL - // +04 = F2Q Parameter / CLD - // +05 = VA Parameter / VD - // +06 = FA Parameter / PAC - // +07 = Phoneme timing (full 7 bits) - + // +00 = F1 parameter / 0 + // +01 = F2 parameter / 0 + // +02 = FC parameter / 0 + // +03 = F3 parameter / CL + // +04 = F2Q Parameter / CLD + // +05 = VA Parameter / VD + // +06 = FA Parameter / PAC + // +07 = Phoneme timing (full 7 bits) + // latch a new value from ROM on phi2 UINT8 a = m_latch_72 & 7; UINT8 romdata_swapped; @@ -728,26 +728,26 @@ mame_printf_debug("counter=%d\n", m_counter_84); case 3: m_srff_132 = m_srff_114 & BIT(~romdata, 3); break; - + // update CLD case 4: romdata_swapped = (BIT(romdata, 0) << 3) | (BIT(romdata, 1) << 2) | (BIT(romdata, 2) << 1) | (BIT(romdata, 3) << 0); if (m_counter_84 != 0 && romdata_swapped == (m_counter_84 ^ 0xf)) m_srff_114 = 1; break; - + // update VD case 5: romdata_swapped = (BIT(romdata, 0) << 3) | (BIT(romdata, 1) << 2) | (BIT(romdata, 2) << 1) | (BIT(romdata, 3) << 0); if (m_counter_84 != 0 && romdata_swapped == (m_counter_84 ^ 0xf)) m_srff_112 = 1; break; - + // update FF == PAC & (VA | FA) case 6: m_srff_142 = BIT(romdata, 3); break; - + // update PH case 7: if (m_latch_80 != (romdata & 0x7f)) @@ -762,7 +762,7 @@ mame_printf_debug("[PH=%02X]\n", m_latch_80); break; } } - + //============================================== // // Glottal circuit (patent figure 6) @@ -787,7 +787,7 @@ mame_printf_debug("[PH=%02X]\n", m_latch_80); m_counter_224 = (m_counter_224 + 1) & 0xf; } } - + // clock remaining glottal counters (220, 222, 236) on rising edge of phi2 if (phi2_20_rising) { @@ -800,7 +800,7 @@ mame_printf_debug("[PH=%02X]\n", m_latch_80); else m_counter_220 = (m_counter_220 + 1) & 0xf; } - + // counter 222 is always enabled if (1) { @@ -810,12 +810,12 @@ mame_printf_debug("[PH=%02X]\n", m_latch_80); else m_counter_222 = (m_counter_222 + 1) & 0xf; } - + // counter 236 is always enabled if (1) { m_counter_236 = (m_counter_236 + 1) & 0xf; - + // rising edge of Q1 from counter 236 clocks counter 234 if ((m_counter_236 & 0x3) == 0x2) { @@ -825,36 +825,36 @@ mame_printf_debug("[PH=%02X]\n", m_latch_80); } } } - + // update FGATE state if (counter_220_tc) m_fgate = 0; if (counter_224_tc) m_fgate = 1; - + // apply asynchronous clear to counters 234/236 if (counter_220_tc && m_phi1_20) m_counter_236 = m_counter_234 = 0; - + // derive glottal circuit output signals #if !TEMP_HACKS UINT8 old_glottal_sync = m_glottal_sync; #endif m_glottal_sync = (m_counter_234 == 0); glottal_out = s_glottal_wave[m_counter_234]; - + //============================================== // // Transition circuit (patent figure 3a/3b) // //============================================== - + // divide 1.25k clock by 2 (lower-left of 46) UINT8 old_0625_clock = m_0625_clock; if (_125k_rising) m_0625_clock = !m_0625_clock; UINT8 _0625_rising = (old_0625_clock ^ m_0625_clock) & m_0625_clock; - + // update counter above if (_0625_rising) { @@ -863,7 +863,7 @@ mame_printf_debug("[PH=%02X]\n", m_latch_80); else m_counter_46 = (m_counter_46 + 1) & 0xf; } - + // and then the latch to the right if (a2_rising) m_latch_46 = (BIT(m_counter_46, 1) << 0) | @@ -885,21 +885,21 @@ mame_printf_debug("[PH=%02X]\n", m_latch_80); if (!(m_srff_142 & !((m_fa == 0) & (m_va == 0))) && (m_latch_46 & 0x3) == 0x3) ram_write = 1; break; - + case 5: if ((m_latch_46 & 0xc) == 0xc && m_srff_112) ram_write = 1; break; - + case 6: if ((m_latch_46 & 0xc) == 0xc && m_srff_114) ram_write = 1; break; } - + // gate on the phi2 clock (OR gate @ 172) ram_write &= m_phi2; - + // write the transitioned values to RAM if requested // (note we consolidate the serial addition and clocking steps here) if (ram_write) @@ -907,7 +907,7 @@ mame_printf_debug("[PH=%02X]\n", m_latch_80); UINT8 old = (m_latch_168 << 4) | m_latch_170; m_ram[a] = old - (old >> 3) + ((romdata & 0xf0) >> 3); } - + // latch some parameter values on rising edge of phi2 if (phi2_rising) { @@ -916,17 +916,17 @@ mame_printf_debug("[PH=%02X]\n", m_latch_80); case 2: m_fc = m_latch_168; break; - + case 5: m_va = m_latch_168; break; - + case 6: m_fa = m_latch_168; break; } } - + // latch remaining parameter values on rising edge of (phi2 & glottal sync) #if TEMP_HACKS if (phi2_rising) @@ -940,20 +940,20 @@ mame_printf_debug("[PH=%02X]\n", m_latch_80); case 0: m_f1 = m_latch_168; break; - + case 1: m_f2 = (m_latch_168 << 1) | (m_latch_170 >> 3); break; - + case 3: m_f3 = m_latch_168; break; - + case 4: m_f2q = m_latch_168; break; } - + // latch value from RAM on rising edge of phi1 if (phi1_rising) { @@ -966,13 +966,13 @@ mame_printf_debug("[PH=%02X]\n", m_latch_80); // Noise generator circuit (patent figure 8) // //============================================== - + // nose is clocked by the NOR of /FA and P1 UINT8 old_noise_clock = m_noise_clock; m_noise_clock = !((m_fa == 0) | m_p1); UINT8 noise_clock_rising = (old_noise_clock ^ m_noise_clock) & m_noise_clock; UINT8 noise_clock_falling = (old_noise_clock ^ m_noise_clock) & old_noise_clock; - + // falling edge clocks the shift register if (noise_clock_falling) { @@ -981,20 +981,20 @@ mame_printf_debug("[PH=%02X]\n", m_latch_80); // XOR'ed input goes into d4, which shifts in to d2, then d3, then d1 // thus the full 18-bit value is effectively // - // d4 = (m_shift_252 >> 0) & 0x1f; - // d2 = (m_shift_252 >> 5) & 0x1f; - // d3 = (m_shift_252 >> 10) & 0xf; - // d1 = (m_shift_252 >> 14) & 0xf; + // d4 = (m_shift_252 >> 0) & 0x1f; + // d2 = (m_shift_252 >> 5) & 0x1f; + // d3 = (m_shift_252 >> 10) & 0xf; + // d1 = (m_shift_252 >> 14) & 0xf; // // input at the low end is ((d1+4 ^ d2+5) ^ (d4+4 ^ d4+5)) ^ !(counter2 | counter3) // output is tapped at d3+4 UINT32 old_shift = m_shift_252; m_shift_252 <<= 1; - m_shift_252 |= ((BIT(old_shift, 17) ^ BIT(old_shift, 9)) ^ (BIT(old_shift, 3) ^ BIT(old_shift, 4))) ^ + m_shift_252 |= ((BIT(old_shift, 17) ^ BIT(old_shift, 9)) ^ (BIT(old_shift, 3) ^ BIT(old_shift, 4))) ^ ((m_counter_250 & 0xc) == 0); } - + // rising edge clocks the counter if (noise_clock_rising) { @@ -1004,7 +1004,7 @@ mame_printf_debug("[PH=%02X]\n", m_latch_80); else m_counter_250 = (m_counter_250 + 1) & 0xf; } - + // compute final noise out signal noise_out_digital = !(BIT(m_shift_252, 13) & (m_fgate | (m_va == 0))); } @@ -1132,9 +1132,9 @@ mame_printf_debug("[PH=%02X]\n", m_latch_80); double s4_out = apply_filter(m_s4i_hist, m_s4_hist, a, b); shift_hist(s4_out, m_s4_hist, 4); - + // TODO: apply closure circuit (undocumented) - + // output the current result *dest++ = INT16(s4_out * 4000); } @@ -1168,24 +1168,24 @@ void votrax_sc01_device::device_start() m_stream = stream_alloc(0, 1, m_master_clock_freq / 16); m_phoneme_timer = timer_alloc(); m_rom = subregion("phoneme")->base(); - + // reset inputs m_inflection = 0; m_phoneme = 0x3f; - + // reset outputs m_request_func.resolve(m_request_cb, *this); m_request_state = ASSERT_LINE; m_internal_request = ASSERT_LINE; - + // save inputs save_item(NAME(m_inflection)); save_item(NAME(m_phoneme)); - + // save outputs save_item(NAME(m_request_state)); save_item(NAME(m_internal_request)); - + // save timing circuit save_item(NAME(m_master_clock_freq)); save_item(NAME(m_master_clock)); @@ -1203,14 +1203,14 @@ void votrax_sc01_device::device_start() save_item(NAME(m_latch_42)); save_item(NAME(m_counter_84)); save_item(NAME(m_latch_92)); - + // save low parameter clocking save_item(NAME(m_srff_132)); save_item(NAME(m_srff_114)); save_item(NAME(m_srff_112)); save_item(NAME(m_srff_142)); save_item(NAME(m_latch_80)); - + // save glottal circuit save_item(NAME(m_counter_220)); save_item(NAME(m_counter_222)); @@ -1234,7 +1234,7 @@ void votrax_sc01_device::device_start() save_item(NAME(m_f2q)); save_item(NAME(m_va)); save_item(NAME(m_fa)); - + // save noise generator circuit save_item(NAME(m_noise_clock)); save_item(NAME(m_shift_252)); @@ -1263,11 +1263,11 @@ void votrax_sc01_device::device_reset() { // set the initial state m_stream->update(); - + // reset inputs m_phoneme = 0x3f; m_request_func(m_internal_request = m_request_state = ASSERT_LINE); - + // reset timing circuit m_master_clock = 0; m_counter_34 = 0; @@ -1284,7 +1284,7 @@ void votrax_sc01_device::device_reset() m_latch_42 = 0; m_counter_84 = 0; m_latch_92 = 0; - + // reset low parameter clocking m_srff_132 = 0; m_srff_114 = 0; @@ -1292,7 +1292,7 @@ void votrax_sc01_device::device_reset() m_srff_142 = 0; m_latch_80 = 50; update_subphoneme_clock_period(); - + // reset glottal circuit m_counter_220 = 0; m_counter_222 = 0; @@ -1301,7 +1301,7 @@ void votrax_sc01_device::device_reset() m_counter_236 = 0; m_fgate = 0; m_glottal_sync = 0; - + // reset transition circuit m_0625_clock = 0; m_counter_46 = 0; @@ -1316,7 +1316,7 @@ void votrax_sc01_device::device_reset() m_f2q = 0; m_va = 0; m_fa = 0; - + // reset noise circuit m_noise_clock = 0; m_shift_252 = 0; @@ -1339,7 +1339,7 @@ void votrax_sc01_device::device_reset() //------------------------------------------------- // device_clock_changed - handle dynamic clock -// changes by altering our output frequency +// changes by altering our output frequency //------------------------------------------------- void votrax_sc01_device::device_clock_changed() @@ -1354,10 +1354,10 @@ void votrax_sc01_device::device_clock_changed() m_stream->update(); m_stream->set_sample_rate(newfreq / 16); } - + // determine how many clock ticks remained on the phoneme timer UINT64 remaining = m_phoneme_timer->remaining().as_ticks(m_master_clock_freq); - + // recompute the master clock m_master_clock_freq = newfreq; @@ -1376,11 +1376,11 @@ void votrax_sc01_device::device_timer(emu_timer &timer, device_timer_id id, int { // force a stream update m_stream->update(); - + // if we're requesting more data, no need for timing if (m_request_state == ASSERT_LINE) return; - + // if we're supposed to have fired, do it now if (m_internal_request == ASSERT_LINE) { @@ -1397,7 +1397,7 @@ mame_printf_debug("%s: REQUEST\n", timer.machine().time().as_string(3)); clocks_until_request += m_subphoneme_period - m_subphoneme_count; clocks_until_request += m_subphoneme_period * (m_counter_84 - 1); } - + // plus 1/2 clocks_until_request = MAX(clocks_until_request, (1 << P_CLOCK_BIT) / 2); timer.adjust(attotime::from_ticks(clocks_until_request, m_master_clock_freq)); diff --git a/src/emu/sound/votrax.h b/src/emu/sound/votrax.h index cc757cf2905..f3cb53eb210 100644 --- a/src/emu/sound/votrax.h +++ b/src/emu/sound/votrax.h @@ -52,7 +52,7 @@ #define MCFG_VOTRAX_SC01_ADD(_tag, _clock, _interface) \ MCFG_DEVICE_ADD(_tag, VOTRAX_SC01, _clock) \ votrax_sc01_device::static_set_interface(*device, _interface); \ - + //************************************************************************** @@ -117,7 +117,7 @@ private: devcb_resolved_write_line m_request_func; // request callback UINT8 m_request_state; // request as seen to the outside world UINT8 m_internal_request; // request managed by stream timing - + // timing circuit UINT32 m_master_clock_freq; // frequency of the master clock UINT8 m_master_clock; // master clock @@ -137,14 +137,14 @@ private: UINT8 m_latch_42; // D flip-flop @ 42 UINT8 m_counter_84; // 4-bit phoneme counter @ 84 UINT8 m_latch_92; // 2-bit latch @ 92 - + // low parameter clocking UINT8 m_srff_132; // S/R flip-flop @ 132 UINT8 m_srff_114; // S/R flip-flop @ 114 UINT8 m_srff_112; // S/R flip-flop @ 112 UINT8 m_srff_142; // S/R flip-flop @ 142 UINT8 m_latch_80; // phoneme timing latch @ 80 - + // glottal circuit UINT8 m_counter_220; // 4-bit counter @ 220 UINT8 m_counter_222; // 4-bit counter @ 222 @@ -153,7 +153,7 @@ private: UINT8 m_counter_236; // 4-bit counter @ 236 UINT8 m_fgate; // FGATE signal UINT8 m_glottal_sync; // Glottal Sync signal - + // transition circuit UINT8 m_0625_clock; // state of 0.625kHz clock UINT8 m_counter_46; // 4-bit counter in block @ 46 @@ -168,24 +168,24 @@ private: UINT8 m_f2q; // latched 4-bit F2Q value UINT8 m_va; // latched 4-bit VA value UINT8 m_fa; // latched 4-bit FA value - + // noise generator circuit UINT8 m_noise_clock; // clock input to noise generator UINT32 m_shift_252; // shift register @ 252 UINT8 m_counter_250; // 4-bit counter @ 250 // stages outputs history - double m_ni_hist[4]; - double m_no_hist[4]; - double m_va_hist[4]; - double m_s1_hist[4]; - double m_s2g_hist[4]; - double m_s2ni_hist[4]; - double m_s2n_hist[4]; - double m_s2_hist[4]; - double m_s3_hist[4]; - double m_s4i_hist[4]; - double m_s4_hist[4]; + double m_ni_hist[4]; + double m_no_hist[4]; + double m_va_hist[4]; + double m_s1_hist[4]; + double m_s2g_hist[4]; + double m_s2ni_hist[4]; + double m_s2n_hist[4]; + double m_s2_hist[4]; + double m_s3_hist[4]; + double m_s4i_hist[4]; + double m_s4_hist[4]; // static tables static const char *const s_phoneme_table[64]; diff --git a/src/emu/video/bufsprite.h b/src/emu/video/bufsprite.h index 70efca6bda0..c841cf5bf79 100644 --- a/src/emu/video/bufsprite.h +++ b/src/emu/video/bufsprite.h @@ -89,12 +89,12 @@ public: buffered_spriteram_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, UINT32 clock) : device_t(mconfig, type, "Buffered Sprite RAM", tag, owner, clock), m_spriteram(*owner, tag) { } - + // getters _Type *live() const { return m_spriteram; } _Type *buffer() { return m_buffered; } UINT32 bytes() const { return m_spriteram.bytes(); } - + // operations _Type *copy(UINT32 srcoffset = 0, UINT32 srclength = 0x7fffffff) { @@ -103,7 +103,7 @@ public: memcpy(m_buffered, m_spriteram + srcoffset, MIN(srclength, m_spriteram.bytes() / sizeof(_Type) - srcoffset) * sizeof(_Type)); return m_buffered; } - + // read/write handlers void write(address_space &space, offs_t offset, _Type data, _Type mem_mask = ~_Type(0)) { copy(); } @@ -124,7 +124,7 @@ protected: private: // internal state - required_shared_ptr<_Type> m_spriteram; + required_shared_ptr<_Type> m_spriteram; dynamic_array<_Type> m_buffered; }; |
