summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/ultrsprt.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/ultrsprt.cpp')
-rw-r--r--src/mame/drivers/ultrsprt.cpp53
1 files changed, 31 insertions, 22 deletions
diff --git a/src/mame/drivers/ultrsprt.cpp b/src/mame/drivers/ultrsprt.cpp
index 315951ef4fa..12f5d0225f4 100644
--- a/src/mame/drivers/ultrsprt.cpp
+++ b/src/mame/drivers/ultrsprt.cpp
@@ -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)