mirror of
https://github.com/holub/mame
synced 2025-04-19 15:11:37 +03:00
d9final.cpp, ppmast93.cpp, tmspoker.cpp, ultrsprt.cpp: used finders instead of tagmap lookups for rombanks
This commit is contained in:
parent
dfa5b141d6
commit
565e8b6e98
@ -364,7 +364,7 @@ const double XTAL::known_xtals[] = {
|
||||
27'562'000, /* 27.562_MHz_XTAL Visual 220 */
|
||||
27'720'000, /* 27.72_MHz_XTAL AT&T 610 132-column display clock */
|
||||
27'956'000, /* 27.956_MHz_XTAL CIT-101e 132-column display clock */
|
||||
28'000'000, /* 28_MHz_XTAL Sega System H1 SH2 clock */
|
||||
28'000'000, /* 28_MHz_XTAL Sega System H1 SH2 clock, Kyukyoku Tiger / Twin Cobra */
|
||||
28'224'000, /* 28.224_MHz_XTAL Roland JD-800 */
|
||||
28'322'000, /* 28.322_MHz_XTAL Saitek RISC 2500, Mephisto Montreux */
|
||||
28'375'160, /* 28.37516_MHz_XTAL Amiga PAL systems */
|
||||
|
@ -35,6 +35,8 @@
|
||||
#include "tilemap.h"
|
||||
|
||||
|
||||
namespace {
|
||||
|
||||
class d9final_state : public driver_device
|
||||
{
|
||||
public:
|
||||
@ -44,11 +46,16 @@ public:
|
||||
m_gfxdecode(*this, "gfxdecode"),
|
||||
m_lo_vram(*this, "lo_vram"),
|
||||
m_hi_vram(*this, "hi_vram"),
|
||||
m_cram(*this, "cram")
|
||||
m_cram(*this, "cram"),
|
||||
m_mainbank(*this, "mainbank")
|
||||
{ }
|
||||
|
||||
void d9final(machine_config &config);
|
||||
|
||||
protected:
|
||||
virtual void machine_start() override;
|
||||
virtual void video_start() override;
|
||||
|
||||
private:
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<gfxdecode_device> m_gfxdecode;
|
||||
@ -56,6 +63,7 @@ private:
|
||||
required_shared_ptr<uint8_t> m_lo_vram;
|
||||
required_shared_ptr<uint8_t> m_hi_vram;
|
||||
required_shared_ptr<uint8_t> m_cram;
|
||||
required_memory_bank m_mainbank;
|
||||
|
||||
tilemap_t *m_sc0_tilemap;
|
||||
|
||||
@ -67,19 +75,16 @@ private:
|
||||
|
||||
TILE_GET_INFO_MEMBER(get_sc0_tile_info);
|
||||
|
||||
virtual void machine_start() override;
|
||||
virtual void video_start() override;
|
||||
|
||||
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
void d9final_io(address_map &map);
|
||||
void d9final_map(address_map &map);
|
||||
void io_map(address_map &map);
|
||||
void prg_map(address_map &map);
|
||||
};
|
||||
|
||||
|
||||
|
||||
TILE_GET_INFO_MEMBER(d9final_state::get_sc0_tile_info)
|
||||
{
|
||||
int tile = ((m_hi_vram[tile_index] & 0x3f)<<8) | m_lo_vram[tile_index];
|
||||
int tile = ((m_hi_vram[tile_index] & 0x3f) << 8) | m_lo_vram[tile_index];
|
||||
int color = m_cram[tile_index] & 0x3f;
|
||||
|
||||
tileinfo.set(0,
|
||||
@ -90,12 +95,12 @@ TILE_GET_INFO_MEMBER(d9final_state::get_sc0_tile_info)
|
||||
|
||||
void d9final_state::video_start()
|
||||
{
|
||||
m_sc0_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(d9final_state::get_sc0_tile_info)), TILEMAP_SCAN_ROWS, 8,8,64,32);
|
||||
m_sc0_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(d9final_state::get_sc0_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32);
|
||||
}
|
||||
|
||||
uint32_t d9final_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
m_sc0_tilemap->draw(screen, bitmap, cliprect, 0,0);
|
||||
m_sc0_tilemap->draw(screen, bitmap, cliprect, 0, 0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -119,10 +124,10 @@ void d9final_state::sc0_cram(offs_t offset, uint8_t data)
|
||||
|
||||
void d9final_state::bank_w(uint8_t data)
|
||||
{
|
||||
membank("bank1")->set_entry(data & 0x7);
|
||||
m_mainbank->set_entry(data & 0x7);
|
||||
}
|
||||
|
||||
/* game checks this after three attract cycles, otherwise coin inputs stop to work. */
|
||||
// game checks this after three attract cycles, otherwise coin inputs stop to work.
|
||||
uint8_t d9final_state::prot_latch_r()
|
||||
{
|
||||
// printf("PC=%06x\n",m_maincpu->pc());
|
||||
@ -131,21 +136,21 @@ uint8_t d9final_state::prot_latch_r()
|
||||
}
|
||||
|
||||
|
||||
void d9final_state::d9final_map(address_map &map)
|
||||
void d9final_state::prg_map(address_map &map)
|
||||
{
|
||||
map(0x0000, 0x7fff).rom();
|
||||
map(0x8000, 0xbfff).bankr("bank1");
|
||||
map(0x8000, 0xbfff).bankr(m_mainbank);
|
||||
map(0xc000, 0xc7ff).ram().share("nvram");
|
||||
map(0xc800, 0xcbff).ram().w("palette", FUNC(palette_device::write8)).share("palette");
|
||||
map(0xcc00, 0xcfff).ram().w("palette", FUNC(palette_device::write8_ext)).share("palette_ext");
|
||||
map(0xd000, 0xd7ff).ram().w(FUNC(d9final_state::sc0_lovram)).share("lo_vram");
|
||||
map(0xd800, 0xdfff).ram().w(FUNC(d9final_state::sc0_hivram)).share("hi_vram");
|
||||
map(0xe000, 0xe7ff).ram().w(FUNC(d9final_state::sc0_cram)).share("cram");
|
||||
map(0xd000, 0xd7ff).ram().w(FUNC(d9final_state::sc0_lovram)).share(m_lo_vram);
|
||||
map(0xd800, 0xdfff).ram().w(FUNC(d9final_state::sc0_hivram)).share(m_hi_vram);
|
||||
map(0xe000, 0xe7ff).ram().w(FUNC(d9final_state::sc0_cram)).share(m_cram);
|
||||
map(0xf000, 0xf007).r(FUNC(d9final_state::prot_latch_r)); //.rw("essnd", FUNC(es8712_device::read), FUNC(es8712_device::write));
|
||||
map(0xf800, 0xf80f).rw("rtc", FUNC(rtc62421_device::read), FUNC(rtc62421_device::write));
|
||||
}
|
||||
|
||||
void d9final_state::d9final_io(address_map &map)
|
||||
void d9final_state::io_map(address_map &map)
|
||||
{
|
||||
map.global_mask(0xff);
|
||||
// map(0x00, 0x00).nopw(); //bit 0: irq enable? screen enable?
|
||||
@ -194,9 +199,9 @@ static INPUT_PORTS_START( d9final )
|
||||
PORT_DIPSETTING( 0x12, "5000" )
|
||||
PORT_DIPSETTING( 0x22, "10000" )
|
||||
PORT_DIPSETTING( 0x00, "20000" )
|
||||
PORT_DIPSETTING( 0x10, "20000" )
|
||||
PORT_DIPSETTING( 0x30, "20000" )
|
||||
PORT_DIPSETTING( 0x02, "50000" )
|
||||
// 0x10 20000
|
||||
// 0x30 20000
|
||||
PORT_DIPUNUSED_DIPLOC( 0x04, 0x04, "SW1:3" )
|
||||
PORT_DIPNAME( 0x08, 0x08, "Auto Start" ) PORT_DIPLOCATION("SW1:4")
|
||||
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
|
||||
@ -294,26 +299,26 @@ static const gfx_layout tiles16x8_layout =
|
||||
};
|
||||
|
||||
static GFXDECODE_START( gfx_d9final )
|
||||
GFXDECODE_ENTRY( "gfx1", 0, tiles16x8_layout, 0, 16*4 )
|
||||
GFXDECODE_ENTRY( "tiles", 0, tiles16x8_layout, 0, 16 * 4 )
|
||||
GFXDECODE_END
|
||||
|
||||
void d9final_state::machine_start()
|
||||
{
|
||||
membank("bank1")->configure_entries(0, 8, memregion("maincpu")->base() + 0x10000, 0x4000);
|
||||
membank("bank1")->set_entry(0);
|
||||
m_mainbank->configure_entries(0, 8, memregion("maincpu")->base() + 0x10000, 0x4000);
|
||||
m_mainbank->set_entry(0);
|
||||
}
|
||||
|
||||
void d9final_state::d9final(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
Z80(config, m_maincpu, 24000000/4); /* ? MHz */
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &d9final_state::d9final_map);
|
||||
m_maincpu->set_addrmap(AS_IO, &d9final_state::d9final_io);
|
||||
// basic machine hardware
|
||||
Z80(config, m_maincpu, 24000000 / 4); /* ? MHz */
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &d9final_state::prg_map);
|
||||
m_maincpu->set_addrmap(AS_IO, &d9final_state::io_map);
|
||||
m_maincpu->set_vblank_int("screen", FUNC(d9final_state::irq0_line_hold));
|
||||
|
||||
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); // Sharp LH5116D-10 + battery
|
||||
|
||||
/* 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(0));
|
||||
@ -325,11 +330,12 @@ void d9final_state::d9final(machine_config &config)
|
||||
GFXDECODE(config, m_gfxdecode, "palette", gfx_d9final);
|
||||
PALETTE(config, "palette", palette_device::BLACK).set_format(palette_device::xBRG_444, 0x400);
|
||||
|
||||
// sound hardware
|
||||
SPEAKER(config, "mono").front_center();
|
||||
|
||||
YM2413(config, "ymsnd", XTAL(3'579'545)).add_route(ALL_OUTPUTS, "mono", 0.5);
|
||||
|
||||
//ES8712(config, "essnd", 24000000/3).add_route(ALL_OUTPUTS, "mono", 1.0); // clock unknown
|
||||
//ES8712(config, "essnd", 24000000 / 3).add_route(ALL_OUTPUTS, "mono", 1.0); // clock unknown
|
||||
|
||||
RTC62421(config, "rtc", XTAL(32'768)); // internal oscillator
|
||||
}
|
||||
@ -342,11 +348,12 @@ ROM_START( d9final )
|
||||
ROM_COPY( "maincpu", 0x10000, 0x18000, 0x08000 ) //or just 0xff
|
||||
ROM_LOAD( "1.2h", 0x20000, 0x10000, CRC(901281ec) SHA1(7b4cae343f1b025d988a507141c0fa8229a0fea1) )
|
||||
|
||||
ROM_REGION( 0x80000, "gfx1", 0 )
|
||||
ROM_REGION( 0x80000, "tiles", 0 )
|
||||
ROM_LOAD16_BYTE( "3.13h", 0x00001, 0x40000, CRC(a2de0cce) SHA1(d510671b75417c10ce479663f6f21367121384b4) )
|
||||
ROM_LOAD16_BYTE( "4.15h", 0x00000, 0x40000, CRC(859b7105) SHA1(1b36f84706473afaa50b6546d7373a2ee6602b9a) )
|
||||
ROM_END
|
||||
|
||||
} // Anonymous namespace
|
||||
|
||||
|
||||
GAME( 1992, d9final, 0, d9final, d9final, d9final_state, empty_init, ROT0, "Excellent System", "Dream 9 Final (v2.24)", MACHINE_SUPPORTS_SAVE )
|
||||
|
@ -970,7 +970,7 @@ ROM_END
|
||||
ROM_START( qlgs )
|
||||
ROM_REGION( 0x04000, "maincpu", 0 )
|
||||
// Internal rom of IGS027A type G ARM based MCU
|
||||
ROM_LOAD( "qlgs_igs027a", 0x00000, 0x4000, NO_DUMP )
|
||||
ROM_LOAD( "qlgs_igs027a", 0x00000, 0x4000, NO_DUMP ) // has a 'DJ-2 U17' and a 'C3' sticker
|
||||
|
||||
ROM_REGION32_LE( 0x200000, "user1", 0 ) // external ARM data / prg
|
||||
ROM_LOAD( "s-501cn.u17", 0x000000, 0x200000, CRC(c80b61c0) SHA1(4e9920beb85fd559620f3136ea52ab6532657b1f) ) // 11xxxxxxxxxxxxxxxxxxx = 0xFF
|
||||
|
@ -142,6 +142,8 @@ Dip locations added based on the notes above.
|
||||
#include "tilemap.h"
|
||||
|
||||
|
||||
namespace {
|
||||
|
||||
class ppmast93_state : public driver_device
|
||||
{
|
||||
public:
|
||||
@ -150,17 +152,23 @@ public:
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_gfxdecode(*this, "gfxdecode"),
|
||||
m_bgram(*this, "bgram"),
|
||||
m_fgram(*this, "fgram")
|
||||
m_fgram(*this, "fgram"),
|
||||
m_cpubank(*this, "cpubank")
|
||||
{ }
|
||||
|
||||
void ppmast93(machine_config &config);
|
||||
|
||||
protected:
|
||||
virtual void machine_start() override;
|
||||
virtual void video_start() override;
|
||||
|
||||
private:
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<gfxdecode_device> m_gfxdecode;
|
||||
|
||||
required_shared_ptr<uint8_t> m_bgram;
|
||||
required_shared_ptr<uint8_t> m_fgram;
|
||||
required_memory_bank m_cpubank;
|
||||
|
||||
tilemap_t *m_fg_tilemap;
|
||||
tilemap_t *m_bg_tilemap;
|
||||
@ -172,32 +180,29 @@ private:
|
||||
TILE_GET_INFO_MEMBER(get_bg_tile_info);
|
||||
TILE_GET_INFO_MEMBER(get_fg_tile_info);
|
||||
|
||||
virtual void machine_start() override;
|
||||
virtual void video_start() override;
|
||||
|
||||
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
void ppmast93_cpu1_io(address_map &map);
|
||||
void ppmast93_cpu1_map(address_map &map);
|
||||
void ppmast93_cpu2_io(address_map &map);
|
||||
void ppmast93_cpu2_map(address_map &map);
|
||||
void cpu1_io(address_map &map);
|
||||
void cpu1_map(address_map &map);
|
||||
void cpu2_io(address_map &map);
|
||||
void cpu2_map(address_map &map);
|
||||
};
|
||||
|
||||
|
||||
void ppmast93_state::machine_start()
|
||||
{
|
||||
membank("cpubank")->configure_entries(0, 8, memregion("maincpu")->base(), 0x4000);
|
||||
m_cpubank->configure_entries(0, 8, memregion("maincpu")->base(), 0x4000);
|
||||
}
|
||||
|
||||
void ppmast93_state::fgram_w(offs_t offset, uint8_t data)
|
||||
{
|
||||
m_fgram[offset] = data;
|
||||
m_fg_tilemap->mark_tile_dirty(offset/2);
|
||||
m_fg_tilemap->mark_tile_dirty(offset / 2);
|
||||
}
|
||||
|
||||
void ppmast93_state::bgram_w(offs_t offset, uint8_t data)
|
||||
{
|
||||
m_bgram[offset] = data;
|
||||
m_bg_tilemap->mark_tile_dirty(offset/2);
|
||||
m_bg_tilemap->mark_tile_dirty(offset / 2);
|
||||
}
|
||||
|
||||
void ppmast93_state::port4_w(uint8_t data)
|
||||
@ -205,20 +210,20 @@ void ppmast93_state::port4_w(uint8_t data)
|
||||
machine().bookkeeping().coin_counter_w(0, data & 0x08);
|
||||
machine().bookkeeping().coin_counter_w(1, data & 0x10);
|
||||
|
||||
membank("cpubank")->set_entry(data & 0x07);
|
||||
m_cpubank->set_entry(data & 0x07);
|
||||
}
|
||||
|
||||
void ppmast93_state::ppmast93_cpu1_map(address_map &map)
|
||||
void ppmast93_state::cpu1_map(address_map &map)
|
||||
{
|
||||
map(0x0000, 0x7fff).rom().nopw();
|
||||
map(0x8000, 0xbfff).bankr("cpubank");
|
||||
map(0xd000, 0xd7ff).ram().w(FUNC(ppmast93_state::bgram_w)).share("bgram");
|
||||
map(0x8000, 0xbfff).bankr(m_cpubank);
|
||||
map(0xd000, 0xd7ff).ram().w(FUNC(ppmast93_state::bgram_w)).share(m_bgram);
|
||||
map(0xd800, 0xdfff).nopw();
|
||||
map(0xf000, 0xf7ff).ram().w(FUNC(ppmast93_state::fgram_w)).share("fgram");
|
||||
map(0xf000, 0xf7ff).ram().w(FUNC(ppmast93_state::fgram_w)).share(m_fgram);
|
||||
map(0xf800, 0xffff).ram();
|
||||
}
|
||||
|
||||
void ppmast93_state::ppmast93_cpu1_io(address_map &map)
|
||||
void ppmast93_state::cpu1_io(address_map &map)
|
||||
{
|
||||
map.global_mask(0xff);
|
||||
map(0x00, 0x00).portr("P1").w("soundlatch", FUNC(generic_latch_8_device::write));
|
||||
@ -228,16 +233,16 @@ void ppmast93_state::ppmast93_cpu1_io(address_map &map)
|
||||
map(0x08, 0x08).portr("DSW2");
|
||||
}
|
||||
|
||||
void ppmast93_state::ppmast93_cpu2_map(address_map &map)
|
||||
void ppmast93_state::cpu2_map(address_map &map)
|
||||
{
|
||||
map(0x0000, 0xfbff).rom().region("sub", 0x10000);
|
||||
map(0x0000, 0xfbff).rom().region("sub", 0x00000);
|
||||
map(0xfc00, 0xfc00).r("soundlatch", FUNC(generic_latch_8_device::read));
|
||||
map(0xfd00, 0xffff).ram();
|
||||
}
|
||||
|
||||
void ppmast93_state::ppmast93_cpu2_io(address_map &map)
|
||||
void ppmast93_state::cpu2_io(address_map &map)
|
||||
{
|
||||
map(0x0000, 0xffff).rom().region("sub", 0x20000);
|
||||
map(0x0000, 0xffff).rom().region("sub", 0x10000);
|
||||
map(0x0000, 0x0001).mirror(0xff00).w("ymsnd", FUNC(ym2413_device::write));
|
||||
map(0x0002, 0x0002).mirror(0xff00).w("dac", FUNC(dac_byte_interface::data_w));
|
||||
}
|
||||
@ -337,12 +342,12 @@ static const gfx_layout tiles8x8_layout =
|
||||
};
|
||||
|
||||
static GFXDECODE_START( gfx_ppmast93 )
|
||||
GFXDECODE_ENTRY( "gfx1", 0, tiles8x8_layout, 0, 16 )
|
||||
GFXDECODE_ENTRY( "tiles", 0, tiles8x8_layout, 0, 16 )
|
||||
GFXDECODE_END
|
||||
|
||||
TILE_GET_INFO_MEMBER(ppmast93_state::get_bg_tile_info)
|
||||
{
|
||||
int code = (m_bgram[tile_index*2+1] << 8) | m_bgram[tile_index*2];
|
||||
int code = (m_bgram[tile_index * 2 + 1] << 8) | m_bgram[tile_index * 2];
|
||||
tileinfo.set(0,
|
||||
code & 0x0fff,
|
||||
(code & 0xf000) >> 12,
|
||||
@ -351,9 +356,9 @@ TILE_GET_INFO_MEMBER(ppmast93_state::get_bg_tile_info)
|
||||
|
||||
TILE_GET_INFO_MEMBER(ppmast93_state::get_fg_tile_info)
|
||||
{
|
||||
int code = (m_fgram[tile_index*2+1] << 8) | m_fgram[tile_index*2];
|
||||
int code = (m_fgram[tile_index * 2 + 1] << 8) | m_fgram[tile_index * 2];
|
||||
tileinfo.set(0,
|
||||
(code & 0x0fff)+0x1000,
|
||||
(code & 0x0fff) + 0x1000,
|
||||
(code & 0xf000) >> 12,
|
||||
0);
|
||||
}
|
||||
@ -375,23 +380,23 @@ uint32_t ppmast93_state::screen_update(screen_device &screen, bitmap_ind16 &bitm
|
||||
|
||||
void ppmast93_state::ppmast93(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
Z80(config, m_maincpu, 5000000); /* 5 MHz */
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &ppmast93_state::ppmast93_cpu1_map);
|
||||
m_maincpu->set_addrmap(AS_IO, &ppmast93_state::ppmast93_cpu1_io);
|
||||
// basic machine hardware
|
||||
Z80(config, m_maincpu, 5_MHz_XTAL);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &ppmast93_state::cpu1_map);
|
||||
m_maincpu->set_addrmap(AS_IO, &ppmast93_state::cpu1_io);
|
||||
m_maincpu->set_vblank_int("screen", FUNC(ppmast93_state::irq0_line_hold));
|
||||
|
||||
z80_device &sub(Z80(config, "sub", 5000000)); /* 5 MHz */
|
||||
sub.set_addrmap(AS_PROGRAM, &ppmast93_state::ppmast93_cpu2_map);
|
||||
sub.set_addrmap(AS_IO, &ppmast93_state::ppmast93_cpu2_io);
|
||||
z80_device &sub(Z80(config, "sub", 5_MHz_XTAL));
|
||||
sub.set_addrmap(AS_PROGRAM, &ppmast93_state::cpu2_map);
|
||||
sub.set_addrmap(AS_IO, &ppmast93_state::cpu2_io);
|
||||
sub.set_periodic_int(FUNC(ppmast93_state::irq0_line_hold), attotime::from_hz(8000));
|
||||
|
||||
/* video hardware */
|
||||
// video hardware
|
||||
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
|
||||
screen.set_refresh_hz(55);
|
||||
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
|
||||
screen.set_size(256, 256);
|
||||
screen.set_visarea(0, 256-1, 0, 256-1);
|
||||
screen.set_visarea_full();
|
||||
screen.set_screen_update(FUNC(ppmast93_state::screen_update));
|
||||
screen.set_palette("palette");
|
||||
|
||||
@ -399,12 +404,12 @@ void ppmast93_state::ppmast93(machine_config &config)
|
||||
|
||||
PALETTE(config, "palette", palette_device::RGB_444_PROMS, "proms", 0x100);
|
||||
|
||||
|
||||
// sound hardware
|
||||
SPEAKER(config, "speaker").front_center();
|
||||
|
||||
GENERIC_LATCH_8(config, "soundlatch");
|
||||
|
||||
YM2413(config, "ymsnd", 5000000/2).add_route(ALL_OUTPUTS, "speaker", 1.0);
|
||||
YM2413(config, "ymsnd", 5_MHz_XTAL / 2).add_route(ALL_OUTPUTS, "speaker", 1.0);
|
||||
|
||||
DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.3); // unknown DAC
|
||||
}
|
||||
@ -413,10 +418,10 @@ ROM_START( ppmast93 )
|
||||
ROM_REGION( 0x20000, "maincpu", 0 )
|
||||
ROM_LOAD( "2.up7", 0x00000, 0x20000, CRC(8854d8db) SHA1(9d93ddfb44d533772af6519747a6cb50b42065cd) )
|
||||
|
||||
ROM_REGION( 0x30000, "sub", 0 )
|
||||
ROM_LOAD( "1.ue7", 0x10000, 0x20000, CRC(8e26939e) SHA1(e62441e523f5be6a3889064cc5e0f44545260e93) )
|
||||
ROM_REGION( 0x20000, "sub", 0 )
|
||||
ROM_LOAD( "1.ue7", 0x00000, 0x20000, CRC(8e26939e) SHA1(e62441e523f5be6a3889064cc5e0f44545260e93) )
|
||||
|
||||
ROM_REGION( 0x40000, "gfx1", 0 )
|
||||
ROM_REGION( 0x40000, "tiles", 0 )
|
||||
ROM_LOAD( "3.ug16", 0x00000, 0x20000, CRC(8ab24641) SHA1(c0ebee90bf3fe208947ae5ea56f31469ed24d198) )
|
||||
ROM_LOAD( "4.ug15", 0x20000, 0x20000, CRC(b16e9fb6) SHA1(53aa962c63319cd649e0c8cf0c26e2308598e1aa) )
|
||||
|
||||
@ -426,4 +431,7 @@ ROM_START( ppmast93 )
|
||||
ROM_LOAD( "prom1.ug26", 0x200, 0x100, CRC(d979c64e) SHA1(172c9579013d58e35a5b4f732e360811ac36295e) )
|
||||
ROM_END
|
||||
|
||||
} // Anonymous namespace
|
||||
|
||||
|
||||
GAME( 1993, ppmast93, 0, ppmast93, ppmast93, ppmast93_state, empty_init, ROT0, "Electronic Devices S.R.L.", "Ping Pong Masters '93", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
|
||||
|
@ -157,7 +157,7 @@
|
||||
'-------------------'
|
||||
|
||||
|
||||
Both program ROMs are sharing the same adressing space.
|
||||
Both program ROMs are sharing the same addressing space.
|
||||
The switch placed below the program ROMs is connected to each PD /PGM line,
|
||||
so you can switch between 2 different programs.
|
||||
|
||||
@ -215,8 +215,7 @@
|
||||
#include "tilemap.h"
|
||||
|
||||
|
||||
#define MASTER_CLOCK XTAL(6'000'000) /* confirmed */
|
||||
|
||||
namespace {
|
||||
|
||||
class tmspoker_state : public driver_device
|
||||
{
|
||||
@ -224,6 +223,7 @@ public:
|
||||
tmspoker_state(const machine_config &mconfig, device_type type, const char *tag) :
|
||||
driver_device(mconfig, type, tag),
|
||||
m_videoram(*this, "videoram"),
|
||||
m_gamebank(*this, "gamebank"),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_gfxdecode(*this, "gfxdecode"),
|
||||
m_outlatch(*this, "outlatch%u", 0U),
|
||||
@ -241,22 +241,23 @@ protected:
|
||||
|
||||
private:
|
||||
required_shared_ptr<uint8_t> m_videoram;
|
||||
required_memory_bank m_gamebank;
|
||||
tilemap_t *m_bg_tilemap;
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<gfxdecode_device> m_gfxdecode;
|
||||
required_device_array<ls259_device, 4> m_outlatch;
|
||||
required_ioport_array<3> m_inputs;
|
||||
|
||||
void tmspoker_videoram_w(offs_t offset, uint8_t data);
|
||||
//void debug_w(uint8_t data);
|
||||
void videoram_w(offs_t offset, uint8_t data);
|
||||
[[maybe_unused]] void debug_w(uint8_t data);
|
||||
uint8_t inputs_r(offs_t offset);
|
||||
TILE_GET_INFO_MEMBER(get_bg_tile_info);
|
||||
void tmspoker_palette(palette_device &palette) const;
|
||||
uint32_t screen_update_tmspoker(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
|
||||
INTERRUPT_GEN_MEMBER(tmspoker_interrupt);
|
||||
void palette(palette_device &palette) const;
|
||||
uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
|
||||
INTERRUPT_GEN_MEMBER(interrupt);
|
||||
|
||||
void tmspoker_cru_map(address_map &map);
|
||||
void tmspoker_map(address_map &map);
|
||||
void cru_map(address_map &map);
|
||||
void prg_map(address_map &map);
|
||||
};
|
||||
|
||||
|
||||
@ -264,7 +265,7 @@ private:
|
||||
* Video Hardware *
|
||||
*************************/
|
||||
|
||||
void tmspoker_state::tmspoker_videoram_w(offs_t offset, uint8_t data)
|
||||
void tmspoker_state::videoram_w(offs_t offset, uint8_t data)
|
||||
{
|
||||
m_videoram[offset] = data;
|
||||
m_bg_tilemap->mark_tile_dirty(offset);
|
||||
@ -289,13 +290,13 @@ void tmspoker_state::video_start()
|
||||
m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tmspoker_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
|
||||
}
|
||||
|
||||
uint32_t tmspoker_state::screen_update_tmspoker(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
|
||||
uint32_t tmspoker_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void tmspoker_state::tmspoker_palette(palette_device &palette) const
|
||||
void tmspoker_state::palette(palette_device &palette) const
|
||||
{
|
||||
}
|
||||
|
||||
@ -304,12 +305,12 @@ void tmspoker_state::tmspoker_palette(palette_device &palette) const
|
||||
* Read / Write Handlers *
|
||||
**************************/
|
||||
|
||||
//void tmspoker_state::debug_w(uint8_t data)
|
||||
//{
|
||||
// popmessage("written : %02X", data);
|
||||
//}
|
||||
void tmspoker_state::debug_w(uint8_t data)
|
||||
{
|
||||
popmessage("written : %02X", data);
|
||||
}
|
||||
|
||||
INTERRUPT_GEN_MEMBER(tmspoker_state::tmspoker_interrupt)
|
||||
INTERRUPT_GEN_MEMBER(tmspoker_state::interrupt)
|
||||
{
|
||||
m_maincpu->set_input_line(INT_9980A_LEVEL1, ASSERT_LINE);
|
||||
// MZ: The TMS9980A uses level-triggered interrupts, so this
|
||||
@ -328,8 +329,7 @@ INTERRUPT_GEN_MEMBER(tmspoker_state::tmspoker_interrupt)
|
||||
|
||||
void tmspoker_state::machine_start()
|
||||
{
|
||||
uint8_t *ROM = memregion("maincpu")->base();
|
||||
membank("bank1")->configure_entries(0, 2, &ROM[0], 0x1000);
|
||||
m_gamebank->configure_entries(0, 2, memregion("maincpu")->base(), 0x1000);
|
||||
}
|
||||
|
||||
|
||||
@ -339,7 +339,7 @@ void tmspoker_state::machine_reset()
|
||||
|
||||
popmessage("ROM Bank: %02X", seldsw);
|
||||
|
||||
membank("bank1")->set_entry(seldsw);
|
||||
m_gamebank->set_entry(seldsw);
|
||||
}
|
||||
|
||||
|
||||
@ -357,13 +357,13 @@ void tmspoker_state::machine_reset()
|
||||
// 098E: RT 045B
|
||||
//
|
||||
|
||||
void tmspoker_state::tmspoker_map(address_map &map)
|
||||
void tmspoker_state::prg_map(address_map &map)
|
||||
{
|
||||
map.global_mask(0x3fff);
|
||||
map(0x0000, 0x0fff).bankr("bank1");
|
||||
map(0x0000, 0x0fff).bankr(m_gamebank);
|
||||
map(0x2800, 0x2800).nopr().w("crtc", FUNC(mc6845_device::address_w));
|
||||
map(0x2801, 0x2801).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
|
||||
map(0x3000, 0x33ff).ram().w(FUNC(tmspoker_state::tmspoker_videoram_w)).share("videoram");
|
||||
map(0x3000, 0x33ff).ram().w(FUNC(tmspoker_state::videoram_w)).share(m_videoram);
|
||||
map(0x3800, 0x3fff).ram(); //NVRAM?
|
||||
map(0x2000, 0x20ff).ram(); //color RAM?
|
||||
}
|
||||
@ -379,7 +379,7 @@ uint8_t tmspoker_state::inputs_r(offs_t offset)
|
||||
return 1;
|
||||
}
|
||||
|
||||
void tmspoker_state::tmspoker_cru_map(address_map &map)
|
||||
void tmspoker_state::cru_map(address_map &map)
|
||||
{
|
||||
map(0x0c80, 0x0c8f).w(m_outlatch[0], FUNC(ls259_device::write_d0));
|
||||
map(0x0c90, 0x0c9f).r(FUNC(tmspoker_state::inputs_r)).w(m_outlatch[1], FUNC(ls259_device::write_d0));
|
||||
@ -551,12 +551,12 @@ INPUT_PORTS_END
|
||||
static const gfx_layout charlayout =
|
||||
{
|
||||
8, 8,
|
||||
RGN_FRAC(1,1), /* 256 tiles */
|
||||
RGN_FRAC(1,1), // 256 tiles
|
||||
1,
|
||||
{ 0 },
|
||||
{ 0, 1, 2, 3, 4, 5, 6, 7 },
|
||||
{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
|
||||
8*8 /* every char takes 8 consecutive bytes */
|
||||
8*8 // every char takes 8 consecutive bytes
|
||||
};
|
||||
|
||||
|
||||
@ -565,7 +565,7 @@ static const gfx_layout charlayout =
|
||||
******************************/
|
||||
|
||||
static GFXDECODE_START( gfx_tmspoker )
|
||||
GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 16 )
|
||||
GFXDECODE_ENTRY( "chars", 0, charlayout, 0, 16 )
|
||||
GFXDECODE_END
|
||||
|
||||
|
||||
@ -576,28 +576,28 @@ GFXDECODE_END
|
||||
void tmspoker_state::tmspoker(machine_config &config)
|
||||
{
|
||||
// CPU TMS9980A; no line connections
|
||||
TMS9980A(config, m_maincpu, MASTER_CLOCK);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &tmspoker_state::tmspoker_map);
|
||||
m_maincpu->set_addrmap(AS_IO, &tmspoker_state::tmspoker_cru_map);
|
||||
m_maincpu->set_vblank_int("screen", FUNC(tmspoker_state::tmspoker_interrupt));
|
||||
TMS9980A(config, m_maincpu, 6_MHz_XTAL);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &tmspoker_state::prg_map);
|
||||
m_maincpu->set_addrmap(AS_IO, &tmspoker_state::cru_map);
|
||||
m_maincpu->set_vblank_int("screen", FUNC(tmspoker_state::interrupt));
|
||||
|
||||
LS259(config, m_outlatch[0]);
|
||||
LS259(config, m_outlatch[1]);
|
||||
LS259(config, m_outlatch[2]);
|
||||
LS259(config, m_outlatch[3]);
|
||||
|
||||
/* 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(0));
|
||||
screen.set_size(32*8, 32*8);
|
||||
screen.set_visarea(0*8, 32*8-1, 0*8, 32*8-1);
|
||||
screen.set_screen_update(FUNC(tmspoker_state::screen_update_tmspoker));
|
||||
screen.set_screen_update(FUNC(tmspoker_state::screen_update));
|
||||
|
||||
GFXDECODE(config, m_gfxdecode, "palette", gfx_tmspoker);
|
||||
PALETTE(config, "palette", FUNC(tmspoker_state::tmspoker_palette), 256);
|
||||
PALETTE(config, "palette", FUNC(tmspoker_state::palette), 256);
|
||||
|
||||
mc6845_device &crtc(MC6845(config, "crtc", MASTER_CLOCK/4)); /* guess */
|
||||
mc6845_device &crtc(MC6845(config, "crtc", 6_MHz_XTAL / 4)); // guess
|
||||
crtc.set_screen("screen");
|
||||
crtc.set_show_border_area(false);
|
||||
crtc.set_char_width(8);
|
||||
@ -609,14 +609,13 @@ void tmspoker_state::tmspoker(machine_config &config)
|
||||
*************************/
|
||||
|
||||
ROM_START( tmspoker )
|
||||
ROM_REGION( 0x4000, "maincpu", 0 ) /* TMS9980 selectable code */
|
||||
|
||||
ROM_LOAD( "0.bin", 0x0800, 0x0800, CRC(a20ae6cb) SHA1(d47780119b4ebb16dc759a50dfc880ddbc6a1112) ) /* Program 1 */
|
||||
ROM_REGION( 0x4000, "maincpu", 0 ) // TMS9980 selectable code
|
||||
ROM_LOAD( "0.bin", 0x0800, 0x0800, CRC(a20ae6cb) SHA1(d47780119b4ebb16dc759a50dfc880ddbc6a1112) ) // Program 1
|
||||
ROM_CONTINUE( 0x0000, 0x0800 )
|
||||
ROM_LOAD( "8.bin", 0x1800, 0x0800, CRC(0c0a7159) SHA1(92cc3dc32a5bf4a7fa197e72c3931e583c96ef33) ) /* Program 2 */
|
||||
ROM_LOAD( "8.bin", 0x1800, 0x0800, CRC(0c0a7159) SHA1(92cc3dc32a5bf4a7fa197e72c3931e583c96ef33) ) // Program 2
|
||||
ROM_CONTINUE( 0x1000, 0x0800 )
|
||||
|
||||
ROM_REGION( 0x0800, "gfx1", 0 )
|
||||
ROM_REGION( 0x0800, "chars", 0 )
|
||||
ROM_LOAD( "3.bin", 0x0000, 0x0800, CRC(55458dae) SHA1(bf96d1b287292ff89bc2dbd9451a88a2ab941f3e) )
|
||||
|
||||
ROM_REGION( 0x0100, "proms", 0 )
|
||||
@ -630,7 +629,7 @@ ROM_END
|
||||
|
||||
void tmspoker_state::init_bus()
|
||||
{
|
||||
/* still need to decode the addressing lines */
|
||||
// still need to decode the addressing lines
|
||||
/* text found in the ROM (A at 6, B at 8, etc: consistent with gfx rom byte offsets) suggests
|
||||
that the lower address lines are good already:
|
||||
|
||||
@ -648,6 +647,8 @@ void tmspoker_state::init_bus()
|
||||
*/
|
||||
}
|
||||
|
||||
} // Anonymous namespace
|
||||
|
||||
|
||||
/*************************
|
||||
* Game Drivers *
|
||||
|
@ -18,6 +18,8 @@
|
||||
#include "speaker.h"
|
||||
|
||||
|
||||
namespace {
|
||||
|
||||
class ultrsprt_state : public driver_device
|
||||
{
|
||||
public:
|
||||
@ -30,11 +32,16 @@ public:
|
||||
m_palette(*this, "palette"),
|
||||
m_eeprom(*this, "eeprom"),
|
||||
m_upd(*this, "upd%u", 1),
|
||||
m_vrambank(*this, "vram"),
|
||||
m_service(*this, "SERVICE")
|
||||
{ }
|
||||
|
||||
void ultrsprt(machine_config &config);
|
||||
|
||||
protected:
|
||||
virtual void machine_start() override;
|
||||
virtual void machine_reset() override;
|
||||
|
||||
private:
|
||||
static const u32 VRAM_PAGES = 2;
|
||||
static const u32 VRAM_PAGE_BYTES = 512 * 1024;
|
||||
@ -47,6 +54,8 @@ private:
|
||||
required_device<eeprom_serial_93cxx_device> m_eeprom;
|
||||
required_device_array<upd4701_device, 2> m_upd;
|
||||
|
||||
required_memory_bank m_vrambank;
|
||||
|
||||
required_ioport m_service;
|
||||
|
||||
u8 eeprom_r();
|
||||
@ -55,13 +64,10 @@ private:
|
||||
u16 upd2_r(offs_t offset);
|
||||
void int_ack_w(u32 data);
|
||||
|
||||
u32 screen_update_ultrsprt(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
u32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
|
||||
void sound_map(address_map &map);
|
||||
void ultrsprt_map(address_map &map);
|
||||
|
||||
virtual void machine_start() override;
|
||||
virtual void machine_reset() override;
|
||||
void main_map(address_map &map);
|
||||
|
||||
std::unique_ptr<u8[]> m_vram;
|
||||
u32 m_cpu_vram_page;
|
||||
@ -70,7 +76,7 @@ private:
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
u32 ultrsprt_state::screen_update_ultrsprt(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
u32 ultrsprt_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
u8 const *const vram = m_vram.get() + (m_cpu_vram_page ^ 1) * VRAM_PAGE_BYTES;
|
||||
|
||||
@ -126,7 +132,7 @@ void ultrsprt_state::eeprom_w(u8 data)
|
||||
u32 vram_page = (data & 0x08) >> 3;
|
||||
if (vram_page != m_cpu_vram_page)
|
||||
{
|
||||
membank("vram")->set_entry(vram_page);
|
||||
m_vrambank->set_entry(vram_page);
|
||||
m_cpu_vram_page = vram_page;
|
||||
}
|
||||
|
||||
@ -151,16 +157,16 @@ u16 ultrsprt_state::upd2_r(offs_t offset)
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
void ultrsprt_state::ultrsprt_map(address_map &map)
|
||||
void ultrsprt_state::main_map(address_map &map)
|
||||
{
|
||||
map(0x00000000, 0x0007ffff).bankrw("vram");
|
||||
map(0x00000000, 0x0007ffff).bankrw(m_vrambank);
|
||||
map(0x70000000, 0x70000000).rw(FUNC(ultrsprt_state::eeprom_r), FUNC(ultrsprt_state::eeprom_w));
|
||||
map(0x70000020, 0x70000023).r(FUNC(ultrsprt_state::upd1_r));
|
||||
map(0x70000040, 0x70000043).r(FUNC(ultrsprt_state::upd2_r));
|
||||
map(0x70000080, 0x7000008f).rw(m_k056800, FUNC(k056800_device::host_r), FUNC(k056800_device::host_w));
|
||||
map(0x700000c0, 0x700000cf).nopw(); // Written following DMA interrupt - unused int ack?
|
||||
map(0x700000e0, 0x700000e3).w(FUNC(ultrsprt_state::int_ack_w));
|
||||
map(0x7f000000, 0x7f01ffff).ram().share("workram");
|
||||
map(0x7f000000, 0x7f01ffff).ram().share(m_workram);
|
||||
map(0x7f700000, 0x7f703fff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette");
|
||||
map(0x7f800000, 0x7f9fffff).mirror(0x00600000).rom().region("program", 0);
|
||||
}
|
||||
@ -212,15 +218,15 @@ INPUT_PORTS_END
|
||||
|
||||
void ultrsprt_state::machine_start()
|
||||
{
|
||||
/* set conservative DRC options */
|
||||
// set conservative DRC options
|
||||
m_maincpu->ppcdrc_set_options(PPCDRC_COMPATIBLE_OPTIONS);
|
||||
|
||||
/* configure fast RAM regions for DRC */
|
||||
// configure fast RAM regions for DRC
|
||||
m_maincpu->ppcdrc_add_fastram(0xff000000, 0xff01ffff, false, m_workram);
|
||||
|
||||
m_vram = std::make_unique<u8[]>(VRAM_PAGE_BYTES * VRAM_PAGES);
|
||||
|
||||
membank("vram")->configure_entries(0, VRAM_PAGES, m_vram.get(), VRAM_PAGE_BYTES);
|
||||
m_vrambank->configure_entries(0, VRAM_PAGES, m_vram.get(), VRAM_PAGE_BYTES);
|
||||
|
||||
save_pointer(NAME(m_vram), VRAM_PAGE_BYTES * VRAM_PAGES);
|
||||
save_item(NAME(m_cpu_vram_page));
|
||||
@ -231,7 +237,7 @@ void ultrsprt_state::machine_reset()
|
||||
m_audiocpu->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
|
||||
|
||||
m_cpu_vram_page = 0;
|
||||
membank("vram")->set_entry(m_cpu_vram_page);
|
||||
m_vrambank->set_entry(m_cpu_vram_page);
|
||||
}
|
||||
|
||||
|
||||
@ -239,9 +245,9 @@ void ultrsprt_state::machine_reset()
|
||||
|
||||
void ultrsprt_state::ultrsprt(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
// basic machine hardware
|
||||
PPC403GA(config, m_maincpu, 25000000);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &ultrsprt_state::ultrsprt_map);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &ultrsprt_state::main_map);
|
||||
m_maincpu->set_vblank_int("screen", FUNC(ultrsprt_state::irq1_line_assert));
|
||||
|
||||
M68000(config, m_audiocpu, 8000000); // Unconfirmed
|
||||
@ -257,17 +263,17 @@ void ultrsprt_state::ultrsprt(machine_config &config)
|
||||
m_upd[1]->set_portx_tag("P2X");
|
||||
m_upd[1]->set_porty_tag("P2Y");
|
||||
|
||||
/* video hardware */
|
||||
// video hardware
|
||||
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
|
||||
screen.set_refresh_hz(60); // TODO: Determine correct timings
|
||||
screen.set_size(640, 480);
|
||||
screen.set_visarea(0, 511, 0, 399);
|
||||
screen.set_screen_update(FUNC(ultrsprt_state::screen_update_ultrsprt));
|
||||
screen.set_screen_update(FUNC(ultrsprt_state::screen_update));
|
||||
screen.set_palette(m_palette);
|
||||
|
||||
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 8192);
|
||||
|
||||
/* sound hardware */
|
||||
// sound hardware
|
||||
K056800(config, m_k056800, XTAL(18'432'000));
|
||||
m_k056800->int_callback().set_inputline(m_audiocpu, M68K_IRQ_6);
|
||||
|
||||
@ -284,16 +290,16 @@ void ultrsprt_state::ultrsprt(machine_config &config)
|
||||
/*****************************************************************************/
|
||||
|
||||
ROM_START( fiveside )
|
||||
ROM_REGION32_BE(0x200000, "program", 0) /* PowerPC program ROMs */
|
||||
ROM_REGION32_BE(0x200000, "program", 0) // PowerPC program ROMs
|
||||
ROM_LOAD32_BYTE("479uaa01.bin", 0x000000, 0x80000, CRC(1bc4893d) SHA1(2c9df38ecb7efa7b686221ee98fa3aad9a63e152))
|
||||
ROM_LOAD32_BYTE("479uaa02.bin", 0x000001, 0x80000, CRC(ae74a6d0) SHA1(6113c2eea1628b22737c7b87af0e673d94984e88))
|
||||
ROM_LOAD32_BYTE("479uaa03.bin", 0x000002, 0x80000, CRC(5c0b176f) SHA1(9560259bc081d4cfd72eb485c3fdcecf484ba7a8))
|
||||
ROM_LOAD32_BYTE("479uaa04.bin", 0x000003, 0x80000, CRC(01a3e4cb) SHA1(819df79909d57fa12481698ffdb32b00586131d8))
|
||||
|
||||
ROM_REGION(0x20000, "audiocpu", 0) /* M68K program */
|
||||
ROM_REGION(0x20000, "audiocpu", 0) // M68K program
|
||||
ROM_LOAD("479_a05.bin", 0x000000, 0x20000, CRC(251ae299) SHA1(5ffd74357e3c6ddb3a208c39a3b32b53fea90282))
|
||||
|
||||
ROM_REGION(0x100000, "k054539", 0) /* Sound ROMs */
|
||||
ROM_REGION(0x100000, "k054539", 0) // Sound ROMs
|
||||
ROM_LOAD("479_a06.bin", 0x000000, 0x80000, CRC(8d6ac8a2) SHA1(7c4b8bd47cddc766cbdb6a486acc9221be55b579))
|
||||
ROM_LOAD("479_a07.bin", 0x080000, 0x80000, CRC(75835df8) SHA1(105b95c16f2ce6902c2e4c9c2fd9f2f7a848c546))
|
||||
|
||||
@ -301,5 +307,8 @@ ROM_START( fiveside )
|
||||
ROM_LOAD( "fiveside.nv", 0x0000, 0x0080, CRC(aad11072) SHA1(8f777ee47801faa7ce8420c3052034720225aae7) )
|
||||
ROM_END
|
||||
|
||||
} // Anonymous namespace
|
||||
|
||||
|
||||
// Undumped: Ultra Hockey
|
||||
GAME(1995, fiveside, 0, ultrsprt, ultrsprt, ultrsprt_state, empty_init, ROT90, "Konami", "Five a Side Soccer (ver UAA)", 0)
|
||||
|
Loading…
Reference in New Issue
Block a user