void crospang_state::crospang(machine_config &config) { /* basic machine hardware */ M68000(config, m_maincpu, XTAL(14'318'181)/2); /* 68000P10 @ 7.15909MHz */ m_maincpu->set_addrmap(AS_PROGRAM, &crospang_state::crospang_map); m_maincpu->set_vblank_int("screen", FUNC(crospang_state::irq6_line_hold)); z80_device &audiocpu(Z80(config, "audiocpu", XTAL(14'318'181)/4)); /* 3.579545MHz */ audiocpu.set_addrmap(AS_PROGRAM, &crospang_state::crospang_sound_map); audiocpu.set_addrmap(AS_IO, &crospang_state::crospang_sound_io_map); /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen.set_refresh_hz(60); screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); screen.set_size(64*8, 64*8); screen.set_visarea(0, 40*8-1, 0, 30*8-1); screen.set_screen_update(FUNC(crospang_state::screen_update_crospang)); screen.set_palette("palette"); PALETTE(config, "palette").set_format(palette_device::xRGB_555, 0x300); GFXDECODE(config, m_gfxdecode, "palette", gfx_crospang); DECO_SPRITE(config, m_sprgen, 0); m_sprgen->set_gfx_region(0); m_sprgen->set_is_bootleg(true); m_sprgen->set_offsets(5, 7); m_sprgen->set_gfxdecode_tag(m_gfxdecode); /* sound hardware */ SPEAKER(config, "mono").front_center(); GENERIC_LATCH_8(config, m_soundlatch); ym3812_device &ymsnd(YM3812(config, "ymsnd", XTAL(14'318'181)/4)); /* 3.579545MHz */ ymsnd.irq_handler().set_inputline("audiocpu", 0); ymsnd.add_route(ALL_OUTPUTS, "mono", 1.0); okim6295_device &oki(OKIM6295(config, "oki", XTAL(14'318'181)/16, okim6295_device::PIN7_HIGH)); // 1.789772MHz or 0.894886MHz?? & pin 7 not verified oki.add_route(ALL_OUTPUTS, "mono", 1.0); }
void sshangha_state::sshangha(machine_config &config) { /* basic machine hardware */ M68000(config, m_maincpu, 16_MHz_XTAL); /* CPU marked as 16MHz part */ m_maincpu->set_addrmap(AS_PROGRAM, &sshangha_state::sshangha_map); m_maincpu->set_vblank_int("screen", FUNC(sshangha_state::irq6_line_hold)); Z80(config, m_audiocpu, 16_MHz_XTAL / 4); m_audiocpu->set_addrmap(AS_PROGRAM, &sshangha_state::sound_map); config.m_minimum_quantum = attotime::from_hz(6000); screen_device& screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen.set_refresh_hz(60); screen.set_vblank_time(ATTOSECONDS_IN_USEC(529)); screen.set_size(40*8, 32*8); screen.set_visarea(0*8, 40*8-1, 1*8, 31*8-1); screen.set_screen_update(FUNC(sshangha_state::screen_update)); GFXDECODE(config, "gfxdecode", m_palette, gfx_sshangha); PALETTE(config, m_palette).set_format(palette_device::xBGR_888, 0x4000); DECO16IC(config, m_tilegen, 0); m_tilegen->set_pf1_size(DECO_64x32); m_tilegen->set_pf2_size(DECO_64x32); m_tilegen->set_pf1_trans_mask(0x0f); m_tilegen->set_pf2_trans_mask(0x0f); m_tilegen->set_pf1_col_bank(0x30); m_tilegen->set_pf2_col_bank(0x20); m_tilegen->set_pf1_col_mask(0x0f); m_tilegen->set_pf2_col_mask(0x0f); m_tilegen->set_bank1_callback(FUNC(sshangha_state::bank_callback), this); m_tilegen->set_bank2_callback(FUNC(sshangha_state::bank_callback), this); m_tilegen->set_pf12_8x8_bank(0); m_tilegen->set_pf12_16x16_bank(1); m_tilegen->set_gfxdecode_tag("gfxdecode"); DECO_SPRITE(config, m_sprgen1, 0); m_sprgen1->set_gfx_region(2); m_sprgen1->set_gfxdecode_tag("gfxdecode"); DECO_SPRITE(config, m_sprgen2, 0); m_sprgen2->set_gfx_region(3); m_sprgen2->set_gfxdecode_tag("gfxdecode"); DECO146PROT(config, m_deco146, 0); m_deco146->port_a_cb().set_ioport("INPUTS"); m_deco146->port_b_cb().set_ioport("SYSTEM"); m_deco146->port_c_cb().set_ioport("DSW"); /* sound hardware */ SPEAKER(config, "lspeaker").front_left(); // sure it's stereo? SPEAKER(config, "rspeaker").front_right(); ym2203_device &ymsnd(YM2203(config, "ymsnd", 16_MHz_XTAL / 4)); ymsnd.irq_handler().set_inputline(m_audiocpu, 0); ymsnd.add_route(ALL_OUTPUTS, "lspeaker", 0.33); ymsnd.add_route(ALL_OUTPUTS, "rspeaker", 0.33); okim6295_device &oki(OKIM6295(config, "oki", 16_MHz_XTAL / 8, okim6295_device::PIN7_LOW)); // clock frequency & pin 7 not verified oki.add_route(ALL_OUTPUTS, "lspeaker", 0.27); oki.add_route(ALL_OUTPUTS, "rspeaker", 0.27); }
/******************************************************************************/ static const gfx_layout charlayout = { 8,8, RGN_FRAC(1,2), 4, { RGN_FRAC(1,2)+8, RGN_FRAC(1,2)+0, 8, 0 }, { STEP8(0,1) }, { STEP8(0,8*2) }, 16*8 }; static const gfx_layout tile_layout = { 16,16, RGN_FRAC(1,2), 4, { RGN_FRAC(1,2)+8, RGN_FRAC(1,2)+0, 8, 0 }, { STEP8(16*8*2,1), STEP8(0,1) }, { STEP16(0,8*2) }, 64*8 }; static GFXDECODE_START( gfx_funkyjet ) GFXDECODE_ENTRY( "gfx1", 0, charlayout, 256, 32 ) /* Characters 8x8 */ GFXDECODE_ENTRY( "gfx1", 0, tile_layout, 256, 32 ) /* Tiles 16x16 */ GFXDECODE_ENTRY( "gfx2", 0, tile_layout, 0, 16 ) /* Sprites 16x16 */ GFXDECODE_END /******************************************************************************/ void funkyjet_state::funkyjet(machine_config &config) { /* basic machine hardware */ M68000(config, m_maincpu, XTAL(28'000'000)/2); /* 28 MHz crystal */ m_maincpu->set_addrmap(AS_PROGRAM, &funkyjet_state::funkyjet_map); m_maincpu->set_vblank_int("screen", FUNC(funkyjet_state::irq6_line_hold)); H6280(config, m_audiocpu, XTAL(32'220'000)/4); /* Custom chip 45, Audio section crystal is 32.220 MHz */ m_audiocpu->set_addrmap(AS_PROGRAM, &funkyjet_state::sound_map); m_audiocpu->add_route(ALL_OUTPUTS, "lspeaker", 0); // internal sound unused m_audiocpu->add_route(ALL_OUTPUTS, "rspeaker", 0); /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen.set_refresh_hz(58); screen.set_vblank_time(ATTOSECONDS_IN_USEC(529)); screen.set_size(40*8, 32*8); screen.set_visarea(0*8, 40*8-1, 1*8, 31*8-1); screen.set_screen_update(FUNC(funkyjet_state::screen_update)); screen.set_palette("palette"); DECO146PROT(config, m_deco146, 0); m_deco146->port_a_cb().set_ioport("INPUTS"); m_deco146->port_b_cb().set_ioport("SYSTEM"); m_deco146->port_c_cb().set_ioport("DSW"); m_deco146->soundlatch_irq_cb().set_inputline(m_audiocpu, 0); m_deco146->set_interface_scramble_interleave(); GFXDECODE(config, "gfxdecode", "palette", gfx_funkyjet); PALETTE(config, "palette").set_format(palette_device::xBGR_444, 1024); DECO16IC(config, m_deco_tilegen, 0); m_deco_tilegen->set_pf1_size(DECO_64x32); m_deco_tilegen->set_pf2_size(DECO_64x32); m_deco_tilegen->set_pf1_trans_mask(0x0f); m_deco_tilegen->set_pf2_trans_mask(0x0f); m_deco_tilegen->set_pf1_col_bank(0x00); m_deco_tilegen->set_pf2_col_bank(0x10); m_deco_tilegen->set_pf1_col_mask(0x0f); m_deco_tilegen->set_pf2_col_mask(0x0f); m_deco_tilegen->set_pf12_8x8_bank(0); m_deco_tilegen->set_pf12_16x16_bank(1); m_deco_tilegen->set_gfxdecode_tag("gfxdecode"); DECO_SPRITE(config, m_sprgen, 0); m_sprgen->set_gfx_region(2); m_sprgen->set_gfxdecode_tag("gfxdecode"); /* sound hardware */ SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); ym2151_device &ymsnd(YM2151(config, "ymsnd", XTAL(32'220'000)/9)); ymsnd.irq_handler().set_inputline(m_audiocpu, 1); // IRQ2 ymsnd.add_route(0, "lspeaker", 0.45); ymsnd.add_route(1, "rspeaker", 0.45); okim6295_device &oki(OKIM6295(config, "oki", XTAL(28'000'000)/28, okim6295_device::PIN7_HIGH)); oki.add_route(ALL_OUTPUTS, "lspeaker", 0.50); oki.add_route(ALL_OUTPUTS, "rspeaker", 0.50); }