summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--scripts/src/osd/modules.lua9
-rw-r--r--src/devices/cpu/dspp/dspp.cpp55
-rw-r--r--src/devices/cpu/dspp/dsppdasm.cpp4
-rw-r--r--src/emu/audio_effects/eq.cpp3
-rw-r--r--src/emu/audio_effects/filter.cpp3
-rw-r--r--src/mame/bmc/koftball.cpp48
-rw-r--r--src/mame/misc/gms.cpp170
-rw-r--r--src/mame/moog/nl_source.h12
-rw-r--r--src/mame/moog/source.cpp6
-rw-r--r--src/mame/namco/namcos12.cpp36
-rw-r--r--src/mame/sega/dccons.cpp4
-rw-r--r--src/mame/taito/taitojc.cpp2
12 files changed, 170 insertions, 182 deletions
diff --git a/scripts/src/osd/modules.lua b/scripts/src/osd/modules.lua
index b532124302f..5b19ed4fc44 100644
--- a/scripts/src/osd/modules.lua
+++ b/scripts/src/osd/modules.lua
@@ -305,9 +305,11 @@ function osdmodulesbuild()
}
end
- err = os.execute(pkgconfigcmd() .. " --exists libpipewire-0.3")
- if not err then
- _OPTIONS["NO_USE_PIPEWIRE"] = "1"
+ if _OPTIONS["NO_USE_PIPEWIRE"]=="0" then
+ err = os.execute(pkgconfigcmd() .. " --exists libpipewire-0.3")
+ if not err then
+ _OPTIONS["NO_USE_PIPEWIRE"] = "1"
+ end
end
if _OPTIONS["NO_USE_PIPEWIRE"]=="1" then
@@ -320,7 +322,6 @@ function osdmodulesbuild()
}
end
-
if _OPTIONS["NO_USE_MIDI"]=="1" then
defines {
"NO_USE_MIDI",
diff --git a/src/devices/cpu/dspp/dspp.cpp b/src/devices/cpu/dspp/dspp.cpp
index 0a82905bec1..7016d3eca74 100644
--- a/src/devices/cpu/dspp/dspp.cpp
+++ b/src/devices/cpu/dspp/dspp.cpp
@@ -157,11 +157,11 @@ void dspp_device::device_start()
// Register our state for the debugger
state_add(DSPP_PC, "PC", m_core->m_pc);
- state_add(DSPP_ACC, "ACC", m_core->m_acc);
+ state_add(DSPP_ACC, "ACC", m_core->m_acc).mask(0xfffff);
state_add(STATE_GENPC, "GENPC", m_core->m_pc).noshow();
+ state_add(STATE_GENPCBASE, "GENPCBASE", m_core->m_pc).noshow();
#if 0
state_add(STATE_GENFLAGS, "GENFLAGS", m_core->m_flags).callimport().callexport().formatstr("%6s").noshow();
- state_add(STATE_GENPCBASE, "GENPCBASE", m_ppc).noshow();
state_add(DSPP_PS, "PS", m_core->m_flagsio).callimport().callexport();
for (int regnum = 0; regnum < 32; regnum++)
@@ -441,18 +441,15 @@ void dspp_device::parse_operands(uint32_t numops)
// Immediate value
if ((operand & 0xc000) == 0xc000)
{
- val = operand & 0x1fff;
-
if (operand & 0x2000)
{
// Left justify
- val = val << 3;
+ val = (operand & 0x1fff) << 3;
}
else
{
// Sign extend if right justified
- if (val & 0x1000)
- val |= 0xe000;
+ val = util::sext(operand, 13);
}
m_core->m_operands[opidx++].value = val;
}
@@ -949,38 +946,6 @@ inline void dspp_device::exec_control()
}
}
-//-------------------------------------------------
-// sign_extend8 - Sign extend 8-bits to 32-bits
-//-------------------------------------------------
-
-static inline int32_t sign_extend8(uint8_t val)
-{
- return (int32_t)(int8_t)val;
-}
-
-
-//-------------------------------------------------
-// sign_extend16 - Sign extend 16-bits to 32-bits
-//-------------------------------------------------
-
-static inline int32_t sign_extend16(uint16_t val)
-{
- return (int32_t)(int16_t)val;
-}
-
-
-//-------------------------------------------------
-// sign_extend20 - Sign extend 20-bits to 32-bits
-//-------------------------------------------------
-
-static inline int32_t sign_extend20(uint32_t val)
-{
- if (val & 0x00080000)
- return (int32_t)(0xfff00000 | val);
- else
- return (int32_t)val;
-}
-
//-------------------------------------------------
// exec_arithmetic - Execute an arithmetic op
@@ -1013,8 +978,8 @@ inline void dspp_device::exec_arithmetic()
{
uint32_t mul_sel = (m_core->m_op >> 12) & 1;
- int32_t op1 = sign_extend16(read_next_operand());
- int32_t op2 = sign_extend16(mul_sel ? read_next_operand() : m_core->m_acc >> 4);
+ int32_t op1 = int16_t(read_next_operand());
+ int32_t op2 = int16_t(mul_sel ? read_next_operand() : m_core->m_acc >> 4);
mul_res = (op1 * op2) >> 11;
}
@@ -1202,7 +1167,7 @@ inline void dspp_device::exec_arithmetic()
if (alu_op < 8)
{
// Arithmetic
- m_core->m_acc = sign_extend20(alu_res) >> shift;
+ m_core->m_acc = util::sext(alu_res, 20) >> shift;
}
else
{
@@ -1222,11 +1187,11 @@ inline void dspp_device::exec_arithmetic()
if (m_core->m_flag_over)
m_core->m_acc = m_core->m_flag_neg ? 0x7ffff : 0xfff80000;
else
- m_core->m_acc = sign_extend20(alu_res);
+ m_core->m_acc = util::sext(alu_res, 20);
}
else
{
- m_core->m_acc = sign_extend20(alu_res) << shift;
+ m_core->m_acc = util::sext(alu_res, 20) << shift;
}
}
@@ -1458,7 +1423,7 @@ void dspp_device::process_next_dma(int32_t channel)
int16_t dspp_device::decode_sqxd(int8_t data, int16_t prev)
{
- int16_t temp = sign_extend8(data & 0xfe);
+ int16_t temp = int8_t(data & 0xfe);
int32_t expanded = (temp * iabs(temp)) << 1;
int16_t output;
diff --git a/src/devices/cpu/dspp/dsppdasm.cpp b/src/devices/cpu/dspp/dsppdasm.cpp
index 6b43df5d452..995e0c79f7b 100644
--- a/src/devices/cpu/dspp/dsppdasm.cpp
+++ b/src/devices/cpu/dspp/dsppdasm.cpp
@@ -18,7 +18,7 @@
uint32_t dspp_disassembler::opcode_alignment() const
{
- return 2;
+ return 1;
}
offs_t dspp_disassembler::disassemble(std::ostream &stream, offs_t pc, const data_buffer &opcodes, const data_buffer &params)
@@ -120,5 +120,5 @@ offs_t dspp_disassembler::disassemble(std::ostream &stream, offs_t pc, const dat
sprintf(buffer, "????");
#endif
- return 4 | 2 | SUPPORTED;
+ return 1 | SUPPORTED;
}
diff --git a/src/emu/audio_effects/eq.cpp b/src/emu/audio_effects/eq.cpp
index 799b2f8c9b5..c2db2680e5b 100644
--- a/src/emu/audio_effects/eq.cpp
+++ b/src/emu/audio_effects/eq.cpp
@@ -120,6 +120,9 @@ void audio_effect_eq::config_load(util::xml::data_node const *ef_node)
} else
reset_db(band);
}
+
+ for(u32 i = 0; i != BANDS; i++)
+ build_filter(i);
}
void audio_effect_eq::config_save(util::xml::data_node *ef_node) const
diff --git a/src/emu/audio_effects/filter.cpp b/src/emu/audio_effects/filter.cpp
index 70cf7ddc967..947f4b7af58 100644
--- a/src/emu/audio_effects/filter.cpp
+++ b/src/emu/audio_effects/filter.cpp
@@ -113,6 +113,9 @@ void audio_effect_filter::config_load(util::xml::data_node const *ef_node)
m_isset_qh = true;
} else
reset_qh();
+
+ build_highpass();
+ build_lowpass();
}
void audio_effect_filter::config_save(util::xml::data_node *ef_node) const
diff --git a/src/mame/bmc/koftball.cpp b/src/mame/bmc/koftball.cpp
index 015cf7db235..b840a2471ee 100644
--- a/src/mame/bmc/koftball.cpp
+++ b/src/mame/bmc/koftball.cpp
@@ -224,9 +224,8 @@ void koftball_state::video_start()
m_tilemap[3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(koftball_state::get_tile_info<3>)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32);
m_tilemap[0]->set_transparent_pen(0);
- m_tilemap[2]->set_transparent_pen(0);
-
m_tilemap[1]->set_transparent_pen(0);
+ m_tilemap[2]->set_transparent_pen(0);
m_tilemap[3]->set_transparent_pen(0);
m_pixbitmap.allocate(512, 256);
@@ -239,15 +238,15 @@ void koftball_state::draw_pixlayer(bitmap_ind16 &bitmap, const rectangle &clipre
for (int y = cliprect.min_y; y <= cliprect.max_y; y++)
{
- const u16 pitch = y * 0x80;
- for (int x = cliprect.min_x; x <= cliprect.max_x >> 2; x++)
+ const u16 pitch = y << 7;
+ for (int x = cliprect.min_x >> 2; x <= cliprect.max_x >> 2; x++)
{
const u16 tile_data = m_pixram[(pitch + x) & 0xffff];
for (int xi = 0; xi < 4; xi++)
{
- const u8 nibble = (tile_data >> ((3 - xi) * 4)) & 0xf;
+ const u8 nibble = (tile_data >> ((3 - xi) << 2)) & 0xf;
if (nibble)
- bitmap.pix(y, (x << 2) + xi) = pix_bank | nibble;
+ bitmap.pix(y, (x << 2) | xi) = pix_bank | nibble;
}
}
}
@@ -261,18 +260,18 @@ u32 koftball_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, c
Bit 1 and 5 of 0x320000 are the only ones that give correct layer results (see table below).
What is the meaning of the others? More games running on this hw would help.
- The following table describes the attract mode sequence for jxzh. koftball is relatively simpler as it almost
- only uses the first 2 layers (only noted use of the 3rd layer is for the bookkeeping screen).
+ The following table describes the attract mode sequence for jxzh. koftball is relatively simpler as
+ it mostly uses the first 2 layers (only noted use of the 3rd layer is for the bookkeeping screen).
layer0 layer 1 layer 2 layer 3 0x2a000f 0x320000
title screen over under off off 0x13 0x98
girl with scrolling tiles prev screen prev screen over under 0x1b 0xba
0x00 0x00
- demon over under prev screen prev screen 0x1f 0x98
+ odds over under prev screen prev screen 0x1f 0x98
0x00 0x00
- slot with road signs prev screen prev screen over under 0x17 0xba
+ roulette with road signs prev screen prev screen over under 0x17 0xba
Chinese lanterns prev screen prev screen over under 0x17 0xba
- slot with numbers prev screen prev screen over under 0x17 0xba
+ slots with numbers prev screen prev screen over under 0x17 0xba
0x00 0x00
pirates over under prev screen prev screen 0x17 0x98
0x00 0x00
@@ -282,35 +281,40 @@ u32 koftball_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, c
During game:
last chance over under on top prev screen 0x17 0x9a
+ double up over under prev screen prev screen 0x1f 0x98
bookkeeping prev screen prev screen prev screen prev screen 0x14 0x98 (pixmap on top)
*/
- m_pixbitmap.fill(m_backpen, cliprect);
- draw_pixlayer(m_pixbitmap, cliprect);
+ const bool tmap2_enable = BIT(m_gfx_ctrl, 1);
+ const bool tmap3_enable = BIT(m_gfx_ctrl, 5);
+ const bool bitmap_enable = BIT(m_gfx_ctrl, 7);
+
+ if (bitmap_enable)
+ {
+ m_pixbitmap.fill(m_backpen, cliprect);
+ draw_pixlayer(m_pixbitmap, cliprect);
+ }
bitmap.fill(m_backpen, cliprect);
- // TODO: this drawing routine seems too special-cased. Correct it when more evidence becomes available
- if (BIT(m_gfx_ctrl, 7) && BIT(m_priority, 3))
+ if (bitmap_enable && BIT(m_priority, 3))
copyscrollbitmap_trans(bitmap, m_pixbitmap, 0, 0, 0, 0, cliprect, 0);
- if (BIT(m_gfx_ctrl, 5) && BIT(m_gfx_ctrl, 1))
+ if (tmap3_enable)
{
m_tilemap[3]->draw(screen, bitmap, cliprect, 0, 0);
- m_tilemap[2]->draw(screen, bitmap, cliprect, 0, 0);
}
- if (!BIT(m_gfx_ctrl, 5))
+ else
{
m_tilemap[1]->draw(screen, bitmap, cliprect, 0, 0);
m_tilemap[0]->draw(screen, bitmap, cliprect, 0, 0);
}
- if (!BIT(m_gfx_ctrl, 5) && BIT(m_gfx_ctrl, 1))
- {
+
+ if (tmap2_enable)
m_tilemap[2]->draw(screen, bitmap, cliprect, 0, 0);
- }
- if (BIT(m_gfx_ctrl, 7) && !BIT(m_priority, 3))
+ if (bitmap_enable && !BIT(m_priority, 3))
copyscrollbitmap_trans(bitmap, m_pixbitmap, 0, 0, 0, 0, cliprect, 0);
return 0;
diff --git a/src/mame/misc/gms.cpp b/src/mame/misc/gms.cpp
index 1ec7172a253..5a9616af42a 100644
--- a/src/mame/misc/gms.cpp
+++ b/src/mame/misc/gms.cpp
@@ -64,13 +64,12 @@ Notes:
B1/M1 - 26C1000 / 27C1001 (PRG/data for 89C51?)
S1 - 27C2000 / 232000 mask ROM (OKI samples)
-Hold service credit (9) and reset (F3) to enter service mode.
+Hold test (F2) and reset (F3) to enter service mode.
TODO:
- work out how flip flop input is read in mahjong games in mahjong keyboard mode
-- work out how payout/key-out input is read in mahjong games in mahjong keyboard mode
-- work out how payout/key-out input is read in mahjong games in joystick mode
+- work out how payout input is read in mahjong games in mahjong keyboard mode
- correct EEPROM hookup for all games (this would get rid of a lot of ROM patches)
- hookup MCU and YM2151 / YM3812 sound for the mahjong games
- hookup PIC16F84 for rbspm
@@ -83,6 +82,7 @@ TODO:
permitted when it should be, other issues)
- game logic in baile seems broken (you always win), maybe due to the patches?
- broken title GFX in yyhm (transparent pen problem?)
+- older games don't show key-out/payout in input test - game bug or emulation bug?
- the newer games seem to use range 0x9e1000-0x9e1fff during gameplay
Video references:
@@ -314,13 +314,11 @@ void gms_2layers_state::input_matrix_w(uint16_t data)
void gms_2layers_state::eeprom_w(offs_t offset, uint16_t data, uint16_t mem_mask)
{
- // bad ?
if (ACCESSING_BITS_0_7)
{
- m_eeprom->di_write((data & 0x04) >> 2);
- m_eeprom->cs_write((data & 0x01) ? ASSERT_LINE : CLEAR_LINE);
-
- m_eeprom->clk_write((data & 0x02) ? ASSERT_LINE : CLEAR_LINE);
+ m_eeprom->cs_write(BIT(data, 0));
+ m_eeprom->clk_write(BIT(data, 1));
+ m_eeprom->di_write(BIT(data, 2));
}
}
@@ -479,30 +477,28 @@ void gms_2layers_state::mcu_io(address_map &map)
}
-#define GMS_MAHJONG_COMMON(dsw_port, dsw_bit, dsw_on) \
+#define GMS_MAHJONG_KEYBOARD(dsw_port, dsw_bit, dsw_on) \
PORT_START("IN1") \
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) PORT_CONDITION(dsw_port, dsw_bit, EQUALS, dsw_on) \
PORT_SERVICE_NO_TOGGLE(0x02, IP_ACTIVE_LOW) \
PORT_BIT( 0x00fc, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION(dsw_port, dsw_bit, EQUALS, dsw_on) \
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_CONDITION(dsw_port, dsw_bit, EQUALS, dsw_on) \
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_GAMBLE_KEYIN ) PORT_CONDITION(dsw_port, dsw_bit, EQUALS, dsw_on) \
- PORT_BIT( 0x0c00, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION(dsw_port, dsw_bit, EQUALS, dsw_on) \
+ PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT ) PORT_CONDITION(dsw_port, dsw_bit, EQUALS, dsw_on) \
+ PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION(dsw_port, dsw_bit, EQUALS, dsw_on) /* something to do with payout and maybe flip flop, possibly scanned in matrix */ \
PORT_BIT( 0xf000, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CONDITION(dsw_port, dsw_bit, EQUALS, dsw_on) PORT_CUSTOM_MEMBER(FUNC(gms_3layers_state::keyboard_r<0>)) \
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_CONDITION(dsw_port, dsw_bit, NOTEQUALS, dsw_on) \
- PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_START1 ) PORT_CONDITION(dsw_port, dsw_bit, NOTEQUALS, dsw_on) \
- PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_CONDITION(dsw_port, dsw_bit, NOTEQUALS, dsw_on) \
- PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_CONDITION(dsw_port, dsw_bit, NOTEQUALS, dsw_on) \
- PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_CONDITION(dsw_port, dsw_bit, NOTEQUALS, dsw_on) \
- PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_CONDITION(dsw_port, dsw_bit, NOTEQUALS, dsw_on) \
- PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_CONDITION(dsw_port, dsw_bit, NOTEQUALS, dsw_on) \
- PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_CONDITION(dsw_port, dsw_bit, NOTEQUALS, dsw_on) \
- PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_CONDITION(dsw_port, dsw_bit, NOTEQUALS, dsw_on) \
PORT_START("IN2") \
PORT_BIT( 0x0003, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CONDITION(dsw_port, dsw_bit, EQUALS, dsw_on) PORT_CUSTOM_MEMBER(FUNC(gms_3layers_state::keyboard_r<4>)) \
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK ) PORT_CONDITION(dsw_port, dsw_bit, EQUALS, dsw_on) \
+ PORT_BIT( 0x0ff8, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION(dsw_port, dsw_bit, EQUALS, dsw_on) \
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK ) PORT_CONDITION(dsw_port, dsw_bit, NOTEQUALS, dsw_on) \
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) PORT_CONDITION(dsw_port, dsw_bit, NOTEQUALS, dsw_on) \
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_GAMBLE_KEYIN ) PORT_CONDITION(dsw_port, dsw_bit, NOTEQUALS, dsw_on) \
+ PORT_BIT( 0x00f8, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION(dsw_port, dsw_bit, NOTEQUALS, dsw_on) \
+ PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) PORT_CONDITION(dsw_port, dsw_bit, NOTEQUALS, dsw_on) \
+ PORT_BIT( 0x0600, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION(dsw_port, dsw_bit, NOTEQUALS, dsw_on) \
+ PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT ) PORT_CONDITION(dsw_port, dsw_bit, NOTEQUALS, dsw_on) \
PORT_START("KEY0") \
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 ) PORT_CONDITION(dsw_port, dsw_bit, EQUALS, dsw_on) \
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) PORT_CONDITION(dsw_port, dsw_bit, EQUALS, dsw_on) \
@@ -544,6 +540,18 @@ void gms_2layers_state::mcu_io(address_map &map)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_LAST_CHANCE ) PORT_CONDITION(dsw_port, dsw_bit, EQUALS, dsw_on) \
PORT_BIT( 0x3f, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_CONDITION(dsw_port, dsw_bit, NOTEQUALS, dsw_on)
+#define GMS_MAHJONG_COMMON(dsw_port, dsw_bit, dsw_on) \
+ GMS_MAHJONG_KEYBOARD(dsw_port, dsw_bit, dsw_on) \
+ PORT_MODIFY("IN1") \
+ PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_START1 ) PORT_CONDITION(dsw_port, dsw_bit, NOTEQUALS, dsw_on) \
+ PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_CONDITION(dsw_port, dsw_bit, NOTEQUALS, dsw_on) \
+ PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_CONDITION(dsw_port, dsw_bit, NOTEQUALS, dsw_on) \
+ PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_CONDITION(dsw_port, dsw_bit, NOTEQUALS, dsw_on) \
+ PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_CONDITION(dsw_port, dsw_bit, NOTEQUALS, dsw_on) \
+ PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_CONDITION(dsw_port, dsw_bit, NOTEQUALS, dsw_on) \
+ PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_CONDITION(dsw_port, dsw_bit, NOTEQUALS, dsw_on) \
+ PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_CONDITION(dsw_port, dsw_bit, NOTEQUALS, dsw_on)
+
#define GMS_MAHJONG_COINAGE(tag, loc) \
PORT_DIPNAME( 0x0007, 0x0000, DEF_STR(Coinage) ) PORT_DIPLOCATION(loc ":1,2,3") /* 投幣比例 */ \
PORT_DIPSETTING( 0x0000, DEF_STR(1C_1C) ) \
@@ -601,22 +609,13 @@ static INPUT_PORTS_START( rbmk )
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW2", 0x0080, EQUALS, 0x0080)
PORT_MODIFY("IN2") // 16bit
- PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", FUNC(eeprom_serial_93cxx_device::do_read))
// Only 4 DIP banks are actually populated on PCBs (2 empty spaces), but test mode reads all 6.
- // Dips based on manuals for both rbmk and rbspm
+ // DIPs based on manuals for both rbmk and rbspm
PORT_START("DSW1") // 16bit, in test mode first 8 are recognized as dsw1, second 8 as dsw4.
PORT_DIPNAME( 0x0007, 0x0000, "Pay Out Rate" ) PORT_DIPLOCATION("DSW1:1,2,3")
PORT_DIPSETTING( 0x0000, "70%" )
@@ -764,23 +763,14 @@ static INPUT_PORTS_START( ssanguoj )
GMS_MAHJONG_COMMON("DSW1", 0x0080, 0x0000)
PORT_MODIFY("IN1") // 16bit
- PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW2", 0x0080, EQUALS, 0x0080)
- PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW2", 0x0080, EQUALS, 0x0080)
- PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW2", 0x0080, EQUALS, 0x0080)
- PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW2", 0x0080, EQUALS, 0x0080)
- PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW2", 0x0080, EQUALS, 0x0080)
- PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW2", 0x0080, EQUALS, 0x0080)
+ PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW1", 0x0080, NOTEQUALS, 0x0000)
+ PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW1", 0x0080, NOTEQUALS, 0x0000)
+ PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW1", 0x0080, NOTEQUALS, 0x0000)
+ PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW1", 0x0080, NOTEQUALS, 0x0000)
+ PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW1", 0x0080, NOTEQUALS, 0x0000)
+ PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW1", 0x0080, NOTEQUALS, 0x0000)
PORT_MODIFY("IN2") // 16bit
- PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
@@ -1386,41 +1376,58 @@ static INPUT_PORTS_START( jinpaish )
INPUT_PORTS_END
static INPUT_PORTS_START( baile )
- PORT_INCLUDE( sc2in1 )
+ // Mahjong keyboard controls:
+ // I Bet on Player / Big Confirm in test mode
+ // K Bet on Tie
+ // M Bet on Banker / Small Select in test mode
+ // N Start / Deal / Take Score Exit in test mode
+ // Kan Bet Multiplier
+ // Chi Double Up
+ // Reach Cancel Bet
+ // Ron Peek at Card
+ // Take Score Bet on Player / Big Confirm in test mode
+ // Double Up Double Up
+ // Big Bet on Banker / Small Select in test mode
+ GMS_MAHJONG_KEYBOARD("DSW1", 0x80, 0x80)
- PORT_MODIFY("IN1") // TODO: likely incomplete
- PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_SERVICE_NO_TOGGLE(0x02, IP_ACTIVE_LOW)
- PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_COIN1 )
- PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_START1 )
- PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME( "Tie Bet" )
- PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_GAMBLE_D_UP )
- PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME( "Player Bet" )
- PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME( "Banker Bet" )
- PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME( "Bet Modifier" )
- PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_NAME( "Flip Card / Show Odds" )
- PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_POKER_CANCEL )
- PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_MODIFY("IN1")
+ PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Start / Draw / Take Score" ) PORT_CONDITION("DSW1", 0x80, NOTEQUALS, 0x80)
+ PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW1", 0x80, NOTEQUALS, 0x80)
+ PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Bet on Tie") PORT_CONDITION("DSW1", 0x80, NOTEQUALS, 0x80)
+ PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_GAMBLE_D_UP ) PORT_CONDITION("DSW1", 0x80, NOTEQUALS, 0x80)
+ PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Bet on Player / Big") PORT_CONDITION("DSW1", 0x80, NOTEQUALS, 0x80)
+ PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("Bet on Banker / Small") PORT_CONDITION("DSW1", 0x80, NOTEQUALS, 0x80)
+ PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("Bet Multiplier") PORT_CONDITION("DSW1", 0x80, NOTEQUALS, 0x80)
+ PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_NAME("Peek at Card / Show Odds") PORT_CONDITION("DSW1", 0x80, NOTEQUALS, 0x80)
+ PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_POKER_CANCEL ) PORT_NAME("Cancel Bets") PORT_CONDITION("DSW1", 0x80, NOTEQUALS, 0x80)
+ PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW1", 0x80, NOTEQUALS, 0x80)
+ PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW1", 0x80, NOTEQUALS, 0x80)
+ PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW1", 0x80, NOTEQUALS, 0x80)
+ PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW1", 0x80, NOTEQUALS, 0x80)
+ PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW1", 0x80, NOTEQUALS, 0x80)
+
+ PORT_MODIFY("IN2")
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ //PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", FUNC(eeprom_serial_93cxx_device::do_read)) // TODO: verify
- // Only 1 8-DIP bank on PCB. Most options appear to be software settings.
- PORT_MODIFY("DSW1")
- PORT_DIPNAME( 0x0001, 0x0000, DEF_STR( Test ) ) PORT_DIPLOCATION("SW1:1")
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0001, DEF_STR( On ) )
- PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:2")
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0002, DEF_STR( On ) )
- PORT_DIPUNKNOWN_DIPLOC( 0x0004, 0x0004, "SW1:3")
- PORT_DIPUNKNOWN_DIPLOC( 0x0008, 0x0008, "SW1:4")
- PORT_DIPUNKNOWN_DIPLOC( 0x0010, 0x0010, "SW1:5")
- PORT_DIPUNKNOWN_DIPLOC( 0x0020, 0x0020, "SW1:6")
- PORT_DIPUNKNOWN_DIPLOC( 0x0040, 0x0040, "SW1:7")
- PORT_DIPNAME( 0x0080, 0x0000, "Connector" ) PORT_DIPLOCATION("SW1:8")
- PORT_DIPSETTING( 0x0000, "Joystick" )
+ // Only 1 8-DIP bank on PCB. Most options appear to be soft settings.
+ PORT_START("DSW1")
+ PORT_DIPNAME( 0x0001, 0x0000, DEF_STR(Service_Mode) ) PORT_DIPLOCATION("SW1:1")
+ PORT_DIPSETTING( 0x0000, DEF_STR(Off) )
+ PORT_DIPSETTING( 0x0001, DEF_STR(On) )
+ PORT_DIPNAME( 0x0002, 0x0002, DEF_STR(Demo_Sounds) ) PORT_DIPLOCATION("SW1:2")
+ PORT_DIPSETTING( 0x0000, DEF_STR(Off) )
+ PORT_DIPSETTING( 0x0002, DEF_STR(On) )
+ PORT_DIPUNKNOWN_DIPLOC( 0x0004, 0x0000, "SW1:3")
+ PORT_DIPUNKNOWN_DIPLOC( 0x0008, 0x0000, "SW1:4")
+ PORT_DIPUNKNOWN_DIPLOC( 0x0010, 0x0000, "SW1:5")
+ PORT_DIPUNKNOWN_DIPLOC( 0x0020, 0x0000, "SW1:6")
+ PORT_DIPUNKNOWN_DIPLOC( 0x0040, 0x0000, "SW1:7")
+ PORT_DIPNAME( 0x0080, 0x0000, "Connector" ) PORT_DIPLOCATION("SW1:8")
+ PORT_DIPSETTING( 0x0000, DEF_STR(Joystick) )
PORT_DIPSETTING( 0x0080, "Mahjong" )
INPUT_PORTS_END
@@ -1432,7 +1439,11 @@ static INPUT_PORTS_START( yyhm )
PORT_BIT( 0xf800, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW1", 0x0080, EQUALS, 0x0000)
PORT_MODIFY("IN2")
- PORT_BIT( 0xfff8, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_DIPUNKNOWN_DIPLOC( 0x1000, 0x1000, "P:10" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x2000, 0x2000, "P:11" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x4000, 0x4000, "P:12" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x8000, 0x8000, "P:13" )
+ //PORT_BIT( 0xf000, IP_ACTIVE_LOW, IPT_UNKNOWN )
//PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", FUNC(eeprom_serial_93cxx_device::do_read)) // TODO: verify
// Only 1 8-DIP bank on PCB. DIPs' effects as per test mode.
@@ -1801,15 +1812,6 @@ static INPUT_PORTS_START( cjdlz )
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW2", 0x0080, EQUALS, 0x0080)
PORT_MODIFY("IN2") // 16bit
- PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
@@ -2821,8 +2823,8 @@ ROM_START( cjdlz )
ROM_END
- // the following inits patch out protection (?) checks to allow for testing
- // unfortunately the various U errors shown don't always correspond to correct PCB locations
+// the following inits patch out protection (?) checks to allow for testing
+// unfortunately the various U errors shown don't always correspond to correct PCB locations
void gms_2layers_state::init_rbspm()
{
diff --git a/src/mame/moog/nl_source.h b/src/mame/moog/nl_source.h
new file mode 100644
index 00000000000..b0421a657c4
--- /dev/null
+++ b/src/mame/moog/nl_source.h
@@ -0,0 +1,12 @@
+// license:BSD-3-Clause
+// copyright-holders:m1macrophage
+#ifndef MAME_MOOG_NL_SOURCE_H
+#define MAME_MOOG_NL_SOURCE_H
+
+#pragma once
+
+#include "netlist/nl_setup.h"
+
+NETLIST_EXTERNAL(moogsource)
+
+#endif // MAME_MOOG_NL_SOURCE_H
diff --git a/src/mame/moog/source.cpp b/src/mame/moog/source.cpp
index 939c39c1dc3..2d48cfbff05 100644
--- a/src/mame/moog/source.cpp
+++ b/src/mame/moog/source.cpp
@@ -35,6 +35,8 @@ interactive layout, and is intended as an educational tool.
#include "emu.h"
+#include "nl_source.h"
+
#include "cpu/z80/z80.h"
#include "machine/netlist.h"
#include "machine/nvram.h"
@@ -42,8 +44,6 @@ interactive layout, and is intended as an educational tool.
#include "machine/timer.h"
#include "sound/va_eg.h"
-#include "netlist/nl_setup.h"
-
#include "moog_source.lh"
#define LOG_CV (1U << 1)
@@ -60,8 +60,6 @@ interactive layout, and is intended as an educational tool.
#include "logmacro.h"
-NETLIST_EXTERNAL(moogsource) // In nl_source.cpp.
-
namespace {
constexpr const char MAINCPU_TAG[] = "z80";
diff --git a/src/mame/namco/namcos12.cpp b/src/mame/namco/namcos12.cpp
index 203cee1f160..b9c73152a91 100644
--- a/src/mame/namco/namcos12.cpp
+++ b/src/mame/namco/namcos12.cpp
@@ -60,15 +60,15 @@ Super World Stadium 2000 (SS01/VER.A3) (C) Namco, 2000 COH-700 SYS
Super World Stadium 2001 (SS11/VER.A2) (C) Namco, 2001 COH-716 SYSTEM12 MOTHER(C) SYSTEM12 F2M5 KC061
Tenkomori Shooting (TKM1/VER.A1) (C) Namco, 1998 COH-700 SYSTEM12 MOTHER(B) SYSTEM12 M4F6 KC036
Tenkomori Shooting (TKM2/VER.A1) (C) Namco, 1998 COH-700 SYSTEM12 MOTHER(B) SYSTEM12 M4F6 KC036
-Tekken 3 (TET1/VER.A) (C) Namco, 1996 COH-700 SYSTEM12 MOTHER SYSTEM12 M8F2F KC006
-Tekken 3 (TET2/VER.A) (C) Namco, 1996 COH-700 SYSTEM12 MOTHER SYSTEM12 M8F2F KC006
-Tekken 3 (TET3/VER.A) (C) Namco, 1996 COH-700 SYSTEM12 MOTHER SYSTEM12 M8F2F KC006
-Tekken 3 (TET3/VER.B) (C) Namco, 1996 COH-700 SYSTEM12 MOTHER SYSTEM12 M8F2F KC006
-Tekken 3 (TET2/VER.C) (C) Namco, 1996 COH-700 SYSTEM12 MOTHER SYSTEM12 M8F2F KC006
-Tekken 3 (TET2/VER.D) (C) Namco, 1996 COH-700 SYSTEM12 MOTHER(B) SYSTEM12 M8F2F KC006
-Tekken 3 (TET3/VER.D) (C) Namco, 1996 COH-700 SYSTEM12 MOTHER(B) SYSTEM12 M8F2F KC006
-Tekken 3 (TET1/VER.E1) (C) Namco, 1996 COH-700 SYSTEM12 MOTHER(B) SYSTEM12 M8F2F KC006
-Tekken 3 (TET2/VER.E1) (C) Namco, 1996 COH-700 SYSTEM12 MOTHER(B) SYSTEM12 M8F2F KC006
+Tekken 3 (TET1/VER.A) (C) Namco, 1997 COH-700 SYSTEM12 MOTHER SYSTEM12 M8F2F KC006
+Tekken 3 (TET2/VER.A) (C) Namco, 1997 COH-700 SYSTEM12 MOTHER SYSTEM12 M8F2F KC006
+Tekken 3 (TET3/VER.A) (C) Namco, 1997 COH-700 SYSTEM12 MOTHER SYSTEM12 M8F2F KC006
+Tekken 3 (TET3/VER.B) (C) Namco, 1997 COH-700 SYSTEM12 MOTHER SYSTEM12 M8F2F KC006
+Tekken 3 (TET2/VER.C) (C) Namco, 1997 COH-700 SYSTEM12 MOTHER SYSTEM12 M8F2F KC006
+Tekken 3 (TET2/VER.D) (C) Namco, 1997 COH-700 SYSTEM12 MOTHER(B) SYSTEM12 M8F2F KC006
+Tekken 3 (TET3/VER.D) (C) Namco, 1997 COH-700 SYSTEM12 MOTHER(B) SYSTEM12 M8F2F KC006
+Tekken 3 (TET1/VER.E1) (C) Namco, 1997 COH-700 SYSTEM12 MOTHER(B) SYSTEM12 M8F2F KC006
+Tekken 3 (TET2/VER.E1) (C) Namco, 1997 COH-700 SYSTEM12 MOTHER(B) SYSTEM12 M8F2F KC006
Tekken Tag Tournament (TEG3/VER.C1) (C) Namco, 1999 COH-700 SYSTEM12 MOTHER(B) SYSTEM12 M8F4 KC044
Tekken Tag Tournament (TEG3/VER.B) (C) Namco, 1999 COH-700 SYSTEM12 MOTHER(B) SYSTEM12 M8F4 KC044
Toukon Retsuden 3 (TR1/VER.A) (C) Namco, 1997 COH-700 SYSTEM12 MOTHER(B) SYSTEM12 M8F2F KC019
@@ -3588,15 +3588,15 @@ ROM_END
// YEAR NAME PARENT MACHINE INPUT CLASS INIT ROT COMPANY FULLNAME, FLAGS
-GAME( 1996, tekken3, 0, coh700, tekken3, namcos12_state, empty_init, ROT0, "Namco", "Tekken 3 (World, TET2/VER.E1)", 0 ) /* KC006 */
-GAME( 1996, tekken3a, tekken3, coh700, tekken3, namcos12_state, empty_init, ROT0, "Namco", "Tekken 3 (World, TET2/VER.A)", 0 ) /* KC006 */
-GAME( 1996, tekken3b, tekken3, coh700, tekken3, namcos12_state, empty_init, ROT0, "Namco", "Tekken 3 (World, TET2/VER.B)", 0 ) /* KC006 */
-GAME( 1996, tekken3c, tekken3, coh700, tekken3, namcos12_state, empty_init, ROT0, "Namco", "Tekken 3 (World, TET2/VER.C)", 0 ) /* KC006 */
-GAME( 1996, tekken3d, tekken3, coh700, tekken3, namcos12_state, empty_init, ROT0, "Namco", "Tekken 3 (World, TET2/VER.D)", 0 ) /* KC006 */
-GAME( 1996, tekken3ua, tekken3, coh700, tekken3, namcos12_state, empty_init, ROT0, "Namco", "Tekken 3 (US, TET3/VER.A)", 0 ) /* KC006 */
-GAME( 1996, tekken3ud, tekken3, coh700, tekken3, namcos12_state, empty_init, ROT0, "Namco", "Tekken 3 (US, TET3/VER.D)", 0 ) /* KC006 */
-GAME( 1996, tekken3ja, tekken3, coh700, tekken3, namcos12_state, empty_init, ROT0, "Namco", "Tekken 3 (Japan, TET1/VER.A)", 0 ) /* KC006 */
-GAME( 1996, tekken3je1, tekken3, coh700, tekken3, namcos12_state, empty_init, ROT0, "Namco", "Tekken 3 (Japan, TET1/VER.E1)", 0 ) /* KC006 */
+GAME( 1997, tekken3, 0, coh700, tekken3, namcos12_state, empty_init, ROT0, "Namco", "Tekken 3 (World, TET2/VER.E1)", 0 ) /* KC006 */
+GAME( 1997, tekken3a, tekken3, coh700, tekken3, namcos12_state, empty_init, ROT0, "Namco", "Tekken 3 (World, TET2/VER.A)", 0 ) /* KC006 */
+GAME( 1997, tekken3b, tekken3, coh700, tekken3, namcos12_state, empty_init, ROT0, "Namco", "Tekken 3 (World, TET2/VER.B)", 0 ) /* KC006 */
+GAME( 1997, tekken3c, tekken3, coh700, tekken3, namcos12_state, empty_init, ROT0, "Namco", "Tekken 3 (World, TET2/VER.C)", 0 ) /* KC006 */
+GAME( 1997, tekken3d, tekken3, coh700, tekken3, namcos12_state, empty_init, ROT0, "Namco", "Tekken 3 (World, TET2/VER.D)", 0 ) /* KC006 */
+GAME( 1997, tekken3ua, tekken3, coh700, tekken3, namcos12_state, empty_init, ROT0, "Namco", "Tekken 3 (US, TET3/VER.A)", 0 ) /* KC006 */
+GAME( 1997, tekken3ud, tekken3, coh700, tekken3, namcos12_state, empty_init, ROT0, "Namco", "Tekken 3 (US, TET3/VER.D)", 0 ) /* KC006 */
+GAME( 1997, tekken3ja, tekken3, coh700, tekken3, namcos12_state, empty_init, ROT0, "Namco", "Tekken 3 (Japan, TET1/VER.A)", 0 ) /* KC006 */
+GAME( 1997, tekken3je1, tekken3, coh700, tekken3, namcos12_state, empty_init, ROT0, "Namco", "Tekken 3 (Japan, TET1/VER.E1)", 0 ) /* KC006 */
GAME( 1997, lbgrande, 0, coh700, lbgrande, namcos12_state, empty_init, ROT0, "Namco", "Libero Grande (World, LG2/VER.A)", 0 ) /* KC014 */
GAME( 1997, toukon3, 0, coh700, lbgrande, namcos12_state, empty_init, ROT0, "Namco / Tomy", "Shin Nihon Pro Wrestling Toukon Retsuden 3 Arcade Edition (Japan, TR1/VER.A)", MACHINE_IMPERFECT_GRAPHICS ) /* KC019 */
GAME( 1998, soulclbr, 0, coh700, namcos12, namcos12_state, empty_init, ROT0, "Namco", "Soul Calibur (World, SOC12/VER.A2)", 0 ) /* KC020 */
diff --git a/src/mame/sega/dccons.cpp b/src/mame/sega/dccons.cpp
index bb6e47db32b..43fead5f79a 100644
--- a/src/mame/sega/dccons.cpp
+++ b/src/mame/sega/dccons.cpp
@@ -370,8 +370,8 @@ void dc_cons_state::gdrom_config(device_t *device)
{
cdda_device *cdda = device->subdevice<cdda_device>("cdda");
cdda->audio_end_cb().set(*device, FUNC(gdrom_device::cdda_end_mark_cb));
- cdda->add_route(0, "^^aica", 1.0);
- cdda->add_route(1, "^^aica", 1.0);
+ cdda->add_route(0, "^^aica", 1.0, 0);
+ cdda->add_route(1, "^^aica", 1.0, 1);
}
void dc_cons_state::dc_base(machine_config &config)
diff --git a/src/mame/taito/taitojc.cpp b/src/mame/taito/taitojc.cpp
index dad6ca5f292..17ae0c84975 100644
--- a/src/mame/taito/taitojc.cpp
+++ b/src/mame/taito/taitojc.cpp
@@ -2235,7 +2235,7 @@ GAMEL(1996, dendegoa, dendego, dendego, dendego, dendego_state, init_taitojc,
GAMEL(1996, dendegox, dendego, dendego, dendego, dendego_state, init_taitojc, ROT0, "Taito", "Densha de GO! EX (Ver 2.4 J)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_TIMING, layout_dendego ) // DENSYA DE GO VER 2.4 J 1997/ 4/18 13:38:34
GAME( 1997, sidebs2, 0, taitojc, sidebs, taitojc_state, init_taitojc, ROT0, "Taito", "Side by Side 2 (Ver 2.6 OK)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_TIMING | MACHINE_NODEVICE_LAN ) // SIDE BY SIDE2 VER 2.6 OK 1997/ 6/ 4 17:27:37
GAME( 1997, sidebs2u, sidebs2, taitojc, sidebs, taitojc_state, init_taitojc, ROT0, "Taito", "Side by Side 2 (Ver 2.6 A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_TIMING | MACHINE_NODEVICE_LAN ) // SIDE BY SIDE2 VER 2.6 A 1997/ 6/19 09:39:22
-GAME( 1997, sidebs2j, sidebs2, taitojc, sidebs, taitojc_state, init_taitojc, ROT0, "Taito", "Side by Side 2 Evoluzione RR (Ver 3.1 J)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_TIMING | MACHINE_NODEVICE_LAN ) // SIDE BY SIDE2 VER 3.1 J 1997/10/ 7 13:55:38
+GAME( 1997, sidebs2j, sidebs2, taitojc, sidebs, taitojc_state, init_taitojc, ROT0, "Taito", "Side by Side 2 Evoluzione RR (Ver 3.1 J)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_TIMING | MACHINE_NODEVICE_LAN ) // SIDE BY SIDE2 RR VER 3.1 J 1997/10/ 7 13:55:38
GAME( 1997, sidebs2ja, sidebs2, taitojc, sidebs, taitojc_state, init_taitojc, ROT0, "Taito", "Side by Side 2 Evoluzione (Ver 2.4 J)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_TIMING | MACHINE_NODEVICE_LAN ) // SIDE BY SIDE2 VER 2.4 J 1997/ 5/26 13:06:37
GAMEL(1998, dendego2, 0, dendego, dendego, dendego_state, init_dendego2, ROT0, "Taito", "Densha de GO! 2 Kousoku-hen (Ver 2.5 J)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_TIMING, layout_dendego ) // DENSYA DE GO2 VER 2.5 J 1998/ 3/ 2 15:30:55
GAMEL(1998, dendego23k,dendego2, dendego, dendego, dendego_state, init_dendego2, ROT0, "Taito", "Densha de GO! 2 Kousoku-hen 3000-bandai (Ver 2.20 J)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_TIMING, layout_dendego ) // DENSYA DE GO! 2 3000 VER 2.20 J 1998/ 7/15 17:42:38