galaxian.cpp: Implement konami filters using netlist. [Couriersud]
This change improves accuracy and scalability.
This commit is contained in:
parent
0f69abe4dc
commit
ee0e0c972c
@ -2821,6 +2821,8 @@ files {
|
|||||||
MAME_DIR .. "src/mame/audio/galaxian.cpp",
|
MAME_DIR .. "src/mame/audio/galaxian.cpp",
|
||||||
MAME_DIR .. "src/mame/audio/galaxian.h",
|
MAME_DIR .. "src/mame/audio/galaxian.h",
|
||||||
MAME_DIR .. "src/mame/video/galaxian.cpp",
|
MAME_DIR .. "src/mame/video/galaxian.cpp",
|
||||||
|
MAME_DIR .. "src/mame/audio/nl_konami.h",
|
||||||
|
MAME_DIR .. "src/mame/audio/nl_konami.cpp",
|
||||||
MAME_DIR .. "src/mame/drivers/galaxold.cpp",
|
MAME_DIR .. "src/mame/drivers/galaxold.cpp",
|
||||||
MAME_DIR .. "src/mame/includes/galaxold.h",
|
MAME_DIR .. "src/mame/includes/galaxold.h",
|
||||||
MAME_DIR .. "src/mame/machine/galaxold.cpp",
|
MAME_DIR .. "src/mame/machine/galaxold.cpp",
|
||||||
|
@ -51,6 +51,7 @@ SOUNDS["TMS5220"] = true
|
|||||||
SOUNDS["BEEP"] = true
|
SOUNDS["BEEP"] = true
|
||||||
SOUNDS["VOLT_REG"] = true
|
SOUNDS["VOLT_REG"] = true
|
||||||
SOUNDS["SPEAKER"] = true
|
SOUNDS["SPEAKER"] = true
|
||||||
|
SOUNDS["DIGITALKER"] = true
|
||||||
|
|
||||||
--------------------------------------------------
|
--------------------------------------------------
|
||||||
-- specify available video cores
|
-- specify available video cores
|
||||||
@ -184,6 +185,17 @@ files{
|
|||||||
MAME_DIR .. "src/mame/includes/cheekyms.h",
|
MAME_DIR .. "src/mame/includes/cheekyms.h",
|
||||||
MAME_DIR .. "src/mame/video/cheekyms.cpp",
|
MAME_DIR .. "src/mame/video/cheekyms.cpp",
|
||||||
|
|
||||||
|
MAME_DIR .. "src/mame/drivers/galaxian.cpp",
|
||||||
|
MAME_DIR .. "src/mame/includes/galaxian.h",
|
||||||
|
MAME_DIR .. "src/mame/audio/galaxian.cpp",
|
||||||
|
MAME_DIR .. "src/mame/audio/galaxian.h",
|
||||||
|
MAME_DIR .. "src/mame/video/galaxian.cpp",
|
||||||
|
MAME_DIR .. "src/mame/audio/nl_konami.h",
|
||||||
|
MAME_DIR .. "src/mame/audio/nl_konami.cpp",
|
||||||
|
|
||||||
|
MAME_DIR .. "src/mame/audio/cclimber.cpp",
|
||||||
|
MAME_DIR .. "src/mame/audio/cclimber.h",
|
||||||
|
|
||||||
MAME_DIR .. "src/mame/audio/nl_zac1b11142.cpp",
|
MAME_DIR .. "src/mame/audio/nl_zac1b11142.cpp",
|
||||||
MAME_DIR .. "src/mame/audio/nl_zacc1b11142.h",
|
MAME_DIR .. "src/mame/audio/nl_zacc1b11142.h",
|
||||||
MAME_DIR .. "src/mame/audio/zaccaria.cpp",
|
MAME_DIR .. "src/mame/audio/zaccaria.cpp",
|
||||||
|
183
src/mame/audio/nl_konami.cpp
Normal file
183
src/mame/audio/nl_konami.cpp
Normal file
@ -0,0 +1,183 @@
|
|||||||
|
// license:CC0
|
||||||
|
// copyright-holders:Couriersud
|
||||||
|
#include "netlist/devices/net_lib.h"
|
||||||
|
|
||||||
|
#ifdef NLBASE_H_
|
||||||
|
#error Somehow nl_base.h made it into the include chain.
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static NETLIST_START(filter)
|
||||||
|
CD4066_GATE(G1)
|
||||||
|
PARAM(G1.BASER, 270.0)
|
||||||
|
CD4066_GATE(G2)
|
||||||
|
PARAM(G2.BASER, 270.0)
|
||||||
|
RES(RI, RES_K(1))
|
||||||
|
RES(RO, RES_K(5))
|
||||||
|
CAP(C1, CAP_U(0.22))
|
||||||
|
CAP(C2, CAP_U(0.047))
|
||||||
|
NET_C(RI.2, RO.1, G1.R.1, G2.R.1)
|
||||||
|
NET_C(G1.R.2, C1.1)
|
||||||
|
NET_C(G2.R.2, C2.1)
|
||||||
|
|
||||||
|
NET_C(C1.2, C2.2, G1.VSS, G2.VSS)
|
||||||
|
NET_C(G1.VDD, G2.VDD)
|
||||||
|
|
||||||
|
ALIAS(I, RI.1)
|
||||||
|
ALIAS(O, RO.2)
|
||||||
|
|
||||||
|
ALIAS(CTL1, G1.CTL)
|
||||||
|
ALIAS(CTL2, G2.CTL)
|
||||||
|
|
||||||
|
ALIAS(VDD, G1.VDD)
|
||||||
|
ALIAS(VSS, G1.VSS)
|
||||||
|
NETLIST_END()
|
||||||
|
|
||||||
|
static NETLIST_START(amp)
|
||||||
|
|
||||||
|
UA741_DIP8(X3A)
|
||||||
|
RES(R1, RES_K(2.2))
|
||||||
|
RES(R2, RES_K(4.7))
|
||||||
|
RES(VR, 200) // Actually a potentiometer
|
||||||
|
CAP(C1, CAP_U(0.15))
|
||||||
|
RES(RI, RES_K(100))
|
||||||
|
|
||||||
|
NET_C(X3A.2, R1.1)
|
||||||
|
NET_C(X3A.6, R1.2, R2.1)
|
||||||
|
NET_C(R2.2, VR.1)
|
||||||
|
NET_C(VR.1, C1.1) // 100% pot position
|
||||||
|
NET_C(C1.2, RI.1)
|
||||||
|
|
||||||
|
NET_C(GND, VR.2, RI.2)
|
||||||
|
|
||||||
|
// Amplifier M51516L, assume input RI 100k
|
||||||
|
|
||||||
|
ALIAS(OPAMP, X3A.2)
|
||||||
|
ALIAS(OUT, RI.1)
|
||||||
|
ALIAS(VP, X3A.7)
|
||||||
|
ALIAS(VM, X3A.4)
|
||||||
|
ALIAS(GND, X3A.3)
|
||||||
|
|
||||||
|
NETLIST_END()
|
||||||
|
|
||||||
|
static NETLIST_START(AY1)
|
||||||
|
TTL_INPUT(CTL0, 0)
|
||||||
|
TTL_INPUT(CTL1, 0)
|
||||||
|
TTL_INPUT(CTL2, 0)
|
||||||
|
TTL_INPUT(CTL3, 0)
|
||||||
|
TTL_INPUT(CTL4, 0)
|
||||||
|
TTL_INPUT(CTL5, 0)
|
||||||
|
/* AY 8910 internal resistors */
|
||||||
|
RES(R_AY3D_A, 1000)
|
||||||
|
RES(R_AY3D_B, 1000)
|
||||||
|
RES(R_AY3D_C, 1000)
|
||||||
|
NET_C(VP5, R_AY3D_A.1, R_AY3D_B.1, R_AY3D_C.1)
|
||||||
|
|
||||||
|
SUBMODEL(filter, FCHA1)
|
||||||
|
NET_C(FCHA1.I, R_AY3D_A.2)
|
||||||
|
SUBMODEL(filter, FCHB1)
|
||||||
|
NET_C(FCHB1.I, R_AY3D_B.2)
|
||||||
|
SUBMODEL(filter, FCHC1)
|
||||||
|
NET_C(FCHC1.I, R_AY3D_C.2)
|
||||||
|
|
||||||
|
NET_C(FCHA1.CTL1, CTL0)
|
||||||
|
NET_C(FCHA1.CTL2, CTL1)
|
||||||
|
NET_C(FCHB1.CTL1, CTL2)
|
||||||
|
NET_C(FCHB1.CTL2, CTL3)
|
||||||
|
NET_C(FCHC1.CTL1, CTL4)
|
||||||
|
NET_C(FCHC1.CTL2, CTL5)
|
||||||
|
|
||||||
|
NET_C(VP5, FCHA1.VDD, FCHB1.VDD, FCHC1.VDD)
|
||||||
|
NET_C(GND, FCHA1.VSS, FCHB1.VSS, FCHC1.VSS)
|
||||||
|
|
||||||
|
NET_C(VP5, CTL0.VCC, CTL1.VCC, CTL2.VCC, CTL3.VCC, CTL4.VCC, CTL5.VCC)
|
||||||
|
NET_C(GND, CTL0.GND, CTL1.GND, CTL2.GND, CTL3.GND, CTL4.GND, CTL5.GND)
|
||||||
|
|
||||||
|
NETLIST_END()
|
||||||
|
|
||||||
|
static NETLIST_START(AY2)
|
||||||
|
TTL_INPUT(CTL6, 0)
|
||||||
|
TTL_INPUT(CTL7, 0)
|
||||||
|
TTL_INPUT(CTL8, 0)
|
||||||
|
TTL_INPUT(CTL9, 0)
|
||||||
|
TTL_INPUT(CTL10, 0)
|
||||||
|
TTL_INPUT(CTL11, 0)
|
||||||
|
/* AY 8910 internal resistors */
|
||||||
|
RES(R_AY3C_A, 1000)
|
||||||
|
RES(R_AY3C_B, 1000)
|
||||||
|
RES(R_AY3C_C, 1000)
|
||||||
|
NET_C(VP5, R_AY3C_A.1, R_AY3C_B.1, R_AY3C_C.1)
|
||||||
|
|
||||||
|
SUBMODEL(filter, FCHA2)
|
||||||
|
NET_C(FCHA2.I, R_AY3C_A.2)
|
||||||
|
SUBMODEL(filter, FCHB2)
|
||||||
|
NET_C(FCHB2.I, R_AY3C_B.2)
|
||||||
|
SUBMODEL(filter, FCHC2)
|
||||||
|
NET_C(FCHC2.I, R_AY3C_C.2)
|
||||||
|
|
||||||
|
NET_C(FCHA2.CTL1, CTL6)
|
||||||
|
NET_C(FCHA2.CTL2, CTL7)
|
||||||
|
NET_C(FCHB2.CTL1, CTL8)
|
||||||
|
NET_C(FCHB2.CTL2, CTL9)
|
||||||
|
NET_C(FCHC2.CTL1, CTL10)
|
||||||
|
NET_C(FCHC2.CTL2, CTL11)
|
||||||
|
|
||||||
|
NET_C(VP5, FCHA2.VDD, FCHB2.VDD, FCHC2.VDD)
|
||||||
|
NET_C(GND, FCHA2.VSS, FCHB2.VSS, FCHC2.VSS)
|
||||||
|
|
||||||
|
NET_C(VP5, CTL6.VCC, CTL7.VCC, CTL8.VCC, CTL9.VCC, CTL10.VCC, CTL11.VCC)
|
||||||
|
NET_C(GND, CTL6.GND, CTL7.GND, CTL8.GND, CTL9.GND, CTL10.GND, CTL11.GND)
|
||||||
|
|
||||||
|
NETLIST_END()
|
||||||
|
|
||||||
|
NETLIST_START(konami2x)
|
||||||
|
|
||||||
|
SOLVER(Solver, 48000)
|
||||||
|
|
||||||
|
ANALOG_INPUT(VP5, 5)
|
||||||
|
ANALOG_INPUT(VM5, -5)
|
||||||
|
|
||||||
|
LOCAL_SOURCE(filter)
|
||||||
|
LOCAL_SOURCE(amp)
|
||||||
|
LOCAL_SOURCE(AY1)
|
||||||
|
LOCAL_SOURCE(AY2)
|
||||||
|
|
||||||
|
INCLUDE(AY1)
|
||||||
|
INCLUDE(AY2)
|
||||||
|
|
||||||
|
NET_C(FCHA1.O, FCHB1.O, FCHC1.O, FCHA2.O, FCHB2.O, FCHC2.O)
|
||||||
|
|
||||||
|
SUBMODEL(amp, AMP)
|
||||||
|
|
||||||
|
NET_C(VP5, AMP.VP)
|
||||||
|
NET_C(GND, AMP.GND)
|
||||||
|
NET_C(VM5, AMP.VM)
|
||||||
|
NET_C(FCHA1.O, AMP.OPAMP)
|
||||||
|
|
||||||
|
ALIAS(OUT, AMP.OUT)
|
||||||
|
NETLIST_END()
|
||||||
|
|
||||||
|
NETLIST_START(konami1x)
|
||||||
|
|
||||||
|
SOLVER(Solver, 48000)
|
||||||
|
|
||||||
|
ANALOG_INPUT(VP5, 5)
|
||||||
|
ANALOG_INPUT(VM5, -5)
|
||||||
|
|
||||||
|
LOCAL_SOURCE(filter)
|
||||||
|
LOCAL_SOURCE(amp)
|
||||||
|
LOCAL_SOURCE(AY1)
|
||||||
|
LOCAL_SOURCE(AY2)
|
||||||
|
|
||||||
|
INCLUDE(AY1)
|
||||||
|
|
||||||
|
NET_C(FCHA1.O, FCHB1.O, FCHC1.O)
|
||||||
|
|
||||||
|
SUBMODEL(amp, AMP)
|
||||||
|
|
||||||
|
NET_C(VP5, AMP.VP)
|
||||||
|
NET_C(GND, AMP.GND)
|
||||||
|
NET_C(VM5, AMP.VM)
|
||||||
|
NET_C(FCHA1.O, AMP.OPAMP)
|
||||||
|
|
||||||
|
ALIAS(OUT, AMP.OUT)
|
||||||
|
NETLIST_END()
|
7
src/mame/audio/nl_konami.h
Normal file
7
src/mame/audio/nl_konami.h
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
// license:CC0
|
||||||
|
// copyright-holders:Couriersud
|
||||||
|
|
||||||
|
#include "netlist/nl_setup.h"
|
||||||
|
|
||||||
|
NETLIST_EXTERNAL(konami1x)
|
||||||
|
NETLIST_EXTERNAL(konami2x)
|
@ -667,6 +667,8 @@ TODO:
|
|||||||
#include "screen.h"
|
#include "screen.h"
|
||||||
#include "speaker.h"
|
#include "speaker.h"
|
||||||
|
|
||||||
|
#include "audio/nl_konami.h"
|
||||||
|
|
||||||
/*************************************
|
/*************************************
|
||||||
*
|
*
|
||||||
* Interrupts
|
* Interrupts
|
||||||
@ -817,28 +819,34 @@ READ8_MEMBER(galaxian_state::konami_sound_timer_r)
|
|||||||
0x0e; /* assume remaining bits are high, except B0 which is grounded */
|
0x0e; /* assume remaining bits are high, except B0 which is grounded */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
WRITE8_MEMBER(galaxian_state::konami_sound_filter_w)
|
WRITE8_MEMBER(galaxian_state::konami_sound_filter_w)
|
||||||
{
|
{
|
||||||
if (m_discrete != nullptr)
|
if (m_netlist != nullptr)
|
||||||
{
|
{
|
||||||
/* the offset is used as data, 6 channels * 2 bits each */
|
/* the offset is used as data, 6 channels * 2 bits each */
|
||||||
/* AV0 .. AV5 ==> AY8910 #2 */
|
/* AV0 .. AV5 ==> AY8910 #2 - 3C */
|
||||||
/* AV6 .. AV11 ==> AY8910 #1 */
|
/* AV6 .. AV11 ==> AY8910 #1 - 3D */
|
||||||
|
static int last = 0;
|
||||||
|
if (offset != last)
|
||||||
|
printf("filter %04x\n", offset);
|
||||||
for (int which = 0; which < 2; which++)
|
for (int which = 0; which < 2; which++)
|
||||||
{
|
{
|
||||||
if (m_ay8910[which] != nullptr)
|
if (m_ay8910[which] != nullptr)
|
||||||
{
|
{
|
||||||
for (int chan = 0; chan < 3; chan++)
|
if (offset != last)
|
||||||
|
printf("filter%d %04x\n", which, (offset >> (6*(1-which))) & 0x3f);
|
||||||
|
for (int flt = 0; flt < 6; flt++)
|
||||||
{
|
{
|
||||||
uint8_t bits = (offset >> (2 * chan + 6 * (1 - which))) & 3;
|
const int fltnum = (flt + 6 * which);
|
||||||
|
const uint8_t bit = (offset >> (flt + 6 * (1 - which))) & 1;
|
||||||
|
|
||||||
/* low bit goes to 0.22uF capacitor = 220000pF */
|
/* low bit goes to 0.22uF capacitor = 220000pF */
|
||||||
/* high bit goes to 0.047uF capacitor = 47000pF */
|
/* high bit goes to 0.047uF capacitor = 47000pF */
|
||||||
m_discrete->write(NODE(3 * which + chan + 11), bits);
|
m_filter_ctl[fltnum]->write(bit);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
last = offset;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5924,62 +5932,6 @@ static GFXDECODE_START(gfx_videight)
|
|||||||
GFXDECODE_END
|
GFXDECODE_END
|
||||||
|
|
||||||
|
|
||||||
/*************************************
|
|
||||||
*
|
|
||||||
* Sound configuration
|
|
||||||
*
|
|
||||||
*************************************/
|
|
||||||
|
|
||||||
static const discrete_mixer_desc konami_sound_mixer_desc =
|
|
||||||
{DISC_MIXER_IS_OP_AMP,
|
|
||||||
{RES_K(5.1), RES_K(5.1), RES_K(5.1), RES_K(5.1), RES_K(5.1), RES_K(5.1)},
|
|
||||||
{0,0,0,0,0,0}, /* no variable resistors */
|
|
||||||
{0,0,0,0,0,0}, /* no node capacitors */
|
|
||||||
0, RES_K(2.2),
|
|
||||||
0,
|
|
||||||
0, /* modelled separately */
|
|
||||||
0, 1};
|
|
||||||
|
|
||||||
static DISCRETE_SOUND_START( konami_sound_discrete )
|
|
||||||
|
|
||||||
DISCRETE_INPUTX_STREAM(NODE_01, 0, 1.0, 0)
|
|
||||||
DISCRETE_INPUTX_STREAM(NODE_02, 1, 1.0, 0)
|
|
||||||
DISCRETE_INPUTX_STREAM(NODE_03, 2, 1.0, 0)
|
|
||||||
|
|
||||||
DISCRETE_INPUTX_STREAM(NODE_04, 3, 1.0, 0)
|
|
||||||
DISCRETE_INPUTX_STREAM(NODE_05, 4, 1.0, 0)
|
|
||||||
DISCRETE_INPUTX_STREAM(NODE_06, 5, 1.0, 0)
|
|
||||||
|
|
||||||
DISCRETE_INPUT_DATA(NODE_11)
|
|
||||||
DISCRETE_INPUT_DATA(NODE_12)
|
|
||||||
DISCRETE_INPUT_DATA(NODE_13)
|
|
||||||
|
|
||||||
DISCRETE_INPUT_DATA(NODE_14)
|
|
||||||
DISCRETE_INPUT_DATA(NODE_15)
|
|
||||||
DISCRETE_INPUT_DATA(NODE_16)
|
|
||||||
|
|
||||||
DISCRETE_RCFILTER_SW(NODE_21, 1, NODE_01, NODE_11, AY8910_INTERNAL_RESISTANCE+1000, CAP_U(0.22), CAP_U(0.047), 0, 0)
|
|
||||||
DISCRETE_RCFILTER_SW(NODE_22, 1, NODE_02, NODE_12, AY8910_INTERNAL_RESISTANCE+1000, CAP_U(0.22), CAP_U(0.047), 0, 0)
|
|
||||||
DISCRETE_RCFILTER_SW(NODE_23, 1, NODE_03, NODE_13, AY8910_INTERNAL_RESISTANCE+1000, CAP_U(0.22), CAP_U(0.047), 0, 0)
|
|
||||||
|
|
||||||
DISCRETE_RCFILTER_SW(NODE_24, 1, NODE_04, NODE_14, AY8910_INTERNAL_RESISTANCE+1000, CAP_U(0.22), CAP_U(0.047), 0, 0)
|
|
||||||
DISCRETE_RCFILTER_SW(NODE_25, 1, NODE_05, NODE_15, AY8910_INTERNAL_RESISTANCE+1000, CAP_U(0.22), CAP_U(0.047), 0, 0)
|
|
||||||
DISCRETE_RCFILTER_SW(NODE_26, 1, NODE_06, NODE_16, AY8910_INTERNAL_RESISTANCE+1000, CAP_U(0.22), CAP_U(0.047), 0, 0)
|
|
||||||
|
|
||||||
DISCRETE_MIXER6(NODE_30, 1, NODE_21, NODE_22, NODE_23, NODE_24, NODE_25, NODE_26, &konami_sound_mixer_desc)
|
|
||||||
|
|
||||||
/* FIXME the amplifier M51516L has a decay circuit */
|
|
||||||
/* This is handled with sound_global_enable but */
|
|
||||||
/* belongs here. */
|
|
||||||
|
|
||||||
/* Input impedance of a M51516L is typically 30k (datasheet) */
|
|
||||||
DISCRETE_CRFILTER(NODE_40,NODE_30,RES_K(30),CAP_U(0.15))
|
|
||||||
|
|
||||||
DISCRETE_OUTPUT(NODE_40, 10.0 )
|
|
||||||
|
|
||||||
DISCRETE_SOUND_END
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************
|
/*************************************
|
||||||
*
|
*
|
||||||
@ -6052,15 +6004,32 @@ void galaxian_state::konami_sound_1x_ay8910(machine_config &config)
|
|||||||
|
|
||||||
/* sound hardware */
|
/* sound hardware */
|
||||||
AY8910(config, m_ay8910[0], KONAMI_SOUND_CLOCK/8);
|
AY8910(config, m_ay8910[0], KONAMI_SOUND_CLOCK/8);
|
||||||
m_ay8910[0]->set_flags(AY8910_DISCRETE_OUTPUT);
|
m_ay8910[0]->set_flags(AY8910_RESISTOR_OUTPUT);
|
||||||
m_ay8910[0]->set_resistors_load(RES_K(5.1), RES_K(5.1), RES_K(5.1));
|
m_ay8910[0]->set_resistors_load(1000.0, 1000.0, 1000.0);
|
||||||
m_ay8910[0]->port_a_read_callback().set(m_soundlatch, FUNC(generic_latch_8_device::read));
|
m_ay8910[0]->port_a_read_callback().set(m_soundlatch, FUNC(generic_latch_8_device::read));
|
||||||
m_ay8910[0]->port_b_read_callback().set(FUNC(galaxian_state::frogger_sound_timer_r));
|
m_ay8910[0]->port_b_read_callback().set(FUNC(galaxian_state::frogger_sound_timer_r));
|
||||||
m_ay8910[0]->add_route(0, "konami", 1.0, 0);
|
m_ay8910[0]->add_route(0, "konami", 1.0, 0);
|
||||||
m_ay8910[0]->add_route(1, "konami", 1.0, 1);
|
m_ay8910[0]->add_route(1, "konami", 1.0, 1);
|
||||||
m_ay8910[0]->add_route(2, "konami", 1.0, 2);
|
m_ay8910[0]->add_route(2, "konami", 1.0, 2);
|
||||||
|
|
||||||
DISCRETE(config, m_discrete, konami_sound_discrete).add_route(ALL_OUTPUTS, "speaker", 0.75);
|
NETLIST_SOUND(config, "konami", 48000)
|
||||||
|
.set_source(netlist_konami1x)
|
||||||
|
.add_route(ALL_OUTPUTS, "speaker", 1.0);
|
||||||
|
|
||||||
|
// Filter
|
||||||
|
NETLIST_LOGIC_INPUT(config, "konami:ctl0", "CTL0.IN", 0);
|
||||||
|
NETLIST_LOGIC_INPUT(config, "konami:ctl1", "CTL1.IN", 0);
|
||||||
|
NETLIST_LOGIC_INPUT(config, "konami:ctl2", "CTL2.IN", 0);
|
||||||
|
NETLIST_LOGIC_INPUT(config, "konami:ctl3", "CTL3.IN", 0);
|
||||||
|
NETLIST_LOGIC_INPUT(config, "konami:ctl4", "CTL4.IN", 0);
|
||||||
|
NETLIST_LOGIC_INPUT(config, "konami:ctl5", "CTL5.IN", 0);
|
||||||
|
|
||||||
|
// CHA1 - 3D
|
||||||
|
NETLIST_STREAM_INPUT(config, "konami:cin0", 0, "R_AY3D_A.R");
|
||||||
|
NETLIST_STREAM_INPUT(config, "konami:cin1", 1, "R_AY3D_B.R");
|
||||||
|
NETLIST_STREAM_INPUT(config, "konami:cin2", 2, "R_AY3D_C.R");
|
||||||
|
|
||||||
|
NETLIST_STREAM_OUTPUT(config, "konami:cout0", 0, "OUT").set_mult_offset(30000.0 / 0.05, 0.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -6075,8 +6044,8 @@ void galaxian_state::konami_sound_2x_ay8910(machine_config &config)
|
|||||||
|
|
||||||
/* sound hardware */
|
/* sound hardware */
|
||||||
AY8910(config, m_ay8910[0], KONAMI_SOUND_CLOCK/8);
|
AY8910(config, m_ay8910[0], KONAMI_SOUND_CLOCK/8);
|
||||||
m_ay8910[0]->set_flags(AY8910_DISCRETE_OUTPUT);
|
m_ay8910[0]->set_flags(AY8910_RESISTOR_OUTPUT);
|
||||||
m_ay8910[0]->set_resistors_load(RES_K(5.1), RES_K(5.1), RES_K(5.1));
|
m_ay8910[0]->set_resistors_load(1000.0, 1000.0, 1000.0);
|
||||||
m_ay8910[0]->port_a_read_callback().set(m_soundlatch, FUNC(generic_latch_8_device::read));
|
m_ay8910[0]->port_a_read_callback().set(m_soundlatch, FUNC(generic_latch_8_device::read));
|
||||||
m_ay8910[0]->port_b_read_callback().set(FUNC(galaxian_state::konami_sound_timer_r));
|
m_ay8910[0]->port_b_read_callback().set(FUNC(galaxian_state::konami_sound_timer_r));
|
||||||
m_ay8910[0]->add_route(0, "konami", 1.0, 0);
|
m_ay8910[0]->add_route(0, "konami", 1.0, 0);
|
||||||
@ -6084,13 +6053,40 @@ void galaxian_state::konami_sound_2x_ay8910(machine_config &config)
|
|||||||
m_ay8910[0]->add_route(2, "konami", 1.0, 2);
|
m_ay8910[0]->add_route(2, "konami", 1.0, 2);
|
||||||
|
|
||||||
AY8910(config, m_ay8910[1], KONAMI_SOUND_CLOCK/8);
|
AY8910(config, m_ay8910[1], KONAMI_SOUND_CLOCK/8);
|
||||||
m_ay8910[1]->set_flags(AY8910_DISCRETE_OUTPUT);
|
m_ay8910[1]->set_flags(AY8910_RESISTOR_OUTPUT);
|
||||||
m_ay8910[1]->set_resistors_load(RES_K(5.1), RES_K(5.1), RES_K(5.1));
|
m_ay8910[1]->set_resistors_load(1000.0, 1000.0, 1000.0);
|
||||||
m_ay8910[1]->add_route(0, "konami", 1.0, 3);
|
m_ay8910[1]->add_route(0, "konami", 1.0, 3);
|
||||||
m_ay8910[1]->add_route(1, "konami", 1.0, 4);
|
m_ay8910[1]->add_route(1, "konami", 1.0, 4);
|
||||||
m_ay8910[1]->add_route(2, "konami", 1.0, 5);
|
m_ay8910[1]->add_route(2, "konami", 1.0, 5);
|
||||||
|
|
||||||
DISCRETE(config, m_discrete, konami_sound_discrete).add_route(ALL_OUTPUTS, "speaker", 0.5);
|
NETLIST_SOUND(config, "konami", 48000)
|
||||||
|
.set_source(netlist_konami2x)
|
||||||
|
.add_route(ALL_OUTPUTS, "speaker", 1.0);
|
||||||
|
|
||||||
|
// Filter
|
||||||
|
NETLIST_LOGIC_INPUT(config, "konami:ctl0", "CTL0.IN", 0);
|
||||||
|
NETLIST_LOGIC_INPUT(config, "konami:ctl1", "CTL1.IN", 0);
|
||||||
|
NETLIST_LOGIC_INPUT(config, "konami:ctl2", "CTL2.IN", 0);
|
||||||
|
NETLIST_LOGIC_INPUT(config, "konami:ctl3", "CTL3.IN", 0);
|
||||||
|
NETLIST_LOGIC_INPUT(config, "konami:ctl4", "CTL4.IN", 0);
|
||||||
|
NETLIST_LOGIC_INPUT(config, "konami:ctl5", "CTL5.IN", 0);
|
||||||
|
NETLIST_LOGIC_INPUT(config, "konami:ctl6", "CTL6.IN", 0);
|
||||||
|
NETLIST_LOGIC_INPUT(config, "konami:ctl7", "CTL7.IN", 0);
|
||||||
|
NETLIST_LOGIC_INPUT(config, "konami:ctl8", "CTL8.IN", 0);
|
||||||
|
NETLIST_LOGIC_INPUT(config, "konami:ctl9", "CTL9.IN", 0);
|
||||||
|
NETLIST_LOGIC_INPUT(config, "konami:ctl10", "CTL10.IN", 0);
|
||||||
|
NETLIST_LOGIC_INPUT(config, "konami:ctl11", "CTL11.IN", 0);
|
||||||
|
|
||||||
|
// CHA1 - 3D
|
||||||
|
NETLIST_STREAM_INPUT(config, "konami:cin0", 0, "R_AY3D_A.R");
|
||||||
|
NETLIST_STREAM_INPUT(config, "konami:cin1", 1, "R_AY3D_B.R");
|
||||||
|
NETLIST_STREAM_INPUT(config, "konami:cin2", 2, "R_AY3D_C.R");
|
||||||
|
|
||||||
|
// CHA2 - 3C
|
||||||
|
NETLIST_STREAM_INPUT(config, "konami:cin3", 3, "R_AY3C_A.R");
|
||||||
|
NETLIST_STREAM_INPUT(config, "konami:cin4", 4, "R_AY3C_B.R");
|
||||||
|
NETLIST_STREAM_INPUT(config, "konami:cin5", 5, "R_AY3C_C.R");
|
||||||
|
NETLIST_STREAM_OUTPUT(config, "konami:cout0", 0, "OUT").set_mult_offset(30000.0 / 0.05, 0.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -6701,10 +6697,6 @@ void galaxian_state::turpins(machine_config &config) // the ROMs came from a bli
|
|||||||
void galaxian_state::anteater(machine_config &config)
|
void galaxian_state::anteater(machine_config &config)
|
||||||
{
|
{
|
||||||
scobra(config);
|
scobra(config);
|
||||||
|
|
||||||
/* quiet down the sounds */
|
|
||||||
m_discrete->reset_routes();
|
|
||||||
m_discrete->add_route(ALL_OUTPUTS, "speaker", 0.25);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
#include "sound/ay8910.h"
|
#include "sound/ay8910.h"
|
||||||
#include "sound/dac.h"
|
#include "sound/dac.h"
|
||||||
#include "sound/digitalk.h"
|
#include "sound/digitalk.h"
|
||||||
#include "sound/discrete.h"
|
#include "machine/netlist.h"
|
||||||
#include "emupal.h"
|
#include "emupal.h"
|
||||||
#include "screen.h"
|
#include "screen.h"
|
||||||
#include "tilemap.h"
|
#include "tilemap.h"
|
||||||
@ -74,7 +74,8 @@ public:
|
|||||||
, m_screen(*this, "screen")
|
, m_screen(*this, "screen")
|
||||||
, m_palette(*this, "palette")
|
, m_palette(*this, "palette")
|
||||||
, m_soundlatch(*this, "soundlatch")
|
, m_soundlatch(*this, "soundlatch")
|
||||||
, m_discrete(*this, "konami")
|
, m_netlist(*this, "konami")
|
||||||
|
, m_filter_ctl(*this, "konami:ctl%u", 0)
|
||||||
, m_fake_select(*this, "FAKE_SELECT")
|
, m_fake_select(*this, "FAKE_SELECT")
|
||||||
, m_tenspot_game_dsw(*this, {"IN2_GAME0", "IN2_GAME1", "IN2_GAME2", "IN2_GAME3", "IN2_GAME4", "IN2_GAME5", "IN2_GAME6", "IN2_GAME7", "IN2_GAME8", "IN2_GAME9"})
|
, m_tenspot_game_dsw(*this, {"IN2_GAME0", "IN2_GAME1", "IN2_GAME2", "IN2_GAME3", "IN2_GAME4", "IN2_GAME5", "IN2_GAME6", "IN2_GAME7", "IN2_GAME8", "IN2_GAME9"})
|
||||||
, m_spriteram(*this, "spriteram")
|
, m_spriteram(*this, "spriteram")
|
||||||
@ -424,8 +425,8 @@ protected:
|
|||||||
required_device<screen_device> m_screen;
|
required_device<screen_device> m_screen;
|
||||||
required_device<palette_device> m_palette;
|
required_device<palette_device> m_palette;
|
||||||
optional_device<generic_latch_8_device> m_soundlatch;
|
optional_device<generic_latch_8_device> m_soundlatch;
|
||||||
optional_device<discrete_sound_device> m_discrete;
|
optional_device<netlist_mame_sound_device> m_netlist;
|
||||||
|
optional_device_array<netlist_mame_logic_input_device, 12> m_filter_ctl;
|
||||||
optional_ioport m_fake_select;
|
optional_ioport m_fake_select;
|
||||||
optional_ioport_array<10> m_tenspot_game_dsw;
|
optional_ioport_array<10> m_tenspot_game_dsw;
|
||||||
|
|
||||||
|
218
src/mame/nl.lst
218
src/mame/nl.lst
@ -20,6 +20,224 @@
|
|||||||
1942p // prototype
|
1942p // prototype
|
||||||
1942h // hack (Two Bit Score?)
|
1942h // hack (Two Bit Score?)
|
||||||
|
|
||||||
|
/* FIXME: games commented out complain about being a clone of a game not in the driver */
|
||||||
|
|
||||||
|
@source:galaxian.cpp
|
||||||
|
600 // GX353 (c) 1981 Konami
|
||||||
|
amidar // GX337 (c) 1982 Konami
|
||||||
|
amidar1 // GX337 (c) 1981 Konami
|
||||||
|
amidarb // bootleg
|
||||||
|
amidaro // GX337 (c) 1982 Konami + Olympia license
|
||||||
|
amidars // GX337 (c) 1982 Konami
|
||||||
|
amidaru // GX337 (c) 1982 Konami + Stern license
|
||||||
|
amigo // bootleg
|
||||||
|
amigo2 // bootleg
|
||||||
|
anteater // (c) 1982 Tago
|
||||||
|
anteaterg // (c) 1983 TV-Tuning (F.E.G. license)
|
||||||
|
anteatergg // bootleg
|
||||||
|
anteateruk // (c) 1983 Free Enterprise Games
|
||||||
|
aracnis // bootleg
|
||||||
|
armorcar // (c) 1981 Stern
|
||||||
|
armorcar2 // (c) 1981 Stern
|
||||||
|
asideral // bootleg
|
||||||
|
astrians //
|
||||||
|
atlantis // (c) 1981 Comsoft
|
||||||
|
atlantis2 // (c) 1981 Comsoft
|
||||||
|
atlantisb // bootleg
|
||||||
|
azurian // (c) 1982 Rait Electronics Ltd
|
||||||
|
//batman2 // bootleg
|
||||||
|
blkhole // TDS (Tokyo Denshi Sekkei) & MINTS
|
||||||
|
bomber //
|
||||||
|
calipso // (c) 1982 Tago
|
||||||
|
catacomb // 1982 MTM Games
|
||||||
|
checkman // (c) 1982 Zilec-Zenitone
|
||||||
|
checkmanj // (c) 1982 Jaleco (Zenitone/Zilec in ROM CM4, and the programmer names)
|
||||||
|
chewing // ?? unknown
|
||||||
|
//devilfsg // (c) 1984 Vision / Artic (bootleg?)
|
||||||
|
dingo // (c) 1983 Ashby Computers and Graphics LTD. + Jaleco license
|
||||||
|
dingoe // (c) 1983 Ashby Computers and Graphics LTD. + Jaleco license
|
||||||
|
eagle // [1980] Centuri
|
||||||
|
eagle2 // [1980] Centuri
|
||||||
|
eagle3 // [1980] Centuri
|
||||||
|
exodus // Subelectro - bootleg?
|
||||||
|
explorer // bootleg
|
||||||
|
fantastc // (c) Taito (Brazil) - rewrite of Galaga
|
||||||
|
fantazia // bootleg
|
||||||
|
frogf // bootleg
|
||||||
|
frogg // bootleg
|
||||||
|
frogger // GX392 (c) 1981 Konami
|
||||||
|
froggeram // bootleg
|
||||||
|
froggermc // 800-3110 (c) 1981 Sega
|
||||||
|
froggers // bootleg
|
||||||
|
froggers1 // (c) 1981 Sega
|
||||||
|
froggers2 // 834-0068 (c) 1981 Sega
|
||||||
|
froggers3 //
|
||||||
|
froggrs //
|
||||||
|
froggervd // Video Dens
|
||||||
|
fourplay // multigame
|
||||||
|
galap1 // hack
|
||||||
|
galap4 // hack
|
||||||
|
galapx // hack
|
||||||
|
galaxbsf // hack
|
||||||
|
galaxbsf2 // bootleg
|
||||||
|
galaxian // (c) Namco
|
||||||
|
galaxiana // (c) Namco
|
||||||
|
galaxianbl // bootleg
|
||||||
|
galaxianbl2 // bootleg
|
||||||
|
galaxiani // (c) Irem
|
||||||
|
galaxianm // (c) Midway
|
||||||
|
galaxianmo // (c) Midway
|
||||||
|
galaxiant // (c) Taito
|
||||||
|
galaxrcgg // bootleg (Recreativos Covadonga)
|
||||||
|
galaxrf // bootleg (Recreativos Franco)
|
||||||
|
galaxrfgg // bootleg (Recreativos Franco)
|
||||||
|
galemp // (c) Taito do Brasil
|
||||||
|
galturbo // hack
|
||||||
|
//ghostmun //
|
||||||
|
gmgalax // bootleg
|
||||||
|
gteikoku // (c) Irem
|
||||||
|
gteikokub // bootleg
|
||||||
|
gteikokub2 // bootleg
|
||||||
|
gteikokub3 // bootleg (Honly Enterprises)
|
||||||
|
jumpbug // (c) 1981 Rock-ola
|
||||||
|
jumpbugb // (c) 1981 Sega
|
||||||
|
//jungsub // bootleg
|
||||||
|
kamakazi3 // Video Games (UK) Ltd., hack or bootleg?
|
||||||
|
kamikazp // bootleg (Potomac Games)
|
||||||
|
kingball // (c) 1980 Namco
|
||||||
|
kingballj // (c) 1980 Namco
|
||||||
|
kong // (c) Taito (Brazil) - rewrite of Donkey Kong
|
||||||
|
//ladybugg // bootleg
|
||||||
|
levers // (c) 1983 Rock-ola
|
||||||
|
losttomb // (c) 1982 Stern
|
||||||
|
losttombh // (c) 1982 Stern
|
||||||
|
luctoday // 1980 Sigma
|
||||||
|
mandinga // bootleg (Artemi)
|
||||||
|
mandingaeg // bootleg (Electrogame)
|
||||||
|
mandingarf // bootleg (Recreativos Franco S.A.)
|
||||||
|
mandingac // bootleg (Centromatic)
|
||||||
|
mltiwars // bootleg (Gayton Games)
|
||||||
|
monsterz // (c) 1982 Nihon (Arcade TV Game List - P.102, Left, 20 from top)
|
||||||
|
moonal2 // [1980] Nichibutsu
|
||||||
|
moonal2b // [1980] Nichibutsu
|
||||||
|
moonaln // [Nichibutsu] (Karateco license) or hack
|
||||||
|
mooncmw // bootleg
|
||||||
|
mooncptc // bootleg (Petaco S.A.)
|
||||||
|
mooncreg // bootleg
|
||||||
|
mooncrgx // bootleg
|
||||||
|
mooncrs2 // bootleg
|
||||||
|
mooncrs3 // bootleg
|
||||||
|
mooncrs4 // bootleg
|
||||||
|
mooncrs5 // bootleg
|
||||||
|
mooncrsb // bootleg
|
||||||
|
mooncrsl // bootleg (Laguna S.A.)
|
||||||
|
mooncrst // (c) 1980 Nichibutsu
|
||||||
|
mooncrstg // (c) 1980 Gremlin
|
||||||
|
mooncrstso // (c) 1980 SegaSA / Sonic
|
||||||
|
mooncrsto // (c) 1980 Nichibutsu
|
||||||
|
mooncrstu // (c) 1980 Nichibutsu USA
|
||||||
|
mooncrstuk // (c) 1980 Nichibutsu UK
|
||||||
|
mooncrstuku // (c) 1980 Nichibutsu UK
|
||||||
|
moonqsr // (c) 1980 Nichibutsu
|
||||||
|
moonwar // (c) 1981 Stern
|
||||||
|
moonwara // (c) 1981 Stern
|
||||||
|
mshuttle // (c) 1981 Nichibutsu
|
||||||
|
mshuttle2 // (c) 1981 Nichibutsu
|
||||||
|
mshuttlea // (c) 1981 Nichibutsu
|
||||||
|
mshuttlej // (c) 1981 Nichibutsu
|
||||||
|
mshuttlej2 // (c) 1981 Nichibutsu
|
||||||
|
ncentury // bootleg (Petaco S.A.)
|
||||||
|
offensiv // bootleg (Video Dens)
|
||||||
|
omegab // bootleg
|
||||||
|
omni // bootleg
|
||||||
|
orbitron // (c) 1982 Signatron USA (Arcade Tv Game List - P.160, Left, 22 from top)
|
||||||
|
//pacmanbl // bootleg
|
||||||
|
//pacmanbla // bootleg
|
||||||
|
//pacmanblb // bootleg
|
||||||
|
//pacmanblv // bootleg (Video Dens)
|
||||||
|
pajaroes // bootleg
|
||||||
|
//phoenxp2 // bootleg
|
||||||
|
pisces // Subelectro
|
||||||
|
piscesb // bootleg
|
||||||
|
quaak // bootleg
|
||||||
|
redufo // (c) Artic
|
||||||
|
redufob // bootleg
|
||||||
|
redufob2 // bootleg
|
||||||
|
scobra // GX316 (c) 1981 Konami
|
||||||
|
scobrab // GX316 (c) 1981 Karateco (bootleg?)
|
||||||
|
scobrae // GX316 (c) 1981 Stern
|
||||||
|
scobrae2 //
|
||||||
|
scobrag // AVG by Zaccaria (bootleg?)
|
||||||
|
scobraggi // bootleg (Cocamatic)
|
||||||
|
scobras // GX316 (c) 1981 Stern
|
||||||
|
scobrase // GX316 (c) 1981 Sega
|
||||||
|
scorpion // (c) 1982 Zaccaria
|
||||||
|
scorpiona // (c) 1982 Zaccaria
|
||||||
|
scorpionb // (c) 1982 Zaccaria
|
||||||
|
scorpionmc // bootleg
|
||||||
|
scramble // GX387 (c) 1981 Konami
|
||||||
|
scramblebb // bootleg?
|
||||||
|
kamikazesp // bootleg (Euromatic S.A.)
|
||||||
|
scramblebf // bootleg
|
||||||
|
scrambles // GX387 (c) 1981 Stern
|
||||||
|
scrambles2 // GX387 (c) 1981 Stern
|
||||||
|
scrambp // bootleg (Billport S.A.)
|
||||||
|
scramce // bootleg (Centromatic S.A.)
|
||||||
|
scrammr // bootleg (Model Racing)
|
||||||
|
scrampt // bootleg (Petaco S.A.)
|
||||||
|
scramrf // bootleg (Recreativos Franco)
|
||||||
|
sfx // (c) 1983 Nichibutsu
|
||||||
|
skelagon // (c) 1983 Nichibutsu USA
|
||||||
|
skybase // (c) 1982 Omori Electric Co., Ltd.
|
||||||
|
skyraidr // bootleg
|
||||||
|
smooncrs // Gremlin
|
||||||
|
spacbat2 // bootleg
|
||||||
|
spacbatt // bootleg
|
||||||
|
spacempr // bootleg
|
||||||
|
spactrai //
|
||||||
|
spcdrag // bootleg
|
||||||
|
spcdraga // bootleg
|
||||||
|
spctbird // (c) Fortrek
|
||||||
|
spdcoin // (c) 1984 Stern
|
||||||
|
sstarcrs // Taito (Brazil)
|
||||||
|
starfght // hack
|
||||||
|
starfgmc // bootleg
|
||||||
|
stera // bootleg
|
||||||
|
streakng // [1980] Shoei
|
||||||
|
streaknga // [1980] Shoei
|
||||||
|
strfbomb // bootleg
|
||||||
|
superbon // bootleg
|
||||||
|
superg // hack
|
||||||
|
supergs // Silver Systems hack
|
||||||
|
supergx // [1980] Nichibutsu
|
||||||
|
suprheli // bootleg
|
||||||
|
swarm // hack
|
||||||
|
tazmania // (c) 1982 Stern
|
||||||
|
tdpgal // 1983 Design Labs / Thomas Automatics
|
||||||
|
tenspot // (c) 1982 Thomas Automatics
|
||||||
|
theend // (c) 1980 Konami
|
||||||
|
takeoff // (c) 1980 Sidam (bootleg)
|
||||||
|
theends // (c) 1980 Stern
|
||||||
|
//thepitm // bootleg
|
||||||
|
timefgtr // (c) Taito (Brazil) - rewrite of Time Pilot
|
||||||
|
tst_galx // Galaxian Test ROM
|
||||||
|
turpin // (c) 1981 Sega
|
||||||
|
turpins // (c) 1981 bootleg
|
||||||
|
turtles // (c) 1981 Stern
|
||||||
|
uniwars // (c) Irem
|
||||||
|
uniwarsa // (c) Karateco
|
||||||
|
victoryc // (c) Comsoft
|
||||||
|
victorycb // (c) Comsoft (bootleg)
|
||||||
|
videight // multigame
|
||||||
|
warofbug // (c) 1981 Armenia
|
||||||
|
warofbugg // German Version
|
||||||
|
warofbugu // (c) 1981 Armenia
|
||||||
|
zerotime // hack (Petaco S.A.)
|
||||||
|
zerotimed // hack (Datamat)
|
||||||
|
zerotimemc // hack (Marti Colls)
|
||||||
|
zigzagb // (c) 1982 LAX (bootleg)
|
||||||
|
zigzagb2 // (c) 1982 LAX (bootleg)
|
||||||
|
|
||||||
@source:gamemachine.cpp
|
@source:gamemachine.cpp
|
||||||
2001tgm //
|
2001tgm //
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user