mirror of
https://github.com/holub/mame
synced 2025-07-05 18:08:04 +03:00
New clones marked not working
----------------------------- Mr. and Mrs. PacMan (set 2) [caius] - dataeast/compgolf.cpp, dataeast/dassault.cpp: consolidated drivers in single files
This commit is contained in:
parent
7d184d72bc
commit
19a665dc70
@ -1,5 +1,6 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Angelo Salese, Pierpaolo Prazzoli, Bryan McPhail
|
||||
// copyright-holders: Angelo Salese, Pierpaolo Prazzoli, Bryan McPhail
|
||||
|
||||
/*******************************************************************************************
|
||||
|
||||
Competition Golf Final Round (c) 1986 / 1985 Data East
|
||||
@ -12,14 +13,200 @@
|
||||
|
||||
*******************************************************************************************/
|
||||
|
||||
|
||||
#include "emu.h"
|
||||
|
||||
#include "cpu/m6809/m6809.h"
|
||||
#include "sound/ymopn.h"
|
||||
|
||||
#include "emupal.h"
|
||||
#include "screen.h"
|
||||
#include "speaker.h"
|
||||
#include "tilemap.h"
|
||||
|
||||
#include "compgolf.h"
|
||||
|
||||
namespace {
|
||||
|
||||
class compgolf_state : public driver_device
|
||||
{
|
||||
public:
|
||||
compgolf_state(const machine_config &mconfig, device_type type, const char *tag) :
|
||||
driver_device(mconfig, type, tag),
|
||||
m_videoram(*this, "videoram"),
|
||||
m_bg_ram(*this, "bg_ram"),
|
||||
m_spriteram(*this, "spriteram"),
|
||||
m_rombank(*this, "rombank"),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_gfxdecode(*this, "gfxdecode"),
|
||||
m_palette(*this, "palette")
|
||||
{ }
|
||||
|
||||
void init_compgolf() ATTR_COLD;
|
||||
void compgolf(machine_config &config) ATTR_COLD;
|
||||
|
||||
protected:
|
||||
virtual void machine_start() override ATTR_COLD;
|
||||
virtual void machine_reset() override ATTR_COLD;
|
||||
virtual void video_start() override ATTR_COLD;
|
||||
|
||||
private:
|
||||
// memory pointers
|
||||
required_shared_ptr<uint8_t> m_videoram;
|
||||
required_shared_ptr<uint8_t> m_bg_ram;
|
||||
required_shared_ptr<uint8_t> m_spriteram;
|
||||
required_memory_bank m_rombank;
|
||||
|
||||
// devices
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<gfxdecode_device> m_gfxdecode;
|
||||
required_device<palette_device> m_palette;
|
||||
|
||||
// video-related
|
||||
tilemap_t *m_text_tilemap = nullptr;
|
||||
tilemap_t *m_bg_tilemap = nullptr;
|
||||
uint8_t m_scrollx_lo = 0;
|
||||
uint16_t m_scrollx_hi = 0;
|
||||
uint8_t m_scrolly_lo = 0;
|
||||
uint16_t m_scrolly_hi = 0;
|
||||
|
||||
// misc
|
||||
int8_t m_bank = 0;
|
||||
|
||||
void ctrl_w(uint8_t data);
|
||||
void video_w(offs_t offset, uint8_t data);
|
||||
void back_w(offs_t offset, uint8_t data);
|
||||
void scrollx_lo_w(uint8_t data);
|
||||
void scrolly_lo_w(uint8_t data);
|
||||
TILE_GET_INFO_MEMBER(get_text_info);
|
||||
TILEMAP_MAPPER_MEMBER(back_scan);
|
||||
TILE_GET_INFO_MEMBER(get_back_info);
|
||||
void palette(palette_device &palette) const;
|
||||
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
void expand_bg() ATTR_COLD;
|
||||
void program_map(address_map &map) ATTR_COLD;
|
||||
};
|
||||
|
||||
|
||||
// video
|
||||
|
||||
void compgolf_state::palette(palette_device &palette) const
|
||||
{
|
||||
uint8_t const *const color_prom = memregion("proms")->base();
|
||||
|
||||
for (int i = 0; i < palette.entries(); i++)
|
||||
{
|
||||
int bit0, bit1, bit2;
|
||||
bit0 = (color_prom[i] >> 0) & 0x01;
|
||||
bit1 = (color_prom[i] >> 1) & 0x01;
|
||||
bit2 = (color_prom[i] >> 2) & 0x01;
|
||||
int const r = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
|
||||
bit0 = (color_prom[i] >> 3) & 0x01;
|
||||
bit1 = (color_prom[i] >> 4) & 0x01;
|
||||
bit2 = (color_prom[i] >> 5) & 0x01;
|
||||
int const g = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
|
||||
bit0 = 0;
|
||||
bit1 = (color_prom[i] >> 6) & 0x01;
|
||||
bit2 = (color_prom[i] >> 7) & 0x01;
|
||||
int const b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
|
||||
|
||||
palette.set_pen_color(i, rgb_t(r, g, b));
|
||||
}
|
||||
}
|
||||
|
||||
void compgolf_state::video_w(offs_t offset, uint8_t data)
|
||||
{
|
||||
m_videoram[offset] = data;
|
||||
m_text_tilemap->mark_tile_dirty(offset / 2);
|
||||
}
|
||||
|
||||
void compgolf_state::back_w(offs_t offset, uint8_t data)
|
||||
{
|
||||
m_bg_ram[offset] = data;
|
||||
m_bg_tilemap->mark_tile_dirty(offset / 2);
|
||||
}
|
||||
|
||||
TILE_GET_INFO_MEMBER(compgolf_state::get_text_info)
|
||||
{
|
||||
tile_index <<= 1;
|
||||
tileinfo.set(2, m_videoram[tile_index + 1] | (m_videoram[tile_index] << 8), m_videoram[tile_index] >> 2, 0);
|
||||
}
|
||||
|
||||
TILEMAP_MAPPER_MEMBER(compgolf_state::back_scan)
|
||||
{
|
||||
// logical (col,row) -> memory offset
|
||||
return (col & 0x0f) + ((row & 0x0f) << 4) + ((col & 0x10) << 4) + ((row & 0x10) << 5);
|
||||
}
|
||||
|
||||
TILE_GET_INFO_MEMBER(compgolf_state::get_back_info)
|
||||
{
|
||||
int const attr = m_bg_ram[tile_index * 2];
|
||||
int const code = m_bg_ram[tile_index * 2 + 1] + ((attr & 1) << 8);
|
||||
int const color = (attr & 0x3e) >> 1;
|
||||
|
||||
tileinfo.set(1, code, color, 0);
|
||||
}
|
||||
|
||||
void compgolf_state::video_start()
|
||||
{
|
||||
m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(compgolf_state::get_back_info)), tilemap_mapper_delegate(*this, FUNC(compgolf_state::back_scan)), 16, 16, 32, 32);
|
||||
m_text_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(compgolf_state::get_text_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
|
||||
|
||||
m_text_tilemap->set_transparent_pen(0);
|
||||
}
|
||||
|
||||
/*
|
||||
preliminary sprite list:
|
||||
0 1 2 3
|
||||
xx------ xxxxxxxx -------- -------- sprite code
|
||||
---x---- -------- -------- -------- Double Height
|
||||
----x--- -------- -------- -------- Color,all of it?
|
||||
-------- -------- xxxxxxxx -------- Y pos
|
||||
-------- -------- -------- xxxxxxxx X pos
|
||||
-----x-- -------- -------- -------- Flip X
|
||||
-------- -------- -------- -------- Flip Y(used?)
|
||||
*/
|
||||
void compgolf_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
for (int offs = 0; offs < 0x60; offs += 4)
|
||||
{
|
||||
int const sprite = m_spriteram[offs + 1] + (((m_spriteram[offs] & 0xc0) >> 6) * 0x100);
|
||||
int const x = 240 - m_spriteram[offs + 3];
|
||||
int const y = m_spriteram[offs + 2];
|
||||
int const color = (m_spriteram[offs] & 8) >> 3;
|
||||
int const fx = m_spriteram[offs] & 4;
|
||||
int const fy = 0; // ?
|
||||
|
||||
m_gfxdecode->gfx(0)->transpen(bitmap, cliprect,
|
||||
sprite,
|
||||
color, fx, fy, x, y, 0);
|
||||
|
||||
// Double Height
|
||||
if(m_spriteram[offs] & 0x10)
|
||||
{
|
||||
m_gfxdecode->gfx(0)->transpen(bitmap, cliprect,
|
||||
sprite + 1,
|
||||
color, fx, fy, x, y + 16, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
uint32_t compgolf_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
int const scrollx = m_scrollx_hi + m_scrollx_lo;
|
||||
int const scrolly = m_scrolly_hi + m_scrolly_lo;
|
||||
|
||||
m_bg_tilemap->set_scrollx(0, scrollx);
|
||||
m_bg_tilemap->set_scrolly(0, scrolly);
|
||||
|
||||
m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
|
||||
m_text_tilemap->draw(screen, bitmap, cliprect, 0, 0);
|
||||
draw_sprites(bitmap, cliprect);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
// machine
|
||||
|
||||
/*************************************
|
||||
*
|
||||
@ -27,26 +214,26 @@
|
||||
*
|
||||
*************************************/
|
||||
|
||||
void compgolf_state::compgolf_scrollx_lo_w(uint8_t data)
|
||||
void compgolf_state::scrollx_lo_w(uint8_t data)
|
||||
{
|
||||
m_scrollx_lo = data;
|
||||
}
|
||||
|
||||
void compgolf_state::compgolf_scrolly_lo_w(uint8_t data)
|
||||
void compgolf_state::scrolly_lo_w(uint8_t data)
|
||||
{
|
||||
m_scrolly_lo = data;
|
||||
}
|
||||
|
||||
void compgolf_state::compgolf_ctrl_w(uint8_t data)
|
||||
void compgolf_state::ctrl_w(uint8_t data)
|
||||
{
|
||||
/* bit 4 and 6 are always set */
|
||||
// bit 4 and 6 are always set
|
||||
|
||||
int new_bank = (data & 4) >> 2;
|
||||
int const new_bank = (data & 4) >> 2;
|
||||
|
||||
if (m_bank != new_bank)
|
||||
{
|
||||
m_bank = new_bank;
|
||||
membank("bank1")->set_entry(m_bank);
|
||||
m_rombank->set_entry(m_bank);
|
||||
}
|
||||
|
||||
m_scrollx_hi = (data & 1) << 8;
|
||||
@ -60,19 +247,19 @@ void compgolf_state::compgolf_ctrl_w(uint8_t data)
|
||||
*
|
||||
*************************************/
|
||||
|
||||
void compgolf_state::compgolf_map(address_map &map)
|
||||
void compgolf_state::program_map(address_map &map)
|
||||
{
|
||||
map(0x0000, 0x07ff).ram();
|
||||
map(0x1000, 0x17ff).ram().w(FUNC(compgolf_state::compgolf_video_w)).share("videoram");
|
||||
map(0x1800, 0x1fff).ram().w(FUNC(compgolf_state::compgolf_back_w)).share("bg_ram");
|
||||
map(0x2000, 0x2060).ram().share("spriteram");
|
||||
map(0x1000, 0x17ff).ram().w(FUNC(compgolf_state::video_w)).share(m_videoram);
|
||||
map(0x1800, 0x1fff).ram().w(FUNC(compgolf_state::back_w)).share(m_bg_ram);
|
||||
map(0x2000, 0x2060).ram().share(m_spriteram);
|
||||
map(0x2061, 0x2061).nopw();
|
||||
map(0x3000, 0x3000).portr("P1");
|
||||
map(0x3001, 0x3001).portr("P2").w(FUNC(compgolf_state::compgolf_ctrl_w));
|
||||
map(0x3001, 0x3001).portr("P2").w(FUNC(compgolf_state::ctrl_w));
|
||||
map(0x3002, 0x3002).portr("DSW1");
|
||||
map(0x3003, 0x3003).portr("DSW2");
|
||||
map(0x3800, 0x3801).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
|
||||
map(0x4000, 0x7fff).bankr("bank1");
|
||||
map(0x4000, 0x7fff).bankr(m_rombank);
|
||||
map(0x8000, 0xffff).rom();
|
||||
}
|
||||
|
||||
@ -138,7 +325,7 @@ static INPUT_PORTS_START( compgolf )
|
||||
PORT_DIPNAME( 0x04, 0x00, DEF_STR( Cabinet ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Upright ) )
|
||||
PORT_DIPSETTING( 0x04, DEF_STR( Cocktail ) )
|
||||
PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unused ) ) /* Manual states dips 4-8 are "Unused" */
|
||||
PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unused ) ) // Manual states dips 4-8 are "Unused"
|
||||
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unused ) )
|
||||
@ -192,9 +379,9 @@ static const gfx_layout tilelayout8 =
|
||||
};
|
||||
|
||||
static GFXDECODE_START( gfx_compgolf )
|
||||
GFXDECODE_ENTRY( "gfx1", 0, spritelayout, 0, 0x10 )
|
||||
GFXDECODE_ENTRY( "gfx2", 0, tilelayoutbg, 0, 0x20 )
|
||||
GFXDECODE_ENTRY( "gfx3", 0, tilelayout8, 0, 0x10 )
|
||||
GFXDECODE_ENTRY( "sprites", 0, spritelayout, 0, 0x10 )
|
||||
GFXDECODE_ENTRY( "bgtiles", 0, tilelayoutbg, 0, 0x20 )
|
||||
GFXDECODE_ENTRY( "chars", 0, tilelayout8, 0, 0x10 )
|
||||
GFXDECODE_END
|
||||
|
||||
|
||||
@ -206,6 +393,8 @@ GFXDECODE_END
|
||||
|
||||
void compgolf_state::machine_start()
|
||||
{
|
||||
m_rombank->configure_entries(0, 2, memregion("bgdata")->base(), 0x4000);
|
||||
|
||||
save_item(NAME(m_bank));
|
||||
save_item(NAME(m_scrollx_lo));
|
||||
save_item(NAME(m_scrollx_hi));
|
||||
@ -224,30 +413,30 @@ void compgolf_state::machine_reset()
|
||||
|
||||
void compgolf_state::compgolf(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
MC6809E(config, m_maincpu, 2000000); // HD68B09EP
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &compgolf_state::compgolf_map);
|
||||
// basic machine hardware
|
||||
MC6809E(config, m_maincpu, 2'000'000); // HD68B09EP
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &compgolf_state::program_map);
|
||||
|
||||
/* video hardware */
|
||||
// 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_vblank_time(ATTOSECONDS_IN_USEC(2500)); // not accurate
|
||||
screen.set_size(256, 256);
|
||||
screen.set_visarea(1*8, 32*8-1, 1*8, 31*8-1);
|
||||
screen.set_screen_update(FUNC(compgolf_state::screen_update_compgolf));
|
||||
screen.set_screen_update(FUNC(compgolf_state::screen_update));
|
||||
screen.set_palette(m_palette);
|
||||
screen.screen_vblank().set_inputline(m_maincpu, INPUT_LINE_NMI);
|
||||
|
||||
PALETTE(config, m_palette, FUNC(compgolf_state::compgolf_palette), 0x100);
|
||||
PALETTE(config, m_palette, FUNC(compgolf_state::palette), 0x100);
|
||||
GFXDECODE(config, m_gfxdecode, m_palette, gfx_compgolf);
|
||||
|
||||
|
||||
SPEAKER(config, "mono").front_center();
|
||||
|
||||
ym2203_device &ymsnd(YM2203(config, "ymsnd", 1500000));
|
||||
ym2203_device &ymsnd(YM2203(config, "ymsnd", 1'500'000));
|
||||
ymsnd.irq_handler().set_inputline(m_maincpu, 0);
|
||||
ymsnd.port_a_write_callback().set(FUNC(compgolf_state::compgolf_scrollx_lo_w));
|
||||
ymsnd.port_b_write_callback().set(FUNC(compgolf_state::compgolf_scrolly_lo_w));
|
||||
ymsnd.port_a_write_callback().set(FUNC(compgolf_state::scrollx_lo_w));
|
||||
ymsnd.port_b_write_callback().set(FUNC(compgolf_state::scrolly_lo_w));
|
||||
ymsnd.add_route(ALL_OUTPUTS, "mono", 1.0);
|
||||
}
|
||||
|
||||
@ -262,22 +451,22 @@ ROM_START( compgolf )
|
||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||
ROM_LOAD( "cv05-3.bin", 0x08000, 0x8000, CRC(af9805bf) SHA1(bdde482906bb267e76317067785ac0ab7816df63) )
|
||||
|
||||
ROM_REGION( 0x8000, "user1", 0 ) // background data
|
||||
ROM_REGION( 0x8000, "bgdata", 0 )
|
||||
ROM_LOAD( "cv06.bin", 0x00000, 0x8000, CRC(8f76979d) SHA1(432f6a1402fd3276669f5f45f03fd12380900178) )
|
||||
|
||||
ROM_REGION( 0x18000, "gfx1", 0 ) // Sprites
|
||||
ROM_REGION( 0x18000, "sprites", 0 )
|
||||
ROM_LOAD( "cv00.bin", 0x00000, 0x8000, CRC(aa3d3b99) SHA1(eb968e40bcc7e7dd1acc0bbe885fd3f7d70d4bb5) )
|
||||
ROM_LOAD( "cv01.bin", 0x08000, 0x8000, CRC(f68c2ff6) SHA1(dda9159fb59d3855025b98c272722b031617c89a) )
|
||||
ROM_LOAD( "cv02.bin", 0x10000, 0x8000, CRC(979cdb5a) SHA1(25c1f3e6ddf50168c7e1a967bfa2753bea6106ec) )
|
||||
|
||||
ROM_REGION( 0x10000, "gfx2", 0 )
|
||||
ROM_REGION( 0x10000, "bgtiles", 0 )
|
||||
ROM_LOAD( "cv03.bin", 0x00000, 0x8000, CRC(cc7ed6d8) SHA1(4ffcfa3f720414e1b7e929bdf29359ebcd8717c3) )
|
||||
/* we expand rom cv04.bin to 0x8000 - 0xffff */
|
||||
// we expand ROM cv04.bin to 0x8000 - 0xffff
|
||||
|
||||
ROM_REGION( 0x8000, "gfx3", 0 )
|
||||
ROM_REGION( 0x8000, "chars", 0 )
|
||||
ROM_LOAD( "cv07.bin", 0x00000, 0x8000, CRC(ed5441ba) SHA1(69d50695e8b92544f9857c6f3de0efb399899a2c) )
|
||||
|
||||
ROM_REGION( 0x4000, "gfx4", 0 )
|
||||
ROM_REGION( 0x4000, "bgtiles2", 0 )
|
||||
ROM_LOAD( "cv04.bin", 0x00000, 0x4000, CRC(df693a04) SHA1(45bef98c7e66881f8c62affecc1ab90dd2707240) )
|
||||
|
||||
ROM_REGION( 0x100, "proms", 0 )
|
||||
@ -288,22 +477,22 @@ ROM_START( compgolfo )
|
||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||
ROM_LOAD( "cv05.bin", 0x08000, 0x8000, CRC(3cef62c9) SHA1(c4827b45faf7aa4c80ddd3c57f1ed6ba76b5c49b) )
|
||||
|
||||
ROM_REGION( 0x8000, "user1", 0 ) // background data
|
||||
ROM_REGION( 0x8000, "bgdata", 0 )
|
||||
ROM_LOAD( "cv06.bin", 0x00000, 0x8000, CRC(8f76979d) SHA1(432f6a1402fd3276669f5f45f03fd12380900178) )
|
||||
|
||||
ROM_REGION( 0x18000, "gfx1", 0 ) // Sprites
|
||||
ROM_REGION( 0x18000, "sprites", 0 )
|
||||
ROM_LOAD( "cv00.bin", 0x00000, 0x8000, CRC(aa3d3b99) SHA1(eb968e40bcc7e7dd1acc0bbe885fd3f7d70d4bb5) )
|
||||
ROM_LOAD( "cv01.bin", 0x08000, 0x8000, CRC(f68c2ff6) SHA1(dda9159fb59d3855025b98c272722b031617c89a) )
|
||||
ROM_LOAD( "cv02.bin", 0x10000, 0x8000, CRC(979cdb5a) SHA1(25c1f3e6ddf50168c7e1a967bfa2753bea6106ec) )
|
||||
|
||||
ROM_REGION( 0x10000, "gfx2", 0 )
|
||||
ROM_REGION( 0x10000, "bgtiles", 0 )
|
||||
ROM_LOAD( "cv03.bin", 0x00000, 0x8000, CRC(cc7ed6d8) SHA1(4ffcfa3f720414e1b7e929bdf29359ebcd8717c3) )
|
||||
/* we expand rom cv04.bin to 0x8000 - 0xffff */
|
||||
// we expand ROM cv04.bin to 0x8000 - 0xffff
|
||||
|
||||
ROM_REGION( 0x8000, "gfx3", 0 )
|
||||
ROM_REGION( 0x8000, "chars", 0 )
|
||||
ROM_LOAD( "cv07.bin", 0x00000, 0x8000, CRC(ed5441ba) SHA1(69d50695e8b92544f9857c6f3de0efb399899a2c) )
|
||||
|
||||
ROM_REGION( 0x4000, "gfx4", 0 )
|
||||
ROM_REGION( 0x4000, "bgtiles2", 0 )
|
||||
ROM_LOAD( "cv04.bin", 0x00000, 0x4000, CRC(df693a04) SHA1(45bef98c7e66881f8c62affecc1ab90dd2707240) )
|
||||
|
||||
ROM_REGION( 0x100, "proms", 0 )
|
||||
@ -317,14 +506,12 @@ ROM_END
|
||||
*
|
||||
*************************************/
|
||||
|
||||
void compgolf_state::compgolf_expand_bg()
|
||||
void compgolf_state::expand_bg()
|
||||
{
|
||||
uint8_t *GFXDST = memregion("gfx2")->base();
|
||||
uint8_t *GFXSRC = memregion("gfx4")->base();
|
||||
uint8_t *GFXDST = memregion("bgtiles")->base();
|
||||
uint8_t *GFXSRC = memregion("bgtiles2")->base();
|
||||
|
||||
int x;
|
||||
|
||||
for (x = 0; x < 0x4000; x++)
|
||||
for (int x = 0; x < 0x4000; x++)
|
||||
{
|
||||
GFXDST[0x8000 + x] = (GFXSRC[x] & 0x0f) << 4;
|
||||
GFXDST[0xc000 + x] = (GFXSRC[x] & 0xf0);
|
||||
@ -333,10 +520,11 @@ void compgolf_state::compgolf_expand_bg()
|
||||
|
||||
void compgolf_state::init_compgolf()
|
||||
{
|
||||
membank("bank1")->configure_entries(0, 2, memregion("user1")->base(), 0x4000);
|
||||
compgolf_expand_bg();
|
||||
expand_bg();
|
||||
}
|
||||
|
||||
} // anonymous namespace
|
||||
|
||||
|
||||
/*************************************
|
||||
*
|
||||
@ -344,5 +532,5 @@ void compgolf_state::init_compgolf()
|
||||
*
|
||||
*************************************/
|
||||
|
||||
GAME( 1986, compgolf, 0, compgolf, compgolf, compgolf_state, init_compgolf, ROT0, "Data East", "Competition Golf Final Round (revision 3)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1986, compgolf, 0, compgolf, compgolf, compgolf_state, init_compgolf, ROT0, "Data East", "Competition Golf Final Round (revision 3)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1985, compgolfo, compgolf, compgolf, compgolf, compgolf_state, init_compgolf, ROT0, "Data East", "Competition Golf Final Round (Japan, old version)", MACHINE_SUPPORTS_SAVE )
|
||||
|
@ -1,69 +0,0 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Angelo Salese, Pierpaolo Prazzoli, Bryan McPhail
|
||||
/*************************************************************************
|
||||
|
||||
Competition Golf Final Round
|
||||
|
||||
*************************************************************************/
|
||||
#ifndef MAME_DATAEAST_COMPGOLF_H
|
||||
#define MAME_DATAEAST_COMPGOLF_H
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "emupal.h"
|
||||
#include "tilemap.h"
|
||||
|
||||
class compgolf_state : public driver_device
|
||||
{
|
||||
public:
|
||||
compgolf_state(const machine_config &mconfig, device_type type, const char *tag) :
|
||||
driver_device(mconfig, type, tag),
|
||||
m_videoram(*this, "videoram"),
|
||||
m_bg_ram(*this, "bg_ram"),
|
||||
m_spriteram(*this, "spriteram"),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_gfxdecode(*this, "gfxdecode"),
|
||||
m_palette(*this, "palette")
|
||||
{ }
|
||||
|
||||
void init_compgolf();
|
||||
void compgolf(machine_config &config);
|
||||
|
||||
private:
|
||||
/* memory pointers */
|
||||
required_shared_ptr<uint8_t> m_videoram;
|
||||
required_shared_ptr<uint8_t> m_bg_ram;
|
||||
required_shared_ptr<uint8_t> m_spriteram;
|
||||
|
||||
/* video-related */
|
||||
tilemap_t *m_text_tilemap = nullptr;
|
||||
tilemap_t *m_bg_tilemap = nullptr;
|
||||
int m_scrollx_lo = 0;
|
||||
int m_scrollx_hi = 0;
|
||||
int m_scrolly_lo = 0;
|
||||
int m_scrolly_hi = 0;
|
||||
|
||||
/* misc */
|
||||
int m_bank = 0;
|
||||
void compgolf_ctrl_w(uint8_t data);
|
||||
void compgolf_video_w(offs_t offset, uint8_t data);
|
||||
void compgolf_back_w(offs_t offset, uint8_t data);
|
||||
void compgolf_scrollx_lo_w(uint8_t data);
|
||||
void compgolf_scrolly_lo_w(uint8_t data);
|
||||
TILE_GET_INFO_MEMBER(get_text_info);
|
||||
TILEMAP_MAPPER_MEMBER(back_scan);
|
||||
TILE_GET_INFO_MEMBER(get_back_info);
|
||||
virtual void machine_start() override;
|
||||
virtual void machine_reset() override;
|
||||
virtual void video_start() override;
|
||||
void compgolf_palette(palette_device &palette) const;
|
||||
uint32_t screen_update_compgolf(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect );
|
||||
void compgolf_expand_bg();
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<gfxdecode_device> m_gfxdecode;
|
||||
required_device<palette_device> m_palette;
|
||||
void compgolf_map(address_map &map);
|
||||
};
|
||||
|
||||
#endif // MAME_DATAEAST_COMPGOLF_H
|
@ -1,129 +0,0 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Angelo Salese, Pierpaolo Prazzoli, Bryan McPhail
|
||||
/****************************************************************************************
|
||||
|
||||
Competition Golf Final Round
|
||||
video hardware emulation
|
||||
|
||||
****************************************************************************************/
|
||||
|
||||
#include "emu.h"
|
||||
#include "compgolf.h"
|
||||
|
||||
|
||||
void compgolf_state::compgolf_palette(palette_device &palette) const
|
||||
{
|
||||
uint8_t const *const color_prom = memregion("proms")->base();
|
||||
|
||||
for (int i = 0; i < palette.entries(); i++)
|
||||
{
|
||||
int bit0,bit1,bit2;
|
||||
bit0 = (color_prom[i] >> 0) & 0x01;
|
||||
bit1 = (color_prom[i] >> 1) & 0x01;
|
||||
bit2 = (color_prom[i] >> 2) & 0x01;
|
||||
int const r = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
|
||||
bit0 = (color_prom[i] >> 3) & 0x01;
|
||||
bit1 = (color_prom[i] >> 4) & 0x01;
|
||||
bit2 = (color_prom[i] >> 5) & 0x01;
|
||||
int const g = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
|
||||
bit0 = 0;
|
||||
bit1 = (color_prom[i] >> 6) & 0x01;
|
||||
bit2 = (color_prom[i] >> 7) & 0x01;
|
||||
int const b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
|
||||
|
||||
palette.set_pen_color(i, rgb_t(r, g, b));
|
||||
}
|
||||
}
|
||||
|
||||
void compgolf_state::compgolf_video_w(offs_t offset, uint8_t data)
|
||||
{
|
||||
m_videoram[offset] = data;
|
||||
m_text_tilemap->mark_tile_dirty(offset / 2);
|
||||
}
|
||||
|
||||
void compgolf_state::compgolf_back_w(offs_t offset, uint8_t data)
|
||||
{
|
||||
m_bg_ram[offset] = data;
|
||||
m_bg_tilemap->mark_tile_dirty(offset / 2);
|
||||
}
|
||||
|
||||
TILE_GET_INFO_MEMBER(compgolf_state::get_text_info)
|
||||
{
|
||||
tile_index <<= 1;
|
||||
tileinfo.set(2, m_videoram[tile_index + 1] | (m_videoram[tile_index] << 8), m_videoram[tile_index] >> 2, 0);
|
||||
}
|
||||
|
||||
TILEMAP_MAPPER_MEMBER(compgolf_state::back_scan)
|
||||
{
|
||||
/* logical (col,row) -> memory offset */
|
||||
return (col & 0x0f) + ((row & 0x0f) << 4) + ((col & 0x10) << 4) + ((row & 0x10) << 5);
|
||||
}
|
||||
|
||||
TILE_GET_INFO_MEMBER(compgolf_state::get_back_info)
|
||||
{
|
||||
int attr = m_bg_ram[tile_index * 2];
|
||||
int code = m_bg_ram[tile_index * 2 + 1] + ((attr & 1) << 8);
|
||||
int color = (attr & 0x3e) >> 1;
|
||||
|
||||
tileinfo.set(1, code, color, 0);
|
||||
}
|
||||
|
||||
void compgolf_state::video_start()
|
||||
{
|
||||
m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(compgolf_state::get_back_info)), tilemap_mapper_delegate(*this, FUNC(compgolf_state::back_scan)), 16, 16, 32, 32);
|
||||
m_text_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(compgolf_state::get_text_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
|
||||
|
||||
m_text_tilemap->set_transparent_pen(0);
|
||||
}
|
||||
|
||||
/*
|
||||
preliminary sprite list:
|
||||
0 1 2 3
|
||||
xx------ xxxxxxxx -------- -------- sprite code
|
||||
---x---- -------- -------- -------- Double Height
|
||||
----x--- -------- -------- -------- Color,all of it?
|
||||
-------- -------- xxxxxxxx -------- Y pos
|
||||
-------- -------- -------- xxxxxxxx X pos
|
||||
-----x-- -------- -------- -------- Flip X
|
||||
-------- -------- -------- -------- Flip Y(used?)
|
||||
*/
|
||||
void compgolf_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect )
|
||||
{
|
||||
int offs, fx, fy, x, y, color, sprite;
|
||||
|
||||
for (offs = 0; offs < 0x60; offs += 4)
|
||||
{
|
||||
sprite = m_spriteram[offs + 1] + (((m_spriteram[offs] & 0xc0) >> 6) * 0x100);
|
||||
x = 240 - m_spriteram[offs + 3];
|
||||
y = m_spriteram[offs + 2];
|
||||
color = (m_spriteram[offs] & 8)>>3;
|
||||
fx = m_spriteram[offs] & 4;
|
||||
fy = 0; /* ? */
|
||||
|
||||
m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
|
||||
sprite,
|
||||
color,fx,fy,x,y,0);
|
||||
|
||||
/* Double Height */
|
||||
if(m_spriteram[offs] & 0x10)
|
||||
{
|
||||
m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
|
||||
sprite + 1,
|
||||
color, fx, fy, x, y + 16, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
uint32_t compgolf_state::screen_update_compgolf(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
int scrollx = m_scrollx_hi + m_scrollx_lo;
|
||||
int scrolly = m_scrolly_hi + m_scrolly_lo;
|
||||
|
||||
m_bg_tilemap->set_scrollx(0, scrollx);
|
||||
m_bg_tilemap->set_scrolly(0, scrolly);
|
||||
|
||||
m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
|
||||
m_text_tilemap->draw(screen, bitmap, cliprect, 0, 0);
|
||||
draw_sprites(bitmap, cliprect);
|
||||
return 0;
|
||||
}
|
File diff suppressed because it is too large
Load Diff
@ -1,73 +0,0 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Bryan McPhail
|
||||
/*************************************************************************
|
||||
|
||||
Desert Assault
|
||||
|
||||
*************************************************************************/
|
||||
|
||||
#include "machine/gen_latch.h"
|
||||
#include "cpu/h6280/h6280.h"
|
||||
#include "sound/okim6295.h"
|
||||
#include "deco16ic.h"
|
||||
#include "decocomn.h"
|
||||
#include "video/bufsprite.h"
|
||||
#include "decospr.h"
|
||||
#include "emupal.h"
|
||||
|
||||
class dassault_state : public driver_device
|
||||
{
|
||||
public:
|
||||
dassault_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag)
|
||||
, m_maincpu(*this, "maincpu")
|
||||
, m_audiocpu(*this, "audiocpu")
|
||||
, m_subcpu(*this, "sub")
|
||||
, m_deco_tilegen(*this, "tilegen%u", 1U)
|
||||
, m_oki2(*this, "oki2")
|
||||
, m_spriteram(*this, "spriteram%u", 1U)
|
||||
, m_sprgen(*this, "spritegen%u", 1U)
|
||||
, m_palette(*this, "palette")
|
||||
, m_soundlatch(*this, "soundlatch")
|
||||
, m_pf2_rowscroll(*this, "pf2_rowscroll")
|
||||
, m_pf4_rowscroll(*this, "pf4_rowscroll")
|
||||
{ }
|
||||
|
||||
void dassault(machine_config &config);
|
||||
|
||||
void init_dassault();
|
||||
|
||||
private:
|
||||
/* devices */
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<h6280_device> m_audiocpu;
|
||||
required_device<cpu_device> m_subcpu;
|
||||
required_device_array<deco16ic_device, 2> m_deco_tilegen;
|
||||
required_device<okim6295_device> m_oki2;
|
||||
required_device_array<buffered_spriteram16_device, 2> m_spriteram;
|
||||
required_device_array<decospr_device, 2> m_sprgen;
|
||||
required_device<palette_device> m_palette;
|
||||
required_device<generic_latch_8_device> m_soundlatch;
|
||||
|
||||
/* memory pointers */
|
||||
required_shared_ptr<uint16_t> m_pf2_rowscroll;
|
||||
required_shared_ptr<uint16_t> m_pf4_rowscroll;
|
||||
|
||||
uint16_t m_priority = 0U;
|
||||
|
||||
void priority_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
|
||||
void main_irq_ack_w(uint16_t data);
|
||||
void sub_irq_ack_w(uint16_t data);
|
||||
uint16_t dassault_control_r(offs_t offset);
|
||||
void dassault_control_w(uint16_t data);
|
||||
uint16_t dassault_sub_control_r();
|
||||
void sound_bankswitch_w(uint8_t data);
|
||||
virtual void machine_reset() override;
|
||||
virtual void video_start() override;
|
||||
uint32_t screen_update_dassault(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
|
||||
void mixdassaultlayer(bitmap_rgb32 &bitmap, bitmap_ind16* sprite_bitmap, const rectangle &cliprect, uint16_t pri, uint16_t primask, uint16_t penbase, uint8_t alpha);
|
||||
DECO16IC_BANK_CB_MEMBER(bank_callback);
|
||||
void dassault_map(address_map &map);
|
||||
void dassault_sub_map(address_map &map);
|
||||
void sound_map(address_map &map);
|
||||
};
|
@ -1,142 +0,0 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Bryan McPhail
|
||||
/***************************************************************************
|
||||
|
||||
Desert Assault Video emulation - Bryan McPhail, mish@tendril.co.uk
|
||||
|
||||
I'm not sure if one of the alpha blending effects is correct (mode 0x8000,
|
||||
the usual mode 0x4000 should be correct). It may be some kind of orthogonal
|
||||
priority effect where it should cut a hole in other higher priority sprites
|
||||
to reveal a non-alpha'd hole, or alpha against a further back tilemap.
|
||||
(is this the helicopter shadow at the end of lv.1 ?)
|
||||
|
||||
Also, some priorities are still a little questionable.
|
||||
|
||||
|
||||
****************************************************************************/
|
||||
|
||||
#include "emu.h"
|
||||
#include "dassault.h"
|
||||
#include "screen.h"
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
void dassault_state::video_start()
|
||||
{
|
||||
m_priority = 0;
|
||||
m_sprgen[0]->alloc_sprite_bitmap();
|
||||
m_sprgen[1]->alloc_sprite_bitmap();
|
||||
save_item(NAME(m_priority));
|
||||
}
|
||||
|
||||
void dassault_state::mixdassaultlayer(bitmap_rgb32 &bitmap, bitmap_ind16* sprite_bitmap, const rectangle &cliprect, uint16_t pri, uint16_t primask, uint16_t penbase, uint8_t alpha)
|
||||
{
|
||||
pen_t const *const paldata = &m_palette->pen(0);
|
||||
|
||||
for (int y=cliprect.top(); y<=cliprect.bottom(); y++)
|
||||
{
|
||||
uint16_t const *const srcline = &sprite_bitmap->pix(y, 0);
|
||||
uint32_t *const dstline = &bitmap.pix(y, 0);
|
||||
|
||||
for (int x=cliprect.left(); x<=cliprect.right(); x++)
|
||||
{
|
||||
uint16_t pix = srcline[x];
|
||||
|
||||
if ((pix & primask) != pri)
|
||||
continue;
|
||||
|
||||
if (pix & 0xf)
|
||||
{
|
||||
uint16_t pen = pix&0x1ff;
|
||||
if (pix & 0x800) pen += 0x200;
|
||||
|
||||
if (alpha!=0xff)
|
||||
{
|
||||
if (pix&0x400) // TODO, Additive/Subtractive Blending?
|
||||
{
|
||||
uint32_t base = dstline[x];
|
||||
dstline[x] = alpha_blend_r32(base, paldata[pen+penbase], alpha);
|
||||
}
|
||||
else if (pix&0x200)
|
||||
{
|
||||
uint32_t base = dstline[x];
|
||||
dstline[x] = alpha_blend_r32(base, paldata[pen+penbase], alpha);
|
||||
}
|
||||
else
|
||||
{
|
||||
dstline[x] = paldata[pen+penbase];
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
dstline[x] = paldata[pen+penbase];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* are the priorities 100% correct? they're the same as they were before conversion to DECO52 sprite device, but if (for example) you walk to the side of the crates in the first part of the game you appear over them... */
|
||||
uint32_t dassault_state::screen_update_dassault(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
uint16_t flip = m_deco_tilegen[0]->pf_control_r(0);
|
||||
uint16_t priority = m_priority;
|
||||
|
||||
flip_screen_set(BIT(flip, 7));
|
||||
m_sprgen[0]->set_flip_screen(BIT(flip, 7));
|
||||
m_sprgen[1]->set_flip_screen(BIT(flip, 7));
|
||||
|
||||
m_sprgen[1]->draw_sprites(bitmap, cliprect, m_spriteram[1]->buffer(), 0x400);
|
||||
m_sprgen[0]->draw_sprites(bitmap, cliprect, m_spriteram[0]->buffer(), 0x400);
|
||||
bitmap_ind16* sprite_bitmap1 = &m_sprgen[0]->get_sprite_temp_bitmap();
|
||||
bitmap_ind16* sprite_bitmap2 = &m_sprgen[1]->get_sprite_temp_bitmap();
|
||||
|
||||
/* Update tilemaps */
|
||||
m_deco_tilegen[0]->pf_update(nullptr, m_pf2_rowscroll);
|
||||
m_deco_tilegen[1]->pf_update(nullptr, m_pf4_rowscroll);
|
||||
|
||||
/* Draw playfields/update priority bitmap */
|
||||
screen.priority().fill(0, cliprect);
|
||||
bitmap.fill(m_palette->pen(3072), cliprect);
|
||||
m_deco_tilegen[1]->tilemap_2_draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
|
||||
|
||||
/* The middle playfields can be swapped priority-wise */
|
||||
if ((priority & 3) == 0)
|
||||
{
|
||||
mixdassaultlayer(bitmap, sprite_bitmap1, cliprect, 0x0600, 0x0600, 0x400, 0xff); // 1
|
||||
m_deco_tilegen[0]->tilemap_2_draw(screen, bitmap, cliprect, 0, 2); // 2
|
||||
mixdassaultlayer(bitmap, sprite_bitmap1, cliprect, 0x0400, 0x0600, 0x400, 0xff); // 8
|
||||
m_deco_tilegen[1]->tilemap_1_draw(screen, bitmap, cliprect, 0, 16); // 16
|
||||
mixdassaultlayer(bitmap, sprite_bitmap1, cliprect, 0x0200, 0x0600, 0x400, 0xff); // 32
|
||||
mixdassaultlayer(bitmap, sprite_bitmap2, cliprect, 0x0000, 0x0000, 0x800, 0x80); // 64?
|
||||
mixdassaultlayer(bitmap, sprite_bitmap1, cliprect, 0x0000, 0x0600, 0x400, 0xff); // 128
|
||||
|
||||
}
|
||||
else if ((priority & 3) == 1)
|
||||
{
|
||||
mixdassaultlayer(bitmap, sprite_bitmap1, cliprect, 0x0600, 0x0600, 0x400, 0xff); // 1
|
||||
m_deco_tilegen[1]->tilemap_1_draw(screen, bitmap, cliprect, 0, 2); // 2
|
||||
mixdassaultlayer(bitmap, sprite_bitmap1, cliprect, 0x0400, 0x0600, 0x400, 0xff); // 8
|
||||
mixdassaultlayer(bitmap, sprite_bitmap2, cliprect, 0x0000, 0x0000, 0x800, 0x80); // 16?
|
||||
mixdassaultlayer(bitmap, sprite_bitmap1, cliprect, 0x0200, 0x0600, 0x400, 0xff); // 32
|
||||
m_deco_tilegen[0]->tilemap_2_draw(screen, bitmap, cliprect, 0, 64); // 64
|
||||
mixdassaultlayer(bitmap, sprite_bitmap1, cliprect, 0x0000, 0x0600, 0x400, 0xff); // 128
|
||||
}
|
||||
else if ((priority & 3) == 3)
|
||||
{
|
||||
mixdassaultlayer(bitmap, sprite_bitmap1, cliprect, 0x0600, 0x0600, 0x400, 0xff); // 1
|
||||
m_deco_tilegen[1]->tilemap_1_draw(screen, bitmap, cliprect, 0, 2); // 2
|
||||
mixdassaultlayer(bitmap, sprite_bitmap1, cliprect, 0x0400, 0x0600, 0x400, 0xff); // 8
|
||||
m_deco_tilegen[0]->tilemap_2_draw(screen, bitmap, cliprect, 0, 16); // 16
|
||||
mixdassaultlayer(bitmap, sprite_bitmap1, cliprect, 0x0200, 0x0600, 0x400, 0xff); // 32
|
||||
mixdassaultlayer(bitmap, sprite_bitmap2, cliprect, 0x0000, 0x0000, 0x800, 0x80); // 64?
|
||||
mixdassaultlayer(bitmap, sprite_bitmap1, cliprect, 0x0000, 0x0600, 0x400, 0xff); // 128
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Unused */
|
||||
}
|
||||
|
||||
m_deco_tilegen[0]->tilemap_1_draw(screen, bitmap, cliprect, 0, 0);
|
||||
return 0;
|
||||
}
|
@ -34952,7 +34952,7 @@ mkp286 // Morse KP-286 motherboard (286)
|
||||
n8810m15 // 1987 Nixdorf 8810 M15 Laptop - PC07
|
||||
n8810m16c // 1990 Nixdorf 8810 M16 Laptop - PC17 - CGA version
|
||||
n8810m16v // 1990 Nixdorf 8810 M16 Laptop - PC17 - VGA version
|
||||
n8810m20 // 1989 Nixdorf 8810/20 Laptop VGA
|
||||
n8810m20 // 1989 Nixdorf 8810/20 Laptop VGA
|
||||
n8810m30 // 1990 Nixdorf 8810 M30
|
||||
n8810m55 // 1986 Nixdorf 8810 M55
|
||||
ncr3302 // NCR Class 3302 Model 0110
|
||||
@ -34963,7 +34963,7 @@ necapciv // NEC APC IV
|
||||
o286foxii // Octek Fox II motherboard (286)
|
||||
ocfoxm // Octek Fox M 286
|
||||
octekg2 // Octek motherboard with Headland G2 chipset (286)
|
||||
ocxt286 // Octek XT-286 motherboard
|
||||
ocxt286 // Octek XT-286 motherboard
|
||||
olim203 // Olivetti 286 motherboard
|
||||
olyport40 // AEG Olympia Olyport 40
|
||||
pc30iii // Commodore PC 30-III
|
||||
@ -35338,7 +35338,7 @@ gogostrk //
|
||||
@source:pc/pc.cpp
|
||||
ataripc1 // Atari PC1
|
||||
ataripc3 // Atari PC3
|
||||
auvip800 // AUVA VIP 800
|
||||
auvip800 // AUVA VIP 800
|
||||
bw230 // 1985 Bondwell (CGA)
|
||||
cadd810 // CompuAdd 810
|
||||
comdesk // Compaq Deskpro
|
||||
@ -35352,8 +35352,8 @@ dtkerso // 198? PC-XT clones with a DTK/ERSO BIOS
|
||||
eaglespirit // Eagle PC Spirit
|
||||
eppc // 1985 Ericsson Portable PC
|
||||
hyo88t // Hyosung Topstar 88T
|
||||
hyu16t // Hyundai Super 16 T
|
||||
hyu16te // Hyundai Super 16 TE
|
||||
hyu16t // Hyundai Super 16 T
|
||||
hyu16te // Hyundai Super 16 TE
|
||||
ibm5550 //
|
||||
iskr3104 //
|
||||
ittxtra // 1984 ITT XTRA
|
||||
@ -35371,7 +35371,7 @@ mpc1600 // Columbia Data Products MPC 1600
|
||||
mc1702 //
|
||||
mk88 //
|
||||
ncrpc4i // NCR PC4i
|
||||
ncrpc6 // NCR PC6
|
||||
ncrpc6 // NCR PC6
|
||||
nixpc01 // Nixdorf 8810/25 - PC01
|
||||
olivm15 // Olivetti M15
|
||||
olystar20f // AEG Olympia Olystar 20F
|
||||
@ -35745,6 +35745,7 @@ kiss //
|
||||
kosteel //
|
||||
lostwrlp //
|
||||
m_mpac //
|
||||
m_mpacb //
|
||||
mdntmrdr //
|
||||
medusa //
|
||||
monrobwl //
|
||||
|
@ -2241,6 +2241,18 @@ ROM_START(m_mpac)
|
||||
ROM_LOAD("872-03_5.532", 0xb000, 0x1000, CRC(8fcdf853) SHA1(7c6bffcd974d2684e7f2c69d926f6cabb53e2f90))
|
||||
ROM_END
|
||||
|
||||
ROM_START(m_mpacb)
|
||||
ROM_REGION(0x8000, "maincpu", 0)
|
||||
ROM_LOAD( "u2", 0x1000, 0x0800, CRC(a697971a) SHA1(e45cbb7822ac159c447877c4c837be5aaa4ac675))
|
||||
ROM_CONTINUE( 0x5000, 0x0800)
|
||||
ROM_LOAD( "720-53_6.732", 0x1800, 0x0800, CRC(c2e92f80) SHA1(61de956a4b6e9fb9ef2b25c01bff1fb5972284ad))
|
||||
ROM_CONTINUE( 0x5800, 0x0800)
|
||||
ROM_RELOAD( 0x7000, 0x1000)
|
||||
ROM_REGION(0x10000, "squawk_n_talk_ay:cpu", 0)
|
||||
ROM_LOAD("872-01_4.532", 0xa000, 0x1000, CRC(d21ce16d) SHA1(3ee6e2629530e7e6e4d7eac713d34c48297a1047))
|
||||
ROM_LOAD("872-03_5.532", 0xb000, 0x1000, CRC(8fcdf853) SHA1(7c6bffcd974d2684e7f2c69d926f6cabb53e2f90))
|
||||
ROM_END
|
||||
|
||||
/*-----------------------------------------------------------
|
||||
/ Grand Slam #1311
|
||||
/-----------------------------------------------------------*/
|
||||
@ -2895,7 +2907,8 @@ GAME( 1981, elektra, 0, squawk_n_talk_ay, by35_os5x, by35_state, init_
|
||||
GAME( 1982, spectrm, 0, squawk_n_talk, by35_os5x, by35_state, init_by35_7, ROT0, "Bally", "Spectrum", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1982, spectrm4, spectrm, squawk_n_talk, by35_os5x, by35_state, init_by35_7, ROT0, "Bally", "Spectrum (ver 4)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1982, rapidfip, 0, squawk_n_talk, by35, by35_state, init_by35_7, ROT0, "Bally", "Rapid Fire", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1982, m_mpac, 0, squawk_n_talk_ay, by35_os5x, by35_state, init_by35_7, ROT0, "Bally", "Mr. and Mrs. PacMan", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1982, m_mpac, 0, squawk_n_talk_ay, by35_os5x, by35_state, init_by35_7, ROT0, "Bally", "Mr. and Mrs. PacMan (set 1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1982, m_mpacb, m_mpac, squawk_n_talk_ay, by35_os5x, by35_state, init_by35_7, ROT0, "Bally", "Mr. and Mrs. PacMan (set 2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1982, mysteria, 0, squawk_n_talk_ay, by35_os5x, by35_state, init_by35_7, ROT0, "Bally", "Mysterian (prototype)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // uses 2 sound boards
|
||||
|
||||
// Cheap Squeak sound
|
||||
|
Loading…
Reference in New Issue
Block a user