diff --git a/hash/kpython2.xml b/hash/kpython2.xml index 49d8cc3d02f..5550e61cd8d 100644 --- a/hash/kpython2.xml +++ b/hash/kpython2.xml @@ -12,8 +12,8 @@ license:CC0-1.0 GuitarFreaks V2 (JAA/AAA) 2005 Konami - - + + @@ -23,8 +23,8 @@ license:CC0-1.0 DrumMania V2 (JAA/AAA) 2005 Konami - - + + @@ -34,8 +34,8 @@ license:CC0-1.0 GuitarFreaks V2 Version 1.01 (JAA/AAA) 2005 Konami - - + + @@ -45,8 +45,8 @@ license:CC0-1.0 DrumMania V2 Version 1.01 (JAA/AAA) 2005 Konami - - + + @@ -56,8 +56,8 @@ license:CC0-1.0 GuitarFreaks V3 (JAA/AAA) 2006 Konami - - + + @@ -67,8 +67,8 @@ license:CC0-1.0 DrumMania V3 (JAA/AAA) 2006 Konami - - + + @@ -78,8 +78,8 @@ license:CC0-1.0 Dance Dance Revolution SuperNOVA Install Disk (UAA) 2006 Konami - - + + @@ -89,8 +89,8 @@ license:CC0-1.0 Dancing Stage SuperNOVA Install Disk (EAA) 2006 Konami - - + + @@ -100,8 +100,8 @@ license:CC0-1.0 Dance Dance Revolution SuperNOVA 2 Install Disk (JAA/AAA) 2007 Konami - - + + @@ -111,8 +111,8 @@ license:CC0-1.0 Dance Dance Revolution SuperNOVA 2 Install Disk (UAA) 2007 Konami - - + + diff --git a/src/mame/atari/cyberbal.cpp b/src/mame/atari/cyberbal.cpp index 0a2c3f6542e..b330c02f8fb 100644 --- a/src/mame/atari/cyberbal.cpp +++ b/src/mame/atari/cyberbal.cpp @@ -1,5 +1,6 @@ // license:BSD-3-Clause -// copyright-holders:Aaron Giles +// copyright-holders: Aaron Giles + /*************************************************************************** Atari Cyberball hardware @@ -22,15 +23,408 @@ #include "emu.h" -#include "cyberbal.h" +#include "atarijsa.h" +#include "atarimo.h" +#include "atarisac.h" +#include "slapstic.h" + +#include "cpu/m68000/m68000.h" #include "machine/eeprompar.h" +#include "machine/timer.h" #include "machine/watchdog.h" + +#include "emupal.h" +#include "screen.h" #include "speaker.h" +#include "tilemap.h" #include "layout/generic.h" +namespace { + +class cyberbal_base_state : public driver_device +{ +protected: + cyberbal_base_state(const machine_config &mconfig, device_type type, const char *tag) : + driver_device(mconfig, type, tag), + m_maincpu(*this, "maincpu"), + m_gfxdecode(*this, "gfxdecode"), + m_playfield(*this, "playfield"), + m_alpha(*this, "alpha"), + m_mob(*this, "mob") + { } + +protected: + virtual void video_start() override; + + required_device m_maincpu; + required_device m_gfxdecode; + required_device m_playfield; + required_device m_alpha; + required_device m_mob; + + uint16_t m_current_slip[2]{}; + + static const atari_motion_objects_config s_mob_config; + + TILE_GET_INFO_MEMBER(get_alpha_tile_info); + TILE_GET_INFO_MEMBER(get_playfield_tile_info); + + void scanline_update_one(screen_device &screen, int scanline, int i, tilemap_t &curplayfield, tilemap_device &curalpha); + uint32_t update_one_screen(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, atari_motion_objects_device &curmob, tilemap_t &curplayfield, tilemap_t &curalpha); + +private: + uint8_t m_playfield_palette_bank[2]{}; + uint16_t m_playfield_xscroll[2]{}; + uint16_t m_playfield_yscroll[2]{}; +}; + + +class cyberbal2p_state : public cyberbal_base_state +{ +public: + cyberbal2p_state(const machine_config &mconfig, device_type type, const char *tag) : + cyberbal_base_state(mconfig, type, tag), + m_screen(*this, "screen"), + m_jsa(*this, "jsa") + { } + + void cyberbal2p(machine_config &config); + +protected: + virtual void video_start() override; + +private: + required_device m_screen; + required_device m_jsa; + + DECLARE_WRITE_LINE_MEMBER(video_int_write_line); + void video_int_ack_w(uint16_t data = 0); + + TIMER_DEVICE_CALLBACK_MEMBER(scanline_update); + + uint16_t sound_state_r(); + + uint32_t screen_update_cyberbal2p(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + + // memory maps + void cyberbal2p_map(address_map &map); +}; + + +class cyberbal_state : public cyberbal_base_state +{ +public: + cyberbal_state(const machine_config &mconfig, device_type type, const char *tag) : + cyberbal_base_state(mconfig, type, tag), + m_slapstic(*this, "slapstic"), + m_slapstic_bank(*this, "slapstic_bank"), + m_extracpu(*this, "extra"), + m_sac(*this, "sac"), + m_playfield2(*this, "playfield2"), + m_alpha2(*this, "alpha2"), + m_mob2(*this, "mob2"), + m_rpalette(*this, "rpalette"), + m_lscreen(*this, "lscreen"), + m_rscreen(*this, "rscreen") + { } + + void init_cyberbalt(); + void cyberbal(machine_config &config); + void cyberbalt(machine_config &config); + +protected: + virtual void machine_reset() override; + virtual void video_start() override; + +private: + optional_device m_slapstic; + optional_memory_bank m_slapstic_bank; + required_device m_extracpu; + required_device m_sac; + required_device m_playfield2; + required_device m_alpha2; + required_device m_mob2; + required_device m_rpalette; + required_device m_lscreen; + required_device m_rscreen; + + DECLARE_WRITE_LINE_MEMBER(video_int_write_line); + void video_int_ack_w(uint16_t data = 0); + + TIMER_DEVICE_CALLBACK_MEMBER(scanline_update); + + void p2_reset_w(uint16_t data); + TILE_GET_INFO_MEMBER(get_alpha2_tile_info); + TILE_GET_INFO_MEMBER(get_playfield2_tile_info); + + uint32_t screen_update_cyberbal_left(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + uint32_t screen_update_cyberbal_right(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + + // memory maps + void main_map(address_map &map); + void tournament_map(address_map &map); + void extra_map(address_map &map); +}; + + +// video + +/************************************* + * + * Tilemap callbacks + * + *************************************/ + +TILE_GET_INFO_MEMBER(cyberbal_base_state::get_alpha_tile_info) +{ + uint16_t const data = m_alpha->basemem_read(tile_index); + int const code = data & 0xfff; + int const color = (data >> 12) & 0x07; + tileinfo.set(2, code, color, (data >> 15) & 1); +} + + +TILE_GET_INFO_MEMBER(cyberbal_state::get_alpha2_tile_info) +{ + uint16_t const data = m_alpha2->basemem_read(tile_index); + int const code = data & 0xfff; + int const color = (data >> 12) & 0x07; + tileinfo.set(2, code, color, (data >> 15) & 1); +} + + +TILE_GET_INFO_MEMBER(cyberbal_base_state::get_playfield_tile_info) +{ + uint16_t const data = m_playfield->basemem_read(tile_index); + int const code = data & 0x1fff; + int const color = (data >> 11) & 0x0f; + tileinfo.set(0, code, color, (data >> 15) & 1); +} + + +TILE_GET_INFO_MEMBER(cyberbal_state::get_playfield2_tile_info) +{ + uint16_t const data = m_playfield2->basemem_read(tile_index); + int const code = data & 0x1fff; + int const color = (data >> 11) & 0x0f; + tileinfo.set(0, code, color, (data >> 15) & 1); +} + + + + +/************************************* + * + * Video system start + * + *************************************/ + +const atari_motion_objects_config cyberbal_base_state::s_mob_config = +{ + 1, // index to which gfx system + 1, // number of motion object banks + 1, // are the entries linked? + 0, // are the entries split? + 0, // render in reverse order? + 0, // render in swapped X/Y order? + 1, // does the neighbor bit affect the next object? + 1024, // pixels per SLIP entry (0 for no-slip) + 0, // pixel offset for SLIPs + 0, // maximum number of links to visit/scanline (0=all) + + 0x600, // base palette entry + 0x100, // maximum number of colors + 0, // transparent pen index + + {{ 0,0,0x07f8,0 }}, // mask for the link + {{ 0x7fff,0,0,0 }}, // mask for the code index + {{ 0,0,0,0x000f }}, // mask for the color + {{ 0,0,0,0xffc0 }}, // mask for the X position + {{ 0,0xff80,0,0 }}, // mask for the Y position + {{ 0 }}, // mask for the width, in tiles + {{ 0,0x000f,0,0 }}, // mask for the height, in tiles + {{ 0x8000,0,0,0 }}, // mask for the horizontal flip + {{ 0 }}, // mask for the vertical flip + {{ 0 }}, // mask for the priority + {{ 0,0,0,0x0010 }}, // mask for the neighbor + {{ 0 }}, // mask for absolute coordinates + + {{ 0 }}, // mask for the special value + 0, // resulting value to indicate "special" +}; + +void cyberbal_base_state::video_start() +{ + // initialize the motion objects + m_mob->set_slipram(&m_current_slip[0]); + + // save states + save_item(NAME(m_current_slip)); + save_item(NAME(m_playfield_palette_bank)); + save_item(NAME(m_playfield_xscroll)); + save_item(NAME(m_playfield_yscroll)); +} + + +void cyberbal_state::video_start() +{ + m_playfield2->set_palette(*m_rpalette); + m_alpha2->set_palette(*m_rpalette); + + cyberbal_base_state::video_start(); + + m_mob2->set_slipram(&m_current_slip[1]); + + // adjust the sprite positions + m_mob->set_xscroll(4); + m_mob2->set_xscroll(4); +} + + +void cyberbal2p_state::video_start() +{ + cyberbal_base_state::video_start(); + + // adjust the sprite positions + m_mob->set_xscroll(5); +} + + + +/************************************* + * + * Periodic scanline updater + * + *************************************/ + +void cyberbal_base_state::scanline_update_one(screen_device &screen, int scanline, int i, tilemap_t &curplayfield, tilemap_device &curalpha) +{ + // keep in range + int offset = ((scanline - 8) / 8) * 64 + 47; + if (offset < 0) + offset += 0x800; + else if (offset >= 0x800) + return; + + // update the current parameters + uint16_t word = curalpha.basemem_read(offset + 3); + if (!(word & 1)) + { + if (((word >> 1) & 7) != m_playfield_palette_bank[i]) + { + if (scanline > 0) + screen.update_partial(scanline - 1); + m_playfield_palette_bank[i] = (word >> 1) & 7; + curplayfield.set_palette_offset(m_playfield_palette_bank[i] << 8); + } + } + word = curalpha.basemem_read(offset + 4); + if (!(word & 1)) + { + int const newscroll = 2 * (((word >> 7) + 4) & 0x1ff); + if (newscroll != m_playfield_xscroll[i]) + { + if (scanline > 0) + screen.update_partial(scanline - 1); + curplayfield.set_scrollx(0, newscroll); + m_playfield_xscroll[i] = newscroll; + } + } + word = curalpha.basemem_read(offset + 5); + if (!(word & 1)) + { + // a new vscroll latches the offset into a counter; we must adjust for this + int const newscroll = ((word >> 7) - (scanline)) & 0x1ff; + if (newscroll != m_playfield_yscroll[i]) + { + if (scanline > 0) + screen.update_partial(scanline - 1); + curplayfield.set_scrolly(0, newscroll); + m_playfield_yscroll[i] = newscroll; + } + } + word = curalpha.basemem_read(offset + 7); + if (!(word & 1)) + { + if (m_current_slip[i] != word) + { + if (scanline > 0) + screen.update_partial(scanline - 1); + m_current_slip[i] = word; + } + } + i++; +} + +TIMER_DEVICE_CALLBACK_MEMBER(cyberbal_state::scanline_update) +{ + scanline_update_one(*m_lscreen, param, 0, *m_playfield, *m_alpha); + scanline_update_one(*m_rscreen, param, 1, *m_playfield2, *m_alpha2); +} + +TIMER_DEVICE_CALLBACK_MEMBER(cyberbal2p_state::scanline_update) +{ + scanline_update_one(*m_screen, param, 0, *m_playfield, *m_alpha); +} + + + +/************************************* + * + * Main refresh + * + *************************************/ + +uint32_t cyberbal_base_state::update_one_screen(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, atari_motion_objects_device &curmob, tilemap_t &curplayfield, tilemap_t &curalpha) +{ + // start drawing + curmob.draw_async(cliprect); + + // draw the playfield + curplayfield.draw(screen, bitmap, cliprect, 0, 0); + + // draw and merge the MO + bitmap_ind16 &mobitmap = curmob.bitmap(); + for (const sparse_dirty_rect *rect = curmob.first_dirty_rect(cliprect); rect != nullptr; rect = rect->next()) + for (int y = rect->top(); y <= rect->bottom(); y++) + { + uint16_t const *const mo = &mobitmap.pix(y); + uint16_t *const pf = &bitmap.pix(y); + for (int x = rect->left(); x <= rect->right(); x++) + if (mo[x] != 0xffff) + { + // not verified: logic is all controlled in a PAL + pf[x] = mo[x]; + } + } + + // add the alpha on top + curalpha.draw(screen, bitmap, cliprect, 0, 0); + return 0; +} + + +uint32_t cyberbal_state::screen_update_cyberbal_left(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + return update_one_screen(screen, bitmap, cliprect, *m_mob, *m_playfield, *m_alpha); +} + +uint32_t cyberbal_state::screen_update_cyberbal_right(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + return update_one_screen(screen, bitmap, cliprect, *m_mob2, *m_playfield2, *m_alpha2); +} + +uint32_t cyberbal2p_state::screen_update_cyberbal2p(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + return update_one_screen(screen, bitmap, cliprect, *m_mob, *m_playfield, *m_alpha); +} + + +// machine + /************************************* * * Initialization @@ -61,12 +455,6 @@ void cyberbal_state::video_int_ack_w(uint16_t data) } -void cyberbal_state::machine_start() -{ - cyberbal_base_state::machine_start(); -} - - void cyberbal_state::machine_reset() { cyberbal_base_state::machine_reset(); @@ -76,12 +464,6 @@ void cyberbal_state::machine_reset() } -void cyberbal2p_state::machine_reset() -{ - cyberbal_base_state::machine_reset(); -} - - /************************************* * @@ -129,14 +511,14 @@ void cyberbal_state::main_map(address_map &map) map(0xfd8000, 0xfd9fff).w(m_sac, FUNC(atari_sac_device::main_command_w)).umask16(0xff00); map(0xfe0000, 0xfe0fff).portr("IN0"); map(0xfe1000, 0xfe1fff).portr("IN1"); - map(0xfe8000, 0xfe8fff).ram().w("rpalette", FUNC(palette_device::write16)).share("rpalette"); + map(0xfe8000, 0xfe8fff).ram().w(m_rpalette, FUNC(palette_device::write16)).share("rpalette"); map(0xfec000, 0xfecfff).ram().w("lpalette", FUNC(palette_device::write16)).share("lpalette"); map(0xff0000, 0xff1fff).ram().w(m_playfield2, FUNC(tilemap_device::write16)).share("playfield2"); map(0xff2000, 0xff2fff).ram().w(m_alpha2, FUNC(tilemap_device::write16)).share("alpha2"); map(0xff3000, 0xff37ff).ram().share("mob2"); map(0xff3800, 0xff3fff).ram().share("ff3800"); - map(0xff4000, 0xff5fff).ram().w("playfield", FUNC(tilemap_device::write16)).share("playfield"); - map(0xff6000, 0xff6fff).ram().w("alpha", FUNC(tilemap_device::write16)).share("alpha"); + map(0xff4000, 0xff5fff).ram().w(m_playfield, FUNC(tilemap_device::write16)).share("playfield"); + map(0xff6000, 0xff6fff).ram().w(m_alpha, FUNC(tilemap_device::write16)).share("alpha"); map(0xff7000, 0xff77ff).ram().share("mob"); map(0xff7800, 0xff9fff).ram().share("sharedram"); map(0xffa000, 0xffbfff).readonly().nopw().share("extraram"); @@ -164,14 +546,14 @@ void cyberbal_state::extra_map(address_map &map) map(0xfc0000, 0xfdffff).w(FUNC(cyberbal_state::video_int_ack_w)); map(0xfe0000, 0xfe0fff).portr("IN0"); map(0xfe1000, 0xfe1fff).portr("IN1"); - map(0xfe8000, 0xfe8fff).ram().w("rpalette", FUNC(palette_device::write16)).share("rpalette"); + map(0xfe8000, 0xfe8fff).ram().w(m_rpalette, FUNC(palette_device::write16)).share("rpalette"); map(0xfec000, 0xfecfff).ram().w("lpalette", FUNC(palette_device::write16)).share("lpalette"); map(0xff0000, 0xff1fff).ram().w(m_playfield2, FUNC(tilemap_device::write16)).share("playfield2"); map(0xff2000, 0xff2fff).ram().w(m_alpha2, FUNC(tilemap_device::write16)).share("alpha2"); map(0xff3000, 0xff37ff).ram().share("mob2"); map(0xff3800, 0xff3fff).ram().share("ff3800"); - map(0xff4000, 0xff5fff).ram().w("playfield", FUNC(tilemap_device::write16)).share("playfield"); - map(0xff6000, 0xff6fff).ram().w("alpha", FUNC(tilemap_device::write16)).share("alpha"); + map(0xff4000, 0xff5fff).ram().w(m_playfield, FUNC(tilemap_device::write16)).share("playfield"); + map(0xff6000, 0xff6fff).ram().w(m_alpha, FUNC(tilemap_device::write16)).share("alpha"); map(0xff7000, 0xff77ff).ram().share("mob"); map(0xff7800, 0xff9fff).ram().share("sharedram"); map(0xffa000, 0xffbfff).ram().share("extraram"); @@ -201,8 +583,8 @@ void cyberbal2p_state::cyberbal2p_map(address_map &map) map(0xfd6000, 0xfd6003).w(FUNC(cyberbal2p_state::video_int_ack_w)); map(0xfd8000, 0xfd8003).w("jsa", FUNC(atari_jsa_ii_device::main_command_w)).umask16(0xff00); map(0xfe0000, 0xfe0003).r(FUNC(cyberbal2p_state::sound_state_r)); - map(0xff0000, 0xff1fff).ram().w("playfield", FUNC(tilemap_device::write16)).share("playfield"); - map(0xff2000, 0xff2fff).ram().w("alpha", FUNC(tilemap_device::write16)).share("alpha"); + map(0xff0000, 0xff1fff).ram().w(m_playfield, FUNC(tilemap_device::write16)).share("playfield"); + map(0xff2000, 0xff2fff).ram().w(m_alpha, FUNC(tilemap_device::write16)).share("alpha"); map(0xff3000, 0xff37ff).ram().share("mob"); map(0xff3800, 0xffffff).ram(); } @@ -216,7 +598,7 @@ void cyberbal2p_state::cyberbal2p_map(address_map &map) *************************************/ static INPUT_PORTS_START( cyberbal ) - PORT_START("IN0") /* fe0000 */ + PORT_START("IN0") // fe0000 PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(4) PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(4) PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(4) @@ -234,7 +616,7 @@ static INPUT_PORTS_START( cyberbal ) PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_SERVICE( 0x8000, IP_ACTIVE_LOW ) - PORT_START("IN1") /* fe1000 */ + PORT_START("IN1") // fe1000 PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2) PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2) PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2) @@ -251,13 +633,13 @@ static INPUT_PORTS_START( cyberbal ) PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("lscreen") - PORT_START("IN2") /* fake port for screen switching */ + PORT_START("IN2") // fake port for screen switching PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_UNUSED ) INPUT_PORTS_END static INPUT_PORTS_START( cyberbal2p ) - PORT_START("IN0") /* fc0000 */ + PORT_START("IN0") // fc0000 PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1) PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1) PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1) @@ -266,7 +648,7 @@ static INPUT_PORTS_START( cyberbal2p ) PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_BIT( 0xffc0, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_START("IN1") /* fc2000 */ + PORT_START("IN1") // fc2000 PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2) PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2) PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2) @@ -275,7 +657,7 @@ static INPUT_PORTS_START( cyberbal2p ) PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_BIT( 0xffc0, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_START("IN2") /* fc4000 */ + PORT_START("IN2") // fc4000 PORT_BIT( 0x1fff, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_ATARI_JSA_MAIN_TO_SOUND_READY("jsa") PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_VBLANK("screen") @@ -325,15 +707,15 @@ static const gfx_layout molayout = }; static GFXDECODE_START( gfx_cyberbal ) - GFXDECODE_ENTRY( "gfx2", 0, pfanlayout, 0, 128 ) - GFXDECODE_ENTRY( "gfx1", 0, molayout, 0x600, 16 ) - GFXDECODE_ENTRY( "gfx3", 0, pfanlayout, 0x780, 8 ) + GFXDECODE_ENTRY( "tiles", 0, pfanlayout, 0, 128 ) + GFXDECODE_ENTRY( "sprites", 0, molayout, 0x600, 16 ) + GFXDECODE_ENTRY( "chars", 0, pfanlayout, 0x780, 8 ) GFXDECODE_END static GFXDECODE_START( gfx_interleaved ) - GFXDECODE_ENTRY( "gfx2", 0, pfanlayout_interleaved, 0, 128 ) - GFXDECODE_ENTRY( "gfx1", 0, molayout, 0x600, 16 ) - GFXDECODE_ENTRY( "gfx3", 0, pfanlayout_interleaved, 0x780, 8 ) + GFXDECODE_ENTRY( "tiles", 0, pfanlayout_interleaved, 0, 128 ) + GFXDECODE_ENTRY( "sprites", 0, molayout, 0x600, 16 ) + GFXDECODE_ENTRY( "chars", 0, pfanlayout_interleaved, 0x780, 8 ) GFXDECODE_END @@ -346,11 +728,11 @@ GFXDECODE_END void cyberbal_state::cyberbal(machine_config &config) { - /* basic machine hardware */ - M68000(config, m_maincpu, 14.318181_MHz_XTAL/2); + // basic machine hardware + M68000(config, m_maincpu, 14.318181_MHz_XTAL / 2); m_maincpu->set_addrmap(AS_PROGRAM, &cyberbal_state::main_map); - M68000(config, m_extracpu, 14.318181_MHz_XTAL/2); + M68000(config, m_extracpu, 14.318181_MHz_XTAL / 2); m_extracpu->set_addrmap(AS_PROGRAM, &cyberbal_state::extra_map); config.set_maximum_quantum(attotime::from_hz(600)); @@ -361,23 +743,23 @@ void cyberbal_state::cyberbal(machine_config &config) WATCHDOG_TIMER(config, "watchdog"); - /* video hardware */ + // video hardware GFXDECODE(config, m_gfxdecode, "lpalette", gfx_interleaved); PALETTE(config, "lpalette").set_format(palette_device::IRGB_1555, 2048); PALETTE(config, "rpalette").set_format(palette_device::IRGB_1555, 2048); - TILEMAP(config, m_playfield, "gfxdecode", 2, 16,8, TILEMAP_SCAN_ROWS, 64,64) + TILEMAP(config, m_playfield, "gfxdecode", 2, 16, 8, TILEMAP_SCAN_ROWS, 64, 64) .set_info_callback(FUNC(cyberbal_state::get_playfield_tile_info)); - TILEMAP(config, m_alpha, "gfxdecode", 2, 16,8, TILEMAP_SCAN_ROWS, 64,32, 0) + TILEMAP(config, m_alpha, "gfxdecode", 2, 16, 8, TILEMAP_SCAN_ROWS, 64, 32, 0) .set_info_callback(FUNC(cyberbal_state::get_alpha_tile_info)); ATARI_MOTION_OBJECTS(config, m_mob, 0).set_screen("lscreen"); m_mob->set_config(cyberbal_state::s_mob_config); m_mob->set_gfxdecode("gfxdecode"); - TILEMAP(config, m_playfield2, "gfxdecode", 2, 16,8, TILEMAP_SCAN_ROWS, 64,64) + TILEMAP(config, m_playfield2, "gfxdecode", 2, 16, 8, TILEMAP_SCAN_ROWS, 64, 64) .set_info_callback(FUNC(cyberbal_state::get_playfield2_tile_info)); - TILEMAP(config, m_alpha2, "gfxdecode", 2, 16,8, TILEMAP_SCAN_ROWS, 64,32, 0) + TILEMAP(config, m_alpha2, "gfxdecode", 2, 16, 8, TILEMAP_SCAN_ROWS, 64, 32, 0) .set_info_callback(FUNC(cyberbal_state::get_alpha2_tile_info)); ATARI_MOTION_OBJECTS(config, m_mob2, 0).set_screen("rscreen"); m_mob2->set_config(cyberbal_state::s_mob_config); @@ -385,22 +767,22 @@ void cyberbal_state::cyberbal(machine_config &config) SCREEN(config, m_lscreen, SCREEN_TYPE_RASTER); m_lscreen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK); - /* note: these parameters are from published specs, not derived */ - /* the board uses an SOS-2 chip to generate video signals */ + // note: these parameters are from published specs, not derived + // the board uses an SOS-2 chip to generate video signals m_lscreen->set_raw(14.318181_MHz_XTAL, 456*2, 0, 336*2, 262, 0, 240); m_lscreen->set_screen_update(FUNC(cyberbal_state::screen_update_cyberbal_left)); m_lscreen->set_palette("lpalette"); - m_lscreen->screen_vblank().set(FUNC(cyberbal_state::video_int_write_line)); /* or is it "right?" har, har! */ + m_lscreen->screen_vblank().set(FUNC(cyberbal_state::video_int_write_line)); // or is it "right?" har, har! SCREEN(config, m_rscreen, SCREEN_TYPE_RASTER); m_rscreen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK); - /* note: these parameters are from published specs, not derived */ - /* the board uses an SOS-2 chip to generate video signals */ + // note: these parameters are from published specs, not derived + // the board uses an SOS-2 chip to generate video signals m_rscreen->set_raw(14.318181_MHz_XTAL, 456*2, 0, 336*2, 262, 0, 240); m_rscreen->set_screen_update(FUNC(cyberbal_state::screen_update_cyberbal_right)); m_rscreen->set_palette("rpalette"); - /* sound hardware */ + // sound hardware SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); @@ -424,8 +806,8 @@ void cyberbal_state::cyberbalt(machine_config &config) void cyberbal2p_state::cyberbal2p(machine_config &config) { - /* basic machine hardware */ - M68000(config, m_maincpu, 14.318181_MHz_XTAL/2); + // basic machine hardware + M68000(config, m_maincpu, 14.318181_MHz_XTAL / 2); m_maincpu->set_addrmap(AS_PROGRAM, &cyberbal2p_state::cyberbal2p_map); EEPROM_2816(config, "eeprom").lock_after_write(true); @@ -434,13 +816,13 @@ void cyberbal2p_state::cyberbal2p(machine_config &config) WATCHDOG_TIMER(config, "watchdog"); - /* video hardware */ + // video hardware GFXDECODE(config, "gfxdecode", "palette", gfx_cyberbal); PALETTE(config, "palette").set_format(palette_device::IRGB_1555, 2048); - TILEMAP(config, m_playfield, "gfxdecode", 2, 16,8, TILEMAP_SCAN_ROWS, 64,64) + TILEMAP(config, m_playfield, "gfxdecode", 2, 16, 8, TILEMAP_SCAN_ROWS, 64, 64) .set_info_callback(FUNC(cyberbal2p_state::get_playfield_tile_info)); - TILEMAP(config, m_alpha, "gfxdecode", 2, 16,8, TILEMAP_SCAN_ROWS, 64,32, 0) + TILEMAP(config, m_alpha, "gfxdecode", 2, 16, 8, TILEMAP_SCAN_ROWS, 64, 32, 0) .set_info_callback(FUNC(cyberbal2p_state::get_alpha_tile_info)); ATARI_MOTION_OBJECTS(config, m_mob, 0).set_screen("screen"); m_mob->set_config(cyberbal2p_state::s_mob_config); @@ -448,14 +830,14 @@ void cyberbal2p_state::cyberbal2p(machine_config &config) SCREEN(config, m_screen, SCREEN_TYPE_RASTER); m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK); - /* note: these parameters are from published specs, not derived */ - /* the board uses an SOS-2 chip to generate video signals */ + // note: these parameters are from published specs, not derived + // the board uses an SOS-2 chip to generate video signals m_screen->set_raw(14.318181_MHz_XTAL, 456*2, 0, 336*2, 262, 0, 240); m_screen->set_screen_update(FUNC(cyberbal2p_state::screen_update_cyberbal2p)); m_screen->set_palette("palette"); m_screen->screen_vblank().set(FUNC(cyberbal2p_state::video_int_write_line)); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); ATARI_JSA_II(config, m_jsa, 0); @@ -473,26 +855,26 @@ void cyberbal2p_state::cyberbal2p(machine_config &config) *************************************/ ROM_START( cyberbal ) - ROM_REGION( 0x40000, "maincpu", 0 ) /* 4*64k for 68000 code */ + ROM_REGION( 0x40000, "maincpu", 0 ) // 68000 code ROM_LOAD16_BYTE( "136064-4123.1m", 0x000000, 0x010000, CRC(fb872740) SHA1(15e6721d466fe56d7c97c6801e214b32803a0a0d) ) ROM_LOAD16_BYTE( "136064-4124.1kl", 0x000001, 0x010000, CRC(87babad9) SHA1(acdc6b5976445e203de19eb03697e307fe6da77d) ) - ROM_REGION( 0x10000, "sac:cpu", 0 ) /* 64k for 6502 code */ + ROM_REGION( 0x10000, "sac:cpu", 0 ) // 6502 code ROM_LOAD( "136064-2131.2f", 0x000000, 0x010000, CRC(bd7e3d84) SHA1(f87878042fc79fa3883136b31ac15ddc22c6023c) ) - ROM_REGION( 0x40000, "extra", 0 ) /* 4*64k for 68000 code */ + ROM_REGION( 0x40000, "extra", 0 ) // 68000 code ROM_LOAD16_BYTE( "136064-2127.3cd", 0x000000, 0x010000, CRC(3e5feb1f) SHA1(9f92f496adbdf74e394e0d710d6471b9666ba5e5) ) ROM_LOAD16_BYTE( "136064-2128.1b", 0x000001, 0x010000, CRC(4e642cc3) SHA1(f708b6dd4360380bb10059d66df66b07966210b4) ) ROM_LOAD16_BYTE( "136064-1129.1cd", 0x020000, 0x010000, CRC(db11d2f0) SHA1(da9f49af533cbc732b17699040c7930070a90644) ) ROM_LOAD16_BYTE( "136064-1130.3b", 0x020001, 0x010000, CRC(fd86b8aa) SHA1(46310efed762632ed176a08aaec41e48aad41cc1) ) - ROM_REGION16_BE( 0x40000, "sac:dac", 0 ) /* 256k for 68000 sound code */ + ROM_REGION16_BE( 0x40000, "sac:dac", 0 ) ROM_LOAD16_BYTE( "136064-1132.3cd", 0x000000, 0x010000, CRC(ca5ce8d8) SHA1(69dc83d43d8c9dc7ce3207e70f48fcfc5ddda0cc) ) ROM_LOAD16_BYTE( "136064-1133.1b", 0x000001, 0x010000, CRC(ffeb8746) SHA1(0d8d28b2d997ff3cf01b4ef25b75fa5a69754af4) ) ROM_LOAD16_BYTE( "136064-1134.1cd", 0x020000, 0x010000, CRC(bcbd4c00) SHA1(f0bfcdf0b5491e15872b543e99b834ae384cbf18) ) ROM_LOAD16_BYTE( "136064-1135.3b", 0x020001, 0x010000, CRC(d520f560) SHA1(fb0b8d021458379188c424a343622c46ad74edaa) ) - ROM_REGION( 0x140000, "gfx1", 0 ) + ROM_REGION( 0x140000, "sprites", 0 ) ROM_LOAD( "136064-1105.15a", 0x000000, 0x010000, CRC(e770eb3e) SHA1(e9f9e9e05774005c8be3bbdc19985b59a0081ef4) ) ROM_LOAD( "136064-1109.16a", 0x010000, 0x010000, CRC(40db00da) SHA1(d92d856b06f6ba11621ba7aab3d40653b3c70159) ) ROM_LOAD( "136064-2113.18a", 0x020000, 0x010000, CRC(52bb08fb) SHA1(08caa156923daf444e0caafb2cdff0704c90ef1f) ) @@ -510,13 +892,13 @@ ROM_START( cyberbal ) ROM_LOAD( "136064-2116.13c", 0x110000, 0x010000, CRC(6cf79a67) SHA1(7f3271b575cf0b5033b5b19f0e71fae251040fc6) ) ROM_LOAD( "136064-1120.14c", 0x120000, 0x010000, CRC(40bdf767) SHA1(c57aaea838abeaea1a0060c45c2f33c38a51edb3) ) - ROM_REGION( 0x040000, "gfx2", 0 ) + ROM_REGION( 0x040000, "tiles", 0 ) ROM_LOAD( "136064-1101.9lm", 0x000000, 0x010000, CRC(a64b4da8) SHA1(f68778adb56a1eb964acdbc7e9d690a8a83f170b) ) ROM_LOAD( "136064-1102.8lm", 0x010000, 0x010000, CRC(ca91ec1b) SHA1(970c64e19893503cae796daee63b2d7d08eaf551) ) ROM_LOAD( "136064-1103.11lm", 0x020000, 0x010000, CRC(ee29d1d1) SHA1(2a7fea25728c66ce482de76299413ef5da01beef) ) ROM_LOAD( "136064-1104.10lm", 0x030000, 0x010000, CRC(882649f8) SHA1(fbaea597b6e318234e41df245023643f448a4938) ) - ROM_REGION( 0x020000, "gfx3", 0 ) + ROM_REGION( 0x020000, "chars", 0 ) ROM_LOAD( "136064-1121.15n", 0x000000, 0x010000, CRC(0ca1e3b3) SHA1(d934bc9a1def4404fb86175878404cbb18127a11) ) ROM_LOAD( "136064-1122.16n", 0x010000, 0x010000, CRC(882f4e1c) SHA1(f7517ff03502ff029fb375260a35e45414567433) ) @@ -533,26 +915,26 @@ ROM_END ROM_START( cyberbal2 ) - ROM_REGION( 0x40000, "maincpu", 0 ) /* 4*64k for 68000 code */ + ROM_REGION( 0x40000, "maincpu", 0 ) // 68000 code ROM_LOAD16_BYTE( "136064-2123.1m", 0x000000, 0x010000, CRC(502676e8) SHA1(c0f1f1ce50d3df21cb81244268faef6c303cdfab) ) ROM_LOAD16_BYTE( "136064-2124.1kl", 0x000001, 0x010000, CRC(30f55915) SHA1(ab93ec46f282ab9a0cd47c989537a7e036975e3f) ) - ROM_REGION( 0x10000, "sac:cpu", 0 ) /* 64k for 6502 code */ + ROM_REGION( 0x10000, "sac:cpu", 0 ) // 6502 code ROM_LOAD( "136064-2131.2f", 0x000000, 0x010000, CRC(bd7e3d84) SHA1(f87878042fc79fa3883136b31ac15ddc22c6023c) ) - ROM_REGION( 0x40000, "extra", 0 ) /* 4*64k for 68000 code */ + ROM_REGION( 0x40000, "extra", 0 ) // 68000 code ROM_LOAD16_BYTE( "136064-2127.3cd", 0x000000, 0x010000, CRC(3e5feb1f) SHA1(9f92f496adbdf74e394e0d710d6471b9666ba5e5) ) ROM_LOAD16_BYTE( "136064-2128.1b", 0x000001, 0x010000, CRC(4e642cc3) SHA1(f708b6dd4360380bb10059d66df66b07966210b4) ) ROM_LOAD16_BYTE( "136064-1129.1cd", 0x020000, 0x010000, CRC(db11d2f0) SHA1(da9f49af533cbc732b17699040c7930070a90644) ) ROM_LOAD16_BYTE( "136064-1130.3b", 0x020001, 0x010000, CRC(fd86b8aa) SHA1(46310efed762632ed176a08aaec41e48aad41cc1) ) - ROM_REGION16_BE( 0x40000, "sac:dac", 0 ) /* 256k for 68000 sound code */ + ROM_REGION16_BE( 0x40000, "sac:dac", 0 ) ROM_LOAD16_BYTE( "136064-1132.3cd", 0x000000, 0x010000, CRC(ca5ce8d8) SHA1(69dc83d43d8c9dc7ce3207e70f48fcfc5ddda0cc) ) ROM_LOAD16_BYTE( "136064-1133.1b", 0x000001, 0x010000, CRC(ffeb8746) SHA1(0d8d28b2d997ff3cf01b4ef25b75fa5a69754af4) ) ROM_LOAD16_BYTE( "136064-1134.1cd", 0x020000, 0x010000, CRC(bcbd4c00) SHA1(f0bfcdf0b5491e15872b543e99b834ae384cbf18) ) ROM_LOAD16_BYTE( "136064-1135.3b", 0x020001, 0x010000, CRC(d520f560) SHA1(fb0b8d021458379188c424a343622c46ad74edaa) ) - ROM_REGION( 0x140000, "gfx1", 0 ) + ROM_REGION( 0x140000, "sprites", 0 ) ROM_LOAD( "136064-1105.15a", 0x000000, 0x010000, CRC(e770eb3e) SHA1(e9f9e9e05774005c8be3bbdc19985b59a0081ef4) ) ROM_LOAD( "136064-1109.16a", 0x010000, 0x010000, CRC(40db00da) SHA1(d92d856b06f6ba11621ba7aab3d40653b3c70159) ) ROM_LOAD( "136064-2113.18a", 0x020000, 0x010000, CRC(52bb08fb) SHA1(08caa156923daf444e0caafb2cdff0704c90ef1f) ) @@ -570,13 +952,13 @@ ROM_START( cyberbal2 ) ROM_LOAD( "136064-2116.13c", 0x110000, 0x010000, CRC(6cf79a67) SHA1(7f3271b575cf0b5033b5b19f0e71fae251040fc6) ) ROM_LOAD( "136064-1120.14c", 0x120000, 0x010000, CRC(40bdf767) SHA1(c57aaea838abeaea1a0060c45c2f33c38a51edb3) ) - ROM_REGION( 0x040000, "gfx2", 0 ) + ROM_REGION( 0x040000, "tiles", 0 ) ROM_LOAD( "136064-1101.9lm", 0x000000, 0x010000, CRC(a64b4da8) SHA1(f68778adb56a1eb964acdbc7e9d690a8a83f170b) ) ROM_LOAD( "136064-1102.8lm", 0x010000, 0x010000, CRC(ca91ec1b) SHA1(970c64e19893503cae796daee63b2d7d08eaf551) ) ROM_LOAD( "136064-1103.11lm", 0x020000, 0x010000, CRC(ee29d1d1) SHA1(2a7fea25728c66ce482de76299413ef5da01beef) ) ROM_LOAD( "136064-1104.10lm", 0x030000, 0x010000, CRC(882649f8) SHA1(fbaea597b6e318234e41df245023643f448a4938) ) - ROM_REGION( 0x020000, "gfx3", 0 ) + ROM_REGION( 0x020000, "chars", 0 ) ROM_LOAD( "136064-1121.15n", 0x000000, 0x010000, CRC(0ca1e3b3) SHA1(d934bc9a1def4404fb86175878404cbb18127a11) ) ROM_LOAD( "136064-1122.16n", 0x010000, 0x010000, CRC(882f4e1c) SHA1(f7517ff03502ff029fb375260a35e45414567433) ) @@ -585,27 +967,27 @@ ROM_START( cyberbal2 ) ROM_END -ROM_START( cyberbal1 ) /* loose chips from upgrade, cannot verify any rev 2 graphics chips as being correct for this set */ - ROM_REGION( 0x40000, "maincpu", 0 ) /* 4*64k for 68000 code */ +ROM_START( cyberbal1 ) // loose chips from upgrade, cannot verify any rev 2 graphics chips as being correct for this set + ROM_REGION( 0x40000, "maincpu", 0 ) // 68000 code ROM_LOAD16_BYTE( "136064-1123.1m", 0x000000, 0x010000, CRC(ba01fcdc) SHA1(d0283d68450cb758942df20762e12442687eab78) ) ROM_LOAD16_BYTE( "136064-1124.1kl", 0x000001, 0x010000, CRC(d0617f65) SHA1(7c641a2c709ecf40f6977abd94f6320e13faf61b) ) - ROM_REGION( 0x10000, "sac:cpu", 0 ) /* 64k for 6502 code */ - ROM_LOAD( "136064-2131.2f", 0x000000, 0x010000, CRC(bd7e3d84) SHA1(f87878042fc79fa3883136b31ac15ddc22c6023c) ) /* this rev 2 chip was among the loose rev 1 chips */ + ROM_REGION( 0x10000, "sac:cpu", 0 ) // 6502 code + ROM_LOAD( "136064-2131.2f", 0x000000, 0x010000, CRC(bd7e3d84) SHA1(f87878042fc79fa3883136b31ac15ddc22c6023c) ) // this rev 2 chip was among the loose rev 1 chips - ROM_REGION( 0x40000, "extra", 0 ) /* 4*64k for 68000 code */ + ROM_REGION( 0x40000, "extra", 0 ) // 68000 code ROM_LOAD16_BYTE( "136064-1127.3cd", 0x000000, 0x010000, CRC(f8d60334) SHA1(e54dabe71a9b943fac408788b19e7add207c6740) ) ROM_LOAD16_BYTE( "136064-1128.1b", 0x000001, 0x010000, CRC(7adb1d68) SHA1(a8f4d7d7423791c0c0bd6dfbe8d23a1b01b91aac) ) ROM_LOAD16_BYTE( "136064-1129.1cd", 0x020000, 0x010000, CRC(db11d2f0) SHA1(da9f49af533cbc732b17699040c7930070a90644) ) ROM_LOAD16_BYTE( "136064-1130.3b", 0x020001, 0x010000, CRC(fd86b8aa) SHA1(46310efed762632ed176a08aaec41e48aad41cc1) ) - ROM_REGION16_BE( 0x40000, "sac:dac", 0 ) /* 256k for 68000 sound code */ + ROM_REGION16_BE( 0x40000, "sac:dac", 0 ) ROM_LOAD16_BYTE( "136064-1132.3cd", 0x000000, 0x010000, CRC(ca5ce8d8) SHA1(69dc83d43d8c9dc7ce3207e70f48fcfc5ddda0cc) ) ROM_LOAD16_BYTE( "136064-1133.1b", 0x000001, 0x010000, CRC(ffeb8746) SHA1(0d8d28b2d997ff3cf01b4ef25b75fa5a69754af4) ) ROM_LOAD16_BYTE( "136064-1134.1cd", 0x020000, 0x010000, CRC(bcbd4c00) SHA1(f0bfcdf0b5491e15872b543e99b834ae384cbf18) ) ROM_LOAD16_BYTE( "136064-1135.3b", 0x020001, 0x010000, CRC(d520f560) SHA1(fb0b8d021458379188c424a343622c46ad74edaa) ) - ROM_REGION( 0x140000, "gfx1", 0 ) + ROM_REGION( 0x140000, "sprites", 0 ) ROM_LOAD( "136064-1105.15a", 0x000000, 0x010000, CRC(e770eb3e) SHA1(e9f9e9e05774005c8be3bbdc19985b59a0081ef4) ) ROM_LOAD( "136064-1109.16a", 0x010000, 0x010000, CRC(40db00da) SHA1(d92d856b06f6ba11621ba7aab3d40653b3c70159) ) ROM_LOAD( "136064-2113.18a", 0x020000, 0x010000, CRC(52bb08fb) SHA1(08caa156923daf444e0caafb2cdff0704c90ef1f) ) @@ -623,13 +1005,13 @@ ROM_START( cyberbal1 ) /* loose chips from upgrade, cannot verify any rev 2 grap ROM_LOAD( "136064-2116.13c", 0x110000, 0x010000, CRC(6cf79a67) SHA1(7f3271b575cf0b5033b5b19f0e71fae251040fc6) ) ROM_LOAD( "136064-1120.14c", 0x120000, 0x010000, CRC(40bdf767) SHA1(c57aaea838abeaea1a0060c45c2f33c38a51edb3) ) - ROM_REGION( 0x040000, "gfx2", 0 ) + ROM_REGION( 0x040000, "tiles", 0 ) ROM_LOAD( "136064-1101.9lm", 0x000000, 0x010000, CRC(a64b4da8) SHA1(f68778adb56a1eb964acdbc7e9d690a8a83f170b) ) ROM_LOAD( "136064-1102.8lm", 0x010000, 0x010000, CRC(ca91ec1b) SHA1(970c64e19893503cae796daee63b2d7d08eaf551) ) ROM_LOAD( "136064-1103.11lm", 0x020000, 0x010000, CRC(ee29d1d1) SHA1(2a7fea25728c66ce482de76299413ef5da01beef) ) ROM_LOAD( "136064-1104.10lm", 0x030000, 0x010000, CRC(882649f8) SHA1(fbaea597b6e318234e41df245023643f448a4938) ) - ROM_REGION( 0x020000, "gfx3", 0 ) + ROM_REGION( 0x020000, "chars", 0 ) ROM_LOAD( "136064-1121.15n", 0x000000, 0x010000, CRC(0ca1e3b3) SHA1(d934bc9a1def4404fb86175878404cbb18127a11) ) ROM_LOAD( "136064-1122.16n", 0x010000, 0x010000, CRC(882f4e1c) SHA1(f7517ff03502ff029fb375260a35e45414567433) ) @@ -639,26 +1021,26 @@ ROM_END ROM_START( cyberbalp ) - ROM_REGION( 0x40000, "maincpu", 0 ) /* 4*64k for 68000 code */ + ROM_REGION( 0x40000, "maincpu", 0 ) // 68000 code ROM_LOAD16_BYTE( "136064-0123.1m", 0x000000, 0x010000, CRC(59bac810) SHA1(d4742b2b554c2ad62a2ea7152db3f06a06cddd67) ) ROM_LOAD16_BYTE( "136064-0124.1kl", 0x000001, 0x010000, CRC(e48e6dd3) SHA1(4d45bc66c0a3eb1174db7f19c5dee54dabad68f3) ) - ROM_REGION( 0x10000, "sac:cpu", 0 ) /* 64k for 6502 code */ + ROM_REGION( 0x10000, "sac:cpu", 0 ) // 6502 code ROM_LOAD( "136064-0131.2f", 0x000000, 0x010000, CRC(c72b71ce) SHA1(6d3d8f437cf55ccaaa4490daa69f402902944686) ) - ROM_REGION( 0x40000, "extra", 0 ) /* 4*64k for 68000 code */ + ROM_REGION( 0x40000, "extra", 0 ) // 68000 code ROM_LOAD16_BYTE( "136064-0127.3cd", 0x000000, 0x010000, CRC(37ad3420) SHA1(e9c1ea59f5f9a133822a49027b4abf02af855ca2) ) ROM_LOAD16_BYTE( "136064-0128.1b", 0x000001, 0x010000, CRC(d89aa8af) SHA1(b9faca1a775c1d699335a5ac0e1d25e8370c02a7) ) ROM_LOAD16_BYTE( "136064-1129.1cd", 0x020000, 0x010000, CRC(db11d2f0) SHA1(da9f49af533cbc732b17699040c7930070a90644) ) ROM_LOAD16_BYTE( "136064-1130.3b", 0x020001, 0x010000, CRC(fd86b8aa) SHA1(46310efed762632ed176a08aaec41e48aad41cc1) ) - ROM_REGION16_BE( 0x40000, "sac:dac", 0 ) /* 256k for 68000 sound code */ + ROM_REGION16_BE( 0x40000, "sac:dac", 0 ) ROM_LOAD16_BYTE( "136064-0132.3cd", 0x000000, 0x010000, CRC(392a442c) SHA1(e108456167f433808b452edb3351d283b5cf7a50) ) ROM_LOAD16_BYTE( "136064-0133.1b", 0x000001, 0x010000, CRC(a0a11cf9) SHA1(b28a379cb49d051b6ccff877255409e1231d3030) ) ROM_LOAD16_BYTE( "136064-1134.1cd", 0x020000, 0x010000, CRC(bcbd4c00) SHA1(f0bfcdf0b5491e15872b543e99b834ae384cbf18) ) ROM_LOAD16_BYTE( "136064-1135.3b", 0x020001, 0x010000, CRC(d520f560) SHA1(fb0b8d021458379188c424a343622c46ad74edaa) ) - ROM_REGION( 0x140000, "gfx1", 0 ) + ROM_REGION( 0x140000, "sprites", 0 ) ROM_LOAD( "136064-1105.15a", 0x000000, 0x010000, CRC(e770eb3e) SHA1(e9f9e9e05774005c8be3bbdc19985b59a0081ef4) ) ROM_LOAD( "136064-1109.16a", 0x010000, 0x010000, CRC(40db00da) SHA1(d92d856b06f6ba11621ba7aab3d40653b3c70159) ) ROM_LOAD( "136064-2113.18a", 0x020000, 0x010000, CRC(52bb08fb) SHA1(08caa156923daf444e0caafb2cdff0704c90ef1f) ) @@ -676,13 +1058,13 @@ ROM_START( cyberbalp ) ROM_LOAD( "136064-2116.13c", 0x110000, 0x010000, CRC(6cf79a67) SHA1(7f3271b575cf0b5033b5b19f0e71fae251040fc6) ) ROM_LOAD( "136064-1120.14c", 0x120000, 0x010000, CRC(40bdf767) SHA1(c57aaea838abeaea1a0060c45c2f33c38a51edb3) ) - ROM_REGION( 0x040000, "gfx2", 0 ) + ROM_REGION( 0x040000, "tiles", 0 ) ROM_LOAD( "136064-1101.9lm", 0x000000, 0x010000, CRC(a64b4da8) SHA1(f68778adb56a1eb964acdbc7e9d690a8a83f170b) ) ROM_LOAD( "136064-1102.8lm", 0x010000, 0x010000, CRC(ca91ec1b) SHA1(970c64e19893503cae796daee63b2d7d08eaf551) ) ROM_LOAD( "136064-1103.11lm", 0x020000, 0x010000, CRC(ee29d1d1) SHA1(2a7fea25728c66ce482de76299413ef5da01beef) ) ROM_LOAD( "136064-1104.10lm", 0x030000, 0x010000, CRC(882649f8) SHA1(fbaea597b6e318234e41df245023643f448a4938) ) - ROM_REGION( 0x020000, "gfx3", 0 ) + ROM_REGION( 0x020000, "chars", 0 ) ROM_LOAD( "136064-1121.15n", 0x000000, 0x010000, CRC(0ca1e3b3) SHA1(d934bc9a1def4404fb86175878404cbb18127a11) ) ROM_LOAD( "136064-1122.16n", 0x010000, 0x010000, CRC(882f4e1c) SHA1(f7517ff03502ff029fb375260a35e45414567433) ) @@ -692,7 +1074,7 @@ ROM_END ROM_START( cyberbal2p ) - ROM_REGION( 0x80000, "maincpu", 0 ) /* 8*64k for 68000 code */ + ROM_REGION( 0x80000, "maincpu", 0 ) // 68000 code ROM_LOAD16_BYTE( "136071-4019.10c", 0x000000, 0x010000, CRC(20c6b09c) SHA1(b12f9247621fe0242171140256b7b92c996dcb19) ) ROM_LOAD16_BYTE( "136071-4020.10d", 0x000001, 0x010000, CRC(eaa6c524) SHA1(0bc48dca1f10fbb3dec441d06f447637b6c70356) ) ROM_LOAD16_BYTE( "136071-4021.21c", 0x020000, 0x010000, CRC(89ffa885) SHA1(d276209fd72c753d23571464e51d701a54cc3e0e) ) @@ -702,10 +1084,10 @@ ROM_START( cyberbal2p ) ROM_LOAD16_BYTE( "136071-1025.27c", 0x060000, 0x010000, CRC(95ff68c6) SHA1(43f716a4c44fe1a38fcc6e2600bac948bb603504) ) ROM_LOAD16_BYTE( "136071-1026.27d", 0x060001, 0x010000, CRC(f61c4898) SHA1(9e4a14eac6d197f63c3392af3d804e81c034cb09) ) - ROM_REGION( 0x10000, "jsa:cpu", 0 ) /* 64k for 6502 code */ + ROM_REGION( 0x10000, "jsa:cpu", 0 ) // 6502 code ROM_LOAD( "136071-1042.1b", 0x00000, 0x10000, CRC(e63cf125) SHA1(449880f561660ba67ac2d7f8ce6333768e0ae0be) ) - ROM_REGION( 0x140000, "gfx1", 0 ) + ROM_REGION( 0x140000, "sprites", 0 ) ROM_LOAD( "136071-1001.55l", 0x000000, 0x020000, CRC(586ba107) SHA1(f15d4489f5834ea5fe695f43cb9d1c2401179870) ) ROM_LOAD( "136071-1005.43l", 0x020000, 0x020000, CRC(a53e6248) SHA1(4f2466c6af74a5498468801b1de7adfc34873d5d) ) ROM_LOAD( "136071-1032.18a", 0x040000, 0x010000, CRC(131f52a0) SHA1(fa50ea82d26c36dd6a135e22dee509676d1dfe86) ) @@ -719,17 +1101,17 @@ ROM_START( cyberbal2p ) ROM_LOAD( "136071-1008.78n", 0x110000, 0x020000, CRC(78525bbb) SHA1(98ece6c0672cb60f818b8005c76cc4ae1d24b104) ) ROM_LOAD( "136071-1035.13c", 0x130000, 0x010000, CRC(1be3e5c8) SHA1(1a4d0e0d53b902c28977c8598e363c7b61c9c1c8) ) - ROM_REGION( 0x040000, "gfx2", 0 ) + ROM_REGION( 0x040000, "tiles", 0 ) ROM_LOAD( "136071-1013.10k", 0x000000, 0x010000, CRC(cdf6e3d6) SHA1(476644065b82e2ea553dfb51844c0bbf3313c481) ) ROM_LOAD( "136071-1014.16f", 0x010000, 0x010000, CRC(ec2fef3e) SHA1(07ed472fa1723ebf82d608667df70511a50dca3e) ) ROM_LOAD( "136071-1015.16k", 0x020000, 0x010000, CRC(e866848f) SHA1(35b438dcc1947151a7aafe919b9adf33d7a8fb77) ) ROM_LOAD( "136071-1016.10f", 0x030000, 0x010000, CRC(9b9a393c) SHA1(db4ceb33756bab0ac7bea30e6c7345d06a0f4aa2) ) - ROM_REGION( 0x020000, "gfx3", 0 ) + ROM_REGION( 0x020000, "chars", 0 ) ROM_LOAD( "136071-1017.32n", 0x000000, 0x010000, CRC(a4c116f9) SHA1(fc7becef35306ef99ffbd0cd9202759352eb6cbe) ) ROM_LOAD( "136071-1018.32l", 0x010000, 0x010000, CRC(e25d7847) SHA1(3821c62f9bdc04eb774c2210a84e26b36f2e163d) ) - ROM_REGION( 0x40000, "jsa:oki1", 0 ) /* 256k for ADPCM samples */ + ROM_REGION( 0x40000, "jsa:oki1", 0 ) ROM_LOAD( "136071-1043.7k", 0x000000, 0x010000, CRC(94f24575) SHA1(b93b326e15cd328362ce409b7c0cc42b8a28c701) ) ROM_LOAD( "136071-1044.7j", 0x010000, 0x010000, CRC(87208e1e) SHA1(3647867ddc36df7633ed740c0b9365a979ef5621) ) ROM_LOAD( "136071-1045.7e", 0x020000, 0x010000, CRC(f82558b9) SHA1(afbecccc6203db9bdcf60638e0f4e95040d7aaf2) ) @@ -741,7 +1123,7 @@ ROM_END ROM_START( cyberbal2p3 ) - ROM_REGION( 0x80000, "maincpu", 0 ) /* 8*64k for 68000 code */ + ROM_REGION( 0x80000, "maincpu", 0 ) // 68000 code ROM_LOAD16_BYTE( "136071-3019.10c", 0x000000, 0x010000, CRC(029f8cb6) SHA1(528ab6357592313b41964102c14b90862c05f248) ) ROM_LOAD16_BYTE( "136071-3020.10d", 0x000001, 0x010000, CRC(1871b344) SHA1(2b6f2f4760af0f0e1e0b6cb34017dcdca7635e60) ) ROM_LOAD16_BYTE( "136071-3021.21c", 0x020000, 0x010000, CRC(fd7ebead) SHA1(4118c865897c7a9f73de200ea9766fe190547606) ) @@ -751,10 +1133,10 @@ ROM_START( cyberbal2p3 ) ROM_LOAD16_BYTE( "136071-1025.27c", 0x060000, 0x010000, CRC(95ff68c6) SHA1(43f716a4c44fe1a38fcc6e2600bac948bb603504) ) ROM_LOAD16_BYTE( "136071-1026.27d", 0x060001, 0x010000, CRC(f61c4898) SHA1(9e4a14eac6d197f63c3392af3d804e81c034cb09) ) - ROM_REGION( 0x10000, "jsa:cpu", 0 ) /* 64k for 6502 code */ + ROM_REGION( 0x10000, "jsa:cpu", 0 ) // 6502 code ROM_LOAD( "136071-1042.1b", 0x00000, 0x10000, CRC(e63cf125) SHA1(449880f561660ba67ac2d7f8ce6333768e0ae0be) ) - ROM_REGION( 0x140000, "gfx1", 0 ) + ROM_REGION( 0x140000, "sprites", 0 ) ROM_LOAD( "136071-1001.55l", 0x000000, 0x020000, CRC(586ba107) SHA1(f15d4489f5834ea5fe695f43cb9d1c2401179870) ) ROM_LOAD( "136071-1005.43l", 0x020000, 0x020000, CRC(a53e6248) SHA1(4f2466c6af74a5498468801b1de7adfc34873d5d) ) ROM_LOAD( "136071-1032.18a", 0x040000, 0x010000, CRC(131f52a0) SHA1(fa50ea82d26c36dd6a135e22dee509676d1dfe86) ) @@ -768,17 +1150,17 @@ ROM_START( cyberbal2p3 ) ROM_LOAD( "136071-1008.78n", 0x110000, 0x020000, CRC(78525bbb) SHA1(98ece6c0672cb60f818b8005c76cc4ae1d24b104) ) ROM_LOAD( "136071-1035.13c", 0x130000, 0x010000, CRC(1be3e5c8) SHA1(1a4d0e0d53b902c28977c8598e363c7b61c9c1c8) ) - ROM_REGION( 0x040000, "gfx2", 0 ) + ROM_REGION( 0x040000, "tiles", 0 ) ROM_LOAD( "136071-1013.10k", 0x000000, 0x010000, CRC(cdf6e3d6) SHA1(476644065b82e2ea553dfb51844c0bbf3313c481) ) ROM_LOAD( "136071-1014.16f", 0x010000, 0x010000, CRC(ec2fef3e) SHA1(07ed472fa1723ebf82d608667df70511a50dca3e) ) ROM_LOAD( "136071-1015.16k", 0x020000, 0x010000, CRC(e866848f) SHA1(35b438dcc1947151a7aafe919b9adf33d7a8fb77) ) ROM_LOAD( "136071-1016.10f", 0x030000, 0x010000, CRC(9b9a393c) SHA1(db4ceb33756bab0ac7bea30e6c7345d06a0f4aa2) ) - ROM_REGION( 0x020000, "gfx3", 0 ) + ROM_REGION( 0x020000, "chars", 0 ) ROM_LOAD( "136071-1017.32n", 0x000000, 0x010000, CRC(a4c116f9) SHA1(fc7becef35306ef99ffbd0cd9202759352eb6cbe) ) ROM_LOAD( "136071-1018.32l", 0x010000, 0x010000, CRC(e25d7847) SHA1(3821c62f9bdc04eb774c2210a84e26b36f2e163d) ) - ROM_REGION( 0x40000, "jsa:oki1", 0 ) /* 256k for ADPCM samples */ + ROM_REGION( 0x40000, "jsa:oki1", 0 ) ROM_LOAD( "136071-1043.7k", 0x000000, 0x010000, CRC(94f24575) SHA1(b93b326e15cd328362ce409b7c0cc42b8a28c701) ) ROM_LOAD( "136071-1044.7j", 0x010000, 0x010000, CRC(87208e1e) SHA1(3647867ddc36df7633ed740c0b9365a979ef5621) ) ROM_LOAD( "136071-1045.7e", 0x020000, 0x010000, CRC(f82558b9) SHA1(afbecccc6203db9bdcf60638e0f4e95040d7aaf2) ) @@ -790,7 +1172,7 @@ ROM_END ROM_START( cyberbal2p2 ) - ROM_REGION( 0x80000, "maincpu", 0 ) /* 8*64k for 68000 code */ + ROM_REGION( 0x80000, "maincpu", 0 ) // 68000 code ROM_LOAD16_BYTE( "136071-2019.10c", 0x000000, 0x010000, CRC(acb1e18b) SHA1(37a80f0c8d8b46ebb9660c7f038fc874d4817e93) ) ROM_LOAD16_BYTE( "136071-2020.10d", 0x000001, 0x010000, CRC(fd6ec2fd) SHA1(8b871e5e66acd26b8301ac35e3f42fba5b9fce2c) ) ROM_LOAD16_BYTE( "136071-1021.21c", 0x020000, 0x010000, CRC(9b6cecc3) SHA1(14291302ca6a35fc4c24d9f7d6a4ef7c88a95e5a) ) @@ -800,10 +1182,10 @@ ROM_START( cyberbal2p2 ) ROM_LOAD16_BYTE( "136071-1025.27c", 0x060000, 0x010000, CRC(95ff68c6) SHA1(43f716a4c44fe1a38fcc6e2600bac948bb603504) ) ROM_LOAD16_BYTE( "136071-1026.27d", 0x060001, 0x010000, CRC(f61c4898) SHA1(9e4a14eac6d197f63c3392af3d804e81c034cb09) ) - ROM_REGION( 0x10000, "jsa:cpu", 0 ) /* 64k for 6502 code */ + ROM_REGION( 0x10000, "jsa:cpu", 0 ) // 6502 code ROM_LOAD( "136071-1042.1b", 0x00000, 0x10000, CRC(e63cf125) SHA1(449880f561660ba67ac2d7f8ce6333768e0ae0be) ) - ROM_REGION( 0x140000, "gfx1", 0 ) + ROM_REGION( 0x140000, "sprites", 0 ) ROM_LOAD( "136071-1001.55l", 0x000000, 0x020000, CRC(586ba107) SHA1(f15d4489f5834ea5fe695f43cb9d1c2401179870) ) ROM_LOAD( "136071-1005.43l", 0x020000, 0x020000, CRC(a53e6248) SHA1(4f2466c6af74a5498468801b1de7adfc34873d5d) ) ROM_LOAD( "136071-1032.18a", 0x040000, 0x010000, CRC(131f52a0) SHA1(fa50ea82d26c36dd6a135e22dee509676d1dfe86) ) @@ -817,17 +1199,17 @@ ROM_START( cyberbal2p2 ) ROM_LOAD( "136071-1008.78n", 0x110000, 0x020000, CRC(78525bbb) SHA1(98ece6c0672cb60f818b8005c76cc4ae1d24b104) ) ROM_LOAD( "136071-1035.13c", 0x130000, 0x010000, CRC(1be3e5c8) SHA1(1a4d0e0d53b902c28977c8598e363c7b61c9c1c8) ) - ROM_REGION( 0x040000, "gfx2", 0 ) + ROM_REGION( 0x040000, "tiles", 0 ) ROM_LOAD( "136071-1013.10k", 0x000000, 0x010000, CRC(cdf6e3d6) SHA1(476644065b82e2ea553dfb51844c0bbf3313c481) ) ROM_LOAD( "136071-1014.16f", 0x010000, 0x010000, CRC(ec2fef3e) SHA1(07ed472fa1723ebf82d608667df70511a50dca3e) ) ROM_LOAD( "136071-1015.16k", 0x020000, 0x010000, CRC(e866848f) SHA1(35b438dcc1947151a7aafe919b9adf33d7a8fb77) ) ROM_LOAD( "136071-1016.10f", 0x030000, 0x010000, CRC(9b9a393c) SHA1(db4ceb33756bab0ac7bea30e6c7345d06a0f4aa2) ) - ROM_REGION( 0x020000, "gfx3", 0 ) + ROM_REGION( 0x020000, "chars", 0 ) ROM_LOAD( "136071-1017.32n", 0x000000, 0x010000, CRC(a4c116f9) SHA1(fc7becef35306ef99ffbd0cd9202759352eb6cbe) ) ROM_LOAD( "136071-1018.32l", 0x010000, 0x010000, CRC(e25d7847) SHA1(3821c62f9bdc04eb774c2210a84e26b36f2e163d) ) - ROM_REGION( 0x40000, "jsa:oki1", 0 ) /* 256k for ADPCM samples */ + ROM_REGION( 0x40000, "jsa:oki1", 0 ) ROM_LOAD( "136071-1043.7k", 0x000000, 0x010000, CRC(94f24575) SHA1(b93b326e15cd328362ce409b7c0cc42b8a28c701) ) ROM_LOAD( "136071-1044.7j", 0x010000, 0x010000, CRC(87208e1e) SHA1(3647867ddc36df7633ed740c0b9365a979ef5621) ) ROM_LOAD( "136071-1045.7e", 0x020000, 0x010000, CRC(f82558b9) SHA1(afbecccc6203db9bdcf60638e0f4e95040d7aaf2) ) @@ -839,7 +1221,7 @@ ROM_END ROM_START( cyberbal2p1 ) - ROM_REGION( 0x80000, "maincpu", 0 ) /* 8*64k for 68000 code */ + ROM_REGION( 0x80000, "maincpu", 0 ) // 68000 code ROM_LOAD16_BYTE( "136071-1019.10c", 0x000000, 0x010000, CRC(37f5f8ba) SHA1(80552b41d7d1c3044ccd1cbfbac6051447915d41) ) ROM_LOAD16_BYTE( "136071-1020.10d", 0x000001, 0x010000, CRC(cae4faa2) SHA1(e3282416b1d0dccd52dd8763a02647470dd37114) ) ROM_LOAD16_BYTE( "136071-1021.21c", 0x020000, 0x010000, CRC(9b6cecc3) SHA1(14291302ca6a35fc4c24d9f7d6a4ef7c88a95e5a) ) @@ -849,10 +1231,10 @@ ROM_START( cyberbal2p1 ) ROM_LOAD16_BYTE( "136071-1025.27c", 0x060000, 0x010000, CRC(95ff68c6) SHA1(43f716a4c44fe1a38fcc6e2600bac948bb603504) ) ROM_LOAD16_BYTE( "136071-1026.27d", 0x060001, 0x010000, CRC(f61c4898) SHA1(9e4a14eac6d197f63c3392af3d804e81c034cb09) ) - ROM_REGION( 0x10000, "jsa:cpu", 0 ) /* 64k for 6502 code */ + ROM_REGION( 0x10000, "jsa:cpu", 0 ) // 6502 code ROM_LOAD( "136071-1042.1b", 0x00000, 0x10000, CRC(e63cf125) SHA1(449880f561660ba67ac2d7f8ce6333768e0ae0be) ) - ROM_REGION( 0x140000, "gfx1", 0 ) + ROM_REGION( 0x140000, "sprites", 0 ) ROM_LOAD( "136071-1001.55l", 0x000000, 0x020000, CRC(586ba107) SHA1(f15d4489f5834ea5fe695f43cb9d1c2401179870) ) ROM_LOAD( "136071-1005.43l", 0x020000, 0x020000, CRC(a53e6248) SHA1(4f2466c6af74a5498468801b1de7adfc34873d5d) ) ROM_LOAD( "136071-1032.18a", 0x040000, 0x010000, CRC(131f52a0) SHA1(fa50ea82d26c36dd6a135e22dee509676d1dfe86) ) @@ -866,17 +1248,17 @@ ROM_START( cyberbal2p1 ) ROM_LOAD( "136071-1008.78n", 0x110000, 0x020000, CRC(78525bbb) SHA1(98ece6c0672cb60f818b8005c76cc4ae1d24b104) ) ROM_LOAD( "136071-1035.13c", 0x130000, 0x010000, CRC(1be3e5c8) SHA1(1a4d0e0d53b902c28977c8598e363c7b61c9c1c8) ) - ROM_REGION( 0x040000, "gfx2", 0 ) + ROM_REGION( 0x040000, "tiles", 0 ) ROM_LOAD( "136071-1013.10k", 0x000000, 0x010000, CRC(cdf6e3d6) SHA1(476644065b82e2ea553dfb51844c0bbf3313c481) ) ROM_LOAD( "136071-1014.16f", 0x010000, 0x010000, CRC(ec2fef3e) SHA1(07ed472fa1723ebf82d608667df70511a50dca3e) ) ROM_LOAD( "136071-1015.16k", 0x020000, 0x010000, CRC(e866848f) SHA1(35b438dcc1947151a7aafe919b9adf33d7a8fb77) ) ROM_LOAD( "136071-1016.10f", 0x030000, 0x010000, CRC(9b9a393c) SHA1(db4ceb33756bab0ac7bea30e6c7345d06a0f4aa2) ) - ROM_REGION( 0x020000, "gfx3", 0 ) + ROM_REGION( 0x020000, "chars", 0 ) ROM_LOAD( "136071-1017.32n", 0x000000, 0x010000, CRC(a4c116f9) SHA1(fc7becef35306ef99ffbd0cd9202759352eb6cbe) ) ROM_LOAD( "136071-1018.32l", 0x010000, 0x010000, CRC(e25d7847) SHA1(3821c62f9bdc04eb774c2210a84e26b36f2e163d) ) - ROM_REGION( 0x40000, "jsa:oki1", 0 ) /* 256k for ADPCM samples */ + ROM_REGION( 0x40000, "jsa:oki1", 0 ) ROM_LOAD( "136071-1043.7k", 0x000000, 0x010000, CRC(94f24575) SHA1(b93b326e15cd328362ce409b7c0cc42b8a28c701) ) ROM_LOAD( "136071-1044.7j", 0x010000, 0x010000, CRC(87208e1e) SHA1(3647867ddc36df7633ed740c0b9365a979ef5621) ) ROM_LOAD( "136071-1045.7e", 0x020000, 0x010000, CRC(f82558b9) SHA1(afbecccc6203db9bdcf60638e0f4e95040d7aaf2) ) @@ -888,13 +1270,13 @@ ROM_END ROM_START( cyberbalt ) - ROM_REGION( 0x40000, "maincpu", 0 ) /* 4*64k for 68000 code */ + ROM_REGION( 0x40000, "maincpu", 0 ) // 68000 code ROM_LOAD16_BYTE( "136073-2007.1m", 0x000000, 0x010000, CRC(adfa9e23) SHA1(5462030fa275ce7b261b7283e92df9f7f1383251) ) ROM_LOAD16_BYTE( "136073-2008.1kl", 0x000001, 0x010000, CRC(c9191452) SHA1(583c1f916fbd54dbc188be7a181ccd60c7320cc8) ) ROM_LOAD16_BYTE( "136073-2009.3m", 0x020000, 0x010000, CRC(88bfc6dd) SHA1(ac2a67c8b4dbae62497236d624d333992195c218) ) ROM_LOAD16_BYTE( "136073-2010.3kl", 0x020001, 0x010000, CRC(3a121f29) SHA1(ebd088187abb863f2a632812811479dca7e31802) ) - ROM_REGION( 0x10000, "sac:cpu", 0 ) /* 64k for 6502 code */ + ROM_REGION( 0x10000, "sac:cpu", 0 ) // 6502 code ROM_LOAD( "136073-1029.2f", 0x000000, 0x010000, CRC(afee87e1) SHA1(da5e91167c68eecd2cb4436ac64cda14e5f6eae7) ) ROM_REGION( 0x40000, "extra", 0 ) @@ -903,13 +1285,13 @@ ROM_START( cyberbalt ) ROM_LOAD16_BYTE( "136073-1013.1cd", 0x020000, 0x010000, CRC(11d287c9) SHA1(a25095ab29a7103f2bf02d656414d9dab0b79215) ) ROM_LOAD16_BYTE( "136073-1014.3b", 0x020001, 0x010000, CRC(be15db42) SHA1(f3b1a676106e9956f62d3f36fbb1f849695ff771) ) - ROM_REGION16_BE( 0x40000, "sac:dac", 0 ) /* 256k for 68000 sound code */ + ROM_REGION16_BE( 0x40000, "sac:dac", 0 ) ROM_LOAD16_BYTE( "136064-1132.3cd", 0x000000, 0x010000, CRC(ca5ce8d8) SHA1(69dc83d43d8c9dc7ce3207e70f48fcfc5ddda0cc) ) ROM_LOAD16_BYTE( "136064-1133.1b", 0x000001, 0x010000, CRC(ffeb8746) SHA1(0d8d28b2d997ff3cf01b4ef25b75fa5a69754af4) ) ROM_LOAD16_BYTE( "136064-1134.1cd", 0x020000, 0x010000, CRC(bcbd4c00) SHA1(f0bfcdf0b5491e15872b543e99b834ae384cbf18) ) ROM_LOAD16_BYTE( "136064-1135.3b", 0x020001, 0x010000, CRC(d520f560) SHA1(fb0b8d021458379188c424a343622c46ad74edaa) ) - ROM_REGION( 0x140000, "gfx1", 0 ) + ROM_REGION( 0x140000, "sprites", 0 ) ROM_LOAD( "136071-1001.55l", 0x000000, 0x020000, CRC(586ba107) SHA1(f15d4489f5834ea5fe695f43cb9d1c2401179870) ) ROM_LOAD( "136071-1005.43l", 0x020000, 0x020000, CRC(a53e6248) SHA1(4f2466c6af74a5498468801b1de7adfc34873d5d) ) ROM_LOAD( "136071-1032.18a", 0x040000, 0x010000, CRC(131f52a0) SHA1(fa50ea82d26c36dd6a135e22dee509676d1dfe86) ) @@ -923,13 +1305,13 @@ ROM_START( cyberbalt ) ROM_LOAD( "136071-1008.78n", 0x110000, 0x020000, CRC(78525bbb) SHA1(98ece6c0672cb60f818b8005c76cc4ae1d24b104) ) ROM_LOAD( "136071-1035.13c", 0x130000, 0x010000, CRC(1be3e5c8) SHA1(1a4d0e0d53b902c28977c8598e363c7b61c9c1c8) ) - ROM_REGION( 0x040000, "gfx2", 0 ) + ROM_REGION( 0x040000, "tiles", 0 ) ROM_LOAD( "136073-1001.9lm", 0x000000, 0x010000, CRC(dbbad153) SHA1(1004292e320037fc1d5e5e8e7b6a068b1305e872) ) ROM_LOAD( "136073-1002.8lm", 0x010000, 0x010000, CRC(76e0d008) SHA1(2af4e48a229d23d85272d3c3203d977d81143a7f) ) ROM_LOAD( "136073-1003.11lm", 0x020000, 0x010000, CRC(ddca9ca2) SHA1(19cb170fe6aeed6c67b68376b5bde07f7f115fb0) ) ROM_LOAD( "136073-1004.10lm", 0x030000, 0x010000, CRC(aa495b6f) SHA1(c7d8e16d3084143928f25f66ee4d037ff7c43bcb) ) - ROM_REGION( 0x020000, "gfx3", 0 ) + ROM_REGION( 0x020000, "chars", 0 ) ROM_LOAD( "136073-1005.15n", 0x000000, 0x010000, CRC(833b4768) SHA1(754f00089d439fb0aa1f650c1fef73cf7e5f33a1) ) ROM_LOAD( "136073-1006.16n", 0x010000, 0x010000, CRC(4976cffd) SHA1(4cac8d9bd30743da6e6e4f013e6101ebc27060b6) ) @@ -939,13 +1321,13 @@ ROM_END ROM_START( cyberbalt1 ) - ROM_REGION( 0x40000, "maincpu", 0 ) /* 4*64k for 68000 code */ + ROM_REGION( 0x40000, "maincpu", 0 ) // 68000 code ROM_LOAD16_BYTE( "136073-1007.1m", 0x000000, 0x010000, CRC(d434b2d7) SHA1(af6d51399ad4fca01ffbc7afa2bf73d7ee2f89b6) ) ROM_LOAD16_BYTE( "136073-1008.1kl", 0x000001, 0x010000, CRC(7d6c4163) SHA1(f1fe9d758f30bd0ebc990d8604ba32cc0d780683) ) ROM_LOAD16_BYTE( "136073-1009.3m", 0x020000, 0x010000, CRC(3933e089) SHA1(4bd453bddabeafd07d193a1bc8ac0792e7aa99c3) ) ROM_LOAD16_BYTE( "136073-1010.3kl", 0x020001, 0x010000, CRC(e7a7cae8) SHA1(91e0c6a1b0c138a0e6a599011518fe10df44e76e) ) - ROM_REGION( 0x10000, "sac:cpu", 0 ) /* 64k for 6502 code */ + ROM_REGION( 0x10000, "sac:cpu", 0 ) // 6502 code ROM_LOAD( "136073-1029.2f", 0x000000, 0x010000, CRC(afee87e1) SHA1(da5e91167c68eecd2cb4436ac64cda14e5f6eae7) ) ROM_REGION( 0x40000, "extra", 0 ) @@ -954,13 +1336,13 @@ ROM_START( cyberbalt1 ) ROM_LOAD16_BYTE( "136073-1013.1cd", 0x020000, 0x010000, CRC(11d287c9) SHA1(a25095ab29a7103f2bf02d656414d9dab0b79215) ) ROM_LOAD16_BYTE( "136073-1014.3b", 0x020001, 0x010000, CRC(be15db42) SHA1(f3b1a676106e9956f62d3f36fbb1f849695ff771) ) - ROM_REGION16_BE( 0x40000, "sac:dac", 0 ) /* 256k for 68000 sound code */ + ROM_REGION16_BE( 0x40000, "sac:dac", 0 ) ROM_LOAD16_BYTE( "136064-1132.3cd", 0x000000, 0x010000, CRC(ca5ce8d8) SHA1(69dc83d43d8c9dc7ce3207e70f48fcfc5ddda0cc) ) ROM_LOAD16_BYTE( "136064-1133.1b", 0x000001, 0x010000, CRC(ffeb8746) SHA1(0d8d28b2d997ff3cf01b4ef25b75fa5a69754af4) ) ROM_LOAD16_BYTE( "136064-1134.1cd", 0x020000, 0x010000, CRC(bcbd4c00) SHA1(f0bfcdf0b5491e15872b543e99b834ae384cbf18) ) ROM_LOAD16_BYTE( "136064-1135.3b", 0x020001, 0x010000, CRC(d520f560) SHA1(fb0b8d021458379188c424a343622c46ad74edaa) ) - ROM_REGION( 0x140000, "gfx1", 0 ) + ROM_REGION( 0x140000, "sprites", 0 ) ROM_LOAD( "136071-1001.55l", 0x000000, 0x020000, CRC(586ba107) SHA1(f15d4489f5834ea5fe695f43cb9d1c2401179870) ) ROM_LOAD( "136071-1005.43l", 0x020000, 0x020000, CRC(a53e6248) SHA1(4f2466c6af74a5498468801b1de7adfc34873d5d) ) ROM_LOAD( "136071-1032.18a", 0x040000, 0x010000, CRC(131f52a0) SHA1(fa50ea82d26c36dd6a135e22dee509676d1dfe86) ) @@ -974,13 +1356,13 @@ ROM_START( cyberbalt1 ) ROM_LOAD( "136071-1008.78n", 0x110000, 0x020000, CRC(78525bbb) SHA1(98ece6c0672cb60f818b8005c76cc4ae1d24b104) ) ROM_LOAD( "136071-1035.13c", 0x130000, 0x010000, CRC(1be3e5c8) SHA1(1a4d0e0d53b902c28977c8598e363c7b61c9c1c8) ) - ROM_REGION( 0x040000, "gfx2", 0 ) + ROM_REGION( 0x040000, "tiles", 0 ) ROM_LOAD( "136073-1001.9lm", 0x000000, 0x010000, CRC(dbbad153) SHA1(1004292e320037fc1d5e5e8e7b6a068b1305e872) ) ROM_LOAD( "136073-1002.8lm", 0x010000, 0x010000, CRC(76e0d008) SHA1(2af4e48a229d23d85272d3c3203d977d81143a7f) ) ROM_LOAD( "136073-1003.11lm", 0x020000, 0x010000, CRC(ddca9ca2) SHA1(19cb170fe6aeed6c67b68376b5bde07f7f115fb0) ) ROM_LOAD( "136073-1004.10lm", 0x030000, 0x010000, CRC(aa495b6f) SHA1(c7d8e16d3084143928f25f66ee4d037ff7c43bcb) ) - ROM_REGION( 0x020000, "gfx3", 0 ) + ROM_REGION( 0x020000, "chars", 0 ) ROM_LOAD( "136073-1005.15n", 0x000000, 0x010000, CRC(833b4768) SHA1(754f00089d439fb0aa1f650c1fef73cf7e5f33a1) ) ROM_LOAD( "136073-1006.16n", 0x010000, 0x010000, CRC(4976cffd) SHA1(4cac8d9bd30743da6e6e4f013e6101ebc27060b6) ) @@ -1001,6 +1383,7 @@ void cyberbal_state::init_cyberbalt() m_slapstic_bank->configure_entries(0, 4, memregion("maincpu")->base() + 0x18000, 0x2000); } +} // anonymous namespace /************************************* @@ -1009,15 +1392,15 @@ void cyberbal_state::init_cyberbalt() * *************************************/ -GAMEL( 1988, cyberbal, 0, cyberbal, cyberbal, cyberbal_state, empty_init, ROT0, "Atari Games", "Cyberball (rev 4)", 0, layout_dualhsxs ) -GAMEL( 1988, cyberbal2, cyberbal, cyberbal, cyberbal, cyberbal_state, empty_init, ROT0, "Atari Games", "Cyberball (rev 2)", 0, layout_dualhsxs ) -GAMEL( 1988, cyberbal1, cyberbal, cyberbal, cyberbal, cyberbal_state, empty_init, ROT0, "Atari Games", "Cyberball (rev 1)", 0, layout_dualhsxs ) -GAMEL( 1988, cyberbalp, cyberbal, cyberbal, cyberbal, cyberbal_state, empty_init, ROT0, "Atari Games", "Cyberball (prototype)", 0, layout_dualhsxs ) +GAMEL( 1988, cyberbal, 0, cyberbal, cyberbal, cyberbal_state, empty_init, ROT0, "Atari Games", "Cyberball (rev 4)", MACHINE_SUPPORTS_SAVE, layout_dualhsxs ) +GAMEL( 1988, cyberbal2, cyberbal, cyberbal, cyberbal, cyberbal_state, empty_init, ROT0, "Atari Games", "Cyberball (rev 2)", MACHINE_SUPPORTS_SAVE, layout_dualhsxs ) +GAMEL( 1988, cyberbal1, cyberbal, cyberbal, cyberbal, cyberbal_state, empty_init, ROT0, "Atari Games", "Cyberball (rev 1)", MACHINE_SUPPORTS_SAVE, layout_dualhsxs ) +GAMEL( 1988, cyberbalp, cyberbal, cyberbal, cyberbal, cyberbal_state, empty_init, ROT0, "Atari Games", "Cyberball (prototype)", MACHINE_SUPPORTS_SAVE, layout_dualhsxs ) -GAME( 1989, cyberbal2p, cyberbal, cyberbal2p, cyberbal2p, cyberbal2p_state, empty_init, ROT0, "Atari Games", "Cyberball 2072 (2 player, rev 4)", 0 ) -GAME( 1989, cyberbal2p3, cyberbal, cyberbal2p, cyberbal2p, cyberbal2p_state, empty_init, ROT0, "Atari Games", "Cyberball 2072 (2 player, rev 3)", 0 ) -GAME( 1989, cyberbal2p2, cyberbal, cyberbal2p, cyberbal2p, cyberbal2p_state, empty_init, ROT0, "Atari Games", "Cyberball 2072 (2 player, rev 2)", 0 ) -GAME( 1989, cyberbal2p1, cyberbal, cyberbal2p, cyberbal2p, cyberbal2p_state, empty_init, ROT0, "Atari Games", "Cyberball 2072 (2 player, rev 1)", 0 ) +GAME( 1989, cyberbal2p, cyberbal, cyberbal2p, cyberbal2p, cyberbal2p_state, empty_init, ROT0, "Atari Games", "Cyberball 2072 (2 player, rev 4)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, cyberbal2p3, cyberbal, cyberbal2p, cyberbal2p, cyberbal2p_state, empty_init, ROT0, "Atari Games", "Cyberball 2072 (2 player, rev 3)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, cyberbal2p2, cyberbal, cyberbal2p, cyberbal2p, cyberbal2p_state, empty_init, ROT0, "Atari Games", "Cyberball 2072 (2 player, rev 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, cyberbal2p1, cyberbal, cyberbal2p, cyberbal2p, cyberbal2p_state, empty_init, ROT0, "Atari Games", "Cyberball 2072 (2 player, rev 1)", MACHINE_SUPPORTS_SAVE ) -GAMEL( 1989, cyberbalt, cyberbal, cyberbalt, cyberbal, cyberbal_state, init_cyberbalt, ROT0, "Atari Games", "Tournament Cyberball 2072 (rev 2)", 0, layout_dualhsxs ) -GAMEL( 1989, cyberbalt1, cyberbal, cyberbalt, cyberbal, cyberbal_state, init_cyberbalt, ROT0, "Atari Games", "Tournament Cyberball 2072 (rev 1)", 0, layout_dualhsxs ) +GAMEL( 1989, cyberbalt, cyberbal, cyberbalt, cyberbal, cyberbal_state, init_cyberbalt, ROT0, "Atari Games", "Tournament Cyberball 2072 (rev 2)", MACHINE_SUPPORTS_SAVE, layout_dualhsxs ) +GAMEL( 1989, cyberbalt1, cyberbal, cyberbalt, cyberbal, cyberbal_state, init_cyberbalt, ROT0, "Atari Games", "Tournament Cyberball 2072 (rev 1)", MACHINE_SUPPORTS_SAVE, layout_dualhsxs ) diff --git a/src/mame/atari/cyberbal.h b/src/mame/atari/cyberbal.h deleted file mode 100644 index b200da13bfa..00000000000 --- a/src/mame/atari/cyberbal.h +++ /dev/null @@ -1,148 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Aaron Giles -/************************************************************************* - - Atari Cyberball hardware - -*************************************************************************/ -#ifndef MAME_ATARI_CYBERBAL_H -#define MAME_ATARI_CYBERBAL_H - -#pragma once - -#include "slapstic.h" -#include "atarijsa.h" -#include "atarisac.h" -#include "atarimo.h" -#include "cpu/m68000/m68000.h" -#include "machine/timer.h" -#include "emupal.h" -#include "screen.h" -#include "tilemap.h" - -class cyberbal_base_state : public driver_device -{ -protected: - cyberbal_base_state(const machine_config &mconfig, device_type type, const char *tag) : - driver_device(mconfig, type, tag), - m_maincpu(*this, "maincpu"), - m_gfxdecode(*this, "gfxdecode"), - m_playfield(*this, "playfield"), - m_alpha(*this, "alpha"), - m_mob(*this, "mob") - { } - - TILE_GET_INFO_MEMBER(get_alpha_tile_info); - TILE_GET_INFO_MEMBER(get_playfield_tile_info); - - virtual void video_start() override; - - void scanline_update_one(screen_device &screen, int scanline, int i, tilemap_t &curplayfield, tilemap_device &curalpha); - uint32_t update_one_screen(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, atari_motion_objects_device &curmob, tilemap_t &curplayfield, tilemap_t &curalpha); - - static const atari_motion_objects_config s_mob_config; - - required_device m_maincpu; - required_device m_gfxdecode; - required_device m_playfield; - required_device m_alpha; - required_device m_mob; - - uint16_t m_current_slip[2]{}; - -private: - uint8_t m_playfield_palette_bank[2]{}; - uint16_t m_playfield_xscroll[2]{}; - uint16_t m_playfield_yscroll[2]{}; -}; - - -class cyberbal2p_state : public cyberbal_base_state -{ -public: - cyberbal2p_state(const machine_config &mconfig, device_type type, const char *tag) : - cyberbal_base_state(mconfig, type, tag), - m_screen(*this, "screen"), - m_jsa(*this, "jsa") - { } - - void cyberbal2p(machine_config &config); - -protected: - uint16_t sound_state_r(); - - virtual void machine_reset() override; - virtual void video_start() override; - uint32_t screen_update_cyberbal2p(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - - // memory maps - void cyberbal2p_map(address_map &map); - -private: - DECLARE_WRITE_LINE_MEMBER(video_int_write_line); - void video_int_ack_w(uint16_t data = 0); - - TIMER_DEVICE_CALLBACK_MEMBER(scanline_update); - - required_device m_screen; - required_device m_jsa; -}; - - -class cyberbal_state : public cyberbal_base_state -{ -public: - cyberbal_state(const machine_config &mconfig, device_type type, const char *tag) : - cyberbal_base_state(mconfig, type, tag), - m_slapstic(*this, "slapstic"), - m_slapstic_bank(*this, "slapstic_bank"), - m_extracpu(*this, "extra"), - m_sac(*this, "sac"), - m_playfield2(*this, "playfield2"), - m_alpha2(*this, "alpha2"), - m_mob2(*this, "mob2"), - m_rpalette(*this, "rpalette"), - m_lscreen(*this, "lscreen"), - m_rscreen(*this, "rscreen") - { } - - void init_cyberbalt(); - void cyberbal(machine_config &config); - void cyberbalt(machine_config &config); - -protected: - void p2_reset_w(uint16_t data); - TILE_GET_INFO_MEMBER(get_alpha2_tile_info); - TILE_GET_INFO_MEMBER(get_playfield2_tile_info); - - virtual void machine_start() override; - virtual void machine_reset() override; - virtual void video_start() override; - uint32_t screen_update_cyberbal_left(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - uint32_t screen_update_cyberbal_right(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - - // memory maps - void main_map(address_map &map); - void tournament_map(address_map &map); - void extra_map(address_map &map); - -private: - DECLARE_WRITE_LINE_MEMBER(video_int_write_line); - void video_int_ack_w(uint16_t data = 0); - - TIMER_DEVICE_CALLBACK_MEMBER(scanline_update); - - optional_device m_slapstic; - optional_memory_bank m_slapstic_bank; - required_device m_extracpu; - required_device m_sac; - required_device m_playfield2; - required_device m_alpha2; - required_device m_mob2; - required_device m_rpalette; - required_device m_lscreen; - required_device m_rscreen; - -}; - -#endif // MAME_ATARI_CYBERBAL_H diff --git a/src/mame/atari/cyberbal_v.cpp b/src/mame/atari/cyberbal_v.cpp deleted file mode 100644 index eceb66e3adb..00000000000 --- a/src/mame/atari/cyberbal_v.cpp +++ /dev/null @@ -1,265 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Aaron Giles -/*************************************************************************** - - Atari Cyberball hardware - -****************************************************************************/ - -#include "emu.h" -#include "cyberbal.h" - - -#define SCREEN_WIDTH (42*16) - - - -/************************************* - * - * Tilemap callbacks - * - *************************************/ - -TILE_GET_INFO_MEMBER(cyberbal_base_state::get_alpha_tile_info) -{ - uint16_t data = m_alpha->basemem_read(tile_index); - int code = data & 0xfff; - int color = (data >> 12) & 0x07; - tileinfo.set(2, code, color, (data >> 15) & 1); -} - - -TILE_GET_INFO_MEMBER(cyberbal_state::get_alpha2_tile_info) -{ - uint16_t data = m_alpha2->basemem_read(tile_index); - int code = data & 0xfff; - int color = (data >> 12) & 0x07; - tileinfo.set(2, code, color, (data >> 15) & 1); -} - - -TILE_GET_INFO_MEMBER(cyberbal_base_state::get_playfield_tile_info) -{ - uint16_t data = m_playfield->basemem_read(tile_index); - int code = data & 0x1fff; - int color = (data >> 11) & 0x0f; - tileinfo.set(0, code, color, (data >> 15) & 1); -} - - -TILE_GET_INFO_MEMBER(cyberbal_state::get_playfield2_tile_info) -{ - uint16_t data = m_playfield2->basemem_read(tile_index); - int code = data & 0x1fff; - int color = (data >> 11) & 0x0f; - tileinfo.set(0, code, color, (data >> 15) & 1); -} - - - - -/************************************* - * - * Video system start - * - *************************************/ - -const atari_motion_objects_config cyberbal_base_state::s_mob_config = -{ - 1, /* index to which gfx system */ - 1, /* number of motion object banks */ - 1, /* are the entries linked? */ - 0, /* are the entries split? */ - 0, /* render in reverse order? */ - 0, /* render in swapped X/Y order? */ - 1, /* does the neighbor bit affect the next object? */ - 1024, /* pixels per SLIP entry (0 for no-slip) */ - 0, /* pixel offset for SLIPs */ - 0, /* maximum number of links to visit/scanline (0=all) */ - - 0x600, /* base palette entry */ - 0x100, /* maximum number of colors */ - 0, /* transparent pen index */ - - {{ 0,0,0x07f8,0 }}, /* mask for the link */ - {{ 0x7fff,0,0,0 }}, /* mask for the code index */ - {{ 0,0,0,0x000f }}, /* mask for the color */ - {{ 0,0,0,0xffc0 }}, /* mask for the X position */ - {{ 0,0xff80,0,0 }}, /* mask for the Y position */ - {{ 0 }}, /* mask for the width, in tiles*/ - {{ 0,0x000f,0,0 }}, /* mask for the height, in tiles */ - {{ 0x8000,0,0,0 }}, /* mask for the horizontal flip */ - {{ 0 }}, /* mask for the vertical flip */ - {{ 0 }}, /* mask for the priority */ - {{ 0,0,0,0x0010 }}, /* mask for the neighbor */ - {{ 0 }}, /* mask for absolute coordinates */ - - {{ 0 }}, /* mask for the special value */ - 0, /* resulting value to indicate "special" */ -}; - -void cyberbal_base_state::video_start() -{ - /* initialize the motion objects */ - m_mob->set_slipram(&m_current_slip[0]); - - /* save states */ - save_item(NAME(m_current_slip)); - save_item(NAME(m_playfield_palette_bank)); - save_item(NAME(m_playfield_xscroll)); - save_item(NAME(m_playfield_yscroll)); -} - - -void cyberbal_state::video_start() -{ - m_playfield2->set_palette(*m_rpalette); - m_alpha2->set_palette(*m_rpalette); - - cyberbal_base_state::video_start(); - - m_mob2->set_slipram(&m_current_slip[1]); - - /* adjust the sprite positions */ - m_mob->set_xscroll(4); - m_mob2->set_xscroll(4); -} - - -void cyberbal2p_state::video_start() -{ - cyberbal_base_state::video_start(); - - /* adjust the sprite positions */ - m_mob->set_xscroll(5); -} - - - -/************************************* - * - * Periodic scanline updater - * - *************************************/ - -void cyberbal_base_state::scanline_update_one(screen_device &screen, int scanline, int i, tilemap_t &curplayfield, tilemap_device &curalpha) -{ - /* keep in range */ - int offset = ((scanline - 8) / 8) * 64 + 47; - if (offset < 0) - offset += 0x800; - else if (offset >= 0x800) - return; - - /* update the current parameters */ - uint16_t word = curalpha.basemem_read(offset + 3); - if (!(word & 1)) - { - if (((word >> 1) & 7) != m_playfield_palette_bank[i]) - { - if (scanline > 0) - screen.update_partial(scanline - 1); - m_playfield_palette_bank[i] = (word >> 1) & 7; - curplayfield.set_palette_offset(m_playfield_palette_bank[i] << 8); - } - } - word = curalpha.basemem_read(offset + 4); - if (!(word & 1)) - { - int newscroll = 2 * (((word >> 7) + 4) & 0x1ff); - if (newscroll != m_playfield_xscroll[i]) - { - if (scanline > 0) - screen.update_partial(scanline - 1); - curplayfield.set_scrollx(0, newscroll); - m_playfield_xscroll[i] = newscroll; - } - } - word = curalpha.basemem_read(offset + 5); - if (!(word & 1)) - { - /* a new vscroll latches the offset into a counter; we must adjust for this */ - int newscroll = ((word >> 7) - (scanline)) & 0x1ff; - if (newscroll != m_playfield_yscroll[i]) - { - if (scanline > 0) - screen.update_partial(scanline - 1); - curplayfield.set_scrolly(0, newscroll); - m_playfield_yscroll[i] = newscroll; - } - } - word = curalpha.basemem_read(offset + 7); - if (!(word & 1)) - { - if (m_current_slip[i] != word) - { - if (scanline > 0) - screen.update_partial(scanline - 1); - m_current_slip[i] = word; - } - } - i++; -} - -TIMER_DEVICE_CALLBACK_MEMBER(cyberbal_state::scanline_update) -{ - scanline_update_one(*m_lscreen, param, 0, *m_playfield, *m_alpha); - scanline_update_one(*m_rscreen, param, 1, *m_playfield2, *m_alpha2); -} - -TIMER_DEVICE_CALLBACK_MEMBER(cyberbal2p_state::scanline_update) -{ - scanline_update_one(*m_screen, param, 0, *m_playfield, *m_alpha); -} - - - -/************************************* - * - * Main refresh - * - *************************************/ - -uint32_t cyberbal_base_state::update_one_screen(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, atari_motion_objects_device &curmob, tilemap_t &curplayfield, tilemap_t &curalpha) -{ - // start drawing - curmob.draw_async(cliprect); - - /* draw the playfield */ - curplayfield.draw(screen, bitmap, cliprect, 0, 0); - - /* draw and merge the MO */ - bitmap_ind16 &mobitmap = curmob.bitmap(); - for (const sparse_dirty_rect *rect = curmob.first_dirty_rect(cliprect); rect != nullptr; rect = rect->next()) - for (int y = rect->top(); y <= rect->bottom(); y++) - { - uint16_t const *const mo = &mobitmap.pix(y); - uint16_t *const pf = &bitmap.pix(y); - for (int x = rect->left(); x <= rect->right(); x++) - if (mo[x] != 0xffff) - { - // not verified: logic is all controlled in a PAL - pf[x] = mo[x]; - } - } - - /* add the alpha on top */ - curalpha.draw(screen, bitmap, cliprect, 0, 0); - return 0; -} - - -uint32_t cyberbal_state::screen_update_cyberbal_left(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) -{ - return update_one_screen(screen, bitmap, cliprect, *m_mob, *m_playfield, *m_alpha); -} - -uint32_t cyberbal_state::screen_update_cyberbal_right(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) -{ - return update_one_screen(screen, bitmap, cliprect, *m_mob2, *m_playfield2, *m_alpha2); -} - -uint32_t cyberbal2p_state::screen_update_cyberbal2p(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) -{ - return update_one_screen(screen, bitmap, cliprect, *m_mob, *m_playfield, *m_alpha); -} diff --git a/src/mame/atari/dragrace.cpp b/src/mame/atari/dragrace.cpp index fa8dee874e4..03b9c68eb6b 100644 --- a/src/mame/atari/dragrace.cpp +++ b/src/mame/atari/dragrace.cpp @@ -1,5 +1,6 @@ // license:BSD-3-Clause -// copyright-holders:Stefan Jokisch +// copyright-holders: Stefan Jokisch + /*************************************************************************** Atari Drag Race Driver @@ -7,16 +8,159 @@ ***************************************************************************/ #include "emu.h" -#include "dragrace.h" + +#include "dragrace_a.h" #include "cpu/m6800/m6800.h" #include "machine/74259.h" +#include "machine/timer.h" +#include "machine/watchdog.h" #include "sound/discrete.h" + +#include "emupal.h" +#include "screen.h" #include "speaker.h" +#include "tilemap.h" #include "dragrace.lh" +namespace { + +class dragrace_state : public driver_device +{ +public: + dragrace_state(const machine_config &mconfig, device_type type, const char *tag) : + driver_device(mconfig, type, tag), + m_maincpu(*this, "maincpu"), + m_watchdog(*this, "watchdog"), + m_gfxdecode(*this, "gfxdecode"), + m_screen(*this, "screen"), + m_discrete(*this, "discrete"), + m_playfield_ram(*this, "playfield_ram"), + m_position_ram(*this, "position_ram"), + m_p(*this, "P%u", 1U), + m_dial(*this, "DIAL%u", 1U), + m_in(*this, "IN%u", 0U), + m_gear_sel(*this, "P%ugear", 1U), + m_tacho_sel(*this, "tachometer%u", 1U) + { + } + + void dragrace(machine_config &config); + +protected: + virtual void machine_start() override; + virtual void machine_reset() override; + virtual void video_start() override; + +private: + // devices + required_device m_maincpu; + required_device m_watchdog; + required_device m_gfxdecode; + required_device m_screen; + required_device m_discrete; + + // memory pointers + required_shared_ptr m_playfield_ram; + required_shared_ptr m_position_ram; + + // inputs + required_ioport_array<2> m_p, m_dial; + required_ioport_array<3> m_in; + + // outputs + output_finder<2> m_gear_sel, m_tacho_sel; + + // video-related + tilemap_t *m_bg_tilemap = nullptr; + + // misc + uint8_t m_gear[2]{}; + emu_timer *m_scan_timer; + emu_timer *m_irq_off_timer; + + void speed1_w(uint8_t data); + void speed2_w(uint8_t data); + uint8_t input_r(offs_t offset); + uint8_t steering_r(); + uint8_t scanline_r(); + TILE_GET_INFO_MEMBER(get_tile_info); + void palette(palette_device &palette) const; + uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + TIMER_DEVICE_CALLBACK_MEMBER(frame_callback); + TIMER_CALLBACK_MEMBER(scanline_irq); + TIMER_CALLBACK_MEMBER(irq_off); + + void main_map(address_map &map); +}; + + +// video + +TILE_GET_INFO_MEMBER(dragrace_state::get_tile_info) +{ + uint8_t code = m_playfield_ram[tile_index]; + int num = code & 0x1f; + int col = 0; + + if ((code & 0xc0) == 0x40) + num |= 0x20; + + switch (code & 0xa0) + { + case 0x00: + col = 0; + break; + case 0x20: + col = 1; + break; + case 0x80: + col = (code & 0x40) ? 1 : 0; + break; + case 0xa0: + col = (code & 0x40) ? 3 : 2; + break; + } + + tileinfo.set(((code & 0xa0) == 0x80) ? 1 : 0, num, col, 0); +} + + +void dragrace_state::video_start() +{ + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(dragrace_state::get_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 16, 16); +} + + +uint32_t dragrace_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + m_bg_tilemap->mark_all_dirty(); + + for (int y = 0; y < 256; y += 4) + { + rectangle rect = cliprect; + + int const xl = m_position_ram[y + 0] & 15; + int const xh = m_position_ram[y + 1] & 15; + int const yl = m_position_ram[y + 2] & 15; + int const yh = m_position_ram[y + 3] & 15; + + m_bg_tilemap->set_scrollx(0, 16 * xh + xl - 8); + m_bg_tilemap->set_scrolly(0, 16 * yh + yl); + + rect.sety((std::max)(rect.top(), y + 0), (std::min)(rect.bottom(), y + 3)); + + m_bg_tilemap->draw(screen, bitmap, rect, 0, 0); + } + + return 0; +} + + +// machine + TIMER_DEVICE_CALLBACK_MEMBER(dragrace_state::frame_callback) { for (int i = 0; i < 2; i++) @@ -32,7 +176,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(dragrace_state::frame_callback) } m_gear_sel[0] = m_gear[0]; - m_gear_sel[1] = m_gear[1]; + m_gear_sel[1] = m_gear[1]; // watchdog is disabled during service mode m_watchdog->watchdog_enable(m_in[0]->read() & 0x20); @@ -44,7 +188,7 @@ TIMER_CALLBACK_MEMBER(dragrace_state::scanline_irq) m_irq_off_timer->adjust(m_screen->scan_period() * 3); // Four IRQs per frame (vpos = 64, 128, 192, 240) - int scanline = m_screen->vpos(); + int const scanline = m_screen->vpos(); m_scan_timer->adjust(m_screen->time_until_pos(scanline < 240 ? std::min(scanline + 64, 240) : 64)); } @@ -76,8 +220,8 @@ uint8_t dragrace_state::input_r(offs_t offset) { int val = m_in[2]->read(); - uint8_t maskA = 1 << (offset % 8); - uint8_t maskB = 1 << (offset / 8); + uint8_t const maskA = 1 << (offset % 8); + uint8_t const maskB = 1 << (offset / 8); for (int i = 0; i < 2; i++) { @@ -101,7 +245,7 @@ uint8_t dragrace_state::steering_r() for (int i = 0; i < 2; i++) { - int dial = m_dial[i]->read(); + int const dial = m_dial[i]->read(); bitA[i] = ((dial + 1) / 2) & 1; bitB[i] = ((dial + 0) / 2) & 1; @@ -247,8 +391,8 @@ static const gfx_layout dragrace_tile_layout2 = static GFXDECODE_START( gfx_dragrace ) - GFXDECODE_ENTRY( "gfx1", 0, dragrace_tile_layout1, 0, 4 ) - GFXDECODE_ENTRY( "gfx2", 0, dragrace_tile_layout2, 8, 2 ) + GFXDECODE_ENTRY( "tiles_2c", 0, dragrace_tile_layout1, 0, 4 ) + GFXDECODE_ENTRY( "tiles_4c", 0, dragrace_tile_layout2, 8, 2 ) GFXDECODE_END @@ -349,12 +493,12 @@ ROM_START( dragrace ) ROM_LOAD( "8514.a1", 0x1800, 0x0800, CRC(ad218690) SHA1(08ba5f4fa4c75d8dad1a7162888d44b3349cbbe4) ) ROM_RELOAD( 0xf800, 0x0800 ) - ROM_REGION( 0x800, "gfx1", 0 ) // 2 color tiles + ROM_REGION( 0x800, "tiles_2c", 0 ) // 2 color tiles ROM_LOAD( "8519dr.j0", 0x000, 0x200, CRC(aa221ba0) SHA1(450acbf349d77a790a25f3e303c31b38cc426a38) ) ROM_LOAD( "8521dr.k0", 0x200, 0x200, CRC(0cb33f12) SHA1(d50cb55391aec03e064eecad1624d50d4c30ccab) ) ROM_LOAD( "8520dr.r0", 0x400, 0x200, CRC(ee1ae6a7) SHA1(83491095260c8b7c616ff17ec1e888d05620f166) ) - ROM_REGION( 0x800, "gfx2", 0 ) // 4 color tiles + ROM_REGION( 0x800, "tiles_4c", 0 ) // 4 color tiles ROM_LOAD( "8515dr.e0", 0x000, 0x200, CRC(9510a59e) SHA1(aea0782b919279efe55a07007bd55a16f7f59239) ) ROM_LOAD( "8517dr.h0", 0x200, 0x200, CRC(8b5bff1f) SHA1(fdcd719c66bff7c4b9f3d56d1e635259dd8add61) ) ROM_LOAD( "8516dr.l0", 0x400, 0x200, CRC(d1e74af1) SHA1(f55a3bfd7d152ac9af128697f55c9a0c417779f5) ) @@ -364,5 +508,7 @@ ROM_START( dragrace ) ROM_LOAD( "l8.bin", 0x000, 0x100, CRC(3610b453) SHA1(9e33ee04f22a9174c29fafb8e71781fa330a7a08) ) ROM_END +} // anonymous namespace + GAMEL( 1977, dragrace, 0, dragrace, dragrace, dragrace_state, empty_init, 0, "Atari (Kee Games)", "Drag Race", MACHINE_SUPPORTS_SAVE, layout_dragrace ) diff --git a/src/mame/atari/dragrace.h b/src/mame/atari/dragrace.h deleted file mode 100644 index c624e7da325..00000000000 --- a/src/mame/atari/dragrace.h +++ /dev/null @@ -1,108 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Stefan Jokisch -/************************************************************************* - - Atari Drag Race hardware - -*************************************************************************/ -#ifndef MAME_ATARI_DRAGRACE_H -#define MAME_ATARI_DRAGRACE_H - -#pragma once - -#include "machine/timer.h" -#include "machine/watchdog.h" -#include "sound/discrete.h" -#include "emupal.h" -#include "screen.h" -#include "tilemap.h" - -// Discrete Sound Input Nodes -#define DRAGRACE_SCREECH1_EN NODE_01 -#define DRAGRACE_SCREECH2_EN NODE_02 -#define DRAGRACE_LOTONE_EN NODE_03 -#define DRAGRACE_HITONE_EN NODE_04 -#define DRAGRACE_EXPLODE1_EN NODE_05 -#define DRAGRACE_EXPLODE2_EN NODE_06 -#define DRAGRACE_MOTOR1_DATA NODE_07 -#define DRAGRACE_MOTOR2_DATA NODE_08 -#define DRAGRACE_MOTOR1_EN NODE_80 -#define DRAGRACE_MOTOR2_EN NODE_81 -#define DRAGRACE_KLEXPL1_EN NODE_82 -#define DRAGRACE_KLEXPL2_EN NODE_83 -#define DRAGRACE_ATTRACT_EN NODE_09 - - -class dragrace_state : public driver_device -{ -public: - dragrace_state(const machine_config &mconfig, device_type type, const char *tag) : - driver_device(mconfig, type, tag), - m_maincpu(*this, "maincpu"), - m_watchdog(*this, "watchdog"), - m_gfxdecode(*this, "gfxdecode"), - m_screen(*this, "screen"), - m_discrete(*this, "discrete"), - m_playfield_ram(*this, "playfield_ram"), - m_position_ram(*this, "position_ram"), - m_p(*this, "P%u", 1U), - m_dial(*this, "DIAL%u", 1U), - m_in(*this, "IN%u", 0U), - m_gear_sel(*this, "P%ugear", 1U), - m_tacho_sel(*this, "tachometer%u", 1U) - { - } - - void dragrace(machine_config &config); - -protected: - virtual void machine_start() override; - virtual void machine_reset() override; - virtual void video_start() override; - -private: - void speed1_w(uint8_t data); - void speed2_w(uint8_t data); - uint8_t input_r(offs_t offset); - uint8_t steering_r(); - uint8_t scanline_r(); - TILE_GET_INFO_MEMBER(get_tile_info); - void palette(palette_device &palette) const; - uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - TIMER_DEVICE_CALLBACK_MEMBER(frame_callback); - TIMER_CALLBACK_MEMBER(scanline_irq); - TIMER_CALLBACK_MEMBER(irq_off); - - void main_map(address_map &map); - - // devices - required_device m_maincpu; - required_device m_watchdog; - required_device m_gfxdecode; - required_device m_screen; - required_device m_discrete; - - // memory pointers - required_shared_ptr m_playfield_ram; - required_shared_ptr m_position_ram; - - // inputs - required_ioport_array<2> m_p, m_dial; - required_ioport_array<3> m_in; - - // outputs - output_finder<2> m_gear_sel, m_tacho_sel; - - // video-related - tilemap_t *m_bg_tilemap = nullptr; - - // misc - uint8_t m_gear[2]{}; - emu_timer *m_scan_timer; - emu_timer *m_irq_off_timer; -}; - -//----------- defined in audio/dragrace.cpp ----------- -DISCRETE_SOUND_EXTERN( dragrace_discrete ); - -#endif // MAME_ATARI_DRAGRACE_H diff --git a/src/mame/atari/dragrace_a.cpp b/src/mame/atari/dragrace_a.cpp index f1bc41ebce3..9db72aef0eb 100644 --- a/src/mame/atari/dragrace_a.cpp +++ b/src/mame/atari/dragrace_a.cpp @@ -1,13 +1,14 @@ // license:BSD-3-Clause -// copyright-holders:Derrick Renaud +// copyright-holders: Derrick Renaud + /************************************************************************* - audio\dragrace.cpp + atari\dragrace_a.cpp *************************************************************************/ #include "emu.h" -#include "dragrace.h" -#include "sound/discrete.h" + +#include "dragrace_a.h" /************************************************************************/ /* dragrace Sound System Analog emulation */ diff --git a/src/mame/atari/dragrace_a.h b/src/mame/atari/dragrace_a.h new file mode 100644 index 00000000000..fb5b6bde24d --- /dev/null +++ b/src/mame/atari/dragrace_a.h @@ -0,0 +1,36 @@ +// license:BSD-3-Clause +// copyright-holders: Derrick Renaud + +/*************************************************************************** + +Drag Race audio + +***************************************************************************/ + +#ifndef MAME_ATARI_DRAGRACE_A_H +#define MAME_ATARI_DRAGRACE_A_H + +#pragma once + +#include "sound/discrete.h" + +// discrete sound input nodes + +#define DRAGRACE_SCREECH1_EN NODE_01 +#define DRAGRACE_SCREECH2_EN NODE_02 +#define DRAGRACE_LOTONE_EN NODE_03 +#define DRAGRACE_HITONE_EN NODE_04 +#define DRAGRACE_EXPLODE1_EN NODE_05 +#define DRAGRACE_EXPLODE2_EN NODE_06 +#define DRAGRACE_MOTOR1_DATA NODE_07 +#define DRAGRACE_MOTOR2_DATA NODE_08 +#define DRAGRACE_MOTOR1_EN NODE_80 +#define DRAGRACE_MOTOR2_EN NODE_81 +#define DRAGRACE_KLEXPL1_EN NODE_82 +#define DRAGRACE_KLEXPL2_EN NODE_83 +#define DRAGRACE_ATTRACT_EN NODE_09 + + +DISCRETE_SOUND_EXTERN( dragrace_discrete ); + +#endif // MAME_ATARI_DRAGRACE_A_H diff --git a/src/mame/atari/dragrace_v.cpp b/src/mame/atari/dragrace_v.cpp deleted file mode 100644 index 6446c536721..00000000000 --- a/src/mame/atari/dragrace_v.cpp +++ /dev/null @@ -1,70 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Stefan Jokisch -/*************************************************************************** - - Atari Drag Race video emulation - -***************************************************************************/ - -#include "emu.h" -#include "dragrace.h" - - -TILE_GET_INFO_MEMBER(dragrace_state::get_tile_info) -{ - uint8_t code = m_playfield_ram[tile_index]; - int num = code & 0x1f; - int col = 0; - - if ((code & 0xc0) == 0x40) - num |= 0x20; - - switch (code & 0xa0) - { - case 0x00: - col = 0; - break; - case 0x20: - col = 1; - break; - case 0x80: - col = (code & 0x40) ? 1 : 0; - break; - case 0xa0: - col = (code & 0x40) ? 3 : 2; - break; - } - - tileinfo.set(((code & 0xa0) == 0x80) ? 1 : 0, num, col, 0); -} - - -void dragrace_state::video_start() -{ - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(dragrace_state::get_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 16, 16); -} - - -uint32_t dragrace_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) -{ - m_bg_tilemap->mark_all_dirty(); - - for (int y = 0; y < 256; y += 4) - { - rectangle rect = cliprect; - - int xl = m_position_ram[y + 0] & 15; - int xh = m_position_ram[y + 1] & 15; - int yl = m_position_ram[y + 2] & 15; - int yh = m_position_ram[y + 3] & 15; - - m_bg_tilemap->set_scrollx(0, 16 * xh + xl - 8); - m_bg_tilemap->set_scrolly(0, 16 * yh + yl); - - rect.sety((std::max)(rect.top(), y + 0), (std::min)(rect.bottom(), y + 3)); - - m_bg_tilemap->draw(screen, bitmap, rect, 0, 0); - } - - return 0; -}