summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/popper.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/popper.cpp')
-rw-r--r--src/mame/drivers/popper.cpp598
1 files changed, 0 insertions, 598 deletions
diff --git a/src/mame/drivers/popper.cpp b/src/mame/drivers/popper.cpp
deleted file mode 100644
index 2df587d50d6..00000000000
--- a/src/mame/drivers/popper.cpp
+++ /dev/null
@@ -1,598 +0,0 @@
-// license: BSD-3-Clause
-// copyright-holders: Dirk Best
-/***************************************************************************
-
- Popper
-
- © 1983 Omori Electric Co. (OEC)
-
- PCB connector pinout
-
- GND 1 2 GND
- GND 3 4 GND
- 5V 5 6 5V
- 5V 7 8 5V
- Speaker 9 10 Speaker
- 12V 11 12 12V
- 1-P Push 13 14 1-P Right
- 2-P Push 15 16 2-P Right
- 1-P Start 17 18 1-P Left
- 2-P Start 19 20 2-P Left
- Coin A 21 22 1-P Down
- Coin B 23 24 2-P Down
- Service 25 26 1-P Up
- 27 28 2-P Up
- 29 30
- 31 32
- Synic 33 34 Red
- Green 35 36 Blue
- 5V 37 38 5V
- 5V 39 40 5V
- GND 41 42 GND
-
- TODO:
- - According to the schematics the sub CPU ROM should be 0x2000
- - Verify screen raw parameters
- - Verify graphics with real hardware
- - Watchdog
-
-***************************************************************************/
-
-#include "emu.h"
-#include "cpu/z80/z80.h"
-#include "sound/ay8910.h"
-#include "video/resnet.h"
-#include "emupal.h"
-#include "screen.h"
-#include "speaker.h"
-#include "tilemap.h"
-
-
-//**************************************************************************
-// TYPE DEFINITIONS
-//**************************************************************************
-
-class popper_state : public driver_device
-{
-public:
- popper_state(const machine_config &mconfig, device_type type, const char *tag) :
- driver_device(mconfig, type, tag),
- m_maincpu(*this, "maincpu"),
- m_subcpu(*this, "subcpu"),
- m_screen(*this, "screen"),
- m_gfxdecode(*this, "gfxdecode"),
- m_ay{ {*this, "ay1"}, {*this, "ay2"} },
- m_video_ram(*this, "video_ram"),
- m_attribute_ram(*this, "attribute_ram"),
- m_sprite_ram(*this, "sprite_ram"),
- m_inputs{ {*this, "in1"}, {*this, "in0"}, {*this, "dsw2"}, {*this, "dsw1"} },
- m_scanline_timer(nullptr),
- m_layer0_tilemap(nullptr), m_layer1_tilemap(nullptr),
- m_nmi_enable(0), m_back_color(0), m_vram_page(0)
- { }
-
- void popper(machine_config &config);
-
-protected:
- virtual void machine_start() override;
- virtual void machine_reset() override;
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
-
-private:
- required_device<z80_device> m_maincpu;
- required_device<z80_device> m_subcpu;
- required_device<screen_device> m_screen;
- required_device<gfxdecode_device> m_gfxdecode;
- required_device<ay8910_device> m_ay[2];
- required_shared_ptr<uint8_t> m_video_ram;
- required_shared_ptr<uint8_t> m_attribute_ram;
- required_shared_ptr<uint8_t> m_sprite_ram;
- required_ioport m_inputs[4];
-
- emu_timer *m_scanline_timer;
- tilemap_t *m_layer0_tilemap;
- tilemap_t *m_layer1_tilemap;
-
- int m_nmi_enable;
- int m_back_color;
- int m_vram_page;
-
- void main_map(address_map &map);
- void sub_map(address_map &map);
-
- void popper_palette(palette_device &palette) const;
- uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- TILE_GET_INFO_MEMBER(layer0_tile_info);
- TILE_GET_INFO_MEMBER(layer1_tile_info);
-
- void nmi_control_w(uint8_t data);
- void crt_direction_w(uint8_t data);
- void back_color_select_w(uint8_t data);
- void vram_page_select_w(uint8_t data);
- void intcycle_w(offs_t offset, uint8_t data);
- uint8_t subcpu_nmi_r();
- uint8_t subcpu_reset_r();
- void ay1_w(offs_t offset, uint8_t data);
- uint8_t watchdog_clear_r();
- uint8_t inputs_r(offs_t offset);
-};
-
-
-//**************************************************************************
-// ADDRESS MAPS
-//**************************************************************************
-
-void popper_state::main_map(address_map &map)
-{
- map(0x0000, 0x7fff).rom();
- map(0x8000, 0xbfff).noprw();
- map(0xc000, 0xc0ff).ram();
- map(0xc100, 0xc6ff).ram().share("video_ram");
- map(0xc700, 0xc8ff).ram();
- map(0xc900, 0xceff).ram().share("attribute_ram");
- map(0xcf00, 0xcfff).ram();
- map(0xd000, 0xd7ff).ram().share("sprite_ram");
- map(0xd800, 0xdfff).ram().share("shared");
- map(0xe000, 0xe003).mirror(0x03fc).r(FUNC(popper_state::inputs_r));
- map(0xe000, 0xe000).mirror(0x1ff8).w(FUNC(popper_state::nmi_control_w));
- map(0xe001, 0xe001).mirror(0x1ff8).w(FUNC(popper_state::crt_direction_w));
- map(0xe002, 0xe002).mirror(0x1ff8).w(FUNC(popper_state::back_color_select_w));
- map(0xe003, 0xe003).mirror(0x1ff8).w(FUNC(popper_state::vram_page_select_w));
- map(0xe004, 0xe007).mirror(0x1ff8).w(FUNC(popper_state::intcycle_w));
- map(0xe400, 0xe400).mirror(0x03ff).r(FUNC(popper_state::subcpu_nmi_r));
- map(0xe800, 0xf7ff).noprw();
- map(0xf800, 0xf800).mirror(0x03ff).r(FUNC(popper_state::subcpu_reset_r));
- map(0xfc00, 0xfc00).mirror(0x03ff).r(FUNC(popper_state::watchdog_clear_r));
-}
-
-void popper_state::sub_map(address_map &map)
-{
- map(0x0000, 0x1fff).rom();
- map(0x2000, 0x7fff).noprw();
- map(0x8000, 0x8003).mirror(0x1ffc).w(FUNC(popper_state::ay1_w));
- map(0xa000, 0xa003).mirror(0x1ffc).w("ay2", FUNC(ay8910_device::write_bc1_bc2));
- map(0xc000, 0xc7ff).mirror(0x1800).ram().share("shared");
- map(0xe000, 0xffff).noprw();
-}
-
-
-//**************************************************************************
-// INPUT PORT DEFINITIONS
-//**************************************************************************
-
-static INPUT_PORTS_START( popper )
- PORT_START("in0")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_COIN1)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN) PORT_8WAY
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_COIN2)
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN) PORT_COCKTAIL PORT_8WAY
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_SERVICE1)
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP) PORT_8WAY
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_UNUSED)
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP) PORT_COCKTAIL PORT_8WAY
-
- PORT_START("in1")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_BUTTON1)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT) PORT_8WAY
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_COCKTAIL
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT) PORT_COCKTAIL PORT_8WAY
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_START1)
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT) PORT_8WAY
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_START2)
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT) PORT_COCKTAIL PORT_8WAY
-
- PORT_START("dsw1")
- PORT_DIPNAME(0x03, 0x00, DEF_STR( Coin_A )) PORT_DIPLOCATION("DSW1:1,2")
- PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ))
- PORT_DIPSETTING( 0x02, DEF_STR( 2C_1C ))
- PORT_DIPSETTING( 0x01, DEF_STR( 3C_1C ))
- PORT_DIPSETTING( 0x03, DEF_STR( 1C_2C ))
- PORT_DIPNAME(0x0c, 0x04, DEF_STR( Coin_B )) PORT_DIPLOCATION("DSW1:3,4")
- PORT_DIPSETTING( 0x00, DEF_STR( 1C_3C ))
- PORT_DIPSETTING( 0x08, DEF_STR( 1C_4C ))
- PORT_DIPSETTING( 0x04, DEF_STR( 1C_5C ))
- PORT_DIPSETTING( 0x0c, DEF_STR( 1C_6C ))
- PORT_DIPNAME(0x30, 0x20, DEF_STR( Lives )) PORT_DIPLOCATION("DSW1:5,6")
- PORT_DIPSETTING( 0x00, "2")
- PORT_DIPSETTING( 0x20, "3")
- PORT_DIPSETTING( 0x10, "4")
- PORT_DIPSETTING( 0x30, "5")
- PORT_DIPNAME(0xc0, 0x00, DEF_STR( Bonus_Life )) PORT_DIPLOCATION("DSW1:7,8")
- PORT_DIPSETTING( 0x00, "20,000 Points")
- PORT_DIPSETTING( 0x80, "30,000 Points")
- PORT_DIPSETTING( 0x40, "40,000 Points")
- PORT_DIPSETTING( 0xc0, "50,000 Points")
-
- PORT_START("dsw2")
- PORT_DIPNAME(0x01, 0x01, DEF_STR( Demo_Sounds )) PORT_DIPLOCATION("DSW2:1")
- PORT_DIPSETTING( 0x00, DEF_STR( Off ))
- PORT_DIPSETTING( 0x01, DEF_STR( On ))
- PORT_DIPUNUSED_DIPLOC(0x02, IP_ACTIVE_LOW, "DSW2:2")
- PORT_DIPNAME(0x04, 0x00, DEF_STR( Free_Play )) PORT_DIPLOCATION("DSW2:3")
- PORT_DIPSETTING( 0x00, DEF_STR( Off ))
- PORT_DIPSETTING( 0x04, DEF_STR( On ))
- PORT_DIPNAME(0x08, 0x00, "Invulnerability") PORT_DIPLOCATION("DSW2:4")
- PORT_DIPSETTING( 0x00, DEF_STR( Off ))
- PORT_DIPSETTING( 0x08, DEF_STR( On ))
- PORT_DIPNAME(0x10, 0x00, DEF_STR( Flip_Screen )) PORT_DIPLOCATION("DSW2:5")
- PORT_DIPSETTING( 0x00, DEF_STR( Off ))
- PORT_DIPSETTING( 0x10, DEF_STR( On ))
- PORT_DIPNAME(0x20, 0x20, DEF_STR( Cabinet )) PORT_DIPLOCATION("DSW2:6")
- PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ))
- PORT_DIPSETTING( 0x20, DEF_STR( Upright ))
- PORT_DIPNAME(0x40, 0x00, "Game Repeating") PORT_DIPLOCATION("DSW2:7")
- PORT_DIPSETTING( 0x00, DEF_STR( Off ))
- PORT_DIPSETTING( 0x40, DEF_STR( On ))
- PORT_DIPNAME(0x80, 0x00, DEF_STR( Pause )) PORT_DIPLOCATION("DSW2:8")
- PORT_DIPSETTING( 0x00, DEF_STR( Off ))
- PORT_DIPSETTING( 0x80, DEF_STR( On ))
-INPUT_PORTS_END
-
-
-//**************************************************************************
-// INPUT PORT HANDLING
-//**************************************************************************
-
-uint8_t popper_state::inputs_r(offs_t offset)
-{
- uint8_t data = 0;
-
- data |= BIT(m_inputs[3]->read(), offset + 4) << 7;
- data |= BIT(m_inputs[3]->read(), offset + 0) << 6;
- data |= BIT(m_inputs[2]->read(), offset + 4) << 5;
- data |= BIT(m_inputs[2]->read(), offset + 0) << 4;
- data |= BIT(m_inputs[1]->read(), offset + 4) << 3;
- data |= BIT(m_inputs[1]->read(), offset + 0) << 2;
- data |= BIT(m_inputs[0]->read(), offset + 4) << 1;
- data |= BIT(m_inputs[0]->read(), offset + 0) << 0;
-
- return data;
-}
-
-
-//**************************************************************************
-// PALETTE
-//**************************************************************************
-
-static const res_net_decode_info popper_decode_info =
-{
- 1,
- 0,
- 63,
- // R G B
- { 0, 0, 0 }, // offsets
- { 0, 3, 6 }, // shifts
- { 0x07, 0x07, 0x03 } // masks
-};
-
-static const res_net_info popper_net_info =
-{
- RES_NET_VCC_5V | RES_NET_VBIAS_5V | RES_NET_VIN_TTL_OUT,
- {
- { RES_NET_AMP_NONE, 0, 0, 3, { 1000, 470, 220 } },
- { RES_NET_AMP_NONE, 0, 0, 3, { 1000, 470, 220 } },
- { RES_NET_AMP_NONE, 0, 0, 2, { 470, 220, 0 } }
- }
-};
-
-void popper_state::popper_palette(palette_device &palette) const
-{
- const uint8_t *prom = memregion("colors")->base();
- std::vector<rgb_t> rgb;
-
- compute_res_net_all(rgb, prom, popper_decode_info, popper_net_info);
-
- palette.set_pen_colors(0, rgb);
- palette.palette()->normalize_range(0, 63);
-}
-
-
-//**************************************************************************
-// VIDEO EMULATION
-//**************************************************************************
-
-void popper_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
-{
- int y = m_screen->vpos();
-
- // the maincpu gets an nmi when we enter vblank (when enabled)
- m_maincpu->set_input_line(INPUT_LINE_NMI, (m_nmi_enable && y == 240) ? ASSERT_LINE : CLEAR_LINE);
-
- // the subcpu gets an interrupt each 32 lines
- m_subcpu->set_input_line(INPUT_LINE_IRQ0, ((y & 31) == 0) ? ASSERT_LINE : CLEAR_LINE);
-
- m_scanline_timer->adjust(m_screen->time_until_pos(y + 1, 0));
-}
-
-void popper_state::crt_direction_w(uint8_t data)
-{
- flip_screen_set(data);
-}
-
-void popper_state::back_color_select_w(uint8_t data)
-{
- m_back_color = data & 1;
-}
-
-void popper_state::vram_page_select_w(uint8_t data)
-{
- m_vram_page = data & 1;
-}
-
-uint32_t popper_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
-{
- bitmap.fill(0, cliprect);
-
- // always draw all tiles
- m_layer0_tilemap->mark_all_dirty();
- m_layer1_tilemap->mark_all_dirty();
-
- // draw the layers with lower priority
- m_layer0_tilemap->draw(screen, bitmap, cliprect, 0, 0);
- m_layer1_tilemap->draw(screen, bitmap, cliprect, 0, 0);
-
- // draw the sprites
- for (int offs = 0; offs < 0x800; offs += 4)
- {
- // 0 76543210 Y coordinate
- // 1 76543210 Code
- // 2 7------- Flip Y
- // 2 -6------ Flip X
- // 2 --54---- Not used
- // 2 ----3210 Color
- // 3 76543210 X coordinate
-
- int sx = m_sprite_ram[offs + 3];
- int sy = m_sprite_ram[offs + 0];
-
- // only render sprite if it's in the current offset range
- if (((sy + (flip_screen() ? 2 : 0)) >> 4) != ((~(offs >> 7)) & 0x0f))
- continue;
-
- sx += 64;
- sy = 240 - sy;
-
- int flipx = BIT(m_sprite_ram[offs + 2], 6);
- int flipy = BIT(m_sprite_ram[offs + 2], 7);
-
- if (flip_screen())
- {
- flipx = !flipx;
- flipy = !flipy;
-
- sx = 232 - sx;
- sx += 128;
- sy = (240 + 2) - sy;
- }
-
- int code = m_sprite_ram[offs + 1];
- int color = m_sprite_ram[offs + 2] & 0x0f;
-
- m_gfxdecode->gfx(2)->transpen(bitmap, cliprect, code, color, flipx, flipy, sx, sy, 0);
- }
-
- // draw the tiles with priority over the sprites
- m_layer0_tilemap->draw(screen, bitmap, cliprect, 1, 0);
- m_layer1_tilemap->draw(screen, bitmap, cliprect, 1, 0);
-
- return 0;
-}
-
-
-//**************************************************************************
-// DRAWGFX LAYOUTS
-//**************************************************************************
-
-static const gfx_layout layer0_charlayout =
-{
- 8,8,
- RGN_FRAC(2,2),
- 1,
- { 0, 4 },
- { STEP4(8,1), STEP4(0,1) },
- { STEP8(0,16) },
- 16*8
-};
-
-static const gfx_layout layer1_charlayout =
-{
- 8,8,
- RGN_FRAC(2,2),
- 2,
- { 0, 4 },
- { STEP4(8,1), STEP4(0,1) },
- { STEP8(0,16) },
- 16*8
-};
-
-static const gfx_layout spritelayout =
-{
- 16,16,
- RGN_FRAC(1,2),
- 2,
- { RGN_FRAC(0,2), RGN_FRAC(1,2) },
- { STEP8(8,1), STEP8(0,1) },
- { STEP16(0,16) },
- 16*2*8
-};
-
-static GFXDECODE_START( gfx_popper )
- GFXDECODE_ENTRY("tiles", 0, layer0_charlayout, 0, 32)
- GFXDECODE_ENTRY("tiles", 0, layer1_charlayout, 0, 16)
- GFXDECODE_ENTRY("sprites", 0, spritelayout, 0, 16)
-GFXDECODE_END
-
-// attribute ram layout
-// 7------- high priority
-// -654---- layer0 color
-// ----3210 layer1 color
-
-TILE_GET_INFO_MEMBER( popper_state::layer0_tile_info )
-{
- int code = (m_vram_page << 8) | m_video_ram[tile_index];
- int attr = m_attribute_ram[tile_index];
- int color = (~m_back_color & 1) << 3 | ((attr >> 4) & 7);
- color <<= 1;
-
- // high priority only applies if a color is set
- tileinfo.category = BIT(attr, 7) && (attr & 0x70);
-
- tileinfo.set(0, code, color, 0);
-}
-
-TILE_GET_INFO_MEMBER( popper_state::layer1_tile_info )
-{
- int code = (m_vram_page << 8) | m_video_ram[tile_index];
- int attr = m_attribute_ram[tile_index];
- int color = attr & 0x0f;
-
- tileinfo.category = BIT(attr, 7);
-
- tileinfo.set(1, code, color, 0);
-}
-
-
-//**************************************************************************
-// SUBCPU
-//**************************************************************************
-
-uint8_t popper_state::subcpu_nmi_r()
-{
- m_subcpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
- m_subcpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE);
-
- return 0;
-}
-
-uint8_t popper_state::subcpu_reset_r()
-{
- m_subcpu->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
- m_subcpu->set_input_line(INPUT_LINE_RESET, CLEAR_LINE);
-
- return 0;
-}
-
-void popper_state::ay1_w(offs_t offset, uint8_t data)
-{
- if (offset == 3)
- {
- m_ay[0]->reset();
- m_ay[1]->reset();
- }
-
- m_ay[0]->write_bc1_bc2(offset, data);
-}
-
-
-//**************************************************************************
-// MACHINE EMULATION
-//**************************************************************************
-
-void popper_state::nmi_control_w(uint8_t data)
-{
- m_nmi_enable = data & 1;
-}
-
-void popper_state::intcycle_w(offs_t offset, uint8_t data)
-{
- // set to 0 and apparently not used by the game
- logerror("intcycle_w: %d = %02x\n", offset, data);
-}
-
-uint8_t popper_state::watchdog_clear_r()
-{
- return 0;
-}
-
-void popper_state::machine_start()
-{
- // create tilemaps
- m_layer0_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(popper_state::layer0_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 48, 32);
- m_layer0_tilemap->set_transparent_pen(1);
-
- m_layer1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(popper_state::layer1_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 48, 32);
- m_layer1_tilemap->set_transparent_pen(0);
-
- // allocate and start scanline timer
- m_scanline_timer = timer_alloc(0);
- m_scanline_timer->adjust(m_screen->time_until_pos(0, 0));
-
- // register for save states
- save_item(NAME(m_nmi_enable));
- save_item(NAME(m_back_color));
- save_item(NAME(m_vram_page));
-}
-
-void popper_state::machine_reset()
-{
- m_nmi_enable = 0;
- m_back_color = 0;
- m_vram_page = 0;
-}
-
-
-//**************************************************************************
-// MACHINE DEFINTIONS
-//**************************************************************************
-
-void popper_state::popper(machine_config &config)
-{
- Z80(config, m_maincpu, XTAL(18'432'000)/3/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &popper_state::main_map);
-
- Z80(config, m_subcpu, XTAL(18'432'000)/3/2);
- m_subcpu->set_addrmap(AS_PROGRAM, &popper_state::sub_map);
-
- config.set_perfect_quantum(m_maincpu);
-
- // video hardware
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(XTAL(18'432'000)/3, 384, 48, 328, 264, 16, 240);
- m_screen->set_screen_update(FUNC(popper_state::screen_update));
- m_screen->set_palette("palette");
-
- GFXDECODE(config, m_gfxdecode, "palette", gfx_popper);
-
- PALETTE(config, "palette", FUNC(popper_state::popper_palette), 64);
-
- // audio hardware
- SPEAKER(config, "mono").front_center();
-
- AY8910(config, m_ay[0], XTAL(18'432'000)/3/2/2).add_route(ALL_OUTPUTS, "mono", 0.25);
-
- AY8910(config, m_ay[1], XTAL(18'432'000)/3/2/2).add_route(ALL_OUTPUTS, "mono", 0.25);
-}
-
-
-//**************************************************************************
-// ROM DEFINITIONS
-//**************************************************************************
-
-ROM_START( popper )
- ROM_REGION(0x8000, "maincpu", 0)
- ROM_LOAD("p1", 0x0000, 0x2000, CRC(56881b70) SHA1(d3ade7a54a6cb8a0babf0d667a6b27f492a739dc))
- ROM_LOAD("p2", 0x2000, 0x2000, CRC(a054d9d2) SHA1(fcd86e7247b40cf07ea595a64c104b99b0e93ced))
- ROM_LOAD("p3", 0x4000, 0x2000, CRC(6201928a) SHA1(53b571b9f2c0568f10cd974641863c2e00777b46))
-
- ROM_REGION(0x2000, "subcpu", 0)
- ROM_LOAD("p0", 0x0000, 0x1000, CRC(ef5f7c5b) SHA1(c63a3d9ef2868ad7eaacddec810d62d2e124dc15))
-
- ROM_REGION(0x2000, "tiles", 0)
- ROM_LOAD("p4", 0x0000, 0x2000, CRC(86203349) SHA1(cce2dd3fa786c2fb3ca80e7b93adf94db3b46b01))
-
- ROM_REGION(0x4000, "sprites", 0)
- ROM_LOAD("p5", 0x0000, 0x2000, CRC(a21ac194) SHA1(2c0e3df8981a12d383b1c4619a0b95a7c2d176a7))
- ROM_LOAD("p6", 0x2000, 0x2000, CRC(d99fa790) SHA1(201271ee4fb812236a38cb5f9070ac29e8186097))
-
- ROM_REGION(0x40, "colors", 0)
- ROM_LOAD("p.m3", 0x00, 0x20, CRC(713217aa) SHA1(6083c3432bf94c9e983fcc79171529f519c86105))
- ROM_LOAD("p.m4", 0x20, 0x20, CRC(384de5c1) SHA1(892c89a01c11671c5708113b4e4c27b84be37ea6))
-ROM_END
-
-
-//**************************************************************************
-// SYSTEM DRIVERS
-//**************************************************************************
-
-// YEAR NAME PARENT MACHINE INPUT CLASS INIT ROTATION COMPANY FULLNAME FLAGS
-GAME( 1983, popper, 0, popper, popper, popper_state, empty_init, ROT90, "Omori", "Popper", MACHINE_SUPPORTS_SAVE )