diff options
Diffstat (limited to 'src/mame/atari/blstroid.cpp')
-rw-r--r-- | src/mame/atari/blstroid.cpp | 300 |
1 files changed, 245 insertions, 55 deletions
diff --git a/src/mame/atari/blstroid.cpp b/src/mame/atari/blstroid.cpp index 49f3a0efe74..010dc3c2363 100644 --- a/src/mame/atari/blstroid.cpp +++ b/src/mame/atari/blstroid.cpp @@ -1,5 +1,6 @@ // license:BSD-3-Clause -// copyright-holders:Aaron Giles +// copyright-holders: Aaron Giles + /*************************************************************************** Atari Blasteroids hardware @@ -20,18 +21,218 @@ #include "emu.h" -#include "blstroid.h" + +#include "atarigen.h" +#include "atarijsa.h" +#include "atarimo.h" #include "cpu/m68000/m68000.h" #include "machine/eeprompar.h" +#include "machine/timer.h" #include "machine/watchdog.h" + #include "emupal.h" #include "speaker.h" +#include "tilemap.h" + + +namespace { + +class blstroid_state : public atarigen_state +{ +public: + blstroid_state(const machine_config &mconfig, device_type type, const char *tag) : + atarigen_state(mconfig, type, tag), + m_playfield_tilemap(*this, "playfield"), + m_jsa(*this, "jsa"), + m_mob(*this, "mob"), + m_priorityram(*this, "priorityram") + { } + + void blstroid(machine_config &config); + +protected: + virtual void machine_reset() override; + virtual void video_start() override; + +private: + TIMER_CALLBACK_MEMBER(irq_off); + TIMER_CALLBACK_MEMBER(irq_on); + TIMER_DEVICE_CALLBACK_MEMBER(scanline_update); + void scanline_int_ack_w(uint16_t data = 0); + void video_int_ack_w(uint16_t data = 0); + void halt_until_hblank_0_w(uint16_t data = 0); + TILE_GET_INFO_MEMBER(get_playfield_tile_info); + uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + + void main_map(address_map &map); + + required_device<tilemap_device> m_playfield_tilemap; + required_device<atari_jsa_i_device> m_jsa; + required_device<atari_motion_objects_device> m_mob; + required_shared_ptr<uint16_t> m_priorityram; + + emu_timer *m_irq_off_timer = nullptr; + emu_timer *m_irq_on_timer = nullptr; + + static const atari_motion_objects_config s_mob_config; + + bool m_scanline_int_state = false; +}; + + +/************************************* + * + * Tilemap callbacks + * + *************************************/ + +TILE_GET_INFO_MEMBER(blstroid_state::get_playfield_tile_info) +{ + uint16_t const data = m_playfield_tilemap->basemem_read(tile_index); + int const code = data & 0x1fff; + int const color = (data >> 13) & 0x07; + tileinfo.set(0, code, color, 0); +} /************************************* * + * Video system start + * + *************************************/ + +const atari_motion_objects_config blstroid_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? + 0, // does the neighbor bit affect the next object? + 0, // pixels per SLIP entry (0 for no-slip) + 0, // pixel offset for SLIPs + 0, // maximum number of links to visit/scanline (0=all) + + 0x000, // base palette entry + 0x100, // maximum number of colors + 0, // transparent pen index + + {{ 0,0,0x0ff8,0 }}, // mask for the link + {{ 0,0x3fff,0,0 }}, // mask for the code index + {{ 0,0,0,0x000f }}, // mask for the color + {{ 0,0,0,0xffc0 }}, // mask for the X position + {{ 0xff80,0,0,0 }}, // mask for the Y position + {{ 0 }}, // mask for the width, in tiles + {{ 0x000f,0,0,0 }}, // mask for the height, in tiles + {{ 0,0x8000,0,0 }}, // mask for the horizontal flip + {{ 0,0x4000,0,0 }}, // mask for the vertical flip + {{ 0 }}, // mask for the priority + {{ 0 }}, // mask for the neighbor + {{ 0 }}, // mask for absolute coordinates + + {{ 0 }}, // mask for the special value + 0 // resulting value to indicate "special" +}; + +void blstroid_state::video_start() +{ + m_irq_off_timer = timer_alloc(FUNC(blstroid_state::irq_off), this); + m_irq_on_timer = timer_alloc(FUNC(blstroid_state::irq_on), this); + + m_scanline_int_state = false; + + save_item(NAME(m_scanline_int_state)); +} + + + +/************************************* + * + * Periodic scanline updater + * + *************************************/ + +TIMER_CALLBACK_MEMBER(blstroid_state::irq_off) +{ + m_maincpu->set_input_line(M68K_IRQ_1, CLEAR_LINE); +} + +TIMER_CALLBACK_MEMBER(blstroid_state::irq_on) +{ + m_maincpu->set_input_line(M68K_IRQ_1, ASSERT_LINE); +} + + +TIMER_DEVICE_CALLBACK_MEMBER(blstroid_state::scanline_update) +{ + int const scanline = param; + int const offset = (scanline / 8) * 64 + 40; + + // check for interrupts + if (offset < 0x800) + if (m_playfield_tilemap->basemem_read(offset) & 0x8000) + { + // FIXME: - the only thing this IRQ does it tweak the starting MO link + // unfortunately, it does it too early for the given MOs! + // perhaps it is not actually hooked up on the real PCB... + return; + + // set a timer to turn the interrupt on at HBLANK of the 7th scanline + // and another to turn it off one scanline later + int const width = m_screen->width(); + int const vpos = m_screen->vpos(); + attotime const period_on = m_screen->time_until_pos(vpos + 7, width * 0.9); + attotime const period_off = m_screen->time_until_pos(vpos + 8, width * 0.9); + + m_irq_on_timer->adjust(period_on); + m_irq_off_timer->adjust(period_off); + } +} + + + +/************************************* + * + * Main refresh + * + *************************************/ + +uint32_t blstroid_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + // start drawing + m_mob->draw_async(cliprect); + + // draw the playfield + m_playfield_tilemap->draw(screen, bitmap, cliprect, 0, 0); + + // draw and merge the MO + bitmap_ind16 &mobitmap = m_mob->bitmap(); + for (const sparse_dirty_rect *rect = m_mob->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) + { + /* verified via schematics + + priority address = HPPPMMMM + */ + int const priaddr = ((pf[x] & 8) << 4) | (pf[x] & 0x70) | ((mo[x] & 0xf0) >> 4); + if (m_priorityram[priaddr] & 1) + pf[x] = mo[x]; + } + } + return 0; +} + + +/************************************* + * * Initialization & interrupts * *************************************/ @@ -67,7 +268,7 @@ void blstroid_state::machine_reset() * *************************************/ -/* full map verified from schematics */ +// full map verified from schematics void blstroid_state::main_map(address_map &map) { map.unmap_value_high(); @@ -77,7 +278,7 @@ void blstroid_state::main_map(address_map &map) map(0x800200, 0x800201).mirror(0x0381fe).w(FUNC(blstroid_state::scanline_int_ack_w)); map(0x800400, 0x800401).mirror(0x0381fe).w(FUNC(blstroid_state::video_int_ack_w)); map(0x800600, 0x800601).mirror(0x0381fe).w("eeprom", FUNC(eeprom_parallel_28xx_device::unlock_write16)); - map(0x800800, 0x8009ff).mirror(0x038000).writeonly().share("priorityram"); + map(0x800800, 0x8009ff).mirror(0x038000).writeonly().share(m_priorityram); map(0x800a01, 0x800a01).mirror(0x0381fe).w(m_jsa, FUNC(atari_jsa_i_device::main_command_w)); map(0x800c00, 0x800c01).mirror(0x0381fe).w(m_jsa, FUNC(atari_jsa_i_device::sound_reset_w)); map(0x800e00, 0x800e01).mirror(0x0381fe).w(FUNC(blstroid_state::halt_until_hblank_0_w)); @@ -102,15 +303,15 @@ void blstroid_state::main_map(address_map &map) *************************************/ static INPUT_PORTS_START( blstroid ) - PORT_START("DIAL0") /* ff9800 */ + PORT_START("DIAL0") // ff9800 PORT_BIT( 0x00ff, 0, IPT_DIAL ) PORT_SENSITIVITY(60) PORT_KEYDELTA(10) PORT_PLAYER(1) PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_START("DIAL1") /* ff9804 */ + PORT_START("DIAL1") // ff9804 PORT_BIT( 0x00ff, 0, IPT_DIAL ) PORT_SENSITIVITY(60) PORT_KEYDELTA(10) PORT_PLAYER(2) PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_START("IN0") /* ff9c00 */ + PORT_START("IN0") // ff9c00 PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) @@ -121,7 +322,7 @@ static INPUT_PORTS_START( blstroid ) PORT_SERVICE( 0x0080, IP_ACTIVE_LOW ) PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_START("IN1") /* ff9c02 */ + PORT_START("IN1") // ff9c02 PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) @@ -167,8 +368,8 @@ static const gfx_layout molayout = static GFXDECODE_START( gfx_blstroid ) - GFXDECODE_ENTRY( "gfx1", 0, pflayout, 256, 16 ) - GFXDECODE_ENTRY( "gfx2", 0, molayout, 0, 16 ) + GFXDECODE_ENTRY( "tiles", 0, pflayout, 256, 16 ) + GFXDECODE_ENTRY( "sprites", 0, molayout, 0, 16 ) GFXDECODE_END @@ -181,8 +382,8 @@ GFXDECODE_END void blstroid_state::blstroid(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, &blstroid_state::main_map); EEPROM_2804(config, "eeprom").lock_after_write(true); @@ -191,26 +392,26 @@ void blstroid_state::blstroid(machine_config &config) WATCHDOG_TIMER(config, "watchdog"); - /* video hardware */ + // video hardware GFXDECODE(config, "gfxdecode", "palette", gfx_blstroid); PALETTE(config, "palette").set_format(palette_device::xRGB_555, 512); - TILEMAP(config, m_playfield_tilemap, m_gfxdecode, 2, 16,8, TILEMAP_SCAN_ROWS, 64,64).set_info_callback(FUNC(blstroid_state::get_playfield_tile_info)); + TILEMAP(config, m_playfield_tilemap, m_gfxdecode, 2, 16, 8, TILEMAP_SCAN_ROWS, 64, 32).set_info_callback(FUNC(blstroid_state::get_playfield_tile_info)); ATARI_MOTION_OBJECTS(config, m_mob, 0, m_screen, blstroid_state::s_mob_config); m_mob->set_gfxdecode(m_gfxdecode); 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, 320*2, 262, 0, 240); - m_screen->set_screen_update(FUNC(blstroid_state::screen_update_blstroid)); + m_screen->set_screen_update(FUNC(blstroid_state::screen_update)); m_screen->set_palette("palette"); m_screen->screen_vblank().set_inputline(m_maincpu, M68K_IRQ_2, ASSERT_LINE); - /* sound hardware */ + // sound hardware SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); @@ -232,22 +433,22 @@ void blstroid_state::blstroid(machine_config &config) *************************************/ ROM_START( blstroid ) - ROM_REGION( 0x40000, "maincpu", 0 ) /* 4*64k for 68000 code */ + ROM_REGION( 0x40000, "maincpu", 0 ) // 68000 code ROM_LOAD16_BYTE( "136057-4123.6c", 0x000000, 0x010000, CRC(d14badc4) SHA1(ccba30e1eb6b3351cbc7ea18951debb7f7aa4520) ) ROM_LOAD16_BYTE( "136057-4121.6b", 0x000001, 0x010000, CRC(ae3e93e8) SHA1(66ccff68e9b0f7e97abf126f977775e29ce4eee5) ) ROM_LOAD16_BYTE( "136057-4124.4c", 0x020000, 0x010000, CRC(fd2365df) SHA1(63ed3f9a92fed985f9ddb93687f11a24c8309f56) ) ROM_LOAD16_BYTE( "136057-4122.4b", 0x020001, 0x010000, CRC(c364706e) SHA1(e03cd60d139000607d83240b0b48865eafb1188b) ) - ROM_REGION( 0x10000, "jsa:cpu", 0 ) /* 64k for 6502 code */ + ROM_REGION( 0x10000, "jsa:cpu", 0 ) // 6502 code ROM_LOAD( "136057-1135.2k", 0x00000, 0x10000, CRC(baa8b5fe) SHA1(4af1f9bec3ffa856016a89bc20041d572305ba3a) ) - ROM_REGION( 0x040000, "gfx1", 0 ) + ROM_REGION( 0x040000, "tiles", 0 ) ROM_LOAD( "136057-1101.1l", 0x000000, 0x010000, CRC(3c2daa5b) SHA1(2710a05e95afd8452104c4f4a9250a3b7d728a42) ) ROM_LOAD( "136057-1102.1m", 0x010000, 0x010000, CRC(f84f0b97) SHA1(00cb5f1e0f92742683ee71854085b1e4db4bd6bb) ) ROM_LOAD( "136057-1103.3l", 0x020000, 0x010000, CRC(ae5274f0) SHA1(87070e6e51d557c1b10ef32ac0ed670856d5aaf1) ) ROM_LOAD( "136057-1104.3m", 0x030000, 0x010000, CRC(4bb72060) SHA1(94cd1a6900f47a5178cec041fa6dc9cfee1f9c3f) ) - ROM_REGION( 0x100000, "gfx2", 0 ) + ROM_REGION( 0x100000, "sprites", 0 ) ROM_LOAD( "136057-1105.5m", 0x000000, 0x010000, CRC(50e0823f) SHA1(f638becad83307ed43d138d452199e4c6725512f) ) ROM_LOAD( "136057-1107.67m", 0x010000, 0x010000, CRC(729de7a9) SHA1(526b08e6d54cd0b991c4207c23119d2940a34009) ) ROM_LOAD( "136057-1109.8m", 0x020000, 0x010000, CRC(090e42ab) SHA1(903aa99e6e39407319f6e90102b24604884ee047) ) @@ -268,22 +469,22 @@ ROM_END ROM_START( blstroid3 ) - ROM_REGION( 0x40000, "maincpu", 0 ) /* 4*64k for 68000 code */ + ROM_REGION( 0x40000, "maincpu", 0 ) // 68000 code ROM_LOAD16_BYTE( "136057-3123.6c", 0x000000, 0x010000, CRC(8fb050f5) SHA1(4944ffb0843262afe41fc6b876ab6858dcefc95f) ) ROM_LOAD16_BYTE( "136057-3121.6b", 0x000001, 0x010000, CRC(21fae262) SHA1(2516a75d76bcfdea5ab41a4898d47ed166bd1996) ) ROM_LOAD16_BYTE( "136057-3124.4c", 0x020000, 0x010000, CRC(a9140c31) SHA1(02518bf998c0c74dff66f3192dcb1f91b1812cf8) ) ROM_LOAD16_BYTE( "136057-3122.4b", 0x020001, 0x010000, CRC(137fbb17) SHA1(3dda03ecdb2dc9a9cd78aeaa502497662496a26d) ) - ROM_REGION( 0x10000, "jsa:cpu", 0 ) /* 64k for 6502 code */ + ROM_REGION( 0x10000, "jsa:cpu", 0 ) // 6502 code ROM_LOAD( "136057-1135.2k", 0x00000, 0x10000, CRC(baa8b5fe) SHA1(4af1f9bec3ffa856016a89bc20041d572305ba3a) ) - ROM_REGION( 0x040000, "gfx1", 0 ) + ROM_REGION( 0x040000, "tiles", 0 ) ROM_LOAD( "136057-1101.1l", 0x000000, 0x010000, CRC(3c2daa5b) SHA1(2710a05e95afd8452104c4f4a9250a3b7d728a42) ) ROM_LOAD( "136057-1102.1m", 0x010000, 0x010000, CRC(f84f0b97) SHA1(00cb5f1e0f92742683ee71854085b1e4db4bd6bb) ) ROM_LOAD( "136057-1103.3l", 0x020000, 0x010000, CRC(ae5274f0) SHA1(87070e6e51d557c1b10ef32ac0ed670856d5aaf1) ) ROM_LOAD( "136057-1104.3m", 0x030000, 0x010000, CRC(4bb72060) SHA1(94cd1a6900f47a5178cec041fa6dc9cfee1f9c3f) ) - ROM_REGION( 0x100000, "gfx2", 0 ) + ROM_REGION( 0x100000, "sprites", 0 ) ROM_LOAD( "136057-1105.5m", 0x000000, 0x010000, CRC(50e0823f) SHA1(f638becad83307ed43d138d452199e4c6725512f) ) ROM_LOAD( "136057-1107.67m", 0x010000, 0x010000, CRC(729de7a9) SHA1(526b08e6d54cd0b991c4207c23119d2940a34009) ) ROM_LOAD( "136057-1109.8m", 0x020000, 0x010000, CRC(090e42ab) SHA1(903aa99e6e39407319f6e90102b24604884ee047) ) @@ -304,22 +505,22 @@ ROM_END ROM_START( blstroid2 ) - ROM_REGION( 0x40000, "maincpu", 0 ) /* 4*64k for 68000 code */ + ROM_REGION( 0x40000, "maincpu", 0 ) // 68000 code ROM_LOAD16_BYTE( "136057-2123.6c", 0x000000, 0x010000, CRC(5a092513) SHA1(11396125842ea3a43d61b4ce266bb8053fdefd73) ) ROM_LOAD16_BYTE( "136057-2121.6b", 0x000001, 0x010000, CRC(486aac51) SHA1(5e7fe7eb225d1c2701c21658ba2bad14ef7b64b1) ) ROM_LOAD16_BYTE( "136057-2124.4c", 0x020000, 0x010000, CRC(d0fa38fe) SHA1(8aeae50dff6bcd14ac5faf10f15724b7f7430f5c) ) ROM_LOAD16_BYTE( "136057-2122.4b", 0x020001, 0x010000, CRC(744bf921) SHA1(bb9118bfc04745df2eb78e1d1e70f7fc2e0509d4) ) - ROM_REGION( 0x10000, "jsa:cpu", 0 ) /* 64k for 6502 code */ + ROM_REGION( 0x10000, "jsa:cpu", 0 ) // 6502 code ROM_LOAD( "136057-1135.2k", 0x00000, 0x10000, CRC(baa8b5fe) SHA1(4af1f9bec3ffa856016a89bc20041d572305ba3a) ) - ROM_REGION( 0x040000, "gfx1", 0 ) + ROM_REGION( 0x040000, "tiles", 0 ) ROM_LOAD( "136057-1101.1l", 0x000000, 0x010000, CRC(3c2daa5b) SHA1(2710a05e95afd8452104c4f4a9250a3b7d728a42) ) ROM_LOAD( "136057-1102.1m", 0x010000, 0x010000, CRC(f84f0b97) SHA1(00cb5f1e0f92742683ee71854085b1e4db4bd6bb) ) ROM_LOAD( "136057-1103.3l", 0x020000, 0x010000, CRC(ae5274f0) SHA1(87070e6e51d557c1b10ef32ac0ed670856d5aaf1) ) ROM_LOAD( "136057-1104.3m", 0x030000, 0x010000, CRC(4bb72060) SHA1(94cd1a6900f47a5178cec041fa6dc9cfee1f9c3f) ) - ROM_REGION( 0x100000, "gfx2", 0 ) + ROM_REGION( 0x100000, "sprites", 0 ) ROM_LOAD( "136057-1105.5m", 0x000000, 0x010000, CRC(50e0823f) SHA1(f638becad83307ed43d138d452199e4c6725512f) ) ROM_LOAD( "136057-1107.67m", 0x010000, 0x010000, CRC(729de7a9) SHA1(526b08e6d54cd0b991c4207c23119d2940a34009) ) ROM_LOAD( "136057-1109.8m", 0x020000, 0x010000, CRC(090e42ab) SHA1(903aa99e6e39407319f6e90102b24604884ee047) ) @@ -340,22 +541,22 @@ ROM_END ROM_START( blstroidg ) - ROM_REGION( 0x40000, "maincpu", 0 ) /* 4*64k for 68000 code */ + ROM_REGION( 0x40000, "maincpu", 0 ) // 68000 code ROM_LOAD16_BYTE( "136057-2223.6c", 0x000000, 0x010000, CRC(cc82108b) SHA1(487a80cac2a196e9b17c64c5d0b884d1ed8da401) ) ROM_LOAD16_BYTE( "136057-2221.6b", 0x000001, 0x010000, CRC(84822e68) SHA1(763edc9b3605e583506ca1d9befab66411fc720a) ) ROM_LOAD16_BYTE( "136057-2224.4c", 0x020000, 0x010000, CRC(849249d4) SHA1(61d6eaff7df54f0353639e192eb6074a80916e29) ) ROM_LOAD16_BYTE( "136057-2222.4b", 0x020001, 0x010000, CRC(bdeaba0d) SHA1(f479514b5d9543f9e12aa1ac48e20bf054cb18d0) ) - ROM_REGION( 0x10000, "jsa:cpu", 0 ) /* 64k for 6502 code */ + ROM_REGION( 0x10000, "jsa:cpu", 0 ) // 6502 code ROM_LOAD( "136057-1135.2k", 0x00000, 0x10000, CRC(baa8b5fe) SHA1(4af1f9bec3ffa856016a89bc20041d572305ba3a) ) - ROM_REGION( 0x040000, "gfx1", 0 ) + ROM_REGION( 0x040000, "tiles", 0 ) ROM_LOAD( "136057-1101.1l", 0x000000, 0x010000, CRC(3c2daa5b) SHA1(2710a05e95afd8452104c4f4a9250a3b7d728a42) ) ROM_LOAD( "136057-1102.1m", 0x010000, 0x010000, CRC(f84f0b97) SHA1(00cb5f1e0f92742683ee71854085b1e4db4bd6bb) ) ROM_LOAD( "136057-1103.3l", 0x020000, 0x010000, CRC(ae5274f0) SHA1(87070e6e51d557c1b10ef32ac0ed670856d5aaf1) ) ROM_LOAD( "136057-1104.3m", 0x030000, 0x010000, CRC(4bb72060) SHA1(94cd1a6900f47a5178cec041fa6dc9cfee1f9c3f) ) - ROM_REGION( 0x100000, "gfx2", 0 ) + ROM_REGION( 0x100000, "sprites", 0 ) ROM_LOAD( "136057-1105.5m", 0x000000, 0x010000, CRC(50e0823f) SHA1(f638becad83307ed43d138d452199e4c6725512f) ) ROM_LOAD( "136057-1107.67m", 0x010000, 0x010000, CRC(729de7a9) SHA1(526b08e6d54cd0b991c4207c23119d2940a34009) ) ROM_LOAD( "136057-1109.8m", 0x020000, 0x010000, CRC(090e42ab) SHA1(903aa99e6e39407319f6e90102b24604884ee047) ) @@ -376,22 +577,22 @@ ROM_END ROM_START( blstroidh ) - ROM_REGION( 0x40000, "maincpu", 0 ) /* 4*64k for 68000 code */ + ROM_REGION( 0x40000, "maincpu", 0 ) // 68000 code ROM_LOAD16_BYTE( "eheadh0.c6", 0x00000, 0x10000, CRC(061f0898) SHA1(a277399aa8af665b1fb40c2bb4cf5d36d333db8d) ) ROM_LOAD16_BYTE( "eheadl0.b6", 0x00001, 0x10000, CRC(ae8df7cb) SHA1(9eaf377bbfa09e2d3ae77764dbf09ff79b65b34f) ) ROM_LOAD16_BYTE( "eheadh1.c5", 0x20000, 0x10000, CRC(0b7a3cb6) SHA1(7dc585ff536055e85b0849aa075f2fdab34a8e1c) ) ROM_LOAD16_BYTE( "eheadl1.b5", 0x20001, 0x10000, CRC(43971694) SHA1(a39a8da244645bb56081fd71609a33d8b7d78478) ) - ROM_REGION( 0x10000, "jsa:cpu", 0 ) /* 64k for 6502 code */ + ROM_REGION( 0x10000, "jsa:cpu", 0 ) // 6502 code ROM_LOAD( "136057-1135.2k", 0x00000, 0x10000, CRC(baa8b5fe) SHA1(4af1f9bec3ffa856016a89bc20041d572305ba3a) ) - ROM_REGION( 0x040000, "gfx1", 0 ) + ROM_REGION( 0x040000, "tiles", 0 ) ROM_LOAD( "136057-1101.1l", 0x000000, 0x010000, CRC(3c2daa5b) SHA1(2710a05e95afd8452104c4f4a9250a3b7d728a42) ) ROM_LOAD( "136057-1102.1m", 0x010000, 0x010000, CRC(f84f0b97) SHA1(00cb5f1e0f92742683ee71854085b1e4db4bd6bb) ) ROM_LOAD( "136057-1103.3l", 0x020000, 0x010000, CRC(ae5274f0) SHA1(87070e6e51d557c1b10ef32ac0ed670856d5aaf1) ) ROM_LOAD( "136057-1104.3m", 0x030000, 0x010000, CRC(4bb72060) SHA1(94cd1a6900f47a5178cec041fa6dc9cfee1f9c3f) ) - ROM_REGION( 0x100000, "gfx2", 0 ) + ROM_REGION( 0x100000, "sprites", 0 ) ROM_LOAD( "136057-1105.5m", 0x000000, 0x010000, CRC(50e0823f) SHA1(f638becad83307ed43d138d452199e4c6725512f) ) ROM_LOAD( "136057-1107.67m", 0x010000, 0x010000, CRC(729de7a9) SHA1(526b08e6d54cd0b991c4207c23119d2940a34009) ) ROM_LOAD( "136057-1109.8m", 0x020000, 0x010000, CRC(090e42ab) SHA1(903aa99e6e39407319f6e90102b24604884ee047) ) @@ -410,18 +611,7 @@ ROM_START( blstroidh ) ROM_LOAD( "moh7.n16", 0x0f0000, 0x010000, CRC(a93cbbe7) SHA1(5583e2421ae25181039c6145319453fb73e7bbf5) ) ROM_END - - -/************************************* - * - * Driver initialization - * - *************************************/ - -void blstroid_state::init_blstroid() -{ -} - +} // anonymous namespace /************************************* @@ -430,8 +620,8 @@ void blstroid_state::init_blstroid() * *************************************/ -GAME( 1987, blstroid, 0, blstroid, blstroid, blstroid_state, init_blstroid, ROT0, "Atari Games", "Blasteroids (rev 4)", 0 ) -GAME( 1987, blstroid3, blstroid, blstroid, blstroid, blstroid_state, init_blstroid, ROT0, "Atari Games", "Blasteroids (rev 3)", 0 ) -GAME( 1987, blstroid2, blstroid, blstroid, blstroid, blstroid_state, init_blstroid, ROT0, "Atari Games", "Blasteroids (rev 2)", 0 ) -GAME( 1987, blstroidg, blstroid, blstroid, blstroid, blstroid_state, init_blstroid, ROT0, "Atari Games", "Blasteroids (German, rev 2)", 0 ) -GAME( 1987, blstroidh, blstroid, blstroid, blstroid, blstroid_state, init_blstroid, ROT0, "Atari Games", "Blasteroids (with heads)", 0 ) +GAME( 1987, blstroid, 0, blstroid, blstroid, blstroid_state, empty_init, ROT0, "Atari Games", "Blasteroids (rev 4)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, blstroid3, blstroid, blstroid, blstroid, blstroid_state, empty_init, ROT0, "Atari Games", "Blasteroids (rev 3)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, blstroid2, blstroid, blstroid, blstroid, blstroid_state, empty_init, ROT0, "Atari Games", "Blasteroids (rev 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, blstroidg, blstroid, blstroid, blstroid, blstroid_state, empty_init, ROT0, "Atari Games", "Blasteroids (German, rev 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, blstroidh, blstroid, blstroid, blstroid, blstroid_state, empty_init, ROT0, "Atari Games", "Blasteroids (with heads)", MACHINE_SUPPORTS_SAVE ) |