summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Aaron Giles <aaron@aarongiles.com>2020-10-04 03:16:29 -0700
committer Aaron Giles <aaron@aarongiles.com>2020-10-04 03:16:29 -0700
commit1b399b9e9b891b1a53290cdfdaa76b796ce1fd82 (patch)
tree4c6011e7a026c6ac26043c98a62f4937a3308515
parente184b73a5f50754574eca9c4cc4948dbaa9e9aed (diff)
segag80: Get all 005 sounds working to some extent. Optimizations still needed.
-rw-r--r--scripts/target/mame/arcade.lua4
-rw-r--r--scripts/target/mame/nl.lua4
-rw-r--r--src/mame/audio/nl_005.cpp171
-rw-r--r--src/mame/audio/segag80.cpp9
-rw-r--r--src/mame/drivers/segag80r.cpp2
5 files changed, 147 insertions, 43 deletions
diff --git a/scripts/target/mame/arcade.lua b/scripts/target/mame/arcade.lua
index 452e223edc5..b417fea8a90 100644
--- a/scripts/target/mame/arcade.lua
+++ b/scripts/target/mame/arcade.lua
@@ -3538,8 +3538,8 @@ files {
MAME_DIR .. "src/mame/audio/nl_elim.h",
MAME_DIR .. "src/mame/audio/nl_spacfury.cpp",
MAME_DIR .. "src/mame/audio/nl_spacfury.h",
- MAME_DIR .. "src/mame/audio/nl_spacod.cpp",
- MAME_DIR .. "src/mame/audio/nl_spacod.h",
+ MAME_DIR .. "src/mame/audio/nl_spaceod.cpp",
+ MAME_DIR .. "src/mame/audio/nl_spaceod.h",
MAME_DIR .. "src/mame/video/segag80v.cpp",
MAME_DIR .. "src/mame/drivers/segahang.cpp",
MAME_DIR .. "src/mame/includes/segahang.h",
diff --git a/scripts/target/mame/nl.lua b/scripts/target/mame/nl.lua
index d7087e9ebfa..aa7012fc813 100644
--- a/scripts/target/mame/nl.lua
+++ b/scripts/target/mame/nl.lua
@@ -313,8 +313,8 @@ files{
MAME_DIR .. "src/mame/audio/nl_elim.h",
MAME_DIR .. "src/mame/audio/nl_spacfury.cpp",
MAME_DIR .. "src/mame/audio/nl_spacfury.h",
- MAME_DIR .. "src/mame/audio/nl_spacod.cpp",
- MAME_DIR .. "src/mame/audio/nl_spacod.h",
+ MAME_DIR .. "src/mame/audio/nl_spaceod.cpp",
+ MAME_DIR .. "src/mame/audio/nl_spaceod.h",
MAME_DIR .. "src/mame/video/segag80v.cpp",
MAME_DIR .. "src/mame/drivers/zaxxon.cpp",
MAME_DIR .. "src/mame/includes/zaxxon.h",
diff --git a/src/mame/audio/nl_005.cpp b/src/mame/audio/nl_005.cpp
index c9d513fa23b..64fecc58610 100644
--- a/src/mame/audio/nl_005.cpp
+++ b/src/mame/audio/nl_005.cpp
@@ -20,6 +20,8 @@
//
#define ENABLE_FRONTIERS (0)
+#define HLE_MELODY_CLOCK (1)
+#define UNDERCLOCK_NOISE_GEN (1)
@@ -48,6 +50,7 @@
#define PROM_6331_DIP PROM_82S123_DIP
// Totally faking this, no clue
+#if 0
static NETLIST_START(_MB4391)
RES(RIN1, RES_K(70))
RES(RIN2, RES_K(70))
@@ -63,10 +66,60 @@ static NETLIST_START(_MB4391)
NET_C(IN, FUNC.A0)
ALIAS(CON, FUNC.A1)
NET_C(GND, FUNC.A2)
- ALIAS(R0, FUNC.A3)
+ ALIAS(RO, FUNC.A3)
NET_C(VSS, FUNC.A4)
NET_C(FUNC.Q, ROUT.1)
NETLIST_END()
+#else
+static NETLIST_START(_MB4391)
+ // MB4391 (fake implementation)
+ // 2020 by beta-tester (https://github.com/beta-tester)
+ //
+ // values by guesses
+ // for brdrline schematics only
+ //
+ // Vmix = -(Vcon - 4.759384) / (4.759384 - 2.839579)
+ // Vmix2 = pow(Vmix, 2)
+ // Vout = Vin * Vmix2
+ //
+ // Vcon(max) = 4.759384
+ // Vcon(min) = 2.839584...2.839579 (@3.002360417e+01)(@3.152360417e+01)
+ //AFUNC(fx, 5, "(A1)")
+ //
+ //AFUNC(fx, 5, "min(1, max(0, -(A1 - 4.759384) / (4.759384 - 2.839579)))")
+ //AFUNC(fx, 5, "min(1, max(0, -(A1 - (A2-0.24)) / ((A2-0.24) - (A2/2+0.34))))")
+ //
+ // Vin(offset)=2.5 (VCC/2)
+ //AFUNC(fx, 5, "(A0)")
+ //AFUNC(fx, 5, "(A0-2.5)")
+ //AFUNC(fx, 5, "(A0-(A2/2))")
+ //
+ // vin * mix
+ AFUNC(fx, 5, "(A0-(A2/2)) * (min(1, max(0, -(A1 - 4.759384) / (4.759384 - 2.839579))))")
+ //
+ // vin * pow(mix, 2)
+ //AFUNC(fx, 5, "(A0-(A2/2)) * pow((min(1, max(0, -(A1 - 4.759384) / (4.759384 - 2.839579))), 2))")
+
+ RES(R1, RES_K(10))
+ RES(R2, RES_K(10))
+ NET_C(VSS, R1.1)
+ NET_C(IN, R1.2, R2.1)
+ NET_C(R2.2, GND)
+
+ RES(Rout, RES_K(1))
+ NET_C(fx.Q, Rout.1) // fx(IN, CON, VCC, GND, RO) = OUT
+
+ // INPUT
+ ALIAS(IN, fx.A0) // IN
+ ALIAS(CON, fx.A1) // CON
+ ALIAS(VSS, fx.A2) // VSS
+ ALIAS(GND, fx.A3) // GND
+ ALIAS(RO, fx.A4) // RO
+
+ // OUTPUT
+ ALIAS(OUT, Rout.2) // OUT
+NETLIST_END()
+#endif
static NETLIST_START(_MB4391_DIP)
SUBMODEL(_MB4391, A)
@@ -75,11 +128,11 @@ static NETLIST_START(_MB4391_DIP)
DIPPINS( /* +--------------+ */
A.IN, /* 1IN |1 ++ 16| 1VSS */ A.VSS,
A.CON, /* 1CON |2 15| 1OUT */ A.OUT,
- A.GND, /* 1GND |3 14| 1R0 */ A.R0,
+ A.GND, /* 1GND |3 14| 1R0 */ A.RO,
NC.I, /* NC |4 MB4391 13| NC */ NC.I,
B.IN, /* 2IN |5 12| 2VSS */ B.VSS,
B.CON, /* 2CON |6 11| 2OUT */ B.OUT,
- B.GND, /* 2GND |7 10| 2R0 */ B.R0,
+ B.GND, /* 2GND |7 10| 2R0 */ B.RO,
NC.I, /* NC |8 9| NC */ NC.I
/* +--------------+ */
)
@@ -96,9 +149,15 @@ NETLIST_END()
NETLIST_START(sega005)
+#if 1
SOLVER(Solver, 1000)
PARAM(Solver.DYNAMIC_TS, 1)
- PARAM(Solver.DYNAMIC_MIN_TIMESTEP, 2e-5)
+ PARAM(Solver.DYNAMIC_MIN_TIMESTEP, 4e-5)
+ PARAM(Solver.Solver_60.DYNAMIC_MIN_TIMESTEP, 9e-7) // bomb drop
+ PARAM(Solver.Solver_62.DYNAMIC_MIN_TIMESTEP, 8e-6) // whistle
+#else
+ SOLVER(Solver, 4800000)
+#endif
LOCAL_SOURCE(_MB4391)
LOCAL_SOURCE(_MB4391_DIP)
@@ -135,7 +194,6 @@ NETLIST_START(sega005)
ANALOG_INPUT(I_V5, 5)
ANALOG_INPUT(I_V6, 6)
ANALOG_INPUT(I_V12, 12)
- ANALOG_INPUT(I_VM12, -12)
POT(VR1, RES_K(50))
POT(VR2, RES_K(50))
@@ -221,7 +279,7 @@ NETLIST_START(sega005)
RES(R72, RES_K(51))
RES(R73, RES_K(51))
RES(R74, RES_K(10))
- RES(R75, RES_K(15))
+ RES(R75, RES_K(51)) // parts sheet says 15K
RES(R76, RES_K(100))
RES(R77, RES_K(100))
RES(R78, RES_K(10))
@@ -297,7 +355,7 @@ NETLIST_START(sega005)
CAP(C6, CAP_U(470))
// CAP(C7, CAP_U(0.1))
// CAP(C8, CAP_U(2.2))
- CAP(C9, CAP_U(0.047))
+ CAP(C9, CAP_P(4700)) // parts list says 0.047
// CAP(C10, CAP_U(0.1))
CAP(C11, CAP_U(0.01))
// CAP(C12, CAP_U(0.1))
@@ -321,9 +379,9 @@ NETLIST_START(sega005)
// CAP(C30, CAP_U(0.1))
// CAP(C31, CAP_U(0.1))
// CAP(C32, CAP_U(0.1))
- CAP(C33, CAP_U(0.001))
+ CAP(C33, CAP_U(0.1)) // parts list says 0.001, but ruins envelope on melody
CAP(C34, CAP_U(0.01))
- CAP(C35, CAP_U(0.1))
+ CAP(C35, CAP_P(1000)) // parts list says 0.1, but melody doesn't clock with that
CAP(C36, CAP_U(1))
// CAP(C37, CAP_U(0.1))
// CAP(C38, CAP_U(0.1))
@@ -340,15 +398,15 @@ NETLIST_START(sega005)
// CAP(C49, CAP_U(0.1))
CAP(C50, CAP_U(4.7))
CAP(C51, CAP_U(4.7))
- CAP(C52, CAP_U(0.0047))
- CAP(C53, CAP_U(0.0047))
+ CAP(C52, CAP_U(0.047)) // parts list says 0.0047? 0.047? explosions
+ CAP(C53, CAP_U(0.047)) // parts list says 0.0047? 0.047? explosions
// CAP(C54, CAP_U(0.1))
CAP(C55, CAP_U(0.022))
CAP(C56, CAP_U(0.022))
CAP(C57, CAP_U(1))
// CAP(C58, CAP_U(0.1))
- CAP(C59, CAP_U(0.047))
- CAP(C60, CAP_U(0.1))
+ CAP(C59, CAP_P(4700)) // parts list says 0.047u (bomb drop)
+ CAP(C60, CAP_U(1)) // parts list says 0.1u (pistol shoot)
// CAP(C61, CAP_U(1))
CAP(C62, CAP_U(1))
CAP(C63, CAP_U(0.1))
@@ -396,7 +454,7 @@ NETLIST_START(sega005)
CAP(C105, CAP_U(10))
CAP(C106, CAP_U(4.7))
CAP(C107, CAP_P(680))
- CAP(C108, CAP_U(1))
+ CAP(C108, CAP_U(2.2)) // parts list says 1.0
// CAP(C109, CAP_P(680))
CAP(C110, CAP_U(1))
// CAP(C111, CAP_U(0.1))
@@ -437,6 +495,7 @@ NETLIST_START(sega005)
NET_C(U2.16, I_V5)
NE555_DIP(U3) // Timer
+ NET_C(U3.1, GND)
NET_C(U3.8, I_V5)
TTL_74LS14_DIP(U4) // Dual Gate/Hex Inverter
@@ -449,13 +508,17 @@ NETLIST_START(sega005)
NET_C(U6.7, GND)
NET_C(U6.14, I_V5)
+#if (!HLE_MELODY_CLOCK)
TTL_74LS161_DIP(U7) // 4-Bit Binary Counter
NET_C(U7.8, GND)
NET_C(U7.16, I_V5)
+#endif
PROM_6331_DIP(U8) // Bioplar PROM
PARAM(U8.A.ROM, "6331_sound_u8")
+#if (!HLE_MELODY_CLOCK)
PARAM(U8.FORCE_TRISTATE_LOGIC, 1)
+#endif
NET_C(U8.8, GND)
NET_C(U8.16, I_V5)
@@ -473,17 +536,24 @@ NETLIST_START(sega005)
LM324_DIP(U12) // Op. Amp.
NET_C(U12.4, I_V12)
- NET_C(U12.11, I_VM12)
+ NET_C(U12.11, GND)
MM5837_DIP(U13) // Noise generator
+#if (UNDERCLOCK_NOISE_GEN)
+ // officially runs at 48-112kHz, but little noticeable difference
+ // in exchange for a big performance boost
+ PARAM(U13.FREQ, 12000)
+#endif
TTL_74LS293_DIP(U14) // 4-Bit Binary Counter
NET_C(U14.7, GND)
NET_C(U14.14, I_V5)
+#if (!HLE_MELODY_CLOCK)
TTL_74LS161_DIP(U15) // 4-Bit Binary Counter
NET_C(U15.8, GND)
NET_C(U15.16, I_V5)
+#endif
EPROM_2716_DIP(U16) // EPROM
PARAM(U16.A.ROM, "epr_1286_sound_16")
@@ -499,7 +569,7 @@ NETLIST_START(sega005)
LM324_DIP(U18) // Op. Amp.
NET_C(U18.4, I_V12)
- NET_C(U18.11, I_VM12)
+ NET_C(U18.11, GND)
TTL_7417_DIP(U19) // Hex Buffers with Open-Collector High-Voltage Outputs
NET_C(U19.7, GND)
@@ -510,14 +580,16 @@ NETLIST_START(sega005)
NET_C(U20.16, I_V5)
NE555_DIP(U21) // Timer
+ NET_C(U21.1, GND)
NET_C(U21.8, I_V5)
NE555_DIP(U22) // Timer
+ NET_C(U22.1, GND)
NET_C(U22.8, I_V5)
LM324_DIP(U23) // Op. Amp.
NET_C(U23.4, I_V12)
- NET_C(U23.11, I_VM12)
+ NET_C(U23.11, GND)
LM324_DIP(U24) // Op. Amp.
NET_C(U24.4, I_V12)
@@ -526,18 +598,20 @@ NETLIST_START(sega005)
LM324_DIP(U25) // Op. Amp.
NET_C(U25.4, I_V12)
- NET_C(U25.11, I_VM12)
+ NET_C(U25.11, GND)
LM324_DIP(U26) // Op. Amp.
NET_C(U26.4, I_V12)
- NET_C(U26.11, I_VM12)
+ NET_C(U26.11, GND)
NE555_DIP(U27) // Timer
+ NET_C(U27.1, GND)
NET_C(U27.8, I_V5)
MB4391_DIP(U28) // Sega custom
NET_C(U28.3, U28.7, GND)
- NET_C(U28.12, U28.16, I_V12) // guess
+ NET_C(U28.12, I_V12)
+ NET_C(U28.16, I_V5) // guess
CD4016_DIP(U29) // Quad Bilateral Switch
NET_C(U29.7, GND)
@@ -545,15 +619,15 @@ NETLIST_START(sega005)
MB4391_DIP(U30) // Sega custom
NET_C(U30.3, U30.7, GND)
- NET_C(U30.12, U30.16, I_V12) // guess
+ NET_C(U30.12, U30.16, I_V5) // guess
MB4391_DIP(U31) // Sega custom
NET_C(U31.3, U31.7, GND)
- NET_C(U31.12, U31.16, I_V12) // guess
+ NET_C(U31.12, U31.16, I_V5) // guess
MB4391_DIP(U32) // Sega custom
NET_C(U32.3, U32.7, GND)
- NET_C(U32.12, U32.16, I_V12) // guess
+ NET_C(U32.12, U32.16, I_V5) // guess
//
// Sheet 1, bottom-left
@@ -598,6 +672,32 @@ NETLIST_START(sega005)
NET_C(U16.9, R32.1, U8.10)
NET_C(R27.2, R28.2, R29.2, R30.2, R31.2, R32.2, I_V5)
+ // Oscillator clock, with VR to control
+ NET_C(U8.15, GND)
+#if (HLE_MELODY_CLOCK)
+ // decode the PROM output into a number
+ AFUNC(DECODER, 8, "if(A0>2.5,1,0)+if(A1>2.5,2,0)+if(A2>2.5,4,0)+if(A3>2.5,8,0)+if(A4>2.5,16,0)+if(A5>2.5,32,0)+if(A6>2.5,64,0)+if(A7>2.5,128,0)")
+ NET_C(DECODER.A0, U8.1)
+ NET_C(DECODER.A1, U8.2)
+ NET_C(DECODER.A2, U8.3)
+ NET_C(DECODER.A3, U8.4)
+ NET_C(DECODER.A4, U8.5)
+ NET_C(DECODER.A5, U8.6)
+ NET_C(DECODER.A6, U8.7)
+ NET_C(DECODER.A7, U8.9)
+ // U7/U15 count up from the PROM output to 256 and then reload
+ VARCLOCK(MELODY_CLK, 1, "if(A0<255,0.000001*(256-A0),0.001)")
+ NET_C(MELODY_CLK.GND, GND)
+ NET_C(MELODY_CLK.VCC, I_V5)
+ NET_C(MELODY_CLK.A0, DECODER.Q)
+ // special case: FF from the PROM will effectively suppress the clock
+ AFUNC(MELODY_SUPPRESS, 2, "if(A0<255,A1,0)")
+ NET_C(MELODY_SUPPRESS.A0, DECODER.Q)
+ NET_C(MELODY_SUPPRESS.A1, MELODY_CLK.Q)
+ NET_C(MELODY_SUPPRESS.Q, U4.13, C35.2, U14.11)
+ NET_C(R134.1, R134.2, C9.1, C9.2, U4.3, U4.4, U4.5, U4.6, GND)
+ NET_C(U4.12, GND)
+#else
NET_C(U8.1, U7.3)
NET_C(U8.2, U7.4)
NET_C(U8.3, U7.5)
@@ -606,10 +706,7 @@ NETLIST_START(sega005)
NET_C(U8.6, U15.4)
NET_C(U8.7, U15.5)
NET_C(U8.9, U15.6)
- NET_C(U8.15, GND)
-
- // Osciallator clock, with VR to control
- CLOCK(OSC1, 212595) // 1/1.39*4700e-12*(220+500)
+ CLOCK(OSC1, 350000) // 1/1.39*4700e-12*(220+500) = 212595
NET_C(OSC1.GND, GND)
NET_C(OSC1.VCC, I_V5)
NET_C(R134.1, R134.2, C9.1, C9.2, U4.3, U4.4, U4.5, U4.6, GND)
@@ -619,6 +716,7 @@ NETLIST_START(sega005)
NET_C(U7.9, U15.9, U4.12)
NET_C(U15.1, I_V5)
NET_C(U15.15, U4.13, C35.2, U14.11)
+#endif
NET_C(C35.1, GND)
NET_C(U14.5, R34.2)
NET_C(U14.8, R50.2)
@@ -673,7 +771,7 @@ NETLIST_START(sega005)
NET_C(R97.2, I_V5)
NET_C(U22.4, I_V5)
RES(RU22_DUMMY, RES_K(1))
- NET_C(U22.3, RU22_DUMMY.1)
+ NET_C(U22.3, RU22_DUMMY.1) // OUTPUT (3) not connected
NET_C(RU22_DUMMY.2, GND)
NET_C(C71.1, R92.1, U23.9)
@@ -714,9 +812,9 @@ NETLIST_START(sega005)
NET_C(R120.1, U26.13, C95.1, U26.3)
NET_C(C95.2, GND)
NET_C(U26.2, U26.1, U27.5)
+ NET_C(U27.3, R112.2)
NET_C(U27.4, I_V5)
- NET_C(U27.3, R112.2)
NET_C(R112.1, C93.2, R111.2)
NET_C(R111.1, GND)
NET_C(C93.1, R116.1)
@@ -738,7 +836,7 @@ NETLIST_START(sega005)
ALIAS(WHISTLE_SOUND, C83.2)
//
- // Sheet 2, middle (EXPLOSIONS
+ // Sheet 2, middle (EXPLOSIONS)
//
NET_C(LARGE_EXPL_SOUND_TRIG, U2.9, R3.1)
@@ -747,8 +845,8 @@ NETLIST_START(sega005)
NET_C(U2.6, C13.2)
NET_C(C13.1, R6.1, U2.7)
NET_C(R6.2, I_V5)
- NET_C(U2.12, R17.1)
- NET_C(R17.2, I_V5, D3.K)
+ NET_C(U2.12, R17.1, D3.K)
+ NET_C(R17.2, I_V5)
NET_C(D3.A, R16.1)
NET_C(R16.2, C25.1, R15.1)
NET_C(C25.2, GND)
@@ -1012,7 +1110,14 @@ NETLIST_START(sega005)
#if (ENABLE_FRONTIERS)
#define RXX 192
-// OPTIMIZE_FRONTIER(INVADER_1, RES_M(1), RXX)
+ OPTIMIZE_FRONTIER(BOMB_DROP_SOUND, RES_M(1), RXX)
+ OPTIMIZE_FRONTIER(SMALL_EXPLOSION_SOUND, RES_M(1), RXX)
+ OPTIMIZE_FRONTIER(LARGE_EXPLOSION_SOUND, RES_M(1), RXX)
+ OPTIMIZE_FRONTIER(PISTOL_SHOOT_SOUND, RES_M(1), RXX)
+ OPTIMIZE_FRONTIER(MISSILE_SOUND, RES_M(1), RXX)
+ OPTIMIZE_FRONTIER(HELICOPTER_SOUND, RES_M(1), RXX)
+ OPTIMIZE_FRONTIER(WHISTLE_SOUND, RES_M(1), RXX)
+ OPTIMIZE_FRONTIER(MELODY, RES_M(1), RXX)
#endif
NETLIST_END()
diff --git a/src/mame/audio/segag80.cpp b/src/mame/audio/segag80.cpp
index 1de9d046cc5..613f3945c27 100644
--- a/src/mame/audio/segag80.cpp
+++ b/src/mame/audio/segag80.cpp
@@ -189,7 +189,7 @@ astrob_audio_device::astrob_audio_device(const machine_config &mconfig, const ch
DEFINE_DEVICE_TYPE(SPACE_ODYSSEY_AUDIO, spaceod_audio_device, "astrob_audio", "Space Odyssey Sound Board")
spaceod_audio_device::spaceod_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) :
- segag80_audio_device_base(mconfig, SPACE_ODYSSEY_AUDIO, tag, owner, clock, 0xf5, 0xcb, false, NETLIST_NAME(spaceod), 25000.0)
+ segag80_audio_device_base(mconfig, SPACE_ODYSSEY_AUDIO, tag, owner, clock, 0xf5, 0xcb, false, NETLIST_NAME(spaceod), 0.7)
{
}
@@ -229,7 +229,6 @@ void sega005_audio_device::device_add_mconfig(machine_config &config)
NETLIST_LOGIC_INPUT(config, m_a_input[4], "I_A4.IN", 0);
NETLIST_LOGIC_INPUT(config, m_a_input[5], "I_A5.IN", 0);
NETLIST_LOGIC_INPUT(config, m_a_input[6], "I_A6.IN", 0);
- NETLIST_LOGIC_INPUT(config, m_a_input[7], "I_A7.IN", 0);
NETLIST_LOGIC_INPUT(config, m_b_input[0], "I_B0.IN", 0);
NETLIST_LOGIC_INPUT(config, m_b_input[1], "I_B1.IN", 0);
@@ -239,7 +238,7 @@ void sega005_audio_device::device_add_mconfig(machine_config &config)
NETLIST_LOGIC_INPUT(config, m_b_input[5], "I_B5.IN", 0);
NETLIST_LOGIC_INPUT(config, m_b_input[6], "I_B6.IN", 0);
- NETLIST_STREAM_OUTPUT(config, "sound_nl:cout0", 0, "OUTPUT").set_mult_offset(15000.0, 0.0);
+ NETLIST_STREAM_OUTPUT(config, "sound_nl:cout0", 0, "OUTPUT").set_mult_offset(5.0, 0.0);
i8255_device &ppi(I8255A(config, "ppi8255"));
ppi.out_pa_callback().set(FUNC(sega005_audio_device::sound_a_w));
@@ -249,13 +248,13 @@ void sega005_audio_device::device_add_mconfig(machine_config &config)
void sega005_audio_device::sound_a_w(u8 data)
{
for (int bit = 0; bit < 8; bit++)
- if (m_a_input[0])
+ if (m_a_input[bit])
m_a_input[bit]->write_line(BIT(data, bit));
}
void sega005_audio_device::sound_b_w(u8 data)
{
for (int bit = 0; bit < 8; bit++)
- if (m_b_input[0])
+ if (m_b_input[bit])
m_b_input[bit]->write_line(BIT(data, bit));
}
diff --git a/src/mame/drivers/segag80r.cpp b/src/mame/drivers/segag80r.cpp
index 73c6636bff6..d7494bded47 100644
--- a/src/mame/drivers/segag80r.cpp
+++ b/src/mame/drivers/segag80r.cpp
@@ -1728,7 +1728,7 @@ GAME( 1981, astrob2a, astrob, astrob, astrob2, segag80r_state, init_astrob
GAME( 1981, astrob2b, astrob, astrob, astrob2, segag80r_state, init_astrob, ROT270, "Sega", "Astro Blaster (version 2b)", 0 )
GAME( 1981, astrob1, astrob, astrob, astrob, segag80r_state, init_astrob, ROT270, "Sega", "Astro Blaster (version 1)", 0 | MACHINE_NOT_WORKING ) // instant death if you start game with 1 credit, protection?, bad dump?
GAME( 1981, astrobg, astrob, astrob, astrob, segag80r_state, init_astrob, ROT270, "Sega", "Astro Blaster (German)", 0 )
-GAME( 1981, 005, 0, sega005, 005, segag80r_state, init_005, ROT270, "Sega", "005", MACHINE_IMPERFECT_SOUND )
+GAME( 1981, 005, 0, sega005, 005, segag80r_state, init_005, ROT270, "Sega", "005", 0 )
/* basic G-80 system with individual background boards */