mirror of
https://github.com/holub/mame
synced 2025-04-23 00:39:36 +03:00
merit/merit3xx.cpp: hacked a bit to make one of the games show something
This commit is contained in:
parent
c6635db4f1
commit
7c283b8825
@ -10,6 +10,8 @@ TODO:
|
||||
- Never initializes CRTC on 350 games;
|
||||
- Map secondary NVRAM module
|
||||
- Map / connect up Dallas DS1216 RTC
|
||||
- ma6710a starts with game malfunction message. It can be started by switching IN2:2 on,
|
||||
then pressing discard 3. Games 'Super Eight' and 'Black Jack' show GFX banking logic isn't correct.
|
||||
|
||||
===================================================================================================
|
||||
|
||||
@ -613,7 +615,7 @@ MC6845_UPDATE_ROW(merit3xx_state::update_row)
|
||||
const u32 base_addr = (ma + cx) & 0x1fff;
|
||||
int const attr = m_attram[base_addr];
|
||||
// TODO: bit 0 comes from an unknown bit in attr (bit 0?), bit 1-2 used with "TOD CLOCK ERROR" / "COIN JAM" messages
|
||||
u32 tile_addr = (m_charram[base_addr] << 1) | ((attr & 0x40) << 4);
|
||||
u32 tile_addr = (m_charram[base_addr] << 1) | ((attr & 0x60) << 4);
|
||||
tile_addr <<= 3;
|
||||
tile_addr += (ra & 7);
|
||||
|
||||
@ -651,7 +653,7 @@ void merit3xx_state::main_map(address_map &map)
|
||||
{
|
||||
// map.unmap_value_high();
|
||||
map(0x0000, 0x7fff).bankr("rombank");
|
||||
map(0x8000, 0x9fff).ram().share("nvram");
|
||||
map(0x8000, 0x9fff).ram();//.share("nvram"); // TODO: reenable NVRAM, currently m6710a doesn't like it at all
|
||||
// definitely accesses RAM here, would drop to "RAM error" with unmap high
|
||||
map(0xa000, 0xbfff).ram();
|
||||
map(0xc000, 0xdfff).ram().share("attrram");
|
||||
@ -683,82 +685,61 @@ void merit3xx_state::crt350_io_map(address_map &map)
|
||||
map(0x20, 0x20).w(FUNC(merit3xx_state::crt350_rombank_w));
|
||||
}
|
||||
|
||||
// currently geared towards 'Joker Poker' in ma6710a
|
||||
static INPUT_PORTS_START( merit3xx )
|
||||
PORT_START("IN0")
|
||||
PORT_DIPNAME( 0x01, 0x01, "IN0" )
|
||||
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POKER_HOLD1 ) PORT_NAME("Discard 1")
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_HOLD2 ) PORT_NAME("Discard 2")
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_HOLD3 ) PORT_NAME("Discard 3")
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_POKER_HOLD4 ) PORT_NAME("Discard 4")
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_HOLD5 ) PORT_NAME("Discard 5")
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_BET )
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_DEAL )
|
||||
PORT_DIPNAME( 0x80, 0x80, "IN0.8" ) // something printer related. Causes 'printing cash ticket' if switched with coins inserted
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
|
||||
PORT_START("IN1")
|
||||
PORT_DIPNAME( 0x01, 0x01, "IN1" )
|
||||
PORT_DIPNAME( 0x01, 0x01, "IN1.1" )
|
||||
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) // "TOD clock failure" if enabled
|
||||
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(2)
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK )
|
||||
PORT_DIPNAME( 0x08, 0x08, "IN1.4" )
|
||||
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
|
||||
PORT_DIPNAME( 0x10, 0x10, "IN1.5" )
|
||||
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
|
||||
PORT_DIPNAME( 0x20, 0x20, "IN1.6" )
|
||||
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
|
||||
PORT_DIPNAME( 0x40, 0x40, "IN1.7" )
|
||||
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(2)
|
||||
|
||||
PORT_START("IN2")
|
||||
PORT_DIPNAME( 0x01, 0x01, "IN2" )
|
||||
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_DOOR )
|
||||
PORT_DIPNAME( 0x02, 0x02, "IN2.2" ) // shows last hand during gameplay, needs to be switched on to avoid game malfunction message
|
||||
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
|
||||
PORT_DIPNAME( 0x04, 0x04, "IN2.3" )
|
||||
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
|
||||
PORT_DIPNAME( 0x08, 0x08, "IN2.4" )
|
||||
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
|
||||
PORT_DIPNAME( 0x10, 0x10, "IN2.5" )
|
||||
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
|
||||
PORT_DIPNAME( 0x20, 0x20, "IN2.6" )
|
||||
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
|
||||
PORT_DIPNAME( 0x40, 0x40, "IN2.7" )
|
||||
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
|
||||
PORT_DIPNAME( 0x80, 0x80, "IN2.8" )
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
|
||||
@ -822,7 +803,8 @@ void merit3xx_state::merit300(machine_config &config)
|
||||
m_maincpu->set_addrmap(AS_IO, &merit3xx_state::io_map);
|
||||
m_maincpu->set_vblank_int("screen", FUNC(merit3xx_state::irq0_line_hold));
|
||||
|
||||
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
|
||||
// TODO: reenable NVRAM, currently m6710a doesn't like it at all
|
||||
//NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
|
||||
|
||||
i8255_device &ppi0(I8255(config, "ppi0"));
|
||||
ppi0.in_pa_callback().set_ioport("IN0");
|
||||
@ -1029,7 +1011,7 @@ ROM_END
|
||||
GAME( 1989, ma6710, 0, merit300, merit3xx, merit3xx_state, empty_init, ROT0, "Merit", "Multi-Action 6710-13", MACHINE_IS_SKELETON ) // build date is 04/25/96?
|
||||
|
||||
// CRT-350 games
|
||||
GAME( 198?, ma6710a, 0, merit300, merit3xx, merit3xx_state, empty_init, ROT0, "Merit", "Multi-Action 6710-21", MACHINE_IS_SKELETON ) // build date is 01/12/99? - should be clone of ma6710??
|
||||
GAME( 1991, ma6710a, 0, merit300, merit3xx, merit3xx_state, empty_init, ROT0, "Merit", "Multi-Action 6710-21", MACHINE_IS_SKELETON ) // build date is 01/12/99? - but shows 1991 on screen
|
||||
GAME( 199?, ma7551t, 0, merit350, merit3xx, merit3xx_state, empty_init, ROT0, "Merit", "Multi-Action 7551-20-R3T", MACHINE_IS_SKELETON ) // build date is 04/12/00?
|
||||
GAME( 199?, ma7551p, 0, merit350, merit3xx, merit3xx_state, empty_init, ROT0, "Merit", "Multi-Action 7551-21-R2P", MACHINE_IS_SKELETON ) // build date is 12/27/00? - should be clone of ma7551t??
|
||||
GAME( 199?, ma7556, 0, merit350, merit3xx, merit3xx_state, empty_init, ROT0, "Merit", "Multi-Action 7556-00-R2", MACHINE_IS_SKELETON ) // build date is 10/20/98?
|
||||
|
@ -1722,7 +1722,7 @@ GAME(2001, tekken4a, tekken4, system246, system246, namcops2_state, empty_ini
|
||||
GAME(2001, tekken4b, tekken4, system246, system246, namcops2_state, empty_init, ROT0, "Namco", "Tekken 4 (TEF1 Ver. A)", MACHINE_IS_SKELETON)
|
||||
GAME(2001, tekken4c, tekken4, system246, system246, namcops2_state, empty_init, ROT0, "Namco", "Tekken 4 (TEF1 Ver. C)", MACHINE_IS_SKELETON)
|
||||
GAME(2001, wanganmd, sys246, system246, system246, namcops2_state, empty_init, ROT0, "Namco", "Wangan Midnight (WMN1 Ver. A)", MACHINE_IS_SKELETON)
|
||||
GAME(2002, batlgr3, sys246, system246, system246, namcops2_state, empty_init, ROT0, "Namco", "Battle Gear 3 (Ver.2.01A)", MACHINE_IS_SKELETON)
|
||||
GAME(2002, batlgr3, sys246, system246, system246, namcops2_state, empty_init, ROT0, "Taito", "Battle Gear 3 (Ver.2.01A)", MACHINE_IS_SKELETON)
|
||||
GAME(2002, dragchrn, sys246, system246, system246, namcops2_state, empty_init, ROT0, "Namco", "Dragon Chronicles (DC001 Ver. A)", MACHINE_IS_SKELETON)
|
||||
GAME(2002, netchu02c, sys246, system246, system246, namcops2_state, empty_init, ROT0, "Namco", "Netchuu Pro Yakyuu 2002 (NPY1 Ver. C)", MACHINE_IS_SKELETON)
|
||||
GAME(2002, netchu02b, netchu02c, system246, system246, namcops2_state, empty_init, ROT0, "Namco", "Netchuu Pro Yakyuu 2002 (NPY1 Ver. B)", MACHINE_IS_SKELETON)
|
||||
|
Loading…
Reference in New Issue
Block a user