mirror of
https://github.com/mamedev/mame.git
synced 2024-11-16 07:48:32 +01:00
galaxian.cpp: Implement konami filters using netlist. [Couriersud]
This change improves accuracy and scalability.
This commit is contained in:
parent
0f69abe4dc
commit
ee0e0c972c
7 changed files with 494 additions and 79 deletions
|
@ -2821,6 +2821,8 @@ files {
|
|||
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/drivers/galaxold.cpp",
|
||||
MAME_DIR .. "src/mame/includes/galaxold.h",
|
||||
MAME_DIR .. "src/mame/machine/galaxold.cpp",
|
||||
|
|
|
@ -51,6 +51,7 @@ SOUNDS["TMS5220"] = true
|
|||
SOUNDS["BEEP"] = true
|
||||
SOUNDS["VOLT_REG"] = true
|
||||
SOUNDS["SPEAKER"] = true
|
||||
SOUNDS["DIGITALKER"] = true
|
||||
|
||||
--------------------------------------------------
|
||||
-- specify available video cores
|
||||
|
@ -184,6 +185,17 @@ files{
|
|||
MAME_DIR .. "src/mame/includes/cheekyms.h",
|
||||
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_zacc1b11142.h",
|
||||
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 "speaker.h"
|
||||
|
||||
#include "audio/nl_konami.h"
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* Interrupts
|
||||
|
@ -817,28 +819,34 @@ READ8_MEMBER(galaxian_state::konami_sound_timer_r)
|
|||
0x0e; /* assume remaining bits are high, except B0 which is grounded */
|
||||
}
|
||||
|
||||
|
||||
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 */
|
||||
/* AV0 .. AV5 ==> AY8910 #2 */
|
||||
/* AV6 .. AV11 ==> AY8910 #1 */
|
||||
/* AV0 .. AV5 ==> AY8910 #2 - 3C */
|
||||
/* AV6 .. AV11 ==> AY8910 #1 - 3D */
|
||||
static int last = 0;
|
||||
if (offset != last)
|
||||
printf("filter %04x\n", offset);
|
||||
for (int which = 0; which < 2; which++)
|
||||
{
|
||||
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 */
|
||||
/* 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
|
||||
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* 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 */
|
||||
AY8910(config, m_ay8910[0], KONAMI_SOUND_CLOCK/8);
|
||||
m_ay8910[0]->set_flags(AY8910_DISCRETE_OUTPUT);
|
||||
m_ay8910[0]->set_resistors_load(RES_K(5.1), RES_K(5.1), RES_K(5.1));
|
||||
m_ay8910[0]->set_flags(AY8910_RESISTOR_OUTPUT);
|
||||
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_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(1, "konami", 1.0, 1);
|
||||
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 */
|
||||
AY8910(config, m_ay8910[0], KONAMI_SOUND_CLOCK/8);
|
||||
m_ay8910[0]->set_flags(AY8910_DISCRETE_OUTPUT);
|
||||
m_ay8910[0]->set_resistors_load(RES_K(5.1), RES_K(5.1), RES_K(5.1));
|
||||
m_ay8910[0]->set_flags(AY8910_RESISTOR_OUTPUT);
|
||||
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_b_read_callback().set(FUNC(galaxian_state::konami_sound_timer_r));
|
||||
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);
|
||||
|
||||
AY8910(config, m_ay8910[1], KONAMI_SOUND_CLOCK/8);
|
||||
m_ay8910[1]->set_flags(AY8910_DISCRETE_OUTPUT);
|
||||
m_ay8910[1]->set_resistors_load(RES_K(5.1), RES_K(5.1), RES_K(5.1));
|
||||
m_ay8910[1]->set_flags(AY8910_RESISTOR_OUTPUT);
|
||||
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(1, "konami", 1.0, 4);
|
||||
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)
|
||||
{
|
||||
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/dac.h"
|
||||
#include "sound/digitalk.h"
|
||||
#include "sound/discrete.h"
|
||||
#include "machine/netlist.h"
|
||||
#include "emupal.h"
|
||||
#include "screen.h"
|
||||
#include "tilemap.h"
|
||||
|
@ -74,7 +74,8 @@ public:
|
|||
, m_screen(*this, "screen")
|
||||
, m_palette(*this, "palette")
|
||||
, 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_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")
|
||||
|
@ -424,8 +425,8 @@ protected:
|
|||
required_device<screen_device> m_screen;
|
||||
required_device<palette_device> m_palette;
|
||||
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_array<10> m_tenspot_game_dsw;
|
||||
|
||||
|
|
218
src/mame/nl.lst
218
src/mame/nl.lst
|
@ -20,6 +20,224 @@
|
|||
1942p // prototype
|
||||
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
|
||||
2001tgm //
|
||||
|
||||
|
|
Loading…
Reference in a new issue