mirror of
https://github.com/holub/mame
synced 2025-04-26 10:13:37 +03:00
(MESS) sr16: hooked up inputs and LCD. (nw)
This commit is contained in:
parent
15cb962318
commit
72f1501c5a
@ -65,9 +65,17 @@ WRITE8_MEMBER( alesis_state::p3_w )
|
||||
m_cassette->output(data & 0x04 ? -1.0 : +1.0);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER( alesis_state::sr16_lcd_w )
|
||||
{
|
||||
if (m_kb_matrix & 0x80)
|
||||
m_lcdc->data_write(space, offset, data);
|
||||
else
|
||||
m_lcdc->control_write(space, offset, data);
|
||||
}
|
||||
|
||||
static ADDRESS_MAP_START(hr16_mem, AS_PROGRAM, 8, alesis_state)
|
||||
ADDRESS_MAP_UNMAP_HIGH
|
||||
AM_RANGE(0x0000, 0x7fff) AM_ROM
|
||||
AM_RANGE(0x0000, 0x7fff) AM_MIRROR(0x8000) AM_ROM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START(hr16_io, AS_IO, 8, alesis_state)
|
||||
@ -90,11 +98,19 @@ static ADDRESS_MAP_START(sr16_mem, AS_PROGRAM, 8, alesis_state)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START(sr16_io, AS_IO, 8, alesis_state)
|
||||
ADDRESS_MAP_UNMAP_HIGH
|
||||
//ADDRESS_MAP_UNMAP_HIGH
|
||||
AM_RANGE(0x0000, 0x0000) AM_MIRROR(0xff) AM_DEVWRITE("dm3ag", alesis_dm3ag_device, write)
|
||||
AM_RANGE(0x0200, 0x0200) AM_MIRROR(0xff) AM_WRITE(sr16_lcd_w)
|
||||
AM_RANGE(0x0300, 0x0300) AM_MIRROR(0xff) AM_WRITE(kb_matrix_w)
|
||||
AM_RANGE(0x0400, 0x0400) AM_MIRROR(0xff) AM_READ(kb_r)
|
||||
AM_RANGE(MCS51_PORT_P1, MCS51_PORT_P1) AM_READNOP
|
||||
AM_RANGE(MCS51_PORT_P2, MCS51_PORT_P2) AM_WRITENOP
|
||||
AM_RANGE(MCS51_PORT_P3, MCS51_PORT_P3) AM_READWRITE(p3_r, p3_w)
|
||||
AM_RANGE(0x8000, 0xffff) AM_RAM AM_SHARE("nvram") // 32Kx8 SRAM, (battery-backed)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
/* Input ports */
|
||||
static INPUT_PORTS_START( alesis )
|
||||
static INPUT_PORTS_START( hr16 )
|
||||
PORT_START("COL1")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("COPY") PORT_CODE(KEYCODE_C)
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("OFFSET") PORT_CODE(KEYCODE_O)
|
||||
@ -154,6 +170,56 @@ static INPUT_PORTS_START( alesis )
|
||||
PORT_BIT(0xff, 0x00, IPT_DIAL) PORT_NAME("SELECT Slider") PORT_SENSITIVITY(50) PORT_KEYDELTA(1) PORT_CODE_DEC(KEYCODE_DOWN) PORT_CODE_INC(KEYCODE_UP)
|
||||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( sr16 )
|
||||
PORT_START("COL1")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("PRESET/USER") PORT_CODE(KEYCODE_U)
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("PATTERN/SONG") PORT_CODE(KEYCODE_P)
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("1") PORT_CODE(KEYCODE_1)
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("2") PORT_CODE(KEYCODE_2)
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("3") PORT_CODE(KEYCODE_3)
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("4") PORT_CODE(KEYCODE_4)
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("5") PORT_CODE(KEYCODE_5)
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("TEMPO/PAGE UP") PORT_CODE(KEYCODE_UP)
|
||||
PORT_START("COL2")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("RECORD SETUP") PORT_CODE(KEYCODE_R)
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("DRUM SET") PORT_CODE(KEYCODE_D)
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("6") PORT_CODE(KEYCODE_6)
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("7") PORT_CODE(KEYCODE_7)
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("8") PORT_CODE(KEYCODE_8)
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("9") PORT_CODE(KEYCODE_9)
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("0") PORT_CODE(KEYCODE_0)
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("TEMPO/PAGE DOWN") PORT_CODE(KEYCODE_DOWN)
|
||||
PORT_START("COL3")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("BACKUP") PORT_CODE(KEYCODE_K)
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("ERASE") PORT_CODE(KEYCODE_DEL)
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("PLAY") PORT_CODE(KEYCODE_ENTER)
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("STOP") PORT_CODE(KEYCODE_END)
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("A") PORT_CODE(KEYCODE_A)
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("B") PORT_CODE(KEYCODE_B)
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("FILL") PORT_CODE(KEYCODE_F)
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("COPY") PORT_CODE(KEYCODE_C)
|
||||
PORT_START("COL4")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("MIDI SETUP") PORT_CODE(KEYCODE_M)
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("LEFT") PORT_CODE(KEYCODE_LEFT)
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("TOM 1") PORT_CODE(KEYCODE_1_PAD)
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("TOM 2") PORT_CODE(KEYCODE_2_PAD)
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("TOM 3") PORT_CODE(KEYCODE_3_PAD)
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("RIDE") PORT_CODE(KEYCODE_4_PAD)
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("CRASH") PORT_CODE(KEYCODE_5_PAD)
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("PERC 1") PORT_CODE(KEYCODE_6_PAD)
|
||||
PORT_START("COL5")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("PERFORM/COMPOSE") PORT_CODE(KEYCODE_HOME)
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("RIGHT") PORT_CODE(KEYCODE_RIGHT)
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("KICK") PORT_CODE(KEYCODE_F1)
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("SNARE") PORT_CODE(KEYCODE_F2)
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("CLOSED HAT") PORT_CODE(KEYCODE_F3)
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("OPEN HAT") PORT_CODE(KEYCODE_F4)
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("CLAPS") PORT_CODE(KEYCODE_F5)
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("PERC 2") PORT_CODE(KEYCODE_F6)
|
||||
PORT_START("COL6")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
void alesis_state::palette_init()
|
||||
{
|
||||
@ -166,17 +232,18 @@ void alesis_state::machine_reset()
|
||||
m_kb_matrix = 0xff;
|
||||
}
|
||||
|
||||
static SCREEN_UPDATE_IND16( alesis )
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static HD44780_INTERFACE( hr16_display )
|
||||
{
|
||||
2, // number of lines
|
||||
16 // chars for line
|
||||
};
|
||||
|
||||
static HD44780_INTERFACE( sr16_display )
|
||||
{
|
||||
2, // number of lines
|
||||
8 // chars for line
|
||||
};
|
||||
|
||||
static const cassette_interface hr16_cassette_interface =
|
||||
{
|
||||
cassette_default_formats,
|
||||
@ -223,11 +290,21 @@ static MACHINE_CONFIG_START( sr16, alesis_state )
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
MCFG_SCREEN_REFRESH_RATE(50)
|
||||
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
|
||||
MCFG_SCREEN_SIZE(640, 480)
|
||||
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
|
||||
MCFG_SCREEN_UPDATE_STATIC(alesis)
|
||||
MCFG_SCREEN_SIZE(6*8, 9*2)
|
||||
MCFG_SCREEN_VISIBLE_AREA(0, 6*8-1, 0, 9*2-1)
|
||||
MCFG_DEFAULT_LAYOUT(layout_lcd)
|
||||
MCFG_SCREEN_UPDATE_DEVICE("hd44780", hd44780_device, screen_update)
|
||||
|
||||
MCFG_PALETTE_LENGTH(2)
|
||||
|
||||
MCFG_CASSETTE_ADD( CASSETTE_TAG, hr16_cassette_interface )
|
||||
|
||||
MCFG_HD44780_ADD("hd44780", sr16_display)
|
||||
|
||||
/* sound hardware */
|
||||
MCFG_ALESIS_DM3AG_ADD("dm3ag", XTAL_12MHz/2)
|
||||
|
||||
MCFG_NVRAM_ADD_0FILL("nvram")
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
/* ROM definition */
|
||||
@ -273,9 +350,12 @@ ROM_START( sr16 )
|
||||
ROM_SYSTEM_BIOS(0, "v104", "ver 1.04")
|
||||
ROMX_LOAD( "sr16_v1_04.bin", 0x0000, 0x10000, CRC(d049af6e) SHA1(0bbeb4bd25e33a9eca64d5a31480f96a0040617e), ROM_BIOS(1))
|
||||
|
||||
ROM_REGION( 0x100000, "sounddata", ROMREGION_ERASEFF )
|
||||
ROM_LOAD( "sr16.u5", 0x00000, 0x80000, CRC(8bb25cfa) SHA1(273ad59d017b54a7e8d5e1ec61c8cd807a0e4af3))
|
||||
ROM_LOAD( "sr16.u6", 0x80000, 0x80000, CRC(6da96987) SHA1(3ec8627d440bc73841e1408a19def09a8b0b77f7))
|
||||
ROM_REGION( 0x100000, "dm3ag", ROMREGION_ERASEFF )
|
||||
ROM_LOAD( "sr16.u6", 0x00000, 0x80000, CRC(6da96987) SHA1(3ec8627d440bc73841e1408a19def09a8b0b77f7))
|
||||
ROM_LOAD( "sr16.u5", 0x80000, 0x80000, CRC(8bb25cfa) SHA1(273ad59d017b54a7e8d5e1ec61c8cd807a0e4af3))
|
||||
|
||||
ROM_REGION( 0x0860, "hd44780", ROMREGION_ERASE )
|
||||
ROM_LOAD( "44780a00.bin", 0x0000, 0x0860, BAD_DUMP CRC(3a89024c) SHA1(5a87b68422a916d1b37b5be1f7ad0b3fb3af5a8d))
|
||||
ROM_END
|
||||
|
||||
|
||||
@ -292,6 +372,6 @@ DRIVER_INIT_MEMBER(alesis_state,hr16)
|
||||
|
||||
/* Driver */
|
||||
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
|
||||
SYST( 1987, hr16, 0, 0, hr16, alesis, alesis_state, hr16, "Alesis", "HR-16", GAME_NOT_WORKING | GAME_NO_SOUND)
|
||||
SYST( 1989, hr16b, hr16, 0, hr16, alesis, alesis_state, hr16, "Alesis", "HR-16B", GAME_NOT_WORKING | GAME_NO_SOUND)
|
||||
SYST( 1990, sr16, 0, 0, sr16, alesis, driver_device, 0, "Alesis", "SR-16", GAME_NOT_WORKING | GAME_NO_SOUND)
|
||||
SYST( 1987, hr16, 0, 0, hr16, hr16, alesis_state, hr16, "Alesis", "HR-16", GAME_NOT_WORKING | GAME_NO_SOUND)
|
||||
SYST( 1989, hr16b, hr16, 0, hr16, hr16, alesis_state, hr16, "Alesis", "HR-16B", GAME_NOT_WORKING | GAME_NO_SOUND)
|
||||
SYST( 1990, sr16, 0, 0, sr16, sr16, driver_device, 0, "Alesis", "SR-16", GAME_NOT_WORKING | GAME_NO_SOUND)
|
||||
|
@ -62,9 +62,11 @@ class alesis_state : public driver_device
|
||||
public:
|
||||
alesis_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag),
|
||||
m_lcdc(*this, "hd44780"),
|
||||
m_cassette(*this, CASSETTE_TAG)
|
||||
{ }
|
||||
|
||||
required_device<hd44780_device> m_lcdc;
|
||||
optional_device<cassette_image_device> m_cassette;
|
||||
|
||||
virtual void palette_init();
|
||||
@ -76,6 +78,7 @@ public:
|
||||
DECLARE_READ8_MEMBER( kb_r );
|
||||
DECLARE_READ8_MEMBER( p3_r );
|
||||
DECLARE_WRITE8_MEMBER( p3_w );
|
||||
DECLARE_WRITE8_MEMBER( sr16_lcd_w );
|
||||
|
||||
private:
|
||||
UINT8 m_kb_matrix;
|
||||
|
Loading…
Reference in New Issue
Block a user