fromanc4: Preliminary step towards 4-player link support (nw)

This commit is contained in:
AJR 2017-06-19 23:14:12 -04:00
parent d781d7cf2e
commit 770f8b758d
2 changed files with 17 additions and 6 deletions

View File

@ -158,6 +158,12 @@ WRITE8_MEMBER(fromanc2_state::fromanc2_subcpu_rombank_w)
membank("bank2")->set_entry((data & 0x0c) >> 2);
}
// custom handler allowing byte-smeared writes
WRITE16_MEMBER(fromanc2_state::uart_w)
{
m_uart->ins8250_w(space, offset, data & 0xff);
}
/*************************************
*
@ -257,8 +263,7 @@ static ADDRESS_MAP_START( fromanc4_main_map, AS_PROGRAM, 16, fromanc2_state )
AM_RANGE(0xe30000, 0xe30013) AM_WRITENOP // ???
AM_RANGE(0xe40000, 0xe40013) AM_WRITENOP // ???
AM_RANGE(0xe50000, 0xe50009) AM_WRITENOP // EXT-COMM PORT ?
AM_RANGE(0xe5000c, 0xe5000d) AM_READNOP // EXT-COMM PORT ?
AM_RANGE(0xe50000, 0xe5000f) AM_DEVREAD8("uart", ns16550_device, ins8250_r, 0x00ff) AM_WRITE(uart_w) // EXT-COMM PORT ?
ADDRESS_MAP_END
@ -624,11 +629,11 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_START( fromanc4 )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", M68000,32000000/2) /* 16.00 MHz */
MCFG_CPU_ADD("maincpu", M68000, XTAL_32MHz/2) /* 16.00 MHz */
MCFG_CPU_PROGRAM_MAP(fromanc4_main_map)
MCFG_CPU_VBLANK_INT_DRIVER("lscreen", fromanc2_state, fromanc2_interrupt)
MCFG_CPU_ADD("audiocpu", Z80,32000000/4) /* 8.00 MHz */
MCFG_CPU_ADD("audiocpu", Z80, XTAL_32MHz/4) /* 8.00 MHz */
MCFG_CPU_PROGRAM_MAP(fromanc2_sound_map)
MCFG_CPU_IO_MAP(fromanc2_sound_io_map)
@ -636,6 +641,8 @@ static MACHINE_CONFIG_START( fromanc4 )
MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
MCFG_DEVICE_ADD("uart", NS16550, 2000000) // actual type is TL16C550CFN; clock unknown
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", "lpalette", fromancr)
@ -812,4 +819,4 @@ DRIVER_INIT_MEMBER(fromanc2_state,fromanc4)
GAME( 1995, fromanc2, 0, fromanc2, fromanc2, fromanc2_state, fromanc2, ROT0, "Video System Co.", "Taisen Idol-Mahjong Final Romance 2 (Japan)", MACHINE_SUPPORTS_SAVE )
GAME( 1995, fromancr, 0, fromancr, fromanc2, fromanc2_state, fromanc2, ROT0, "Video System Co.", "Taisen Mahjong Final Romance R (Japan)", MACHINE_SUPPORTS_SAVE )
GAME( 1998, fromanc4, 0, fromanc4, fromanc4, fromanc2_state, fromanc4, ROT0, "Video System Co.", "Taisen Mahjong Final Romance 4 (Japan)", MACHINE_SUPPORTS_SAVE )
GAME( 1998, fromanc4, 0, fromanc4, fromanc4, fromanc2_state, fromanc4, ROT0, "Video System Co.", "Taisen Mahjong Final Romance 4 (Japan)", MACHINE_NODEVICE_LAN | MACHINE_SUPPORTS_SAVE )

View File

@ -3,6 +3,7 @@
#include "machine/gen_latch.h"
#include "machine/eepromser.h"
#include "machine/ins8250.h"
class fromanc2_state : public driver_device
{
@ -17,7 +18,8 @@ public:
m_lpalette(*this, "lpalette"),
m_rpalette(*this, "rpalette"),
m_soundlatch(*this, "soundlatch"),
m_soundlatch2(*this, "soundlatch2") { }
m_soundlatch2(*this, "soundlatch2"),
m_uart(*this, "uart") { }
/* memory pointers */
std::unique_ptr<uint16_t[]> m_videoram[2][4];
@ -48,6 +50,7 @@ public:
required_device<palette_device> m_rpalette;
required_device<generic_latch_8_device> m_soundlatch;
required_device<generic_latch_8_device> m_soundlatch2;
optional_device<ns16550_device> m_uart;
DECLARE_WRITE16_MEMBER(fromanc2_sndcmd_w);
DECLARE_WRITE16_MEMBER(fromanc2_portselect_w);
@ -62,6 +65,7 @@ public:
DECLARE_WRITE8_MEMBER(fromanc2_subcpu_nmi_clr);
DECLARE_READ8_MEMBER(fromanc2_sndcpu_nmi_clr);
DECLARE_WRITE8_MEMBER(fromanc2_subcpu_rombank_w);
DECLARE_WRITE16_MEMBER(uart_w);
DECLARE_WRITE16_MEMBER(fromanc2_videoram_0_w);
DECLARE_WRITE16_MEMBER(fromanc2_videoram_1_w);
DECLARE_WRITE16_MEMBER(fromanc2_videoram_2_w);