summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author Cowering <cowering@users.noreply.github.com>2015-07-04 15:55:18 -0500
committer Cowering <cowering@users.noreply.github.com>2015-07-08 23:37:57 -0500
commitf1ea61c26831a5fd938bce79d623b79ad1ea542c (patch)
treeb25839fdd3be42e49240b1bc737a61f1af66414a /src
parent674255fa0d7ee843838e3d3ca983604acacf3c1c (diff)
Quiet anonymous union errors. Used a couple different techniques, all compile to same code as before with -O3 (nw)
Diffstat (limited to 'src')
-rw-r--r--src/emu/cpu/ssp1601/ssp1601.c84
-rw-r--r--src/emu/cpu/ssp1601/ssp1601.h4
-rw-r--r--src/emu/sound/ics2115.c108
-rw-r--r--src/emu/sound/ics2115.h6
-rw-r--r--src/mame/audio/micro3d.c24
-rw-r--r--src/mame/audio/tx1.c4
-rw-r--r--src/mame/drivers/bfcobra.c80
-rw-r--r--src/mame/includes/micro3d.h34
-rw-r--r--src/mame/includes/tx1.h8
-rw-r--r--src/mame/machine/tx1.c22
10 files changed, 190 insertions, 184 deletions
diff --git a/src/emu/cpu/ssp1601/ssp1601.c b/src/emu/cpu/ssp1601/ssp1601.c
index 66c3e0baf3d..fb15aa3d84e 100644
--- a/src/emu/cpu/ssp1601/ssp1601.c
+++ b/src/emu/cpu/ssp1601/ssp1601.c
@@ -353,47 +353,47 @@ UINT32 ssp1601_device::ptr1_read_(int ri, int isj2, int modi3)
// mod=0 (00)
case 0x00:
case 0x01:
- case 0x02: return m_RAM0[m_r0[t&3]];
- case 0x03: return m_RAM0[0];
+ case 0x02: return mem.m_RAM0[regs.m_r0[t&3]];
+ case 0x03: return mem.m_RAM0[0];
case 0x04:
case 0x05:
- case 0x06: return m_RAM1[m_r1[t&3]];
- case 0x07: return m_RAM1[0];
+ case 0x06: return mem.m_RAM1[regs.m_r1[t&3]];
+ case 0x07: return mem.m_RAM1[0];
// mod=1 (01), "+!"
case 0x08:
case 0x09:
- case 0x0a: return m_RAM0[m_r0[t&3]++];
- case 0x0b: return m_RAM0[1];
+ case 0x0a: return mem.m_RAM0[regs.m_r0[t&3]++];
+ case 0x0b: return mem.m_RAM0[1];
case 0x0c:
case 0x0d:
- case 0x0e: return m_RAM1[m_r1[t&3]++];
- case 0x0f: return m_RAM1[1];
+ case 0x0e: return mem.m_RAM1[regs.m_r1[t&3]++];
+ case 0x0f: return mem.m_RAM1[1];
// mod=2 (10), "-"
case 0x10:
case 0x11:
- case 0x12: rp = &m_r0[t&3]; t = m_RAM0[*rp];
+ case 0x12: rp = &regs.m_r0[t&3]; t = mem.m_RAM0[*rp];
if (!(rST&7)) { (*rp)--; return t; }
add = -1; goto modulo;
- case 0x13: return m_RAM0[2];
+ case 0x13: return mem.m_RAM0[2];
case 0x14:
case 0x15:
- case 0x16: rp = &m_r1[t&3]; t = m_RAM1[*rp];
+ case 0x16: rp = &regs.m_r1[t&3]; t = mem.m_RAM1[*rp];
if (!(rST&7)) { (*rp)--; return t; }
add = -1; goto modulo;
- case 0x17: return m_RAM1[2];
+ case 0x17: return mem.m_RAM1[2];
// mod=3 (11), "+"
case 0x18:
case 0x19:
- case 0x1a: rp = &m_r0[t&3]; t = m_RAM0[*rp];
+ case 0x1a: rp = &regs.m_r0[t&3]; t = mem.m_RAM0[*rp];
if (!(rST&7)) { (*rp)++; return t; }
add = 1; goto modulo;
- case 0x1b: return m_RAM0[3];
+ case 0x1b: return mem.m_RAM0[3];
case 0x1c:
case 0x1d:
- case 0x1e: rp = &m_r1[t&3]; t = m_RAM1[*rp];
+ case 0x1e: rp = &regs.m_r1[t&3]; t = mem.m_RAM1[*rp];
if (!(rST&7)) { (*rp)++; return t; }
add = 1; goto modulo;
- case 0x1f: return m_RAM1[3];
+ case 0x1f: return mem.m_RAM1[3];
}
return 0;
@@ -412,40 +412,40 @@ void ssp1601_device::ptr1_write(int op, UINT32 d)
// mod=0 (00)
case 0x00:
case 0x01:
- case 0x02: m_RAM0[m_r0[t&3]] = d; return;
- case 0x03: m_RAM0[0] = d; return;
+ case 0x02: mem.m_RAM0[regs.m_r0[t&3]] = d; return;
+ case 0x03: mem.m_RAM0[0] = d; return;
case 0x04:
case 0x05:
- case 0x06: m_RAM1[m_r1[t&3]] = d; return;
- case 0x07: m_RAM1[0] = d; return;
+ case 0x06: mem.m_RAM1[regs.m_r1[t&3]] = d; return;
+ case 0x07: mem.m_RAM1[0] = d; return;
// mod=1 (01), "+!"
// mod=3, "+"
case 0x08:
case 0x09:
- case 0x0a: m_RAM0[m_r0[t&3]++] = d; return;
- case 0x0b: m_RAM0[1] = d; return;
+ case 0x0a: mem.m_RAM0[regs.m_r0[t&3]++] = d; return;
+ case 0x0b: mem.m_RAM0[1] = d; return;
case 0x0c:
case 0x0d:
- case 0x0e: m_RAM1[m_r1[t&3]++] = d; return;
- case 0x0f: m_RAM1[1] = d; return;
+ case 0x0e: mem.m_RAM1[regs.m_r1[t&3]++] = d; return;
+ case 0x0f: mem.m_RAM1[1] = d; return;
// mod=2 (10), "-"
case 0x10:
case 0x11:
- case 0x12: m_RAM0[m_r0[t&3]--] = d; CHECK_RPL(); return;
- case 0x13: m_RAM0[2] = d; return;
+ case 0x12: mem.m_RAM0[regs.m_r0[t&3]--] = d; CHECK_RPL(); return;
+ case 0x13: mem.m_RAM0[2] = d; return;
case 0x14:
case 0x15:
- case 0x16: m_RAM1[m_r1[t&3]--] = d; CHECK_RPL(); return;
- case 0x17: m_RAM1[2] = d; return;
+ case 0x16: mem.m_RAM1[regs.m_r1[t&3]--] = d; CHECK_RPL(); return;
+ case 0x17: mem.m_RAM1[2] = d; return;
// mod=3 (11), "+"
case 0x18:
case 0x19:
- case 0x1a: m_RAM0[m_r0[t&3]++] = d; CHECK_RPL(); return;
- case 0x1b: m_RAM0[3] = d; return;
+ case 0x1a: mem.m_RAM0[regs.m_r0[t&3]++] = d; CHECK_RPL(); return;
+ case 0x1b: mem.m_RAM0[3] = d; return;
case 0x1c:
case 0x1d:
- case 0x1e: m_RAM1[m_r1[t&3]++] = d; CHECK_RPL(); return;
- case 0x1f: m_RAM1[3] = d; return;
+ case 0x1e: mem.m_RAM1[regs.m_r1[t&3]++] = d; CHECK_RPL(); return;
+ case 0x1f: mem.m_RAM1[3] = d; return;
}
}
@@ -457,21 +457,21 @@ UINT32 ssp1601_device::ptr2_read(int op)
// mod=0 (00)
case 0x00:
case 0x01:
- case 0x02: mv = m_RAM0[m_r0[t&3]]++; break;
- case 0x03: mv = m_RAM0[0]++; break;
+ case 0x02: mv = mem.m_RAM0[regs.m_r0[t&3]]++; break;
+ case 0x03: mv = mem.m_RAM0[0]++; break;
case 0x04:
case 0x05:
- case 0x06: mv = m_RAM1[m_r1[t&3]]++; break;
- case 0x07: mv = m_RAM1[0]++; break;
+ case 0x06: mv = mem.m_RAM1[regs.m_r1[t&3]]++; break;
+ case 0x07: mv = mem.m_RAM1[0]++; break;
// mod=1 (01)
- case 0x0b: mv = m_RAM0[1]++; break;
- case 0x0f: mv = m_RAM1[1]++; break;
+ case 0x0b: mv = mem.m_RAM0[1]++; break;
+ case 0x0f: mv = mem.m_RAM1[1]++; break;
// mod=2 (10)
- case 0x13: mv = m_RAM0[2]++; break;
- case 0x17: mv = m_RAM1[2]++; break;
+ case 0x13: mv = mem.m_RAM0[2]++; break;
+ case 0x17: mv = mem.m_RAM1[2]++; break;
// mod=3 (11)
- case 0x1b: mv = m_RAM0[3]++; break;
- case 0x1f: mv = m_RAM1[3]++; break;
+ case 0x1b: mv = mem.m_RAM0[3]++; break;
+ case 0x1f: mv = mem.m_RAM1[3]++; break;
default: logerror(__FILE__ " FIXME: unimplemented mod in ((rX)) @ %04x\n", GET_PPC_OFFS());
return 0;
}
diff --git a/src/emu/cpu/ssp1601/ssp1601.h b/src/emu/cpu/ssp1601/ssp1601.h
index 744dfdbc1ce..ef400cac42b 100644
--- a/src/emu/cpu/ssp1601/ssp1601.h
+++ b/src/emu/cpu/ssp1601/ssp1601.h
@@ -57,14 +57,14 @@ private:
struct {
unsigned char m_r0[4];
unsigned char m_r1[4];
- };
+ } regs;
};
union {
unsigned short m_RAM[256*2]; /* 2 256-word internal RAM banks */
struct {
unsigned short m_RAM0[256];
unsigned short m_RAM1[256];
- };
+ } mem;
};
UINT16 m_stack[6]; /* 6-level hardware stack */
PAIR m_ppc;
diff --git a/src/emu/sound/ics2115.c b/src/emu/sound/ics2115.c
index d77410ad74b..af3557c28c3 100644
--- a/src/emu/sound/ics2115.c
+++ b/src/emu/sound/ics2115.c
@@ -138,10 +138,10 @@ void ics2115_device::device_reset()
int ics2115_voice::update_volume_envelope()
{
int ret = 0;
- if(vol_ctrl.done || vol_ctrl.stop)
+ if(vol_ctrl.bitflags.done || vol_ctrl.bitflags.stop)
return ret;
- if(vol_ctrl.invert) {
+ if(vol_ctrl.bitflags.invert) {
vol.acc -= vol.add;
vol.left = vol.acc - vol.start;
} else {
@@ -152,26 +152,26 @@ int ics2115_voice::update_volume_envelope()
if(vol.left > 0)
return ret;
- if(vol_ctrl.irq) {
- vol_ctrl.irq_pending = true;
+ if(vol_ctrl.bitflags.irq) {
+ vol_ctrl.bitflags.irq_pending = true;
ret = 1;
}
- if(osc_conf.eightbit)
+ if(osc_conf.bitflags.eightbit)
return ret;
- if(vol_ctrl.loop) {
- if(vol_ctrl.loop_bidir)
- vol_ctrl.invert = !vol_ctrl.invert;
+ if(vol_ctrl.bitflags.loop) {
+ if(vol_ctrl.bitflags.loop_bidir)
+ vol_ctrl.bitflags.invert = !vol_ctrl.bitflags.invert;
- if(vol_ctrl.invert)
+ if(vol_ctrl.bitflags.invert)
vol.acc = vol.end + vol.left;
else
vol.acc = vol.start - vol.left;
} else {
- state.on = false;
- vol_ctrl.done = true;
- if(vol_ctrl.invert)
+ state.bitflags.on = false;
+ vol_ctrl.bitflags.done = true;
+ if(vol_ctrl.bitflags.invert)
vol.acc = vol.end;
else
vol.acc = vol.start;
@@ -198,9 +198,9 @@ int ics2115_voice::update_volume_envelope()
int ics2115_voice::update_oscillator()
{
int ret = 0;
- if(osc_conf.stop)
+ if(osc_conf.bitflags.stop)
return ret;
- if(osc_conf.invert) {
+ if(osc_conf.bitflags.invert) {
osc.acc -= osc.fc << 2;
osc.left = osc.acc - osc.start;
} else {
@@ -210,17 +210,17 @@ int ics2115_voice::update_oscillator()
// > instead of >= to stop crackling?
if(osc.left > 0)
return ret;
- if(osc_conf.irq) {
- osc_conf.irq_pending = true;
+ if(osc_conf.bitflags.irq) {
+ osc_conf.bitflags.irq_pending = true;
ret = 1;
}
- if(osc_conf.loop) {
- if(osc_conf.loop_bidir)
- osc_conf.invert = !osc_conf.invert;
+ if(osc_conf.bitflags.loop) {
+ if(osc_conf.bitflags.loop_bidir)
+ osc_conf.bitflags.invert = !osc_conf.bitflags.invert;
//else
// printf("click!\n");
- if(osc_conf.invert) {
+ if(osc_conf.bitflags.invert) {
osc.acc = osc.end + osc.left;
osc.left = osc.acc - osc.start;
}
@@ -229,9 +229,9 @@ int ics2115_voice::update_oscillator()
osc.left = osc.end - osc.acc;
}
} else {
- state.on = false;
- osc_conf.stop = true;
- if(!osc_conf.invert)
+ state.bitflags.on = false;
+ osc_conf.bitflags.stop = true;
+ if(!osc_conf.bitflags.invert)
osc.acc = osc.end;
else
osc.acc = osc.start;
@@ -245,7 +245,7 @@ stream_sample_t ics2115_device::get_sample(ics2115_voice& voice)
UINT32 curaddr = ((voice.osc.saddr << 20) & 0xffffff) | (voice.osc.acc >> 12);
UINT32 nextaddr;
- if (voice.state.on && voice.osc_conf.loop && !voice.osc_conf.loop_bidir &&
+ if (voice.state.bitflags.on && voice.osc_conf.bitflags.loop && !voice.osc_conf.bitflags.loop_bidir &&
(voice.osc.left < (voice.osc.fc <<2))) {
//printf("C?[%x:%x]", voice.osc.left, voice.osc.acc);
nextaddr = ((voice.osc.saddr << 20) & 0xffffff) | (voice.osc.start >> 12);
@@ -255,7 +255,7 @@ stream_sample_t ics2115_device::get_sample(ics2115_voice& voice)
INT16 sample1, sample2;
- if (voice.osc_conf.eightbit) {
+ if (voice.osc_conf.bitflags.eightbit) {
sample1 = ((INT8)m_rom[curaddr]) << 8;
sample2 = ((INT8)m_rom[curaddr + 1]) << 8;
}
@@ -283,21 +283,21 @@ stream_sample_t ics2115_device::get_sample(ics2115_voice& voice)
bool ics2115_voice::playing()
{
- return state.on && !((vol_ctrl.done || vol_ctrl.stop) && osc_conf.stop);
+ return state.bitflags.on && !((vol_ctrl.bitflags.done || vol_ctrl.bitflags.stop) && osc_conf.bitflags.stop);
}
void ics2115_voice::update_ramp() {
//slow attack
- if (state.on && !osc_conf.stop) {
- if (state.ramp < 0x40)
- state.ramp += 0x1;
+ if (state.bitflags.on && !osc_conf.bitflags.stop) {
+ if (state.bitflags.ramp < 0x40)
+ state.bitflags.ramp += 0x1;
else
- state.ramp = 0x40;
+ state.bitflags.ramp = 0x40;
}
//slow release
else {
- if (state.ramp)
- state.ramp -= 0x1;
+ if (state.bitflags.ramp)
+ state.bitflags.ramp -= 0x1;
}
}
@@ -309,7 +309,7 @@ int ics2115_device::fill_output(ics2115_voice& voice, stream_sample_t *outputs[2
for (int i = 0; i < samples; i++) {
UINT32 volacc = (voice.vol.acc >> 10) & 0xffff;
- UINT32 volume = (m_volume[volacc >> 4] * voice.state.ramp) >> 6;
+ UINT32 volume = (m_volume[volacc >> 4] * voice.state.bitflags.ramp) >> 6;
UINT16 vleft = volume; //* (255 - voice.vol.pan) / 0x80];
UINT16 vright = volume; //* (voice.vol.pan + 1) / 0x80];
@@ -319,7 +319,7 @@ int ics2115_device::fill_output(ics2115_voice& voice, stream_sample_t *outputs[2
//that the voice is pointing at is contributing to the summation.
//(austere note: this will of course fix some of the glitches due to multiple transition)
stream_sample_t sample;
- if(voice.osc_conf.ulaw) {
+ if(voice.osc_conf.bitflags.ulaw) {
UINT32 curaddr = ((voice.osc.saddr << 20) & 0xffffff) | (voice.osc.acc >> 12);
sample = m_ulaw[m_rom[curaddr]];
}
@@ -361,7 +361,7 @@ void ics2115_device::sound_stream_update(sound_stream &stream, stream_sample_t *
#ifdef ICS2115_DEBUG
UINT32 curaddr = ((voice.osc.saddr << 20) & 0xffffff) | (voice.osc.acc >> 12);
stream_sample_t sample;
- if(voice.osc_conf.ulaw)
+ if(voice.osc_conf.bitflags.ulaw)
sample = m_ulaw[m_rom[curaddr]];
else
sample = get_sample(voice);
@@ -374,7 +374,7 @@ void ics2115_device::sound_stream_update(sound_stream &stream, stream_sample_t *
#ifdef ICS2115_DEBUG
if(voice.playing()) {
printf("%d", osc);
- if (voice.osc_conf.invert)
+ if (voice.osc_conf.bitflags.invert)
printf("+");
else if ((voice.osc.fc >> 1) > 0x1ff)
printf("*");
@@ -488,10 +488,10 @@ UINT16 ics2115_device::reg_read() {
// may expect |8 on reg 0 on voice irq with &80 == 0
// ret = 0xFF;
if (!m_vmode)
- ret = voice.vol_ctrl.irq ? 0x81 : 0x01;
+ ret = voice.vol_ctrl.bitflags.irq ? 0x81 : 0x01;
else
ret = 0x01;
- //ret = voice.vol_ctrl.value | 0x1;
+ //ret = voice.vol_ctrl.bitflags.value | 0x1;
ret <<= 8;
break;
@@ -503,17 +503,17 @@ UINT16 ics2115_device::reg_read() {
ret = 0xff;
for (int i = 0; i <= m_active_osc; i++) {
ics2115_voice& v = m_voice[i];
- if (v.osc_conf.irq_pending || v.vol_ctrl.irq_pending) {
+ if (v.osc_conf.bitflags.irq_pending || v.vol_ctrl.bitflags.irq_pending) {
ret = i | 0xe0;
- ret &= v.vol_ctrl.irq_pending ? (~0x40) : 0xff;
- ret &= v.osc_conf.irq_pending ? (~0x80) : 0xff;
+ ret &= v.vol_ctrl.bitflags.irq_pending ? (~0x40) : 0xff;
+ ret &= v.osc_conf.bitflags.irq_pending ? (~0x80) : 0xff;
recalc_irq();
- if (v.osc_conf.irq_pending) {
- v.osc_conf.irq_pending = 0;
+ if (v.osc_conf.bitflags.irq_pending) {
+ v.osc_conf.bitflags.irq_pending = 0;
ret &= ~0x80;
}
- if (v.vol_ctrl.irq_pending) {
- v.vol_ctrl.irq_pending = 0;
+ if (v.vol_ctrl.bitflags.irq_pending) {
+ v.vol_ctrl.bitflags.irq_pending = 0;
ret &= ~0x40;
}
break;
@@ -694,14 +694,14 @@ void ics2115_device::reg_write(UINT8 data, bool msb) {
#ifdef ICS2115_ISOLATE
if (m_osc_select == ICS2115_ISOLATE)
#endif
- if (!voice.osc_conf.stop || !voice.vol_ctrl.stop)
+ if (!voice.osc_conf.bitflags.stop || !voice.vol_ctrl.bitflags.stop)
printf("[%02d STOP]\n", m_osc_select);
#endif
if (!m_vmode) {
- voice.osc_conf.stop = true;
- voice.vol_ctrl.stop = true;
+ voice.osc_conf.bitflags.stop = true;
+ voice.vol_ctrl.bitflags.stop = true;
//try to key it off as well!
- voice.state.on = false;
+ voice.state.bitflags.on = false;
}
}
#ifdef ICS2115_DEBUG
@@ -769,8 +769,8 @@ READ8_MEMBER(ics2115_device::read)
if (m_irq_enabled && (m_irq_pending & 3))
ret |= 1;
for (int i = 0; i <= m_active_osc; i++) {
- if (//m_voice[i].vol_ctrl.irq_pending ||
- m_voice[i].osc_conf.irq_pending) {
+ if (//m_voice[i].vol_ctrl.bitflags.irq_pending ||
+ m_voice[i].osc_conf.bitflags.irq_pending) {
ret |= 2;
break;
}
@@ -823,9 +823,9 @@ void ics2115_device::keyon()
return;
#endif
//set initial condition (may need to invert?) -- does NOT work since these are set to zero even
- m_voice[m_osc_select].state.on = true;
+ m_voice[m_osc_select].state.bitflags.on = true;
//no ramp up...
- m_voice[m_osc_select].state.ramp = 0x40;
+ m_voice[m_osc_select].state.bitflags.ramp = 0x40;
#ifdef ICS2115_DEBUG
printf("[%02d vs:%04x ve:%04x va:%04x vi:%02x vc:%02x os:%06x oe:%06x oa:%06x of:%04x SA:%02x oc:%02x][%04x]\n", m_osc_select,
@@ -852,7 +852,7 @@ void ics2115_device::recalc_irq()
//Suspect
bool irq = (m_irq_pending & m_irq_enabled);
for(int i = 0; (!irq) && (i < 32); i++)
- irq |= m_voice[i].vol_ctrl.irq_pending && m_voice[i].osc_conf.irq_pending;
+ irq |= m_voice[i].vol_ctrl.bitflags.irq_pending && m_voice[i].osc_conf.bitflags.irq_pending;
m_irq_on = irq;
if(!m_irq_cb.isnull())
m_irq_cb(irq ? ASSERT_LINE : CLEAR_LINE);
diff --git a/src/emu/sound/ics2115.h b/src/emu/sound/ics2115.h
index 16d571fd997..fbfeb64e24a 100644
--- a/src/emu/sound/ics2115.h
+++ b/src/emu/sound/ics2115.h
@@ -49,7 +49,7 @@ struct ics2115_voice {
UINT8 invert : 1;
UINT8 irq_pending: 1;
//IRQ on variable?
- };
+ } bitflags;
UINT8 value;
} osc_conf;
@@ -64,7 +64,7 @@ struct ics2115_voice {
UINT8 invert : 1; //invert direction
UINT8 irq_pending: 1; //(read only) IRQ pending
//noenvelope == (done | disable)
- };
+ } bitflags;
UINT8 value;
} vol_ctrl;
@@ -74,7 +74,7 @@ struct ics2115_voice {
struct {
UINT8 on : 1;
UINT8 ramp : 7; // 100 0000 = 0x40 maximum
- };
+ } bitflags;
UINT8 value;
} state;
diff --git a/src/mame/audio/micro3d.c b/src/mame/audio/micro3d.c
index eff49247cfa..e0ba3722bc9 100644
--- a/src/mame/audio/micro3d.c
+++ b/src/mame/audio/micro3d.c
@@ -22,20 +22,20 @@
*************************************/
/* Borrowed from segasnd.c */
-INLINE void configure_filter(filter_state *state, double r, double c)
+INLINE void configure_filter(m3d_filter_state *state, double r, double c)
{
state->capval = 0;
state->exponent = 1.0 - exp(-1.0 / (r * c * 2000000/8));
}
#if 0
-INLINE double step_rc_filter(filter_state *state, double input)
+INLINE double step_rc_filter(m3d_filter_state *state, double input)
{
state->capval += (input - state->capval) * state->exponent;
return state->capval;
}
-INLINE double step_cr_filter(filter_state *state, double input)
+INLINE double step_cr_filter(m3d_filter_state *state, double input)
{
double result = (input - state->capval);
state->capval += (input - state->capval) * state->exponent;
@@ -144,13 +144,13 @@ void micro3d_sound_device::noise_sh_w(UINT8 data)
m_dac[data & 3] = state->m_dac_data;
- if (m_vca == 255)
+ if (m_dac[VCA] == 255)
m_gain = 0;
else
- m_gain = expf(-(float)(m_vca) / 25.0f) * 10.0f;
+ m_gain = expf(-(float)(m_dac[VCA]) / 25.0f) * 10.0f;
- q = 0.75/255 * (255 - m_vcq) + 0.1;
- fc = 4500.0/255 * (255 - m_vcf) + 100;
+ q = 0.75/255 * (255 - m_dac[VCQ]) + 0.1;
+ fc = 4500.0/255 * (255 - m_dac[VCF]) + 100;
recompute_filter(&m_filter, m_gain, q, fc);
}
@@ -170,16 +170,14 @@ const device_type MICRO3D = &device_creator<micro3d_sound_device>;
micro3d_sound_device::micro3d_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: device_t(mconfig, MICRO3D, "Microprose Audio Custom", tag, owner, clock, "micro3d_sound", __FILE__),
device_sound_interface(mconfig, *this),
- m_vcf(0),
- m_vcq(0),
- m_vca(0),
- m_pan(0),
m_gain(0),
m_noise_shift(0),
m_noise_value(0),
m_noise_subcount(0),
m_stream(NULL)
+
{
+ memset(m_dac, 0, sizeof(UINT8)*4);
}
//-------------------------------------------------
@@ -241,8 +239,8 @@ void micro3d_sound_device::sound_stream_update(sound_stream &stream, stream_samp
if (m_gain == 0)
return;
- pan_l = (float)(255 - m_pan) / 255.0f;
- pan_r = (float)(m_pan) / 255.0f;
+ pan_l = (float)(255 - m_dac[PAN]) / 255.0f;
+ pan_r = (float)(m_dac[PAN]) / 255.0f;
while (samples--)
{
diff --git a/src/mame/audio/tx1.c b/src/mame/audio/tx1.c
index 8fc0c5085a9..7891d97e29b 100644
--- a/src/mame/audio/tx1.c
+++ b/src/mame/audio/tx1.c
@@ -132,12 +132,12 @@ WRITE8_MEMBER( tx1_sound_device::pit8253_w )
{
if (m_pit8253.idx[offset] == 0)
{
- m_pit8253.counts[offset].LSB = data;
+ m_pit8253.counts[offset].as8bit.LSB = data;
m_pit8253.idx[offset] = 1;
}
else
{
- m_pit8253.counts[offset].MSB = data;
+ m_pit8253.counts[offset].as8bit.MSB = data;
m_pit8253.idx[offset] = 0;
}
}
diff --git a/src/mame/drivers/bfcobra.c b/src/mame/drivers/bfcobra.c
index 732034483d5..a65b185aebe 100644
--- a/src/mame/drivers/bfcobra.c
+++ b/src/mame/drivers/bfcobra.c
@@ -102,11 +102,11 @@
union ADDR_REG
{
#ifdef LSB_FIRST
- struct { UINT16 loword, hiword ; } ;
- struct { UINT8 addr0, addr1, addr2; };
+ struct { UINT16 loword, hiword ; } as16bit;
+ struct { UINT8 addr0, addr1, addr2; } as8bit;
#else
- struct { UINT16 hiword, loword ; } ;
- struct { UINT8 addr2, addr1, addr0; };
+ struct { UINT16 hiword, loword ; } as16bit;
+ struct { UINT8 addr2, addr1, addr0; } as8bit;
#endif
UINT32 addr;
};
@@ -490,12 +490,12 @@ void bfcobra_state::RunBlit(address_space &space)
UINT8 dstdata = 0;
/* Read the blitter command */
- BLITPRG_READ(source.addr0);
- BLITPRG_READ(source.addr1);
- BLITPRG_READ(source.addr2);
- BLITPRG_READ(dest.addr0);
- BLITPRG_READ(dest.addr1);
- BLITPRG_READ(dest.addr2);
+ BLITPRG_READ(source.as8bit.addr0);
+ BLITPRG_READ(source.as8bit.addr1);
+ BLITPRG_READ(source.as8bit.addr2);
+ BLITPRG_READ(dest.as8bit.addr0);
+ BLITPRG_READ(dest.as8bit.addr1);
+ BLITPRG_READ(dest.as8bit.addr2);
BLITPRG_READ(modectl);
BLITPRG_READ(compfunc);
BLITPRG_READ(outercnt);
@@ -516,13 +516,13 @@ void bfcobra_state::RunBlit(address_space &space)
blitter.command & CMD_SRCUP ? "SRCUP" : " ",
blitter.command & CMD_DSTUP ? "DSTUP" : " ");
- osd_printf_debug("Src Address Byte 0 %.2x\n", blitter.source.addr0);
- osd_printf_debug("Src Address Byte 1 %.2x\n", blitter.source.addr1);
- osd_printf_debug("Src Control %.2x\n", blitter.source.addr2);
+ osd_printf_debug("Src Address Byte 0 %.2x\n", blitter.source.as8bit.addr0);
+ osd_printf_debug("Src Address Byte 1 %.2x\n", blitter.source.as8bit.addr1);
+ osd_printf_debug("Src Control %.2x\n", blitter.source.as8bit.addr2);
osd_printf_debug(" Src Address %.5x\n", blitter.source.addr & 0xfffff);
- osd_printf_debug("Dest Address Byte 0 %.2x\n", blitter.dest.addr0);
- osd_printf_debug("Dest Address Byte 1 %.2x\n", blitter.dest.addr1);
- osd_printf_debug("Dest Control %.2x\n", blitter.dest.addr2);
+ osd_printf_debug("Dest Address Byte 0 %.2x\n", blitter.dest.as8bit.addr0);
+ osd_printf_debug("Dest Address Byte 1 %.2x\n", blitter.dest.as8bit.addr1);
+ osd_printf_debug("Dest Control %.2x\n", blitter.dest.as8bit.addr2);
osd_printf_debug(" Dst. Address %.5x\n", blitter.dest.addr & 0xfffff);
osd_printf_debug("Mode Control %.2x", blitter.modectl);
osd_printf_debug(" %s\n", blitter.modectl & MODE_BITTOBYTE ? "BIT_TO_BYTE" : "");
@@ -552,40 +552,40 @@ void bfcobra_state::RunBlit(address_space &space)
if (blitter.modectl & MODE_YFRAC)
{
if (blitter.modectl & MODE_SSIGN )
- blitter.dest.addr0--;
+ blitter.dest.as8bit.addr0--;
else
- blitter.dest.addr0++;
+ blitter.dest.as8bit.addr0++;
}
else
{
if (blitter.modectl & MODE_DSIGN )
- blitter.dest.addr1--;
+ blitter.dest.as8bit.addr1--;
else
- blitter.dest.addr1++;
+ blitter.dest.as8bit.addr1++;
}
- if( blitter.source.addr0 < blitter.step )
+ if( blitter.source.as8bit.addr0 < blitter.step )
{
- blitter.source.addr0 -=blitter.step ;
- blitter.source.addr0 +=blitter.source.addr1;
+ blitter.source.as8bit.addr0 -= blitter.step ;
+ blitter.source.as8bit.addr0 += blitter.source.as8bit.addr1;
if ( blitter.modectl & MODE_YFRAC )
{
if (blitter.modectl & MODE_DSIGN )
- blitter.dest.addr1--;
+ blitter.dest.as8bit.addr1--;
else
- blitter.dest.addr1++;
+ blitter.dest.as8bit.addr1++;
}
else
{
if (blitter.modectl & MODE_SSIGN )
- blitter.dest.addr0--;
+ blitter.dest.as8bit.addr0--;
else
- blitter.dest.addr0++;
+ blitter.dest.as8bit.addr0++;
}
}
else
{
- blitter.source.addr0 -=blitter.step;
+ blitter.source.as8bit.addr0 -= blitter.step;
}
*blitter_get_addr( blitter.dest.addr) = blitter.pattern;
@@ -603,7 +603,7 @@ void bfcobra_state::RunBlit(address_space &space)
if (LOOPTYPE == 3 && innercnt == blitter.innercnt)
{
srcdata = *(blitter_get_addr( blitter.source.addr & 0xfffff));
- blitter.source.loword++;
+ blitter.source.as16bit.loword++;
cycles_used++;
}
@@ -616,9 +616,9 @@ void bfcobra_state::RunBlit(address_space &space)
cycles_used++;
if (blitter.modectl & MODE_SSIGN)
- blitter.source.loword-- ;
+ blitter.source.as16bit.loword-- ;
else
- blitter.source.loword++;
+ blitter.source.as16bit.loword++;
result = srcdata;
}
@@ -725,9 +725,9 @@ void bfcobra_state::RunBlit(address_space &space)
/* Update destination address */
if (blitter.modectl & MODE_DSIGN)
- blitter.dest.loword--;
+ blitter.dest.as16bit.loword--;
else
- blitter.dest.loword++;
+ blitter.dest.as16bit.loword++;
} while (--innercnt);
@@ -738,10 +738,10 @@ void bfcobra_state::RunBlit(address_space &space)
else
{
if (blitter.command & CMD_DSTUP)
- blitter.dest.loword += blitter.step;
+ blitter.dest.as16bit.loword += blitter.step;
if (blitter.command & CMD_SRCUP)
- blitter.source.loword += blitter.step;
+ blitter.source.as16bit.loword += blitter.step;
if (blitter.command & CMD_PARRD)
{
@@ -937,7 +937,7 @@ READ8_MEMBER(bfcobra_state::chipset_r)
case 0x20:
{
/* Seems correct - used during RLE pic decoding */
- val = m_blitter.dest.addr0;
+ val = m_blitter.dest.as8bit.addr0;
break;
}
case 0x22:
@@ -1006,17 +1006,17 @@ WRITE8_MEMBER(bfcobra_state::chipset_w)
}
case 0x18:
{
- m_blitter.program.addr0 = data;
+ m_blitter.program.as8bit.addr0 = data;
break;
}
case 0x19:
{
- m_blitter.program.addr1 = data;
+ m_blitter.program.as8bit.addr1 = data;
break;
}
case 0x1A:
{
- m_blitter.program.addr2 = data;
+ m_blitter.program.as8bit.addr2 = data;
break;
}
case 0x20:
@@ -1091,7 +1091,7 @@ enum fdc_phase
COMMAND,
EXECUTION_R,
EXECUTION_W,
- RESULTS,
+ RESULTS
};
enum command
diff --git a/src/mame/includes/micro3d.h b/src/mame/includes/micro3d.h
index e4fe37b871c..01b9a52dfea 100644
--- a/src/mame/includes/micro3d.h
+++ b/src/mame/includes/micro3d.h
@@ -29,9 +29,17 @@ enum planes
CLIP_X_MIN,
CLIP_X_MAX,
CLIP_Y_MIN,
- CLIP_Y_MAX,
+ CLIP_Y_MAX
};
+enum dac_registers {
+ VCF,
+ VCQ,
+ VCA,
+ PAN
+};
+
+
class micro3d_state : public driver_device
{
public:
@@ -196,7 +204,7 @@ struct lp_filter
biquad ProtoCoef[2];
};
-struct filter_state
+struct m3d_filter_state
{
double capval;
double exponent;
@@ -221,24 +229,24 @@ protected:
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples);
private:
// internal state
- union
- {
- struct
- {
- UINT8 m_vcf;
- UINT8 m_vcq;
- UINT8 m_vca;
- UINT8 m_pan;
- };
+// union
+// {
+// struct
+// {
+// UINT8 m_vcf;
+// UINT8 m_vcq;
+// UINT8 m_vca;
+// UINT8 m_pan;
+// };
UINT8 m_dac[4];
- };
+// };
float m_gain;
UINT32 m_noise_shift;
UINT8 m_noise_value;
UINT8 m_noise_subcount;
- filter_state m_noise_filters[4];
+ m3d_filter_state m_noise_filters[4];
lp_filter m_filter;
sound_stream *m_stream;
};
diff --git a/src/mame/includes/tx1.h b/src/mame/includes/tx1.h
index 235d564437f..0f4b5bf9f29 100644
--- a/src/mame/includes/tx1.h
+++ b/src/mame/includes/tx1.h
@@ -56,9 +56,9 @@ struct sn74s516_t
union
{
#ifdef LSB_FIRST
- struct { UINT16 W; INT16 Z; };
+ struct { UINT16 W; INT16 Z; } as16bit;
#else
- struct { INT16 Z; UINT16 W; };
+ struct { INT16 Z; UINT16 W; } as16bit;
#endif
INT32 ZW32;
} ZW;
@@ -241,9 +241,9 @@ struct pit8253_state
union
{
#ifdef LSB_FIRST
- struct { UINT8 LSB; UINT8 MSB; };
+ struct { UINT8 LSB; UINT8 MSB; } as8bit;
#else
- struct { UINT8 MSB; UINT8 LSB; };
+ struct { UINT8 MSB; UINT8 LSB; } as8bit;
#endif
UINT16 val;
} counts[3];
diff --git a/src/mame/machine/tx1.c b/src/mame/machine/tx1.c
index 0760fa17bc9..4442622ee34 100644
--- a/src/mame/machine/tx1.c
+++ b/src/mame/machine/tx1.c
@@ -138,8 +138,8 @@ static void sn_divide(running_machine &machine)
if (SN74S516.X == 0)
{
osd_printf_debug("%s:SN74S516 tried to divide by zero\n", machine.describe_context());
- SN74S516.ZW.Z = (INT16)0xffff;
- SN74S516.ZW.W = 0xffff;
+ SN74S516.ZW.as16bit.Z = (INT16)0xffff;
+ SN74S516.ZW.as16bit.W = 0xffff;
SN74S516.ZWfl = 0;
return;
}
@@ -160,8 +160,8 @@ static void sn_divide(running_machine &machine)
}
case 0x6664:
{
- Z = SN74S516.ZW.W / SN74S516.X;
- W = SN74S516.ZW.W % SN74S516.X;
+ Z = SN74S516.ZW.as16bit.W / SN74S516.X;
+ W = SN74S516.ZW.as16bit.W % SN74S516.X;
break;
}
default:
@@ -174,8 +174,8 @@ static void sn_divide(running_machine &machine)
if (Z > 0xffff)
Z |= 0xff00;
- SN74S516.ZW.Z = Z;
- SN74S516.ZW.W = W;
+ SN74S516.ZW.as16bit.Z = Z;
+ SN74S516.ZW.as16bit.W = W;
SN74S516.ZWfl = 0;
}
@@ -205,9 +205,9 @@ static void kick_sn74s516(running_machine &machine, UINT16 *data, const int ins)
#define LOAD_X (SN74S516.X = *data)
#define LOAD_Y (SN74S516.Y = *data)
-#define LOAD_Z (SN74S516.ZW.Z = *data)
-#define LOAD_W (SN74S516.ZW.W = *data)
-#define READ_ZW *data = SN74S516.ZWfl ? SN74S516.ZW.W : SN74S516.ZW.Z; \
+#define LOAD_Z (SN74S516.ZW.as16bit.Z = *data)
+#define LOAD_W (SN74S516.ZW.as16bit.W = *data)
+#define READ_ZW *data = SN74S516.ZWfl ? SN74S516.ZW.as16bit.W : SN74S516.ZW.as16bit.Z; \
SN74S516.ZWfl ^= 1;
#define UPDATE_SEQUENCE (SN74S516.code = (SN74S516.code << 4) | ins)
@@ -359,7 +359,7 @@ static void kick_sn74s516(running_machine &machine, UINT16 *data, const int ins)
else if (ins == 7)
{
/* 6667 = Load X, Load Z, Load W, Clear Z */
- SN74S516.ZW.Z = 0;
+ SN74S516.ZW.as16bit.Z = 0;
sn74s516_update(machine, ins);
}
break;
@@ -955,7 +955,7 @@ enum
BB_MUX_DPROE,
BB_MUX_PPOE,
BB_MUX_INSCL,
- BB_MUX_ILDEN,
+ BB_MUX_ILDEN
};
#define BB_SET_INS0_BIT do { if (!(ins & 0x4) && math.i0ff) ins |= math.i0ff;} while(0)