}; static GFXDECODE_START( rk ) GFXDECODE_ENTRY( "gfx1", 0x00000, rk_charlayout1, 256, 8 ) /* characters */ GFXDECODE_ENTRY( "gfx1", 0x00000, rk_charlayout2, 256, 8 ) /* characters */ GFXDECODE_ENTRY( "gfx2", 0x00000, rk_spritelayout, 0, 32 ) /* sprites */ GFXDECODE_ENTRY( "gfx3", 0x00000, rk_tilelayout, 0, 32 ) /* sprites/bg tiles */ GFXDECODE_ENTRY( "gfx4", 0x00000, rk_bglayout, 0, 32 ) /* bg tiles */ GFXDECODE_END static const ay8910_interface ay8910_config = { AY8910_LEGACY_OUTPUT, AY8910_DEFAULT_LOADS, DEVCB_MEMORY_HANDLER("audiocpu", PROGRAM, soundlatch_r) }; static INTERRUPT_GEN( kingofb_interrupt ) { kingofb_state *state = device->machine().driver_data<kingofb_state>(); if (state->m_nmi_enable) device_set_input_line(device, INPUT_LINE_NMI, PULSE_LINE); } static MACHINE_START( kingofb ) { kingofb_state *state = machine.driver_data<kingofb_state>(); state->m_video_cpu = machine.device("video");
for(i=0;i<16;i++) { for(j=16;j<32;j++) { colortable_entry_set_value(machine.colortable, k++, i); colortable_entry_set_value(machine.colortable, k++, j); } } } static const ay8910_interface intv_ay8910_interface = { AY8910_LEGACY_OUTPUT, AY8910_DEFAULT_LOADS, DEVCB_MEMORY_HANDLER("maincpu", PROGRAM, intv_right_control_r), DEVCB_MEMORY_HANDLER("maincpu", PROGRAM, intv_left_control_r), DEVCB_NULL, DEVCB_NULL }; /* graphics output */ static const gfx_layout intv_gromlayout = { 16, 16, 256, 1, { 0 }, { 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7}, { 0*16, 0*16, 1*16, 1*16, 2*16, 2*16, 3*16, 3*16,
{ m_dma_irq = state; // FDC and DMA interrupts are wire-ORed to the Z80 device_set_input_line(m_maincpu, INPUT_LINE_IRQ0, m_fdc_irq | m_dma_irq); } static UINT8 memory_read_byte(address_space *space, offs_t address) { return space->read_byte(address); } static void memory_write_byte(address_space *space, offs_t address, UINT8 data) { space->write_byte(address, data); } static Z80DMA_INTERFACE( dma_intf ) { DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_HALT), DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, luxor_55_21046_device, dma_int_w), DEVCB_NULL, DEVCB_MEMORY_HANDLER(Z80_TAG, PROGRAM, memory_read_byte), DEVCB_MEMORY_HANDLER(Z80_TAG, PROGRAM, memory_write_byte), DEVCB_MEMORY_HANDLER(Z80_TAG, IO, memory_read_byte), DEVCB_MEMORY_HANDLER(Z80_TAG, IO, memory_write_byte) }; //------------------------------------------------- // wd17xx_interface fdc_intf //------------------------------------------------- WRITE_LINE_MEMBER( luxor_55_21046_device::fdc_intrq_w ) { m_fdc_irq = state; // FDC and DMA interrupts are wire-ORed to the Z80
DEVCB_NULL }; static CDP1852_INTERFACE( cidelsa_cdp1852_in2_intf ) { CDP1852_MODE_INPUT, DEVCB_INPUT_PORT("IN2"), DEVCB_NULL, DEVCB_NULL }; static CDP1852_INTERFACE( altair_cdp1852_out1_intf ) { CDP1852_MODE_OUTPUT, DEVCB_NULL, DEVCB_MEMORY_HANDLER(CDP1802_TAG, PROGRAM, altair_out1_w), DEVCB_NULL }; static CDP1852_INTERFACE( draco_cdp1852_out1_intf ) { CDP1852_MODE_OUTPUT, DEVCB_NULL, DEVCB_MEMORY_HANDLER(CDP1802_TAG, PROGRAM, draco_out1_w), DEVCB_NULL }; /* COP400 Interface */ static COP400_INTERFACE( draco_cop_intf ) {
static void set_dma_channel(device_t *device, int channel, int state) { xtom3d_state *drvstate = device->machine().driver_data<xtom3d_state>(); if (!state) drvstate->m_dma_channel = channel; } static WRITE_LINE_DEVICE_HANDLER( pc_dack0_w ) { set_dma_channel(device, 0, state); } static WRITE_LINE_DEVICE_HANDLER( pc_dack1_w ) { set_dma_channel(device, 1, state); } static WRITE_LINE_DEVICE_HANDLER( pc_dack2_w ) { set_dma_channel(device, 2, state); } static WRITE_LINE_DEVICE_HANDLER( pc_dack3_w ) { set_dma_channel(device, 3, state); } static I8237_INTERFACE( dma8237_1_config ) { DEVCB_LINE(pc_dma_hrq_changed), DEVCB_NULL, DEVCB_MEMORY_HANDLER("maincpu", PROGRAM, pc_dma_read_byte), DEVCB_MEMORY_HANDLER("maincpu", PROGRAM, pc_dma_write_byte), { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL }, { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL }, { DEVCB_LINE(pc_dack0_w), DEVCB_LINE(pc_dack1_w), DEVCB_LINE(pc_dack2_w), DEVCB_LINE(pc_dack3_w) } }; static I8237_INTERFACE( dma8237_2_config ) { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL }, { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL }, { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL }
PORT_MODIFY("LINE10") PORT_BIT (0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_8_PAD) PORT_CHAR(UCHAR_MAMEKEY(8_PAD)) PORT_BIT (0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_9_PAD) PORT_CHAR(UCHAR_MAMEKEY(9_PAD)) PORT_BIT (0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_PLUS_PAD) PORT_CHAR(UCHAR_MAMEKEY(PLUS_PAD)) PORT_BIT (0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_MINUS_PAD) PORT_CHAR(UCHAR_MAMEKEY(MINUS_PAD)) PORT_BIT (0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_ASTERISK) PORT_CHAR(UCHAR_MAMEKEY(ASTERISK)) PORT_BIT (0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH_PAD) PORT_CHAR(UCHAR_MAMEKEY(SLASH_PAD)) PORT_BIT (0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_ENTER_PAD) PORT_CHAR(UCHAR_MAMEKEY(DEL_PAD)) PORT_BIT (0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad ,") PORT_CODE(KEYCODE_DEL_PAD) INPUT_PORTS_END static const ay8910_interface svi318_ay8910_interface = { AY8910_LEGACY_OUTPUT, AY8910_DEFAULT_LOADS, DEVCB_MEMORY_HANDLER("maincpu", PROGRAM, svi318_psg_port_a_r), DEVCB_NULL, DEVCB_NULL, DEVCB_MEMORY_HANDLER("maincpu", PROGRAM, svi318_psg_port_b_w) }; static const cassette_config svi318_cassette_config = { svi_cassette_formats, NULL, (cassette_state)(CASSETTE_PLAY), "svi318_cass" }; static const floppy_config svi318_floppy_config = {
for ( i = 0; i < 49; i++ ) { r = cgenienz_colors[i*3]; g = cgenienz_colors[i*3+1]; b = cgenienz_colors[i*3+2]; colortable_palette_set_color(machine.colortable, i, MAKE_RGB(r, g, b)); } for(i=0; i<108; i++) colortable_entry_set_value(machine.colortable, i, cgenie_palette[i]); } static const ay8910_interface cgenie_ay8910_interface = { AY8910_LEGACY_OUTPUT, AY8910_DEFAULT_LOADS, DEVCB_MEMORY_HANDLER("maincpu", PROGRAM, cgenie_psg_port_a_r), DEVCB_MEMORY_HANDLER("maincpu", PROGRAM, cgenie_psg_port_b_r), DEVCB_MEMORY_HANDLER("maincpu", PROGRAM, cgenie_psg_port_a_w), DEVCB_MEMORY_HANDLER("maincpu", PROGRAM, cgenie_psg_port_b_w) }; static const cassette_config cgenie_cassette_config = { cgenie_cassette_formats, NULL, (cassette_state)(CASSETTE_STOPPED), NULL }; // This is currently broken
/************************************* * * statics * *************************************/ static UINT8 memory_read_byte(address_space &space, offs_t address, UINT8 mem_mask) { return space.read_byte(address); } static void memory_write_byte(address_space &space, offs_t address, UINT8 data, UINT8 mem_mask) { space.write_byte(address, data); } static Z80DMA_INTERFACE( mario_dma ) { DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_HALT), DEVCB_NULL, DEVCB_NULL, DEVCB_MEMORY_HANDLER("maincpu", PROGRAM, memory_read_byte), DEVCB_MEMORY_HANDLER("maincpu", PROGRAM, memory_write_byte), DEVCB_NULL, DEVCB_NULL }; WRITE8_MEMBER(mario_state::mario_z80dma_rdy_w) { device_t *device = machine().device("z80dma"); z80dma_rdy_w(device, data & 0x01); } WRITE8_MEMBER(mario_state::nmi_mask_w) { m_nmi_mask = data & 1;
const ppi8255_interface scramble_ppi_0_intf = { DEVCB_INPUT_PORT("IN0"), /* Port A read */ DEVCB_INPUT_PORT("IN1"), /* Port B read */ DEVCB_INPUT_PORT("IN2"), /* Port C read */ DEVCB_NULL, /* Port A write */ DEVCB_NULL, /* Port B write */ DEVCB_NULL /* Port C write */ }; const ppi8255_interface scramble_ppi_1_intf = { DEVCB_NULL, /* Port A read */ DEVCB_NULL, /* Port B read */ DEVCB_NULL, /* Port C read */ DEVCB_MEMORY_HANDLER("maincpu", PROGRAM, soundlatch_w), /* Port A write */ DEVCB_HANDLER(scramble_sh_irqtrigger_w), /* Port B write */ DEVCB_NULL /* Port C write */ }; const ppi8255_interface stratgyx_ppi_1_intf = { DEVCB_NULL, /* Port A read */ DEVCB_NULL, /* Port B read */ DEVCB_INPUT_PORT("IN3"), /* Port C read */ DEVCB_MEMORY_HANDLER("maincpu", PROGRAM, soundlatch_w), /* Port A write */ DEVCB_HANDLER(scramble_sh_irqtrigger_w), /* Port B write */ DEVCB_NULL /* Port C write */ };
INPUT_PORTS_END /************************************* * * Sound definitions * *************************************/ static const ym2203_interface ym2203_config = { { AY8910_LEGACY_OUTPUT, AY8910_DEFAULT_LOADS, DEVCB_MEMORY_HANDLER("maincpu", PROGRAM, ticket_dispenser_r), DEVCB_NULL, DEVCB_NULL, DEVCB_MEMORY_HANDLER("maincpu", PROGRAM, ticket_dispenser_w), /* Also a status LED. See memory map above */ }, firqhandler }; /************************************* * * Machine driver * *************************************/
GFXDECODE_ENTRY( "gfx1", 0, layout_8x8, 0, 16 ) GFXDECODE_ENTRY( "gfx2", 0, layout_8x32, 0, 16 ) GFXDECODE_END /*************************************************************************** Machine Drivers ***************************************************************************/ static const ay8910_interface dunhuang_ay8910_interface = { AY8910_LEGACY_OUTPUT, AY8910_DEFAULT_LOADS, // A B DEVCB_NULL, DEVCB_HANDLER(dunhuang_dsw_r), // R DEVCB_MEMORY_HANDLER("maincpu", PROGRAM, dunhuang_input_w), DEVCB_NULL // W }; static MACHINE_START( dunhuang ) { dunhuang_state *state = machine.driver_data<dunhuang_state>(); UINT8 *ROM = machine.region("maincpu")->base(); memory_configure_bank(machine, "bank1", 0, 8, &ROM[0x10000], 0x8000); state->save_item(NAME(state->m_written)); state->save_item(NAME(state->m_written2)); state->save_item(NAME(state->m_pos_x)); state->save_item(NAME(state->m_pos_y));
if (!m_dack3) { /* floppy terminal count */ upd765_tc_w(m_fdc, m_tc); } } static UINT8 memory_read_byte(address_space *space, offs_t address) { return space->read_byte(address); } static void memory_write_byte(address_space *space, offs_t address, UINT8 data) { space->write_byte(address, data); } static I8237_INTERFACE( mm1_dma8237_intf ) { DEVCB_DRIVER_LINE_MEMBER(mm1_state, dma_hrq_changed), DEVCB_DRIVER_LINE_MEMBER(mm1_state, tc_w), DEVCB_MEMORY_HANDLER(I8085A_TAG, PROGRAM, memory_read_byte), DEVCB_MEMORY_HANDLER(I8085A_TAG, PROGRAM, memory_write_byte), { DEVCB_NULL, DEVCB_NULL, DEVCB_DRIVER_MEMBER(mm1_state, mpsc_dack_r), DEVCB_DEVICE_HANDLER(UPD765_TAG, upd765_dack_r) }, { DEVCB_DEVICE_HANDLER(I8275_TAG, i8275_dack_w), DEVCB_DRIVER_MEMBER(mm1_state, mpsc_dack_w), DEVCB_NULL, DEVCB_DEVICE_HANDLER(UPD765_TAG, upd765_dack_w) }, { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_DRIVER_LINE_MEMBER(mm1_state, dack3_w) } }; /* uPD765 Interface */ static const upd765_interface fdc_intf = { DEVCB_CPU_INPUT_LINE(I8085A_TAG, I8085_RST55_LINE), DEVCB_DEVICE_LINE(I8237_TAG, i8237_dreq3_w), NULL, UPD765_RDY_PIN_NOT_CONNECTED, { FLOPPY_0, FLOPPY_1, NULL, NULL }