summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/ace.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/ace.cpp')
-rw-r--r--src/mame/drivers/ace.cpp367
1 files changed, 0 insertions, 367 deletions
diff --git a/src/mame/drivers/ace.cpp b/src/mame/drivers/ace.cpp
deleted file mode 100644
index 9bb971d5e44..00000000000
--- a/src/mame/drivers/ace.cpp
+++ /dev/null
@@ -1,367 +0,0 @@
-// license:GPL-2.0+
-// copyright-holders:Jarek Burczynski
-/****************************************************************************
-
-Ace by Allied Leisure
-
-Driver by Jarek Burczynski
-2002.09.19
-
-
-
-Allied Leisure 1976
-"MAJOR MFG. INC. SUNNYVALE, CA" in PCB etch
-
-18MHz
- 5MHz
-
-8080
-
-
-2101
-2101
-
-
-A5 3106 3106 3106
-A4
-A3 3622.K4
-A2 2101
-A1 2101 2101
-
- [ RANGE ] [ TIME ]
- (two 0-9 thumbwheel switches)
-
-
-5x2101 - SRAM 256x4
-3x3106 - SRAM 256x1
-1x3622 - ROM 512x4
-
-
-****************************************************************************/
-
-#include "emu.h"
-#include "cpu/i8085/i8085.h"
-#include "emupal.h"
-#include "screen.h"
-
-#include "ace.lh"
-
-static constexpr XTAL MASTER_CLOCK = 18_MHz_XTAL;
-
-
-class aceal_state : public driver_device
-{
-public:
- aceal_state(const machine_config &mconfig, device_type type, const char *tag) :
- driver_device(mconfig, type, tag),
- m_maincpu(*this, "maincpu"),
- m_scoreram(*this, "scoreram"),
- m_ram2(*this, "ram2"),
- m_characterram(*this, "characterram"),
- m_gfxdecode(*this, "gfxdecode"),
- m_palette(*this, "palette")
- { }
-
- void ace(machine_config &config);
-
-private:
- DECLARE_WRITE8_MEMBER(ace_objpos_w);
- DECLARE_WRITE8_MEMBER(ace_characterram_w);
- DECLARE_WRITE8_MEMBER(ace_scoreram_w);
- DECLARE_READ8_MEMBER(unk_r);
- virtual void machine_start() override;
- virtual void machine_reset() override;
- virtual void video_start() override;
- uint32_t screen_update_ace(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- void ace_postload();
- void main_map(address_map &map);
-
- required_device<cpu_device> m_maincpu;
-
- /* video-related */
- required_shared_ptr<uint8_t> m_scoreram;
- required_shared_ptr<uint8_t> m_ram2;
- required_shared_ptr<uint8_t> m_characterram;
- required_device<gfxdecode_device> m_gfxdecode;
- required_device<palette_device> m_palette;
-
- /* input-related */
- int m_objpos[8];
-};
-
-
-WRITE8_MEMBER(aceal_state::ace_objpos_w)
-{
- m_objpos[offset] = data;
-}
-
-void aceal_state::video_start()
-{
- m_gfxdecode->gfx(1)->set_source(m_characterram);
- m_gfxdecode->gfx(2)->set_source(m_characterram);
- m_gfxdecode->gfx(3)->set_source(m_characterram);
- m_gfxdecode->gfx(4)->set_source(m_scoreram);
-}
-
-uint32_t aceal_state::screen_update_ace(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
-{
- bitmap.fill(0, cliprect);
-
- m_gfxdecode->gfx(1)->opaque(bitmap, cliprect, 0, 0, 0, 0, m_objpos[0], m_objpos[1]);
- m_gfxdecode->gfx(2)->opaque(bitmap, cliprect, 0, 0, 0, 0, m_objpos[2], m_objpos[3]);
- m_gfxdecode->gfx(3)->opaque(bitmap, cliprect, 0, 0, 0, 0, m_objpos[4], m_objpos[5]);
-
- for (int offs = 0; offs < 8; offs++)
- m_gfxdecode->gfx(4)->opaque(bitmap, cliprect, offs, 0, 0, 0, 10 * 8 + offs * 16, 256 - 16);
-
- return 0;
-}
-
-
-WRITE8_MEMBER(aceal_state::ace_characterram_w)
-{
- if (m_characterram[offset] != data)
- {
- if (data & ~0x07)
- logerror("write to %04x data = %02x\n", 0x8000 + offset, data);
-
- m_characterram[offset] = data;
- m_gfxdecode->gfx(1)->mark_dirty(0);
- m_gfxdecode->gfx(2)->mark_dirty(0);
- m_gfxdecode->gfx(3)->mark_dirty(0);
- }
-}
-
-WRITE8_MEMBER(aceal_state::ace_scoreram_w)
-{
- m_scoreram[offset] = data;
- m_gfxdecode->gfx(4)->mark_dirty(offset / 32);
-}
-
-READ8_MEMBER(aceal_state::unk_r)
-{
- return machine().rand() & 0xff;
-}
-
-
-/* 5x2101 - SRAM 256x4 */
-/* 3x3106 - SRAM 256x1 */
-/* 1x3622 - ROM 512x4 - doesn't seem to be used ????????????*/
-
-void aceal_state::main_map(address_map &map)
-{
- map(0x0000, 0x09ff).rom();
-
- map(0x2000, 0x20ff).ram().w(FUNC(aceal_state::ace_scoreram_w)).share("scoreram"); /* 2x2101 */
- map(0x8300, 0x83ff).ram().share("ram2"); /* 2x2101 */
- map(0x8000, 0x80ff).ram().w(FUNC(aceal_state::ace_characterram_w)).share("characterram"); /* 3x3101 (3bits: 0, 1, 2) */
-
- map(0xc000, 0xc005).w(FUNC(aceal_state::ace_objpos_w));
-
- /* players inputs */
- map(0xc008, 0xc008).portr("c008");
- map(0xc009, 0xc009).portr("c009");
- map(0xc00a, 0xc00a).portr("c00a");
- map(0xc00b, 0xc00b).portr("c00b");
- map(0xc00c, 0xc00c).portr("c00c");
- map(0xc00d, 0xc00d).portr("c00d");
- map(0xc00e, 0xc00e).portr("c00e");
- map(0xc00f, 0xc00f).portr("c00f");
- map(0xc010, 0xc010).portr("c010");
- map(0xc011, 0xc011).portr("c011");
-
- map(0xc012, 0xc012).r(FUNC(aceal_state::unk_r));
-
- /* vblank */
- map(0xc014, 0xc014).portr("c014");
-
- /* coin */
- map(0xc015, 0xc015).portr("c015");
-
- /* start (must read 1 at least once to make the game run) */
- map(0xc016, 0xc016).portr("c016");
-
- map(0xc017, 0xc017).r(FUNC(aceal_state::unk_r));
- map(0xc018, 0xc018).r(FUNC(aceal_state::unk_r));
- map(0xc019, 0xc019).r(FUNC(aceal_state::unk_r));
-
- map(0xc020, 0xc020).r(FUNC(aceal_state::unk_r));
- map(0xc021, 0xc021).r(FUNC(aceal_state::unk_r));
- map(0xc022, 0xc022).r(FUNC(aceal_state::unk_r));
- map(0xc023, 0xc023).r(FUNC(aceal_state::unk_r));
- map(0xc024, 0xc024).r(FUNC(aceal_state::unk_r));
- map(0xc025, 0xc025).r(FUNC(aceal_state::unk_r));
- map(0xc026, 0xc026).r(FUNC(aceal_state::unk_r));
-}
-
-
-static INPUT_PORTS_START( ace )
- PORT_START("c008") /* player thrust */
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_2WAY PORT_PLAYER(1) PORT_NAME("P1 Thrust")
-
- PORT_START("c009") /* player slowdown */
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_2WAY PORT_PLAYER(1) PORT_NAME("P1 Slowdown")
-
- PORT_START("c00a") /* player left */
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_PLAYER(1)
-
- PORT_START("c00b") /* player right */
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_PLAYER(1)
-
- PORT_START("c00c") /* player fire */
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_NAME("P1 Fire")
-
- PORT_START("c00d") /* enemy thrust */
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_2WAY PORT_PLAYER(2) PORT_NAME("P2 Thrust")
-
- PORT_START("c00e") /* enemy slowdown */
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_2WAY PORT_PLAYER(2) PORT_NAME("P2 Slowdown")
-
- PORT_START("c00f") /* enemy left */
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_PLAYER(2)
-
- PORT_START("c010") /* enemy right */
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_PLAYER(2)
-
- PORT_START("c011") /* enemy fire */
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_NAME("P2 Fire")
-
- //c012
-
- PORT_START("c014") /* VBLANK??? */
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_VBLANK("screen")
-
- PORT_START("c015") /* coin input */
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
-
- PORT_START("c016") /* game start */
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START1 )
-INPUT_PORTS_END
-
-
-static const gfx_layout charlayout =
-{
- 16,16, /* 16*16 chars */
- 8, /* 8 characters */
- 1, /* 1 bit per pixel */
- { 4 }, /* character rom is 512x4 bits (3622 type)*/
- { 0, 1, 2, 3, 8+0, 8+1, 8+2, 8+3, 16+0, 16+1, 16+2, 16+3, 24+0, 24+1, 24+2, 24+3 },
- { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32, 8*32, 9*32, 10*32, 11*32, 12*32, 13*32, 14*32, 15*32 },
- 64*8 /* every char takes 64 consecutive bytes */
-};
-
-static const gfx_layout charlayout0 =
-{
- 16,16, /* 16*16 chars */
- 1, /* 1 characters */
- 1, /* 1 bit per pixel */
- { 7 }, /* bit 0 in character ram */
- { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, 8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8 },
- { 0*128, 1*128, 2*128, 3*128, 4*128, 5*128, 6*128, 7*128, 8*128, 9*128, 10*128, 11*128, 12*128, 13*128, 14*128, 15*128 },
- 256*8 /* every char takes 256 consecutive bytes */
-};
-
-static const gfx_layout charlayout1 =
-{
- 16,16, /* 16*16 chars */
- 1, /* 1 characters */
- 1, /* 1 bit per pixel */
- { 6 }, /* bit 1 in character ram */
- { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, 8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8 },
- { 0*128, 1*128, 2*128, 3*128, 4*128, 5*128, 6*128, 7*128, 8*128, 9*128, 10*128, 11*128, 12*128, 13*128, 14*128, 15*128 },
- 256*8 /* every char takes 256 consecutive bytes */
-};
-
-static const gfx_layout charlayout2 =
-{
- 16,16, /* 16*16 chars */
- 1, /* 1 characters */
- 1, /* 1 bit per pixel */
- { 5 }, /* bit 2 in character ram */
- { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, 8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8 },
- { 0*128, 1*128, 2*128, 3*128, 4*128, 5*128, 6*128, 7*128, 8*128, 9*128, 10*128, 11*128, 12*128, 13*128, 14*128, 15*128 },
- 256*8 /* every char takes 256 consecutive bytes */
-};
-
-static const gfx_layout scorelayout =
-{
- 16,16, /* 16*16 chars */
- 8, /* 8 characters */
- 1, /* 1 bit per pixel */
- { 0 }, /* */
- { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 },
- { 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16, 8*16, 9*16, 10*16, 11*16, 12*16, 13*16, 14*16, 15*16 },
- 32*8 /* every char takes 32 consecutive bytes */
-};
-
-static GFXDECODE_START( gfx_ace )
- GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 2 )
- GFXDECODE_ENTRY( nullptr, 0x8000, charlayout0, 0, 2 ) /* the game dynamically modifies this */
- GFXDECODE_ENTRY( nullptr, 0x8000, charlayout1, 0, 2 ) /* the game dynamically modifies this */
- GFXDECODE_ENTRY( nullptr, 0x8000, charlayout2, 0, 2 ) /* the game dynamically modifies this */
- GFXDECODE_ENTRY( nullptr, 0x8000, scorelayout, 0, 2 ) /* the game dynamically modifies this */
-GFXDECODE_END
-
-void aceal_state::ace_postload()
-{
- m_gfxdecode->gfx(1)->mark_dirty(0);
- m_gfxdecode->gfx(2)->mark_dirty(0);
- m_gfxdecode->gfx(3)->mark_dirty(0);
- m_gfxdecode->gfx(4)->mark_dirty(0);
-}
-
-void aceal_state::machine_start()
-{
- save_item(NAME(m_objpos));
- machine().save().register_postload(save_prepost_delegate(FUNC(aceal_state::ace_postload), this));
-}
-
-void aceal_state::machine_reset()
-{
- for (auto & elem : m_objpos)
- elem = 0;
-}
-
-void aceal_state::ace(machine_config &config)
-{
- /* basic machine hardware */
- I8080(config, m_maincpu, MASTER_CLOCK/9); /* 2 MHz ? */
- m_maincpu->set_addrmap(AS_PROGRAM, &aceal_state::main_map);
-
- /* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(32*8, 32*8);
- screen.set_visarea(4*8, 32*8-1, 2*8, 32*8-1);
- screen.set_screen_update(FUNC(aceal_state::screen_update_ace));
- screen.set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_ace);
- PALETTE(config, m_palette, palette_device::MONOCHROME);
-
- /* sound hardware */
- /* ???? */
-}
-
-/***************************************************************************
-
- Game driver(s)
-
-***************************************************************************/
-
-ROM_START( ace )
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "ace.a1", 0x0000, 0x0200, CRC(16811834) SHA1(5502812dd161908eea3fa8851d7e5c1e22b0f8ff) )
- ROM_LOAD( "ace.a2", 0x0200, 0x0200, CRC(f9eae80e) SHA1(8865b86c7b5d57c76312c16f8a614bf35ffaf532) )
- ROM_LOAD( "ace.a3", 0x0400, 0x0200, CRC(c5c63b8c) SHA1(2079dd12ff0c4aafec19aeb9baa70fc9b6788356) )
- ROM_LOAD( "ace.a4", 0x0600, 0x0200, CRC(ea4503aa) SHA1(fea610124b9f7ea18d29b4e4599253ba1ee067e1) )
- ROM_LOAD( "ace.a5", 0x0800, 0x0200, CRC(623c58e7) SHA1(a92418bc323a1ae76eae8e094e4d6ebd1e8da14e) )
-
- /* not used - I couldn't guess when this should be displayed */
- ROM_REGION( 0x0200, "gfx1", 0 )
- ROM_LOAD( "ace.k4", 0x0000, 0x0200, CRC(daa05ec6) SHA1(8b71ffb802293dc93f6b492ff128a704e676a5fd) )
-ROM_END
-
-
-GAMEL(1976, ace, 0, ace, ace, aceal_state, empty_init, ROT0, "Allied Leisure", "Ace", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND, layout_ace )