Hook up Borderline netlist, provided by 'beta-tester' (#7328) [beta-tester]

* netlist: Explicitly trim connection names.
* Hook up Borderline netlist, provided by 'beta-tester'
* brdrline: Add static solver, using dynamic timestep, update driver flags.
This commit is contained in:
Aaron Giles 2020-10-05 10:29:05 -07:00 committed by GitHub
parent 7492ea4b9c
commit db3a24507f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 7541 additions and 310 deletions

View File

@ -3608,6 +3608,8 @@ files {
MAME_DIR .. "src/mame/includes/vicdual.h",
MAME_DIR .. "src/mame/audio/vicdual.cpp",
MAME_DIR .. "src/mame/audio/vicdual.h",
MAME_DIR .. "src/mame/audio/nl_brdrline.cpp",
MAME_DIR .. "src/mame/audio/nl_brdrline.h",
MAME_DIR .. "src/mame/audio/vicdual-97271p.cpp",
MAME_DIR .. "src/mame/audio/vicdual-97271p.h",
MAME_DIR .. "src/mame/video/vicdual.cpp",

View File

@ -288,6 +288,28 @@ files{
MAME_DIR .. "src/mame/machine/nl_palestra.cpp",
MAME_DIR .. "src/mame/machine/nl_palestra.h",
MAME_DIR .. "src/mame/drivers/vicdual.cpp",
MAME_DIR .. "src/mame/includes/vicdual.h",
MAME_DIR .. "src/mame/audio/vicdual.cpp",
MAME_DIR .. "src/mame/audio/vicdual.h",
MAME_DIR .. "src/mame/audio/nl_brdrline.cpp",
MAME_DIR .. "src/mame/audio/nl_brdrline.h",
MAME_DIR .. "src/mame/audio/vicdual-97271p.cpp",
MAME_DIR .. "src/mame/audio/vicdual-97271p.h",
MAME_DIR .. "src/mame/video/vicdual.cpp",
MAME_DIR .. "src/mame/video/vicdual-97269pb.cpp",
MAME_DIR .. "src/mame/video/vicdual-97269pb.h",
MAME_DIR .. "src/mame/audio/carnival.cpp",
MAME_DIR .. "src/mame/audio/carnival.h",
MAME_DIR .. "src/mame/audio/depthch.cpp",
MAME_DIR .. "src/mame/audio/depthch.h",
MAME_DIR .. "src/mame/audio/invinco.cpp",
MAME_DIR .. "src/mame/audio/invinco.h",
MAME_DIR .. "src/mame/audio/pulsar.cpp",
MAME_DIR .. "src/mame/audio/pulsar.h",
MAME_DIR .. "src/mame/audio/tranqgun.cpp",
MAME_DIR .. "src/mame/audio/tranqgun.h",
MAME_DIR .. "src/mame/machine/segacrpt_device.cpp",
MAME_DIR .. "src/mame/machine/segacrpt_device.h",
MAME_DIR .. "src/mame/drivers/segag80r.cpp",

File diff suppressed because it is too large Load Diff

View File

@ -165,7 +165,7 @@ namespace netlist
void nlparse_t::register_link(const pstring &sin, const pstring &sout)
{
register_link_fqn(build_fqn(sin), build_fqn(sout));
register_link_fqn(build_fqn(plib::trim(sin)), build_fqn(plib::trim(sout)));
}
void nlparse_t::register_link_arr(const pstring &terms)

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,11 @@
// license:CC0
// copyright-holders: beta-tester (https://github.com/beta-tester)
#ifndef MAME_AUDIO_NL_BRDRLINE_H
#define MAME_AUDIO_NL_BRDRLINE_H
#pragma once
NETLIST_EXTERNAL(brdrline)
#endif // MAME_AUDIO_NL_BRDRLINE_H

View File

@ -1,5 +1,5 @@
// license:BSD-3-Clause
// copyright-holders:Derrick Renaud, Couriersud
// copyright-holders:Derrick Renaud, Couriersud, Aaron Giles
/*************************************************************************
VIC Dual Game board
@ -9,6 +9,8 @@
#include "emu.h"
#include "includes/vicdual.h"
#include "audio/nl_brdrline.h"
/************************************************************************
* frogs Sound System Analog emulation
@ -479,104 +481,7 @@ void vicdual_state::invho2_audio_w(uint8_t data)
}
/************************************************************************
* brdrline Sound System Analog emulation
* May 2006, Derrick Renaud
************************************************************************/
#if 0
/* Discrete Sound Input Nodes */
#define BRDRLINE_GUN_TRG_EN NODE_01
#define BRDRLINE_JEEP_ON_EN NODE_02
#define BRDRLINE_POINT_TRG_EN NODE_03
#define BRDRLINE_HIT_TRG_EN NODE_04
#define BRDRLINE_ANIMAL_TRG_EN NODE_05
#define BRDRLINE_EMAR_TRG_EN NODE_06
#define BRDRLINE_WALK_TRG_EN NODE_07
#define BRDRLINE_CRY_TRG_EN NODE_08
/* Nodes - Sounds */
#define BRDRLINE_GUN_TRG_SND NODE_91
#define BRDRLINE_JEEP_ON_SND NODE_92
#define BRDRLINE_POINT_TRG_SND NODE_93
#define BRDRLINE_HIT_TRG_SND NODE_94
#define BRDRLINE_ANIMAL_TRG_SND NODE_95
#define BRDRLINE_EMAR_TRG_SND NODE_96
#define BRDRLINE_WALK_TRG_SND NODE_97
#define BRDRLINE_CRY_TRG_SND NODE_98
DISCRETE_SOUND_START(brdrline_discrete)
/************************************************
* Input register mapping
************************************************/
DISCRETE_INPUT_LOGIC(BRDRLINE_GUN_TRG_EN)
DISCRETE_INPUT_LOGIC(BRDRLINE_JEEP_ON_EN)
DISCRETE_INPUT_LOGIC(BRDRLINE_POINT_TRG_EN)
DISCRETE_INPUT_LOGIC(BRDRLINE_HIT_TRG_EN)
DISCRETE_INPUT_LOGIC(BRDRLINE_ANIMAL_TRG_EN)
DISCRETE_INPUT_LOGIC(BRDRLINE_EMAR_TRG_EN)
DISCRETE_INPUT_LOGIC(BRDRLINE_WALK_TRG_EN)
DISCRETE_INPUT_LOGIC(BRDRLINE_CRY_TRG_EN)
/************************************************
* GUN TRG
************************************************/
DISCRETE_LFSR_NOISE(NODE_10, 1, 1,CLK,AMPL,FEED,BIAS,LFSRTB)
DISCRETE_MIXER2(NODE_11, 1, NODE_10,IN1,INFO)
DISCRETE_FILTER2(NODE_12, 1, NODE_11,FREQ,DAMP,TYPE)
DISCRETE_ONESHOT(NODE_13, BRDRLINE_GUN_TRG_EN, DEFAULT_TTL_V_LOGIC_1,
TIME_OF_74LS123(RES_K(47), CAP_U(1)), // R155, C73
DISC_ONESHOT_FEDGE | DISC_ONESHOT_RETRIG | DISC_OUT_ACTIVE_LOW)
DISCRETE_RCDISC4(NODE_14, 1, NODE_13,RVAL0,RVAL1,RVAL2,CVAL,VP,TYPE)
DISCRETE_VCA(BRDRLINE_GUN_TRG_SND, 1, NODE_12, NODE_14,TYPE)
/************************************************
* JEEP ON
************************************************/
DISCRETE_555_ASTABLE(NODE_20, BRDRLINE_JEEP_ON_EN,
RES_K(1), // R150
RES_K(33), // R153
CAP_U(.1), // C72
OPTIONS)
DISCRETE_COUNTER(NODE_21, 1, 1, NODE_20,MIN,MAX,DIR,INIT0, DISC_CLK_BY_COUNT)
DISCRETE_COUNTER(NODE_22, 1, 1, NODE_20,MIN,MAX,DIR,INIT0, DISC_CLK_BY_COUNT)
DISCRETE_TRANSFORM3(NODE,INP0,INP1,INP2,FUNCT)
DISCRETE_DAC_R1(NODE,DATA,VDATA,LADDER)
/************************************************
* POINT TRG
************************************************/
/************************************************
* HIT TRG
************************************************/
/************************************************
* ANIMAL TRG
************************************************/
/************************************************
* EMAR TRG
************************************************/
/************************************************
* WALK TRG
************************************************/
/************************************************
* CRY TRG
************************************************/
/************************************************
* Mixer
************************************************/
DISCRETE_OUTPUT(NODE_90, 1)
DISCRETE_SOUND_END
#endif
/*
static const char *const brdrline_sample_names[] =
{
"*brdrline",
@ -630,3 +535,55 @@ void vicdual_state::brdrline_audio_aux_w(uint8_t data)
else // boot sample
m_samples->start(0, 0);
}
*/
/*************************************
*
* Borderline
*
*************************************/
borderline_audio_device::borderline_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) :
device_t(mconfig, BORDERLINE_AUDIO, tag, owner, clock),
device_mixer_interface(mconfig, *this),
m_input_line(*this, "sound_nl:in_%u", 0)
{
}
void borderline_audio_device::device_add_mconfig(machine_config &config)
{
NETLIST_SOUND(config, "sound_nl", 48000)
.set_source(NETLIST_NAME(brdrline))
.add_route(ALL_OUTPUTS, *this, 1.0);
NETLIST_LOGIC_INPUT(config, m_input_line[7], "GUN_TRG.IN", 0);
NETLIST_LOGIC_INPUT(config, m_input_line[6], "JEEP_ON.IN", 0);
NETLIST_LOGIC_INPUT(config, m_input_line[5], "POINT_TRG.IN", 0);
NETLIST_LOGIC_INPUT(config, m_input_line[4], "HIT_TRG.IN", 0);
NETLIST_LOGIC_INPUT(config, m_input_line[3], "WALK_TRG.IN", 0);
NETLIST_LOGIC_INPUT(config, m_input_line[2], "EMAR_TRG.IN", 0);
NETLIST_LOGIC_INPUT(config, m_input_line[1], "CRY_TRG.IN", 0);
NETLIST_LOGIC_INPUT(config, m_input_line[0], "ANIMAL_TRG.IN", 0);
NETLIST_STREAM_OUTPUT(config, "sound_nl:cout0", 0, "OUTPUT").set_mult_offset(1.0, 0.0);
}
void borderline_audio_device::device_start()
{
save_item(NAME(m_input_state));
}
void borderline_audio_device::write(u8 value)
{
if (value != m_input_state)
{
m_input_state = value;
for (int index = 0; index < 8; index++)
if (m_input_line[index] != nullptr)
m_input_line[index]->write_line(BIT(m_input_state, index));
}
}
DEFINE_DEVICE_TYPE(BORDERLINE_AUDIO, borderline_audio_device, "borderline_audio", "Borderline Sound Board")

30
src/mame/audio/vicdual.h Normal file
View File

@ -0,0 +1,30 @@
// license:BSD-3-Clause
// copyright-holders:Aaron Giles
#ifndef MAME_AUDIO_VICDUAL_H
#define MAME_AUDIO_VICDUAL_H
#pragma once
#include "machine/netlist.h"
#include "netlist/nl_setup.h"
class borderline_audio_device : public device_t, public device_mixer_interface
{
public:
borderline_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
virtual void device_add_mconfig(machine_config &config) override;
virtual void device_start() override;
void write(u8 data);
private:
optional_device_array<netlist_mame_logic_input_device, 8> m_input_line;
u8 m_input_state = 0xff;
};
DECLARE_DEVICE_TYPE(BORDERLINE_AUDIO, borderline_audio_device)
#endif // MAME_AUDIO_VICDUAL_H

View File

@ -1168,11 +1168,11 @@ void carnival_state::carnival_io_w(offs_t offset, uint8_t data)
void vicdual_state::brdrline_io_w(offs_t offset, uint8_t data)
{
if (offset & 0x01) brdrline_audio_w(data);
if (offset & 0x01) m_borderline_sound->write(data);
if (offset & 0x02)
{
palette_bank_w(data);
brdrline_audio_aux_w(data);
// brdrline_audio_aux_w(data);
}
if (offset & 0x08) assert_coin_status();
}
@ -2279,7 +2279,7 @@ void vicdual_state::brdrline(machine_config &config)
/* audio hardware */
SPEAKER(config, "mono").front_center();
brdrline_audio(config);
BORDERLINE_AUDIO(config, "borderline_sound", 0).add_route(ALL_OUTPUTS, "mono", 1.0);
}
@ -4032,11 +4032,11 @@ GAME( 1980, carnivalc, carnival, carnival, carnivalc, carnival_state, empty_in
GAME( 1980, carnivalh, carnival, carnivalh, carnivalh, carnival_state, empty_init, ROT270, "Sega", "Carnival (Head On hardware, set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1980, carnivalha, carnival, carnivalh, carnivalh, carnival_state, empty_init, ROT270, "Sega", "Carnival (Head On hardware, set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1980, verbena, carnival, carnival, carnival, carnival_state, empty_init, ROT270, "bootleg (Cocamatic)", "Verbena (bootleg of Carnival)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1981, brdrline, 0, brdrline, brdrline, vicdual_state, empty_init, ROT270, "Sega", "Borderline", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1981, starrkr, brdrline, brdrline, starrkr, vicdual_state, empty_init, ROT270, "Sega", "Star Raker", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1981, brdrlins, brdrline, brdrline, brdrline, vicdual_state, empty_init, ROT270, "bootleg (Sidam)", "Borderline (Sidam bootleg)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1981, brdrlinb, brdrline, brdrline, brdrline, vicdual_state, empty_init, ROT270, "bootleg (Karateco)", "Borderline (Karateco bootleg)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1981, brdrlinet, brdrline, tranqgun, tranqgun, vicdual_state, empty_init, ROT270, "Sega", "Borderline (Tranquillizer Gun conversion)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // official factory conversion
GAME( 1981, brdrline, 0, brdrline, brdrline, vicdual_state, empty_init, ROT270, "Sega", "Borderline", MACHINE_SUPPORTS_SAVE )
GAME( 1981, starrkr, brdrline, brdrline, starrkr, vicdual_state, empty_init, ROT270, "Sega", "Star Raker", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1981, brdrlins, brdrline, brdrline, brdrline, vicdual_state, empty_init, ROT270, "bootleg (Sidam)", "Borderline (Sidam bootleg)", MACHINE_SUPPORTS_SAVE )
GAME( 1981, brdrlinb, brdrline, brdrline, brdrline, vicdual_state, empty_init, ROT270, "bootleg (Karateco)", "Borderline (Karateco bootleg)", MACHINE_SUPPORTS_SAVE )
GAME( 1981, brdrlinet, brdrline, tranqgun, tranqgun, vicdual_state, empty_init, ROT270, "Sega", "Borderline (Tranquillizer Gun conversion)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // official factory conversion
GAME( 198?, startrks, 0, headons, headons, vicdual_state, empty_init, ROT0, "bootleg (Sidam)", "Star Trek (Head On hardware)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1980, digger, 0, digger, digger, vicdual_state, empty_init, ROT270, "Sega", "Digger", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1981, pulsar, 0, pulsar, pulsar, vicdual_state, empty_init, ROT270, "Sega", "Pulsar", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )

View File

@ -15,6 +15,7 @@
#include "sound/samples.h"
#include "sound/volt_reg.h"
#include "screen.h"
#include "audio/vicdual.h"
#include "audio/vicdual-97271p.h"
#include "video/vicdual-97269pb.h"
@ -29,6 +30,7 @@ public:
m_coinstate_timer(*this, "coinstate"),
m_nsub_coinage_timer(*this, "nsub_coin"),
m_screen(*this, "screen"),
m_borderline_sound(*this, "borderline_sound"),
m_proms(*this, "proms"),
m_videoram(*this, "videoram"),
m_characterram(*this, "characterram"),
@ -61,7 +63,6 @@ public:
void headon2bw(machine_config &config);
void safari(machine_config &config);
void brdrline(machine_config &config);
void brdrline_audio(machine_config &config);
void samurai(machine_config &config);
void sspaceat(machine_config &config);
void digger(machine_config &config);
@ -88,6 +89,7 @@ protected:
required_device<timer_device> m_coinstate_timer;
optional_device<timer_device> m_nsub_coinage_timer;
required_device<screen_device> m_screen;
optional_device<borderline_audio_device> m_borderline_sound;
optional_memory_region m_proms;
required_shared_ptr<uint8_t> m_videoram;
@ -149,8 +151,6 @@ protected:
void frogs_audio_w(uint8_t data);
void headon_audio_w(uint8_t data);
void invho2_audio_w(uint8_t data);
void brdrline_audio_w(uint8_t data);
void brdrline_audio_aux_w(uint8_t data);
TIMER_CALLBACK_MEMBER( frogs_croak_callback );
/*----------- defined in audio/depthch.cpp -----------*/

View File

@ -364,6 +364,13 @@ startrek // (c) 1982
tacscan // (c) 1982
zektor // (c) 1982
@source:vicdual.cpp
brdrlinb // Karateco bootleg
brdrline // (c) 1980 Sega
brdrlinet // (c) 1981 Sega
brdrlins // Sidam bootleg
starrkr // (c) 1981 Sega
@source:zaxxon.cpp
congo // 605-5167 (c) 1983 (2 board stack)
congoa // 605-5167 (c) 1983 (3 board stack)